From f92e45c2bf70c1a3f4ea7e432dfe67d364e99bde Mon Sep 17 00:00:00 2001 From: boris Date: Thu, 5 Sep 2024 17:56:43 +0100 Subject: [PATCH] vault backup: 2024-09-05 17:56:43 --- .obsidian/plugins/dataview/main.js | 1314 ++- .obsidian/plugins/dataview/manifest.json | 3 +- .obsidian/plugins/local-backup/main.js | 1704 ++- .obsidian/plugins/local-backup/manifest.json | 2 +- .obsidian/plugins/obsidian-git/main.js | 6429 ++++++----- .obsidian/plugins/obsidian-git/manifest.json | 9 +- .obsidian/plugins/obsidian-git/styles.css | 84 +- .obsidian/plugins/obsidian-linter/main.js | 2792 +---- .../plugins/obsidian-linter/manifest.json | 5 +- .obsidian/plugins/obsidian-linter/styles.css | 21 +- .../plugins/obsidian-style-settings/main.js | 9989 +---------------- .../obsidian-style-settings/manifest.json | 2 +- .../obsidian-style-settings/styles.css | 84 +- .obsidian/plugins/omnisearch/data.json | 16 +- .obsidian/plugins/omnisearch/main.js | 131 +- .obsidian/plugins/omnisearch/manifest.json | 2 +- .obsidian/plugins/omnisearch/styles.css | 29 +- .obsidian/workspace.json | 11 +- ...of Lecture Slides for Semester One (1).pdf | Bin 0 -> 6630272 bytes ...of Lecture Slides for Semester Two (2).pdf | Bin 0 -> 8111657 bytes Unsorted/Business Idea.pdf | Bin 0 -> 271741 bytes Unsorted/BusinessIdea00731276CHC146.pdf | Bin 0 -> 37001 bytes Unsorted/HCI Assignment.docx | Bin 0 -> 610803 bytes Unsorted/HW4_final_marks.csv | 5560 +++++++++ Unsorted/Part 4 Complete - 00677611.zip | Bin 0 -> 76686 bytes .../Part 4 Complete/AudioVisual.class | Bin 0 -> 1294 bytes .../Part 4 Complete/AudioVisual.ctxt | 14 + .../Part 4 Complete/AudioVisual.java | 55 + .../Part 4 Complete/Book.class | Bin 0 -> 1366 bytes .../Part 4 Complete/Book.ctxt | 23 + .../Part 4 Complete/Book.java | 76 + .../Part 4 Complete/CD.class | Bin 0 -> 1498 bytes .../Part 4 Complete/CD.ctxt | 23 + .../Part 4 Complete/CD.java | 76 + .../Part 4 Complete/DVD.class | Bin 0 -> 1149 bytes .../Part 4 Complete/DVD.ctxt | 17 + .../Part 4 Complete/DVD.java | 56 + .../Part 4 Complete/DateUtil.class | Bin 0 -> 3594 bytes .../Part 4 Complete/DateUtil.ctxt | 26 + .../Part 4 Complete/DateUtil.java | 263 + .../Part 4 Complete/Diary$1.class | Bin 0 -> 163 bytes .../Diary$DayInDiary$Entry.class | Bin 0 -> 1062 bytes .../Part 4 Complete/Diary$DayInDiary.class | Bin 0 -> 3947 bytes .../Part 4 Complete/Diary.class | Bin 0 -> 3408 bytes .../Part 4 Complete/Diary.ctxt | 17 + .../Part 4 Complete/Diary.java | 205 + .../Part 4 Complete/Library.class | Bin 0 -> 10208 bytes .../Part 4 Complete/Library.ctxt | 65 + .../Part 4 Complete/Library.java | 573 + .../Part 4 Complete/LibraryItem.class | Bin 0 -> 2455 bytes .../Part 4 Complete/LibraryItem.ctxt | 30 + .../Part 4 Complete/LibraryItem.java | 115 + .../Part 4 Complete/LibraryReservation.class | Bin 0 -> 3132 bytes .../Part 4 Complete/LibraryReservation.ctxt | 42 + .../Part 4 Complete/LibraryReservation.java | 152 + .../Part 4 Complete/LibraryUser.class | Bin 0 -> 2336 bytes .../Part 4 Complete/LibraryUser.ctxt | 36 + .../Part 4 Complete/LibraryUser.java | 121 + .../Part 4 Complete/Periodical.class | Bin 0 -> 1199 bytes .../Part 4 Complete/Periodical.ctxt | 17 + .../Part 4 Complete/Periodical.java | 56 + .../Part 4 Complete/PrintedItem.class | Bin 0 -> 1549 bytes .../Part 4 Complete/PrintedItem.ctxt | 18 + .../Part 4 Complete/PrintedItem.java | 67 + .../Part 4 Complete/README.TXT | 12 + .../Part 4 Complete/data/item_data_1.txt | 12 + .../Part 4 Complete/data/item_data_1_v2.txt | 12 + .../Part 4 Complete/data/item_data_2.txt | 18 + .../data/item_data_2_generic_test.txt | 23 + .../Part 4 Complete/data/items_all.txt | 43 + .../data/items_and_user_data.txt | 48 + .../data/library_user_data.txt | 12 + .../data/testreservationwrite.txt | 1 + .../Part 4 Complete/data/testuserwrite.txt | 5 + .../Part 4 Complete/doc/Book.html | 183 + .../Part 4 Complete/doc/DateUtil.html | 379 + .../Part 4 Complete/doc/Diary.html | 220 + .../Part 4 Complete/doc/Library.html | 174 + .../Part 4 Complete/doc/LibraryItem.html | 421 + .../Part 4 Complete/doc/allclasses-frame.html | 32 + .../doc/allclasses-noframe.html | 32 + .../Part 4 Complete/doc/constant-values.html | 45 + .../Part 4 Complete/doc/index.html | 37 + .../Part 4 Complete/doc/logfile.txt | 45 + .../Part 4 Complete/doc/package-frame.html | 33 + .../Part 4 Complete/doc/package-list | 1 + .../Part 4 Complete/doc/package-summary.html | 46 + .../Part 4 Complete/doc/resources/inherit.gif | Bin 0 -> 57 bytes .../Part 4 Complete/doc/stylesheet.css | 29 + .../Part 4 Complete/nullnull | 1 + .../Part 4 Complete/package.bluej | 187 + Unsorted/Personal Reflection - 00677611.pdf | Bin 0 -> 44454 bytes Unsorted/Project Part 3 for BB.doc | Bin 0 -> 82944 bytes Unsorted/Test 2 handmarking parts for BB.doc | Bin 0 -> 77824 bytes Unsorted/VisualStudio/piodjdjeeecs.webp | Bin 0 -> 586808 bytes Unsorted/VisualStudio/repos/VS_HCI | 1 + Unsorted/VisualStudio/repos/Week 1 | 1 + Unsorted/VisualStudio/repos/test | 1 + ..._dbs_sess2023_2024_semester1_feedback.xlsx | Bin 0 -> 14726 bytes ...32741_dbs_sess2023_2024_semester2_QNS.docx | Bin 0 -> 82430 bytes 100 files changed, 16047 insertions(+), 16337 deletions(-) create mode 100644 Unsorted/Booklet of Lecture Slides for Semester One (1).pdf create mode 100644 Unsorted/Booklet of Lecture Slides for Semester Two (2).pdf create mode 100644 Unsorted/Business Idea.pdf create mode 100644 Unsorted/BusinessIdea00731276CHC146.pdf create mode 100644 Unsorted/HCI Assignment.docx create mode 100644 Unsorted/HW4_final_marks.csv create mode 100644 Unsorted/Part 4 Complete - 00677611.zip create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/AudioVisual.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/AudioVisual.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/AudioVisual.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Book.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Book.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Book.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/CD.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/CD.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/CD.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/DVD.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/DVD.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/DVD.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/DateUtil.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/DateUtil.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/DateUtil.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Diary$1.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Diary$DayInDiary$Entry.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Diary$DayInDiary.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Diary.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Diary.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Diary.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Library.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Library.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Library.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryItem.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryItem.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryItem.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryReservation.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryReservation.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryReservation.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryUser.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryUser.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/LibraryUser.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Periodical.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Periodical.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/Periodical.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/PrintedItem.class create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/PrintedItem.ctxt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/PrintedItem.java create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/README.TXT create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/item_data_1.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/item_data_1_v2.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/item_data_2.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/item_data_2_generic_test.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/items_all.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/items_and_user_data.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/library_user_data.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/testreservationwrite.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/data/testuserwrite.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/Book.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/DateUtil.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/Diary.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/Library.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/LibraryItem.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/allclasses-frame.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/allclasses-noframe.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/constant-values.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/index.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/logfile.txt create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/package-frame.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/package-list create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/package-summary.html create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/resources/inherit.gif create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/doc/stylesheet.css create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/nullnull create mode 100644 Unsorted/Part 4 Complete - 00677611/Part 4 Complete/package.bluej create mode 100644 Unsorted/Personal Reflection - 00677611.pdf create mode 100644 Unsorted/Project Part 3 for BB.doc create mode 100644 Unsorted/Test 2 handmarking parts for BB.doc create mode 100644 Unsorted/VisualStudio/piodjdjeeecs.webp create mode 160000 Unsorted/VisualStudio/repos/VS_HCI create mode 160000 Unsorted/VisualStudio/repos/Week 1 create mode 160000 Unsorted/VisualStudio/repos/test create mode 100644 Unsorted/chc119_677611_cw_crn32741_dbs_sess2023_2024_semester1_feedback.xlsx create mode 100644 Unsorted/cw_crn32741_dbs_sess2023_2024_semester2_QNS.docx diff --git a/.obsidian/plugins/dataview/main.js b/.obsidian/plugins/dataview/main.js index 11a47fc..c437cf0 100644 --- a/.obsidian/plugins/dataview/main.js +++ b/.obsidian/plugins/dataview/main.js @@ -1,6 +1,7 @@ 'use strict'; var obsidian = require('obsidian'); +var state = require('@codemirror/state'); var view = require('@codemirror/view'); var language = require('@codemirror/language'); @@ -7383,12 +7384,15 @@ const DEFAULT_SETTINGS = { enableDataviewJs: false, enableInlineDataviewJs: false, prettyRenderInlineFields: true, + prettyRenderInlineFieldsInLivePreview: true, dataviewJsKeyword: "dataviewjs", }, }; /** Functional return type for error handling. */ class Success { + value; + successful; constructor(value) { this.value = value; this.successful = true; @@ -7417,6 +7421,8 @@ class Success { } /** Functional return type for error handling. */ class Failure { + error; + successful; constructor(error) { this.error = error; this.successful = false; @@ -7711,7 +7717,6 @@ var Values; Values.mapLeaves = mapLeaves; /** Compare two arbitrary JavaScript values. Produces a total ordering over ANY possible dataview value. */ function compareValue(val1, val2, linkNormalizer) { - var _a, _b; // Handle undefined/nulls first. if (val1 === undefined) val1 = null; @@ -7756,7 +7761,7 @@ var Values; case "link": let link1 = wrap1.value; let link2 = wrap2.value; - let normalize = linkNormalizer !== null && linkNormalizer !== void 0 ? linkNormalizer : ((x) => x); + let normalize = linkNormalizer ?? ((x) => x); // We can't compare by file name or display, since that would break link equality. Compare by path. let pathCompare = normalize(link1.path).localeCompare(normalize(link2.path)); if (pathCompare != 0) @@ -7773,7 +7778,7 @@ var Values; if (!link1.subpath && !link2.subpath) return 0; // Since both have a subpath, compare by subpath. - return ((_a = link1.subpath) !== null && _a !== void 0 ? _a : "").localeCompare((_b = link2.subpath) !== null && _b !== void 0 ? _b : ""); + return (link1.subpath ?? "").localeCompare(link2.subpath ?? ""); case "date": return wrap1.value < wrap2.value ? -1 @@ -7820,8 +7825,7 @@ var Values; Values.compareValue = compareValue; /** Find the corresponding Dataveiw type for an arbitrary value. */ function typeOf(val) { - var _a; - return (_a = wrapValue(val)) === null || _a === void 0 ? void 0 : _a.type; + return wrapValue(val)?.type; } Values.typeOf = typeOf; /** Determine if the given value is "truthy" (i.e., is non-null and has data in it). */ @@ -7973,6 +7977,16 @@ var Groupings; ////////// /** The Obsidian 'link', used for uniquely describing a file, header, or block. */ class Link { + /** The file path this link points to. */ + path; + /** The display name associated with the link. */ + display; + /** The block ID or header this link points to within a file, if relevant. */ + subpath; + /** Is this link an embedded link (!)? */ + embed; + /** The type of this link, which determines what 'subpath' refers to, if anything. */ + type; /** Create a link to a specific file. */ static file(path, embed = false, display) { return new Link({ @@ -8091,12 +8105,11 @@ class Link { } /** Convert the inner part of the link to something that Obsidian can open / understand. */ obsidianLink() { - var _a, _b; - const escaped = this.path.replace("|", "\\|"); + const escaped = this.path.replaceAll("|", "\\|"); if (this.type == "header") - return escaped + "#" + ((_a = this.subpath) === null || _a === void 0 ? void 0 : _a.replace("|", "\\|")); + return escaped + "#" + this.subpath?.replaceAll("|", "\\|"); if (this.type == "block") - return escaped + "#^" + ((_b = this.subpath) === null || _b === void 0 ? void 0 : _b.replace("|", "\\|")); + return escaped + "#^" + this.subpath?.replaceAll("|", "\\|"); else return escaped; } @@ -8114,12 +8127,15 @@ class Link { * to have rendering functionality (which you probably do), you should extend `RenderWidget`. */ class Widget { + $widget; constructor($widget) { this.$widget = $widget; } } /** A trivial widget which renders a (key, value) pair, and allows accessing the key and value. */ class ListPairWidget extends Widget { + key; + value; constructor(key, value) { super("dataview:list-pair"); this.key = key; @@ -8131,14 +8147,15 @@ class ListPairWidget extends Widget { } /** A simple widget which renders an external link. */ class ExternalLinkWidget extends Widget { + url; + display; constructor(url, display) { super("dataview:external-link"); this.url = url; this.display = display; } markdown() { - var _a; - return `[${(_a = this.display) !== null && _a !== void 0 ? _a : this.url}](${this.url})`; + return `[${this.display ?? this.url}](${this.url})`; } } var Widgets; @@ -8171,9 +8188,68 @@ var Widgets; /** Implementation of DataArray, minus the dynamic variable access, which is implemented via proxy. */ class DataArrayImpl { + values; + settings; + defaultComparator; + static ARRAY_FUNCTIONS = new Set([ + "where", + "filter", + "map", + "flatMap", + "mutate", + "slice", + "concat", + "indexOf", + "limit", + "find", + "findIndex", + "includes", + "join", + "sort", + "sortInPlace", + "groupBy", + "groupIn", + "distinct", + "every", + "some", + "none", + "first", + "last", + "to", + "into", + "lwrap", + "expand", + "forEach", + "length", + "values", + "array", + "defaultComparator", + "toString", + "settings", + "sum", + "avg", + "min", + "max", + ]); + static ARRAY_PROXY = { + get: function (target, prop, reciever) { + if (typeof prop === "symbol") + return target[prop]; + else if (typeof prop === "number") + return target.values[prop]; + else if (prop === "constructor") + return target.values.constructor; + else if (!isNaN(parseInt(prop))) + return target.values[parseInt(prop)]; + else if (DataArrayImpl.ARRAY_FUNCTIONS.has(prop.toString())) + return target[prop.toString()]; + return target.to(prop); + }, + }; static wrap(arr, settings, defaultComparator = Values.compareValue) { return new Proxy(new DataArrayImpl(arr, settings, defaultComparator), DataArrayImpl.ARRAY_PROXY); } + length; constructor(values, settings, defaultComparator = Values.compareValue) { this.values = values; this.settings = settings; @@ -8231,7 +8307,7 @@ class DataArrayImpl { return this.values[index]; } findIndex(pred, fromIndex) { - for (let index = fromIndex !== null && fromIndex !== void 0 ? fromIndex : 0; index < this.length; index++) { + for (let index = fromIndex ?? 0; index < this.length; index++) { if (pred(this.values[index], index, this.values)) return index; } @@ -8243,13 +8319,13 @@ class DataArrayImpl { join(sep) { return this.map(s => Values.toString(s, this.settings)) .array() - .join(sep !== null && sep !== void 0 ? sep : ", "); + .join(sep ?? ", "); } sort(key, direction, comparator) { if (this.values.length == 0) return this; - let realComparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; - let realKey = key !== null && key !== void 0 ? key : ((l) => l); + let realComparator = comparator ?? this.defaultComparator; + let realKey = key ?? ((l) => l); // Associate each entry with it's index for the key function, and then do a normal sort. let copy = [].concat(this.array()).map((elem, index) => { return { index: index, value: elem }; @@ -8264,8 +8340,8 @@ class DataArrayImpl { sortInPlace(key, direction, comparator) { if (this.values.length == 0) return this; - let realComparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; - let realKey = key !== null && key !== void 0 ? key : ((l) => l); + let realComparator = comparator ?? this.defaultComparator; + let realKey = key ?? ((l) => l); this.values.sort((a, b) => { let aKey = realKey(a); let bKey = realKey(b); @@ -8279,7 +8355,7 @@ class DataArrayImpl { // JavaScript sucks and we can't make hash maps over arbitrary types (only strings/ints), so // we do a poor man algorithm where we SORT, followed by grouping. let intermediate = this.sort(key, "asc", comparator); - comparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; + comparator = comparator ?? this.defaultComparator; let result = []; let currentRow = [intermediate[0]]; let current = key(intermediate[0], 0, intermediate.values); @@ -8313,12 +8389,12 @@ class DataArrayImpl { distinct(key, comparator) { if (this.values.length == 0) return this; - let realKey = key !== null && key !== void 0 ? key : (x => x); + let realKey = key ?? (x => x); // For similar reasons to groupBy, do a sort and take the first element of each block. let intermediate = this.map((x, index) => { return { key: realKey(x, index, this.values), value: x }; }).sort(x => x.key, "asc", comparator); - comparator = comparator !== null && comparator !== void 0 ? comparator : this.defaultComparator; + comparator = comparator ?? this.defaultComparator; let result = [intermediate[0].value]; for (let index = 1; index < intermediate.length; index++) { if (comparator(intermediate[index - 1].key, intermediate[index].key) != 0) { @@ -8388,6 +8464,18 @@ class DataArrayImpl { f(this.values[index], index, this.values); } } + sum() { + return this.values.reduce((a, b) => a + b, 0); + } + avg() { + return this.sum() / this.values.length; + } + min() { + return Math.min(...this.values); + } + max() { + return Math.max(...this.values); + } array() { return [].concat(this.values); } @@ -8398,57 +8486,6 @@ class DataArrayImpl { return "[" + this.values.join(", ") + "]"; } } -DataArrayImpl.ARRAY_FUNCTIONS = new Set([ - "where", - "filter", - "map", - "flatMap", - "mutate", - "slice", - "concat", - "indexOf", - "limit", - "find", - "findIndex", - "includes", - "join", - "sort", - "sortInPlace", - "groupBy", - "groupIn", - "distinct", - "every", - "some", - "none", - "first", - "last", - "to", - "into", - "lwrap", - "expand", - "forEach", - "length", - "values", - "array", - "defaultComparator", - "toString", - "settings", -]); -DataArrayImpl.ARRAY_PROXY = { - get: function (target, prop, reciever) { - if (typeof prop === "symbol") - return target[prop]; - else if (typeof prop === "number") - return target.values[prop]; - else if (prop === "constructor") - return target.values.constructor; - else if (!isNaN(parseInt(prop))) - return target.values[parseInt(prop)]; - else if (DataArrayImpl.ARRAY_FUNCTIONS.has(prop.toString())) - return target[prop.toString()]; - return target.to(prop); - }, -}; /** Provides utility functions for generating data arrays. */ var DataArray; (function (DataArray) { @@ -8489,16 +8526,34 @@ function currentLocale() { } /** Render simple fields compactly, removing wrapping content like paragraph and span. */ -async function renderCompactMarkdown(markdown, container, sourcePath, component) { - let subcontainer = container.createSpan(); - await obsidian.MarkdownRenderer.renderMarkdown(markdown, subcontainer, sourcePath, component); - let paragraph = subcontainer.querySelector(":scope > p"); - if (subcontainer.children.length == 1 && paragraph) { - while (paragraph.firstChild) { - subcontainer.appendChild(paragraph.firstChild); - } - subcontainer.removeChild(paragraph); +async function renderCompactMarkdown(app, markdown, container, sourcePath, component, isInlineFieldLivePreview = false) { + // check if the call is from the CM6 view plugin defined in src/ui/views/inline-field-live-preview.ts + if (isInlineFieldLivePreview) { + await renderCompactMarkdownForInlineFieldLivePreview(app, markdown, container, sourcePath, component); } + else { + let subcontainer = container.createSpan(); + await obsidian.MarkdownRenderer.render(app, markdown, subcontainer, sourcePath, component); + let paragraph = subcontainer.querySelector(":scope > p"); + if (subcontainer.children.length == 1 && paragraph) { + while (paragraph.firstChild) { + subcontainer.appendChild(paragraph.firstChild); + } + subcontainer.removeChild(paragraph); + } + } +} +async function renderCompactMarkdownForInlineFieldLivePreview(app, markdown, container, sourcePath, component) { + const tmpContainer = createSpan(); + await obsidian.MarkdownRenderer.render(app, markdown, tmpContainer, sourcePath, component); + let paragraph = tmpContainer.querySelector(":scope > p"); + if (tmpContainer.childNodes.length == 1 && paragraph) { + container.replaceChildren(...paragraph.childNodes); + } + else { + container.replaceChildren(...tmpContainer.childNodes); + } + tmpContainer.remove(); } /** Render a pre block with an error in it; returns the element to allow for dynamic updating. */ function renderErrorPre(container, error) { @@ -8515,15 +8570,14 @@ function renderCodeBlock(container, source, language) { return code; } /** Prettily render a value into a container with the given settings. */ -async function renderValue(field, container, originFile, component, settings, expandList = false, context = "root", depth = 0) { - var _a, _b, _c; +async function renderValue(app, field, container, originFile, component, settings, expandList = false, context = "root", depth = 0, isInlineFieldLivePreview = false) { // Prevent infinite recursion. if (depth > settings.maxRecursiveRenderDepth) { container.appendText("..."); return; } if (Values.isNull(field)) { - await renderCompactMarkdown(settings.renderNullAs, container, originFile, component); + await renderCompactMarkdown(app, settings.renderNullAs, container, originFile, component, isInlineFieldLivePreview); } else if (Values.isDate(field)) { container.appendText(renderMinimalDate(field, settings, currentLocale())); @@ -8532,23 +8586,23 @@ async function renderValue(field, container, originFile, component, settings, ex container.appendText(renderMinimalDuration(field)); } else if (Values.isString(field) || Values.isBoolean(field) || Values.isNumber(field)) { - await renderCompactMarkdown("" + field, container, originFile, component); + await renderCompactMarkdown(app, "" + field, container, originFile, component, isInlineFieldLivePreview); } else if (Values.isLink(field)) { - await renderCompactMarkdown(field.markdown(), container, originFile, component); + await renderCompactMarkdown(app, field.markdown(), container, originFile, component, isInlineFieldLivePreview); } else if (Values.isHtml(field)) { container.appendChild(field); } else if (Values.isWidget(field)) { if (Widgets.isListPair(field)) { - await renderValue(field.key, container, originFile, component, settings, expandList, context, depth); + await renderValue(app, field.key, container, originFile, component, settings, expandList, context, depth, isInlineFieldLivePreview); container.appendText(": "); - await renderValue(field.value, container, originFile, component, settings, expandList, context, depth); + await renderValue(app, field.value, container, originFile, component, settings, expandList, context, depth, isInlineFieldLivePreview); } else if (Widgets.isExternalLink(field)) { let elem = document.createElement("a"); - elem.textContent = (_a = field.display) !== null && _a !== void 0 ? _a : field.url; + elem.textContent = field.display ?? field.url; elem.rel = "noopener"; elem.target = "_blank"; elem.classList.add("external-link"); @@ -8573,7 +8627,7 @@ async function renderValue(field, container, originFile, component, settings, ex }); for (let child of field) { let li = list.createEl("li", { cls: "dataview-result-list-li" }); - await renderValue(child, li, originFile, component, settings, expandList, "list", depth + 1); + await renderValue(app, child, li, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } else { @@ -8588,13 +8642,13 @@ async function renderValue(field, container, originFile, component, settings, ex first = false; else span.appendText(", "); - await renderValue(val, span, originFile, component, settings, expandList, "list", depth + 1); + await renderValue(app, val, span, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } } else if (Values.isObject(field)) { // Don't render classes in case they have recursive references; spoopy. - if (((_b = field === null || field === void 0 ? void 0 : field.constructor) === null || _b === void 0 ? void 0 : _b.name) && ((_c = field === null || field === void 0 ? void 0 : field.constructor) === null || _c === void 0 ? void 0 : _c.name) != "Object") { + if (field?.constructor?.name && field?.constructor?.name != "Object") { container.appendText(`<${field.constructor.name}>`); return; } @@ -8603,7 +8657,7 @@ async function renderValue(field, container, originFile, component, settings, ex for (let [key, value] of Object.entries(field)) { let li = list.createEl("li", { cls: ["dataview", "dataview-li", "dataview-result-object-li"] }); li.appendText(key + ": "); - await renderValue(value, li, originFile, component, settings, expandList, "list", depth + 1); + await renderValue(app, value, li, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } else { @@ -8619,7 +8673,7 @@ async function renderValue(field, container, originFile, component, settings, ex else span.appendText(", "); span.appendText(key + ": "); - await renderValue(value, span, originFile, component, settings, expandList, "list", depth + 1); + await renderValue(app, value, span, originFile, component, settings, expandList, "list", depth + 1, isInlineFieldLivePreview); } } } @@ -9246,6 +9300,30 @@ function setEmojiShorthandCompletionField(source, value) { /** All extracted markdown file metadata obtained from a file. */ class PageMetadata { + /** The path this file exists at. */ + path; + /** Obsidian-provided date this page was created. */ + ctime; + /** Obsidian-provided date this page was modified. */ + mtime; + /** Obsidian-provided size of this page in bytes. */ + size; + /** The day associated with this page, if relevant. */ + day; + /** The first H1/H2 header in the file. May not exist. */ + title; + /** All of the fields contained in this markdown file - both frontmatter AND in-file links. */ + fields; + /** All of the exact tags (prefixed with '#') in this file overall. */ + tags; + /** All of the aliases defined for this file. */ + aliases; + /** All OUTGOING links (including embeds, header + block links) in this file. */ + links; + /** All list items contained within this page. Filter for tasks to get just tasks. */ + lists; + /** The raw frontmatter for this document. */ + frontmatter; constructor(path, init) { this.path = path; this.fields = new Map(); @@ -9313,7 +9391,7 @@ class PageMetadata { /** Map this metadata to a full object; uses the index for additional data lookups. */ serialize(index, cache) { // Convert list items via the canonicalization cache. - let realCache = cache !== null && cache !== void 0 ? cache : new ListSerializationCache(this.lists); + let realCache = cache ?? new ListSerializationCache(this.lists); let result = { file: { path: this.path, @@ -9351,6 +9429,35 @@ class PageMetadata { } /** A list item inside of a list. */ class ListItem$1 { + /** The symbol ('*', '-', '1.') used to define this list item. */ + symbol; + /** A link which points to this task, or to the closest block that this task is contained in. */ + link; + /** A link to the section that contains this list element; could be a file if this is not in a section. */ + section; + /** The text of this list item. This may be multiple lines of markdown. */ + text; + /** The line that this list item starts on in the file. */ + line; + /** The number of lines that define this list item. */ + lineCount; + /** The line number for the first list item in the list this item belongs to. */ + list; + /** Any links contained within this list item. */ + links; + /** The tags contained within this list item. */ + tags; + /** The raw Obsidian-provided position for where this task is. */ + position; + /** The line number of the parent list item, if present; if this is undefined, this is a root item. */ + parent; + /** The line numbers of children of this list item. */ + children; + /** The block ID for this item, if one is present. */ + blockId; + /** Any fields defined in this list item. For tasks, this includes fields underneath the task. */ + fields; + task; constructor(init) { Object.assign(this, init); this.fields = this.fields || new Map(); @@ -9371,24 +9478,22 @@ class ListItem$1 { return `${this.symbol} ${this.text}`; } created() { - var _a, _b, _c; - return (_c = ((_b = (_a = this.fields.get("created")) !== null && _a !== void 0 ? _a : this.fields.get("ctime")) !== null && _b !== void 0 ? _b : this.fields.get("cday"))) === null || _c === void 0 ? void 0 : _c[0]; + return (this.fields.get("created") ?? this.fields.get("ctime") ?? this.fields.get("cday"))?.[0]; } due() { - var _a, _b, _c; - return (_c = ((_b = (_a = this.fields.get("due")) !== null && _a !== void 0 ? _a : this.fields.get("duetime")) !== null && _b !== void 0 ? _b : this.fields.get("dueday"))) === null || _c === void 0 ? void 0 : _c[0]; + return (this.fields.get("due") ?? this.fields.get("duetime") ?? this.fields.get("dueday"))?.[0]; } completed() { - var _a, _b, _c, _d; - return (_d = ((_c = (_b = (_a = this.fields.get("completed")) !== null && _a !== void 0 ? _a : this.fields.get("completion")) !== null && _b !== void 0 ? _b : this.fields.get("comptime")) !== null && _c !== void 0 ? _c : this.fields.get("compday"))) === null || _d === void 0 ? void 0 : _d[0]; + return (this.fields.get("completed") ?? + this.fields.get("completion") ?? + this.fields.get("comptime") ?? + this.fields.get("compday"))?.[0]; } start() { - var _a; - return (_a = this.fields.get("start")) === null || _a === void 0 ? void 0 : _a[0]; + return this.fields.get("start")?.[0]; } scheduled() { - var _a; - return (_a = this.fields.get("scheduled")) === null || _a === void 0 ? void 0 : _a[0]; + return this.fields.get("scheduled")?.[0]; } /** Create an API-friendly copy of this list item. De-duplication is done via the provided cache. */ serialize(cache) { @@ -9443,6 +9548,9 @@ class ListItem$1 { ////////////////////////////////////////// /** De-duplicates list items across section metadata and page metadata. */ class ListSerializationCache { + listItems; + cache; + seen; constructor(listItems) { this.listItems = {}; this.cache = {}; @@ -12469,6 +12577,9 @@ var localforage = /*@__PURE__*/getDefaultExportFromCjs(localforageExports); /** Simpler wrapper for a file-backed cache for arbitrary metadata. */ class LocalStorageCache { + appId; + version; + persister; constructor(appId, version) { this.appId = appId; this.version = version; @@ -12558,12 +12669,25 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) { }; } -var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMDksIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgY29uc3QgbW9kZSA9IGxvYy5saXN0aW5nTW9kZSgpOwoKICAgIGlmIChtb2RlID09PSAiZXJyb3IiKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSAibGF0biIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgKICAgICAgICBsb2MubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIgfHwKICAgICAgICAhbG9jLmxvY2FsZSB8fAogICAgICAgIGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIgogICAgICApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBmb3JjZVNpbXBsZSwgb3B0cykgewogICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTsKCiAgICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7CgogICAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkgewogICAgICAgIGNvbnN0IGludGxPcHRzID0geyB1c2VHcm91cGluZzogZmFsc2UsIC4uLm9wdHMgfTsKICAgICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbzsKICAgICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoaSkgewogICAgICBpZiAodGhpcy5pbmYpIHsKICAgICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogaTsKICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyB0byBtYXRjaCB0aGUgYnJvd3NlcidzIG51bWJlcmZvcm1hdHRlciBkZWZhdWx0cwogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpOwogICAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IG9wdHM7CiAgICAgIHRoaXMub3JpZ2luYWxab25lID0gdW5kZWZpbmVkOwoKICAgICAgbGV0IHogPSB1bmRlZmluZWQ7CiAgICAgIGlmICh0aGlzLm9wdHMudGltZVpvbmUpIHsKICAgICAgICAvLyBEb24ndCBhcHBseSBhbnkgd29ya2Fyb3VuZHMgaWYgYSB0aW1lWm9uZSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIGluIG9wdHMKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAiZml4ZWQiKSB7CiAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOgogICAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULgogICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvCiAgICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhCiAgICAgICAgY29uc3QgZ210T2Zmc2V0ID0gLTEgKiAoZHQub2Zmc2V0IC8gNjApOwogICAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7CiAgICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHsKICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEgc28KICAgICAgICAgIC8vIHdlIG1hbnVhbGx5IGFwcGx5IHRoZSBvZmZzZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHpvbmUgYXMgbmVlZGVkLgogICAgICAgICAgeiA9ICJVVEMiOwogICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogZHQuc2V0Wm9uZSgiVVRDIikucGx1cyh7IG1pbnV0ZXM6IGR0Lm9mZnNldCB9KTsKICAgICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAic3lzdGVtIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJpYW5hIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB6ID0gZHQuem9uZS5uYW1lOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIEN1c3RvbSB6b25lcyBjYW4gaGF2ZSBhbnkgb2Zmc2V0IC8gb2Zmc2V0TmFtZSBzbyB3ZSBqdXN0IG1hbnVhbGx5CiAgICAgICAgLy8gYXBwbHkgdGhlIG9mZnNldCBhbmQgc3Vic3RpdHV0ZSB0aGUgem9uZSBhcyBuZWVkZWQuCiAgICAgICAgeiA9ICJVVEMiOwogICAgICAgIHRoaXMuZHQgPSBkdC5zZXRab25lKCJVVEMiKS5wbHVzKHsgbWludXRlczogZHQub2Zmc2V0IH0pOwogICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgfQoKICAgICAgY29uc3QgaW50bE9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwogICAgICBpbnRsT3B0cy50aW1lWm9uZSA9IGludGxPcHRzLnRpbWVab25lIHx8IHo7CiAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICBmb3JtYXQoKSB7CiAgICAgIGlmICh0aGlzLm9yaWdpbmFsWm9uZSkgewogICAgICAgIC8vIElmIHdlIGhhdmUgdG8gc3Vic3RpdHV0ZSBpbiB0aGUgYWN0dWFsIHpvbmUgbmFtZSwgd2UgaGF2ZSB0byB1c2UKICAgICAgICAvLyBmb3JtYXRUb1BhcnRzIHNvIHRoYXQgdGhlIHRpbWV6b25lIGNhbiBiZSByZXBsYWNlZC4KICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUb1BhcnRzKCkKICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpCiAgICAgICAgICAuam9pbigiIik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoKSB7CiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgICBpZiAodGhpcy5vcmlnaW5hbFpvbmUpIHsKICAgICAgICByZXR1cm4gcGFydHMubWFwKChwYXJ0KSA9PiB7CiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAidGltZVpvbmVOYW1lIikgewogICAgICAgICAgICBjb25zdCBvZmZzZXROYW1lID0gdGhpcy5vcmlnaW5hbFpvbmUub2Zmc2V0TmFtZSh0aGlzLmR0LnRzLCB7CiAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmR0LmxvY2FsZSwKICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMub3B0cy50aW1lWm9uZU5hbWUsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIC4uLnBhcnQsCiAgICAgICAgICAgICAgdmFsdWU6IG9mZnNldE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcGFydHM7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKCkgewogICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6ICJsb25nIiwgLi4ub3B0cyB9OwogICAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gImxvbmciKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgTG9jYWxlIHsKICAgIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7CiAgICB9CgogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHsKICAgICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7CiAgICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzCiAgICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gImVuLVVTIiA6IHN5c3RlbUxvY2FsZSgpKTsKICAgICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtOwogICAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTsKICAgIH0KCiAgICBzdGF0aWMgcmVzZXRDYWNoZSgpIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICBpbnRsRFRDYWNoZSA9IHt9OwogICAgICBpbnRsTnVtQ2FjaGUgPSB7fTsKICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICB9CgogICAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7CiAgICB9CgogICAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHsKICAgICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpOwoKICAgICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7CiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDsKICAgICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpOwoKICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsOwogICAgICB0aGlzLmVyYUNhY2hlID0ge307CgogICAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTsKICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7CiAgICB9CgogICAgZ2V0IGZhc3ROdW1iZXJzKCkgewogICAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkOwogICAgfQoKICAgIGxpc3RpbmdNb2RlKCkgewogICAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9CiAgICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIpICYmCiAgICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gImdyZWdvcnkiKTsKICAgICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/ICJlbiIgOiAiaW50bCI7CiAgICB9CgogICAgY2xvbmUoYWx0cykgewogICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoCiAgICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSwKICAgICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZQogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pOwogICAgfQoKICAgIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTsKICAgIH0KCiAgICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgbW9udGhzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LAogICAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSI7CiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICB9KTsKICAgIH0KCiAgICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKCkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKAogICAgICAgIHRoaXMsCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICgpID0+IG1lcmlkaWVtcywKICAgICAgICAoKSA9PiB7CiAgICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3bwogICAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLgogICAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHsKICAgICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH07CiAgICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoCiAgICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKQogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7CiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGVyYXMobGVuZ3RoKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBlcmFzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTsKCiAgICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS4KICAgICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+CiAgICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpCiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7CiAgICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLAogICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7CiAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKQogICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpOwogICAgfQoKICAgIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpOwogICAgfQoKICAgIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7CiAgICB9CgogICAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7CiAgICB9CgogICAgaXNFbmdsaXNoKCkgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMubG9jYWxlID09PSAiZW4iIHx8CiAgICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gImVuLXVzIiB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIikKICAgICAgKTsKICAgIH0KCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmCiAgICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJgogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyCiAgICAgICk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uID0gbnVsbDsKCiAgLyoqCiAgICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKQogICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAqLwogIGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHsKICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICB9CiAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkgewogICAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQy02OjAwIikKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHsKICAgICAgaWYgKHMpIHsKICAgICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwogICAgICAgIGlmIChyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcihvZmZzZXQpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqIEBwcml2YXRlICoqLwogICAgICB0aGlzLmZpeGVkID0gb2Zmc2V0OwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsICJuYXJyb3ciKX1gOwogICAgfQoKICAgIGdldCBpYW5hTmFtZSgpIHsKICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IDApIHsKICAgICAgICByZXR1cm4gIkV0Yy9VVEMiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgICAgfQogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgLyoqCiAgICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUgewogICAgY29uc3RydWN0b3Ioem9uZU5hbWUpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqICBAcHJpdmF0ZSAqLwogICAgICB0aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gImludmFsaWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZXF1YWxzKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gZGVmYXVsdFpvbmU7CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkgewogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkgewogICAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGxvd2VyZWQgPT09ICJkZWZhdWx0IikgcmV0dXJuIGRlZmF1bHRab25lOwogICAgICBlbHNlIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7CiAgICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpOwogICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gIm9iamVjdCIgJiYgIm9mZnNldCIgaW4gaW5wdXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gImZ1bmN0aW9uIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldGVkIGFzIGN1cnJlbnQgY2VudHVyeQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gNTAgLy8gJzQ5JyAtPiAxOTQ5OyAnNTAnIC0+IDIwNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDE5NTAgLy8gaW50ZXJwcmV0ZWQgYXMgNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDIwNTAgLy8gQUxTTyBpbnRlcnByZXRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbikKICBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7CiAgICBsZXQgZCA9IERhdGUuVVRDKAogICAgICBvYmoueWVhciwKICAgICAgb2JqLm1vbnRoIC0gMSwKICAgICAgb2JqLmRheSwKICAgICAgb2JqLmhvdXIsCiAgICAgIG9iai5taW51dGUsCiAgICAgIG9iai5zZWNvbmQsCiAgICAgIG9iai5taWxsaXNlY29uZAogICAgKTsKCiAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0CiAgICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkgewogICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgIC8vIHNldCB0aGUgbW9udGggYW5kIGRheSBhZ2FpbiwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5ZWFyIDIwMDAgaXMgYSBsZWFwIHllYXIsIGJ1dCB5ZWFyIDEwMCBpcyBub3QKICAgICAgLy8gc28gaWYgb2JqLnllYXIgaXMgaW4gOTksIGJ1dCBvYmouZGF5IG1ha2VzIGl0IHJvbGwgb3ZlciBpbnRvIHllYXIgMTAwLAogICAgICAvLyB0aGUgY2FsY3VsYXRpb25zIGRvbmUgYnkgRGF0ZS5VVEMgYXJlIHVzaW5nIHllYXIgMjAwMCAtIHdoaWNoIGlzIGluY29ycmVjdAogICAgICBkLnNldFVUQ0Z1bGxZZWFyKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5KTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgLy8gd2hpdGUtc3BhY2UgaXMgYWx3YXlzIGNvbnNpZGVyZWQgYSBsaXRlcmFsIGluIHVzZXItcHJvdmlkZWQgZm9ybWF0cwogICAgICAvLyB0aGUgIiAiIHRva2VuIGhhcyBhIHNwZWNpYWwgbWVhbmluZyAoc2VlIHVuaXRGb3JUb2tlbikKCiAgICAgIGxldCBjdXJyZW50ID0gbnVsbCwKICAgICAgICBjdXJyZW50RnVsbCA9ICIiLAogICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICBjb25zdCBzcGxpdHMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTsKICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogL15ccyskLy50ZXN0KGN1cnJlbnRGdWxsKSwgdmFsOiBjdXJyZW50RnVsbCB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgIGN1cnJlbnQgPSBjOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHsKICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICB9CgogICAgICByZXR1cm4gc3BsaXRzOwogICAgfQoKICAgIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7CiAgICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgdGhpcy5sb2MgPSBsb2NhbGU7CiAgICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDsKICAgIH0KCiAgICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykgewogICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7CiAgICAgIH0KICAgICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdFRvUGFydHMoKTsKICAgIH0KCiAgICBmb3JtYXRJbnRlcnZhbChpbnRlcnZhbCwgb3B0cykgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoaW50ZXJ2YWwuc3RhcnQsIG9wdHMpOwogICAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLnJlc29sdmVkT3B0aW9ucygpOwogICAgfQoKICAgIG51bShuLCBwID0gMCkgewogICAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHkKICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTsKICAgICAgfQoKICAgICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07CgogICAgICBpZiAocCA+IDApIHsKICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHsKICAgICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gImVuIiwKICAgICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSAiZ3JlZ29yeSIsCiAgICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLAogICAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7CiAgICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHsKICAgICAgICAgICAgcmV0dXJuICJaIjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiAiIjsKICAgICAgICB9LAogICAgICAgIG1lcmlkaWVtID0gKCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaAogICAgICAgICAgICA/IG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpCiAgICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH0sICJkYXlwZXJpb2QiKSwKICAgICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSwgIm1vbnRoIiksCiAgICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkKICAgICAgICAgICAgOiBzdHJpbmcoCiAgICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9LAogICAgICAgICAgICAgICAgIndlZWtkYXkiCiAgICAgICAgICAgICAgKSwKICAgICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7CiAgICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwogICAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJhID0gKGxlbmd0aCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgImVyYSIpLAogICAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHsKICAgICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwczovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lL2RhdGUtdGltZS1zeW1ib2xzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gZHVyYXRpb25Ub01pbGxpcyhtYXRyaXgsIHZhbHMpIHsKICAgIGxldCBzdW0gPSB2YWxzLm1pbGxpc2Vjb25kcyA/PyAwOwogICAgZm9yIChjb25zdCB1bml0IG9mIHJldmVyc2VVbml0cy5zbGljZSgxKSkgewogICAgICBpZiAodmFsc1t1bml0XSkgewogICAgICAgIHN1bSArPSB2YWxzW3VuaXRdICogbWF0cml4W3VuaXRdWyJtaWxsaXNlY29uZHMiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bTsKICB9CgogIC8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnMKICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7CiAgICAvLyB0aGUgbG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgb3ZlcmFsbCB2YWx1ZSBvZiB0aGUgZHVyYXRpb24gaXMgcG9zaXRpdmUKICAgIC8vIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBmYWN0b3IgaXMgdXNlZCB0byBtYWtlIGl0IHNvCiAgICBjb25zdCBmYWN0b3IgPSBkdXJhdGlvblRvTWlsbGlzKG1hdHJpeCwgdmFscykgPCAwID8gLTEgOiAxOwoKICAgIG9yZGVyZWRVbml0cyQxLnJlZHVjZVJpZ2h0KChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbCA9IHZhbHNbcHJldmlvdXNdICogZmFjdG9yOwogICAgICAgICAgY29uc3QgY29udiA9IG1hdHJpeFtjdXJyZW50XVtwcmV2aW91c107CgogICAgICAgICAgLy8gaWYgKHByZXZpb3VzVmFsIDwgMCk6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIG5lZ2F0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IC0yIH0pCiAgICAgICAgICAvLyBub3JtYWxpemUgdGhpcyBieSByZWR1Y2luZyB0aGUgaGlnaGVyIG9yZGVyIHVuaXQgYnkgdGhlIGFwcHJvcHJpYXRlIGFtb3VudAogICAgICAgICAgLy8gYW5kIGluY3JlYXNpbmcgdGhlIGxvd2VyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIHRoaXMgY2FuIG5ldmVyIG1ha2UgdGhlIGhpZ2hlciBvcmRlciB1bml0IG5lZ2F0aXZlLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcwogICAgICAgICAgLy8gb24gcG9zaXRpdmUgZHVyYXRpb25zLCBzbyB0aGUgYW1vdW50IG9mIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGxvd2VyIG9yZGVyIHVuaXQgY2Fubm90CiAgICAgICAgICAvLyBiZSBsYXJnZXIgdGhhbiB0aGUgaGlnaGVyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIGVsc2U6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIHBvc2l0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IDQ1MCB9IG9yIHsgeWVhcnM6IC0yLCBkYXlzOiA0NTAgfSkKICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBsb3dlciBvcmRlciB1bml0IGludG8KICAgICAgICAgIC8vIHRoZSBoaWdoZXIgb3JkZXIgb25lCiAgICAgICAgICAvLwogICAgICAgICAgLy8gTWF0aC5mbG9vciB0YWtlcyBjYXJlIG9mIGJvdGggb2YgdGhlc2UgY2FzZXMsIHJvdW5kaW5nIGF3YXkgZnJvbSAwCiAgICAgICAgICAvLyBpZiBwcmV2aW91c1ZhbCA8IDAgaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIGxhcmdlcgogICAgICAgICAgLy8gaWYgcHJldmlvdXNWYWwgPj0gaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIHNtYWxsZXIKICAgICAgICAgIGNvbnN0IHJvbGxVcCA9IE1hdGguZmxvb3IocHJldmlvdXNWYWwgLyBjb252KTsKICAgICAgICAgIHZhbHNbY3VycmVudF0gKz0gcm9sbFVwICogZmFjdG9yOwogICAgICAgICAgdmFsc1twcmV2aW91c10gLT0gcm9sbFVwICogY29udiAqIGZhY3RvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICB9CiAgICB9LCBudWxsKTsKCiAgICAvLyB0cnkgdG8gY29udmVydCBhbnkgZGVjaW1hbHMgaW50byBzbWFsbGVyIHVuaXRzIGlmIHBvc3NpYmxlCiAgICAvLyBmb3IgZXhhbXBsZSBmb3IgeyB5ZWFyczogMi41LCBkYXlzOiAwLCBzZWNvbmRzOiAwIH0gd2Ugd2FudCB0byBnZXQgeyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgb3JkZXJlZFVuaXRzJDEucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IHZhbHNbcHJldmlvdXNdICUgMTsKICAgICAgICAgIHZhbHNbcHJldmlvdXNdIC09IGZyYWN0aW9uOwogICAgICAgICAgdmFsc1tjdXJyZW50XSArPSBmcmFjdGlvbiAqIG1hdHJpeFtwcmV2aW91c11bY3VycmVudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDI7CgogICAgICBjb25zdCBsID0gb3JkZXJlZFVuaXRzJDEKICAgICAgICAubWFwKCh1bml0KSA9PiB7CiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTsKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMubG9jCiAgICAgICAgICAgIC5udW1iZXJGb3JtYXR0ZXIoeyBzdHlsZTogInVuaXQiLCB1bml0RGlzcGxheTogImxvbmciLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KQogICAgICAgICAgICAuZm9ybWF0KHZhbCk7CiAgICAgICAgfSkKICAgICAgICAuZmlsdGVyKChuKSA9PiBuKTsKCiAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgIC5saXN0Rm9ybWF0dGVyKHsgdHlwZTogImNvbmp1bmN0aW9uIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8ICJuYXJyb3ciLCAuLi5vcHRzIH0pCiAgICAgICAgLmZvcm1hdChsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdCgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnMKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UycKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oKSB7CiAgICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmcKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgbGV0IHMgPSAiUCI7CiAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyAiTSI7CiAgICAgIGlmICh0aGlzLndlZWtzICE9PSAwKSBzICs9IHRoaXMud2Vla3MgKyAiVyI7CiAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKQogICAgICAgIHMgKz0gIlQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgIkgiOwogICAgICBpZiAodGhpcy5taW51dGVzICE9PSAwKSBzICs9IHRoaXMubWludXRlcyArICJNIjsKICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICAvLyB0aGlzIHdpbGwgaGFuZGxlICJmbG9hdGluZyBwb2ludCBtYWRuZXNzIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlcwogICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgIHMgKz0gcm91bmRUbyh0aGlzLnNlY29uZHMgKyB0aGlzLm1pbGxpc2Vjb25kcyAvIDEwMDAsIDMpICsgIlMiOwogICAgICBpZiAocyA9PT0gIlAiKSBzICs9ICJUMFMiOwogICAgICByZXR1cm4gczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTsKICAgICAgaWYgKG1pbGxpcyA8IDAgfHwgbWlsbGlzID49IDg2NDAwMDAwKSByZXR1cm4gbnVsbDsKCiAgICAgIG9wdHMgPSB7CiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLAogICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgaW5jbHVkZVByZWZpeDogZmFsc2UsCiAgICAgICAgZm9ybWF0OiAiZXh0ZW5kZWQiLAogICAgICAgIC4uLm9wdHMsCiAgICAgICAgaW5jbHVkZU9mZnNldDogZmFsc2UsCiAgICAgIH07CgogICAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMobWlsbGlzLCB7IHpvbmU6ICJVVEMiIH0pOwogICAgICByZXR1cm4gZGF0ZVRpbWUudG9JU09UaW1lKG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9KU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvTWlsbGlzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIE5hTjsKCiAgICAgIHJldHVybiBkdXJhdGlvblRvTWlsbGlzKHRoaXMubWF0cml4LCB0aGlzLnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIHJlc3VsdCA9IHt9OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkgewogICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IHJlc3VsdCB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pOwogICAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoeCA9PiB4ICogMikgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiA2MCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91cnMiID8geCAqIDIgOiB4KSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDMwIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBtYXBVbml0cyhmbikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgfQogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ3llYXJzJykgLy89PiAyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgaG91cnM6IDgsIG1pbnV0ZXM6IDMwIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pOwogICAgICBjb25zdCBvcHRzID0geyBsb2MsIG1hdHJpeCwgY29udmVyc2lvbkFjY3VyYWN5IH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGFzKHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdGhpcyBEdXJhdGlvbiB0byBpdHMgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGluIGl0cyBjdXJyZW50IHVuaXRzLgogICAgICogQXNzdW1pbmcgdGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIER1cmF0aW9uIGlzIHBvc2l0aXZlLCB0aGlzIG1lYW5zOgogICAgICogLSBleGNlc3NpdmUgdmFsdWVzIGZvciBsb3dlci1vcmRlciB1bml0cyBhcmUgY29udmVydGVkIHRvIGhpZ2hlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmaXJzdCBhbmQgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIG5lZ2F0aXZlIGxvd2VyLW9yZGVyIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gaGlnaGVyIG9yZGVyIHVuaXRzICh0aGVyZSBtdXN0IGJlIHN1Y2ggYSBoaWdoZXIgb3JkZXIgdW5pdCwgb3RoZXJ3aXNlCiAgICAgKiAgIHRoZSBvdmVyYWxsIHZhbHVlIHdvdWxkIGJlIG5lZ2F0aXZlLCBzZWUgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIGZyYWN0aW9uYWwgdmFsdWVzIGZvciBoaWdoZXItb3JkZXIgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBsb3dlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmb3VydGggZXhhbXBsZSkKICAgICAqCiAgICAgKiBJZiB0aGUgb3ZlcmFsbCB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGB0aGlzLm5lZ2F0ZSgpLm5vcm1hbGl6ZSgpLm5lZ2F0ZSgpYC4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiA1MDAwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMi41LCBkYXlzOiAwLCBob3VyczogMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb25seSBrZWVwIHRoZSBpbnRlZ2VyIHBhcnQgZm9yIG5vdyBpbiB0aGUgaG9wZXMgb2YgcHV0dGluZyBhbnkgZGVjaW1hbCBwYXJ0CiAgICAgICAgICAvLyBpbnRvIGEgc21hbGxlciB1bml0IGxhdGVyCiAgICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pOwogICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7CgogICAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyCiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSB2YWxzW2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdAogICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7CiAgICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHsKICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPQogICAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgYnVpbHQpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogYnVpbHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuCiAgICAgKiBTYW1lIGFzIHNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG9BbGwoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIHRoaXMuc2hpZnRUbygKICAgICAgICAieWVhcnMiLAogICAgICAgICJtb250aHMiLAogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgImRheXMiLAogICAgICAgICJob3VycyIsCiAgICAgICAgIm1pbnV0ZXMiLAogICAgICAgICJzZWNvbmRzIiwKICAgICAgICAibWlsbGlzZWNvbmRzIgogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbmVnYXRlKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTsKICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkgewogICAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbW9udGhzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXlzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGhvdXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtaW51dGVzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmRzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWwKICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7CiAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNvbnN0IElOVkFMSUQkMSA9ICJJbnZhbGlkIEludGVydmFsIjsKCiAgLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZAogIGZ1bmN0aW9uIHZhbGlkYXRlU3RhcnRFbmQoc3RhcnQsIGVuZCkgewogICAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJtaXNzaW5nIG9yIGludmFsaWQgZW5kIik7CiAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKAogICAgICAgICJlbmQgYmVmb3JlIHN0YXJ0IiwKICAgICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YAogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvKioKICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGFuIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsLmZyb21EYXRlVGltZXN9LCB7QGxpbmsgSW50ZXJ2YWwuYWZ0ZXJ9LCB7QGxpbmsgSW50ZXJ2YWwuYmVmb3JlfSwgb3Ige0BsaW5rIEludGVydmFsLmZyb21JU099LgogICAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLgogICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG90aGVyIEludGVydmFscyBvdXQgb2YgdGhpcyBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjc2V0fSwge0BsaW5rIEludGVydmFsI3NwbGl0QXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRCeX0sIHtAbGluayBJbnRlcnZhbCNkaXZpZGVFcXVhbGx5fSwge0BsaW5rIEludGVydmFsLm1lcmdlfSwge0BsaW5rIEludGVydmFsLnhvcn0sIHtAbGluayBJbnRlcnZhbCN1bmlvbn0sIHtAbGluayBJbnRlcnZhbCNpbnRlcnNlY3Rpb259LCBvciB7QGxpbmsgSW50ZXJ2YWwjZGlmZmVyZW5jZX0uCiAgICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc30KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICovCiAgY2xhc3MgSW50ZXJ2YWwgewogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5zID0gY29uZmlnLnN0YXJ0OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmUgPSBjb25maWcuZW5kOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25JbnRlcnZhbCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEludGVydmFsRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBzdGFydAogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgYnVpbHRFbmQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CgogICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICBpZiAodmFsaWRhdGVFcnJvciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgIGVuZDogYnVpbHRFbmQsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGEgRHVyYXRpb24gdG8gZXh0ZW5kIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIEFjY2VwdHMgYDxzdGFydD4vPGVuZD5gLCBgPHN0YXJ0Pi88ZHVyYXRpb24+YCwgYW5kIGA8ZHVyYXRpb24+LzxlbmQ+YCBmb3JtYXRzLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykgewogICAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCAiIikuc3BsaXQoIi8iLCAyKTsKICAgICAgaWYgKHMgJiYgZSkgewogICAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkOwogICAgICAgIHRyeSB7CiAgICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5iZWZvcmUoZW5kLCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzSW50ZXJ2YWwobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBzdGFydCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlbmQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBlbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYXQgbGVhc3QgaXRzIHN0YXJ0LCBtZWFuaW5nIHRoYXQgdGhlIEludGVydmFsIGlzbid0ICdiYWNrd2FyZHMnLgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIEludGVydmFsIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBsZW5ndGgodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvRHVyYXRpb24oLi4uW3VuaXRdKS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAqIFVubGlrZSB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSB0aGlzIGNvdW50cyBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIsIG5vdCBwZXJpb2RzIG9mIHRpbWUsIGUuZy4gc3BlY2lmeWluZyAnZGF5JwogICAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPycKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBjb3VudCh1bml0ID0gIm1pbGxpc2Vjb25kcyIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgIGVuZCA9IHRoaXMuZW5kLnN0YXJ0T2YodW5pdCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgKGVuZC52YWx1ZU9mKCkgIT09IHRoaXMuZW5kLnZhbHVlT2YoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgLyogVGhpcyBsb29wIHRyaWVzIHRvIGRpZmYgdXNpbmcgbGFyZ2VyIHVuaXRzIGZpcnN0LgogICAgICAgSWYgd2Ugb3ZlcnNob290LCB3ZSBiYWNrdHJhY2sgYW5kIHRyeSB0aGUgbmV4dCBzbWFsbGVyIHVuaXQuCiAgICAgICAiY3Vyc29yIiBzdGFydHMgb3V0IGF0IHRoZSBlYXJsaWVyIHRpbWVzdGFtcCBhbmQgbW92ZXMgY2xvc2VyIGFuZCBjbG9zZXIgdG8gImxhdGVyIgogICAgICAgYXMgd2UgdXNlIHNtYWxsZXIgYW5kIHNtYWxsZXIgdW5pdHMuCiAgICAgICBoaWdoV2F0ZXIga2VlcHMgdHJhY2sgb2Ygd2hlcmUgd2Ugd291bGQgYmUgaWYgd2UgYWRkZWQgb25lIG1vcmUgb2YgdGhlIHNtYWxsZXN0IHVuaXQsCiAgICAgICB0aGlzIGlzIHVzZWQgbGF0ZXIgdG8gcG90ZW50aWFsbHkgY29udmVydCBhbnkgZGlmZmVyZW5jZSBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IGhpZ2hlciBvcmRlciB1bml0CiAgICAgICBpbnRvIGEgZnJhY3Rpb24gb2YgdGhhdCBzbWFsbGVzdCBoaWdoZXIgb3JkZXIgdW5pdAogICAgKi8KICAgIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykgewogICAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7CiAgICAgICAgbG93ZXN0T3JkZXIgPSB1bml0OwoKICAgICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpOwogICAgICAgIGhpZ2hXYXRlciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7CiAgICAgICAgICAvLyB3ZSBvdmVyc2hvdCB0aGUgZW5kIHBvaW50LCBiYWNrdHJhY2sgY3Vyc29yIGJ5IDEKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgb3ZlcnNob290aW5nIG5vdywgd2UgbmVlZCB0byBiYWNrdHJhY2sgYWdhaW4KICAgICAgICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlbiBkaWZmaW5nIHRpbWVzIGluIGRpZmZlcmVudCB6b25lcywKICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBjYWxjdWxhdGlvbiBpZ25vcmVzIHRpbWUgem9uZXMKICAgICAgICAgIGlmIChjdXJzb3IgPiBsYXRlcikgewogICAgICAgICAgICAvLyBrZWVwIHRoZSAib3ZlcnNob3QgYnkgMSIgYXJvdW5kIGFzIGhpZ2hXYXRlcgogICAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3I7CiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBjdXJzb3IgYnkgMQogICAgICAgICAgICByZXN1bHRzW3VuaXRdLS07CiAgICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIC8qKgogICAqIEBwYXJhbSB0b2tlbgogICAqIEBwYXJhbSB7TG9jYWxlfSBsb2MKICAgKi8KICBmdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykgewogICAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLAogICAgICB0d28gPSBkaWdpdFJlZ2V4KGxvYywgInsyfSIpLAogICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgIns0fSIpLAogICAgICBzaXggPSBkaWdpdFJlZ2V4KGxvYywgIns2fSIpLAogICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsM30iKSwKICAgICAgb25lVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgInsxLDZ9IiksCiAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsICJ7Miw0fSIpLAogICAgICBmb3VyVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgIns0LDZ9IiksCiAgICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSwKICAgICAgdW5pdGF0ZSA9ICh0KSA9PiB7CiAgICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKHQudmFsKSB7CiAgICAgICAgICAvLyBlcmEKICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoInNob3J0IiksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciKSwgMCk7CiAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKICAgICAgICAgIGNhc2UgInl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICBjYXNlICJ5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChzaXgpOwogICAgICAgICAgLy8gbW9udGhzCiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSksIDEpOwogICAgICAgICAgLy8gZGF0ZXMKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwogICAgICAgICAgY2FzZSAib29vIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpOwogICAgICAgICAgLy8gdGltZQogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiSCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInV1dSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CiAgICAgICAgICAvLyBtZXJpZGllbQogICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApOwogICAgICAgICAgLy8gd2Vla1llYXIgKGspCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgLy8gd2Vla051bWJlciAoVykKICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiY2NjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoImxvbmciLCB0cnVlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgLy8gdGhpcyBzcGVjaWFsLWNhc2UgInRva2VuIiByZXByZXNlbnRzIGEgcGxhY2Ugd2hlcmUgYSBtYWNyby10b2tlbiBleHBhbmRlZCBpbnRvIGEgd2hpdGUtc3BhY2UgbGl0ZXJhbAogICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGFjY2VwdCBhbnkgbm9uLW5ld2xpbmUgd2hpdGUtc3BhY2UKICAgICAgICAgIGNhc2UgIiAiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bXlxTXG5ccl0vKTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgfTsKCiAgICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwgewogICAgICBpbnZhbGlkUmVhc29uOiBNSVNTSU5HX0ZUUCwKICAgIH07CgogICAgdW5pdC50b2tlbiA9IHRva2VuOwoKICAgIHJldHVybiB1bml0OwogIH0KCiAgY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICB5ZWFyOiB7CiAgICAgICIyLWRpZ2l0IjogInl5IiwKICAgICAgbnVtZXJpYzogInl5eXl5IiwKICAgIH0sCiAgICBtb250aDogewogICAgICBudW1lcmljOiAiTSIsCiAgICAgICIyLWRpZ2l0IjogIk1NIiwKICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICBsb25nOiAiTU1NTSIsCiAgICB9LAogICAgZGF5OiB7CiAgICAgIG51bWVyaWM6ICJkIiwKICAgICAgIjItZGlnaXQiOiAiZGQiLAogICAgfSwKICAgIHdlZWtkYXk6IHsKICAgICAgc2hvcnQ6ICJFRUUiLAogICAgICBsb25nOiAiRUVFRSIsCiAgICB9LAogICAgZGF5cGVyaW9kOiAiYSIsCiAgICBkYXlQZXJpb2Q6ICJhIiwKICAgIGhvdXIxMjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBob3VyMjQ6IHsKICAgICAgbnVtZXJpYzogIkgiLAogICAgICAiMi1kaWdpdCI6ICJISCIsCiAgICB9LAogICAgbWludXRlOiB7CiAgICAgIG51bWVyaWM6ICJtIiwKICAgICAgIjItZGlnaXQiOiAibW0iLAogICAgfSwKICAgIHNlY29uZDogewogICAgICBudW1lcmljOiAicyIsCiAgICAgICIyLWRpZ2l0IjogInNzIiwKICAgIH0sCiAgICB0aW1lWm9uZU5hbWU6IHsKICAgICAgbG9uZzogIlpaWlpaIiwKICAgICAgc2hvcnQ6ICJaWloiLAogICAgfSwKICB9OwoKICBmdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgZm9ybWF0T3B0cywgcmVzb2x2ZWRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgY29uc3QgaXNTcGFjZSA9IC9eXHMrJC8udGVzdCh2YWx1ZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgbGl0ZXJhbDogIWlzU3BhY2UsCiAgICAgICAgdmFsOiBpc1NwYWNlID8gIiAiIDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIC8vIFRoZSB1c2VyIG1pZ2h0IGhhdmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaG91cjEyIG9yIGhvdXJDeWNsZQogICAgLy8gaWYgc28sIHJlc3BlY3QgdGhlaXIgZGVjaXNpb24KICAgIC8vIGlmIG5vdCwgcmVmZXIgYmFjayB0byB0aGUgcmVzb2x2ZWRPcHRzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhlIGxvY2FsZQogICAgbGV0IGFjdHVhbFR5cGUgPSB0eXBlOwogICAgaWYgKHR5cGUgPT09ICJob3VyIikgewogICAgICBpZiAoZm9ybWF0T3B0cy5ob3VyMTIgIT0gbnVsbCkgewogICAgICAgIGFjdHVhbFR5cGUgPSBmb3JtYXRPcHRzLmhvdXIxMiA/ICJob3VyMTIiIDogImhvdXIyNCI7CiAgICAgIH0gZWxzZSBpZiAoZm9ybWF0T3B0cy5ob3VyQ3ljbGUgIT0gbnVsbCkgewogICAgICAgIGlmIChmb3JtYXRPcHRzLmhvdXJDeWNsZSA9PT0gImgxMSIgfHwgZm9ybWF0T3B0cy5ob3VyQ3ljbGUgPT09ICJoMTIiKSB7CiAgICAgICAgICBhY3R1YWxUeXBlID0gImhvdXIxMiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFjdHVhbFR5cGUgPSAiaG91cjI0IjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gdG9rZW5zIG9ubHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDI0IGhvdXJzIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBob3VyQ3ljbGUgaGVyZSwgd2hpY2ggaXMgbGVzcyBzdXBwb3J0ZWQgYW55d2F5cwogICAgICAgIGFjdHVhbFR5cGUgPSByZXNvbHZlZE9wdHMuaG91cjEyID8gImhvdXIxMiIgOiAiaG91cjI0IjsKICAgICAgfQogICAgfQogICAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW2FjdHVhbFR5cGVdOwogICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiKSB7CiAgICAgIHZhbCA9IHZhbFtzdHlsZV07CiAgICB9CgogICAgaWYgKHZhbCkgewogICAgICByZXR1cm4gewogICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgIHZhbCwKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykgewogICAgY29uc3QgcmUgPSB1bml0cy5tYXAoKHUpID0+IHUucmVnZXgpLnJlZHVjZSgoZiwgcikgPT4gYCR7Zn0oJHtyLnNvdXJjZX0pYCwgIiIpOwogICAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgaWYgKG1hdGNoZXMpIHsKICAgICAgY29uc3QgYWxsID0ge307CiAgICAgIGxldCBtYXRjaEluZGV4ID0gMTsKICAgICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkgewogICAgICAgICAgY29uc3QgaCA9IGhhbmRsZXJzW2ldLAogICAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7CiAgICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7CiAgICAgICAgICAgIGFsbFtoLnRva2VuLnZhbFswXV0gPSBoLmRlc2VyKG1hdGNoZXMuc2xpY2UobWF0Y2hJbmRleCwgbWF0Y2hJbmRleCArIGdyb3VwcykpOwogICAgICAgICAgfQogICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbbWF0Y2hlcywge31dOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSB7CiAgICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7CiAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICJTIjoKICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwogICAgICAgIGNhc2UgInMiOgogICAgICAgICAgcmV0dXJuICJzZWNvbmQiOwogICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgIGNhc2UgImgiOgogICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgcmV0dXJuICJob3VyIjsKICAgICAgICBjYXNlICJkIjoKICAgICAgICAgIHJldHVybiAiZGF5IjsKICAgICAgICBjYXNlICJvIjoKICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CiAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgIHJldHVybiAieWVhciI7CiAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICByZXR1cm4gIndlZWtkYXkiOwogICAgICAgIGNhc2UgIlciOgogICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKICAgICAgICBjYXNlICJrIjoKICAgICAgICAgIHJldHVybiAid2Vla1llYXIiOwogICAgICAgIGNhc2UgInEiOgogICAgICAgICAgcmV0dXJuICJxdWFydGVyIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH07CgogICAgbGV0IHpvbmUgPSBudWxsOwogICAgbGV0IHNwZWNpZmljT2Zmc2V0OwogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgIHpvbmUgPSBJQU5BWm9uZS5jcmVhdGUobWF0Y2hlcy56KTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgaWYgKCF6b25lKSB7CiAgICAgICAgem9uZSA9IG5ldyBGaXhlZE9mZnNldFpvbmUobWF0Y2hlcy5aKTsKICAgICAgfQogICAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgIGlmIChtYXRjaGVzLmggPCAxMiAmJiBtYXRjaGVzLmEgPT09IDEpIHsKICAgICAgICBtYXRjaGVzLmggKz0gMTI7CiAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICBtYXRjaGVzLmggPSAwOwogICAgICB9CiAgICB9CgogICAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHsKICAgICAgbWF0Y2hlcy55ID0gLW1hdGNoZXMueTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHsKICAgICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTsKICAgIH0KCiAgICBjb25zdCB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKChyLCBrKSA9PiB7CiAgICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspOwogICAgICBpZiAoZikgewogICAgICAgIHJbZl0gPSBtYXRjaGVzW2tdOwogICAgICB9CgogICAgICByZXR1cm4gcjsKICAgIH0sIHt9KTsKCiAgICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTsKICB9CgogIGxldCBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICBmdW5jdGlvbiBnZXREdW1teURhdGVUaW1lKCkgewogICAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHsKICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgIH0KCiAgICByZXR1cm4gZHVtbXlEYXRlVGltZUNhY2hlOwogIH0KCiAgZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHsKICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTsKICAgIGNvbnN0IHRva2VucyA9IGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpOwoKICAgIGlmICh0b2tlbnMgPT0gbnVsbCB8fCB0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgcmV0dXJuIHRva2VuczsKICB9CgogIGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7CiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSwKICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksCiAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTsKCiAgICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHsKICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9OwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSwKICAgICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgImkiKSwKICAgICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzCiAgICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykKICAgICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07CiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiYSIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsICJIIikpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXQiCiAgICAgICAgKTsKICAgICAgfQogICAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpOwogICAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHsKICAgIGlmICghZm9ybWF0T3B0cykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7CiAgICBjb25zdCBkZiA9IGZvcm1hdHRlci5kdEZvcm1hdHRlcihnZXREdW1teURhdGVUaW1lKCkpOwogICAgY29uc3QgcGFydHMgPSBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICBjb25zdCByZXNvbHZlZE9wdHMgPSBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIHJldHVybiBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBmb3JtYXRPcHRzLCByZXNvbHZlZE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKChwYXJzZWQgJiYgT2JqZWN0LmtleXMocGFyc2VkKS5sZW5ndGggIT09IDApIHx8IHBhcnNlZFpvbmUpIHsKICAgICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLAogICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgewogICAgICAgICAgLi4ub3B0cywKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSwKICAgICAgICAgIHNwZWNpZmljT2Zmc2V0LAogICAgICAgIH0pOwogICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgKICAgICAgICBuZXcgSW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyAke2Zvcm1hdH1gKQogICAgICApOwogICAgfQogIH0KCiAgLy8gaWYgeW91IHdhbnQgdG8gb3V0cHV0IGEgdGVjaG5pY2FsIGZvcm1hdCAoZS5nLiBSRkMgMjgyMiksIHRoaXMgaGVscGVyCiAgLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzCiAgZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHsKICAgIHJldHVybiBkdC5pc1ZhbGlkCiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgICBhbGxvd1osCiAgICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSwKICAgICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdCkKICAgICAgOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7CiAgICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDsKICAgIGxldCBjID0gIiI7CiAgICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9ICIrIjsKICAgIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7CgogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfQogICAgcmV0dXJuIGM7CiAgfQoKICBmdW5jdGlvbiB0b0lTT1RpbWUoCiAgICBvLAogICAgZXh0ZW5kZWQsCiAgICBzdXBwcmVzc1NlY29uZHMsCiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgIGluY2x1ZGVPZmZzZXQsCiAgICBleHRlbmRlZFpvbmUKICApIHsKICAgIGxldCBjID0gcGFkU3RhcnQoby5jLmhvdXIpOwogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIjoiOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8IG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykgewogICAgICAgIGMgKz0gIjoiOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgfQoKICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7CiAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIERhdGVUaW1lIGlzIGludmFsaWQiKTsKICAgICAgfQoKICAgICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsgaW52YWxpZCB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzRGF0ZVRpbWUobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9ucwogICAgICogQHBhcmFtIGZvcm1hdE9wdHMKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgcGFyc2VGb3JtYXRGb3JPcHRzKGZvcm1hdE9wdHMsIGxvY2FsZU9wdHMgPSB7fSkgewogICAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gIXRva2VuTGlzdCA/IG51bGwgOiB0b2tlbkxpc3QubWFwKCh0KSA9PiAodCA/IHQudmFsIDogbnVsbCkpLmpvaW4oIiIpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgdGhlIGZ1bGx5IGV4cGFuZGVkIGZvcm1hdCB0b2tlbiBmb3IgdGhlIGxvY2FsZQogICAgICogRG9lcyBOT1QgcXVvdGUgY2hhcmFjdGVycywgc28gcXVvdGVkIHRva2VucyB3aWxsIG5vdCByb3VuZCB0cmlwIGNvcnJlY3RseQogICAgICogQHBhcmFtIGZtdAogICAgICogQHBhcmFtIGxvY2FsZU9wdHMKICAgICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBleHBhbmRGb3JtYXQoZm10LCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbigiIik7CiAgICB9CgogICAgLy8gSU5GTwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNAogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46CiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzAKICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGxvY2FsZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG91dHB1dENhbGVuZGFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAqLwogICAgZ2V0IHpvbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgem9uZU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGggKDEtMTIpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRoKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDkKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrTnVtYmVyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuCiAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcikKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfQogICAgICovCiAgICBnZXQgb3JkaW5hbCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoU2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbW9udGhMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5U2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheQogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHdlZWtkYXlMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgb2Zmc2V0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgIkVTVCIgb3IgIkVEVCIuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAibG9uZyIsCiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNPZmZzZXRGaXhlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5EU1QoKSB7CiAgICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fAogICAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldAogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aG9zZSBEYXRlVGltZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBsb2NhbCB0aW1lIGFzIHRoaXMgRGF0ZVRpbWUsIGJ1dCBhIGRpZmZlcmVudCBvZmZzZXQgZnJvbSBVVEMKICAgICAqIGluIHRoaXMgRGF0ZVRpbWUncyB6b25lLiBEdXJpbmcgRFNUIGNoYW5nZXMgbG9jYWwgdGltZSBjYW4gYmUgYW1iaWd1b3VzLCBmb3IgZXhhbXBsZQogICAgICogYDIwMjMtMTAtMjlUMDI6MzA6MDBgIGluIGBFdXJvcGUvQmVybGluYCBjYW4gaGF2ZSBvZmZzZXQgYCswMTowMGAgb3IgYCswMjowMGAuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBib3RoIHBvc3NpYmxlIERhdGVUaW1lcyBpZiB0aGlzIERhdGVUaW1lJ3MgbG9jYWwgdGltZSBpcyBhbWJpZ3VvdXMuCiAgICAgKiBAcmV0dXJucyB7RGF0ZVRpbWVbXX0KICAgICAqLwogICAgZ2V0UG9zc2libGVPZmZzZXRzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCB0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gW3RoaXNdOwogICAgICB9CiAgICAgIGNvbnN0IGRheU1zID0gODY0MDAwMDA7CiAgICAgIGNvbnN0IG1pbnV0ZU1zID0gNjAwMDA7CiAgICAgIGNvbnN0IGxvY2FsVFMgPSBvYmpUb0xvY2FsVFModGhpcy5jKTsKICAgICAgY29uc3Qgb0VhcmxpZXIgPSB0aGlzLnpvbmUub2Zmc2V0KGxvY2FsVFMgLSBkYXlNcyk7CiAgICAgIGNvbnN0IG9MYXRlciA9IHRoaXMuem9uZS5vZmZzZXQobG9jYWxUUyArIGRheU1zKTsKCiAgICAgIGNvbnN0IG8xID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0VhcmxpZXIgKiBtaW51dGVNcyk7CiAgICAgIGNvbnN0IG8yID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0xhdGVyICogbWludXRlTXMpOwogICAgICBpZiAobzEgPT09IG8yKSB7CiAgICAgICAgcmV0dXJuIFt0aGlzXTsKICAgICAgfQogICAgICBjb25zdCB0czEgPSBsb2NhbFRTIC0gbzEgKiBtaW51dGVNczsKICAgICAgY29uc3QgdHMyID0gbG9jYWxUUyAtIG8yICogbWludXRlTXM7CiAgICAgIGNvbnN0IGMxID0gdHNUb09iaih0czEsIG8xKTsKICAgICAgY29uc3QgYzIgPSB0c1RvT2JqKHRzMiwgbzIpOwogICAgICBpZiAoCiAgICAgICAgYzEuaG91ciA9PT0gYzIuaG91ciAmJgogICAgICAgIGMxLm1pbnV0ZSA9PT0gYzIubWludXRlICYmCiAgICAgICAgYzEuc2Vjb25kID09PSBjMi5zZWNvbmQgJiYKICAgICAgICBjMS5taWxsaXNlY29uZCA9PT0gYzIubWlsbGlzZWNvbmQKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFtjbG9uZSh0aGlzLCB7IHRzOiB0czEgfSksIGNsb25lKHRoaXMsIHsgdHM6IHRzMiB9KV07CiAgICAgIH0KICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5MZWFwWWVhcigpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJbk1vbnRoKCkgewogICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgZGF5c0luWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1MwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZwogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKAogICAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLAogICAgICAgIG9wdHMKICAgICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7CiAgICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTsKICAgIH0KCiAgICAvLyBUUkFOU0ZPUk0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvTG9jYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHsKICAgICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpOwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7CiAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkgewogICAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpOwogICAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRMb2NhbGUobG9jYWxlKSB7CiAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwKICAgICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSwKICAgICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSwKICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCwKICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIKICAgICAgICApOwogICAgICB9CgogICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgIH0KCiAgICAgIGxldCBtaXhlZDsKICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7CiAgICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07CgogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSwKICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAogICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXJ0T2YodW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG8gPSB7fSwKICAgICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7CiAgICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHsKICAgICAgICBjYXNlICJ5ZWFycyI6CiAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAicXVhcnRlcnMiOgogICAgICAgIGNhc2UgIm1vbnRocyI6CiAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIndlZWtzIjoKICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgIG8ubWludXRlID0gMDsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICBvLnNlY29uZCA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInNlY29uZHMiOgogICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKQogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJ3ZWVrcyIpIHsKICAgICAgICBvLndlZWtkYXkgPSAxOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJxdWFydGVycyIpIHsKICAgICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTsKICAgICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5zZXQobyk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBlbmRPZih1bml0KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KQogICAgICAgICAgICAuc3RhcnRPZih1bml0KQogICAgICAgICAgICAubWludXMoMSkKICAgICAgICA6IHRoaXM7CiAgICB9CgogICAgLy8gT1VUUFVUCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkKICAgICAgICA6IElOVkFMSUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMLCB7IGxvY2FsZTogJ2ZyJyB9KTsgLy89PiAnMjggYW/Du3QgMjAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHMKICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gWwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF0KICAgICAqLwogICAgdG9Mb2NhbGVQYXJ0cyhvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZAogICAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKQogICAgICAgIDogW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT1mYWxzZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oewogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgaW5jbHVkZU9mZnNldCA9IHRydWUsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gImV4dGVuZGVkIjsKCiAgICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7CiAgICAgIGMgKz0gIlQiOwogICAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7CiAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1JwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoeyBmb3JtYXQgPSAiZXh0ZW5kZWQiIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gImV4dGVuZGVkIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAia2tray0nVydXVy1jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKHsKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/ICJUIiA6ICIiOwogICAgICByZXR1cm4gKAogICAgICAgIGMgKwogICAgICAgIHRvSVNPVGltZSgKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBmb3JtYXQgPT09ICJleHRlbmRlZCIsCiAgICAgICAgICBzdXBwcmVzc1NlY29uZHMsCiAgICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBleHRlbmRlZFpvbmUKICAgICAgICApCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1JGQzI4MjIoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaIiwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULgogICAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLgogICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjEKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9IVFRQKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCciKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMRGF0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkgewogICAgICBsZXQgZm10ID0gIkhIOm1tOnNzLlNTUyI7CgogICAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkgewogICAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHsKICAgICAgICAgIGZtdCArPSAiICI7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNsdWRlWm9uZSkgewogICAgICAgICAgZm10ICs9ICJ6IjsKICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICAgIGZtdCArPSAiWloiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b01pbGxpcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvU2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvVW5peEludGVnZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSlNPTigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0JTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLgogICAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3QKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKCiAgICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9OwoKICAgICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykgewogICAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyOwogICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlOwogICAgICB9CiAgICAgIHJldHVybiBiYXNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0pTRGF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pOwogICAgfQoKICAgIC8vIENPTVBBUkUKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUKICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTsKICAgICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfQogICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfQogICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICB9CgogICAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07CgogICAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksCiAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsCiAgICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy4KICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn0KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmZOb3codW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWwKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bnRpbChvdGhlckRhdGVUaW1lKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuCiAgICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLgogICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CgogICAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pOwogICAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC4KICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMuaXNWYWxpZCAmJgogICAgICAgIG90aGVyLmlzVmFsaWQgJiYKICAgICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmCiAgICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJgogICAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyAiaW4gdHdvIGRheXMiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXIKICAgICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9ImxvbmciXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSAibG9uZyIsICJzaG9ydCIsIG9yICJuYXJyb3ciCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+ICJpbiAxIGRheSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogImZyIiB9KSAvLz0+ICJkYW5zIDIzIGhldXJlcyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gIjEuNSBkYXlzIGFnbyIKICAgICAqLwogICAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLAogICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7CiAgICAgIGxldCB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0OwogICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7CiAgICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7CiAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwgewogICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgdW5pdHMsCiAgICAgICAgdW5pdCwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiAieWVhcnMiLCAicXVhcnRlcnMiLCAibW9udGhzIiwgIndlZWtzIiwgb3IgImRheXMiCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICJ0b21vcnJvdyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiIm1hw7FhbmEiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICB1bml0czogWyJ5ZWFycyIsICJtb250aHMiLCAiZGF5cyJdLAogICAgICAgIGNhbGVuZGFyeTogdHJ1ZSwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudAogICAgICovCiAgICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpOwogICAgfQoKICAgIC8vIE1JU0MKCiAgICAvKioKICAgICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KCkKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pOwogICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZAogICAgICovCiAgICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7CiAgICB9CgogICAgLy8gRk9STUFUIFBSRVNFVFMKCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4MwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURV9TSE9SVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7CiAgICAgIHJldHVybiBEQVRFX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURVRJTUVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUzsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7CiAgICAgIHJldHVybiBkYXRlVGltZWlzaDsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSAib2JqZWN0IikgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoCiAgICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWAKICAgICAgKTsKICAgIH0KICB9CgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gUXVlcnkgU2V0dGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLwogIGNvbnN0IERFRkFVTFRfUVVFUllfU0VUVElOR1MgPSB7CiAgICAgIHJlbmRlck51bGxBczogIlxcLSIsCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLAogICAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSwKICAgICAgdGFza0NvbXBsZXRpb25UZXh0OiAiY29tcGxldGlvbiIsCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLAogICAgICByZWN1cnNpdmVTdWJUYXNrQ29tcGxldGlvbjogZmFsc2UsCiAgICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLAogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwKICAgICAgcmVmcmVzaEludGVydmFsOiAyNTAwLAogICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLAogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwKICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDQsCiAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLAogICAgICBzaG93UmVzdWx0Q291bnQ6IHRydWUsCiAgfTsKICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsKICAgICAgYWxsb3dIdG1sOiB0cnVlLAogIH07CiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovCiAgKHsKICAgICAgLi4uREVGQVVMVF9RVUVSWV9TRVRUSU5HUywKICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsCiAgICAgIC4uLnsKICAgICAgICAgIGlubGluZVF1ZXJ5UHJlZml4OiAiPSIsCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLAogICAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSwKICAgICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiB0cnVlLAogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsCiAgICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwKICAgICAgICAgIGRhdGF2aWV3SnNLZXl3b3JkOiAiZGF0YXZpZXdqcyIsCiAgICAgIH0sCiAgfSk7CgogIC8qKiBGdW5jdGlvbmFsIHJldHVybiB0eXBlIGZvciBlcnJvciBoYW5kbGluZy4gKi8KICBjbGFzcyBTdWNjZXNzIHsKICAgICAgY29uc3RydWN0b3IodmFsdWUpIHsKICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCA9IHRydWU7CiAgICAgIH0KICAgICAgbWFwKGYpIHsKICAgICAgICAgIHJldHVybiBuZXcgU3VjY2VzcyhmKHRoaXMudmFsdWUpKTsKICAgICAgfQogICAgICBmbGF0TWFwKGYpIHsKICAgICAgICAgIHJldHVybiBmKHRoaXMudmFsdWUpOwogICAgICB9CiAgICAgIG1hcEVycihmKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBiaW1hcChzdWNjLCBfZmFpbCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFwKHN1Y2MpOwogICAgICB9CiAgICAgIG9yRWxzZShfdmFsdWUpIHsKICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOwogICAgICB9CiAgICAgIGNhc3QoKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBvckVsc2VUaHJvdyhfbWVzc2FnZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgIH0KICB9CiAgLyoqIEZ1bmN0aW9uYWwgcmV0dXJuIHR5cGUgZm9yIGVycm9yIGhhbmRsaW5nLiAqLwogIGNsYXNzIEZhaWx1cmUgewogICAgICBjb25zdHJ1Y3RvcihlcnJvcikgewogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgIH0KICAgICAgbWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBmbGF0TWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBtYXBFcnIoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpOwogICAgICB9CiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXBFcnIoZmFpbCk7CiAgICAgIH0KICAgICAgb3JFbHNlKHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsKICAgICAgICAgIGlmIChtZXNzYWdlKQogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyB0aGlzLmVycm9yKTsKICAgICAgfQogIH0KICAvKiogTW9uYWRpYyAnUmVzdWx0JyB0eXBlIHdoaWNoIGVuY2Fwc3VsYXRlcyB3aGV0aGVyIGEgcHJvY2VkdXJlIHN1Y2NlZWRlZCBvciBmYWlsZWQsIGFzIHdlbGwgYXMgaXQncyByZXR1cm4gdmFsdWUuICovCiAgdmFyIFJlc3VsdDsKICAoZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAvKiogQ29uc3RydWN0IGEgbmV3IHN1Y2Nlc3MgcmVzdWx0IHdyYXBwaW5nIHRoZSBnaXZlbiB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gc3VjY2Vzcyh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsKICAgICAgfQogICAgICBSZXN1bHQuc3VjY2VzcyA9IHN1Y2Nlc3M7CiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovCiAgICAgIGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShlcnJvcik7CiAgICAgIH0KICAgICAgUmVzdWx0LmZhaWx1cmUgPSBmYWlsdXJlOwogICAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsKICAgICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICAgaWYgKHNlY29uZC5zdWNjZXNzZnVsKQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgUmVzdWx0LmZsYXRNYXAyID0gZmxhdE1hcDI7CiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8KICAgICAgZnVuY3Rpb24gbWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7CiAgICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpOwogICAgICB9CiAgICAgIFJlc3VsdC5tYXAyID0gbWFwMjsKICB9KShSZXN1bHQgfHwgKFJlc3VsdCA9IHt9KSk7CgogIHZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKICB2YXIgcGFyc2ltbW9uX3VtZF9taW4gPSB7ZXhwb3J0czoge319OwoKICBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzOwoKICAoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIAkhZnVuY3Rpb24obix0KXttb2R1bGUuZXhwb3J0cz10KCk7fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjpjb21tb25qc0dsb2JhbCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtmdW5jdGlvbiByKGUpe2lmKHRbZV0pcmV0dXJuIHRbZV0uZXhwb3J0czt2YXIgdT10W2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHUuZXhwb3J0cyx1LHUuZXhwb3J0cyxyKSx1Lmw9ITAsdS5leHBvcnRzfXJldHVybiByLm09bixyLmM9dCxyLmQ9ZnVuY3Rpb24obix0LGUpe3IubyhuLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobix0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pO30sci5yPWZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt9LHIubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihuLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KX0sci5wPSIiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1uO312YXIgdT1lLnByb3RvdHlwZTtmdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciByPTA7cjxuO3IrKyl0KHIpO31mdW5jdGlvbiBpKG4sdCxyKXtyZXR1cm4gZnVuY3Rpb24obix0KXtvKHQubGVuZ3RoLGZ1bmN0aW9uKHIpe24odFtyXSxyLHQpO30pO30oZnVuY3Rpb24ocixlLHUpe3Q9bih0LHIsZSx1KTt9LHIpLHR9ZnVuY3Rpb24gYShuLHQpe3JldHVybiBpKGZ1bmN0aW9uKHQscixlLHUpe3JldHVybiB0LmNvbmNhdChbbihyLGUsdSldKX0sW10sdCl9ZnVuY3Rpb24gZihuLHQpe3ZhciByPXt2OjAsYnVmOnR9O3JldHVybiBvKG4sZnVuY3Rpb24oKXt2YXIgbjtyPXt2OnIudjw8MXwobj1yLmJ1ZixuWzBdPj43KSxidWY6ZnVuY3Rpb24obil7dmFyIHQ9aShmdW5jdGlvbihuLHQscixlKXtyZXR1cm4gbi5jb25jYXQocj09PWUubGVuZ3RoLTE/QnVmZmVyLmZyb20oW3QsMF0pLnJlYWRVSW50MTZCRSgwKTplLnJlYWRVSW50MTZCRShyKSl9LFtdLG4pO3JldHVybiBCdWZmZXIuZnJvbShhKGZ1bmN0aW9uKG4pe3JldHVybiAobjw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfTt9KSxyfWZ1bmN0aW9uIGMoKXtyZXR1cm4gInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIgZ2xvYmFsIGRvZXMgbm90IGV4aXN0OyBwbGVhc2UgdXNlIHdlYnBhY2sgaWYgeW91IG5lZWQgdG8gcGFyc2UgQnVmZmVycyBpbiB0aGUgYnJvd3Nlci4iKX1mdW5jdGlvbiBsKG4pe3MoKTt2YXIgdD1pKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCxuKTtpZih0JTghPTApdGhyb3cgbmV3IEVycm9yKCJUaGUgYml0cyBbIituLmpvaW4oIiwgIikrIl0gYWRkIHVwIHRvICIrdCsiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOCIpO3ZhciByLHU9dC84LG89KHI9ZnVuY3Rpb24obil7cmV0dXJuIG4+NDh9LGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnx8KHIodCk/dDpuKX0sbnVsbCxuKSk7aWYobyl0aHJvdyBuZXcgRXJyb3IobysiIGJpdCByYW5nZSByZXF1ZXN0ZWQgZXhjZWVkcyA0OCBiaXQgKDYgYnl0ZSkgTnVtYmVyIG1heC4iKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKSsiIGJ5dGVzIik6YihlLGkoZnVuY3Rpb24obix0KXt2YXIgcj1mKHQsbi5idWYpO3JldHVybiB7Y29sbDpuLmNvbGwuY29uY2F0KHIudiksYnVmOnIuYnVmfX0se2NvbGw6W10sYnVmOnQuc2xpY2UocixlKX0sbikuY29sbCl9KX1mdW5jdGlvbiBoKG4sdCl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHMoKSxlK3Q+ci5sZW5ndGg/eChlLHQrIiBieXRlcyBmb3IgIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoIm51bWJlciIhPXR5cGVvZihyPXQpfHxNYXRoLmZsb29yKHIpIT09cnx8dDwwfHx0PjYpdGhyb3cgbmV3IEVycm9yKG4rIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uIik7dmFyIHI7fWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoInVpbnRCRSIsbiksaCgidWludEJFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoInVpbnRMRSIsbiksaCgidWludExFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoImludEJFIixuKSxoKCJpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoImludExFIixuKSxoKCJpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuICJbb2JqZWN0IEFycmF5XSI9PT17fS50b1N0cmluZy5jYWxsKG4pfWZ1bmN0aW9uIHcobil7cmV0dXJuIGMoKSYmQnVmZmVyLmlzQnVmZmVyKG4pfWZ1bmN0aW9uIGIobix0KXtyZXR1cm4ge3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQ7cmV0dXJuIGUuX3N1cHBvcnRzU2V0PW4sbn0oKSYmQXJyYXkuZnJvbSl7Zm9yKHZhciByPW5ldyBTZXQobiksdT0wO3U8dC5sZW5ndGg7dSsrKXIuYWRkKHRbdV0pO3ZhciBvPUFycmF5LmZyb20ocik7cmV0dXJuIG8uc29ydCgpLG99Zm9yKHZhciBpPXt9LGE9MDthPG4ubGVuZ3RoO2ErKylpW25bYV1dPSEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGg7ZisrKWlbdFtmXV09ITA7dmFyIGM9W107Zm9yKHZhciBzIGluIGkpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJmMucHVzaChzKTtyZXR1cm4gYy5zb3J0KCksY30obi5leHBlY3RlZCx0LmV4cGVjdGVkKTp0LmV4cGVjdGVkO3JldHVybiB7c3RhdHVzOm4uc3RhdHVzLGluZGV4Om4uaW5kZXgsdmFsdWU6bi52YWx1ZSxmdXJ0aGVzdDp0LmZ1cnRoZXN0LGV4cGVjdGVkOnJ9fXZhciBqPXt9O2Z1bmN0aW9uIFMobix0KXtpZih3KG4pKXJldHVybiB7b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfSgiXG4iPT09bi5jaGFyQXQoaSl8fCJcciI9PT1uLmNoYXJBdChpKSYmIlxuIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS07fXZhciBhPWUrdSxmPXQtbztyZXR1cm4gclt0XT17bGluZTphLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTphKzEsY29sdW1uOmYrMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHBhcnNlcjogIituKX1mdW5jdGlvbiBMKG4sdCl7cmV0dXJuICJzdHJpbmciPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgbnVtYmVyOiAiK24pfWZ1bmN0aW9uIGsobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBmdW5jdGlvbjogIituKX1mdW5jdGlvbiBQKG4pe2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZzogIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej0iICAiO2Z1bmN0aW9uIFIobix0KXtyZXR1cm4gbmV3IEFycmF5KHQrMSkuam9pbihuKX1mdW5jdGlvbiBVKG4sdCxyKXt2YXIgZT10LW4ubGVuZ3RoO3JldHVybiBlPD0wP246UihyLGUpK259ZnVuY3Rpb24gVyhuLHQscixlKXtyZXR1cm4ge2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuICJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQiO2lmKHcobikpe3ZhciBoPXMtcyVJLHA9cy1oLGQ9VyhoLEYsTStJLG4ubGVuZ3RoKSx2PWEoZnVuY3Rpb24obil7cmV0dXJuIGEoZnVuY3Rpb24obil7cmV0dXJuIFUobi50b1N0cmluZygxNiksMiwiMCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybiBbbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9aC9JLHI9MypwLHA+PTQmJihyKz0xKSxsPTIsdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oIiAiKTpuLnNsaWNlKDAsNCkuam9pbigiICIpKyIgICIrbi5zbGljZSg0KS5qb2luKCIgIil9LHYpLChmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKTt9ZWxzZSB7dmFyIGc9bi5zcGxpdCgvXHJcbnxbXG5cclx1MjAyOFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksZj1vLnRvLnRvU3RyaW5nKCkubGVuZ3RoO312YXIgbT1lLW8uZnJvbTtyZXR1cm4gdyhuKSYmKGY9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihmPTIpLGkoZnVuY3Rpb24odCxlLHUpe3ZhciBpLGE9dT09PW0sYz1hPyI+ICI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsIjAiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGYsIiAiKSxbXS5jb25jYXQodCxbYytpKyIgfCAiK2VdLGE/W3orUigiICIsZikrIiB8ICIrVSgiIixyLCIgIikrUigiXiIsbCldOltdKX0sW10sdSkuam9pbigiXG4iKX1mdW5jdGlvbiBOKG4sdCl7cmV0dXJuIFsiXG4iLCItLSBQQVJTSU5HIEZBSUxFRCAiK1IoIi0iLDUwKSwiXG5cbiIsRChuLHQpLCJcblxuIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD8iRXhwZWN0ZWQ6XG5cbiIrclswXToiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxuXG4iK3Iuam9pbigiLCAiKSksIlxuIl0uam9pbigiIik7dmFyIHI7fWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/ImciOiIiLG4uaWdub3JlQ2FzZT8iaSI6IiIsbi5tdWx0aWxpbmU/Im0iOiIiLG4udW5pY29kZT8idSI6IiIsbi5zdGlja3k/InkiOiIiXS5qb2luKCIiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4O31yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTt2YXIgdD1uLnBvcCgpO3JldHVybiBrKHQpLEMuYXBwbHkobnVsbCxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkobnVsbCxuKX0pfWZ1bmN0aW9uIFQoKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aDtpZigwPT09dClyZXR1cm4gWSgiemVybyBhbHRlcm5hdGVzIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBbbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PSInIituKyInIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKCJub3QgYSByZWdleHA6ICIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZigiaSIhPT1lJiYibSIhPT1lJiYidSIhPT1lJiYicyIhPT1lKXRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgIicrZSsnIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cCgiXig/OiIrbi5zb3VyY2UrIikiLEcobikpfShuKSx1PSIiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gIitvLmxlbmd0aCsiKSBpbiAiK3UpfXJldHVybiB4KGUsdSl9KX1mdW5jdGlvbiBYKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIGIocixuKX0pfWZ1bmN0aW9uIFkobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4geChyLG4pfSl9ZnVuY3Rpb24gWihuKXtpZih5KG4pKXJldHVybiBlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQscik7cmV0dXJuIGUuaW5kZXg9cixlLnZhbHVlPSIiLGV9KTtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gJChuKXtyZXR1cm4gXyhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQsciksdT10LnNsaWNlKHIsZS5pbmRleCk7cmV0dXJuIGUuc3RhdHVzP3gociwnbm90ICInK3UrJyInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngociwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyAiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWSgiZmFudGFzeS1sYW5kL2VtcHR5Iil9dS5wYXJzZT1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcigiLnBhcnNlIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzdHJpbmcgb3IgQnVmZmVyIGFzIGl0cyBhcmd1bWVudCIpO3ZhciB0LHI9dGhpcy5za2lwKGFuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT0iUGFyc2ltbW9uRXJyb3IiLGUucmVzdWx0PXQsZX0sdS5hc3NlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpcy5jaGFpbihmdW5jdGlvbihyKXtyZXR1cm4gbihyKT9YKHIpOlkodCl9KX0sdS5vcj1mdW5jdGlvbihuKXtyZXR1cm4gVCh0aGlzLG4pfSx1LnRyaW09ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMud3JhcChuLG4pfSx1LndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gSihuLHRoaXMsdCxmdW5jdGlvbihuLHQpe3JldHVybiB0fSl9LHUudGhydT1mdW5jdGlvbihuKXtyZXR1cm4gbih0aGlzKX0sdS50aGVuPWZ1bmN0aW9uKG4pe3JldHVybiBfKG4pLEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19KX0sdS5tYW55PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSx1PXZvaWQgMDs7KXtpZighKHU9QihuLl8odCxyKSx1KSkuc3RhdHVzKXJldHVybiBCKGIocixlKSx1KTtpZihyPT09dS5pbmRleCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZSIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSk7fX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXk6ICIrbil9KHQpLHQubGVuZ3RoKXtQKHRbMF0pO2Zvcih2YXIgcj10WzBdLGU9MTtlPHQubGVuZ3RoO2UrKylQKHRbZV0pLHIrPW4rdFtlXTtyZXR1cm4gcn1yZXR1cm4gIiJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKCIiKX0sdS50aW1lcz1mdW5jdGlvbihuLHQpe3ZhciByPXRoaXM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9biksTyhuKSxPKHQpLGUoZnVuY3Rpb24oZSx1KXtmb3IodmFyIG89W10saT12b2lkIDAsYT12b2lkIDAsZj0wO2Y8bjtmKz0xKXtpZihhPUIoaT1yLl8oZSx1KSxhKSwhaS5zdGF0dXMpcmV0dXJuIGE7dT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTt9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJuIHtzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm4ge25hbWU6bix2YWx1ZTpyLHN0YXJ0OnQsZW5kOmV9fSl9LHUuc2VwQnk9ZnVuY3Rpb24obil7cmV0dXJuIFYodGhpcyxuKX0sdS5zZXBCeTE9ZnVuY3Rpb24obil7cmV0dXJuIEgodGhpcyxuKX0sdS5sb29rYWhlYWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcChaKG4pKX0sdS5ub3RGb2xsb3dlZEJ5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoJChuKSl9LHUuZGVzYz1mdW5jdGlvbihuKXtFKG4pfHwobj1bbl0pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXN8fCh1LmV4cGVjdGVkPW4pLHV9KX0sdS5mYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vcihYKG4pKX0sdS5hcD1mdW5jdGlvbihuKXtyZXR1cm4gSihuLHRoaXMsZnVuY3Rpb24obix0KXtyZXR1cm4gbih0KX0pfSx1LmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihuKHUudmFsdWUpLl8ocix1LmluZGV4KSx1KTp1fSl9LHUuY29uY2F0PXUub3IsdS5lbXB0eT1ybix1Lm9mPVgsdVsiZmFudGFzeS1sYW5kL2FwIl09dS5hcCx1WyJmYW50YXN5LWxhbmQvY2hhaW4iXT11LmNoYWluLHVbImZhbnRhc3ktbGFuZC9jb25jYXQiXT11LmNvbmNhdCx1WyJmYW50YXN5LWxhbmQvZW1wdHkiXT11LmVtcHR5LHVbImZhbnRhc3ktbGFuZC9vZiJdPXUub2YsdVsiZmFudGFzeS1sYW5kL21hcCJdPXUubWFwO3ZhciBlbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIodCxTKG4sdCkpfSksdW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0Pj1uLmxlbmd0aD94KHQsImFueSBjaGFyYWN0ZXIvYnl0ZSIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LCJFT0YiKTpiKHQsbnVsbCl9KSxmbj1RKC9bMC05XS8pLmRlc2MoImEgZGlnaXQiKSxjbj1RKC9bMC05XSovKS5kZXNjKCJvcHRpb25hbCBkaWdpdHMiKSxzbj1RKC9bYS16XS9pKS5kZXNjKCJhIGxldHRlciIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKCJvcHRpb25hbCBsZXR0ZXJzIiksaG49USgvXHMqLykuZGVzYygib3B0aW9uYWwgd2hpdGVzcGFjZSIpLHBuPVEoL1xzKy8pLmRlc2MoIndoaXRlc3BhY2UiKSxkbj1LKCJcciIpLHZuPUsoIlxuIiksZ249SygiXHJcbiIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoIm5ld2xpbmUiKSx5bj1UKG1uLGFuKTtlLmFsbD1vbixlLmFsdD1ULGUuYW55PXVuLGUuY3I9ZG4sZS5jcmVhdGVMYW5ndWFnZT1mdW5jdGlvbihuKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmZnVuY3Rpb24ocil7dFtyXT10bihmdW5jdGlvbigpe3JldHVybiBuW3JdKHQpfSk7fShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoIm5vbmUgb2YgJyIrbisiJyIpfSxlLm5vdEZvbGxvd2VkQnk9JCxlLm9mPVgsZS5vbmVPZj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5zcGxpdCgiIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09IiciK3Rbcl0rIiciO3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPj0wfSkuZGVzYyh0KX0sZS5vcHRXaGl0ZXNwYWNlPWhuLGUuUGFyc2VyPWUsZS5yYW5nZT1mdW5jdGlvbihuLHQpe3JldHVybiBubihmdW5jdGlvbihyKXtyZXR1cm4gbjw9ciYmcjw9dH0pLmRlc2MobisiLSIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBhWzBdJiZ5KGFbMV0pKXt2YXIgZj1hWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGYpKXRocm93IG5ldyBFcnJvcigic2VxT2JqOiBkdXBsaWNhdGUga2V5ICIrZik7dFtmXT0hMCxyKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLiIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm8iKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGEsZjtpZihFKHVbaV0pPyhhPXVbaV1bMF0sZj11W2ldWzFdKTooYT1udWxsLGY9dVtpXSksIShyPUIoZi5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjthJiYoZVthXT1yLnZhbHVlKSx0PXIuaW5kZXg7fXJldHVybiBCKGIodCxlKSxyKX0pfSxlLnN0cmluZz1LLGUuc3VjY2VlZD1YLGUudGFrZVdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cjtlPHQubGVuZ3RoJiZuKEwodCxlKSk7KWUrKztyZXR1cm4gYihlLHQuc2xpY2UocixlKSl9KX0sZS50ZXN0PW5uLGUud2hpdGVzcGFjZT1wbixlWyJmYW50YXN5LWxhbmQvZW1wdHkiXT1ybixlWyJmYW50YXN5LWxhbmQvb2YiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWEoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJbIitlLmpvaW4oIiwgIikrIl0gc2hvdWxkIGJlIGxlbmd0aCAyLCBnb3QgbGVuZ3RoICIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiAiK2VbMF0pO3JldHVybiB0W2VbMF1dPSEwLHIrKyxlfXJldHVybiBPKG4pLFtudWxsLG5dfSxuKTtpZihyPDEpdGhyb3cgbmV3IEVycm9yKCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFsiK24uam9pbigiLCAiKSsiXSIpO3ZhciB1PWEoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19LGUpO3JldHVybiBsKGEoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19LGUpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbCE9PXRbMF0mJihuW3RbMF1dPXRbMV0pLG59LHt9LGEoZnVuY3Rpb24odCxyKXtyZXR1cm4gW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcigiVmFsdWUgc3BlY2lmaWVkIHRvIGJ5dGUgY29uc3RydWN0b3IgKCIrbisiPTB4IituLnRvU3RyaW5nKDE2KSsiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLiIpO3ZhciB0PShuPjE1PyIweCI6IjB4MCIpK24udG9TdHJpbmcoMTYpO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9TChyLGUpO3JldHVybiB1PT09bj9iKGUrMSx1KTp4KGUsdCl9KX0sYnVmZmVyOmZ1bmN0aW9uKG4pe3JldHVybiBoKCJidWZmZXIiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKCJzdHJpbmciLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOmgoImZsb2F0QkUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRCRSgwKX0pLGZsb2F0TEU6aCgiZmxvYXRMRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aCgiZG91YmxlQkUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpoKCJkb3VibGVMRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVMRSgwKX0pfSxuLmV4cG9ydHM9ZTt9XSl9KTsgCiAgfSAocGFyc2ltbW9uX3VtZF9taW4sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMpKTsKCiAgdmFyIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cyA9IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHM7CgogIHZhciBlbW9qaVJlZ2V4ID0gKCkgPT4gewogIAkvLyBodHRwczovL210aHMuYmUvZW1vamkKICAJcmV0dXJuIC9bIyowLTldXHVGRTBGP1x1MjBFM3xbXHhBOVx4QUVcdTIwM0NcdTIwNDlcdTIxMjJcdTIxMzlcdTIxOTQtXHUyMTk5XHUyMUE5XHUyMUFBXHUyMzFBXHUyMzFCXHUyMzI4XHUyM0NGXHUyM0VELVx1MjNFRlx1MjNGMVx1MjNGMlx1MjNGOC1cdTIzRkFcdTI0QzJcdTI1QUFcdTI1QUJcdTI1QjZcdTI1QzBcdTI1RkJcdTI1RkNcdTI1RkVcdTI2MDAtXHUyNjA0XHUyNjBFXHUyNjExXHUyNjE0XHUyNjE1XHUyNjE4XHUyNjIwXHUyNjIyXHUyNjIzXHUyNjI2XHUyNjJBXHUyNjJFXHUyNjJGXHUyNjM4LVx1MjYzQVx1MjY0MFx1MjY0Mlx1MjY0OC1cdTI2NTNcdTI2NUZcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0VcdTI2N0ZcdTI2OTJcdTI2OTQtXHUyNjk3XHUyNjk5XHUyNjlCXHUyNjlDXHUyNkEwXHUyNkE3XHUyNkFBXHUyNkIwXHUyNkIxXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM4XHUyNkNGXHUyNkQxXHUyNkQzXHUyNkU5XHUyNkYwLVx1MjZGNVx1MjZGN1x1MjZGOFx1MjZGQVx1MjcwMlx1MjcwOFx1MjcwOVx1MjcwRlx1MjcxMlx1MjcxNFx1MjcxNlx1MjcxRFx1MjcyMVx1MjczM1x1MjczNFx1Mjc0NFx1Mjc0N1x1Mjc1N1x1Mjc2M1x1MjdBMVx1MjkzNFx1MjkzNVx1MkIwNS1cdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldXHVGRTBGP3xbXHUyNjFEXHUyNzBDXHUyNzBEXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyNzBBXHUyNzBCXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNjkzXHUyNkExXHUyNkFCXHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkZEXHUyNzA1XHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCNTBdfFx1MjZGOSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1Mjc2NFx1RkUwRj8oPzpcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KSk/fFx1RDgzQyg/OltcdURDMDRcdURENzBcdURENzFcdUREN0VcdUREN0ZcdURFMDJcdURFMzdcdURGMjFcdURGMjQtXHVERjJDXHVERjM2XHVERjdEXHVERjk2XHVERjk3XHVERjk5LVx1REY5Qlx1REY5RVx1REY5Rlx1REZDRFx1REZDRVx1REZENC1cdURGREZcdURGRjVcdURGRjddXHVGRTBGP3xbXHVERjg1XHVERkMyXHVERkM3XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURGQzNcdURGQzRcdURGQ0FdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERkNCXHVERkNDXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVERTAxXHVERTFBXHVERTJGXHVERTMyLVx1REUzNlx1REUzOC1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIwXHVERjJELVx1REYzNVx1REYzNy1cdURGN0NcdURGN0UtXHVERjg0XHVERjg2LVx1REY5M1x1REZBMC1cdURGQzFcdURGQzVcdURGQzZcdURGQzhcdURGQzlcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGOC1cdURGRkZdfFx1RERFNlx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl18XHVEREU3XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl18XHVEREU4XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERUVcdURERjAtXHVEREY1XHVEREY3XHVEREZBLVx1RERGRl18XHVEREU5XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl18XHVEREVBXHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRFx1RERGNy1cdURERkFdfFx1RERFQlx1RDgzQ1tcdURERUUtXHVEREYwXHVEREYyXHVEREY0XHVEREY3XXxcdURERUNcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXXxcdURERURcdUQ4M0NbXHVEREYwXHVEREYyXHVEREYzXHVEREY3XHVEREY5XHVEREZBXXxcdURERUVcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XXxcdURERUZcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XXxcdURERjBcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl18XHVEREYxXHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXXxcdURERjJcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdfFx1RERGM1x1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXXxcdURERjRcdUQ4M0NcdURERjJ8XHVEREY1XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV18XHVEREY2XHVEODNDXHVEREU2fFx1RERGN1x1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdfFx1RERGOFx1RDgzQ1tcdURERTYtXHVEREVBXHVEREVDLVx1RERGNFx1RERGNy1cdURERjlcdURERkJcdURERkQtXHVEREZGXXxcdURERjlcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdfFx1RERGQVx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdfFx1RERGQlx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdfFx1RERGQ1x1RDgzQ1tcdURERUJcdURERjhdfFx1RERGRFx1RDgzQ1x1RERGMHxcdURERkVcdUQ4M0NbXHVEREVBXHVEREY5XXxcdURERkZcdUQ4M0NbXHVEREU2XHVEREYyXHVEREZDXXxcdURGRjNcdUZFMEY/KD86XHUyMDBEKD86XHUyNkE3XHVGRTBGP3xcdUQ4M0NcdURGMDgpKT98XHVERkY0KD86XHUyMDBEXHUyNjIwXHVGRTBGP3xcdURCNDBcdURDNjdcdURCNDBcdURDNjJcdURCNDAoPzpcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjd8XHVEQzczXHVEQjQwXHVEQzYzXHVEQjQwXHVEQzc0fFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3MylcdURCNDBcdURDN0YpPyl8XHVEODNEKD86W1x1REMwOFx1REMyNl0oPzpcdTIwMERcdTJCMUIpP3xbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM11cdUZFMEY/fFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzZCLVx1REM2RFx1REM3Mlx1REM3NC1cdURDNzZcdURDNzhcdURDN0NcdURDODNcdURDODVcdURDOEZcdURDOTFcdURDQUFcdUREN0FcdUREOTVcdUREOTZcdURFNENcdURFNEZcdURFQzBcdURFQ0NdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQ3NFx1REQ5MF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REMwMC1cdURDMDdcdURDMDktXHVEQzE0XHVEQzE2LVx1REMyNVx1REMyNy1cdURDM0FcdURDM0MtXHVEQzNFXHVEQzQwXHVEQzQ0XHVEQzQ1XHVEQzUxLVx1REM2NVx1REM2QVx1REM3OS1cdURDN0JcdURDN0QtXHVEQzgwXHVEQzg0XHVEQzg4LVx1REM4RVx1REM5MFx1REM5Mi1cdURDQTlcdURDQUItXHVEQ0ZDXHVEQ0ZGLVx1REQzRFx1REQ0Qi1cdURENEVcdURENTAtXHVERDY3XHVEREE0XHVEREZCLVx1REUyRFx1REUyRi1cdURFMzRcdURFMzctXHVERTQ0XHVERTQ4LVx1REU0QVx1REU4MC1cdURFQTJcdURFQTQtXHVERUIzXHVERUI3LVx1REVCRlx1REVDMS1cdURFQzVcdURFRDAtXHVERUQyXHVERUQ1LVx1REVEN1x1REVEQy1cdURFREZcdURFRUJcdURFRUNcdURFRjQtXHVERUZDXHVERkUwLVx1REZFQlx1REZGMF18XHVEQzE1KD86XHUyMDBEXHVEODNFXHVEREJBKT98XHVEQzNCKD86XHUyMDBEXHUyNzQ0XHVGRTBGPyk/fFx1REM0MVx1RkUwRj8oPzpcdTIwMERcdUQ4M0RcdURERThcdUZFMEY/KT98XHVEQzY4KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OHxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzY5KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1tcdURDNjhcdURDNjldfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRCg/OltcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT98XHVEQzY5XHUyMDBEXHVEODNEKD86XHVEQzY2KD86XHUyMDBEXHVEODNEXHVEQzY2KT98XHVEQzY3KD86XHUyMDBEXHVEODNEW1x1REM2Nlx1REM2N10pPykpfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzZGKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERDc1KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERTJFKD86XHUyMDBEXHVEODNEXHVEQ0E4KT98XHVERTM1KD86XHUyMDBEXHVEODNEXHVEQ0FCKT98XHVERTM2KD86XHUyMDBEXHVEODNDXHVERjJCXHVGRTBGPyk/KXxcdUQ4M0UoPzpbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGOF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1RERERVx1RERERl0oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDBEXHVERDBFXHVERDEwLVx1REQxN1x1REQyMC1cdUREMjVcdUREMjctXHVERDJGXHVERDNBXHVERDNGLVx1REQ0NVx1REQ0Ny1cdURENzZcdURENzgtXHVEREI0XHVEREI3XHVEREJBXHVEREJDLVx1RERDQ1x1REREMFx1RERFMC1cdURERkZcdURFNzAtXHVERTdDXHVERTgwLVx1REU4OFx1REU5MC1cdURFQkRcdURFQkYtXHVERUMyXHVERUNFLVx1REVEQlx1REVFMC1cdURFRThdfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pL2c7CiAgfTsKCiAgLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cikgewogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQogICAgICAgICAgcmV0dXJuIGR1cjsKICAgICAgcmV0dXJuIGR1ci5zaGlmdFRvQWxsKCkubm9ybWFsaXplKCk7CiAgfQogIC8qKiBTdHJpcCB0aGUgdGltZSBjb21wb25lbnRzIG9mIGEgZGF0ZSB0aW1lIG9iamVjdC4gKi8KICBmdW5jdGlvbiBzdHJpcFRpbWUoZHQpIHsKICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gZHQ7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsKICAgICAgICAgIHllYXI6IGR0LnllYXIsCiAgICAgICAgICBtb250aDogZHQubW9udGgsCiAgICAgICAgICBkYXk6IGR0LmRheSwKICAgICAgfSk7CiAgfQogIC8qKiBUcnkgdG8gZXh0cmFjdCBhIFlZWVlNTUREIGRhdGUgZnJvbSBhIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsKICAgICAgbGV0IGRhdGVNYXRjaCA9IC8oXGR7NH0pLShcZHsyfSktKFxkezJ9KS8uZXhlYyhzdHIpOwogICAgICBpZiAoIWRhdGVNYXRjaCkKICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsKICAgICAgaWYgKGRhdGVNYXRjaCkgewogICAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTsKICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOwogICAgICAgICAgbGV0IGRheSA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbM10pOwogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLwogIGZ1bmN0aW9uIGdldFBhcmVudEZvbGRlcihwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLnNwbGl0KCIvIikuc2xpY2UoMCwgLTEpLmpvaW4oIi8iKTsKICB9CiAgLyoqIEdldCB0aGUgInRpdGxlIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqLwogIGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoKSB7CiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpCiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCIubWQiKSkKICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOwogICAgICByZXR1cm4gcGF0aDsKICB9CiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovCiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGgpIHsKICAgICAgaWYgKCFwYXRoLmluY2x1ZGVzKCIuIikpCiAgICAgICAgICByZXR1cm4gIiI7CiAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCIuIikgKyAxKTsKICB9CiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RTdWJ0YWdzKHRhZykgewogICAgICBsZXQgcmVzdWx0ID0gW3RhZ107CiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgewogICAgICAgICAgdGFnID0gdGFnLnN1YnN0cmluZygwLCB0YWcubGFzdEluZGV4T2YoIi8iKSk7CiAgICAgICAgICByZXN1bHQucHVzaCh0YWcpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLwogIGNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSkubWFwKHN0ciA9PiBzdHIudG9Mb2NhbGVMb3dlckNhc2UoKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5qb2luKCIiKSk7CiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovCiAgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFyTmFtZShuYW1lKSB7CiAgICAgIHJldHVybiBWQVJfTkFNRV9DQU5PTklDQUxJWkVSLnRyeVBhcnNlKG5hbWUpOwogIH0KICBjb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXgoL1swLTlccHtMZXR0ZXJ9Xy1dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIiAiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHsKICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsKICB9KTsKICAvKioKICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcwogICAqIGhvdyBPYnNpZGlhbiBkb2VzIGl0J3Mgbm9ybWFsaXphdGlvbiwgY29sbGFwc2luZyByZXBlYXRlZCBzcGFjZXMgYW5kIHN0cmlwcGluZyBvdXQgY29udHJvbCBjaGFyYWN0ZXJzLgogICAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7CiAgICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpOwogIH0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLwogIGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEdXJhdGlvbihkdXIpIHsKICAgICAgZHVyID0gbm9ybWFsaXplRHVyYXRpb24oZHVyKTsKICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiCiAgICAgIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGR1ci50b09iamVjdCgpKS5maWx0ZXIoKFssIHF1YW50aXR5XSkgPT4gcXVhbnRpdHkgIT0gMCkpKTsKICAgICAgcmV0dXJuIGR1ci50b0h1bWFuKCk7CiAgfQoKICB2YXIgVmFsdWVzOwogIChmdW5jdGlvbiAoVmFsdWVzKSB7CiAgICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YWx1ZSBpbnRvIGEgcmVhc29uYWJsZSwgTWFya2Rvd24tZnJpZW5kbHkgc3RyaW5nIGlmIHBvc3NpYmxlLiAqLwogICAgICBmdW5jdGlvbiB0b1N0cmluZyhmaWVsZCwgc2V0dGluZyA9IERFRkFVTFRfUVVFUllfU0VUVElOR1MsIHJlY3Vyc2l2ZSA9IGZhbHNlKSB7CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7CiAgICAgICAgICBpZiAoIXdyYXBwZWQpCiAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAiIiArIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsKICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsKICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyI7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcChmID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKCIsICIpOwogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJdIjsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICByZXR1cm4gKCJ7ICIgKwogICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbigiLCAiKSArCiAgICAgICAgICAgICAgICAgICAgICAiIH0iKTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZWQudmFsdWUuc2Vjb25kID09IDAgJiYgd3JhcHBlZC52YWx1ZS5ob3VyID09IDAgJiYgd3JhcHBlZC52YWx1ZS5taW51dGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsKICAgICAgLyoqIFdyYXAgYSBsaXRlcmFsIHZhbHVlIHNvIHlvdSBjYW4gc3dpdGNoIG9uIGl0IGVhc2lseS4gKi8KICAgICAgZnVuY3Rpb24gd3JhcFZhbHVlKHZhbCkgewogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJudWxsIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic3RyaW5nIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRhdGUiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ3aWRnZXQiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJvYmplY3QiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOwogICAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqLwogICAgICBmdW5jdGlvbiBtYXBMZWF2ZXModmFsLCBmdW5jKSB7CiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMubWFwTGVhdmVzID0gbWFwTGVhdmVzOwogICAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGF2aWV3IHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIHZhciBfYSwgX2I7CiAgICAgICAgICAvLyBIYW5kbGUgdW5kZWZpbmVkL251bGxzIGZpcnN0LgogICAgICAgICAgaWYgKHZhbDEgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB2YWwxID0gbnVsbDsKICAgICAgICAgIGlmICh2YWwyID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgdmFsMiA9IG51bGw7CiAgICAgICAgICBpZiAodmFsMSA9PT0gbnVsbCAmJiB2YWwyID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgZWxzZSBpZiAodmFsMSA9PT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICBlbHNlIGlmICh2YWwyID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgLy8gQSBub24tbnVsbCB2YWx1ZSBub3cgd2hpY2ggd2UgY2FuIHdyYXAgJiBjb21wYXJlIG9uLgogICAgICAgICAgbGV0IHdyYXAxID0gd3JhcFZhbHVlKHZhbDEpOwogICAgICAgICAgbGV0IHdyYXAyID0gd3JhcFZhbHVlKHZhbDIpOwogICAgICAgICAgaWYgKHdyYXAxID09PSB1bmRlZmluZWQgJiYgd3JhcDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIGVsc2UgaWYgKHdyYXAxID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgZWxzZSBpZiAod3JhcDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgIC8vIFNob3J0LWNpcmN1aXQgb24gZGlmZmVyZW50IHR5cGVzIG9yIG9uIHJlZmVyZW5jZSBlcXVhbGl0eS4KICAgICAgICAgIGlmICh3cmFwMS50eXBlICE9IHdyYXAyLnR5cGUpCiAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnR5cGUubG9jYWxlQ29tcGFyZSh3cmFwMi50eXBlKTsKICAgICAgICAgIGlmICh3cmFwMS52YWx1ZSA9PT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBzd2l0Y2ggKHdyYXAxLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUubG9jYWxlQ29tcGFyZSh3cmFwMi52YWx1ZSk7CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlIDwgd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgIGNhc2UgIm51bGwiOgogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09IHdyYXAyLnZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA/IDEgOiAtMTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgbGV0IGxpbmsxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBsaW5rMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplID0gbGlua05vcm1hbGl6ZXIgIT09IG51bGwgJiYgbGlua05vcm1hbGl6ZXIgIT09IHZvaWQgMCA/IGxpbmtOb3JtYWxpemVyIDogKCh4KSA9PiB4KTsKICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgY29tcGFyZSBieSBmaWxlIG5hbWUgb3IgZGlzcGxheSwgc2luY2UgdGhhdCB3b3VsZCBicmVhayBsaW5rIGVxdWFsaXR5LiBDb21wYXJlIGJ5IHBhdGguCiAgICAgICAgICAgICAgICAgIGxldCBwYXRoQ29tcGFyZSA9IG5vcm1hbGl6ZShsaW5rMS5wYXRoKS5sb2NhbGVDb21wYXJlKG5vcm1hbGl6ZShsaW5rMi5wYXRoKSk7CiAgICAgICAgICAgICAgICAgIGlmIChwYXRoQ29tcGFyZSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhdGhDb21wYXJlOwogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgdHlwZS4KICAgICAgICAgICAgICAgICAgbGV0IHR5cGVDb21wYXJlID0gbGluazEudHlwZS5sb2NhbGVDb21wYXJlKGxpbmsyLnR5cGUpOwogICAgICAgICAgICAgICAgICBpZiAodHlwZUNvbXBhcmUgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlQ29tcGFyZTsKICAgICAgICAgICAgICAgICAgLy8gVGhlbiBjb21wYXJlIGJ5IHN1YnBhdGggZXhpc3RlbmNlLgogICAgICAgICAgICAgICAgICBpZiAobGluazEuc3VicGF0aCAmJiAhbGluazIuc3VicGF0aCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgbGluazIuc3VicGF0aCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgaWYgKCFsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIGJvdGggaGF2ZSBhIHN1YnBhdGgsIGNvbXBhcmUgYnkgc3VicGF0aC4KICAgICAgICAgICAgICAgICAgcmV0dXJuICgoX2EgPSBsaW5rMS5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAiIikubG9jYWxlQ29tcGFyZSgoX2IgPSBsaW5rMi5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAiIik7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICA/IC0xCiAgICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgbGV0IGYxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShmMVtpbmRleF0sIGYyW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IG8xID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgazEgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8xKSk7CiAgICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTsKICAgICAgICAgICAgICAgICAgazEuc29ydCgpOwogICAgICAgICAgICAgICAgICBrMi5zb3J0KCk7CiAgICAgICAgICAgICAgICAgIGxldCBrZXlDb21wYXJlID0gY29tcGFyZVZhbHVlKGsxLCBrMik7CiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyZTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IG9mIGsxKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJodG1sIjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5jb21wYXJlVmFsdWUgPSBjb21wYXJlVmFsdWU7CiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gdHlwZU9mKHZhbCkgewogICAgICAgICAgdmFyIF9hOwogICAgICAgICAgcmV0dXJuIChfYSA9IHdyYXBWYWx1ZSh2YWwpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZTsKICAgICAgfQogICAgICBWYWx1ZXMudHlwZU9mID0gdHlwZU9mOwogICAgICAvKiogRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyAidHJ1dGh5IiAoaS5lLiwgaXMgbm9uLW51bGwgYW5kIGhhcyBkYXRhIGluIGl0KS4gKi8KICAgICAgZnVuY3Rpb24gaXNUcnV0aHkoZmllbGQpIHsKICAgICAgICAgIGxldCB3cmFwcGVkID0gd3JhcFZhbHVlKGZpZWxkKTsKICAgICAgICAgIGlmICghd3JhcHBlZCkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICBzd2l0Y2ggKHdyYXBwZWQudHlwZSkgewogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAic3RyaW5nIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsKICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAhIXdyYXBwZWQudmFsdWUucGF0aDsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9NaWxsaXMoKSAhPSAwOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUuYXMoInNlY29uZHMiKSAhPSAwOwogICAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh3cmFwcGVkLnZhbHVlKS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUubGVuZ3RoID4gMDsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgIGNhc2UgImh0bWwiOgogICAgICAgICAgICAgIGNhc2UgIndpZGdldCI6CiAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMuaXNUcnV0aHkgPSBpc1RydXRoeTsKICAgICAgLyoqIERlZXAgY29weSBhIGZpZWxkLiAqLwogICAgICBmdW5jdGlvbiBkZWVwQ29weShmaWVsZCkgewogICAgICAgICAgaWYgKGZpZWxkID09PSBudWxsIHx8IGZpZWxkID09PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgICAgICAgaWYgKFZhbHVlcy5pc0FycmF5KGZpZWxkKSkgewogICAgICAgICAgICAgIHJldHVybiBbXS5jb25jYXQoZmllbGQubWFwKHYgPT4gZGVlcENvcHkodikpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc09iamVjdChmaWVsZCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0ge307CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpZWxkKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBkZWVwQ29weSh2YWx1ZSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBmaWVsZDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMuZGVlcENvcHkgPSBkZWVwQ29weTsKICAgICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAic3RyaW5nIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNTdHJpbmcgPSBpc1N0cmluZzsKICAgICAgZnVuY3Rpb24gaXNOdW1iZXIodmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAibnVtYmVyIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNOdW1iZXIgPSBpc051bWJlcjsKICAgICAgZnVuY3Rpb24gaXNEYXRlKHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIERhdGVUaW1lOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0RhdGUgPSBpc0RhdGU7CiAgICAgIGZ1bmN0aW9uIGlzRHVyYXRpb24odmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRHVyYXRpb247CiAgICAgIH0KICAgICAgVmFsdWVzLmlzRHVyYXRpb24gPSBpc0R1cmF0aW9uOwogICAgICBmdW5jdGlvbiBpc051bGwodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkOwogICAgICB9CiAgICAgIFZhbHVlcy5pc051bGwgPSBpc051bGw7CiAgICAgIGZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7CiAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0FycmF5ID0gaXNBcnJheTsKICAgICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbCkgewogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICJib29sZWFuIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNCb29sZWFuID0gaXNCb29sZWFuOwogICAgICBmdW5jdGlvbiBpc0xpbmsodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgTGluazsKICAgICAgfQogICAgICBWYWx1ZXMuaXNMaW5rID0gaXNMaW5rOwogICAgICBmdW5jdGlvbiBpc1dpZGdldCh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBXaWRnZXQ7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzV2lkZ2V0ID0gaXNXaWRnZXQ7CiAgICAgIGZ1bmN0aW9uIGlzSHRtbCh2YWwpIHsKICAgICAgICAgIGlmICh0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5pc0h0bWwgPSBpc0h0bWw7CiAgICAgIC8qKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIG9iamVjdCAoYW5kIG5vdCBhbnkgb3RoZXIgZGF0YXZpZXctcmVjb2duaXplZCBvYmplY3QtbGlrZSB0eXBlKS4gKi8KICAgICAgZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7CiAgICAgICAgICByZXR1cm4gKHR5cGVvZiB2YWwgPT0gIm9iamVjdCIgJiYKICAgICAgICAgICAgICAhaXNIdG1sKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNXaWRnZXQodmFsKSAmJgogICAgICAgICAgICAgICFpc0FycmF5KHZhbCkgJiYKICAgICAgICAgICAgICAhaXNEdXJhdGlvbih2YWwpICYmCiAgICAgICAgICAgICAgIWlzRGF0ZSh2YWwpICYmCiAgICAgICAgICAgICAgIWlzTGluayh2YWwpICYmCiAgICAgICAgICAgICAgdmFsICE9PSB1bmRlZmluZWQgJiYKICAgICAgICAgICAgICAhaXNOdWxsKHZhbCkpOwogICAgICB9CiAgICAgIFZhbHVlcy5pc09iamVjdCA9IGlzT2JqZWN0OwogICAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCkgewogICAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gImZ1bmN0aW9uIjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247CiAgfSkoVmFsdWVzIHx8IChWYWx1ZXMgPSB7fSkpOwogIC8vLy8vLy8vLy8vLy8vLwogIC8vIEdyb3VwaW5ncyAvLwogIC8vLy8vLy8vLy8vLy8vLwogIHZhciBHcm91cGluZ3M7CiAgKGZ1bmN0aW9uIChHcm91cGluZ3MpIHsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGdyb3VwIGVudHJ5IGlzIGEgc3RhbmRhbG9uZSB2YWx1ZSwgb3IgYSBncm91cGluZyBvZiBzdWItZW50cmllcy4gKi8KICAgICAgZnVuY3Rpb24gaXNFbGVtZW50R3JvdXAoZW50cnkpIHsKICAgICAgICAgIHJldHVybiBWYWx1ZXMuaXNPYmplY3QoZW50cnkpICYmIE9iamVjdC5rZXlzKGVudHJ5KS5sZW5ndGggPT0gMiAmJiAia2V5IiBpbiBlbnRyeSAmJiAicm93cyIgaW4gZW50cnk7CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmlzRWxlbWVudEdyb3VwID0gaXNFbGVtZW50R3JvdXA7CiAgICAgIC8qKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBhcnJheSBpcyBhIGdyb3VwaW5nIGFycmF5LiAqLwogICAgICBmdW5jdGlvbiBpc0dyb3VwaW5nKGVudHJ5KSB7CiAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGVudHJ5KQogICAgICAgICAgICAgIGlmICghaXNFbGVtZW50R3JvdXAoZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIEdyb3VwaW5ncy5pc0dyb3VwaW5nID0gaXNHcm91cGluZzsKICAgICAgLyoqIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSByZWN1cnNpdmUgZ3JvdXBpbmcuICovCiAgICAgIGZ1bmN0aW9uIGNvdW50KGVsZW1lbnRzKSB7CiAgICAgICAgICBpZiAoaXNHcm91cGluZyhlbGVtZW50cykpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gMDsKICAgICAgICAgICAgICBmb3IgKGxldCBzdWJncm91cCBvZiBlbGVtZW50cykKICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNvdW50KHN1Ymdyb3VwLnJvd3MpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHMubGVuZ3RoOwogICAgICAgICAgfQogICAgICB9CiAgICAgIEdyb3VwaW5ncy5jb3VudCA9IGNvdW50OwogIH0pKEdyb3VwaW5ncyB8fCAoR3JvdXBpbmdzID0ge30pKTsKICAvLy8vLy8vLy8vCiAgLy8gTElOSyAvLwogIC8vLy8vLy8vLy8KICAvKiogVGhlIE9ic2lkaWFuICdsaW5rJywgdXNlZCBmb3IgdW5pcXVlbHkgZGVzY3JpYmluZyBhIGZpbGUsIGhlYWRlciwgb3IgYmxvY2suICovCiAgY2xhc3MgTGluayB7CiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZS4gKi8KICAgICAgc3RhdGljIGZpbGUocGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogdW5kZWZpbmVkLAogICAgICAgICAgICAgIHR5cGU6ICJmaWxlIiwKICAgICAgICAgIH0pOwogICAgICB9CiAgICAgIHN0YXRpYyBpbmZlcihsaW5rcGF0aCwgZW1iZWQgPSBmYWxzZSwgZGlzcGxheSkgewogICAgICAgICAgaWYgKGxpbmtwYXRoLmluY2x1ZGVzKCIjXiIpKSB7CiAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoIiNeIik7CiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuYmxvY2soc3BsaXRbMF0sIHNwbGl0WzFdLCBlbWJlZCwgZGlzcGxheSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiIyIpKSB7CiAgICAgICAgICAgICAgbGV0IHNwbGl0ID0gbGlua3BhdGguc3BsaXQoIiMiKTsKICAgICAgICAgICAgICByZXR1cm4gTGluay5oZWFkZXIoc3BsaXRbMF0sIHNwbGl0WzFdLCBlbWJlZCwgZGlzcGxheSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuZmlsZShsaW5rcGF0aCwgZW1iZWQsIGRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDcmVhdGUgYSBsaW5rIHRvIGEgc3BlY2lmaWMgZmlsZSBhbmQgaGVhZGVyIGluIHRoYXQgZmlsZS4gKi8KICAgICAgc3RhdGljIGhlYWRlcihwYXRoLCBoZWFkZXIsIGVtYmVkLCBkaXNwbGF5KSB7CiAgICAgICAgICAvLyBIZWFkZXJzIG5lZWQgdG8gYmUgbm9ybWFsaXplZCB0byBhbHBoYS1udW1lcmljICYgd2l0aCBleHRyYSBzcGFjaW5nIHJlbW92ZWQuCiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoewogICAgICAgICAgICAgIHBhdGgsCiAgICAgICAgICAgICAgZW1iZWQsCiAgICAgICAgICAgICAgZGlzcGxheSwKICAgICAgICAgICAgICBzdWJwYXRoOiBub3JtYWxpemVIZWFkZXJGb3JMaW5rKGhlYWRlciksCiAgICAgICAgICAgICAgdHlwZTogImhlYWRlciIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGJsb2NrIGluIHRoYXQgZmlsZS4gKi8KICAgICAgc3RhdGljIGJsb2NrKHBhdGgsIGJsb2NrSWQsIGVtYmVkLCBkaXNwbGF5KSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoewogICAgICAgICAgICAgIHBhdGgsCiAgICAgICAgICAgICAgZW1iZWQsCiAgICAgICAgICAgICAgZGlzcGxheSwKICAgICAgICAgICAgICBzdWJwYXRoOiBibG9ja0lkLAogICAgICAgICAgICAgIHR5cGU6ICJibG9jayIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBzdGF0aWMgZnJvbU9iamVjdChvYmplY3QpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhvYmplY3QpOwogICAgICB9CiAgICAgIGNvbnN0cnVjdG9yKGZpZWxkcykgewogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpOwogICAgICB9CiAgICAgIC8qKiBDaGVja3MgZm9yIGxpbmsgZXF1YWxpdHkgKGkuZS4sIHRoYXQgdGhlIGxpbmtzIGFyZSBwb2ludGluZyB0byB0aGUgc2FtZSBleGFjdCBsb2NhdGlvbikuICovCiAgICAgIGVxdWFscyhvdGhlcikgewogICAgICAgICAgaWYgKG90aGVyID09IHVuZGVmaW5lZCB8fCBvdGhlciA9PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHJldHVybiB0aGlzLnBhdGggPT0gb3RoZXIucGF0aCAmJiB0aGlzLnR5cGUgPT0gb3RoZXIudHlwZSAmJiB0aGlzLnN1YnBhdGggPT0gb3RoZXIuc3VicGF0aDsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gaXQncyBtYXJrZG93biByZXByZXNlbnRhdGlvbi4gKi8KICAgICAgdG9TdHJpbmcoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXJrZG93bigpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayB0byBhIHJhdyBvYmplY3Qgd2hpY2ggaXMgc2VyaWFsaXphdGlvbi1mcmllbmRseS4gKi8KICAgICAgdG9PYmplY3QoKSB7CiAgICAgICAgICByZXR1cm4geyBwYXRoOiB0aGlzLnBhdGgsIHR5cGU6IHRoaXMudHlwZSwgc3VicGF0aDogdGhpcy5zdWJwYXRoLCBkaXNwbGF5OiB0aGlzLmRpc3BsYXksIGVtYmVkOiB0aGlzLmVtYmVkIH07CiAgICAgIH0KICAgICAgLyoqIFVwZGF0ZSB0aGlzIGxpbmsgd2l0aCBhIG5ldyBwYXRoLiAqLwogICAgICAvL0B0cy1pZ25vcmU7IGVycm9yIGFwcGVhcmVkIGFmdGVyIHVwZGF0aW5nIE9ic2lkaWFuIHRvIDAuMTUuNDsgaXQgYWxzbyB1cGRhdGVkIG90aGVyIHBhY2thZ2VzIGJ1dCBkaWRuJ3Qgc2F5IHdoaWNoCiAgICAgIHdpdGhQYXRoKHBhdGgpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IHBhdGggfSkpOwogICAgICB9CiAgICAgIC8qKiBSZXR1cm4gYSBuZXcgbGluayB3aGljaCBwb2ludHMgdG8gdGhlIHNhbWUgbG9jYXRpb24gYnV0IHdpdGggYSBuZXcgZGlzcGxheSB2YWx1ZS4gKi8KICAgICAgd2l0aERpc3BsYXkoZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKE9iamVjdC5hc3NpZ24oe30sIHRoaXMsIHsgZGlzcGxheSB9KSk7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgYSBmaWxlIGxpbmsgaW50byBhIGxpbmsgdG8gYSBzcGVjaWZpYyBoZWFkZXIuICovCiAgICAgIHdpdGhIZWFkZXIoaGVhZGVyKSB7CiAgICAgICAgICByZXR1cm4gTGluay5oZWFkZXIodGhpcy5wYXRoLCBoZWFkZXIsIHRoaXMuZW1iZWQsIHRoaXMuZGlzcGxheSk7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgYW55IGxpbmsgaW50byBhIGxpbmsgdG8gaXRzIGZpbGUuICovCiAgICAgIHRvRmlsZSgpIHsKICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUodGhpcy5wYXRoLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayBpbnRvIGFuIGVtYmVkZGVkIGxpbmsuICovCiAgICAgIHRvRW1iZWQoKSB7CiAgICAgICAgICBpZiAodGhpcy5lbWJlZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgbGV0IGxpbmsgPSBuZXcgTGluayh0aGlzKTsKICAgICAgICAgICAgICBsaW5rLmVtYmVkID0gdHJ1ZTsKICAgICAgICAgICAgICByZXR1cm4gbGluazsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhIG5vbi1lbWJlZGRlZCBsaW5rLiAqLwogICAgICBmcm9tRW1iZWQoKSB7CiAgICAgICAgICBpZiAoIXRoaXMuZW1iZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7CiAgICAgICAgICAgICAgbGluay5lbWJlZCA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBsaW5rOwogICAgICAgICAgfQogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoaXMgbGluayB0byBtYXJrZG93biBzbyBpdCBjYW4gYmUgcmVuZGVyZWQuICovCiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmVtYmVkID8gIiEiIDogIiIpICsgIltbIiArIHRoaXMub2JzaWRpYW5MaW5rKCk7CiAgICAgICAgICBpZiAodGhpcy5kaXNwbGF5KSB7CiAgICAgICAgICAgICAgcmVzdWx0ICs9ICJ8IiArIHRoaXMuZGlzcGxheTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyBnZXRGaWxlVGl0bGUodGhpcy5wYXRoKTsKICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09ICJoZWFkZXIiIHx8IHRoaXMudHlwZSA9PSAiYmxvY2siKQogICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIiA+ICIgKyB0aGlzLnN1YnBhdGg7CiAgICAgICAgICB9CiAgICAgICAgICByZXN1bHQgKz0gIl1dIjsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhlIGlubmVyIHBhcnQgb2YgdGhlIGxpbmsgdG8gc29tZXRoaW5nIHRoYXQgT2JzaWRpYW4gY2FuIG9wZW4gLyB1bmRlcnN0YW5kLiAqLwogICAgICBvYnNpZGlhbkxpbmsoKSB7CiAgICAgICAgICB2YXIgX2EsIF9iOwogICAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlKCJ8IiwgIlxcfCIpOwogICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArICgoX2EgPSB0aGlzLnN1YnBhdGgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZXBsYWNlKCJ8IiwgIlxcfCIpKTsKICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjXiIgKyAoKF9iID0gdGhpcy5zdWJwYXRoKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IucmVwbGFjZSgifCIsICJcXHwiKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICAgIH0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovCiAgICAgIGZpbGVOYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpLnJlcGxhY2UoIi5tZCIsICIiKTsKICAgICAgfQogIH0KICAvLy8vLy8vLy8vLy8vLy8vLwogIC8vIFdJREdFVCBCQVNFIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8KICAvKioKICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mCiAgICogd2lkZ2V0IGFyZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHdoYXRldmVyIG1ldGFkYXRhIGlzIHJlbGV2YW50LiBJZiB5b3Ugd2FudCB5b3VyIHdpZGdldAogICAqIHRvIGhhdmUgcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgKHdoaWNoIHlvdSBwcm9iYWJseSBkbyksIHlvdSBzaG91bGQgZXh0ZW5kIGBSZW5kZXJXaWRnZXRgLgogICAqLwogIGNsYXNzIFdpZGdldCB7CiAgICAgIGNvbnN0cnVjdG9yKCR3aWRnZXQpIHsKICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7CiAgICAgIH0KICB9CiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8KICBjbGFzcyBMaXN0UGFpcldpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUpIHsKICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsKICAgICAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGAke1ZhbHVlcy50b1N0cmluZyh0aGlzLmtleSl9OiAke1ZhbHVlcy50b1N0cmluZyh0aGlzLnZhbHVlKX1gOwogICAgICB9CiAgfQogIC8qKiBBIHNpbXBsZSB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLiAqLwogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGNvbnN0cnVjdG9yKHVybCwgZGlzcGxheSkgewogICAgICAgICAgc3VwZXIoImRhdGF2aWV3OmV4dGVybmFsLWxpbmsiKTsKICAgICAgICAgIHRoaXMudXJsID0gdXJsOwogICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZGlzcGxheTsKICAgICAgfQogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIHZhciBfYTsKICAgICAgICAgIHJldHVybiBgWyR7KF9hID0gdGhpcy5kaXNwbGF5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLnVybH1dKCR7dGhpcy51cmx9KWA7CiAgICAgIH0KICB9CiAgdmFyIFdpZGdldHM7CiAgKGZ1bmN0aW9uIChXaWRnZXRzKSB7CiAgICAgIC8qKiBDcmVhdGUgYSBsaXN0IHBhaXIgd2lkZ2V0IG1hdGNoaW5nIHRoZSBnaXZlbiBrZXkgYW5kIHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBsaXN0UGFpcihrZXksIHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpc3RQYWlyV2lkZ2V0KGtleSwgdmFsdWUpOwogICAgICB9CiAgICAgIFdpZGdldHMubGlzdFBhaXIgPSBsaXN0UGFpcjsKICAgICAgLyoqIENyZWF0ZSBhbiBleHRlcm5hbCBsaW5rIHdpZGdldCB3aGljaCByZW5kZXJzIGFuIGV4dGVybmFsIE9ic2lkaWFuIGxpbmsuICovCiAgICAgIGZ1bmN0aW9uIGV4dGVybmFsTGluayh1cmwsIGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgRXh0ZXJuYWxMaW5rV2lkZ2V0KHVybCwgZGlzcGxheSk7CiAgICAgIH0KICAgICAgV2lkZ2V0cy5leHRlcm5hbExpbmsgPSBleHRlcm5hbExpbms7CiAgICAgIC8qKiBDaGVja3MgaWYgdGhlIGdpdmVuIHdpZGdldCBpcyBhIGxpc3QgcGFpciB3aWRnZXQuICovCiAgICAgIGZ1bmN0aW9uIGlzTGlzdFBhaXIod2lkZ2V0KSB7CiAgICAgICAgICByZXR1cm4gd2lkZ2V0LiR3aWRnZXQgPT09ICJkYXRhdmlldzpsaXN0LXBhaXIiOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNMaXN0UGFpciA9IGlzTGlzdFBhaXI7CiAgICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxMaW5rKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayI7CiAgICAgIH0KICAgICAgV2lkZ2V0cy5pc0V4dGVybmFsTGluayA9IGlzRXh0ZXJuYWxMaW5rOwogICAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gd2lkZ2V0IGlzIGFueSBraW5kIG9mIGJ1aWx0LWluIHdpZGdldCB3aXRoIHNwZWNpYWwgcmVuZGVyaW5nIGhhbmRsaW5nLiAqLwogICAgICBmdW5jdGlvbiBpc0J1aWx0aW4od2lkZ2V0KSB7CiAgICAgICAgICByZXR1cm4gaXNMaXN0UGFpcih3aWRnZXQpIHx8IGlzRXh0ZXJuYWxMaW5rKHdpZGdldCk7CiAgICAgIH0KICAgICAgV2lkZ2V0cy5pc0J1aWx0aW4gPSBpc0J1aWx0aW47CiAgfSkoV2lkZ2V0cyB8fCAoV2lkZ2V0cyA9IHt9KSk7CgogIC8qKiBVdGlsaXR5IG1ldGhvZHMgZm9yIGNyZWF0aW5nICYgY29tcGFyaW5nIGZpZWxkcy4gKi8KICB2YXIgRmllbGRzOwogIChmdW5jdGlvbiAoRmllbGRzKSB7CiAgICAgIGZ1bmN0aW9uIHZhcmlhYmxlKG5hbWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ2YXJpYWJsZSIsIG5hbWUgfTsKICAgICAgfQogICAgICBGaWVsZHMudmFyaWFibGUgPSB2YXJpYWJsZTsKICAgICAgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpdGVyYWwiLCB2YWx1ZSB9OwogICAgICB9CiAgICAgIEZpZWxkcy5saXRlcmFsID0gbGl0ZXJhbDsKICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsKICAgICAgfQogICAgICBGaWVsZHMuYmluYXJ5T3AgPSBiaW5hcnlPcDsKICAgICAgZnVuY3Rpb24gaW5kZXgob2JqLCBpbmRleCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImluZGV4Iiwgb2JqZWN0OiBvYmosIGluZGV4IH07CiAgICAgIH0KICAgICAgRmllbGRzLmluZGV4ID0gaW5kZXg7CiAgICAgIC8qKiBDb252ZXJ0cyBhIHN0cmluZyBpbiBkb3Qtbm90YXRpb24tZm9ybWF0IGludG8gYSB2YXJpYWJsZSB3aGljaCBpbmRleGVzLiAqLwogICAgICBmdW5jdGlvbiBpbmRleFZhcmlhYmxlKG5hbWUpIHsKICAgICAgICAgIGxldCBwYXJ0cyA9IG5hbWUuc3BsaXQoIi4iKTsKICAgICAgICAgIGxldCByZXN1bHQgPSBGaWVsZHMudmFyaWFibGUocGFydHNbMF0pOwogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHBhcnRzLmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIEZpZWxkcy5saXRlcmFsKHBhcnRzW2luZGV4XSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogICAgICBGaWVsZHMuaW5kZXhWYXJpYWJsZSA9IGluZGV4VmFyaWFibGU7CiAgICAgIGZ1bmN0aW9uIGxhbWJkYShhcmdzLCB2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogYXJncywgdmFsdWUgfTsKICAgICAgfQogICAgICBGaWVsZHMubGFtYmRhID0gbGFtYmRhOwogICAgICBmdW5jdGlvbiBmdW5jKGZ1bmMsIGFyZ3MpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIGZ1bmMsIGFyZ3VtZW50czogYXJncyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5mdW5jID0gZnVuYzsKICAgICAgZnVuY3Rpb24gbGlzdCh2YWx1ZXMpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXN0IiwgdmFsdWVzIH07CiAgICAgIH0KICAgICAgRmllbGRzLmxpc3QgPSBsaXN0OwogICAgICBmdW5jdGlvbiBvYmplY3QodmFsdWVzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAib2JqZWN0IiwgdmFsdWVzIH07CiAgICAgIH0KICAgICAgRmllbGRzLm9iamVjdCA9IG9iamVjdDsKICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlZCIsIGNoaWxkIH07CiAgICAgIH0KICAgICAgRmllbGRzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICAgICAgZnVuY3Rpb24gaXNDb21wYXJlT3Aob3ApIHsKICAgICAgICAgIHJldHVybiBvcCA9PSAiPD0iIHx8IG9wID09ICI8IiB8fCBvcCA9PSAiPiIgfHwgb3AgPT0gIj49IiB8fCBvcCA9PSAiIT0iIHx8IG9wID09ICI9IjsKICAgICAgfQogICAgICBGaWVsZHMuaXNDb21wYXJlT3AgPSBpc0NvbXBhcmVPcDsKICAgICAgRmllbGRzLk5VTEwgPSBGaWVsZHMubGl0ZXJhbChudWxsKTsKICB9KShGaWVsZHMgfHwgKEZpZWxkcyA9IHt9KSk7CgogIC8qKiBBU1QgaW1wbGVtZW50YXRpb24gZm9yIHF1ZXJpZXMgb3ZlciBkYXRhIHNvdXJjZXMuICovCiAgLyoqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nIHNvdXJjZXMuICovCiAgdmFyIFNvdXJjZXM7CiAgKGZ1bmN0aW9uIChTb3VyY2VzKSB7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZnJvbSBhIHRhZy4gKi8KICAgICAgZnVuY3Rpb24gdGFnKHRhZykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogInRhZyIsIHRhZyB9OwogICAgICB9CiAgICAgIFNvdXJjZXMudGFnID0gdGFnOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIGZldGNoZXMgZnJvbSBhIENTViBmaWxlLiAqLwogICAgICBmdW5jdGlvbiBjc3YocGF0aCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImNzdiIsIHBhdGggfTsKICAgICAgfQogICAgICBTb3VyY2VzLmNzdiA9IGNzdjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgdW5kZXIgYSBmb2xkZXIgcHJlZml4LiAqLwogICAgICBmdW5jdGlvbiBmb2xkZXIocHJlZml4KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZm9sZGVyIiwgZm9sZGVyOiBwcmVmaXggfTsKICAgICAgfQogICAgICBTb3VyY2VzLmZvbGRlciA9IGZvbGRlcjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBzZWFyY2hlcyBmb3IgZmlsZXMgd2hpY2ggbGluayB0by9mcm9tIGEgZ2l2ZW4gZmlsZS4gKi8KICAgICAgZnVuY3Rpb24gbGluayhmaWxlLCBpbmNvbWluZykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCBmaWxlLCBkaXJlY3Rpb246IGluY29taW5nID8gImluY29taW5nIiA6ICJvdXRnb2luZyIgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmxpbmsgPSBsaW5rOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIGpvaW5zIHR3byBzb3VyY2VzIGJ5IGEgbG9naWNhbCBvcGVyYXRvciAoYW5kL29yKS4gKi8KICAgICAgZnVuY3Rpb24gYmluYXJ5T3AobGVmdCwgb3AsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcCwgcmlnaHQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmJpbmFyeU9wID0gYmluYXJ5T3A7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggdGFrZXMgdGhlIGludGVyc2VjdGlvbiBvZiB0d28gc291cmNlcy4gKi8KICAgICAgZnVuY3Rpb24gYW5kKGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogIiYiLCByaWdodCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMuYW5kID0gYW5kOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSB1bmlvbiBvZiB0d28gc291cmNlcy4gKi8KICAgICAgZnVuY3Rpb24gb3IobGVmdCwgcmlnaHQpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJiaW5hcnlvcCIsIGxlZnQsIG9wOiAifCIsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgU291cmNlcy5vciA9IG9yOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIG5lZ2F0ZXMgdGhlIHVuZGVybHlpbmcgc291cmNlLiAqLwogICAgICBmdW5jdGlvbiBuZWdhdGUoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJuZWdhdGUiLCBjaGlsZCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMubmVnYXRlID0gbmVnYXRlOwogICAgICBmdW5jdGlvbiBlbXB0eSgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJlbXB0eSIgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmVtcHR5ID0gZW1wdHk7CiAgfSkoU291cmNlcyB8fCAoU291cmNlcyA9IHt9KSk7CgogIC8qKiBFbW9qaSByZWdleCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGZsYWdzLiAqLwogIGNvbnN0IEVNT0pJX1JFR0VYID0gbmV3IFJlZ0V4cChlbW9qaVJlZ2V4KCksICIiKTsKICAvKiogUHJvdmlkZXMgYSBsb29rdXAgdGFibGUgZm9yIHVuaXQgZHVyYXRpb25zIG9mIHRoZSBnaXZlbiB0eXBlLiAqLwogIGNvbnN0IERVUkFUSU9OX1RZUEVTID0gewogICAgICB5ZWFyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksCiAgICAgIHllYXJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksCiAgICAgIHlyOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEgfSksCiAgICAgIHlyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICBtb250aDogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW9udGhzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLAogICAgICBtbzogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW9zOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbW9udGhzOiAxIH0pLAogICAgICB3ZWVrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIHdlZWtzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIHdrOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIHdrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3OiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgd2Vla3M6IDEgfSksCiAgICAgIGRheTogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksCiAgICAgIGRheXM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLAogICAgICBkOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwKICAgICAgaG91cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBob3VyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBocjogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBocnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxIH0pLAogICAgICBtaW51dGU6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBtaW51dGVzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWluOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWluczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG06IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBzZWNvbmQ6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogICAgICBzZWNvbmRzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2VjOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2VjczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogIH07CiAgLyoqIFNob3J0aGFuZCBmb3IgY29tbW9uIGRhdGVzIChyZWxhdGl2ZSB0byByaWdodCBub3cpLiAqLwogIGNvbnN0IERBVEVfU0hPUlRIQU5EUyA9IHsKICAgICAgbm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLAogICAgICB0b2RheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJkYXkiKSwKICAgICAgeWVzdGVyZGF5OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikKICAgICAgICAgIC5taW51cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksCiAgICAgIHRvbW9ycm93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpCiAgICAgICAgICAuc3RhcnRPZigiZGF5IikKICAgICAgICAgIC5wbHVzKER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pKSwKICAgICAgc293OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSwKICAgICAgInN0YXJ0LW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIndlZWsiKSwKICAgICAgZW93OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ3ZWVrIiksCiAgICAgICJlbmQtb2Ytd2VlayI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIndlZWsiKSwKICAgICAgc295OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoInllYXIiKSwKICAgICAgInN0YXJ0LW9mLXllYXIiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoInllYXIiKSwKICAgICAgZW95OiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ5ZWFyIiksCiAgICAgICJlbmQtb2YteWVhciI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoInllYXIiKSwKICAgICAgc29tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIm1vbnRoIiksCiAgICAgICJzdGFydC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigibW9udGgiKSwKICAgICAgZW9tOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJtb250aCIpLAogICAgICAiZW5kLW9mLW1vbnRoIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigibW9udGgiKSwKICB9OwogIC8qKgogICAqIEtleXdvcmRzIHdoaWNoIGNhbm5vdCBiZSB1c2VkIGFzIHZhcmlhYmxlcyBkaXJlY3RseS4gVXNlIGByb3cuPHRoaW5nPmAgaWYgaXQgaXMgYSB2YXJpYWJsZSB5b3UgaGF2ZSBkZWZpbmVkIGFuZCB3YW50CiAgICogdG8gYWNjZXNzLgogICAqLwogIGNvbnN0IEtFWVdPUkRTID0gWyJGUk9NIiwgIldIRVJFIiwgIkxJTUlUIiwgIkdST1VQIiwgIkZMQVRURU4iXTsKICAvLy8vLy8vLy8vLy8vLy8KICAvLyBVdGlsaXRpZXMgLy8KICAvLy8vLy8vLy8vLy8vLy8KICAvKiogU3BsaXQgb24gdW5lc2NhcGVkIHBpcGVzIGluIGFuIGlubmVyIGxpbmsuICovCiAgZnVuY3Rpb24gc3BsaXRPblVuZXNjYXBlZFBpcGUobGluaykgewogICAgICBsZXQgcGlwZSA9IC0xOwogICAgICB3aGlsZSAoKHBpcGUgPSBsaW5rLmluZGV4T2YoInwiLCBwaXBlICsgMSkpID49IDApIHsKICAgICAgICAgIGlmIChwaXBlID4gMCAmJiBsaW5rW3BpcGUgLSAxXSA9PSAiXFwiKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgcmV0dXJuIFtsaW5rLnN1YnN0cmluZygwLCBwaXBlKS5yZXBsYWNlKC9cXFx8L2csICJ8IiksIGxpbmsuc3Vic3RyaW5nKHBpcGUgKyAxKV07CiAgICAgIH0KICAgICAgcmV0dXJuIFtsaW5rLnJlcGxhY2UoL1xcXHwvZywgInwiKSwgdW5kZWZpbmVkXTsKICB9CiAgLyoqIEF0dGVtcHQgdG8gcGFyc2UgdGhlIGluc2lkZSBvZiBhIGxpbmsgdG8gcHVsbCBvdXQgZGlzcGxheSBuYW1lLCBzdWJwYXRoLCBldGMuICovCiAgZnVuY3Rpb24gcGFyc2VJbm5lckxpbmsocmF3bGluaykgewogICAgICBsZXQgW2xpbmssIGRpc3BsYXldID0gc3BsaXRPblVuZXNjYXBlZFBpcGUocmF3bGluayk7CiAgICAgIHJldHVybiBMaW5rLmluZmVyKGxpbmssIGZhbHNlLCBkaXNwbGF5KTsKICB9CiAgLyoqIENyZWF0ZSBhIGxlZnQtYXNzb2NpYXRpdmUgYmluYXJ5IHBhcnNlciB3aGljaCBwYXJzZXMgdGhlIGdpdmVuIHN1Yi1lbGVtZW50IGFuZCBzZXBhcmF0b3IuIEhhbmRsZXMgd2hpdGVzcGFjZS4gKi8KICBmdW5jdGlvbiBjcmVhdGVCaW5hcnlQYXJzZXIoY2hpbGQsIHNlcCwgY29tYmluZSkgewogICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChjaGlsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgc2VwLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgY2hpbGQpLm1hbnkoKSwgKGZpcnN0LCByZXN0KSA9PiB7CiAgICAgICAgICBpZiAocmVzdC5sZW5ndGggPT0gMCkKICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CiAgICAgICAgICBsZXQgbm9kZSA9IGNvbWJpbmUoZmlyc3QsIHJlc3RbMF1bMV0sIHJlc3RbMF1bM10pOwogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJlc3QubGVuZ3RoOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmUobm9kZSwgcmVzdFtpbmRleF1bMV0sIHJlc3RbaW5kZXhdWzNdKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBub2RlOwogICAgICB9KTsKICB9CiAgZnVuY3Rpb24gY2hhaW5PcHQoYmFzZSwgLi4uZnVuY3MpIHsKICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5jdXN0b20oKHN1Y2Nlc3MsIGZhaWx1cmUpID0+IHsKICAgICAgICAgIHJldHVybiAoaW5wdXQsIGkpID0+IHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYmFzZS5fKGlucHV0LCBpKTsKICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5zdGF0dXMpCiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgZm9yIChsZXQgZnVuYyBvZiBmdW5jcykgewogICAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IGZ1bmMocmVzdWx0LnZhbHVlKS5fKGlucHV0LCByZXN1bHQuaW5kZXgpOwogICAgICAgICAgICAgICAgICBpZiAoIW5leHQuc3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH07CiAgICAgIH0pOwogIH0KICBjb25zdCBFWFBSRVNTSU9OID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmNyZWF0ZUxhbmd1YWdlKHsKICAgICAgLy8gQSBmbG9hdGluZyBwb2ludCBudW1iZXI7IHRoZSBkZWNpbWFsIHBvaW50IGlzIG9wdGlvbmFsLgogICAgICBudW1iZXI6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvLT9bMC05XSsoXC5bMC05XSspPy8pCiAgICAgICAgICAubWFwKHN0ciA9PiBOdW1iZXIucGFyc2VGbG9hdChzdHIpKQogICAgICAgICAgLmRlc2MoIm51bWJlciIpLAogICAgICAvLyBBIHF1b3RlLXN1cnJvdW5kZWQgc3RyaW5nIHdoaWNoIHN1cHBvcnRzIGVzY2FwZSBjaGFyYWN0ZXJzICgnXCcpLgogICAgICBzdHJpbmc6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygnIicpCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHEuZXNjYXBlQ2hhcmFjdGVyLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMubm9uZU9mKCciXFwnKSkKICAgICAgICAgIC5hdExlYXN0KDApCiAgICAgICAgICAubWFwKGNoYXJzID0+IGNoYXJzLmpvaW4oIiIpKSkKICAgICAgICAgIC5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoJyInKSkKICAgICAgICAgIC5kZXNjKCJzdHJpbmciKSwKICAgICAgZXNjYXBlQ2hhcmFjdGVyOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlxcIikKICAgICAgICAgIC50aGVuKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkpCiAgICAgICAgICAubWFwKGVzY2FwZWQgPT4gewogICAgICAgICAgLy8gSWYgd2UgYXJlIGVzY2FwaW5nIGEgYmFja3NsYXNoIG9yIGEgcXVvdGUsIHBhc3MgaW4gb24gaW4gZXNjYXBlZCBmb3JtCiAgICAgICAgICBpZiAoZXNjYXBlZCA9PT0gJyInKQogICAgICAgICAgICAgIHJldHVybiAnIic7CiAgICAgICAgICBpZiAoZXNjYXBlZCA9PT0gIlxcIikKICAgICAgICAgICAgICByZXR1cm4gIlxcIjsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXR1cm4gIlxcIiArIGVzY2FwZWQ7CiAgICAgIH0pLAogICAgICAvLyBBIGJvb2xlYW4gdHJ1ZS9mYWxzZSB2YWx1ZS4KICAgICAgYm9vbDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC90cnVlfGZhbHNlfFRydWV8RmFsc2UvKQogICAgICAgICAgLm1hcChzdHIgPT4gc3RyLnRvTG93ZXJDYXNlKCkgPT0gInRydWUiKQogICAgICAgICAgLmRlc2MoImJvb2xlYW4gKCd0cnVlJyBvciAnZmFsc2UnKSIpLAogICAgICAvLyBBIHRhZyBvZiB0aGUgZm9ybSAnI3N0dWZmL2hlbGxvLXRoZXJlJy4KICAgICAgdGFnOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiIyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1teXHUyMDAwLVx1MjA2Rlx1MkUwMC1cdTJFN0YnISIjJCUmKCkqKywuOjs8PT4/QF5ge3x9flxbXF1cXFxzXS8pLmRlc2MoInRleHQiKSkubWFueSgpLCAoc3RhcnQsIHJlc3QpID0+IHN0YXJ0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidGFnICgnI2hlbGxvL3N0dWZmJykiKSwKICAgICAgLy8gQSB2YXJpYWJsZSBpZGVudGlmaWVyLCB3aGljaCBpcyBhbHBoYW51bWVyaWMgYW5kIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBvci4uLiBlbW9qaS4KICAgICAgaWRlbnRpZmllcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXHB7TGV0dGVyfS91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkuZGVzYygidGV4dCIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bMC05XHB7TGV0dGVyfV8tXS91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChFTU9KSV9SRUdFWCkuZGVzYygidGV4dCIpKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gZmlyc3QgKyByZXN0LmpvaW4oIiIpKS5kZXNjKCJ2YXJpYWJsZSBpZGVudGlmaWVyIiksCiAgICAgIC8vIEFuIE9ic2lkaWFuIGxpbmsgb2YgdGhlIGZvcm0gW1s8bGluaz5dXS4KICAgICAgbGluazogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cW1xbKFteXFtcXV0qPylcXVxdL3UsIDEpCiAgICAgICAgICAubWFwKGxpbmtJbm5lciA9PiBwYXJzZUlubmVyTGluayhsaW5rSW5uZXIpKQogICAgICAgICAgLmRlc2MoImZpbGUgbGluayIpLAogICAgICAvLyBBbiBlbWJlZGRhYmxlIGxpbmsgd2hpY2ggY2FuIHN0YXJ0IHdpdGggJyEnLiBUaGlzIG92ZXJsYXBzIHdpdGggdGhlIG5vcm1hbCBuZWdhdGlvbiBvcGVyYXRvciwgc28gaXQgaXMgb25seQogICAgICAvLyBwcm92aWRlZCBmb3IgbWV0YWRhdGEgcGFyc2luZy4KICAgICAgZW1iZWRMaW5rOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiISIpLmF0TW9zdCgxKSwgcS5saW5rLCAocCwgbCkgPT4gewogICAgICAgICAgaWYgKHAubGVuZ3RoID4gMCkKICAgICAgICAgICAgICBsLmVtYmVkID0gdHJ1ZTsKICAgICAgICAgIHJldHVybiBsOwogICAgICB9KS5kZXNjKCJmaWxlIGxpbmsiKSwKICAgICAgLy8gQmluYXJ5IHBsdXMgb3IgbWludXMgb3BlcmF0b3IuCiAgICAgIGJpbmFyeVBsdXNNaW51czogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cK3wtLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikKICAgICAgICAgIC5kZXNjKCInKycgb3IgJy0nIiksCiAgICAgIC8vIEJpbmFyeSB0aW1lcyBvciBkaXZpZGUgb3BlcmF0b3IuCiAgICAgIGJpbmFyeU11bERpdjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cKnxcL3wlLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikKICAgICAgICAgIC5kZXNjKCInKicgb3IgJy8nIG9yICclJyIpLAogICAgICAvLyBCaW5hcnkgY29tcGFyaXNvbiBvcGVyYXRvci4KICAgICAgYmluYXJ5Q29tcGFyZU9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoLz49fDw9fCE9fD58PHw9LykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0cikKICAgICAgICAgIC5kZXNjKCInPj0nIG9yICc8PScgb3IgJyE9JyBvciAnPScgb3IgJz4nIG9yICc8JyIpLAogICAgICAvLyBCaW5hcnkgYm9vbGVhbiBjb21iaW5hdGlvbiBvcGVyYXRvci4KICAgICAgYmluYXJ5Qm9vbGVhbk9wOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL2FuZHxvcnwmfFx8L2kpCiAgICAgICAgICAubWFwKHN0ciA9PiB7CiAgICAgICAgICBpZiAoc3RyLnRvTG93ZXJDYXNlKCkgPT0gImFuZCIpCiAgICAgICAgICAgICAgcmV0dXJuICImIjsKICAgICAgICAgIGVsc2UgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJvciIpCiAgICAgICAgICAgICAgcmV0dXJuICJ8IjsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXR1cm4gc3RyOwogICAgICB9KQogICAgICAgICAgLmRlc2MoIidhbmQnIG9yICdvciciKSwKICAgICAgLy8gQSBkYXRlIHdoaWNoIGNhbiBiZSBZWVlZLU1NWy1ERFRISDptbTpzc10uCiAgICAgIHJvb3REYXRlOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7NH0vKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoeWVhciwgXywgbW9udGgpID0+IHsKICAgICAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogTnVtYmVyLnBhcnNlSW50KHllYXIpLCBtb250aDogTnVtYmVyLnBhcnNlSW50KG1vbnRoKSB9KTsKICAgICAgfSkuZGVzYygiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdIiksCiAgICAgIGRhdGVTaG9ydGhhbmQ6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdCguLi5PYmplY3Qua2V5cyhEQVRFX1NIT1JUSEFORFMpCiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCkKICAgICAgICAgIC5tYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZykpLAogICAgICBkYXRlOiBxID0+IGNoYWluT3B0KHEucm9vdERhdGUsICh5bSkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBkYXkpID0+IHltLnNldCh7IGRheTogTnVtYmVyLnBhcnNlSW50KGRheSkgfSkpLCAoeW1kKSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlQiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKF8sIGhvdXIpID0+IHltZC5zZXQoeyBob3VyOiBOdW1iZXIucGFyc2VJbnQoaG91cikgfSkpLCAoeW1kaCkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCI6IiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBtaW51dGUpID0+IHltZGguc2V0KHsgbWludXRlOiBOdW1iZXIucGFyc2VJbnQobWludXRlKSB9KSksICh5bWRobSkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCI6IiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBzZWNvbmQpID0+IHltZGhtLnNldCh7IHNlY29uZDogTnVtYmVyLnBhcnNlSW50KHNlY29uZCkgfSkpLCAoeW1kaG1zKSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHszfS8pLCAoXywgbWlsbGlzZWNvbmQpID0+IHltZGhtcy5zZXQoeyBtaWxsaXNlY29uZDogTnVtYmVyLnBhcnNlSW50KG1pbGxpc2Vjb25kKSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdWNjZWVkKHltZGhtcykgLy8gcGFzcwogICAgICApLCAoZHQpID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIrIikub3IocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7MSwyfSg6XGR7Mn0pPy8pLCAocG0sIGhyKSA9PiBkdC5zZXRab25lKCJVVEMiICsgcG0gKyBociwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJaIiksICgpID0+IGR0LnNldFpvbmUoInV0YyIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bMC05QS1aYS16Ky1cL10rL3UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJdIiksIChfYSwgem9uZSwgX2IpID0+IGR0LnNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pKSkpCiAgICAgICAgICAuYXNzZXJ0KChkdCkgPT4gZHQuaXNWYWxpZCwgInZhbGlkIGRhdGUiKQogICAgICAgICAgLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLAogICAgICAvLyBBIGRhdGUsIHBsdXMgdmFyaW91cyBzaG9ydGhhbmQgdGltZXMgb2YgZGF5IGl0IGNvdWxkIGJlLgogICAgICBkYXRlUGx1czogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHEuZGF0ZVNob3J0aGFuZC5tYXAoZCA9PiBEQVRFX1NIT1JUSEFORFNbZF0oKSksIHEuZGF0ZSkuZGVzYygiZGF0ZSBpbiBmb3JtYXQgWVlZWS1NTVstRERUSEgtTU0tU1MuTVNdIG9yIGluIHNob3J0aGFuZCIpLAogICAgICAvLyBBIGR1cmF0aW9uIG9mIHRpbWUuCiAgICAgIGR1cmF0aW9uVHlwZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KC4uLk9iamVjdC5rZXlzKERVUkFUSU9OX1RZUEVTKQogICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpCiAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcpKSwKICAgICAgZHVyYXRpb246IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChxLm51bWJlciwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb25UeXBlLCAoY291bnQsIF8sIHQpID0+IERVUkFUSU9OX1RZUEVTW3RdLm1hcFVuaXRzKHggPT4geCAqIGNvdW50KSkKICAgICAgICAgIC5zZXBCeTEocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLm9yKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC5tYXAoZHVyYXRpb25zID0+IGR1cmF0aW9ucy5yZWR1Y2UoKHAsIGMpID0+IHAucGx1cyhjKSkpCiAgICAgICAgICAuZGVzYygiZHVyYXRpb24gbGlrZSA0aHIybWluIiksCiAgICAgIC8vIEEgcmF3IG51bGwgdmFsdWUuCiAgICAgIHJhd051bGw6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygibnVsbCIpLAogICAgICAvLyBTb3VyY2UgcGFyc2luZy4KICAgICAgdGFnU291cmNlOiBxID0+IHEudGFnLm1hcCh0YWcgPT4gU291cmNlcy50YWcodGFnKSksCiAgICAgIGNzdlNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImNzdigiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5zdHJpbmcsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBwYXRoLCBfMikgPT4gU291cmNlcy5jc3YocGF0aCkpLAogICAgICBsaW5rSW5jb21pbmdTb3VyY2U6IHEgPT4gcS5saW5rLm1hcChsaW5rID0+IFNvdXJjZXMubGluayhsaW5rLnBhdGgsIHRydWUpKSwKICAgICAgbGlua091dGdvaW5nU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygib3V0Z29pbmcoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEubGluaywgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIGxpbmssIF8yKSA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCBmYWxzZSkpLAogICAgICBmb2xkZXJTb3VyY2U6IHEgPT4gcS5zdHJpbmcubWFwKHN0ciA9PiBTb3VyY2VzLmZvbGRlcihzdHIpKSwKICAgICAgcGFyZW5zU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5zb3VyY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgXzIsIGZpZWxkLCBfMywgXzQpID0+IGZpZWxkKSwKICAgICAgbmVnYXRlU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKSksIHEuYXRvbVNvdXJjZSwgKF8sIHNvdXJjZSkgPT4gU291cmNlcy5uZWdhdGUoc291cmNlKSksCiAgICAgIGF0b21Tb3VyY2U6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLnBhcmVuc1NvdXJjZSwgcS5uZWdhdGVTb3VyY2UsIHEubGlua091dGdvaW5nU291cmNlLCBxLmxpbmtJbmNvbWluZ1NvdXJjZSwgcS5mb2xkZXJTb3VyY2UsIHEudGFnU291cmNlLCBxLmNzdlNvdXJjZSksCiAgICAgIGJpbmFyeU9wU291cmNlOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmF0b21Tb3VyY2UsIHEuYmluYXJ5Qm9vbGVhbk9wLm1hcChzID0+IHMpLCBTb3VyY2VzLmJpbmFyeU9wKSwKICAgICAgc291cmNlOiBxID0+IHEuYmluYXJ5T3BTb3VyY2UsCiAgICAgIC8vIEZpZWxkIHBhcnNpbmcuCiAgICAgIHZhcmlhYmxlRmllbGQ6IHEgPT4gcS5pZGVudGlmaWVyCiAgICAgICAgICAuY2hhaW4ociA9PiB7CiAgICAgICAgICBpZiAoS0VZV09SRFMuaW5jbHVkZXMoci50b1VwcGVyQ2FzZSgpKSkgewogICAgICAgICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuZmFpbCgiVmFyaWFibGUgZmllbGRzIGNhbm5vdCBiZSBhIGtleXdvcmQgKCIgKyBLRVlXT1JEUy5qb2luKCIgb3IgIikgKyAiKSIpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdWNjZWVkKEZpZWxkcy52YXJpYWJsZShyKSk7CiAgICAgICAgICB9CiAgICAgIH0pCiAgICAgICAgICAuZGVzYygidmFyaWFibGUiKSwKICAgICAgbnVtYmVyRmllbGQ6IHEgPT4gcS5udW1iZXIubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJudW1iZXIiKSwKICAgICAgc3RyaW5nRmllbGQ6IHEgPT4gcS5zdHJpbmcubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJzdHJpbmciKSwKICAgICAgYm9vbEZpZWxkOiBxID0+IHEuYm9vbC5tYXAodmFsID0+IEZpZWxkcy5saXRlcmFsKHZhbCkpLmRlc2MoImJvb2xlYW4iKSwKICAgICAgZGF0ZUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiZGF0ZSgiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZGF0ZVBsdXMsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkYXRlLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZGF0ZSkpLmRlc2MoImRhdGUiKSwKICAgICAgZHVyYXRpb25GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImR1cigiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuZHVyYXRpb24sIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChwcmVmaXgsIF8xLCBkdXIsIF8yLCBwb3N0Zml4KSA9PiBGaWVsZHMubGl0ZXJhbChkdXIpKS5kZXNjKCJkdXJhdGlvbiIpLAogICAgICBudWxsRmllbGQ6IHEgPT4gcS5yYXdOdWxsLm1hcChfID0+IEZpZWxkcy5OVUxMKSwKICAgICAgbGlua0ZpZWxkOiBxID0+IHEubGluay5tYXAoZiA9PiBGaWVsZHMubGl0ZXJhbChmKSksCiAgICAgIGxpc3RGaWVsZDogcSA9PiBxLmZpZWxkCiAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKQogICAgICAgICAgLndyYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZS50aGVuKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIl0iKSkpCiAgICAgICAgICAubWFwKGwgPT4gRmllbGRzLmxpc3QobCkpCiAgICAgICAgICAuZGVzYygibGlzdCAoJ1sxLCAyLCAzXScpIiksCiAgICAgIG9iamVjdEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyLm9yKHEuc3RyaW5nKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmZpZWxkLCAobmFtZSwgX3NlcCwgdmFsdWUpID0+IHsKICAgICAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07CiAgICAgIH0pCiAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKQogICAgICAgICAgLndyYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygieyIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZS50aGVuKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIn0iKSkpCiAgICAgICAgICAubWFwKHZhbHMgPT4gewogICAgICAgICAgbGV0IHJlcyA9IHt9OwogICAgICAgICAgZm9yIChsZXQgZW50cnkgb2YgdmFscykKICAgICAgICAgICAgICByZXNbZW50cnkubmFtZV0gPSBlbnRyeS52YWx1ZTsKICAgICAgICAgIHJldHVybiBGaWVsZHMub2JqZWN0KHJlcyk7CiAgICAgIH0pCiAgICAgICAgICAuZGVzYygib2JqZWN0ICgneyBhOiAxLCBiOiAyIH0nKSIpLAogICAgICBhdG9tSW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRhdGUsIHEuZHVyYXRpb24ubWFwKGQgPT4gbm9ybWFsaXplRHVyYXRpb24oZCkpLCBxLnN0cmluZywgcS50YWcsIHEuZW1iZWRMaW5rLCBxLmJvb2wsIHEubnVtYmVyLCBxLnJhd051bGwpLAogICAgICBpbmxpbmVGaWVsZExpc3Q6IHEgPT4gcS5hdG9tSW5saW5lRmllbGQuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLmxvb2thaGVhZChxLmF0b21JbmxpbmVGaWVsZCkpLAogICAgICBpbmxpbmVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5hdG9tSW5saW5lRmllbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5pbmxpbmVGaWVsZExpc3QsIChmLCBfcywgbCkgPT4gW2ZdLmNvbmNhdChsKSksIHEuYXRvbUlubGluZUZpZWxkKSwKICAgICAgYXRvbUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQoCiAgICAgIC8vIFBsYWNlIGVtYmVkIGxpbmtzIGFib3ZlIG5lZ2F0ZWQgZmllbGRzIGFzIHRoZXkgYXJlIHRoZSBzcGVjaWFsIHBhcnNlciBjYXNlICchW1t0aGluZ11dJyBhbmQgYXJlIGdlbmVyYWxseSB1bmFtYmlnaW91cy4KICAgICAgcS5lbWJlZExpbmsubWFwKGwgPT4gRmllbGRzLmxpdGVyYWwobCkpLCBxLm5lZ2F0ZWRGaWVsZCwgcS5saW5rRmllbGQsIHEubGlzdEZpZWxkLCBxLm9iamVjdEZpZWxkLCBxLmxhbWJkYUZpZWxkLCBxLnBhcmVuc0ZpZWxkLCBxLmJvb2xGaWVsZCwgcS5udW1iZXJGaWVsZCwgcS5zdHJpbmdGaWVsZCwgcS5kYXRlRmllbGQsIHEuZHVyYXRpb25GaWVsZCwgcS5udWxsRmllbGQsIHEudmFyaWFibGVGaWVsZCksCiAgICAgIGluZGV4RmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChxLmF0b21GaWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRvdFBvc3RmaXgsIHEuaW5kZXhQb3N0Zml4LCBxLmZ1bmN0aW9uUG9zdGZpeCkubWFueSgpLCAob2JqLCBwb3N0Zml4ZXMpID0+IHsKICAgICAgICAgIGxldCByZXN1bHQgPSBvYmo7CiAgICAgICAgICBmb3IgKGxldCBwb3N0IG9mIHBvc3RmaXhlcykgewogICAgICAgICAgICAgIHN3aXRjaCAocG9zdC50eXBlKSB7CiAgICAgICAgICAgICAgICAgIGNhc2UgImRvdCI6CiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwb3N0LmZpZWxkKSk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgY2FzZSAiaW5kZXgiOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmluZGV4KHJlc3VsdCwgcG9zdC5maWVsZCk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmZ1bmMocmVzdWx0LCBwb3N0LmZpZWxkcyk7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9KSwKICAgICAgbmVnYXRlZEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiISIpLCBxLmluZGV4RmllbGQsIChfLCBmaWVsZCkgPT4gRmllbGRzLm5lZ2F0ZShmaWVsZCkpLmRlc2MoIm5lZ2F0ZWQgZmllbGQiKSwKICAgICAgcGFyZW5zRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIF8yLCBmaWVsZCwgXzMsIF80KSA9PiBmaWVsZCksCiAgICAgIGxhbWJkYUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5pZGVudGlmaWVyCiAgICAgICAgICAuc2VwQnkocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKQogICAgICAgICAgLndyYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCI9PiIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmZpZWxkLCAoaWRlbnQsIF9pZ25vcmUsIHZhbHVlKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGFtYmRhIiwgYXJndW1lbnRzOiBpZGVudCwgdmFsdWUgfTsKICAgICAgfSksCiAgICAgIGRvdFBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIuIiksIHEuaWRlbnRpZmllciwgKF8sIGZpZWxkKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZG90IiwgZmllbGQ6IGZpZWxkIH07CiAgICAgIH0pLAogICAgICBpbmRleFBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJbIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiXSIpLCAoXywgXzIsIGZpZWxkLCBfMywgXzQpID0+IHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIGZpZWxkIH07CiAgICAgIH0pLAogICAgICBmdW5jdGlvblBvc3RmaXg6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfLCBfMSwgZmllbGRzLCBfMiwgXzMpID0+IHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJmdW5jdGlvbiIsIGZpZWxkcyB9OwogICAgICB9KSwKICAgICAgLy8gVGhlIHByZWNlZGVuY2UgaGllcmFyY2h5IG9mIG9wZXJhdG9ycyAtIG11bHRpcGx5L2RpdmlkZSwgYWRkL3N1YnRyYWN0LCBjb21wYXJlLCBhbmQgdGhlbiBib29sZWFuIG9wZXJhdGlvbnMuCiAgICAgIGJpbmFyeU11bERpdkZpZWxkOiBxID0+IGNyZWF0ZUJpbmFyeVBhcnNlcihxLmluZGV4RmllbGQsIHEuYmluYXJ5TXVsRGl2LCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlQbHVzTWludXNGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlNdWxEaXZGaWVsZCwgcS5iaW5hcnlQbHVzTWludXMsIEZpZWxkcy5iaW5hcnlPcCksCiAgICAgIGJpbmFyeUNvbXBhcmVGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlQbHVzTWludXNGaWVsZCwgcS5iaW5hcnlDb21wYXJlT3AsIEZpZWxkcy5iaW5hcnlPcCksCiAgICAgIGJpbmFyeUJvb2xlYW5GaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5iaW5hcnlDb21wYXJlRmllbGQsIHEuYmluYXJ5Qm9vbGVhbk9wLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlPcEZpZWxkOiBxID0+IHEuYmluYXJ5Qm9vbGVhbkZpZWxkLAogICAgICBmaWVsZDogcSA9PiBxLmJpbmFyeU9wRmllbGQsCiAgfSk7CgogIC8qKiBQYXJzZSBpbmxpbmUgZmllbGRzIGFuZCBvdGhlciBlbWJlZGRlZCBtZXRhZGF0YSBpbiBhIGxpbmUuICovCiAgLyoqIFRoZSB3cmFwcGVyIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW4gaW5saW5lIGZpZWxkLiAqLwogIGNvbnN0IElOTElORV9GSUVMRF9XUkFQUEVSUyA9IE9iamVjdC5mcmVlemUoewogICAgICAiWyI6ICJdIiwKICAgICAgIigiOiAiKSIsCiAgfSk7CiAgLyoqCiAgICogRmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldCB0aGF0IG9jY3VycyBhdCBvciBhZnRlciBgc3RhcnRgLCByZXNwZWN0aW5nIG5lc3RpbmcgYW5kIGVzY2FwZXMuIElmIGZvdW5kLAogICAqIHJldHVybnMgdGhlIHZhbHVlIGNvbnRhaW5lZCB3aXRoaW4gYW5kIHRoZSBzdHJpbmcgaW5kZXggYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgdmFsdWUuCiAgICovCiAgZnVuY3Rpb24gZmluZENsb3NpbmcobGluZSwgc3RhcnQsIG9wZW4sIGNsb3NlKSB7CiAgICAgIGxldCBuZXN0aW5nID0gMDsKICAgICAgbGV0IGVzY2FwZWQgPSBmYWxzZTsKICAgICAgZm9yIChsZXQgaW5kZXggPSBzdGFydDsgaW5kZXggPCBsaW5lLmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgbGV0IGNoYXIgPSBsaW5lLmNoYXJBdChpbmRleCk7CiAgICAgICAgICAvLyBBbGxvd3MgZm9yIGRvdWJsZSBlc2NhcGVzIGxpa2UgJ1xcJyB0byBiZSByZW5kZXJlZCBub3JtYWxseS4KICAgICAgICAgIGlmIChjaGFyID09ICJcXCIpIHsKICAgICAgICAgICAgICBlc2NhcGVkID0gIWVzY2FwZWQ7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBJZiBlc2NhcGVkLCBpZ25vcmUgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBjb21wdXRpbmcgbmVzdGluZywgcmVnYXJkbGVzcyBvZiB3aGF0IGl0IGlzLgogICAgICAgICAgaWYgKGVzY2FwZWQpIHsKICAgICAgICAgICAgICBlc2NhcGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY2hhciA9PSBvcGVuKQogICAgICAgICAgICAgIG5lc3RpbmcrKzsKICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gY2xvc2UpCiAgICAgICAgICAgICAgbmVzdGluZy0tOwogICAgICAgICAgLy8gT25seSBvY2N1cnMgaWYgd2UgYXJlIG9uIGEgY2xvc2UgY2hhcmFjdGVyIGFuZCB0cmhlcmUgaXMgbm8gbW9yZSBuZXN0aW5nLgogICAgICAgICAgaWYgKG5lc3RpbmcgPCAwKQogICAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBsaW5lLnN1YnN0cmluZyhzdGFydCwgaW5kZXgpLnRyaW0oKSwgZW5kSW5kZXg6IGluZGV4ICsgMSB9OwogICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBGaW5kIHRoZSAnOjonIHNlcGFyYXRvciBpbiBhbiBpbmxpbmUgZmllbGQuICovCiAgZnVuY3Rpb24gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCkgewogICAgICBsZXQgc2VwID0gbGluZS5pbmRleE9mKCI6OiIsIHN0YXJ0KTsKICAgICAgaWYgKHNlcCA8IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICByZXR1cm4geyBrZXk6IGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBzZXApLnRyaW0oKSwgdmFsdWVJbmRleDogc2VwICsgMiB9OwogIH0KICAvKiogVHJ5IHRvIGNvbXBsZXRlbHkgcGFyc2UgYW4gaW5saW5lIGZpZWxkIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gQXNzdWVtcyBgc3RhcnRgIGlzIG9uIGEgd3JhcHBpbmcgY2hhcmFjdGVyLiAqLwogIGZ1bmN0aW9uIGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIHN0YXJ0KSB7CiAgICAgIGxldCBvcGVuID0gbGluZS5jaGFyQXQoc3RhcnQpOwogICAgICBsZXQga2V5ID0gZmluZFNlcGFyYXRvcihsaW5lLCBzdGFydCArIDEpOwogICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAvLyBGYWlsIHRoZSBtYXRjaCBpZiB3ZSBmaW5kIGFueSBzZXBhcmF0b3IgY2hhcmFjdGVycyAobm90IGFsbG93ZWQgaW4ga2V5cykuCiAgICAgIGZvciAobGV0IHNlcCBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpLmNvbmNhdChPYmplY3QudmFsdWVzKElOTElORV9GSUVMRF9XUkFQUEVSUykpKSB7CiAgICAgICAgICBpZiAoa2V5LmtleS5pbmNsdWRlcyhzZXApKQogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgbGV0IHZhbHVlID0gZmluZENsb3NpbmcobGluZSwga2V5LnZhbHVlSW5kZXgsIG9wZW4sIElOTElORV9GSUVMRF9XUkFQUEVSU1tvcGVuXSk7CiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsKICAgICAgICAgIGtleToga2V5LmtleSwKICAgICAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZSwKICAgICAgICAgIHN0YXJ0OiBzdGFydCwKICAgICAgICAgIHN0YXJ0VmFsdWU6IGtleS52YWx1ZUluZGV4LAogICAgICAgICAgZW5kOiB2YWx1ZS5lbmRJbmRleCwKICAgICAgICAgIHdyYXBwaW5nOiBvcGVuLAogICAgICB9OwogIH0KICAvKiogUGFyc2UgYSB0ZXh0dWFsIGlubGluZSBmaWVsZCB2YWx1ZSBpbnRvIHNvbWV0aGluZyB3ZSBjYW4gd29yayB3aXRoLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5saW5lVmFsdWUodmFsdWUpIHsKICAgICAgLy8gRW1wdHkgaW5saW5lIHZhbHVlcyAoaS5lLiwgbm8gdGV4dCkgc2hvdWxkIG1hcCB0byBudWxsIHRvIG1hdGNoIGxvbmctdGVybSBEYXRhdmlldyBzZW1hbnRpY3MuCiAgICAgIC8vIE51bGwgaXMgYWxzbyBhIG1vcmUgdW5pdmVyc2FsIHR5cGUgdG8gZGVhbCB3aXRoIHRoYW4gc3RyaW5ncywgc2luY2UgYWxsIGZ1bmN0aW9ucyBhY2NlcHQgbnVsbHMuCiAgICAgIGlmICh2YWx1ZS50cmltKCkgPT0gIiIpCiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgLy8gVGhlIHN0cmlwcGVkIGxpdGVyYWwgZmllbGQgcGFyc2VyIHVuZGVyc3RhbmRzIGFsbCBvZiB0aGUgbm9uLWFycmF5L25vbi1vYmplY3QgZmllbGRzIGFuZCBjYW4gcGFyc2UgdGhlbSBmb3IgdXMuCiAgICAgIC8vIElubGluZSBmaWVsZCBvYmplY3RzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZDsgaW5saW5lIGFycmF5IG9iamVjdHMgaGF2ZSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBwYXJzZXIKICAgICAgLy8gc2VwYXJhdGVseS4KICAgICAgbGV0IGlubGluZSA9IEVYUFJFU1NJT04uaW5saW5lRmllbGQucGFyc2UodmFsdWUpOwogICAgICBpZiAoaW5saW5lLnN0YXR1cykKICAgICAgICAgIHJldHVybiBpbmxpbmUudmFsdWU7CiAgICAgIGVsc2UKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICB9CiAgLyoqIEV4dHJhY3RzIGlubGluZSBmaWVsZHMgb2YgdGhlIGZvcm0gJ1trZXk6OiB2YWx1ZV0nIGZyb20gYSBsaW5lIG9mIHRleHQuIFRoaXMgaXMgZG9uZSBpbiBhIHJlbGF0aXZlbHkKICAgKiAicm9idXN0IiB3YXkgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gYmFkIG5lc3Rpbmcgb3Igb3RoZXIgaW50ZXJmZXJpbmcgTWFya2Rvd24gc3ltYm9sczoKICAgKgogICAqIC0gTG9vayBmb3IgYW55IHdyYXBwZXJzICgnWycgYW5kICcoJykgaW4gdGhlIGxpbmUsIHRyeWluZyB0byBwYXJzZSB3aGF0ZXZlciBjb21lcyBhZnRlciBpdCBhcyBhbiBpbmxpbmUga2V5OjouCiAgICogLSBJZiBzdWNjZXNzZnVsLCBzY2FuIHVudGlsIHlvdSBmaW5kIGEgbWF0Y2hpbmcgZW5kIGJyYWNrZXQsIGFuZCBwYXJzZSB3aGF0ZXZlciByZW1haW5zIGFzIGFuIGlubGluZSB2YWx1ZS4KICAgKi8KICBmdW5jdGlvbiBleHRyYWN0SW5saW5lRmllbGRzKGxpbmUsIGluY2x1ZGVUYXNrRmllbGRzID0gZmFsc2UpIHsKICAgICAgbGV0IGZpZWxkcyA9IFtdOwogICAgICBmb3IgKGxldCB3cmFwcGVyIG9mIE9iamVjdC5rZXlzKElOTElORV9GSUVMRF9XUkFQUEVSUykpIHsKICAgICAgICAgIGxldCBmb3VuZEluZGV4ID0gbGluZS5pbmRleE9mKHdyYXBwZXIpOwogICAgICAgICAgd2hpbGUgKGZvdW5kSW5kZXggPj0gMCkgewogICAgICAgICAgICAgIGxldCBwYXJzZWRGaWVsZCA9IGZpbmRTcGVjaWZpY0lubGluZUZpZWxkKGxpbmUsIGZvdW5kSW5kZXgpOwogICAgICAgICAgICAgIGlmICghcGFyc2VkRmllbGQpIHsKICAgICAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBmb3VuZEluZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmaWVsZHMucHVzaChwYXJzZWRGaWVsZCk7CiAgICAgICAgICAgICAgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyLCBwYXJzZWRGaWVsZC5lbmQpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChpbmNsdWRlVGFza0ZpZWxkcykKICAgICAgICAgIGZpZWxkcyA9IGZpZWxkcy5jb25jYXQoZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpKTsKICAgICAgZmllbGRzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnQgLSBiLnN0YXJ0KTsKICAgICAgbGV0IGZpbHRlcmVkRmllbGRzID0gW107CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAoaSA9PSAwIHx8IGZpbHRlcmVkRmllbGRzW2ZpbHRlcmVkRmllbGRzLmxlbmd0aCAtIDFdLmVuZCA8IGZpZWxkc1tpXS5zdGFydCkgewogICAgICAgICAgICAgIGZpbHRlcmVkRmllbGRzLnB1c2goZmllbGRzW2ldKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmlsdGVyZWRGaWVsZHM7CiAgfQogIC8qKiBWYWxpZGF0ZXMgdGhhdCBhIHJhdyBmaWVsZCBuYW1lIGhhcyBhIHZhbGlkIGZvcm0uICovCiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJUID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAidSIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1cd1xzXy8tXSsvdSkpCiAgICAgIC5tYW55KCkKICAgICAgLm1hcChwYXJ0cyA9PiBwYXJ0cy5qb2luKCIiKSk7CiAgY29uc3QgRlVMTF9MSU5FX0tFWV9QQVJTRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXjAtOVx3XHB7TGV0dGVyfV0qL3UpCiAgICAgIC50aGVuKEZVTExfTElORV9LRVlfUEFSVCkKICAgICAgLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvW19cKn5gXSovdSkpOwogIC8qKiBBdHRlbXB0IHRvIGV4dHJhY3QgYSBmdWxsLWxpbmUgZmllbGQgKEtleTo6IFZhbHVlIGNvbnN1bWluZyB0aGUgZW50aXJlIGNvbnRlbnQgbGluZSkuICovCiAgZnVuY3Rpb24gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dCkgewogICAgICBsZXQgc2VwID0gZmluZFNlcGFyYXRvcih0ZXh0LCAwKTsKICAgICAgaWYgKCFzZXApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAvLyBXZSBuZWVkIHRvIHBvc3QtcHJvY2VzcyB0aGUga2V5IHRvIGRyb3AgdW5uZWNlc3Nhcnkgb3BlbmluZyBhbm5vdGF0aW9ucyBhcyB3ZWxsIGFzCiAgICAgIC8vIGRyb3Agc3Vycm91bmRpbmcgTWFya2Rvd24uCiAgICAgIGxldCByZWFsS2V5ID0gRlVMTF9MSU5FX0tFWV9QQVJTRVIucGFyc2Uoc2VwLmtleSk7CiAgICAgIGlmICghcmVhbEtleS5zdGF0dXMpCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICByZXR1cm4gewogICAgICAgICAga2V5OiByZWFsS2V5LnZhbHVlLAogICAgICAgICAgdmFsdWU6IHRleHQuc3Vic3RyaW5nKHNlcC52YWx1ZUluZGV4KS50cmltKCksCiAgICAgICAgICBzdGFydDogMCwKICAgICAgICAgIHN0YXJ0VmFsdWU6IHNlcC52YWx1ZUluZGV4LAogICAgICAgICAgZW5kOiB0ZXh0Lmxlbmd0aCwKICAgICAgfTsKICB9CiAgY29uc3QgQ1JFQVRFRF9EQVRFX1JFR0VYID0gL1x1ezI3OTV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IERVRV9EQVRFX1JFR0VYID0gLyg/Olx1ezFGNEM1fXxcdXsxRjRDNn18XHV7MUY1RDN9XHV7RkUwRn0/KVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBET05FX0RBVEVfUkVHRVggPSAvXHV7MjcwNX1ccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7CiAgY29uc3QgU0NIRURVTEVEX0RBVEVfUkVHRVggPSAvW1x1ezIzRjN9XHV7MjMxQn1dXHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IFNUQVJUX0RBVEVfUkVHRVggPSAvXHV7MUY2RUJ9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IEVNT0pJX1JFR0VYRVMgPSBbCiAgICAgIHsgcmVnZXg6IENSRUFURURfREFURV9SRUdFWCwga2V5OiAiY3JlYXRlZCIgfSwKICAgICAgeyByZWdleDogU1RBUlRfREFURV9SRUdFWCwga2V5OiAic3RhcnQiIH0sCiAgICAgIHsgcmVnZXg6IFNDSEVEVUxFRF9EQVRFX1JFR0VYLCBrZXk6ICJzY2hlZHVsZWQiIH0sCiAgICAgIHsgcmVnZXg6IERVRV9EQVRFX1JFR0VYLCBrZXk6ICJkdWUiIH0sCiAgICAgIHsgcmVnZXg6IERPTkVfREFURV9SRUdFWCwga2V5OiAiY29tcGxldGlvbiIgfSwKICBdOwogIC8qKiBQYXJzZSBzcGVjaWFsIGNvbXBsZXRlZC9kdWUvZG9uZSB0YXNrIGZpZWxkcyB3aGljaCBhcmUgbWFya2VkIHZpYSBlbW9qaS4gKi8KICBmdW5jdGlvbiBleHRyYWN0U3BlY2lhbFRhc2tGaWVsZHMobGluZSkgewogICAgICBsZXQgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKGxldCB7IHJlZ2V4LCBrZXkgfSBvZiBFTU9KSV9SRUdFWEVTKSB7CiAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMobGluZSk7CiAgICAgICAgICBpZiAoIW1hdGNoKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgcmVzdWx0cy5wdXNoKHsKICAgICAgICAgICAgICBrZXksCiAgICAgICAgICAgICAgdmFsdWU6IG1hdGNoWzFdLAogICAgICAgICAgICAgIHN0YXJ0OiBtYXRjaC5pbmRleCwKICAgICAgICAgICAgICBzdGFydFZhbHVlOiBtYXRjaC5pbmRleCArIDEsCiAgICAgICAgICAgICAgZW5kOiBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCwKICAgICAgICAgICAgICB3cmFwcGluZzogImVtb2ppLXNob3J0aGFuZCIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICB9CgogIC8qKiBBbGwgZXh0cmFjdGVkIG1hcmtkb3duIGZpbGUgbWV0YWRhdGEgb2J0YWluZWQgZnJvbSBhIGZpbGUuICovCiAgY2xhc3MgUGFnZU1ldGFkYXRhIHsKICAgICAgY29uc3RydWN0b3IocGF0aCwgaW5pdCkgewogICAgICAgICAgdGhpcy5wYXRoID0gcGF0aDsKICAgICAgICAgIHRoaXMuZmllbGRzID0gbmV3IE1hcCgpOwogICAgICAgICAgdGhpcy5mcm9udG1hdHRlciA9IHt9OwogICAgICAgICAgdGhpcy50YWdzID0gbmV3IFNldCgpOwogICAgICAgICAgdGhpcy5hbGlhc2VzID0gbmV3IFNldCgpOwogICAgICAgICAgdGhpcy5saW5rcyA9IFtdOwogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTsKICAgICAgICAgIHRoaXMubGlzdHMgPSAodGhpcy5saXN0cyB8fCBbXSkubWFwKGwgPT4gbmV3IExpc3RJdGVtKGwpKTsKICAgICAgfQogICAgICAvKiogQ2Fub25pY2FsaXplIHJhdyBsaW5rcyBhbmQgb3RoZXIgZGF0YSBpbiBwYXJ0aWFsIGRhdGEgd2l0aCBub3JtYWxpemVycywgcmV0dXJuaW5nIGEgY29tcGxldGVkIG9iamVjdC4gKi8KICAgICAgc3RhdGljIGNhbm9uaWNhbGl6ZShkYXRhLCBsaW5rTm9ybWFsaXplcikgewogICAgICAgICAgLy8gTXV0YXRlIHRoZSBkYXRhIGZvciBub3csIHdoaWNoIGlzIHByb2JhYmx5IGEgYmFkIGlkZWEgYnV0Li4uIGFsbCB3ZWxsLgogICAgICAgICAgaWYgKGRhdGEuZnJvbnRtYXR0ZXIpIHsKICAgICAgICAgICAgICBkYXRhLmZyb250bWF0dGVyID0gVmFsdWVzLm1hcExlYXZlcyhkYXRhLmZyb250bWF0dGVyLCB0ID0+IFZhbHVlcy5pc0xpbmsodCkgPyBsaW5rTm9ybWFsaXplcih0KSA6IHQpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEuZmllbGRzKSB7CiAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGRhdGEuZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgICAgICBkYXRhLmZpZWxkcy5zZXQoa2V5LCBWYWx1ZXMubWFwTGVhdmVzKHZhbHVlLCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmxpc3RzKSB7CiAgICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBkYXRhLmxpc3RzKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBpdGVtLmZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRzLnNldChrZXksIHZhbHVlLm1hcCh4ID0+IFZhbHVlcy5tYXBMZWF2ZXMoeCwgdCA9PiAoVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCkpKSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5saW5rcykgewogICAgICAgICAgICAgIGRhdGEubGlua3MgPSBkYXRhLmxpbmtzLm1hcChsID0+IGxpbmtOb3JtYWxpemVyKGwpKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIFRoaXMgaXMgcHJldHR5IHVnbHksIGJ1dCBpdCdzIG5vdCBwb3NzaWJsZSB0byBub3JtYWxpemUgb24gdGhlIHdvcmtlciB0aHJlYWQgdGhhdCBkb2VzIHBhcnNpbmcuCiAgICAgICAgICAvLyBUaGUgYmVzdCB3YXkgdG8gaW1wcm92ZSB0aGlzIGlzIHRvIGluc3RlYWQganVzdCBjYW5vbmljYWxpemUgdGhlIGVudGlyZSBkYXRhIG9iamVjdDsgSSBjYW4gdHJ5IHRvCiAgICAgICAgICAvLyBvcHRpbWl6ZSBgVmFsdWVzLm1hcExlYXZlc2AgdG8gb25seSBtdXRhdGUgaWYgaXQgYWN0dWFsbHkgY2hhbmdlcyB0aGluZ3MuCiAgICAgICAgICByZXR1cm4gbmV3IFBhZ2VNZXRhZGF0YShkYXRhLnBhdGgsIGRhdGEpOwogICAgICB9CiAgICAgIC8qKiBUaGUgbmFtZSAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLwogICAgICBuYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpOwogICAgICB9CiAgICAgIC8qKiBUaGUgY29udGFpbmluZyBmb2xkZXIgKGJhc2VkIG9uIHBhdGgpIG9mIHRoaXMgZmlsZS4gKi8KICAgICAgZm9sZGVyKCkgewogICAgICAgICAgcmV0dXJuIGdldFBhcmVudEZvbGRlcih0aGlzLnBhdGgpOwogICAgICB9CiAgICAgIC8qKiBUaGUgZXh0ZW5zaW9uIG9mIHRoaXMgZmlsZSAobGlrZWx5ICdtZCcpLiAqLwogICAgICBleHRlbnNpb24oKSB7CiAgICAgICAgICByZXR1cm4gZ2V0RXh0ZW5zaW9uKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFJldHVybiBhIHNldCBvZiB0YWdzIEFORCBhbGwgb2YgdGhlaXIgcGFyZW50IHRhZ3MgKHNvICNoZWxsby95ZXMgd291bGQgYmVjb21lICNoZWxsbywgI2hlbGxvL3llcykuICovCiAgICAgIGZ1bGxUYWdzKCkgewogICAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBTZXQoKTsKICAgICAgICAgIGZvciAobGV0IHRhZyBvZiB0aGlzLnRhZ3MpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBzdWJ0YWcgb2YgZXh0cmFjdFN1YnRhZ3ModGFnKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChzdWJ0YWcpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogICAgICAvKiogQ29udmVydCBhbGwgbGlua3MgaW4gdGhpcyBmaWxlIHRvIGZpbGUgbGlua3MuICovCiAgICAgIGZpbGVMaW5rcygpIHsKICAgICAgICAgIC8vIFdlIHdhbnQgdG8gbWFrZSB0aGVtIGRpc3RpbmN0LCBidXQgd2hlcmUgbGlua3MgYXJlIG5vdCByYXcgbGlua3Mgd2UKICAgICAgICAgIC8vIG5vdyBrZWVwIHRoZSBhZGRpdGlvbmFsIG1ldGFkYXRhLgogICAgICAgICAgbGV0IGRpc3RpbmN0TGlua3MgPSBuZXcgU2V0KHRoaXMubGlua3MpOwogICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZGlzdGluY3RMaW5rcyk7CiAgICAgIH0KICAgICAgLyoqIE1hcCB0aGlzIG1ldGFkYXRhIHRvIGEgZnVsbCBvYmplY3Q7IHVzZXMgdGhlIGluZGV4IGZvciBhZGRpdGlvbmFsIGRhdGEgbG9va3Vwcy4gICovCiAgICAgIHNlcmlhbGl6ZShpbmRleCwgY2FjaGUpIHsKICAgICAgICAgIC8vIENvbnZlcnQgbGlzdCBpdGVtcyB2aWEgdGhlIGNhbm9uaWNhbGl6YXRpb24gY2FjaGUuCiAgICAgICAgICBsZXQgcmVhbENhY2hlID0gY2FjaGUgIT09IG51bGwgJiYgY2FjaGUgIT09IHZvaWQgMCA/IGNhY2hlIDogbmV3IExpc3RTZXJpYWxpemF0aW9uQ2FjaGUodGhpcy5saXN0cyk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gewogICAgICAgICAgICAgIGZpbGU6IHsKICAgICAgICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLAogICAgICAgICAgICAgICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyKCksCiAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSgpLAogICAgICAgICAgICAgICAgICBsaW5rOiBMaW5rLmZpbGUodGhpcy5wYXRoKSwKICAgICAgICAgICAgICAgICAgb3V0bGlua3M6IHRoaXMuZmlsZUxpbmtzKCksCiAgICAgICAgICAgICAgICAgIGlubGlua3M6IEFycmF5LmZyb20oaW5kZXgubGlua3MuZ2V0SW52ZXJzZSh0aGlzLnBhdGgpKS5tYXAobCA9PiBMaW5rLmZpbGUobCkpLAogICAgICAgICAgICAgICAgICBldGFnczogQXJyYXkuZnJvbSh0aGlzLnRhZ3MpLAogICAgICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMuZnVsbFRhZ3MoKSksCiAgICAgICAgICAgICAgICAgIGFsaWFzZXM6IEFycmF5LmZyb20odGhpcy5hbGlhc2VzKSwKICAgICAgICAgICAgICAgICAgbGlzdHM6IHRoaXMubGlzdHMubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwKICAgICAgICAgICAgICAgICAgdGFza3M6IHRoaXMubGlzdHMuZmlsdGVyKGwgPT4gISFsLnRhc2spLm1hcChsID0+IHJlYWxDYWNoZS5nZXQobC5saW5lKSksCiAgICAgICAgICAgICAgICAgIGN0aW1lOiB0aGlzLmN0aW1lLAogICAgICAgICAgICAgICAgICBjZGF5OiBzdHJpcFRpbWUodGhpcy5jdGltZSksCiAgICAgICAgICAgICAgICAgIG10aW1lOiB0aGlzLm10aW1lLAogICAgICAgICAgICAgICAgICBtZGF5OiBzdHJpcFRpbWUodGhpcy5tdGltZSksCiAgICAgICAgICAgICAgICAgIHNpemU6IHRoaXMuc2l6ZSwKICAgICAgICAgICAgICAgICAgc3RhcnJlZDogaW5kZXguc3RhcnJlZC5zdGFycmVkKHRoaXMucGF0aCksCiAgICAgICAgICAgICAgICAgIGZyb250bWF0dGVyOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5mcm9udG1hdHRlciksCiAgICAgICAgICAgICAgICAgIGV4dDogdGhpcy5leHRlbnNpb24oKSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgfTsKICAgICAgICAgIC8vIEFkZCB0aGUgY3VycmVudCBkYXkgaWYgcHJlc2VudC4KICAgICAgICAgIGlmICh0aGlzLmRheSkKICAgICAgICAgICAgICByZXN1bHQuZmlsZS5kYXkgPSB0aGlzLmRheTsKICAgICAgICAgIC8vIFRoZW4gYXBwZW5kIHRoZSBjb21wdXRlZCBmaWVsZHMuCiAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgdGhpcy5maWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgaWYgKGtleSBpbiByZXN1bHQpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBEb24ndCBhbGxvdyBmaWVsZHMgdG8gb3ZlcnJpZGUgZXhpc3Rpbmcga2V5cy4KICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogIH0KICAvKiogQSBsaXN0IGl0ZW0gaW5zaWRlIG9mIGEgbGlzdC4gKi8KICBjbGFzcyBMaXN0SXRlbSB7CiAgICAgIGNvbnN0cnVjdG9yKGluaXQpIHsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgaW5pdCk7CiAgICAgICAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZmllbGRzIHx8IG5ldyBNYXAoKTsKICAgICAgICAgIHRoaXMudGFncyA9IHRoaXMudGFncyB8fCBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbiB8fCBbXTsKICAgICAgICAgIHRoaXMubGlua3MgPSB0aGlzLmxpbmtzIHx8IFtdOwogICAgICB9CiAgICAgIGlkKCkgewogICAgICAgICAgcmV0dXJuIGAke3RoaXMuZmlsZSgpLnBhdGh9LSR7dGhpcy5saW5lfWA7CiAgICAgIH0KICAgICAgZmlsZSgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmxpbmsudG9GaWxlKCk7CiAgICAgIH0KICAgICAgbWFya2Rvd24oKSB7CiAgICAgICAgICBpZiAodGhpcy50YXNrKQogICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN5bWJvbH0gWyR7dGhpcy50YXNrLmNvbXBsZXRlZCA/ICJ4IiA6ICIgIn1dICR7dGhpcy50ZXh0fWA7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc3ltYm9sfSAke3RoaXMudGV4dH1gOwogICAgICB9CiAgICAgIGNyZWF0ZWQoKSB7CiAgICAgICAgICB2YXIgX2EsIF9iLCBfYzsKICAgICAgICAgIHJldHVybiAoX2MgPSAoKF9iID0gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiY3RpbWUiKSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogdGhpcy5maWVsZHMuZ2V0KCJjZGF5IikpKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NbMF07CiAgICAgIH0KICAgICAgZHVlKCkgewogICAgICAgICAgdmFyIF9hLCBfYiwgX2M7CiAgICAgICAgICByZXR1cm4gKF9jID0gKChfYiA9IChfYSA9IHRoaXMuZmllbGRzLmdldCgiZHVlIikpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmllbGRzLmdldCgiZHVldGltZSIpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0aGlzLmZpZWxkcy5nZXQoImR1ZWRheSIpKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jWzBdOwogICAgICB9CiAgICAgIGNvbXBsZXRlZCgpIHsKICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDsKICAgICAgICAgIHJldHVybiAoX2QgPSAoKF9jID0gKF9iID0gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0ZWQiKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0aW9uIikpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRoaXMuZmllbGRzLmdldCgiY29tcHRpbWUiKSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdGhpcy5maWVsZHMuZ2V0KCJjb21wZGF5IikpKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RbMF07CiAgICAgIH0KICAgICAgc3RhcnQoKSB7CiAgICAgICAgICB2YXIgX2E7CiAgICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMF07CiAgICAgIH0KICAgICAgc2NoZWR1bGVkKCkgewogICAgICAgICAgdmFyIF9hOwogICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuZmllbGRzLmdldCgic2NoZWR1bGVkIikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVswXTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovCiAgICAgIHNlcmlhbGl6ZShjYWNoZSkgewogICAgICAgICAgLy8gTWFwIGNoaWxkcmVuIHRvIHRoZWlyIHNlcmlhbGl6ZWQvZGUtZHVwbGljYXRlZCBlcXVpdmFsZW50cyByaWdodCBhd2F5LgogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgc3ltYm9sOiB0aGlzLnN5bWJvbCwKICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssCiAgICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLAogICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCwKICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogdGhpcy5saW5lQ291bnQsCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LAogICAgICAgICAgICAgIG91dGxpbmtzOiBBcnJheS5mcm9tKHRoaXMubGlua3MpLAogICAgICAgICAgICAgIHBhdGg6IHRoaXMubGluay5wYXRoLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwKICAgICAgICAgICAgICB0YXNrOiAhIXRoaXMudGFzaywKICAgICAgICAgICAgICBhbm5vdGF0ZWQ6IHRoaXMuZmllbGRzLnNpemUgPiAwLAogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksCiAgICAgICAgICAgICAgc3VidGFza3M6IGNoaWxkcmVuLAogICAgICAgICAgICAgIHJlYWw6ICEhdGhpcy50YXNrLAogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuCiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHRoaXMucGFyZW50IHx8IHRoaXMucGFyZW50ID09PSAwKQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsKICAgICAgICAgIGlmICh0aGlzLmJsb2NrSWQpCiAgICAgICAgICAgICAgcmVzdWx0LmJsb2NrSWQgPSB0aGlzLmJsb2NrSWQ7CiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7CiAgICAgICAgICBpZiAodGhpcy50YXNrKSB7CiAgICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9IHRoaXMudGFzay5zdGF0dXM7CiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsKICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGVkID0gdGhpcy50YXNrLmNvbXBsZXRlZDsKICAgICAgICAgICAgICByZXN1bHQuZnVsbHlDb21wbGV0ZWQgPSB0aGlzLnRhc2suZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7CiAgICAgICAgICAgICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jcmVhdGVkID0gVmFsdWVzLmRlZXBDb3B5KGNyZWF0ZWQpOwogICAgICAgICAgICAgIGlmIChkdWUpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5kdWUgPSBWYWx1ZXMuZGVlcENvcHkoZHVlKTsKICAgICAgICAgICAgICBpZiAoY29tcGxldGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOwogICAgICAgICAgICAgIGlmIChzdGFydCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gVmFsdWVzLmRlZXBDb3B5KHN0YXJ0KTsKICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuc2NoZWR1bGVkID0gVmFsdWVzLmRlZXBDb3B5KHNjaGVkdWxlZCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vIENvbnZlcnNpb24gLyBTZXJpYWxpemF0aW9uIFV0aWxpdGllcyAvLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovCiAgY2xhc3MgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSB7CiAgICAgIGNvbnN0cnVjdG9yKGxpc3RJdGVtcykgewogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsKICAgICAgICAgIHRoaXMuY2FjaGUgPSB7fTsKICAgICAgICAgIHRoaXMuc2VlbiA9IG5ldyBTZXQoKTsKICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQogICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1zW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIGdldChsaW5lbm8pIHsKICAgICAgICAgIGlmIChsaW5lbm8gaW4gdGhpcy5jYWNoZSkKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtsaW5lbm9dOwogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coYERhdGF2aWV3OiBFbmNvdW50ZXJlZCBhIGNpcmN1bGFyIGxpc3QgKGxpbmUgbnVtYmVyICR7bGluZW5vfTsgY2hpbGRyZW4gJHt0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLmNoaWxkcmVuLmpvaW4oIiwgIil9KWApOwogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnNlZW4uYWRkKGxpbmVubyk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5saXN0SXRlbXNbbGluZW5vXS5zZXJpYWxpemUodGhpcyk7CiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIGZ1bmN0aW9uIGFkZEZpZWxkcyhmaWVsZHMsIHRhcmdldCkgewogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZXMubGVuZ3RoID09IDEgPyB2YWx1ZXNbMF0gOiB2YWx1ZXM7CiAgICAgIH0KICAgICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8qKiBDb21tb24gdXRpbGl0aWVzIGZvciBleHRyYWN0aW5nIHRhZ3MsIGxpbmtzLCBhbmQgb3RoZXIgYnVzaW5lc3MgZnJvbSBtZXRhZGF0YS4gKi8KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7CiAgLyoqIEV4dHJhY3QgYWxsIHRhZ3MgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0VGFncyQxKHNvdXJjZSkgewogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICBsZXQgbWF0Y2hlcyA9IHNvdXJjZS5tYXRjaEFsbChQT1RFTlRJQUxfVEFHX01BVENIRVIpOwogICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7CiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOwogICAgICAgICAgaWYgKHBhcnNlZC5zdGF0dXMpCiAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZWQudmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvKiogSW1wb3J0ZXIgZm9yIG1hcmtkb3duIGRvY3VtZW50cy4gKi8KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLwogIGZ1bmN0aW9uIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOwogICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOwogICAgICBsZXQgbGlua3MgPSBbXTsKICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuCiAgICAgIChtZXRhZGF0YS50YWdzIHx8IFtdKS5mb3JFYWNoKHQgPT4gdGFncy5hZGQodC50YWcuc3RhcnRzV2l0aCgiIyIpID8gdC50YWcgOiAiIyIgKyB0LnRhZykpOwogICAgICAvLyBGcm9udC1tYXR0ZXIgZmlsZSB0YWdzLCBhbGlhc2VzLCBBTkQgZnJvbnRtYXR0ZXIgcHJvcGVydGllcy4KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7CiAgICAgICAgICBmb3IgKGxldCB0YWcgb2YgZXh0cmFjdFRhZ3MobWV0YWRhdGEuZnJvbnRtYXR0ZXIpKSB7CiAgICAgICAgICAgICAgaWYgKCF0YWcuc3RhcnRzV2l0aCgiIyIpKQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7CiAgICAgICAgICAgICAgdGFncy5hZGQodGFnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkKICAgICAgICAgICAgICBhbGlhc2VzLmFkZChhbGlhcyk7CiAgICAgICAgICBsZXQgZnJvbnRGaWVsZHMgPSBwYXJzZUZyb250bWF0dGVyKG1ldGFkYXRhLmZyb250bWF0dGVyKTsKICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsKICAgICAgICAgICAgICBpZiAoa2V5ID09ICJwb3NpdGlvbiIpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gQWRkIGZyb250bWF0dGVyIGxpbmtzIHRvIGxpbmtzLgogICAgICBpZiAobWV0YWRhdGEuZnJvbnRtYXR0ZXJMaW5rcykgewogICAgICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5mcm9udG1hdHRlckxpbmtzIHx8IFtdKSB7CiAgICAgICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvLyBMaW5rcyBpbiBtZXRhZGF0YS4KICAgICAgY29uc3QgbGlua3NCeUxpbmUgPSB7fTsKICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICBjb25zdCBsaW5lID0gcmF3TGluay5wb3NpdGlvbi5zdGFydC5saW5lOwogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIGlmICghKGxpbmUgaW4gbGlua3NCeUxpbmUpKQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdID0gW2xpbmtdOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdLnB1c2gobGluayk7CiAgICAgIH0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuCiAgICAgIGZvciAobGV0IHJhd0VtYmVkIG9mIG1ldGFkYXRhLmVtYmVkcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3RW1iZWQubGluaywgdHJ1ZSwgcmF3RW1iZWQuZGlzcGxheVRleHQpOwogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7CiAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspOwogICAgICAgICAgaWYgKCEobGluZSBpbiBsaW5rc0J5TGluZSkpCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0ucHVzaChsaW5rKTsKICAgICAgfQogICAgICAvLyBNZXJnZSBmcm9udG1hdHRlciBmaWVsZHMgd2l0aCBwYXJzZWQgZmllbGRzLgogICAgICBsZXQgbWFya2Rvd25EYXRhID0gcGFyc2VNYXJrZG93bihwYXRoLCBjb250ZW50cy5zcGxpdCgiXG4iKSwgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOwogICAgICAvLyBTdHJpcCAicG9zaXRpb24iIGZyb20gZnJvbnRtYXR0ZXIgc2luY2UgaXQgaXMgT2JzaWRpYW4gZGV0ZXJtaW5lZC4KICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBtZXRhZGF0YS5mcm9udG1hdHRlciB8fCB7fTsKICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpCiAgICAgICAgICBkZWxldGUgZnJvbnRtYXR0ZXJbInBvc2l0aW9uIl07CiAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKHBhdGgsIHsKICAgICAgICAgIHRhZ3MsCiAgICAgICAgICBhbGlhc2VzLAogICAgICAgICAgbGlua3MsCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLAogICAgICAgICAgZmllbGRzOiBmaW5hbGl6ZUlubGluZUZpZWxkcyhmaWVsZHMpLAogICAgICAgICAgZnJvbnRtYXR0ZXI6IGZyb250bWF0dGVyLAogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksCiAgICAgICAgICBtdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhzdGF0Lm10aW1lKSwKICAgICAgICAgIHNpemU6IHN0YXQuc2l6ZSwKICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwKICAgICAgfSk7CiAgfQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovCiAgZnVuY3Rpb24gZXh0cmFjdFRhZ3MobWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ0tleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKHQgPT4gdC50b0xvd2VyQ2FzZSgpID09ICJ0YWdzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZyIpOwogICAgICByZXR1cm4gdGFnS2V5cwogICAgICAgICAgLm1hcChrID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKG1ldGFkYXRhW2tdLCAvWyxcc10rLykpCiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOwogIH0KICAvKiogRXh0cmFjdCBhbGlhc2VzIGludGVsbGlnZW50bHkgZnJvbSBmcm9udG1hdHRlci4gSGFuZGxlcyBhcnJheXMsIG51bWJlcnMsIGFuZCBzdHJpbmdzLiAgKi8KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgewogICAgICBsZXQgYWxpYXNLZXlzID0gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXMiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXNlcyIpOwogICAgICBjb25zdCByZXN1bHQgPSBbXTsKICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgewogICAgICAgICAgY29uc3QgdmFsdWUgPSBtZXRhZGF0YVtrZXldOwogICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi52YWx1ZS5tYXAodiA9PiAoIiIgKyB2KS50cmltKCkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5zcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyh2YWx1ZSwgLywvKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgLyoqIFNwbGl0IGEgZnJvbnRtYXR0ZXIgbGlzdCBpbnRvIHNlcGFyYXRlIGVsZW1lbnRzOyBoYW5kbGVzIGFjdHVhbCBsaXN0cywgY29tbWEgc2VwYXJhdGVkIGxpc3RzLCBhbmQgc2luZ2xlIGVsZW1lbnRzLiAqLwogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7CiAgICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gW107CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7CiAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgICAgICAgIC5maWx0ZXIocyA9PiAhIXMpCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkKICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pOwogICAgICB9CiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4KICAgICAgcmV0dXJuICgiIiArIGRhdGEpCiAgICAgICAgICAuc3BsaXQob24pCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQogICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKQogICAgICAgICAgLmZpbHRlcih0ID0+IHQubGVuZ3RoID4gMCk7CiAgfQogIC8qKiBQYXJzZSByYXcgKG5ld2xpbmUtZGVsaW1pdGVkKSBtYXJrZG93biwgcmV0dXJuaW5nIGlubGluZSBmaWVsZHMsIGxpc3QgaXRlbXMsIGFuZCBvdGhlciBtZXRhZGF0YS4gKi8KICBmdW5jdGlvbiBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgLy8gRXh0cmFjdCB0YXNrIGRhdGEgYW5kIGFwcGVuZCB0aGUgZ2xvYmFsIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlbSB0byBvdXIgZmllbGRzLgogICAgICBsZXQgW2xpc3RzLCBleHRyYURhdGFdID0gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50cywgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7CiAgICAgICAgICBpZiAoIWZpZWxkcy5oYXMoa2V5KSkKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgZmllbGRzLmdldChrZXkpLmNvbmNhdCh2YWx1ZXMpKTsKICAgICAgfQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQKICAgICAgLy8gY2FsbG91dHMpLi4uIHRoaXMgbWVhbnMgd2UgbWlnaHQgc2VlIG1ldGFkYXRhIHR3aWNlLCBzbyBza2lwIHRoZW0gbm93LiBWZXJ5IGFubm95aW5nLgogICAgICBjb25zdCBsaXN0TGluZXNUb1NraXAgPSBuZXcgU2V0KCk7CiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgewogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lLmxpbmVDb3VudDsgaSsrKQogICAgICAgICAgICAgIGxpc3RMaW5lc1RvU2tpcC5hZGQobGluZS5saW5lICsgaSk7CiAgICAgIH0KICAgICAgLy8gT25seSBwYXJzZSBoZWFkaW5nIGFuZCBwYXJhZ3JhcGggZWxlbWVudHMgZm9yIGlubGluZSBmaWVsZHM7IHdlIHdpbGwgcGFyc2UgbGlzdCBtZXRhZGF0YSBzZXBhcmF0ZWx5LgogICAgICBmb3IgKGxldCBzZWN0aW9uIG9mIG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKSB7CiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBmb3IgKGxldCBsaW5lbm8gPSBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmU7IGxpbmVubyA8PSBzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lbm8rKykgewogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsKICAgICAgICAgICAgICBpZiAobGluZSA9PSB1bmRlZmluZWQgfHwgbGluZSA9PSBudWxsKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAvLyBGYXN0IGJhaWwtb3V0IGZvciBsaW5lcyB0aGF0IGFyZSB0b28gbG9uZyBvciBkbyBub3QgY29udGFpbiAnOjonLgogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7CiAgICAgICAgICAgICAgaWYgKGlubGluZUZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGlmaWVsZCBvZiBpbmxpbmVGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsKICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsKICB9CiAgLy8gVE9ETzogQ29uc2lkZXIgdXNpbmcgYW4gYWN0dWFsIHBhcnNlciBpbiBsZWl1IG9mIGEgbW9yZSBleHBlbnNpdmUgcmVnZXguCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7CiAgLyoqCiAgICogUGFyc2UgbGlzdCBpdGVtcyBmcm9tIHRoZSBwYWdlICsgbWV0YWRhdGEuIFRoaXMgcmVxdWlyZXMgc29tZSBhZGRpdGlvbmFsIHBhcnNpbmcgYWJvdmUgd2hhdGV2ZXIgT2JzaWRpYW4gcHJvdmlkZXMsCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuCiAgICovCiAgZnVuY3Rpb24gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50LCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgdmFyIF9hOwogICAgICBsZXQgY2FjaGUgPSB7fTsKICAgICAgLy8gUGxhY2UgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gdGhlIGNhY2hlIGJlZm9yZSByZXNvbHZpbmcgY2hpbGRyZW4gJiBtZXRhZGF0YSByZWxhdGlvbnNoaXBzLgogICAgICBmb3IgKGxldCByYXdFbGVtZW50IG9mIG1ldGFkYXRhLmxpc3RJdGVtcyB8fCBbXSkgewogICAgICAgICAgLy8gTWF0Y2ggb24gdGhlIGZpcnN0IGxpbmUgdG8gZ2V0IHRoZSBzeW1ib2wgYW5kIGZpcnN0IGxpbmUgb2YgdGV4dC4KICAgICAgICAgIGxldCByYXdNYXRjaCA9IExJU1RfSVRFTV9SRUdFWC5leGVjKGNvbnRlbnRbcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lXSk7CiAgICAgICAgICBpZiAoIXJhd01hdGNoKQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgLy8gQW5kIHRoZW4gc3RyaXAgdW5uZWNlc3Nhcnkgc3BhY2luZyBmcm9tIHRoZSByZW1haW5pbmcgbGluZXMuCiAgICAgICAgICBsZXQgdGV4dFBhcnRzID0gW3Jhd01hdGNoWzNdXQogICAgICAgICAgICAgIC5jb25jYXQoY29udGVudC5zbGljZShyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUgKyAxLCByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lICsgMSkpCiAgICAgICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKTsKICAgICAgICAgIGxldCB0ZXh0V2l0aE5ld2xpbmUgPSB0ZXh0UGFydHMuam9pbigiXG4iKTsKICAgICAgICAgIGxldCB0ZXh0Tm9OZXdsaW5lID0gdGV4dFBhcnRzLmpvaW4oIiAiKTsKICAgICAgICAgIC8vIEZpbmQgdGhlIGxpc3QgdGhhdCB3ZSBhcmUgYSBwYXJ0IG9mIGJ5IGxpbmUuCiAgICAgICAgICBsZXQgY29udGFpbmluZ0xpc3RJZCA9IChtZXRhZGF0YS5zZWN0aW9ucyB8fCBbXSkuZmluZEluZGV4KHMgPT4gcy50eXBlID09ICJsaXN0IiAmJgogICAgICAgICAgICAgIHMucG9zaXRpb24uc3RhcnQubGluZSA8PSByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUgJiYKICAgICAgICAgICAgICBzLnBvc2l0aW9uLmVuZC5saW5lID49IHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSk7CiAgICAgICAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIHdlIGJlbG9uZyB0byBhcyB3ZWxsLgogICAgICAgICAgbGV0IHNlY3Rpb25OYW1lID0gZmluZFByZXZpb3VzSGVhZGVyKHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSwgbWV0YWRhdGEuaGVhZGluZ3MgfHwgW10pOwogICAgICAgICAgbGV0IHNlY3Rpb25MaW5rID0gc2VjdGlvbk5hbWUgPT09IHVuZGVmaW5lZCA/IExpbmsuZmlsZShwYXRoKSA6IExpbmsuaGVhZGVyKHBhdGgsIHNlY3Rpb25OYW1lKTsKICAgICAgICAgIGxldCBjbG9zZXN0TGluayA9IHJhd0VsZW1lbnQuaWQgPT09IHVuZGVmaW5lZCA/IHNlY3Rpb25MaW5rIDogTGluay5ibG9jayhwYXRoLCByYXdFbGVtZW50LmlkKTsKICAgICAgICAgIC8vIEdhdGhlciBhbnkgbGlua3MgdGhhdCBvY2N1ciBvbiB0aGUgc2FtZSBsaW5lcyBhcyB0aGUgdGFzay4KICAgICAgICAgIGNvbnN0IGxpbmtzID0gW107CiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lOyBsaW5lIDw9IHJhd0VsZW1lbnQucG9zaXRpb24uZW5kLmxpbmU7IGxpbmUrKykgewogICAgICAgICAgICAgIGlmIChsaW5rc0J5TGluZVtsaW5lXSkKICAgICAgICAgICAgICAgICAgbGlua3MucHVzaCguLi5saW5rc0J5TGluZVtsaW5lXSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBDb25zdHJ1Y3QgdW5pdmVyc2FsIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZWxlbWVudCAoYmVmb3JlIHRhc2tzKS4KICAgICAgICAgIGxldCBpdGVtID0gbmV3IExpc3RJdGVtKHsKICAgICAgICAgICAgICBzeW1ib2w6IHJhd01hdGNoWzFdLAogICAgICAgICAgICAgIGxpbms6IGNsb3Nlc3RMaW5rLAogICAgICAgICAgICAgIGxpbmtzOiBsaW5rcywKICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uTGluaywKICAgICAgICAgICAgICB0ZXh0OiB0ZXh0V2l0aE5ld2xpbmUsCiAgICAgICAgICAgICAgdGFnczogZXh0cmFjdFRhZ3MkMSh0ZXh0Tm9OZXdsaW5lKSwKICAgICAgICAgICAgICBsaW5lOiByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsCiAgICAgICAgICAgICAgbGluZUNvdW50OiByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lIC0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwKICAgICAgICAgICAgICBsaXN0OiBjb250YWluaW5nTGlzdElkID09IC0xID8gLTEgOiAobWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pW2NvbnRhaW5pbmdMaXN0SWRdLnBvc2l0aW9uLnN0YXJ0LmxpbmUsCiAgICAgICAgICAgICAgcG9zaXRpb246IHJhd0VsZW1lbnQucG9zaXRpb24sCiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLAogICAgICAgICAgICAgIGJsb2NrSWQ6IHJhd0VsZW1lbnQuaWQsCiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChyYXdFbGVtZW50LnBhcmVudCA+PSAwICYmIHJhd0VsZW1lbnQucGFyZW50ICE9IGl0ZW0ubGluZSkKICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHJhd0VsZW1lbnQucGFyZW50OwogICAgICAgICAgLy8gU2V0IHVwIHRoZSBiYXNpYyB0YXNrIGluZm9ybWF0aW9uIGZvciBub3csIHRob3VnaCB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBgZnVsbHlDb21wdXRlZGAgbGF0ZXIuCiAgICAgICAgICBpZiAocmF3RWxlbWVudC50YXNrKSB7CiAgICAgICAgICAgICAgaXRlbS50YXNrID0gewogICAgICAgICAgICAgICAgICBzdGF0dXM6IHJhd0VsZW1lbnQudGFzaywKICAgICAgICAgICAgICAgICAgY2hlY2tlZDogcmF3RWxlbWVudC50YXNrICE9ICIiICYmIHJhd0VsZW1lbnQudGFzayAhPSAiICIsCiAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLAogICAgICAgICAgICAgICAgICBmdWxseUNvbXBsZXRlZDogcmF3RWxlbWVudC50YXNrID09ICJYIiB8fCByYXdFbGVtZW50LnRhc2sgPT0gIngiLAogICAgICAgICAgICAgIH07CiAgICAgICAgICB9CiAgICAgICAgICAvLyBFeHRyYWN0IGlubGluZSBmaWVsZHM7IGV4dHJhY3QgZnVsbC1saW5lIGZpZWxkcyBvbmx5IGlmIHdlIGFyZSBOT1QgYSB0YXNrLgogICAgICAgICAgaXRlbS5maWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGV4dHJhY3RJbmxpbmVGaWVsZHModGV4dE5vTmV3bGluZSwgdHJ1ZSkpCiAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZWxlbWVudCwgaXRlbS5maWVsZHMpOwogICAgICAgICAgaWYgKCFyYXdFbGVtZW50LnRhc2sgJiYgaXRlbS5maWVsZHMuc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgbGV0IGZ1bGxMaW5lID0gZXh0cmFjdEZ1bGxMaW5lRmllbGQodGV4dE5vTmV3bGluZSk7CiAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChmdWxsTGluZSwgaXRlbS5maWVsZHMpOwogICAgICAgICAgfQogICAgICAgICAgY2FjaGVbaXRlbS5saW5lXSA9IGl0ZW07CiAgICAgIH0KICAgICAgLy8gVHJlZSB1cGRhdGluZyBwYXNzZXMuIFVwZGF0ZSBjaGlsZCBsaXN0cy4gUHJvcG9nYXRlIG1ldGFkYXRhIHVwIHRvIHBhcmVudCB0YXNrcy4gVXBkYXRlIHRhc2sgYGZ1bGx5Q29tcGxldGVkYC4KICAgICAgbGV0IGxpdGVyYWxzID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBsaXN0SXRlbSBvZiBPYmplY3QudmFsdWVzKGNhY2hlKSkgewogICAgICAgICAgLy8gUGFzcyAxOiBVcGRhdGUgY2hpbGQgbGlzdHMuCiAgICAgICAgICBpZiAobGlzdEl0ZW0ucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgbGlzdEl0ZW0ucGFyZW50IGluIGNhY2hlKSB7CiAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IGNhY2hlW2xpc3RJdGVtLnBhcmVudF07CiAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobGlzdEl0ZW0ubGluZSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBQYXNzIDI6IFByb3BvZ2F0ZSBtZXRhZGF0YSB1cCB0byB0aGUgcGFyZW50IHRhc2sgb3Igcm9vdCBlbGVtZW50LgogICAgICAgICAgaWYgKCFsaXN0SXRlbS50YXNrKSB7CiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhsaXRlcmFscywgbGlzdEl0ZW0uZmllbGRzKTsKICAgICAgICAgICAgICAvLyBUT0RPIChibGFja3NtaXRoZ3UpOiBUaGUgYmVsb3cgY29kZSBwcm9wZXJseSBwcm9wb2dhdGVzIG1ldGFkYXRhIHVwIHRvIHRoZSBuZWFyZXN0IHRhc2ssIHdoaWNoIGlzIHRoZQogICAgICAgICAgICAgIC8vIG1vcmUgaW50dWl0aXZlIGJlaGF2aW9yLiBGb3Igbm93LCB0aG91Z2gsIHdlIHdpbGwga2VlcCB0aGUgZXhpc3RpbmcgbG9naWMuCiAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICBsZXQgcm9vdDogTGlzdEl0ZW0gfCB1bmRlZmluZWQgPSBsaXN0SXRlbTsKICAgICAgICAgICAgICB3aGlsZSAoISFyb290ICYmICFyb290LnRhc2spIHJvb3QgPSBjYWNoZVtyb290LnBhcmVudCA/PyAtMV07CgogICAgICAgICAgICAgIC8vIElmIHRoZSByb290IGlzIG51bGwsIGFwcGVuZCB0aGlzIG1ldGFkYXRhIHRvIHRoZSByb290OyBvdGhlcndpc2UsIGFwcGVuZCB0byB0aGUgdGFzay4KICAgICAgICAgICAgICBtZXJnZUZpZWxkR3JvdXBzKHJvb3QgPT09IHVuZGVmaW5lZCB8fCByb290ID09IG51bGwgPyBsaXRlcmFscyA6IHJvb3QuZmllbGRzLCBsaXN0SXRlbS5maWVsZHMpOwogICAgICAgICAgICAgICovCiAgICAgICAgICB9CiAgICAgICAgICAvLyBQYXNzIDM6IFByb3BvZ2F0ZSBgZnVsbHlDb21wbGV0ZWRgIHVwIHRoZSB0YXNrIHRyZWUuIFRoaXMgaXMgYSBsaXR0bGUgbGVzcyBlZmZpY2llbnQgdGhhbiBqdXN0IGRvaW5nIGEgc2ltcGxlCiAgICAgICAgICAvLyBERlMgdXNpbmcgdGhlIGNoaWxkcmVuIElEcywgYnV0IGl0J3MgcHJvYmFibHkgZmluZS4KICAgICAgICAgIGlmIChsaXN0SXRlbS50YXNrKSB7CiAgICAgICAgICAgICAgbGV0IGN1cnIgPSBsaXN0SXRlbTsKICAgICAgICAgICAgICB3aGlsZSAoISFjdXJyKSB7CiAgICAgICAgICAgICAgICAgIGlmIChjdXJyLnRhc2spCiAgICAgICAgICAgICAgICAgICAgICBjdXJyLnRhc2suZnVsbHlDb21wbGV0ZWQgPSBjdXJyLnRhc2suZnVsbHlDb21wbGV0ZWQgJiYgbGlzdEl0ZW0udGFzay5jb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgIGN1cnIgPSBjYWNoZVsoX2EgPSBjdXJyLnBhcmVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogLTFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107CiAgfQogIC8qKiBBdHRlbXB0IHRvIGZpbmQgYSBkYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGFnZSBmcm9tIG1ldGFkYXRhIG9yIGZpbGVuYW1lcy4gKi8KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsKICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kOwogICAgICBmb3IgKGxldCBrZXkgb2YgZmllbGRzLmtleXMoKSkgewogICAgICAgICAgaWYgKCEoa2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gImRhdGUiIHx8IGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXkiKSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGxldCB2YWx1ZSA9IGZpZWxkcy5nZXQoa2V5KTsKICAgICAgICAgIGlmIChWYWx1ZXMuaXNEYXRlKHZhbHVlKSkgewogICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwICYmIFZhbHVlcy5pc0RhdGUodmFsdWVbMF0pKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlWzBdOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzTGluayh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgZGF0ZSA9IChfYyA9IChfYSA9IGV4dHJhY3REYXRlKHZhbHVlLnBhdGgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBleHRyYWN0RGF0ZSgoX2IgPSB2YWx1ZS5zdWJwYXRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAiIikpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IGV4dHJhY3REYXRlKChfZCA9IHZhbHVlLmRpc3BsYXkpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6ICIiKTsKICAgICAgICAgICAgICBpZiAoZGF0ZSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7CiAgfQogIC8qKiBSZWN1cnNpdmVseSBjb252ZXJ0IGZyb250bWF0dGVyIGludG8gZmllbGRzLiBXZSBoYXZlIHRvIGRhbmNlIGFyb3VuZCBZQU1MIHN0cnVjdHVyZS4gKi8KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VGcm9udG1hdHRlcihjaGlsZCkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IERhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUpOwogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2U7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgb2JqZWN0ID0gdmFsdWU7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBwYXJzZUZyb250bWF0dGVyKG9iamVjdFtrZXldKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKSB7CiAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gRVhQUkVTU0lPTi5kYXRlLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2UudmFsdWU7CiAgICAgICAgICBsZXQgZHVyYXRpb25QYXJzZSA9IEVYUFJFU1NJT04uZHVyYXRpb24ucGFyc2UodmFsdWUpOwogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblBhcnNlLnZhbHVlOwogICAgICAgICAgbGV0IGxpbmtQYXJzZSA9IEVYUFJFU1NJT04uZW1iZWRMaW5rLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBsaW5rUGFyc2UudmFsdWU7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgLy8gQmFja3VwIGlmIHdlIGRvbid0IHVuZGVyc3RhbmQgdGhlIHR5cGUuCiAgICAgIHJldHVybiBudWxsOwogIH0KICAvKiogQWRkIGEgcGFyc2VkIGlubGluZSBmaWVsZCB0byB0aGUgb3V0cHV0IG1hcC4gKi8KICBmdW5jdGlvbiBhZGRSYXdJbmxpbmVGaWVsZChmaWVsZCwgb3V0cHV0KSB7CiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7CiAgfQogIC8qKiBBZGQgYSByYXcgaW5saW5lIGZpZWxkIHRvIGFuIG91dHB1dCBtYXAsIGNhbm9uaWNhbGl6aW5nIGFzIG5lZWRlZC4gKi8KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsKICAgICAgdmFyIF9hOwogICAgICBpZiAoIW91dHB1dC5oYXMoa2V5KSkKICAgICAgICAgIG91dHB1dC5zZXQoa2V5LCBbdmFsdWVdKTsKICAgICAgZWxzZQogICAgICAgICAgKF9hID0gb3V0cHV0LmdldChrZXkpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucHVzaCh2YWx1ZSk7CiAgfQogIC8qKiBHaXZlbiBhIHJhdyBsaXN0IG9mIGlubGluZSBmaWVsZCB2YWx1ZXMsIGFkZCBub3JtYWxpemVkIGtleXMgYW5kIHNxdWFzaCB0aGVtLiAqLwogIGZ1bmN0aW9uIGZpbmFsaXplSW5saW5lRmllbGRzKGZpZWxkcykgewogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuCiAgICAgIGxldCBub3JtYWxpemVkID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOwogICAgICAgICAgaWYgKG5vcm1LZXkgPT0gIiIgfHwgZmllbGRzLmhhcyhub3JtS2V5KSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpCiAgICAgICAgICAgICAgbm9ybWFsaXplZC5zZXQobm9ybUtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7CiAgICAgIH0KICAgICAgLy8gQ29tYmluZSBub3JtYWxpemVkICsgbm9ybWFsIGtleXMuCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOwogICAgICBtZXJnZUZpZWxkR3JvdXBzKGludGVyaW0sIGZpZWxkcyk7CiAgICAgIG1lcmdlRmllbGRHcm91cHMoaW50ZXJpbSwgbm9ybWFsaXplZCk7CiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4KICAgICAgbGV0IHJlc3VsdCA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGludGVyaW0uZW50cmllcygpKSB7CiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpCiAgICAgICAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlWzBdKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBDb3B5IGFsbCBmaWVsZHMgb2YgJ3NvdXJjZScgaW50byAndGFyZ2V0Jy4gKi8KICBmdW5jdGlvbiBtZXJnZUZpZWxkR3JvdXBzKHRhcmdldCwgc291cmNlKSB7CiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7CiAgICAgICAgICBpZiAoIXRhcmdldC5oYXMoa2V5KSkKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgc291cmNlLmdldChrZXkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgdGFyZ2V0LmdldChrZXkpLmNvbmNhdChzb3VyY2UuZ2V0KGtleSkpKTsKICAgICAgfQogIH0KICAvKiogRmluZCB0aGUgaGVhZGVyIHRoYXQgaXMgbW9zdCBpbW1lZGlhdGVseSBhYm92ZSB0aGUgZ2l2ZW4gbGluZSBudW1iZXIuICovCiAgZnVuY3Rpb24gZmluZFByZXZpb3VzSGVhZGVyKGxpbmUsIGhlYWRlcnMpIHsKICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICBpZiAoaGVhZGVyc1swXS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIGxldCBpbmRleCA9IGhlYWRlcnMubGVuZ3RoIC0gMTsKICAgICAgd2hpbGUgKGluZGV4ID49IDAgJiYgaGVhZGVyc1tpbmRleF0ucG9zaXRpb24uc3RhcnQubGluZSA+IGxpbmUpCiAgICAgICAgICBpbmRleC0tOwogICAgICByZXR1cm4gaGVhZGVyc1tpbmRleF0uaGVhZGluZzsKICB9CgogIC8qKiBBY3R1YWwgaW1wb3J0IGltcGxlbWVudGF0aW9uIGJhY2tlbmQuIFRoaXMgbXVzdCByZW1haW4gc2VwYXJhdGUgZnJvbSBgaW1wb3J0LWVudHJ5YCBzaW5jZSBpdCBpcyB1c2VkIHdpdGhvdXQgd2ViIHdvcmtlcnMuICovCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsKICAgICAgcmV0dXJuIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdHMsIG1ldGFkYXRhKTsKICB9CgogIC8qKiBTaW1wbGlmaWVzIHBhc3NpbmcgZGF0YXZpZXcgdmFsdWVzIGFjcm9zcyB0aGUgSlMgd2ViIHdvcmtlciBiYXJyaWVyLiAqLwogIHZhciBUcmFuc2ZlcmFibGU7CiAgKGZ1bmN0aW9uIChUcmFuc2ZlcmFibGUpIHsKICAgICAgLyoqIENvbnZlcnQgYSBsaXRlcmFsIHZhbHVlIHRvIGEgc2VyaWFsaXplci1mcmllbmRseSB0cmFuc2ZlcmFibGUgdmFsdWUuICovCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgewogICAgICAgICAgLy8gSGFuZGxlIHNpbXBsZSB1bml2ZXJzYWwgdHlwZXMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdmFsdWUuZW50cmllcygpKQogICAgICAgICAgICAgICAgICBjb3BpZWQuc2V0KHRyYW5zZmVyYWJsZShrZXkpLCB0cmFuc2ZlcmFibGUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsKICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpCiAgICAgICAgICAgICAgICAgIGNvcGllZC5hZGQodHJhbnNmZXJhYmxlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IFZhbHVlcy53cmFwVmFsdWUodmFsdWUpOwogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSB2YWx1ZTogIiArIHZhbHVlKTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICJfX190cmFuc2Zlci10eXBlIjogImRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmU6IHdyYXBwZWQudmFsdWUuem9uZS5lcXVhbHMoU3lzdGVtWm9uZS5pbnN0YW5jZSkgPyB1bmRlZmluZWQgOiB3cmFwcGVkLnZhbHVlLnpvbmVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB7ICJfX190cmFuc2Zlci10eXBlIjogImR1cmF0aW9uIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAodiA9PiB0cmFuc2ZlcmFibGUodikpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZmVyYWJsZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZSA9IHRyYW5zZmVyYWJsZTsKICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICAgICAgZnVuY3Rpb24gdmFsdWUodHJhbnNmZXJhYmxlKSB7CiAgICAgICAgICBpZiAodHJhbnNmZXJhYmxlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHRyYW5zZmVyYWJsZS5lbnRyaWVzKCkpCiAgICAgICAgICAgICAgICAgIHJlYWwuc2V0KHZhbHVlKGtleSksIHZhbHVlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiByZWFsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHRyYW5zZmVyYWJsZSkKICAgICAgICAgICAgICAgICAgcmVhbC5hZGQodmFsdWUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRyYW5zZmVyYWJsZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0cmFuc2ZlcmFibGUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsKICAgICAgICAgICAgICAgICAgc3dpdGNoICh0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXSkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlRGF0YSA9IHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZURhdGEsIHsgem9uZTogZGF0ZU9wdHMuem9uZSB9KTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnJlY29nbml6ZWQgdHJhbnNmZXIgdHlwZSAnJHt0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXX0nYCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZSh2YWwpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlOwogICAgICB9CiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOwogIH0pKFRyYW5zZmVyYWJsZSB8fCAoVHJhbnNmZXJhYmxlID0ge30pKTsKCiAgLyoqIEVudHJ5LXBvaW50IHNjcmlwdCB1c2VkIGJ5IHRoZSBpbmRleCBhcyBhIHdlYiB3b3JrZXIuICovCiAgLyoqIEFuIGltcG9ydCB3aGljaCBjYW4gZmFpbCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIGNhdWdodCBieSB0aGUgaGFuZGxlci4gKi8KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgaWYgKG1ldGFkYXRhID09PSB1bmRlZmluZWQgfHwgbWV0YWRhdGEgPT09IG51bGwpIHsKICAgICAgICAgIHRocm93IEVycm9yKGBDYW5ub3QgaW5kZXggZmlsZSwgc2luY2UgaXQgaGFzIG5vIE9ic2lkaWFuIGZpbGUgbWV0YWRhdGEuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJ1bkltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpOwogIH0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7CiAgICAgIHRyeSB7CiAgICAgICAgICBsZXQgeyBwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEgfSA9IGV2dC5kYXRhOwogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7CiAgICAgICAgICBwb3N0TWVzc2FnZSh7IHBhdGg6IGV2dC5kYXRhLnBhdGgsIHJlc3VsdDogVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZShyZXN1bHQpIH0pOwogICAgICB9CiAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsCiAgICAgICAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICAgICAgICAgICRlcnJvcjogYEZhaWxlZCB0byBpbmRleCBmaWxlOiAke2V2dC5kYXRhLnBhdGh9OiAke2Vycm9yfWAsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgIH0pOwogICAgICB9CiAgfTsKCn0pKCk7Cgo=', null, false); +var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gdGhlc2UgYXJlbid0IHJlYWxseSBwcml2YXRlLCBidXQgbm9yIGFyZSB0aGV5IHJlYWxseSB1c2VmdWwgdG8gZG9jdW1lbnQKCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBMdXhvbkVycm9yIGV4dGVuZHMgRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkRGF0ZVRpbWVFcnJvciBleHRlbmRzIEx1eG9uRXJyb3IgewogICAgY29uc3RydWN0b3IocmVhc29uKSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIERhdGVUaW1lOiAke3JlYXNvbi50b01lc3NhZ2UoKX1gKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgY2xhc3MgSW52YWxpZEludGVydmFsRXJyb3IgZXh0ZW5kcyBMdXhvbkVycm9yIHsKICAgIGNvbnN0cnVjdG9yKHJlYXNvbikgewogICAgICBzdXBlcihgSW52YWxpZCBJbnRlcnZhbDogJHtyZWFzb24udG9NZXNzYWdlKCl9YCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIEludmFsaWREdXJhdGlvbkVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24pIHsKICAgICAgc3VwZXIoYEludmFsaWQgRHVyYXRpb246ICR7cmVhc29uLnRvTWVzc2FnZSgpfWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkVW5pdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih1bml0KSB7CiAgICAgIHN1cGVyKGBJbnZhbGlkIHVuaXQgJHt1bml0fWApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEx1eG9uRXJyb3Ige30KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KICBjbGFzcyBab25lSXNBYnN0cmFjdEVycm9yIGV4dGVuZHMgTHV4b25FcnJvciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgc3VwZXIoIlpvbmUgaXMgYW4gYWJzdHJhY3QgY2xhc3MiKTsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNvbnN0IG4gPSAibnVtZXJpYyIsCiAgICBzID0gInNob3J0IiwKICAgIGwgPSAibG9uZyI7CgogIGNvbnN0IERBVEVfU0hPUlQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IG4sCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9NRURfV0lUSF9XRUVLREFZID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBzLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogcywKICB9OwoKICBjb25zdCBEQVRFX0ZVTEwgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IGwsCiAgICBkYXk6IG4sCiAgfTsKCiAgY29uc3QgREFURV9IVUdFID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICB9OwoKICBjb25zdCBUSU1FX1NJTVBMRSA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgVElNRV9XSVRIX1NFQ09ORFMgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgdGltZVpvbmVOYW1lOiBzLAogIH07CgogIGNvbnN0IFRJTUVfV0lUSF9MT05HX09GRlNFVCA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgY29uc3QgVElNRV8yNF9TSU1QTEUgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfU0VDT05EUyA9IHsKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICBob3VyQ3ljbGU6ICJoMjMiLAogIH07CgogIGNvbnN0IFRJTUVfMjRfV0lUSF9TSE9SVF9PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQgPSB7CiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogICAgaG91ckN5Y2xlOiAiaDIzIiwKICAgIHRpbWVab25lTmFtZTogbCwKICB9OwoKICBjb25zdCBEQVRFVElNRV9TSE9SVCA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbiwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgfTsKCiAgY29uc3QgREFURVRJTUVfU0hPUlRfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBuLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHNlY29uZDogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9NRUQgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFMgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgc2Vjb25kOiBuLAogIH07CgogIGNvbnN0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkgPSB7CiAgICB5ZWFyOiBuLAogICAgbW9udGg6IHMsCiAgICBkYXk6IG4sCiAgICB3ZWVrZGF5OiBzLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgaG91cjogbiwKICAgIG1pbnV0ZTogbiwKICAgIHRpbWVab25lTmFtZTogcywKICB9OwoKICBjb25zdCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUyA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IHMsCiAgfTsKCiAgY29uc3QgREFURVRJTUVfSFVHRSA9IHsKICAgIHllYXI6IG4sCiAgICBtb250aDogbCwKICAgIGRheTogbiwKICAgIHdlZWtkYXk6IGwsCiAgICBob3VyOiBuLAogICAgbWludXRlOiBuLAogICAgdGltZVpvbmVOYW1lOiBsLAogIH07CgogIGNvbnN0IERBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTID0gewogICAgeWVhcjogbiwKICAgIG1vbnRoOiBsLAogICAgZGF5OiBuLAogICAgd2Vla2RheTogbCwKICAgIGhvdXI6IG4sCiAgICBtaW51dGU6IG4sCiAgICBzZWNvbmQ6IG4sCiAgICB0aW1lWm9uZU5hbWU6IGwsCiAgfTsKCiAgLyoqCiAgICogQGludGVyZmFjZQogICAqLwogIGNsYXNzIFpvbmUgewogICAgLyoqCiAgICAgKiBUaGUgdHlwZSBvZiB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB0eXBlKCkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIG5hbWUgb2YgdGhpcyB6b25lLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICBnZXQgaWFuYU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLm5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIG9mZnNldCBpcyBrbm93biB0byBiZSBmaXhlZCBmb3IgdGhlIHdob2xlIHllYXIuCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvZmZzZXQncyBjb21tb24gbmFtZSAoc3VjaCBhcyBFU1QpIGF0IHRoZSBzcGVjaWZpZWQgdGltZXN0YW1wCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gYWZmZWN0IHRoZSBmb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmZvcm1hdCAtIFdoYXQgc3R5bGUgb2Ygb2Zmc2V0IHRvIHJldHVybi4gQWNjZXB0cyAnbG9uZycgb3IgJ3Nob3J0Jy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLmxvY2FsZSAtIFdoYXQgbG9jYWxlIHRvIHJldHVybiB0aGUgb2Zmc2V0IG5hbWUgaW4uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIG9mZnNldE5hbWUodHMsIG9wdHMpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG9mZnNldCdzIHZhbHVlIGFzIGEgc3RyaW5nCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0cyAtIEVwb2NoIG1pbGxpc2Vjb25kcyBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBvZmZzZXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgLSBXaGF0IHN0eWxlIG9mIG9mZnNldCB0byByZXR1cm4uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0cyAnbmFycm93JywgJ3Nob3J0Jywgb3IgJ3RlY2hpZScuIFJldHVybmluZyAnKzYnLCAnKzA2OjAwJywgb3IgJyswNjAwJyByZXNwZWN0aXZlbHkKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgdGhyb3cgbmV3IFpvbmVJc0Fic3RyYWN0RXJyb3IoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgZm9yIHRoaXMgem9uZSBhdCB0aGUgc3BlY2lmaWVkIHRpbWVzdGFtcC4KICAgICAqIEBhYnN0cmFjdAogICAgICogQHBhcmFtIHtudW1iZXJ9IHRzIC0gRXBvY2ggbWlsbGlzZWNvbmRzIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBvZmZzZXQKICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIFpvbmUgaXMgZXF1YWwgdG8gYW5vdGhlciB6b25lCiAgICAgKiBAYWJzdHJhY3QKICAgICAqIEBwYXJhbSB7Wm9uZX0gb3RoZXJab25lIC0gdGhlIHpvbmUgdG8gY29tcGFyZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyWm9uZSkgewogICAgICB0aHJvdyBuZXcgWm9uZUlzQWJzdHJhY3RFcnJvcigpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBab25lIGlzIHZhbGlkLgogICAgICogQGFic3RyYWN0CiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHRocm93IG5ldyBab25lSXNBYnN0cmFjdEVycm9yKCk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uJDEgPSBudWxsOwoKICAvKioKICAgKiBSZXByZXNlbnRzIHRoZSBsb2NhbCB6b25lIGZvciB0aGlzIEphdmFTY3JpcHQgZW52aXJvbm1lbnQuCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgU3lzdGVtWm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGxvY2FsIHpvbmUKICAgICAqIEByZXR1cm4ge1N5c3RlbVpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24kMSA9PT0gbnVsbCkgewogICAgICAgIHNpbmdsZXRvbiQxID0gbmV3IFN5c3RlbVpvbmUoKTsKICAgICAgfQogICAgICByZXR1cm4gc2luZ2xldG9uJDE7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gInN5c3RlbSI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVW5pdmVyc2FsKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldE5hbWUodHMsIHsgZm9ybWF0LCBsb2NhbGUgfSkgewogICAgICByZXR1cm4gcGFyc2Vab25lSW5mbyh0cywgZm9ybWF0LCBsb2NhbGUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMub2Zmc2V0KHRzKSwgZm9ybWF0KTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0KHRzKSB7CiAgICAgIHJldHVybiAtbmV3IERhdGUodHMpLmdldFRpbWV6b25lT2Zmc2V0KCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAic3lzdGVtIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgbGV0IGR0ZkNhY2hlID0ge307CiAgZnVuY3Rpb24gbWFrZURURih6b25lKSB7CiAgICBpZiAoIWR0ZkNhY2hlW3pvbmVdKSB7CiAgICAgIGR0ZkNhY2hlW3pvbmVdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoImVuLVVTIiwgewogICAgICAgIGhvdXIxMjogZmFsc2UsCiAgICAgICAgdGltZVpvbmU6IHpvbmUsCiAgICAgICAgeWVhcjogIm51bWVyaWMiLAogICAgICAgIG1vbnRoOiAiMi1kaWdpdCIsCiAgICAgICAgZGF5OiAiMi1kaWdpdCIsCiAgICAgICAgaG91cjogIjItZGlnaXQiLAogICAgICAgIG1pbnV0ZTogIjItZGlnaXQiLAogICAgICAgIHNlY29uZDogIjItZGlnaXQiLAogICAgICAgIGVyYTogInNob3J0IiwKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gZHRmQ2FjaGVbem9uZV07CiAgfQoKICBjb25zdCB0eXBlVG9Qb3MgPSB7CiAgICB5ZWFyOiAwLAogICAgbW9udGg6IDEsCiAgICBkYXk6IDIsCiAgICBlcmE6IDMsCiAgICBob3VyOiA0LAogICAgbWludXRlOiA1LAogICAgc2Vjb25kOiA2LAogIH07CgogIGZ1bmN0aW9uIGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSkgewogICAgY29uc3QgZm9ybWF0dGVkID0gZHRmLmZvcm1hdChkYXRlKS5yZXBsYWNlKC9cdTIwMEUvZywgIiIpLAogICAgICBwYXJzZWQgPSAvKFxkKylcLyhcZCspXC8oXGQrKSAoQUR8QkMpLD8gKFxkKyk6KFxkKyk6KFxkKykvLmV4ZWMoZm9ybWF0dGVkKSwKICAgICAgWywgZk1vbnRoLCBmRGF5LCBmWWVhciwgZmFkT3JCYywgZkhvdXIsIGZNaW51dGUsIGZTZWNvbmRdID0gcGFyc2VkOwogICAgcmV0dXJuIFtmWWVhciwgZk1vbnRoLCBmRGF5LCBmYWRPckJjLCBmSG91ciwgZk1pbnV0ZSwgZlNlY29uZF07CiAgfQoKICBmdW5jdGlvbiBwYXJ0c09mZnNldChkdGYsIGRhdGUpIHsKICAgIGNvbnN0IGZvcm1hdHRlZCA9IGR0Zi5mb3JtYXRUb1BhcnRzKGRhdGUpOwogICAgY29uc3QgZmlsbGVkID0gW107CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5sZW5ndGg7IGkrKykgewogICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBmb3JtYXR0ZWRbaV07CiAgICAgIGNvbnN0IHBvcyA9IHR5cGVUb1Bvc1t0eXBlXTsKCiAgICAgIGlmICh0eXBlID09PSAiZXJhIikgewogICAgICAgIGZpbGxlZFtwb3NdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKHBvcykpIHsKICAgICAgICBmaWxsZWRbcG9zXSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmaWxsZWQ7CiAgfQoKICBsZXQgaWFuYVpvbmVDYWNoZSA9IHt9OwogIC8qKgogICAqIEEgem9uZSBpZGVudGlmaWVkIGJ5IGFuIElBTkEgaWRlbnRpZmllciwgbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICogQGltcGxlbWVudHMge1pvbmV9CiAgICovCiAgY2xhc3MgSUFOQVpvbmUgZXh0ZW5kcyBab25lIHsKICAgIC8qKgogICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBab25lIG5hbWUKICAgICAqIEByZXR1cm4ge0lBTkFab25lfQogICAgICovCiAgICBzdGF0aWMgY3JlYXRlKG5hbWUpIHsKICAgICAgaWYgKCFpYW5hWm9uZUNhY2hlW25hbWVdKSB7CiAgICAgICAgaWFuYVpvbmVDYWNoZVtuYW1lXSA9IG5ldyBJQU5BWm9uZShuYW1lKTsKICAgICAgfQogICAgICByZXR1cm4gaWFuYVpvbmVDYWNoZVtuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2V0IGxvY2FsIGNhY2hlcy4gU2hvdWxkIG9ubHkgYmUgbmVjZXNzYXJ5IGluIHRlc3Rpbmcgc2NlbmFyaW9zLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgc3RhdGljIHJlc2V0Q2FjaGUoKSB7CiAgICAgIGlhbmFab25lQ2FjaGUgPSB7fTsKICAgICAgZHRmQ2FjaGUgPSB7fTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgcHJvdmlkZWQgc3RyaW5nIGlzIGEgdmFsaWQgc3BlY2lmaWVyLiBUaGlzIG9ubHkgY2hlY2tzIHRoZSBzdHJpbmcncyBmb3JtYXQsIG5vdCB0aGF0IHRoZSBzcGVjaWZpZXIgaWRlbnRpZmllcyBhIGtub3duIHpvbmU7IHNlZSBpc1ZhbGlkWm9uZSBmb3IgdGhhdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0cmluZyB0byBjaGVjayB2YWxpZGl0eSBvbgogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiQW1lcmljYS9OZXdfWW9yayIpIC8vPT4gdHJ1ZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFNwZWNpZmllcigiU3BvcnR+fmJsb3JwIikgLy89PiBmYWxzZQogICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSBmb3Igc29tZSB2YWxpZCBJQU5BIG5hbWVzLiBVc2UgaXNWYWxpZFpvbmUgaW5zdGVhZC4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkU3BlY2lmaWVyKHMpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFpvbmUocyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIHN0cmluZyBpZGVudGlmaWVzIGEgcmVhbCB6b25lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gem9uZSAtIFRoZSBzdHJpbmcgdG8gY2hlY2sKICAgICAqIEBleGFtcGxlIElBTkFab25lLmlzVmFsaWRab25lKCJBbWVyaWNhL05ld19Zb3JrIikgLy89PiB0cnVlCiAgICAgKiBAZXhhbXBsZSBJQU5BWm9uZS5pc1ZhbGlkWm9uZSgiRmFudGFzaWEvQ2FzdGxlIikgLy89PiBmYWxzZQogICAgICogQGV4YW1wbGUgSUFOQVpvbmUuaXNWYWxpZFpvbmUoIlNwb3J0fn5ibG9ycCIpIC8vPT4gZmFsc2UKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc1ZhbGlkWm9uZSh6b25lKSB7CiAgICAgIGlmICghem9uZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCJlbi1VUyIsIHsgdGltZVpvbmU6IHpvbmUgfSkuZm9ybWF0KCk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBjb25zdHJ1Y3RvcihuYW1lKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy56b25lTmFtZSA9IG5hbWU7CiAgICAgIC8qKiBAcHJpdmF0ZSAqKi8KICAgICAgdGhpcy52YWxpZCA9IElBTkFab25lLmlzVmFsaWRab25lKG5hbWUpOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJpYW5hIjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IG5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLnpvbmVOYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgaXNVbml2ZXJzYWwoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgb2Zmc2V0TmFtZSh0cywgeyBmb3JtYXQsIGxvY2FsZSB9KSB7CiAgICAgIHJldHVybiBwYXJzZVpvbmVJbmZvKHRzLCBmb3JtYXQsIGxvY2FsZSwgdGhpcy5uYW1lKTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KHRzLCBmb3JtYXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh0aGlzLm9mZnNldCh0cyksIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCh0cykgewogICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpOwoKICAgICAgaWYgKGlzTmFOKGRhdGUpKSByZXR1cm4gTmFOOwoKICAgICAgY29uc3QgZHRmID0gbWFrZURURih0aGlzLm5hbWUpOwogICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXksIGFkT3JCYywgaG91ciwgbWludXRlLCBzZWNvbmRdID0gZHRmLmZvcm1hdFRvUGFydHMKICAgICAgICA/IHBhcnRzT2Zmc2V0KGR0ZiwgZGF0ZSkKICAgICAgICA6IGhhY2t5T2Zmc2V0KGR0ZiwgZGF0ZSk7CgogICAgICBpZiAoYWRPckJjID09PSAiQkMiKSB7CiAgICAgICAgeWVhciA9IC1NYXRoLmFicyh5ZWFyKSArIDE7CiAgICAgIH0KCiAgICAgIC8vIGJlY2F1c2Ugd2UncmUgdXNpbmcgaG91cjEyIGFuZCBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDI1NTY0JmNhbj0yJnE9JTIyMjQlM0EwMCUyMiUyMGRhdGV0aW1lZm9ybWF0CiAgICAgIGNvbnN0IGFkanVzdGVkSG91ciA9IGhvdXIgPT09IDI0ID8gMCA6IGhvdXI7CgogICAgICBjb25zdCBhc1VUQyA9IG9ialRvTG9jYWxUUyh7CiAgICAgICAgeWVhciwKICAgICAgICBtb250aCwKICAgICAgICBkYXksCiAgICAgICAgaG91cjogYWRqdXN0ZWRIb3VyLAogICAgICAgIG1pbnV0ZSwKICAgICAgICBzZWNvbmQsCiAgICAgICAgbWlsbGlzZWNvbmQ6IDAsCiAgICAgIH0pOwoKICAgICAgbGV0IGFzVFMgPSArZGF0ZTsKICAgICAgY29uc3Qgb3ZlciA9IGFzVFMgJSAxMDAwOwogICAgICBhc1RTIC09IG92ZXIgPj0gMCA/IG92ZXIgOiAxMDAwICsgb3ZlcjsKICAgICAgcmV0dXJuIChhc1VUQyAtIGFzVFMpIC8gKDYwICogMTAwMCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiaWFuYSIgJiYgb3RoZXJab25lLm5hbWUgPT09IHRoaXMubmFtZTsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0aGlzLnZhbGlkOwogICAgfQogIH0KCiAgLy8gdG9kbyAtIHJlbWFwIGNhY2hpbmcKCiAgbGV0IGludGxMRkNhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkTEYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBkdGYgPSBpbnRsTEZDYWNoZVtrZXldOwogICAgaWYgKCFkdGYpIHsKICAgICAgZHRmID0gbmV3IEludGwuTGlzdEZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTEZDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsRFRDYWNoZSA9IHt9OwogIGZ1bmN0aW9uIGdldENhY2hlZERURihsb2NTdHJpbmcsIG9wdHMgPSB7fSkgewogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgb3B0c10pOwogICAgbGV0IGR0ZiA9IGludGxEVENhY2hlW2tleV07CiAgICBpZiAoIWR0ZikgewogICAgICBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsRFRDYWNoZVtrZXldID0gZHRmOwogICAgfQogICAgcmV0dXJuIGR0ZjsKICB9CgogIGxldCBpbnRsTnVtQ2FjaGUgPSB7fTsKICBmdW5jdGlvbiBnZXRDYWNoZWRJTkYobG9jU3RyaW5nLCBvcHRzID0ge30pIHsKICAgIGNvbnN0IGtleSA9IEpTT04uc3RyaW5naWZ5KFtsb2NTdHJpbmcsIG9wdHNdKTsKICAgIGxldCBpbmYgPSBpbnRsTnVtQ2FjaGVba2V5XTsKICAgIGlmICghaW5mKSB7CiAgICAgIGluZiA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NTdHJpbmcsIG9wdHMpOwogICAgICBpbnRsTnVtQ2FjaGVba2V5XSA9IGluZjsKICAgIH0KICAgIHJldHVybiBpbmY7CiAgfQoKICBsZXQgaW50bFJlbENhY2hlID0ge307CiAgZnVuY3Rpb24gZ2V0Q2FjaGVkUlRGKGxvY1N0cmluZywgb3B0cyA9IHt9KSB7CiAgICBjb25zdCB7IGJhc2UsIC4uLmNhY2hlS2V5T3B0cyB9ID0gb3B0czsgLy8gZXhjbHVkZSBgYmFzZWAgZnJvbSB0aGUgb3B0aW9ucwogICAgY29uc3Qga2V5ID0gSlNPTi5zdHJpbmdpZnkoW2xvY1N0cmluZywgY2FjaGVLZXlPcHRzXSk7CiAgICBsZXQgaW5mID0gaW50bFJlbENhY2hlW2tleV07CiAgICBpZiAoIWluZikgewogICAgICBpbmYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jU3RyaW5nLCBvcHRzKTsKICAgICAgaW50bFJlbENhY2hlW2tleV0gPSBpbmY7CiAgICB9CiAgICByZXR1cm4gaW5mOwogIH0KCiAgbGV0IHN5c0xvY2FsZUNhY2hlID0gbnVsbDsKICBmdW5jdGlvbiBzeXN0ZW1Mb2NhbGUoKSB7CiAgICBpZiAoc3lzTG9jYWxlQ2FjaGUpIHsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfSBlbHNlIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZTsKICAgICAgcmV0dXJuIHN5c0xvY2FsZUNhY2hlOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VMb2NhbGVTdHJpbmcobG9jYWxlU3RyKSB7CiAgICAvLyBJIHJlYWxseSB3YW50IHRvIGF2b2lkIHdyaXRpbmcgYSBCQ1AgNDcgcGFyc2VyCiAgICAvLyBzZWUsIGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL3dvb29ybS9iY3AtNDcKICAgIC8vIEluc3RlYWQsIHdlJ2xsIGRvIHRoaXM6CgogICAgLy8gYSkgaWYgdGhlIHN0cmluZyBoYXMgbm8gLXUgZXh0ZW5zaW9ucywganVzdCBsZWF2ZSBpdCBhbG9uZQogICAgLy8gYikgaWYgaXQgZG9lcywgdXNlIEludGwgdG8gcmVzb2x2ZSBldmVyeXRoaW5nCiAgICAvLyBjKSBpZiBJbnRsIGZhaWxzLCB0cnkgYWdhaW4gd2l0aG91dCB0aGUgLXUKCiAgICAvLyBwcml2YXRlIHN1YnRhZ3MgYW5kIHVuaWNvZGUgc3VidGFncyBoYXZlIG9yZGVyaW5nIHJlcXVpcmVtZW50cywKICAgIC8vIGFuZCB3ZSdyZSBub3QgcHJvcGVybHkgcGFyc2luZyB0aGlzLCBzbyBqdXN0IHN0cmlwIG91dCB0aGUKICAgIC8vIHByaXZhdGUgb25lcyBpZiB0aGV5IGV4aXN0LgogICAgY29uc3QgeEluZGV4ID0gbG9jYWxlU3RyLmluZGV4T2YoIi14LSIpOwogICAgaWYgKHhJbmRleCAhPT0gLTEpIHsKICAgICAgbG9jYWxlU3RyID0gbG9jYWxlU3RyLnN1YnN0cmluZygwLCB4SW5kZXgpOwogICAgfQoKICAgIGNvbnN0IHVJbmRleCA9IGxvY2FsZVN0ci5pbmRleE9mKCItdS0iKTsKICAgIGlmICh1SW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBbbG9jYWxlU3RyXTsKICAgIH0gZWxzZSB7CiAgICAgIGxldCBvcHRpb25zOwogICAgICBsZXQgc2VsZWN0ZWRTdHI7CiAgICAgIHRyeSB7CiAgICAgICAgb3B0aW9ucyA9IGdldENhY2hlZERURihsb2NhbGVTdHIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gbG9jYWxlU3RyOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc3Qgc21hbGxlciA9IGxvY2FsZVN0ci5zdWJzdHJpbmcoMCwgdUluZGV4KTsKICAgICAgICBvcHRpb25zID0gZ2V0Q2FjaGVkRFRGKHNtYWxsZXIpLnJlc29sdmVkT3B0aW9ucygpOwogICAgICAgIHNlbGVjdGVkU3RyID0gc21hbGxlcjsKICAgICAgfQoKICAgICAgY29uc3QgeyBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBvcHRpb25zOwogICAgICByZXR1cm4gW3NlbGVjdGVkU3RyLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyXTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludGxDb25maWdTdHJpbmcobG9jYWxlU3RyLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSB7CiAgICBpZiAob3V0cHV0Q2FsZW5kYXIgfHwgbnVtYmVyaW5nU3lzdGVtKSB7CiAgICAgIGlmICghbG9jYWxlU3RyLmluY2x1ZGVzKCItdS0iKSkgewogICAgICAgIGxvY2FsZVN0ciArPSAiLXUiOwogICAgICB9CgogICAgICBpZiAob3V0cHV0Q2FsZW5kYXIpIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1jYS0ke291dHB1dENhbGVuZGFyfWA7CiAgICAgIH0KCiAgICAgIGlmIChudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgICBsb2NhbGVTdHIgKz0gYC1udS0ke251bWJlcmluZ1N5c3RlbX1gOwogICAgICB9CiAgICAgIHJldHVybiBsb2NhbGVTdHI7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbG9jYWxlU3RyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gbWFwTW9udGhzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMjsgaSsrKSB7CiAgICAgIGNvbnN0IGR0ID0gRGF0ZVRpbWUudXRjKDIwMDksIGksIDEpOwogICAgICBtcy5wdXNoKGYoZHQpKTsKICAgIH0KICAgIHJldHVybiBtczsKICB9CgogIGZ1bmN0aW9uIG1hcFdlZWtkYXlzKGYpIHsKICAgIGNvbnN0IG1zID0gW107CiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHsKICAgICAgY29uc3QgZHQgPSBEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzICsgaSk7CiAgICAgIG1zLnB1c2goZihkdCkpOwogICAgfQogICAgcmV0dXJuIG1zOwogIH0KCiAgZnVuY3Rpb24gbGlzdFN0dWZmKGxvYywgbGVuZ3RoLCBlbmdsaXNoRm4sIGludGxGbikgewogICAgY29uc3QgbW9kZSA9IGxvYy5saXN0aW5nTW9kZSgpOwoKICAgIGlmIChtb2RlID09PSAiZXJyb3IiKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfSBlbHNlIGlmIChtb2RlID09PSAiZW4iKSB7CiAgICAgIHJldHVybiBlbmdsaXNoRm4obGVuZ3RoKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBpbnRsRm4obGVuZ3RoKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN1cHBvcnRzRmFzdE51bWJlcnMobG9jKSB7CiAgICBpZiAobG9jLm51bWJlcmluZ1N5c3RlbSAmJiBsb2MubnVtYmVyaW5nU3lzdGVtICE9PSAibGF0biIpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICgKICAgICAgICBsb2MubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIgfHwKICAgICAgICAhbG9jLmxvY2FsZSB8fAogICAgICAgIGxvYy5sb2NhbGUuc3RhcnRzV2l0aCgiZW4iKSB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvYy5pbnRsKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0gPT09ICJsYXRuIgogICAgICApOwogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgUG9seU51bWJlckZvcm1hdHRlciB7CiAgICBjb25zdHJ1Y3RvcihpbnRsLCBmb3JjZVNpbXBsZSwgb3B0cykgewogICAgICB0aGlzLnBhZFRvID0gb3B0cy5wYWRUbyB8fCAwOwogICAgICB0aGlzLmZsb29yID0gb3B0cy5mbG9vciB8fCBmYWxzZTsKCiAgICAgIGNvbnN0IHsgcGFkVG8sIGZsb29yLCAuLi5vdGhlck9wdHMgfSA9IG9wdHM7CgogICAgICBpZiAoIWZvcmNlU2ltcGxlIHx8IE9iamVjdC5rZXlzKG90aGVyT3B0cykubGVuZ3RoID4gMCkgewogICAgICAgIGNvbnN0IGludGxPcHRzID0geyB1c2VHcm91cGluZzogZmFsc2UsIC4uLm9wdHMgfTsKICAgICAgICBpZiAob3B0cy5wYWRUbyA+IDApIGludGxPcHRzLm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gb3B0cy5wYWRUbzsKICAgICAgICB0aGlzLmluZiA9IGdldENhY2hlZElORihpbnRsLCBpbnRsT3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoaSkgewogICAgICBpZiAodGhpcy5pbmYpIHsKICAgICAgICBjb25zdCBmaXhlZCA9IHRoaXMuZmxvb3IgPyBNYXRoLmZsb29yKGkpIDogaTsKICAgICAgICByZXR1cm4gdGhpcy5pbmYuZm9ybWF0KGZpeGVkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyB0byBtYXRjaCB0aGUgYnJvd3NlcidzIG51bWJlcmZvcm1hdHRlciBkZWZhdWx0cwogICAgICAgIGNvbnN0IGZpeGVkID0gdGhpcy5mbG9vciA/IE1hdGguZmxvb3IoaSkgOiByb3VuZFRvKGksIDMpOwogICAgICAgIHJldHVybiBwYWRTdGFydChmaXhlZCwgdGhpcy5wYWRUbyk7CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCgogIGNsYXNzIFBvbHlEYXRlRm9ybWF0dGVyIHsKICAgIGNvbnN0cnVjdG9yKGR0LCBpbnRsLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IG9wdHM7CiAgICAgIHRoaXMub3JpZ2luYWxab25lID0gdW5kZWZpbmVkOwoKICAgICAgbGV0IHogPSB1bmRlZmluZWQ7CiAgICAgIGlmICh0aGlzLm9wdHMudGltZVpvbmUpIHsKICAgICAgICAvLyBEb24ndCBhcHBseSBhbnkgd29ya2Fyb3VuZHMgaWYgYSB0aW1lWm9uZSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIGluIG9wdHMKICAgICAgICB0aGlzLmR0ID0gZHQ7CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAiZml4ZWQiKSB7CiAgICAgICAgLy8gVVRDLTggb3IgRXRjL1VUQy04IGFyZSBub3QgcGFydCBvZiB0emRhdGEsIG9ubHkgRXRjL0dNVCs4IGFuZCB0aGUgbGlrZS4KICAgICAgICAvLyBUaGF0IGlzIHdoeSBmaXhlZC1vZmZzZXQgVFogaXMgc2V0IHRvIHRoYXQgdW5sZXNzIGl0IGlzOgogICAgICAgIC8vIDEuIFJlcHJlc2VudGluZyBvZmZzZXQgMCB3aGVuIFVUQyBpcyB1c2VkIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yIGFuZCBkb2VzIG5vdCBiZWNvbWUgR01ULgogICAgICAgIC8vIDIuIFVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyOgogICAgICAgIC8vICAgIC0gc29tZSBkbyBub3Qgc3VwcG9ydCBFdGMvCiAgICAgICAgLy8gICAgLSA8IEV0Yy9HTVQtMTQsID4gRXRjL0dNVCsxMiwgYW5kIDMwLW1pbnV0ZSBvciA0NS1taW51dGUgb2Zmc2V0cyBhcmUgbm90IHBhcnQgb2YgdHpkYXRhCiAgICAgICAgY29uc3QgZ210T2Zmc2V0ID0gLTEgKiAoZHQub2Zmc2V0IC8gNjApOwogICAgICAgIGNvbnN0IG9mZnNldFogPSBnbXRPZmZzZXQgPj0gMCA/IGBFdGMvR01UKyR7Z210T2Zmc2V0fWAgOiBgRXRjL0dNVCR7Z210T2Zmc2V0fWA7CiAgICAgICAgaWYgKGR0Lm9mZnNldCAhPT0gMCAmJiBJQU5BWm9uZS5jcmVhdGUob2Zmc2V0WikudmFsaWQpIHsKICAgICAgICAgIHogPSBvZmZzZXRaOwogICAgICAgICAgdGhpcy5kdCA9IGR0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBOb3QgYWxsIGZpeGVkLW9mZnNldCB6b25lcyBsaWtlIEV0Yy8rNDozMCBhcmUgcHJlc2VudCBpbiB0emRhdGEgc28KICAgICAgICAgIC8vIHdlIG1hbnVhbGx5IGFwcGx5IHRoZSBvZmZzZXQgYW5kIHN1YnN0aXR1dGUgdGhlIHpvbmUgYXMgbmVlZGVkLgogICAgICAgICAgeiA9ICJVVEMiOwogICAgICAgICAgdGhpcy5kdCA9IGR0Lm9mZnNldCA9PT0gMCA/IGR0IDogZHQuc2V0Wm9uZSgiVVRDIikucGx1cyh7IG1pbnV0ZXM6IGR0Lm9mZnNldCB9KTsKICAgICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZHQuem9uZS50eXBlID09PSAic3lzdGVtIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgfSBlbHNlIGlmIChkdC56b25lLnR5cGUgPT09ICJpYW5hIikgewogICAgICAgIHRoaXMuZHQgPSBkdDsKICAgICAgICB6ID0gZHQuem9uZS5uYW1lOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIEN1c3RvbSB6b25lcyBjYW4gaGF2ZSBhbnkgb2Zmc2V0IC8gb2Zmc2V0TmFtZSBzbyB3ZSBqdXN0IG1hbnVhbGx5CiAgICAgICAgLy8gYXBwbHkgdGhlIG9mZnNldCBhbmQgc3Vic3RpdHV0ZSB0aGUgem9uZSBhcyBuZWVkZWQuCiAgICAgICAgeiA9ICJVVEMiOwogICAgICAgIHRoaXMuZHQgPSBkdC5zZXRab25lKCJVVEMiKS5wbHVzKHsgbWludXRlczogZHQub2Zmc2V0IH0pOwogICAgICAgIHRoaXMub3JpZ2luYWxab25lID0gZHQuem9uZTsKICAgICAgfQoKICAgICAgY29uc3QgaW50bE9wdHMgPSB7IC4uLnRoaXMub3B0cyB9OwogICAgICBpbnRsT3B0cy50aW1lWm9uZSA9IGludGxPcHRzLnRpbWVab25lIHx8IHo7CiAgICAgIHRoaXMuZHRmID0gZ2V0Q2FjaGVkRFRGKGludGwsIGludGxPcHRzKTsKICAgIH0KCiAgICBmb3JtYXQoKSB7CiAgICAgIGlmICh0aGlzLm9yaWdpbmFsWm9uZSkgewogICAgICAgIC8vIElmIHdlIGhhdmUgdG8gc3Vic3RpdHV0ZSBpbiB0aGUgYWN0dWFsIHpvbmUgbmFtZSwgd2UgaGF2ZSB0byB1c2UKICAgICAgICAvLyBmb3JtYXRUb1BhcnRzIHNvIHRoYXQgdGhlIHRpbWV6b25lIGNhbiBiZSByZXBsYWNlZC4KICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRUb1BhcnRzKCkKICAgICAgICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpCiAgICAgICAgICAuam9pbigiIik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZHRmLmZvcm1hdCh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoKSB7CiAgICAgIGNvbnN0IHBhcnRzID0gdGhpcy5kdGYuZm9ybWF0VG9QYXJ0cyh0aGlzLmR0LnRvSlNEYXRlKCkpOwogICAgICBpZiAodGhpcy5vcmlnaW5hbFpvbmUpIHsKICAgICAgICByZXR1cm4gcGFydHMubWFwKChwYXJ0KSA9PiB7CiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAidGltZVpvbmVOYW1lIikgewogICAgICAgICAgICBjb25zdCBvZmZzZXROYW1lID0gdGhpcy5vcmlnaW5hbFpvbmUub2Zmc2V0TmFtZSh0aGlzLmR0LnRzLCB7CiAgICAgICAgICAgICAgbG9jYWxlOiB0aGlzLmR0LmxvY2FsZSwKICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMub3B0cy50aW1lWm9uZU5hbWUsCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgIC4uLnBhcnQsCiAgICAgICAgICAgICAgdmFsdWU6IG9mZnNldE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gcGFydDsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gcGFydHM7CiAgICB9CgogICAgcmVzb2x2ZWRPcHRpb25zKCkgewogICAgICByZXR1cm4gdGhpcy5kdGYucmVzb2x2ZWRPcHRpb25zKCk7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwogIGNsYXNzIFBvbHlSZWxGb3JtYXR0ZXIgewogICAgY29uc3RydWN0b3IoaW50bCwgaXNFbmdsaXNoLCBvcHRzKSB7CiAgICAgIHRoaXMub3B0cyA9IHsgc3R5bGU6ICJsb25nIiwgLi4ub3B0cyB9OwogICAgICBpZiAoIWlzRW5nbGlzaCAmJiBoYXNSZWxhdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5ydGYgPSBnZXRDYWNoZWRSVEYoaW50bCwgb3B0cyk7CiAgICAgIH0KICAgIH0KCiAgICBmb3JtYXQoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlbGF0aXZlVGltZSh1bml0LCBjb3VudCwgdGhpcy5vcHRzLm51bWVyaWMsIHRoaXMub3B0cy5zdHlsZSAhPT0gImxvbmciKTsKICAgICAgfQogICAgfQoKICAgIGZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpIHsKICAgICAgaWYgKHRoaXMucnRmKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucnRmLmZvcm1hdFRvUGFydHMoY291bnQsIHVuaXQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY2xhc3MgTG9jYWxlIHsKICAgIHN0YXRpYyBmcm9tT3B0cyhvcHRzKSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKG9wdHMubG9jYWxlLCBvcHRzLm51bWJlcmluZ1N5c3RlbSwgb3B0cy5vdXRwdXRDYWxlbmRhciwgb3B0cy5kZWZhdWx0VG9FTik7CiAgICB9CgogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIsIGRlZmF1bHRUb0VOID0gZmFsc2UpIHsKICAgICAgY29uc3Qgc3BlY2lmaWVkTG9jYWxlID0gbG9jYWxlIHx8IFNldHRpbmdzLmRlZmF1bHRMb2NhbGU7CiAgICAgIC8vIHRoZSBzeXN0ZW0gbG9jYWxlIGlzIHVzZWZ1bCBmb3IgaHVtYW4gcmVhZGFibGUgc3RyaW5ncyBidXQgYW5ub3lpbmcgZm9yIHBhcnNpbmcvZm9ybWF0dGluZyBrbm93biBmb3JtYXRzCiAgICAgIGNvbnN0IGxvY2FsZVIgPSBzcGVjaWZpZWRMb2NhbGUgfHwgKGRlZmF1bHRUb0VOID8gImVuLVVTIiA6IHN5c3RlbUxvY2FsZSgpKTsKICAgICAgY29uc3QgbnVtYmVyaW5nU3lzdGVtUiA9IG51bWJlcmluZ1N5c3RlbSB8fCBTZXR0aW5ncy5kZWZhdWx0TnVtYmVyaW5nU3lzdGVtOwogICAgICBjb25zdCBvdXRwdXRDYWxlbmRhclIgPSBvdXRwdXRDYWxlbmRhciB8fCBTZXR0aW5ncy5kZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICAgIHJldHVybiBuZXcgTG9jYWxlKGxvY2FsZVIsIG51bWJlcmluZ1N5c3RlbVIsIG91dHB1dENhbGVuZGFyUiwgc3BlY2lmaWVkTG9jYWxlKTsKICAgIH0KCiAgICBzdGF0aWMgcmVzZXRDYWNoZSgpIHsKICAgICAgc3lzTG9jYWxlQ2FjaGUgPSBudWxsOwogICAgICBpbnRsRFRDYWNoZSA9IHt9OwogICAgICBpbnRsTnVtQ2FjaGUgPSB7fTsKICAgICAgaW50bFJlbENhY2hlID0ge307CiAgICB9CgogICAgc3RhdGljIGZyb21PYmplY3QoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcik7CiAgICB9CgogICAgY29uc3RydWN0b3IobG9jYWxlLCBudW1iZXJpbmcsIG91dHB1dENhbGVuZGFyLCBzcGVjaWZpZWRMb2NhbGUpIHsKICAgICAgY29uc3QgW3BhcnNlZExvY2FsZSwgcGFyc2VkTnVtYmVyaW5nU3lzdGVtLCBwYXJzZWRPdXRwdXRDYWxlbmRhcl0gPSBwYXJzZUxvY2FsZVN0cmluZyhsb2NhbGUpOwoKICAgICAgdGhpcy5sb2NhbGUgPSBwYXJzZWRMb2NhbGU7CiAgICAgIHRoaXMubnVtYmVyaW5nU3lzdGVtID0gbnVtYmVyaW5nIHx8IHBhcnNlZE51bWJlcmluZ1N5c3RlbSB8fCBudWxsOwogICAgICB0aGlzLm91dHB1dENhbGVuZGFyID0gb3V0cHV0Q2FsZW5kYXIgfHwgcGFyc2VkT3V0cHV0Q2FsZW5kYXIgfHwgbnVsbDsKICAgICAgdGhpcy5pbnRsID0gaW50bENvbmZpZ1N0cmluZyh0aGlzLmxvY2FsZSwgdGhpcy5udW1iZXJpbmdTeXN0ZW0sIHRoaXMub3V0cHV0Q2FsZW5kYXIpOwoKICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1vbnRoc0NhY2hlID0geyBmb3JtYXQ6IHt9LCBzdGFuZGFsb25lOiB7fSB9OwogICAgICB0aGlzLm1lcmlkaWVtQ2FjaGUgPSBudWxsOwogICAgICB0aGlzLmVyYUNhY2hlID0ge307CgogICAgICB0aGlzLnNwZWNpZmllZExvY2FsZSA9IHNwZWNpZmllZExvY2FsZTsKICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IG51bGw7CiAgICB9CgogICAgZ2V0IGZhc3ROdW1iZXJzKCkgewogICAgICBpZiAodGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5mYXN0TnVtYmVyc0NhY2hlZCA9IHN1cHBvcnRzRmFzdE51bWJlcnModGhpcyk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLmZhc3ROdW1iZXJzQ2FjaGVkOwogICAgfQoKICAgIGxpc3RpbmdNb2RlKCkgewogICAgICBjb25zdCBpc0FjdHVhbGx5RW4gPSB0aGlzLmlzRW5nbGlzaCgpOwogICAgICBjb25zdCBoYXNOb1dlaXJkbmVzcyA9CiAgICAgICAgKHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSBudWxsIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtID09PSAibGF0biIpICYmCiAgICAgICAgKHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG51bGwgfHwgdGhpcy5vdXRwdXRDYWxlbmRhciA9PT0gImdyZWdvcnkiKTsKICAgICAgcmV0dXJuIGlzQWN0dWFsbHlFbiAmJiBoYXNOb1dlaXJkbmVzcyA/ICJlbiIgOiAiaW50bCI7CiAgICB9CgogICAgY2xvbmUoYWx0cykgewogICAgICBpZiAoIWFsdHMgfHwgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYWx0cykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIExvY2FsZS5jcmVhdGUoCiAgICAgICAgICBhbHRzLmxvY2FsZSB8fCB0aGlzLnNwZWNpZmllZExvY2FsZSwKICAgICAgICAgIGFsdHMubnVtYmVyaW5nU3lzdGVtIHx8IHRoaXMubnVtYmVyaW5nU3lzdGVtLAogICAgICAgICAgYWx0cy5vdXRwdXRDYWxlbmRhciB8fCB0aGlzLm91dHB1dENhbGVuZGFyLAogICAgICAgICAgYWx0cy5kZWZhdWx0VG9FTiB8fCBmYWxzZQogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICByZWRlZmF1bHRUb0VOKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiB0cnVlIH0pOwogICAgfQoKICAgIHJlZGVmYXVsdFRvU3lzdGVtKGFsdHMgPSB7fSkgewogICAgICByZXR1cm4gdGhpcy5jbG9uZSh7IC4uLmFsdHMsIGRlZmF1bHRUb0VOOiBmYWxzZSB9KTsKICAgIH0KCiAgICBtb250aHMobGVuZ3RoLCBmb3JtYXQgPSBmYWxzZSkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKHRoaXMsIGxlbmd0aCwgbW9udGhzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IGZvcm1hdCA/IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSA6IHsgbW9udGg6IGxlbmd0aCB9LAogICAgICAgICAgZm9ybWF0U3RyID0gZm9ybWF0ID8gImZvcm1hdCIgOiAic3RhbmRhbG9uZSI7CiAgICAgICAgaWYgKCF0aGlzLm1vbnRoc0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5tb250aHNDYWNoZVtmb3JtYXRTdHJdW2xlbmd0aF0gPSBtYXBNb250aHMoKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJtb250aCIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzQ2FjaGVbZm9ybWF0U3RyXVtsZW5ndGhdOwogICAgICB9KTsKICAgIH0KCiAgICB3ZWVrZGF5cyhsZW5ndGgsIGZvcm1hdCA9IGZhbHNlKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCB3ZWVrZGF5cywgKCkgPT4gewogICAgICAgIGNvbnN0IGludGwgPSBmb3JtYXQKICAgICAgICAgICAgPyB7IHdlZWtkYXk6IGxlbmd0aCwgeWVhcjogIm51bWVyaWMiLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9CiAgICAgICAgICAgIDogeyB3ZWVrZGF5OiBsZW5ndGggfSwKICAgICAgICAgIGZvcm1hdFN0ciA9IGZvcm1hdCA/ICJmb3JtYXQiIDogInN0YW5kYWxvbmUiOwogICAgICAgIGlmICghdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXSA9IG1hcFdlZWtkYXlzKChkdCkgPT4KICAgICAgICAgICAgdGhpcy5leHRyYWN0KGR0LCBpbnRsLCAid2Vla2RheSIpCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy53ZWVrZGF5c0NhY2hlW2Zvcm1hdFN0cl1bbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgbWVyaWRpZW1zKCkgewogICAgICByZXR1cm4gbGlzdFN0dWZmKAogICAgICAgIHRoaXMsCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICgpID0+IG1lcmlkaWVtcywKICAgICAgICAoKSA9PiB7CiAgICAgICAgICAvLyBJbiB0aGVvcnkgdGhlcmUgY291bGQgYmUgYXJpYml0cmFyeSBkYXkgcGVyaW9kcy4gV2UncmUgZ29ubmEgYXNzdW1lIHRoZXJlIGFyZSBleGFjdGx5IHR3bwogICAgICAgICAgLy8gZm9yIEFNIGFuZCBQTS4gVGhpcyBpcyBwcm9iYWJseSB3cm9uZywgYnV0IGl0J3MgbWFrZXMgcGFyc2luZyB3YXkgZWFzaWVyLgogICAgICAgICAgaWYgKCF0aGlzLm1lcmlkaWVtQ2FjaGUpIHsKICAgICAgICAgICAgY29uc3QgaW50bCA9IHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH07CiAgICAgICAgICAgIHRoaXMubWVyaWRpZW1DYWNoZSA9IFtEYXRlVGltZS51dGMoMjAxNiwgMTEsIDEzLCA5KSwgRGF0ZVRpbWUudXRjKDIwMTYsIDExLCAxMywgMTkpXS5tYXAoCiAgICAgICAgICAgICAgKGR0KSA9PiB0aGlzLmV4dHJhY3QoZHQsIGludGwsICJkYXlwZXJpb2QiKQogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0aGlzLm1lcmlkaWVtQ2FjaGU7CiAgICAgICAgfQogICAgICApOwogICAgfQoKICAgIGVyYXMobGVuZ3RoKSB7CiAgICAgIHJldHVybiBsaXN0U3R1ZmYodGhpcywgbGVuZ3RoLCBlcmFzLCAoKSA9PiB7CiAgICAgICAgY29uc3QgaW50bCA9IHsgZXJhOiBsZW5ndGggfTsKCiAgICAgICAgLy8gVGhpcyBpcyBwcm9ibGVtYXRpYy4gRGlmZmVyZW50IGNhbGVuZGFycyBhcmUgZ29pbmcgdG8gZGVmaW5lIGVyYXMgdG90YWxseSBkaWZmZXJlbnRseS4gV2hhdCBJIG5lZWQgaXMgdGhlIG1pbmltdW0gc2V0IG9mIGRhdGVzCiAgICAgICAgLy8gdG8gZGVmaW5pdGVseSBlbnVtZXJhdGUgdGhlbS4KICAgICAgICBpZiAoIXRoaXMuZXJhQ2FjaGVbbGVuZ3RoXSkgewogICAgICAgICAgdGhpcy5lcmFDYWNoZVtsZW5ndGhdID0gW0RhdGVUaW1lLnV0YygtNDAsIDEsIDEpLCBEYXRlVGltZS51dGMoMjAxNywgMSwgMSldLm1hcCgoZHQpID0+CiAgICAgICAgICAgIHRoaXMuZXh0cmFjdChkdCwgaW50bCwgImVyYSIpCiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRoaXMuZXJhQ2FjaGVbbGVuZ3RoXTsKICAgICAgfSk7CiAgICB9CgogICAgZXh0cmFjdChkdCwgaW50bE9wdHMsIGZpZWxkKSB7CiAgICAgIGNvbnN0IGRmID0gdGhpcy5kdEZvcm1hdHRlcihkdCwgaW50bE9wdHMpLAogICAgICAgIHJlc3VsdHMgPSBkZi5mb3JtYXRUb1BhcnRzKCksCiAgICAgICAgbWF0Y2hpbmcgPSByZXN1bHRzLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSBmaWVsZCk7CiAgICAgIHJldHVybiBtYXRjaGluZyA/IG1hdGNoaW5nLnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBudW1iZXJGb3JtYXR0ZXIob3B0cyA9IHt9KSB7CiAgICAgIC8vIHRoaXMgZm9yY2VzaW1wbGUgb3B0aW9uIGlzIG5ldmVyIHVzZWQgKHRoZSBvbmx5IGNhbGxlciBzaG9ydC1jaXJjdWl0cyBvbiBpdCwgYnV0IGl0IHNlZW1zIHNhZmVyIHRvIGxlYXZlKQogICAgICAvLyAoaW4gY29udHJhc3QsIHRoZSByZXN0IG9mIHRoZSBjb25kaXRpb24gaXMgdXNlZCBoZWF2aWx5KQogICAgICByZXR1cm4gbmV3IFBvbHlOdW1iZXJGb3JtYXR0ZXIodGhpcy5pbnRsLCBvcHRzLmZvcmNlU2ltcGxlIHx8IHRoaXMuZmFzdE51bWJlcnMsIG9wdHMpOwogICAgfQoKICAgIGR0Rm9ybWF0dGVyKGR0LCBpbnRsT3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiBuZXcgUG9seURhdGVGb3JtYXR0ZXIoZHQsIHRoaXMuaW50bCwgaW50bE9wdHMpOwogICAgfQoKICAgIHJlbEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5UmVsRm9ybWF0dGVyKHRoaXMuaW50bCwgdGhpcy5pc0VuZ2xpc2goKSwgb3B0cyk7CiAgICB9CgogICAgbGlzdEZvcm1hdHRlcihvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIGdldENhY2hlZExGKHRoaXMuaW50bCwgb3B0cyk7CiAgICB9CgogICAgaXNFbmdsaXNoKCkgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMubG9jYWxlID09PSAiZW4iIHx8CiAgICAgICAgdGhpcy5sb2NhbGUudG9Mb3dlckNhc2UoKSA9PT0gImVuLXVzIiB8fAogICAgICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMuaW50bCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLnN0YXJ0c1dpdGgoImVuLXVzIikKICAgICAgKTsKICAgIH0KCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgcmV0dXJuICgKICAgICAgICB0aGlzLmxvY2FsZSA9PT0gb3RoZXIubG9jYWxlICYmCiAgICAgICAgdGhpcy5udW1iZXJpbmdTeXN0ZW0gPT09IG90aGVyLm51bWJlcmluZ1N5c3RlbSAmJgogICAgICAgIHRoaXMub3V0cHV0Q2FsZW5kYXIgPT09IG90aGVyLm91dHB1dENhbGVuZGFyCiAgICAgICk7CiAgICB9CiAgfQoKICBsZXQgc2luZ2xldG9uID0gbnVsbDsKCiAgLyoqCiAgICogQSB6b25lIHdpdGggYSBmaXhlZCBvZmZzZXQgKG1lYW5pbmcgbm8gRFNUKQogICAqIEBpbXBsZW1lbnRzIHtab25lfQogICAqLwogIGNsYXNzIEZpeGVkT2Zmc2V0Wm9uZSBleHRlbmRzIFpvbmUgewogICAgLyoqCiAgICAgKiBHZXQgYSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgVVRDCiAgICAgKiBAcmV0dXJuIHtGaXhlZE9mZnNldFpvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgdXRjSW5zdGFuY2UoKSB7CiAgICAgIGlmIChzaW5nbGV0b24gPT09IG51bGwpIHsKICAgICAgICBzaW5nbGV0b24gPSBuZXcgRml4ZWRPZmZzZXRab25lKDApOwogICAgICB9CiAgICAgIHJldHVybiBzaW5nbGV0b247CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYW4gaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCBvZmZzZXQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgLSBUaGUgb2Zmc2V0IGluIG1pbnV0ZXMKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIGluc3RhbmNlKG9mZnNldCkgewogICAgICByZXR1cm4gb2Zmc2V0ID09PSAwID8gRml4ZWRPZmZzZXRab25lLnV0Y0luc3RhbmNlIDogbmV3IEZpeGVkT2Zmc2V0Wm9uZShvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGFuIGluc3RhbmNlIG9mIEZpeGVkT2Zmc2V0Wm9uZSBmcm9tIGEgVVRDIG9mZnNldCBzdHJpbmcsIGxpa2UgIlVUQys2IgogICAgICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgb2Zmc2V0IHN0cmluZyB0byBwYXJzZQogICAgICogQGV4YW1wbGUgRml4ZWRPZmZzZXRab25lLnBhcnNlU3BlY2lmaWVyKCJVVEMrNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQyswNiIpCiAgICAgKiBAZXhhbXBsZSBGaXhlZE9mZnNldFpvbmUucGFyc2VTcGVjaWZpZXIoIlVUQy02OjAwIikKICAgICAqIEByZXR1cm4ge0ZpeGVkT2Zmc2V0Wm9uZX0KICAgICAqLwogICAgc3RhdGljIHBhcnNlU3BlY2lmaWVyKHMpIHsKICAgICAgaWYgKHMpIHsKICAgICAgICBjb25zdCByID0gcy5tYXRjaCgvXnV0Yyg/OihbKy1dXGR7MSwyfSkoPzo6KFxkezJ9KSk/KT8kL2kpOwogICAgICAgIGlmIChyKSB7CiAgICAgICAgICByZXR1cm4gbmV3IEZpeGVkT2Zmc2V0Wm9uZShzaWduZWRPZmZzZXQoclsxXSwgclsyXSkpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdHJ1Y3RvcihvZmZzZXQpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqIEBwcml2YXRlICoqLwogICAgICB0aGlzLmZpeGVkID0gb2Zmc2V0OwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgdHlwZSgpIHsKICAgICAgcmV0dXJuICJmaXhlZCI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBuYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5maXhlZCA9PT0gMCA/ICJVVEMiIDogYFVUQyR7Zm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsICJuYXJyb3ciKX1gOwogICAgfQoKICAgIGdldCBpYW5hTmFtZSgpIHsKICAgICAgaWYgKHRoaXMuZml4ZWQgPT09IDApIHsKICAgICAgICByZXR1cm4gIkV0Yy9VVEMiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBgRXRjL0dNVCR7Zm9ybWF0T2Zmc2V0KC10aGlzLmZpeGVkLCAibmFycm93Iil9YDsKICAgICAgfQogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gdGhpcy5uYW1lOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBmb3JtYXRPZmZzZXQodHMsIGZvcm1hdCkgewogICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHRoaXMuZml4ZWQsIGZvcm1hdCk7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZml4ZWQ7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGVxdWFscyhvdGhlclpvbmUpIHsKICAgICAgcmV0dXJuIG90aGVyWm9uZS50eXBlID09PSAiZml4ZWQiICYmIG90aGVyWm9uZS5maXhlZCA9PT0gdGhpcy5maXhlZDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZ2V0IGlzVmFsaWQoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgLyoqCiAgICogQSB6b25lIHRoYXQgZmFpbGVkIHRvIHBhcnNlLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy4KICAgKiBAaW1wbGVtZW50cyB7Wm9uZX0KICAgKi8KICBjbGFzcyBJbnZhbGlkWm9uZSBleHRlbmRzIFpvbmUgewogICAgY29uc3RydWN0b3Ioem9uZU5hbWUpIHsKICAgICAgc3VwZXIoKTsKICAgICAgLyoqICBAcHJpdmF0ZSAqLwogICAgICB0aGlzLnpvbmVOYW1lID0gem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCB0eXBlKCkgewogICAgICByZXR1cm4gImludmFsaWQiOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBnZXQgbmFtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuem9uZU5hbWU7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1VuaXZlcnNhbCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKiBAb3ZlcnJpZGUgKiovCiAgICBvZmZzZXROYW1lKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZm9ybWF0T2Zmc2V0KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIG9mZnNldCgpIHsKICAgICAgcmV0dXJuIE5hTjsKICAgIH0KCiAgICAvKiogQG92ZXJyaWRlICoqLwogICAgZXF1YWxzKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqIEBvdmVycmlkZSAqKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBub3JtYWxpemVab25lKGlucHV0LCBkZWZhdWx0Wm9uZSkgewogICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSB8fCBpbnB1dCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gZGVmYXVsdFpvbmU7CiAgICB9IGVsc2UgaWYgKGlucHV0IGluc3RhbmNlb2YgWm9uZSkgewogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgaWYgKGlzU3RyaW5nKGlucHV0KSkgewogICAgICBjb25zdCBsb3dlcmVkID0gaW5wdXQudG9Mb3dlckNhc2UoKTsKICAgICAgaWYgKGxvd2VyZWQgPT09ICJkZWZhdWx0IikgcmV0dXJuIGRlZmF1bHRab25lOwogICAgICBlbHNlIGlmIChsb3dlcmVkID09PSAibG9jYWwiIHx8IGxvd2VyZWQgPT09ICJzeXN0ZW0iKSByZXR1cm4gU3lzdGVtWm9uZS5pbnN0YW5jZTsKICAgICAgZWxzZSBpZiAobG93ZXJlZCA9PT0gInV0YyIgfHwgbG93ZXJlZCA9PT0gImdtdCIpIHJldHVybiBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2U7CiAgICAgIGVsc2UgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5wYXJzZVNwZWNpZmllcihsb3dlcmVkKSB8fCBJQU5BWm9uZS5jcmVhdGUoaW5wdXQpOwogICAgfSBlbHNlIGlmIChpc051bWJlcihpbnB1dCkpIHsKICAgICAgcmV0dXJuIEZpeGVkT2Zmc2V0Wm9uZS5pbnN0YW5jZShpbnB1dCk7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gIm9iamVjdCIgJiYgIm9mZnNldCIgaW4gaW5wdXQgJiYgdHlwZW9mIGlucHV0Lm9mZnNldCA9PT0gImZ1bmN0aW9uIikgewogICAgICAvLyBUaGlzIGlzIGR1bWIsIGJ1dCB0aGUgaW5zdGFuY2VvZiBjaGVjayBhYm92ZSBkb2Vzbid0IHNlZW0gdG8gcmVhbGx5IHdvcmsKICAgICAgLy8gc28gd2UncmUgZHVjayBjaGVja2luZyBpdAogICAgICByZXR1cm4gaW5wdXQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbmV3IEludmFsaWRab25lKGlucHV0KTsKICAgIH0KICB9CgogIGxldCBub3cgPSAoKSA9PiBEYXRlLm5vdygpLAogICAgZGVmYXVsdFpvbmUgPSAic3lzdGVtIiwKICAgIGRlZmF1bHRMb2NhbGUgPSBudWxsLAogICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bGwsCiAgICBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIgPSBudWxsLAogICAgdHdvRGlnaXRDdXRvZmZZZWFyID0gNjAsCiAgICB0aHJvd09uSW52YWxpZDsKCiAgLyoqCiAgICogU2V0dGluZ3MgY29udGFpbnMgc3RhdGljIGdldHRlcnMgYW5kIHNldHRlcnMgdGhhdCBjb250cm9sIEx1eG9uJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gTHV4b24gaXMgYSBzaW1wbGUgbGlicmFyeSB3aXRoIGZldyBvcHRpb25zLCBidXQgdGhlIG9uZXMgaXQgZG9lcyBoYXZlIGxpdmUgaGVyZS4KICAgKi8KICBjbGFzcyBTZXR0aW5ncyB7CiAgICAvKioKICAgICAqIEdldCB0aGUgY2FsbGJhY2sgZm9yIHJldHVybmluZyB0aGUgY3VycmVudCB0aW1lc3RhbXAuCiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgbm93KCkgewogICAgICByZXR1cm4gbm93OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjYWxsYmFjayBmb3IgcmV0dXJuaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgbnVtYmVyLCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIEVwb2NoIG1pbGxpc2Vjb25kIGNvdW50CiAgICAgKiBAdHlwZSB7ZnVuY3Rpb259CiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiBEYXRlLm5vdygpICsgMzAwMCAvLyBwcmV0ZW5kIGl0IGlzIDMgc2Vjb25kcyBpbiB0aGUgZnV0dXJlCiAgICAgKiBAZXhhbXBsZSBTZXR0aW5ncy5ub3cgPSAoKSA9PiAwIC8vIGFsd2F5cyBwcmV0ZW5kIGl0J3MgSmFuIDEsIDE5NzAgYXQgbWlkbmlnaHQgaW4gVVRDIHRpbWUKICAgICAqLwogICAgc3RhdGljIHNldCBub3cobikgewogICAgICBub3cgPSBuOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSB0byBjcmVhdGUgRGF0ZVRpbWVzIGluLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogVXNlIHRoZSB2YWx1ZSAic3lzdGVtIiB0byByZXNldCB0aGlzIHZhbHVlIHRvIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgc2V0IGRlZmF1bHRab25lKHpvbmUpIHsKICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZSBvYmplY3QgY3VycmVudGx5IHVzZWQgdG8gY3JlYXRlIERhdGVUaW1lcy4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBzeXN0ZW0ncyB0aW1lIHpvbmUgKHRoZSBvbmUgc2V0IG9uIHRoZSBtYWNoaW5lIHRoYXQgcnVucyB0aGlzIGNvZGUpLgogICAgICogQHR5cGUge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgZGVmYXVsdFpvbmUoKSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGRlZmF1bHRab25lLCBTeXN0ZW1ab25lLmluc3RhbmNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TG9jYWxlKCkgewogICAgICByZXR1cm4gZGVmYXVsdExvY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBsb2NhbGUgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIHNldCBkZWZhdWx0TG9jYWxlKGxvY2FsZSkgewogICAgICBkZWZhdWx0TG9jYWxlID0gbG9jYWxlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkZWZhdWx0IG51bWJlcmluZyBzeXN0ZW0gdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0TnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gZGVmYXVsdE51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgZGVmYXVsdCBudW1iZXJpbmcgc3lzdGVtIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE51bWJlcmluZ1N5c3RlbShudW1iZXJpbmdTeXN0ZW0pIHsKICAgICAgZGVmYXVsdE51bWJlcmluZ1N5c3RlbSA9IG51bWJlcmluZ1N5c3RlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZGVmYXVsdCBvdXRwdXQgY2FsZW5kYXIgdG8gY3JlYXRlIERhdGVUaW1lcyB3aXRoLiBEb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgc3RhdGljIGdldCBkZWZhdWx0T3V0cHV0Q2FsZW5kYXIoKSB7CiAgICAgIHJldHVybiBkZWZhdWx0T3V0cHV0Q2FsZW5kYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGNhbGVuZGFyIHRvIGNyZWF0ZSBEYXRlVGltZXMgd2l0aC4gRG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBzZXQgZGVmYXVsdE91dHB1dENhbGVuZGFyKG91dHB1dENhbGVuZGFyKSB7CiAgICAgIGRlZmF1bHRPdXRwdXRDYWxlbmRhciA9IG91dHB1dENhbGVuZGFyOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjdXRvZmYgeWVhciBhZnRlciB3aGljaCBhIHN0cmluZyBlbmNvZGluZyBhIHllYXIgYXMgdHdvIGRpZ2l0cyBpcyBpbnRlcnByZXRlZCB0byBvY2N1ciBpbiB0aGUgY3VycmVudCBjZW50dXJ5LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgc3RhdGljIGdldCB0d29EaWdpdEN1dG9mZlllYXIoKSB7CiAgICAgIHJldHVybiB0d29EaWdpdEN1dG9mZlllYXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGN1dG9mZiB5ZWFyIGFmdGVyIHdoaWNoIGEgc3RyaW5nIGVuY29kaW5nIGEgeWVhciBhcyB0d28gZGlnaXRzIGlzIGludGVycHJldGVkIHRvIG9jY3VyIGluIHRoZSBjdXJyZW50IGNlbnR1cnkuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gMCAvLyBjdXQtb2ZmIHllYXIgaXMgMCwgc28gYWxsICd5eScgYXJlIGludGVycHJldGVkIGFzIGN1cnJlbnQgY2VudHVyeQogICAgICogQGV4YW1wbGUgU2V0dGluZ3MudHdvRGlnaXRDdXRvZmZZZWFyID0gNTAgLy8gJzQ5JyAtPiAxOTQ5OyAnNTAnIC0+IDIwNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDE5NTAgLy8gaW50ZXJwcmV0ZWQgYXMgNTAKICAgICAqIEBleGFtcGxlIFNldHRpbmdzLnR3b0RpZ2l0Q3V0b2ZmWWVhciA9IDIwNTAgLy8gQUxTTyBpbnRlcnByZXRlZCBhcyA1MAogICAgICovCiAgICBzdGF0aWMgc2V0IHR3b0RpZ2l0Q3V0b2ZmWWVhcihjdXRvZmZZZWFyKSB7CiAgICAgIHR3b0RpZ2l0Q3V0b2ZmWWVhciA9IGN1dG9mZlllYXIgJSAxMDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgZ2V0IHRocm93T25JbnZhbGlkKCkgewogICAgICByZXR1cm4gdGhyb3dPbkludmFsaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBMdXhvbiB3aWxsIHRocm93IHdoZW4gaXQgZW5jb3VudGVycyBpbnZhbGlkIERhdGVUaW1lcywgRHVyYXRpb25zLCBvciBJbnRlcnZhbHMKICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBzdGF0aWMgc2V0IHRocm93T25JbnZhbGlkKHQpIHsKICAgICAgdGhyb3dPbkludmFsaWQgPSB0OwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgTHV4b24ncyBnbG9iYWwgY2FjaGVzLiBTaG91bGQgb25seSBiZSBuZWNlc3NhcnkgaW4gdGVzdGluZyBzY2VuYXJpb3MuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzdGF0aWMgcmVzZXRDYWNoZXMoKSB7CiAgICAgIExvY2FsZS5yZXNldENhY2hlKCk7CiAgICAgIElBTkFab25lLnJlc2V0Q2FjaGUoKTsKICAgIH0KICB9CgogIC8qCiAgICBUaGlzIGlzIGp1c3QgYSBqdW5rIGRyYXdlciwgY29udGFpbmluZyBhbnl0aGluZyB1c2VkIGFjcm9zcyBtdWx0aXBsZSBjbGFzc2VzLgogICAgQmVjYXVzZSBMdXhvbiBpcyBzbWFsbChpc2gpLCB0aGlzIHNob3VsZCBzdGF5IHNtYWxsIGFuZCB3ZSB3b24ndCB3b3JyeSBhYm91dCBzcGxpdHRpbmcKICAgIGl0IHVwIGludG8sIHNheSwgcGFyc2luZ1V0aWwuanMgYW5kIGJhc2ljVXRpbC5qcyBhbmQgc28gb24uIEJ1dCB0aGV5IGFyZSBkaXZpZGVkIHVwIGJ5IGZlYXR1cmUgYXJlYS4KICAqLwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICAvLyBUWVBFUwoKICBmdW5jdGlvbiBpc1VuZGVmaW5lZChvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJ1bmRlZmluZWQiOwogIH0KCiAgZnVuY3Rpb24gaXNOdW1iZXIobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAibnVtYmVyIjsKICB9CgogIGZ1bmN0aW9uIGlzSW50ZWdlcihvKSB7CiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICJudW1iZXIiICYmIG8gJSAxID09PSAwOwogIH0KCiAgZnVuY3Rpb24gaXNTdHJpbmcobykgewogICAgcmV0dXJuIHR5cGVvZiBvID09PSAic3RyaW5nIjsKICB9CgogIGZ1bmN0aW9uIGlzRGF0ZShvKSB7CiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pID09PSAiW29iamVjdCBEYXRlXSI7CiAgfQoKICAvLyBDQVBBQklMSVRJRVMKCiAgZnVuY3Rpb24gaGFzUmVsYXRpdmUoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gdHlwZW9mIEludGwgIT09ICJ1bmRlZmluZWQiICYmICEhSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIC8vIE9CSkVDVFMgQU5EIEFSUkFZUwoKICBmdW5jdGlvbiBtYXliZUFycmF5KHRoaW5nKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGluZykgPyB0aGluZyA6IFt0aGluZ107CiAgfQoKICBmdW5jdGlvbiBiZXN0QnkoYXJyLCBieSwgY29tcGFyZSkgewogICAgaWYgKGFyci5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0KICAgIHJldHVybiBhcnIucmVkdWNlKChiZXN0LCBuZXh0KSA9PiB7CiAgICAgIGNvbnN0IHBhaXIgPSBbYnkobmV4dCksIG5leHRdOwogICAgICBpZiAoIWJlc3QpIHsKICAgICAgICByZXR1cm4gcGFpcjsKICAgICAgfSBlbHNlIGlmIChjb21wYXJlKGJlc3RbMF0sIHBhaXJbMF0pID09PSBiZXN0WzBdKSB7CiAgICAgICAgcmV0dXJuIGJlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhaXI7CiAgICAgIH0KICAgIH0sIG51bGwpWzFdOwogIH0KCiAgZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHsKICAgIHJldHVybiBrZXlzLnJlZHVjZSgoYSwgaykgPT4gewogICAgICBhW2tdID0gb2JqW2tdOwogICAgICByZXR1cm4gYTsKICAgIH0sIHt9KTsKICB9CgogIGZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkgewogICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwogIH0KCiAgLy8gTlVNQkVSUyBBTkQgU1RSSU5HUwoKICBmdW5jdGlvbiBpbnRlZ2VyQmV0d2Vlbih0aGluZywgYm90dG9tLCB0b3ApIHsKICAgIHJldHVybiBpc0ludGVnZXIodGhpbmcpICYmIHRoaW5nID49IGJvdHRvbSAmJiB0aGluZyA8PSB0b3A7CiAgfQoKICAvLyB4ICUgbiBidXQgdGFrZXMgdGhlIHNpZ24gb2YgbiBpbnN0ZWFkIG9mIHgKICBmdW5jdGlvbiBmbG9vck1vZCh4LCBuKSB7CiAgICByZXR1cm4geCAtIG4gKiBNYXRoLmZsb29yKHggLyBuKTsKICB9CgogIGZ1bmN0aW9uIHBhZFN0YXJ0KGlucHV0LCBuID0gMikgewogICAgY29uc3QgaXNOZWcgPSBpbnB1dCA8IDA7CiAgICBsZXQgcGFkZGVkOwogICAgaWYgKGlzTmVnKSB7CiAgICAgIHBhZGRlZCA9ICItIiArICgiIiArIC1pbnB1dCkucGFkU3RhcnQobiwgIjAiKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhZGRlZCA9ICgiIiArIGlucHV0KS5wYWRTdGFydChuLCAiMCIpOwogICAgfQogICAgcmV0dXJuIHBhZGRlZDsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSW50ZWdlcihzdHJpbmcpIHsKICAgIGlmIChpc1VuZGVmaW5lZChzdHJpbmcpIHx8IHN0cmluZyA9PT0gbnVsbCB8fCBzdHJpbmcgPT09ICIiKSB7CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCAxMCk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZUZsb2F0aW5nKHN0cmluZykgewogICAgaWYgKGlzVW5kZWZpbmVkKHN0cmluZykgfHwgc3RyaW5nID09PSBudWxsIHx8IHN0cmluZyA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBwYXJzZU1pbGxpcyhmcmFjdGlvbikgewogICAgLy8gUmV0dXJuIHVuZGVmaW5lZCAoaW5zdGVhZCBvZiAwKSBpbiB0aGVzZSBjYXNlcywgd2hlcmUgZnJhY3Rpb24gaXMgbm90IHNldAogICAgaWYgKGlzVW5kZWZpbmVkKGZyYWN0aW9uKSB8fCBmcmFjdGlvbiA9PT0gbnVsbCB8fCBmcmFjdGlvbiA9PT0gIiIpIHsKICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnN0IGYgPSBwYXJzZUZsb2F0KCIwLiIgKyBmcmFjdGlvbikgKiAxMDAwOwogICAgICByZXR1cm4gTWF0aC5mbG9vcihmKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJvdW5kVG8obnVtYmVyLCBkaWdpdHMsIHRvd2FyZFplcm8gPSBmYWxzZSkgewogICAgY29uc3QgZmFjdG9yID0gMTAgKiogZGlnaXRzLAogICAgICByb3VuZGVyID0gdG93YXJkWmVybyA/IE1hdGgudHJ1bmMgOiBNYXRoLnJvdW5kOwogICAgcmV0dXJuIHJvdW5kZXIobnVtYmVyICogZmFjdG9yKSAvIGZhY3RvcjsKICB9CgogIC8vIERBVEUgQkFTSUNTCgogIGZ1bmN0aW9uIGlzTGVhcFllYXIoeWVhcikgewogICAgcmV0dXJuIHllYXIgJSA0ID09PSAwICYmICh5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDApOwogIH0KCiAgZnVuY3Rpb24gZGF5c0luWWVhcih5ZWFyKSB7CiAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTsKICB9CgogIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7CiAgICBjb25zdCBtb2RNb250aCA9IGZsb29yTW9kKG1vbnRoIC0gMSwgMTIpICsgMSwKICAgICAgbW9kWWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjsKCiAgICBpZiAobW9kTW9udGggPT09IDIpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIobW9kWWVhcikgPyAyOSA6IDI4OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIFszMSwgbnVsbCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vZE1vbnRoIC0gMV07CiAgICB9CiAgfQoKICAvLyBjb252ZXJ0IGEgY2FsZW5kYXIgb2JqZWN0IHRvIGEgbG9jYWwgdGltZXN0YW1wIChlcG9jaCwgYnV0IHdpdGggdGhlIG9mZnNldCBiYWtlZCBpbikKICBmdW5jdGlvbiBvYmpUb0xvY2FsVFMob2JqKSB7CiAgICBsZXQgZCA9IERhdGUuVVRDKAogICAgICBvYmoueWVhciwKICAgICAgb2JqLm1vbnRoIC0gMSwKICAgICAgb2JqLmRheSwKICAgICAgb2JqLmhvdXIsCiAgICAgIG9iai5taW51dGUsCiAgICAgIG9iai5zZWNvbmQsCiAgICAgIG9iai5taWxsaXNlY29uZAogICAgKTsKCiAgICAvLyBmb3IgbGVnYWN5IHJlYXNvbnMsIHllYXJzIGJldHdlZW4gMCBhbmQgOTkgYXJlIGludGVycHJldGVkIGFzIDE5WFg7IHJldmVydCB0aGF0CiAgICBpZiAob2JqLnllYXIgPCAxMDAgJiYgb2JqLnllYXIgPj0gMCkgewogICAgICBkID0gbmV3IERhdGUoZCk7CiAgICAgIC8vIHNldCB0aGUgbW9udGggYW5kIGRheSBhZ2FpbiwgdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB5ZWFyIDIwMDAgaXMgYSBsZWFwIHllYXIsIGJ1dCB5ZWFyIDEwMCBpcyBub3QKICAgICAgLy8gc28gaWYgb2JqLnllYXIgaXMgaW4gOTksIGJ1dCBvYmouZGF5IG1ha2VzIGl0IHJvbGwgb3ZlciBpbnRvIHllYXIgMTAwLAogICAgICAvLyB0aGUgY2FsY3VsYXRpb25zIGRvbmUgYnkgRGF0ZS5VVEMgYXJlIHVzaW5nIHllYXIgMjAwMCAtIHdoaWNoIGlzIGluY29ycmVjdAogICAgICBkLnNldFVUQ0Z1bGxZZWFyKG9iai55ZWFyLCBvYmoubW9udGggLSAxLCBvYmouZGF5KTsKICAgIH0KICAgIHJldHVybiArZDsKICB9CgogIGZ1bmN0aW9uIHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcikgewogICAgY29uc3QgcDEgPQogICAgICAgICh3ZWVrWWVhciArCiAgICAgICAgICBNYXRoLmZsb29yKHdlZWtZZWFyIC8gNCkgLQogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDEwMCkgKwogICAgICAgICAgTWF0aC5mbG9vcih3ZWVrWWVhciAvIDQwMCkpICUKICAgICAgICA3LAogICAgICBsYXN0ID0gd2Vla1llYXIgLSAxLAogICAgICBwMiA9IChsYXN0ICsgTWF0aC5mbG9vcihsYXN0IC8gNCkgLSBNYXRoLmZsb29yKGxhc3QgLyAxMDApICsgTWF0aC5mbG9vcihsYXN0IC8gNDAwKSkgJSA3OwogICAgcmV0dXJuIHAxID09PSA0IHx8IHAyID09PSAzID8gNTMgOiA1MjsKICB9CgogIGZ1bmN0aW9uIHVudHJ1bmNhdGVZZWFyKHllYXIpIHsKICAgIGlmICh5ZWFyID4gOTkpIHsKICAgICAgcmV0dXJuIHllYXI7CiAgICB9IGVsc2UgcmV0dXJuIHllYXIgPiBTZXR0aW5ncy50d29EaWdpdEN1dG9mZlllYXIgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIH0KCiAgLy8gUEFSU0lORwoKICBmdW5jdGlvbiBwYXJzZVpvbmVJbmZvKHRzLCBvZmZzZXRGb3JtYXQsIGxvY2FsZSwgdGltZVpvbmUgPSBudWxsKSB7CiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodHMpLAogICAgICBpbnRsT3B0cyA9IHsKICAgICAgICBob3VyQ3ljbGU6ICJoMjMiLAogICAgICAgIHllYXI6ICJudW1lcmljIiwKICAgICAgICBtb250aDogIjItZGlnaXQiLAogICAgICAgIGRheTogIjItZGlnaXQiLAogICAgICAgIGhvdXI6ICIyLWRpZ2l0IiwKICAgICAgICBtaW51dGU6ICIyLWRpZ2l0IiwKICAgICAgfTsKCiAgICBpZiAodGltZVpvbmUpIHsKICAgICAgaW50bE9wdHMudGltZVpvbmUgPSB0aW1lWm9uZTsKICAgIH0KCiAgICBjb25zdCBtb2RpZmllZCA9IHsgdGltZVpvbmVOYW1lOiBvZmZzZXRGb3JtYXQsIC4uLmludGxPcHRzIH07CgogICAgY29uc3QgcGFyc2VkID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBtb2RpZmllZCkKICAgICAgLmZvcm1hdFRvUGFydHMoZGF0ZSkKICAgICAgLmZpbmQoKG0pID0+IG0udHlwZS50b0xvd2VyQ2FzZSgpID09PSAidGltZXpvbmVuYW1lIik7CiAgICByZXR1cm4gcGFyc2VkID8gcGFyc2VkLnZhbHVlIDogbnVsbDsKICB9CgogIC8vIHNpZ25lZE9mZnNldCgnLTUnLCAnMzAnKSAtPiAtMzMwCiAgZnVuY3Rpb24gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cikgewogICAgbGV0IG9mZkhvdXIgPSBwYXJzZUludChvZmZIb3VyU3RyLCAxMCk7CgogICAgLy8gZG9uJ3QgfHwgdGhpcyBiZWNhdXNlIHdlIHdhbnQgdG8gcHJlc2VydmUgLTAKICAgIGlmIChOdW1iZXIuaXNOYU4ob2ZmSG91cikpIHsKICAgICAgb2ZmSG91ciA9IDA7CiAgICB9CgogICAgY29uc3Qgb2ZmTWluID0gcGFyc2VJbnQob2ZmTWludXRlU3RyLCAxMCkgfHwgMCwKICAgICAgb2ZmTWluU2lnbmVkID0gb2ZmSG91ciA8IDAgfHwgT2JqZWN0LmlzKG9mZkhvdXIsIC0wKSA/IC1vZmZNaW4gOiBvZmZNaW47CiAgICByZXR1cm4gb2ZmSG91ciAqIDYwICsgb2ZmTWluU2lnbmVkOwogIH0KCiAgLy8gQ09FUkNJT04KCiAgZnVuY3Rpb24gYXNOdW1iZXIodmFsdWUpIHsKICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2YWx1ZSk7CiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIgfHwgdmFsdWUgPT09ICIiIHx8IE51bWJlci5pc05hTihudW1lcmljVmFsdWUpKQogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoYEludmFsaWQgdW5pdCB2YWx1ZSAke3ZhbHVlfWApOwogICAgcmV0dXJuIG51bWVyaWNWYWx1ZTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZXIpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7fTsKICAgIGZvciAoY29uc3QgdSBpbiBvYmopIHsKICAgICAgaWYgKGhhc093blByb3BlcnR5KG9iaiwgdSkpIHsKICAgICAgICBjb25zdCB2ID0gb2JqW3VdOwogICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgbm9ybWFsaXplZFtub3JtYWxpemVyKHUpXSA9IGFzTnVtYmVyKHYpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9mZnNldChvZmZzZXQsIGZvcm1hdCkgewogICAgY29uc3QgaG91cnMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAvIDYwKSksCiAgICAgIG1pbnV0ZXMgPSBNYXRoLnRydW5jKE1hdGguYWJzKG9mZnNldCAlIDYwKSksCiAgICAgIHNpZ24gPSBvZmZzZXQgPj0gMCA/ICIrIiA6ICItIjsKCiAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIGAke3NpZ259JHtwYWRTdGFydChob3VycywgMil9OiR7cGFkU3RhcnQobWludXRlcywgMil9YDsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke2hvdXJzfSR7bWludXRlcyA+IDAgPyBgOiR7bWludXRlc31gIDogIiJ9YDsKICAgICAgY2FzZSAidGVjaGllIjoKICAgICAgICByZXR1cm4gYCR7c2lnbn0ke3BhZFN0YXJ0KGhvdXJzLCAyKX0ke3BhZFN0YXJ0KG1pbnV0ZXMsIDIpfWA7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFZhbHVlIGZvcm1hdCAke2Zvcm1hdH0gaXMgb3V0IG9mIHJhbmdlIGZvciBwcm9wZXJ0eSBmb3JtYXRgKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHRpbWVPYmplY3Qob2JqKSB7CiAgICByZXR1cm4gcGljayhvYmosIFsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0pOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgY29uc3QgbW9udGhzTG9uZyA9IFsKICAgICJKYW51YXJ5IiwKICAgICJGZWJydWFyeSIsCiAgICAiTWFyY2giLAogICAgIkFwcmlsIiwKICAgICJNYXkiLAogICAgIkp1bmUiLAogICAgIkp1bHkiLAogICAgIkF1Z3VzdCIsCiAgICAiU2VwdGVtYmVyIiwKICAgICJPY3RvYmVyIiwKICAgICJOb3ZlbWJlciIsCiAgICAiRGVjZW1iZXIiLAogIF07CgogIGNvbnN0IG1vbnRoc1Nob3J0ID0gWwogICAgIkphbiIsCiAgICAiRmViIiwKICAgICJNYXIiLAogICAgIkFwciIsCiAgICAiTWF5IiwKICAgICJKdW4iLAogICAgIkp1bCIsCiAgICAiQXVnIiwKICAgICJTZXAiLAogICAgIk9jdCIsCiAgICAiTm92IiwKICAgICJEZWMiLAogIF07CgogIGNvbnN0IG1vbnRoc05hcnJvdyA9IFsiSiIsICJGIiwgIk0iLCAiQSIsICJNIiwgIkoiLCAiSiIsICJBIiwgIlMiLCAiTyIsICJOIiwgIkQiXTsKCiAgZnVuY3Rpb24gbW9udGhzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc05hcnJvd107CiAgICAgIGNhc2UgInNob3J0IjoKICAgICAgICByZXR1cm4gWy4uLm1vbnRoc1Nob3J0XTsKICAgICAgY2FzZSAibG9uZyI6CiAgICAgICAgcmV0dXJuIFsuLi5tb250aHNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiwgIjkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgY2FzZSAiMi1kaWdpdCI6CiAgICAgICAgcmV0dXJuIFsiMDEiLCAiMDIiLCAiMDMiLCAiMDQiLCAiMDUiLCAiMDYiLCAiMDciLCAiMDgiLCAiMDkiLCAiMTAiLCAiMTEiLCAiMTIiXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGNvbnN0IHdlZWtkYXlzTG9uZyA9IFsKICAgICJNb25kYXkiLAogICAgIlR1ZXNkYXkiLAogICAgIldlZG5lc2RheSIsCiAgICAiVGh1cnNkYXkiLAogICAgIkZyaWRheSIsCiAgICAiU2F0dXJkYXkiLAogICAgIlN1bmRheSIsCiAgXTsKCiAgY29uc3Qgd2Vla2RheXNTaG9ydCA9IFsiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIl07CgogIGNvbnN0IHdlZWtkYXlzTmFycm93ID0gWyJNIiwgIlQiLCAiVyIsICJUIiwgIkYiLCAiUyIsICJTIl07CgogIGZ1bmN0aW9uIHdlZWtkYXlzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLndlZWtkYXlzTmFycm93XTsKICAgICAgY2FzZSAic2hvcnQiOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNTaG9ydF07CiAgICAgIGNhc2UgImxvbmciOgogICAgICAgIHJldHVybiBbLi4ud2Vla2RheXNMb25nXTsKICAgICAgY2FzZSAibnVtZXJpYyI6CiAgICAgICAgcmV0dXJuIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyJdOwogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiBudWxsOwogICAgfQogIH0KCiAgY29uc3QgbWVyaWRpZW1zID0gWyJBTSIsICJQTSJdOwoKICBjb25zdCBlcmFzTG9uZyA9IFsiQmVmb3JlIENocmlzdCIsICJBbm5vIERvbWluaSJdOwoKICBjb25zdCBlcmFzU2hvcnQgPSBbIkJDIiwgIkFEIl07CgogIGNvbnN0IGVyYXNOYXJyb3cgPSBbIkIiLCAiQSJdOwoKICBmdW5jdGlvbiBlcmFzKGxlbmd0aCkgewogICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgY2FzZSAibmFycm93IjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNOYXJyb3ddOwogICAgICBjYXNlICJzaG9ydCI6CiAgICAgICAgcmV0dXJuIFsuLi5lcmFzU2hvcnRdOwogICAgICBjYXNlICJsb25nIjoKICAgICAgICByZXR1cm4gWy4uLmVyYXNMb25nXTsKICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpIHsKICAgIHJldHVybiBtZXJpZGllbXNbZHQuaG91ciA8IDEyID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gd2Vla2RheUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIHsKICAgIHJldHVybiB3ZWVrZGF5cyhsZW5ndGgpW2R0LndlZWtkYXkgLSAxXTsKICB9CgogIGZ1bmN0aW9uIG1vbnRoRm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkgewogICAgcmV0dXJuIG1vbnRocyhsZW5ndGgpW2R0Lm1vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiBlcmFGb3JEYXRlVGltZShkdCwgbGVuZ3RoKSB7CiAgICByZXR1cm4gZXJhcyhsZW5ndGgpW2R0LnllYXIgPCAwID8gMCA6IDFdOwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmVUaW1lKHVuaXQsIGNvdW50LCBudW1lcmljID0gImFsd2F5cyIsIG5hcnJvdyA9IGZhbHNlKSB7CiAgICBjb25zdCB1bml0cyA9IHsKICAgICAgeWVhcnM6IFsieWVhciIsICJ5ci4iXSwKICAgICAgcXVhcnRlcnM6IFsicXVhcnRlciIsICJxdHIuIl0sCiAgICAgIG1vbnRoczogWyJtb250aCIsICJtby4iXSwKICAgICAgd2Vla3M6IFsid2VlayIsICJ3ay4iXSwKICAgICAgZGF5czogWyJkYXkiLCAiZGF5IiwgImRheXMiXSwKICAgICAgaG91cnM6IFsiaG91ciIsICJoci4iXSwKICAgICAgbWludXRlczogWyJtaW51dGUiLCAibWluLiJdLAogICAgICBzZWNvbmRzOiBbInNlY29uZCIsICJzZWMuIl0sCiAgICB9OwoKICAgIGNvbnN0IGxhc3RhYmxlID0gWyJob3VycyIsICJtaW51dGVzIiwgInNlY29uZHMiXS5pbmRleE9mKHVuaXQpID09PSAtMTsKCiAgICBpZiAobnVtZXJpYyA9PT0gImF1dG8iICYmIGxhc3RhYmxlKSB7CiAgICAgIGNvbnN0IGlzRGF5ID0gdW5pdCA9PT0gImRheXMiOwogICAgICBzd2l0Y2ggKGNvdW50KSB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvbW9ycm93IiA6IGBuZXh0ICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgICBjYXNlIC0xOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInllc3RlcmRheSIgOiBgbGFzdCAke3VuaXRzW3VuaXRdWzBdfWA7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgcmV0dXJuIGlzRGF5ID8gInRvZGF5IiA6IGB0aGlzICR7dW5pdHNbdW5pdF1bMF19YDsKICAgICAgfQogICAgfQoKICAgIGNvbnN0IGlzSW5QYXN0ID0gT2JqZWN0LmlzKGNvdW50LCAtMCkgfHwgY291bnQgPCAwLAogICAgICBmbXRWYWx1ZSA9IE1hdGguYWJzKGNvdW50KSwKICAgICAgc2luZ3VsYXIgPSBmbXRWYWx1ZSA9PT0gMSwKICAgICAgbGlsVW5pdHMgPSB1bml0c1t1bml0XSwKICAgICAgZm10VW5pdCA9IG5hcnJvdwogICAgICAgID8gc2luZ3VsYXIKICAgICAgICAgID8gbGlsVW5pdHNbMV0KICAgICAgICAgIDogbGlsVW5pdHNbMl0gfHwgbGlsVW5pdHNbMV0KICAgICAgICA6IHNpbmd1bGFyCiAgICAgICAgPyB1bml0c1t1bml0XVswXQogICAgICAgIDogdW5pdDsKICAgIHJldHVybiBpc0luUGFzdCA/IGAke2ZtdFZhbHVlfSAke2ZtdFVuaXR9IGFnb2AgOiBgaW4gJHtmbXRWYWx1ZX0gJHtmbXRVbml0fWA7CiAgfQoKICBmdW5jdGlvbiBzdHJpbmdpZnlUb2tlbnMoc3BsaXRzLCB0b2tlblRvU3RyaW5nKSB7CiAgICBsZXQgcyA9ICIiOwogICAgZm9yIChjb25zdCB0b2tlbiBvZiBzcGxpdHMpIHsKICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICBzICs9IHRva2VuLnZhbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBzICs9IHRva2VuVG9TdHJpbmcodG9rZW4udmFsKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHM7CiAgfQoKICBjb25zdCBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzID0gewogICAgRDogREFURV9TSE9SVCwKICAgIEREOiBEQVRFX01FRCwKICAgIERERDogREFURV9GVUxMLAogICAgRERERDogREFURV9IVUdFLAogICAgdDogVElNRV9TSU1QTEUsCiAgICB0dDogVElNRV9XSVRIX1NFQ09ORFMsCiAgICB0dHQ6IFRJTUVfV0lUSF9TSE9SVF9PRkZTRVQsCiAgICB0dHR0OiBUSU1FX1dJVEhfTE9OR19PRkZTRVQsCiAgICBUOiBUSU1FXzI0X1NJTVBMRSwKICAgIFRUOiBUSU1FXzI0X1dJVEhfU0VDT05EUywKICAgIFRUVDogVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVCwKICAgIFRUVFQ6IFRJTUVfMjRfV0lUSF9MT05HX09GRlNFVCwKICAgIGY6IERBVEVUSU1FX1NIT1JULAogICAgZmY6IERBVEVUSU1FX01FRCwKICAgIGZmZjogREFURVRJTUVfRlVMTCwKICAgIGZmZmY6IERBVEVUSU1FX0hVR0UsCiAgICBGOiBEQVRFVElNRV9TSE9SVF9XSVRIX1NFQ09ORFMsCiAgICBGRjogREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUywKICAgIEZGRjogREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMsCiAgICBGRkZGOiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUywKICB9OwoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBjbGFzcyBGb3JtYXR0ZXIgewogICAgc3RhdGljIGNyZWF0ZShsb2NhbGUsIG9wdHMgPSB7fSkgewogICAgICByZXR1cm4gbmV3IEZvcm1hdHRlcihsb2NhbGUsIG9wdHMpOwogICAgfQoKICAgIHN0YXRpYyBwYXJzZUZvcm1hdChmbXQpIHsKICAgICAgLy8gd2hpdGUtc3BhY2UgaXMgYWx3YXlzIGNvbnNpZGVyZWQgYSBsaXRlcmFsIGluIHVzZXItcHJvdmlkZWQgZm9ybWF0cwogICAgICAvLyB0aGUgIiAiIHRva2VuIGhhcyBhIHNwZWNpYWwgbWVhbmluZyAoc2VlIHVuaXRGb3JUb2tlbikKCiAgICAgIGxldCBjdXJyZW50ID0gbnVsbCwKICAgICAgICBjdXJyZW50RnVsbCA9ICIiLAogICAgICAgIGJyYWNrZXRlZCA9IGZhbHNlOwogICAgICBjb25zdCBzcGxpdHMgPSBbXTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbXQubGVuZ3RoOyBpKyspIHsKICAgICAgICBjb25zdCBjID0gZm10LmNoYXJBdChpKTsKICAgICAgICBpZiAoYyA9PT0gIiciKSB7CiAgICAgICAgICBpZiAoY3VycmVudEZ1bGwubGVuZ3RoID4gMCkgewogICAgICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICAgICAgfQogICAgICAgICAgY3VycmVudCA9IG51bGw7CiAgICAgICAgICBjdXJyZW50RnVsbCA9ICIiOwogICAgICAgICAgYnJhY2tldGVkID0gIWJyYWNrZXRlZDsKICAgICAgICB9IGVsc2UgaWYgKGJyYWNrZXRlZCkgewogICAgICAgICAgY3VycmVudEZ1bGwgKz0gYzsKICAgICAgICB9IGVsc2UgaWYgKGMgPT09IGN1cnJlbnQpIHsKICAgICAgICAgIGN1cnJlbnRGdWxsICs9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChjdXJyZW50RnVsbC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHNwbGl0cy5wdXNoKHsgbGl0ZXJhbDogL15ccyskLy50ZXN0KGN1cnJlbnRGdWxsKSwgdmFsOiBjdXJyZW50RnVsbCB9KTsKICAgICAgICAgIH0KICAgICAgICAgIGN1cnJlbnRGdWxsID0gYzsKICAgICAgICAgIGN1cnJlbnQgPSBjOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGN1cnJlbnRGdWxsLmxlbmd0aCA+IDApIHsKICAgICAgICBzcGxpdHMucHVzaCh7IGxpdGVyYWw6IGJyYWNrZXRlZCB8fCAvXlxzKyQvLnRlc3QoY3VycmVudEZ1bGwpLCB2YWw6IGN1cnJlbnRGdWxsIH0pOwogICAgICB9CgogICAgICByZXR1cm4gc3BsaXRzOwogICAgfQoKICAgIHN0YXRpYyBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzKHRva2VuKSB7CiAgICAgIHJldHVybiBtYWNyb1Rva2VuVG9Gb3JtYXRPcHRzW3Rva2VuXTsKICAgIH0KCiAgICBjb25zdHJ1Y3Rvcihsb2NhbGUsIGZvcm1hdE9wdHMpIHsKICAgICAgdGhpcy5vcHRzID0gZm9ybWF0T3B0czsKICAgICAgdGhpcy5sb2MgPSBsb2NhbGU7CiAgICAgIHRoaXMuc3lzdGVtTG9jID0gbnVsbDsKICAgIH0KCiAgICBmb3JtYXRXaXRoU3lzdGVtRGVmYXVsdChkdCwgb3B0cykgewogICAgICBpZiAodGhpcy5zeXN0ZW1Mb2MgPT09IG51bGwpIHsKICAgICAgICB0aGlzLnN5c3RlbUxvYyA9IHRoaXMubG9jLnJlZGVmYXVsdFRvU3lzdGVtKCk7CiAgICAgIH0KICAgICAgY29uc3QgZGYgPSB0aGlzLnN5c3RlbUxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICAgIHJldHVybiBkZi5mb3JtYXQoKTsKICAgIH0KCiAgICBkdEZvcm1hdHRlcihkdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmxvYy5kdEZvcm1hdHRlcihkdCwgeyAuLi50aGlzLm9wdHMsIC4uLm9wdHMgfSk7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWUoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdCgpOwogICAgfQoKICAgIGZvcm1hdERhdGVUaW1lUGFydHMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLmZvcm1hdFRvUGFydHMoKTsKICAgIH0KCiAgICBmb3JtYXRJbnRlcnZhbChpbnRlcnZhbCwgb3B0cykgewogICAgICBjb25zdCBkZiA9IHRoaXMuZHRGb3JtYXR0ZXIoaW50ZXJ2YWwuc3RhcnQsIG9wdHMpOwogICAgICByZXR1cm4gZGYuZHRmLmZvcm1hdFJhbmdlKGludGVydmFsLnN0YXJ0LnRvSlNEYXRlKCksIGludGVydmFsLmVuZC50b0pTRGF0ZSgpKTsKICAgIH0KCiAgICByZXNvbHZlZE9wdGlvbnMoZHQsIG9wdHMpIHsKICAgICAgcmV0dXJuIHRoaXMuZHRGb3JtYXR0ZXIoZHQsIG9wdHMpLnJlc29sdmVkT3B0aW9ucygpOwogICAgfQoKICAgIG51bShuLCBwID0gMCkgewogICAgICAvLyB3ZSBnZXQgc29tZSBwZXJmIG91dCBvZiBkb2luZyB0aGlzIGhlcmUsIGFubm95aW5nbHkKICAgICAgaWYgKHRoaXMub3B0cy5mb3JjZVNpbXBsZSkgewogICAgICAgIHJldHVybiBwYWRTdGFydChuLCBwKTsKICAgICAgfQoKICAgICAgY29uc3Qgb3B0cyA9IHsgLi4udGhpcy5vcHRzIH07CgogICAgICBpZiAocCA+IDApIHsKICAgICAgICBvcHRzLnBhZFRvID0gcDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMubG9jLm51bWJlckZvcm1hdHRlcihvcHRzKS5mb3JtYXQobik7CiAgICB9CgogICAgZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKGR0LCBmbXQpIHsKICAgICAgY29uc3Qga25vd25FbmdsaXNoID0gdGhpcy5sb2MubGlzdGluZ01vZGUoKSA9PT0gImVuIiwKICAgICAgICB1c2VEYXRlVGltZUZvcm1hdHRlciA9IHRoaXMubG9jLm91dHB1dENhbGVuZGFyICYmIHRoaXMubG9jLm91dHB1dENhbGVuZGFyICE9PSAiZ3JlZ29yeSIsCiAgICAgICAgc3RyaW5nID0gKG9wdHMsIGV4dHJhY3QpID0+IHRoaXMubG9jLmV4dHJhY3QoZHQsIG9wdHMsIGV4dHJhY3QpLAogICAgICAgIGZvcm1hdE9mZnNldCA9IChvcHRzKSA9PiB7CiAgICAgICAgICBpZiAoZHQuaXNPZmZzZXRGaXhlZCAmJiBkdC5vZmZzZXQgPT09IDAgJiYgb3B0cy5hbGxvd1opIHsKICAgICAgICAgICAgcmV0dXJuICJaIjsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZHQuaXNWYWxpZCA/IGR0LnpvbmUuZm9ybWF0T2Zmc2V0KGR0LnRzLCBvcHRzLmZvcm1hdCkgOiAiIjsKICAgICAgICB9LAogICAgICAgIG1lcmlkaWVtID0gKCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaAogICAgICAgICAgICA/IG1lcmlkaWVtRm9yRGF0ZVRpbWUoZHQpCiAgICAgICAgICAgIDogc3RyaW5nKHsgaG91cjogIm51bWVyaWMiLCBob3VyQ3ljbGU6ICJoMTIiIH0sICJkYXlwZXJpb2QiKSwKICAgICAgICBtb250aCA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyBtb250aEZvckRhdGVUaW1lKGR0LCBsZW5ndGgpCiAgICAgICAgICAgIDogc3RyaW5nKHN0YW5kYWxvbmUgPyB7IG1vbnRoOiBsZW5ndGggfSA6IHsgbW9udGg6IGxlbmd0aCwgZGF5OiAibnVtZXJpYyIgfSwgIm1vbnRoIiksCiAgICAgICAgd2Vla2RheSA9IChsZW5ndGgsIHN0YW5kYWxvbmUpID0+CiAgICAgICAgICBrbm93bkVuZ2xpc2gKICAgICAgICAgICAgPyB3ZWVrZGF5Rm9yRGF0ZVRpbWUoZHQsIGxlbmd0aCkKICAgICAgICAgICAgOiBzdHJpbmcoCiAgICAgICAgICAgICAgICBzdGFuZGFsb25lID8geyB3ZWVrZGF5OiBsZW5ndGggfSA6IHsgd2Vla2RheTogbGVuZ3RoLCBtb250aDogImxvbmciLCBkYXk6ICJudW1lcmljIiB9LAogICAgICAgICAgICAgICAgIndlZWtkYXkiCiAgICAgICAgICAgICAgKSwKICAgICAgICBtYXliZU1hY3JvID0gKHRva2VuKSA9PiB7CiAgICAgICAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4pOwogICAgICAgICAgaWYgKGZvcm1hdE9wdHMpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0V2l0aFN5c3RlbURlZmF1bHQoZHQsIGZvcm1hdE9wdHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgZXJhID0gKGxlbmd0aCkgPT4KICAgICAgICAgIGtub3duRW5nbGlzaCA/IGVyYUZvckRhdGVUaW1lKGR0LCBsZW5ndGgpIDogc3RyaW5nKHsgZXJhOiBsZW5ndGggfSwgImVyYSIpLAogICAgICAgIHRva2VuVG9TdHJpbmcgPSAodG9rZW4pID0+IHsKICAgICAgICAgIC8vIFdoZXJlIHBvc3NpYmxlOiBodHRwczovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vZGF0ZS10aW1lL2RhdGUtdGltZS1zeW1ib2xzCiAgICAgICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgICAgICAgIC8vIG1zCiAgICAgICAgICAgIGNhc2UgIlMiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taWxsaXNlY29uZCk7CiAgICAgICAgICAgIGNhc2UgInUiOgogICAgICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgICAgIGNhc2UgIlNTUyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbGxpc2Vjb25kLCAzKTsKICAgICAgICAgICAgLy8gc2Vjb25kcwogICAgICAgICAgICBjYXNlICJzIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuc2Vjb25kKTsKICAgICAgICAgICAgY2FzZSAic3MiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5zZWNvbmQsIDIpOwogICAgICAgICAgICAvLyBmcmFjdGlvbmFsIHNlY29uZHMKICAgICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShNYXRoLmZsb29yKGR0Lm1pbGxpc2Vjb25kIC8gMTApLCAyKTsKICAgICAgICAgICAgY2FzZSAidXV1IjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC5taWxsaXNlY29uZCAvIDEwMCkpOwogICAgICAgICAgICAvLyBtaW51dGVzCiAgICAgICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5taW51dGUpOwogICAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm1pbnV0ZSwgMik7CiAgICAgICAgICAgIC8vIGhvdXJzCiAgICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICAgIHJldHVybiB0aGlzLm51bShkdC5ob3VyICUgMTIgPT09IDAgPyAxMiA6IGR0LmhvdXIgJSAxMik7CiAgICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciAlIDEyID09PSAwID8gMTIgOiBkdC5ob3VyICUgMTIsIDIpOwogICAgICAgICAgICBjYXNlICJIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91cik7CiAgICAgICAgICAgIGNhc2UgIkhIIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQuaG91ciwgMik7CiAgICAgICAgICAgIC8vIG9mZnNldAogICAgICAgICAgICBjYXNlICJaIjoKICAgICAgICAgICAgICAvLyBsaWtlICs2CiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogIm5hcnJvdyIsIGFsbG93WjogdGhpcy5vcHRzLmFsbG93WiB9KTsKICAgICAgICAgICAgY2FzZSAiWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2OjAwCiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE9mZnNldCh7IGZvcm1hdDogInNob3J0IiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgKzA2MDAKICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0T2Zmc2V0KHsgZm9ybWF0OiAidGVjaGllIiwgYWxsb3daOiB0aGlzLm9wdHMuYWxsb3daIH0pOwogICAgICAgICAgICBjYXNlICJaWlpaIjoKICAgICAgICAgICAgICAvLyBsaWtlIEVTVAogICAgICAgICAgICAgIHJldHVybiBkdC56b25lLm9mZnNldE5hbWUoZHQudHMsIHsgZm9ybWF0OiAic2hvcnQiLCBsb2NhbGU6IHRoaXMubG9jLmxvY2FsZSB9KTsKICAgICAgICAgICAgY2FzZSAiWlpaWloiOgogICAgICAgICAgICAgIC8vIGxpa2UgRWFzdGVybiBTdGFuZGFyZCBUaW1lCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmUub2Zmc2V0TmFtZShkdC50cywgeyBmb3JtYXQ6ICJsb25nIiwgbG9jYWxlOiB0aGlzLmxvYy5sb2NhbGUgfSk7CiAgICAgICAgICAgIC8vIHpvbmUKICAgICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbWVyaWNhL05ld19Zb3JrCiAgICAgICAgICAgICAgcmV0dXJuIGR0LnpvbmVOYW1lOwogICAgICAgICAgICAvLyBtZXJpZGllbXMKICAgICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgICAgcmV0dXJuIG1lcmlkaWVtKCk7CiAgICAgICAgICAgIC8vIGRhdGVzCiAgICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlciA/IHN0cmluZyh7IGRheTogIm51bWVyaWMiIH0sICJkYXkiKSA6IHRoaXMubnVtKGR0LmRheSk7CiAgICAgICAgICAgIGNhc2UgImRkIjoKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyBkYXk6ICIyLWRpZ2l0IiB9LCAiZGF5IikgOiB0aGlzLm51bShkdC5kYXksIDIpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtkYXkpOwogICAgICAgICAgICBjYXNlICJjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXMnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoInNob3J0IiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgImNjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiY2NjY2MiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1QnCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyB3ZWVrZGF5cyAtIGZvcm1hdAogICAgICAgICAgICBjYXNlICJFIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQud2Vla2RheSk7CiAgICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAnVHVlcycKICAgICAgICAgICAgICByZXR1cm4gd2Vla2RheSgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICAgIC8vIGxpa2UgJ1R1ZXNkYXknCiAgICAgICAgICAgICAgcmV0dXJuIHdlZWtkYXkoImxvbmciLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIkVFRUVFIjoKICAgICAgICAgICAgICAvLyBsaWtlICdUJwogICAgICAgICAgICAgIHJldHVybiB3ZWVrZGF5KCJuYXJyb3ciLCBmYWxzZSk7CiAgICAgICAgICAgIC8vIG1vbnRocyAtIHN0YW5kYWxvbmUKICAgICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoKTsKICAgICAgICAgICAgY2FzZSAiTEwiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDEsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAiMi1kaWdpdCIsIGRheTogIm51bWVyaWMiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCB0cnVlKTsKICAgICAgICAgICAgY2FzZSAiTExMTCI6CiAgICAgICAgICAgICAgLy8gbGlrZSBKYW51YXJ5CiAgICAgICAgICAgICAgcmV0dXJuIG1vbnRoKCJsb25nIiwgdHJ1ZSk7CiAgICAgICAgICAgIGNhc2UgIkxMTExMIjoKICAgICAgICAgICAgICAvLyBsaWtlIEoKICAgICAgICAgICAgICByZXR1cm4gbW9udGgoIm5hcnJvdyIsIHRydWUpOwogICAgICAgICAgICAvLyBtb250aHMgLSBmb3JtYXQKICAgICAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IG1vbnRoOiAibnVtZXJpYyIgfSwgIm1vbnRoIikKICAgICAgICAgICAgICAgIDogdGhpcy5udW0oZHQubW9udGgpOwogICAgICAgICAgICBjYXNlICJNTSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMQogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyBtb250aDogIjItZGlnaXQiIH0sICJtb250aCIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0Lm1vbnRoLCAyKTsKICAgICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgICAvLyBsaWtlIEphbgogICAgICAgICAgICAgIHJldHVybiBtb250aCgic2hvcnQiLCBmYWxzZSk7CiAgICAgICAgICAgIGNhc2UgIk1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSmFudWFyeQogICAgICAgICAgICAgIHJldHVybiBtb250aCgibG9uZyIsIGZhbHNlKTsKICAgICAgICAgICAgY2FzZSAiTU1NTU0iOgogICAgICAgICAgICAgIC8vIGxpa2UgSgogICAgICAgICAgICAgIHJldHVybiBtb250aCgibmFycm93IiwgZmFsc2UpOwogICAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICAvLyBsaWtlIDIwMTQKICAgICAgICAgICAgICByZXR1cm4gdXNlRGF0ZVRpbWVGb3JtYXR0ZXIgPyBzdHJpbmcoeyB5ZWFyOiAibnVtZXJpYyIgfSwgInllYXIiKSA6IHRoaXMubnVtKGR0LnllYXIpOwogICAgICAgICAgICBjYXNlICJ5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAxNAogICAgICAgICAgICAgIHJldHVybiB1c2VEYXRlVGltZUZvcm1hdHRlcgogICAgICAgICAgICAgICAgPyBzdHJpbmcoeyB5ZWFyOiAiMi1kaWdpdCIgfSwgInllYXIiKQogICAgICAgICAgICAgICAgOiB0aGlzLm51bShkdC55ZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAieXl5eSI6CiAgICAgICAgICAgICAgLy8gbGlrZSAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDQpOwogICAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICAgIC8vIGxpa2UgMDAwMDEyCiAgICAgICAgICAgICAgcmV0dXJuIHVzZURhdGVUaW1lRm9ybWF0dGVyCiAgICAgICAgICAgICAgICA/IHN0cmluZyh7IHllYXI6ICJudW1lcmljIiB9LCAieWVhciIpCiAgICAgICAgICAgICAgICA6IHRoaXMubnVtKGR0LnllYXIsIDYpOwogICAgICAgICAgICAvLyBlcmFzCiAgICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICAgIC8vIGxpa2UgQUQKICAgICAgICAgICAgICByZXR1cm4gZXJhKCJzaG9ydCIpOwogICAgICAgICAgICBjYXNlICJHRyI6CiAgICAgICAgICAgICAgLy8gbGlrZSBBbm5vIERvbWluaQogICAgICAgICAgICAgIHJldHVybiBlcmEoImxvbmciKTsKICAgICAgICAgICAgY2FzZSAiR0dHR0ciOgogICAgICAgICAgICAgIHJldHVybiBlcmEoIm5hcnJvdyIpOwogICAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLnRvU3RyaW5nKCkuc2xpY2UoLTIpLCAyKTsKICAgICAgICAgICAgY2FzZSAia2trayI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtZZWFyLCA0KTsKICAgICAgICAgICAgY2FzZSAiVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIpOwogICAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LndlZWtOdW1iZXIsIDIpOwogICAgICAgICAgICBjYXNlICJvIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQub3JkaW5hbCk7CiAgICAgICAgICAgIGNhc2UgIm9vbyI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0Lm9yZGluYWwsIDMpOwogICAgICAgICAgICBjYXNlICJxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDEKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oZHQucXVhcnRlcik7CiAgICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgICAvLyBsaWtlIDAxCiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnF1YXJ0ZXIsIDIpOwogICAgICAgICAgICBjYXNlICJYIjoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5udW0oTWF0aC5mbG9vcihkdC50cyAvIDEwMDApKTsKICAgICAgICAgICAgY2FzZSAieCI6CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGR0LnRzKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gbWF5YmVNYWNybyh0b2tlbik7CiAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnMoRm9ybWF0dGVyLnBhcnNlRm9ybWF0KGZtdCksIHRva2VuVG9TdHJpbmcpOwogICAgfQoKICAgIGZvcm1hdER1cmF0aW9uRnJvbVN0cmluZyhkdXIsIGZtdCkgewogICAgICBjb25zdCB0b2tlblRvRmllbGQgPSAodG9rZW4pID0+IHsKICAgICAgICAgIHN3aXRjaCAodG9rZW5bMF0pIHsKICAgICAgICAgICAgY2FzZSAiUyI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaWxsaXNlY29uZCI7CiAgICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICAgIHJldHVybiAic2Vjb25kIjsKICAgICAgICAgICAgY2FzZSAibSI6CiAgICAgICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgICAgICBjYXNlICJoIjoKICAgICAgICAgICAgICByZXR1cm4gImhvdXIiOwogICAgICAgICAgICBjYXNlICJkIjoKICAgICAgICAgICAgICByZXR1cm4gImRheSI7CiAgICAgICAgICAgIGNhc2UgInciOgogICAgICAgICAgICAgIHJldHVybiAid2VlayI7CiAgICAgICAgICAgIGNhc2UgIk0iOgogICAgICAgICAgICAgIHJldHVybiAibW9udGgiOwogICAgICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgICAgICByZXR1cm4gInllYXIiOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgdG9rZW5Ub1N0cmluZyA9IChsaWxkdXIpID0+ICh0b2tlbikgPT4gewogICAgICAgICAgY29uc3QgbWFwcGVkID0gdG9rZW5Ub0ZpZWxkKHRva2VuKTsKICAgICAgICAgIGlmIChtYXBwZWQpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMubnVtKGxpbGR1ci5nZXQobWFwcGVkKSwgdG9rZW4ubGVuZ3RoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHRva2VucyA9IEZvcm1hdHRlci5wYXJzZUZvcm1hdChmbXQpLAogICAgICAgIHJlYWxUb2tlbnMgPSB0b2tlbnMucmVkdWNlKAogICAgICAgICAgKGZvdW5kLCB7IGxpdGVyYWwsIHZhbCB9KSA9PiAobGl0ZXJhbCA/IGZvdW5kIDogZm91bmQuY29uY2F0KHZhbCkpLAogICAgICAgICAgW10KICAgICAgICApLAogICAgICAgIGNvbGxhcHNlZCA9IGR1ci5zaGlmdFRvKC4uLnJlYWxUb2tlbnMubWFwKHRva2VuVG9GaWVsZCkuZmlsdGVyKCh0KSA9PiB0KSk7CiAgICAgIHJldHVybiBzdHJpbmdpZnlUb2tlbnModG9rZW5zLCB0b2tlblRvU3RyaW5nKGNvbGxhcHNlZCkpOwogICAgfQogIH0KCiAgY2xhc3MgSW52YWxpZCB7CiAgICBjb25zdHJ1Y3RvcihyZWFzb24sIGV4cGxhbmF0aW9uKSB7CiAgICAgIHRoaXMucmVhc29uID0gcmVhc29uOwogICAgICB0aGlzLmV4cGxhbmF0aW9uID0gZXhwbGFuYXRpb247CiAgICB9CgogICAgdG9NZXNzYWdlKCkgewogICAgICBpZiAodGhpcy5leHBsYW5hdGlvbikgewogICAgICAgIHJldHVybiBgJHt0aGlzLnJlYXNvbn06ICR7dGhpcy5leHBsYW5hdGlvbn1gOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnJlYXNvbjsKICAgICAgfQogICAgfQogIH0KCiAgLyoKICAgKiBUaGlzIGZpbGUgaGFuZGxlcyBwYXJzaW5nIGZvciB3ZWxsLXNwZWNpZmllZCBmb3JtYXRzLiBIZXJlJ3MgaG93IGl0IHdvcmtzOgogICAqIFR3byB0aGluZ3MgZ28gaW50byBwYXJzaW5nOiBhIHJlZ2V4IHRvIG1hdGNoIHdpdGggYW5kIGFuIGV4dHJhY3RvciB0byB0YWtlIGFwYXJ0IHRoZSBncm91cHMgaW4gdGhlIG1hdGNoLgogICAqIEFuIGV4dHJhY3RvciBpcyBqdXN0IGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHJlZ2V4IG1hdGNoIGFycmF5IGFuZCByZXR1cm5zIGEgeyB5ZWFyOiAuLi4sIG1vbnRoOiAuLi4gfSBvYmplY3QKICAgKiBwYXJzZSgpIGRvZXMgdGhlIHdvcmsgb2YgZXhlY3V0aW5nIHRoZSByZWdleCBhbmQgYXBwbHlpbmcgdGhlIGV4dHJhY3Rvci4gSXQgdGFrZXMgbXVsdGlwbGUgcmVnZXgvZXh0cmFjdG9yIHBhaXJzIHRvIHRyeSBpbiBzZXF1ZW5jZS4KICAgKiBFeHRyYWN0b3JzIGNhbiB0YWtlIGEgImN1cnNvciIgcmVwcmVzZW50aW5nIHRoZSBvZmZzZXQgaW4gdGhlIG1hdGNoIHRvIGxvb2sgYXQuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBjb21iaW5lIGV4dHJhY3RvcnMuCiAgICogY29tYmluZUV4dHJhY3RvcnMoKSBkb2VzIHRoZSB3b3JrIG9mIGNvbWJpbmluZyB0aGVtLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgdGhyb3VnaCBtdWx0aXBsZSBleHRyYWN0aW9ucy4KICAgKiBTb21lIGV4dHJhY3Rpb25zIGFyZSBzdXBlciBkdW1iIGFuZCBzaW1wbGVQYXJzZSBhbmQgZnJvbVN0cmluZ3MgaGVscCBEUlkgdGhlbS4KICAgKi8KCiAgY29uc3QgaWFuYVJlZ2V4ID0gL1tBLVphLXpfKy1dezEsMjU2fSg/Ojo/XC9bQS1aYS16MC05XystXXsxLDI1Nn0oPzpcL1tBLVphLXowLTlfKy1dezEsMjU2fSk/KT8vOwoKICBmdW5jdGlvbiBjb21iaW5lUmVnZXhlcyguLi5yZWdleGVzKSB7CiAgICBjb25zdCBmdWxsID0gcmVnZXhlcy5yZWR1Y2UoKGYsIHIpID0+IGYgKyByLnNvdXJjZSwgIiIpOwogICAgcmV0dXJuIFJlZ0V4cChgXiR7ZnVsbH0kYCk7CiAgfQoKICBmdW5jdGlvbiBjb21iaW5lRXh0cmFjdG9ycyguLi5leHRyYWN0b3JzKSB7CiAgICByZXR1cm4gKG0pID0+CiAgICAgIGV4dHJhY3RvcnMKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFttZXJnZWRWYWxzLCBtZXJnZWRab25lLCBjdXJzb3JdLCBleCkgPT4gewogICAgICAgICAgICBjb25zdCBbdmFsLCB6b25lLCBuZXh0XSA9IGV4KG0sIGN1cnNvcik7CiAgICAgICAgICAgIHJldHVybiBbeyAuLi5tZXJnZWRWYWxzLCAuLi52YWwgfSwgem9uZSB8fCBtZXJnZWRab25lLCBuZXh0XTsKICAgICAgICAgIH0sCiAgICAgICAgICBbe30sIG51bGwsIDFdCiAgICAgICAgKQogICAgICAgIC5zbGljZSgwLCAyKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlKHMsIC4uLnBhdHRlcm5zKSB7CiAgICBpZiAocyA9PSBudWxsKSB7CiAgICAgIHJldHVybiBbbnVsbCwgbnVsbF07CiAgICB9CgogICAgZm9yIChjb25zdCBbcmVnZXgsIGV4dHJhY3Rvcl0gb2YgcGF0dGVybnMpIHsKICAgICAgY29uc3QgbSA9IHJlZ2V4LmV4ZWMocyk7CiAgICAgIGlmIChtKSB7CiAgICAgICAgcmV0dXJuIGV4dHJhY3RvcihtKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIFtudWxsLCBudWxsXTsKICB9CgogIGZ1bmN0aW9uIHNpbXBsZVBhcnNlKC4uLmtleXMpIHsKICAgIHJldHVybiAobWF0Y2gsIGN1cnNvcikgPT4gewogICAgICBjb25zdCByZXQgPSB7fTsKICAgICAgbGV0IGk7CgogICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgIHJldFtrZXlzW2ldXSA9IHBhcnNlSW50ZWdlcihtYXRjaFtjdXJzb3IgKyBpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXQsIG51bGwsIGN1cnNvciArIGldOwogICAgfTsKICB9CgogIC8vIElTTyBhbmQgU1FMIHBhcnNpbmcKICBjb25zdCBvZmZzZXRSZWdleCA9IC8oPzooWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8pLzsKICBjb25zdCBpc29FeHRlbmRlZFpvbmUgPSBgKD86JHtvZmZzZXRSZWdleC5zb3VyY2V9Pyg/OlxcWygke2lhbmFSZWdleC5zb3VyY2V9KVxcXSk/KT9gOwogIGNvbnN0IGlzb1RpbWVCYXNlUmVnZXggPSAvKFxkXGQpKD86Oj8oXGRcZCkoPzo6PyhcZFxkKSg/OlsuLF0oXGR7MSwzMH0pKT8pPyk/LzsKICBjb25zdCBpc29UaW1lUmVnZXggPSBSZWdFeHAoYCR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JHtpc29FeHRlbmRlZFpvbmV9YCk7CiAgY29uc3QgaXNvVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzpUJHtpc29UaW1lUmVnZXguc291cmNlfSk/YCk7CiAgY29uc3QgaXNvWW1kUmVnZXggPSAvKFsrLV1cZHs2fXxcZHs0fSkoPzotPyhcZFxkKSg/Oi0/KFxkXGQpKT8pPy87CiAgY29uc3QgaXNvV2Vla1JlZ2V4ID0gLyhcZHs0fSktP1coXGRcZCkoPzotPyhcZCkpPy87CiAgY29uc3QgaXNvT3JkaW5hbFJlZ2V4ID0gLyhcZHs0fSktPyhcZHszfSkvOwogIGNvbnN0IGV4dHJhY3RJU09XZWVrRGF0YSA9IHNpbXBsZVBhcnNlKCJ3ZWVrWWVhciIsICJ3ZWVrTnVtYmVyIiwgIndlZWtEYXkiKTsKICBjb25zdCBleHRyYWN0SVNPT3JkaW5hbERhdGEgPSBzaW1wbGVQYXJzZSgieWVhciIsICJvcmRpbmFsIik7CiAgY29uc3Qgc3FsWW1kUmVnZXggPSAvKFxkezR9KS0oXGRcZCktKFxkXGQpLzsgLy8gZHVtYmVkLWRvd24gdmVyc2lvbiBvZiB0aGUgSVNPIG9uZQogIGNvbnN0IHNxbFRpbWVSZWdleCA9IFJlZ0V4cCgKICAgIGAke2lzb1RpbWVCYXNlUmVnZXguc291cmNlfSA/KD86JHtvZmZzZXRSZWdleC5zb3VyY2V9fCgke2lhbmFSZWdleC5zb3VyY2V9KSk/YAogICk7CiAgY29uc3Qgc3FsVGltZUV4dGVuc2lvblJlZ2V4ID0gUmVnRXhwKGAoPzogJHtzcWxUaW1lUmVnZXguc291cmNlfSk/YCk7CgogIGZ1bmN0aW9uIGludChtYXRjaCwgcG9zLCBmYWxsYmFjaykgewogICAgY29uc3QgbSA9IG1hdGNoW3Bvc107CiAgICByZXR1cm4gaXNVbmRlZmluZWQobSkgPyBmYWxsYmFjayA6IHBhcnNlSW50ZWdlcihtKTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJU09ZbWQobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgeWVhcjogaW50KG1hdGNoLCBjdXJzb3IpLAogICAgICBtb250aDogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAxKSwKICAgICAgZGF5OiBpbnQobWF0Y2gsIGN1cnNvciArIDIsIDEpLAogICAgfTsKCiAgICByZXR1cm4gW2l0ZW0sIG51bGwsIGN1cnNvciArIDNdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdElTT1RpbWUobWF0Y2gsIGN1cnNvcikgewogICAgY29uc3QgaXRlbSA9IHsKICAgICAgaG91cnM6IGludChtYXRjaCwgY3Vyc29yLCAwKSwKICAgICAgbWludXRlczogaW50KG1hdGNoLCBjdXJzb3IgKyAxLCAwKSwKICAgICAgc2Vjb25kczogaW50KG1hdGNoLCBjdXJzb3IgKyAyLCAwKSwKICAgICAgbWlsbGlzZWNvbmRzOiBwYXJzZU1pbGxpcyhtYXRjaFtjdXJzb3IgKyAzXSksCiAgICB9OwoKICAgIHJldHVybiBbaXRlbSwgbnVsbCwgY3Vyc29yICsgNF07CiAgfQoKICBmdW5jdGlvbiBleHRyYWN0SVNPT2Zmc2V0KG1hdGNoLCBjdXJzb3IpIHsKICAgIGNvbnN0IGxvY2FsID0gIW1hdGNoW2N1cnNvcl0gJiYgIW1hdGNoW2N1cnNvciArIDFdLAogICAgICBmdWxsT2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG1hdGNoW2N1cnNvciArIDFdLCBtYXRjaFtjdXJzb3IgKyAyXSksCiAgICAgIHpvbmUgPSBsb2NhbCA/IG51bGwgOiBGaXhlZE9mZnNldFpvbmUuaW5zdGFuY2UoZnVsbE9mZnNldCk7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAzXTsKICB9CgogIGZ1bmN0aW9uIGV4dHJhY3RJQU5BWm9uZShtYXRjaCwgY3Vyc29yKSB7CiAgICBjb25zdCB6b25lID0gbWF0Y2hbY3Vyc29yXSA/IElBTkFab25lLmNyZWF0ZShtYXRjaFtjdXJzb3JdKSA6IG51bGw7CiAgICByZXR1cm4gW3t9LCB6b25lLCBjdXJzb3IgKyAxXTsKICB9CgogIC8vIElTTyB0aW1lIHBhcnNpbmcKCiAgY29uc3QgaXNvVGltZU9ubHkgPSBSZWdFeHAoYF5UPyR7aXNvVGltZUJhc2VSZWdleC5zb3VyY2V9JGApOwoKICAvLyBJU08gZHVyYXRpb24gcGFyc2luZwoKICBjb25zdCBpc29EdXJhdGlvbiA9CiAgICAvXi0/UCg/Oig/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVkpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KU0pPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KVcpPyg/OigtP1xkezEsMjB9KD86XC5cZHsxLDIwfSk/KUQpPyg/OlQoPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylIKT8oPzooLT9cZHsxLDIwfSg/OlwuXGR7MSwyMH0pPylNKT8oPzooLT9cZHsxLDIwfSkoPzpbLixdKC0/XGR7MSwyMH0pKT9TKT8pPykkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdElTT0R1cmF0aW9uKG1hdGNoKSB7CiAgICBjb25zdCBbcywgeWVhclN0ciwgbW9udGhTdHIsIHdlZWtTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIsIG1pbGxpc2Vjb25kc1N0cl0gPQogICAgICBtYXRjaDsKCiAgICBjb25zdCBoYXNOZWdhdGl2ZVByZWZpeCA9IHNbMF0gPT09ICItIjsKICAgIGNvbnN0IG5lZ2F0aXZlU2Vjb25kcyA9IHNlY29uZFN0ciAmJiBzZWNvbmRTdHJbMF0gPT09ICItIjsKCiAgICBjb25zdCBtYXliZU5lZ2F0ZSA9IChudW0sIGZvcmNlID0gZmFsc2UpID0+CiAgICAgIG51bSAhPT0gdW5kZWZpbmVkICYmIChmb3JjZSB8fCAobnVtICYmIGhhc05lZ2F0aXZlUHJlZml4KSkgPyAtbnVtIDogbnVtOwoKICAgIHJldHVybiBbCiAgICAgIHsKICAgICAgICB5ZWFyczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyh5ZWFyU3RyKSksCiAgICAgICAgbW9udGhzOiBtYXliZU5lZ2F0ZShwYXJzZUZsb2F0aW5nKG1vbnRoU3RyKSksCiAgICAgICAgd2Vla3M6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcod2Vla1N0cikpLAogICAgICAgIGRheXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoZGF5U3RyKSksCiAgICAgICAgaG91cnM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcoaG91clN0cikpLAogICAgICAgIG1pbnV0ZXM6IG1heWJlTmVnYXRlKHBhcnNlRmxvYXRpbmcobWludXRlU3RyKSksCiAgICAgICAgc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VGbG9hdGluZyhzZWNvbmRTdHIpLCBzZWNvbmRTdHIgPT09ICItMCIpLAogICAgICAgIG1pbGxpc2Vjb25kczogbWF5YmVOZWdhdGUocGFyc2VNaWxsaXMobWlsbGlzZWNvbmRzU3RyKSwgbmVnYXRpdmVTZWNvbmRzKSwKICAgICAgfSwKICAgIF07CiAgfQoKICAvLyBUaGVzZSBhcmUgYSBsaXR0bGUgYnJhaW5kZWFkLiBFRFQgKnNob3VsZCogdGVsbCB1cyB0aGF0IHdlJ3JlIGluLCBzYXksIEFtZXJpY2EvTmV3X1lvcmsKICAvLyBhbmQgbm90IGp1c3QgdGhhdCB3ZSdyZSBpbiAtMjQwICpyaWdodCBub3cqLiBCdXQgc2luY2UgSSBkb24ndCB0aGluayB0aGVzZSBhcmUgdXNlZCB0aGF0IG9mdGVuCiAgLy8gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIHRoYXQKICBjb25zdCBvYnNPZmZzZXRzID0gewogICAgR01UOiAwLAogICAgRURUOiAtNCAqIDYwLAogICAgRVNUOiAtNSAqIDYwLAogICAgQ0RUOiAtNSAqIDYwLAogICAgQ1NUOiAtNiAqIDYwLAogICAgTURUOiAtNiAqIDYwLAogICAgTVNUOiAtNyAqIDYwLAogICAgUERUOiAtNyAqIDYwLAogICAgUFNUOiAtOCAqIDYwLAogIH07CgogIGZ1bmN0aW9uIGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKSB7CiAgICBjb25zdCByZXN1bHQgPSB7CiAgICAgIHllYXI6IHllYXJTdHIubGVuZ3RoID09PSAyID8gdW50cnVuY2F0ZVllYXIocGFyc2VJbnRlZ2VyKHllYXJTdHIpKSA6IHBhcnNlSW50ZWdlcih5ZWFyU3RyKSwKICAgICAgbW9udGg6IG1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpICsgMSwKICAgICAgZGF5OiBwYXJzZUludGVnZXIoZGF5U3RyKSwKICAgICAgaG91cjogcGFyc2VJbnRlZ2VyKGhvdXJTdHIpLAogICAgICBtaW51dGU6IHBhcnNlSW50ZWdlcihtaW51dGVTdHIpLAogICAgfTsKCiAgICBpZiAoc2Vjb25kU3RyKSByZXN1bHQuc2Vjb25kID0gcGFyc2VJbnRlZ2VyKHNlY29uZFN0cik7CiAgICBpZiAod2Vla2RheVN0cikgewogICAgICByZXN1bHQud2Vla2RheSA9CiAgICAgICAgd2Vla2RheVN0ci5sZW5ndGggPiAzCiAgICAgICAgICA/IHdlZWtkYXlzTG9uZy5pbmRleE9mKHdlZWtkYXlTdHIpICsgMQogICAgICAgICAgOiB3ZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0cikgKyAxOwogICAgfQoKICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvLyBSRkMgMjgyMi81MzIyCiAgY29uc3QgcmZjMjgyMiA9CiAgICAvXig/OihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLFxzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfCg/OihbKy1dXGRcZCkoXGRcZCkpKSQvOwoKICBmdW5jdGlvbiBleHRyYWN0UkZDMjgyMihtYXRjaCkgewogICAgY29uc3QgWwogICAgICAgICwKICAgICAgICB3ZWVrZGF5U3RyLAogICAgICAgIGRheVN0ciwKICAgICAgICBtb250aFN0ciwKICAgICAgICB5ZWFyU3RyLAogICAgICAgIGhvdXJTdHIsCiAgICAgICAgbWludXRlU3RyLAogICAgICAgIHNlY29uZFN0ciwKICAgICAgICBvYnNPZmZzZXQsCiAgICAgICAgbWlsT2Zmc2V0LAogICAgICAgIG9mZkhvdXJTdHIsCiAgICAgICAgb2ZmTWludXRlU3RyLAogICAgICBdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKCiAgICBsZXQgb2Zmc2V0OwogICAgaWYgKG9ic09mZnNldCkgewogICAgICBvZmZzZXQgPSBvYnNPZmZzZXRzW29ic09mZnNldF07CiAgICB9IGVsc2UgaWYgKG1pbE9mZnNldCkgewogICAgICBvZmZzZXQgPSAwOwogICAgfSBlbHNlIHsKICAgICAgb2Zmc2V0ID0gc2lnbmVkT2Zmc2V0KG9mZkhvdXJTdHIsIG9mZk1pbnV0ZVN0cik7CiAgICB9CgogICAgcmV0dXJuIFtyZXN1bHQsIG5ldyBGaXhlZE9mZnNldFpvbmUob2Zmc2V0KV07CiAgfQoKICBmdW5jdGlvbiBwcmVwcm9jZXNzUkZDMjgyMihzKSB7CiAgICAvLyBSZW1vdmUgY29tbWVudHMgYW5kIGZvbGRpbmcgd2hpdGVzcGFjZSBhbmQgcmVwbGFjZSBtdWx0aXBsZS1zcGFjZXMgd2l0aCBhIHNpbmdsZSBzcGFjZQogICAgcmV0dXJuIHMKICAgICAgLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csICIgIikKICAgICAgLnJlcGxhY2UoLyhcc1xzKykvZywgIiAiKQogICAgICAudHJpbSgpOwogIH0KCiAgLy8gaHR0cCBkYXRlCgogIGNvbnN0IHJmYzExMjMgPQogICAgICAvXihNb258VHVlfFdlZHxUaHV8RnJpfFNhdHxTdW4pLCAoXGRcZCkgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoXGR7NH0pIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQvLAogICAgcmZjODUwID0KICAgICAgL14oTW9uZGF5fFR1ZXNkYXl8V2VkbmVzZGF5fFRodXJzZGF5fEZyaWRheXxTYXR1cmRheXxTdW5kYXkpLCAoXGRcZCktKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKS0oXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJC8sCiAgICBhc2NpaSA9CiAgICAgIC9eKE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1bikgKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKSAoIFxkfFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIChcZHs0fSkkLzsKCiAgZnVuY3Rpb24gZXh0cmFjdFJGQzExMjNPcjg1MChtYXRjaCkgewogICAgY29uc3QgWywgd2Vla2RheVN0ciwgZGF5U3RyLCBtb250aFN0ciwgeWVhclN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHJdID0gbWF0Y2gsCiAgICAgIHJlc3VsdCA9IGZyb21TdHJpbmdzKHdlZWtkYXlTdHIsIHllYXJTdHIsIG1vbnRoU3RyLCBkYXlTdHIsIGhvdXJTdHIsIG1pbnV0ZVN0ciwgc2Vjb25kU3RyKTsKICAgIHJldHVybiBbcmVzdWx0LCBGaXhlZE9mZnNldFpvbmUudXRjSW5zdGFuY2VdOwogIH0KCiAgZnVuY3Rpb24gZXh0cmFjdEFTQ0lJKG1hdGNoKSB7CiAgICBjb25zdCBbLCB3ZWVrZGF5U3RyLCBtb250aFN0ciwgZGF5U3RyLCBob3VyU3RyLCBtaW51dGVTdHIsIHNlY29uZFN0ciwgeWVhclN0cl0gPSBtYXRjaCwKICAgICAgcmVzdWx0ID0gZnJvbVN0cmluZ3Mod2Vla2RheVN0ciwgeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpOwogICAgcmV0dXJuIFtyZXN1bHQsIEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZV07CiAgfQoKICBjb25zdCBpc29ZbWRXaXRoVGltZUV4dGVuc2lvblJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoaXNvWW1kUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvV2Vla1dpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29XZWVrUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29PcmRpbmFsUmVnZXgsIGlzb1RpbWVFeHRlbnNpb25SZWdleCk7CiAgY29uc3QgaXNvVGltZUNvbWJpbmVkUmVnZXggPSBjb21iaW5lUmVnZXhlcyhpc29UaW1lUmVnZXgpOwoKICBjb25zdCBleHRyYWN0SVNPWW1kVGltZUFuZE9mZnNldCA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1ltZCwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1dlZWtUaW1lQW5kT2Zmc2V0ID0gY29tYmluZUV4dHJhY3RvcnMoCiAgICBleHRyYWN0SVNPV2Vla0RhdGEsCiAgICBleHRyYWN0SVNPVGltZSwKICAgIGV4dHJhY3RJU09PZmZzZXQsCiAgICBleHRyYWN0SUFOQVpvbmUKICApOwogIGNvbnN0IGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWUgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09PcmRpbmFsRGF0YSwKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CiAgY29uc3QgZXh0cmFjdElTT1RpbWVBbmRPZmZzZXQgPSBjb21iaW5lRXh0cmFjdG9ycygKICAgIGV4dHJhY3RJU09UaW1lLAogICAgZXh0cmFjdElTT09mZnNldCwKICAgIGV4dHJhY3RJQU5BWm9uZQogICk7CgogIC8qCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gcGFyc2VJU09EYXRlKHMpIHsKICAgIHJldHVybiBwYXJzZSgKICAgICAgcywKICAgICAgW2lzb1ltZFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09ZbWRUaW1lQW5kT2Zmc2V0XSwKICAgICAgW2lzb1dlZWtXaXRoVGltZUV4dGVuc2lvblJlZ2V4LCBleHRyYWN0SVNPV2Vla1RpbWVBbmRPZmZzZXRdLAogICAgICBbaXNvT3JkaW5hbFdpdGhUaW1lRXh0ZW5zaW9uUmVnZXgsIGV4dHJhY3RJU09PcmRpbmFsRGF0ZUFuZFRpbWVdLAogICAgICBbaXNvVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lQW5kT2Zmc2V0XQogICAgKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlUkZDMjgyMkRhdGUocykgewogICAgcmV0dXJuIHBhcnNlKHByZXByb2Nlc3NSRkMyODIyKHMpLCBbcmZjMjgyMiwgZXh0cmFjdFJGQzI4MjJdKTsKICB9CgogIGZ1bmN0aW9uIHBhcnNlSFRUUERhdGUocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbcmZjMTEyMywgZXh0cmFjdFJGQzExMjNPcjg1MF0sCiAgICAgIFtyZmM4NTAsIGV4dHJhY3RSRkMxMTIzT3I4NTBdLAogICAgICBbYXNjaWksIGV4dHJhY3RBU0NJSV0KICAgICk7CiAgfQoKICBmdW5jdGlvbiBwYXJzZUlTT0R1cmF0aW9uKHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvRHVyYXRpb24sIGV4dHJhY3RJU09EdXJhdGlvbl0pOwogIH0KCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPbmx5ID0gY29tYmluZUV4dHJhY3RvcnMoZXh0cmFjdElTT1RpbWUpOwoKICBmdW5jdGlvbiBwYXJzZUlTT1RpbWVPbmx5KHMpIHsKICAgIHJldHVybiBwYXJzZShzLCBbaXNvVGltZU9ubHksIGV4dHJhY3RJU09UaW1lT25seV0pOwogIH0KCiAgY29uc3Qgc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCA9IGNvbWJpbmVSZWdleGVzKHNxbFltZFJlZ2V4LCBzcWxUaW1lRXh0ZW5zaW9uUmVnZXgpOwogIGNvbnN0IHNxbFRpbWVDb21iaW5lZFJlZ2V4ID0gY29tYmluZVJlZ2V4ZXMoc3FsVGltZVJlZ2V4KTsKCiAgY29uc3QgZXh0cmFjdElTT1RpbWVPZmZzZXRBbmRJQU5BWm9uZSA9IGNvbWJpbmVFeHRyYWN0b3JzKAogICAgZXh0cmFjdElTT1RpbWUsCiAgICBleHRyYWN0SVNPT2Zmc2V0LAogICAgZXh0cmFjdElBTkFab25lCiAgKTsKCiAgZnVuY3Rpb24gcGFyc2VTUUwocykgewogICAgcmV0dXJuIHBhcnNlKAogICAgICBzLAogICAgICBbc3FsWW1kV2l0aFRpbWVFeHRlbnNpb25SZWdleCwgZXh0cmFjdElTT1ltZFRpbWVBbmRPZmZzZXRdLAogICAgICBbc3FsVGltZUNvbWJpbmVkUmVnZXgsIGV4dHJhY3RJU09UaW1lT2Zmc2V0QW5kSUFOQVpvbmVdCiAgICApOwogIH0KCiAgY29uc3QgSU5WQUxJRCQyID0gIkludmFsaWQgRHVyYXRpb24iOwoKICAvLyB1bml0IGNvbnZlcnNpb24gY29uc3RhbnRzCiAgY29uc3QgbG93T3JkZXJNYXRyaXggPSB7CiAgICAgIHdlZWtzOiB7CiAgICAgICAgZGF5czogNywKICAgICAgICBob3VyczogNyAqIDI0LAogICAgICAgIG1pbnV0ZXM6IDcgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiA3ICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgZGF5czogewogICAgICAgIGhvdXJzOiAyNCwKICAgICAgICBtaW51dGVzOiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDI0ICogNjAgKiA2MCwKICAgICAgICBtaWxsaXNlY29uZHM6IDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCiAgICAgIGhvdXJzOiB7IG1pbnV0ZXM6IDYwLCBzZWNvbmRzOiA2MCAqIDYwLCBtaWxsaXNlY29uZHM6IDYwICogNjAgKiAxMDAwIH0sCiAgICAgIG1pbnV0ZXM6IHsgc2Vjb25kczogNjAsIG1pbGxpc2Vjb25kczogNjAgKiAxMDAwIH0sCiAgICAgIHNlY29uZHM6IHsgbWlsbGlzZWNvbmRzOiAxMDAwIH0sCiAgICB9LAogICAgY2FzdWFsTWF0cml4ID0gewogICAgICB5ZWFyczogewogICAgICAgIHF1YXJ0ZXJzOiA0LAogICAgICAgIG1vbnRoczogMTIsCiAgICAgICAgd2Vla3M6IDUyLAogICAgICAgIGRheXM6IDM2NSwKICAgICAgICBob3VyczogMzY1ICogMjQsCiAgICAgICAgbWludXRlczogMzY1ICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogMTMsCiAgICAgICAgZGF5czogOTEsCiAgICAgICAgaG91cnM6IDkxICogMjQsCiAgICAgICAgbWludXRlczogOTEgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IDkxICogMjQgKiA2MCAqIDYwLAogICAgICAgIG1pbGxpc2Vjb25kczogOTEgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogNCwKICAgICAgICBkYXlzOiAzMCwKICAgICAgICBob3VyczogMzAgKiAyNCwKICAgICAgICBtaW51dGVzOiAzMCAqIDI0ICogNjAsCiAgICAgICAgc2Vjb25kczogMzAgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAzMCAqIDI0ICogNjAgKiA2MCAqIDEwMDAsCiAgICAgIH0sCgogICAgICAuLi5sb3dPcmRlck1hdHJpeCwKICAgIH0sCiAgICBkYXlzSW5ZZWFyQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQwMCwKICAgIGRheXNJbk1vbnRoQWNjdXJhdGUgPSAxNDYwOTcuMCAvIDQ4MDAsCiAgICBhY2N1cmF0ZU1hdHJpeCA9IHsKICAgICAgeWVhcnM6IHsKICAgICAgICBxdWFydGVyczogNCwKICAgICAgICBtb250aHM6IDEyLAogICAgICAgIHdlZWtzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgLyA3LAogICAgICAgIGRheXM6IGRheXNJblllYXJBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luWWVhckFjY3VyYXRlICogMjQsCiAgICAgICAgbWludXRlczogZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCwKICAgICAgICBzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5ZZWFyQWNjdXJhdGUgKiAyNCAqIDYwICogNjAgKiAxMDAwLAogICAgICB9LAogICAgICBxdWFydGVyczogewogICAgICAgIG1vbnRoczogMywKICAgICAgICB3ZWVrczogZGF5c0luWWVhckFjY3VyYXRlIC8gMjgsCiAgICAgICAgZGF5czogZGF5c0luWWVhckFjY3VyYXRlIC8gNCwKICAgICAgICBob3VyczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0KSAvIDQsCiAgICAgICAgbWludXRlczogKGRheXNJblllYXJBY2N1cmF0ZSAqIDI0ICogNjApIC8gNCwKICAgICAgICBzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwKSAvIDQsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAoZGF5c0luWWVhckFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCkgLyA0LAogICAgICB9LAogICAgICBtb250aHM6IHsKICAgICAgICB3ZWVrczogZGF5c0luTW9udGhBY2N1cmF0ZSAvIDcsCiAgICAgICAgZGF5czogZGF5c0luTW9udGhBY2N1cmF0ZSwKICAgICAgICBob3VyczogZGF5c0luTW9udGhBY2N1cmF0ZSAqIDI0LAogICAgICAgIG1pbnV0ZXM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwLAogICAgICAgIHNlY29uZHM6IGRheXNJbk1vbnRoQWNjdXJhdGUgKiAyNCAqIDYwICogNjAsCiAgICAgICAgbWlsbGlzZWNvbmRzOiBkYXlzSW5Nb250aEFjY3VyYXRlICogMjQgKiA2MCAqIDYwICogMTAwMCwKICAgICAgfSwKICAgICAgLi4ubG93T3JkZXJNYXRyaXgsCiAgICB9OwoKICAvLyB1bml0cyBvcmRlcmVkIGJ5IHNpemUKICBjb25zdCBvcmRlcmVkVW5pdHMkMSA9IFsKICAgICJ5ZWFycyIsCiAgICAicXVhcnRlcnMiLAogICAgIm1vbnRocyIsCiAgICAid2Vla3MiLAogICAgImRheXMiLAogICAgImhvdXJzIiwKICAgICJtaW51dGVzIiwKICAgICJzZWNvbmRzIiwKICAgICJtaWxsaXNlY29uZHMiLAogIF07CgogIGNvbnN0IHJldmVyc2VVbml0cyA9IG9yZGVyZWRVbml0cyQxLnNsaWNlKDApLnJldmVyc2UoKTsKCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zICJjcmVhdGUgYW5vdGhlciBpbnN0YW5jZSBqdXN0IGxpa2UgdGhpcyBvbmUsIGJ1dCB3aXRoIHRoZXNlIGNoYW5nZXMiCiAgZnVuY3Rpb24gY2xvbmUkMShkdXIsIGFsdHMsIGNsZWFyID0gZmFsc2UpIHsKICAgIC8vIGRlZXAgbWVyZ2UgZm9yIHZhbHMKICAgIGNvbnN0IGNvbmYgPSB7CiAgICAgIHZhbHVlczogY2xlYXIgPyBhbHRzLnZhbHVlcyA6IHsgLi4uZHVyLnZhbHVlcywgLi4uKGFsdHMudmFsdWVzIHx8IHt9KSB9LAogICAgICBsb2M6IGR1ci5sb2MuY2xvbmUoYWx0cy5sb2MpLAogICAgICBjb252ZXJzaW9uQWNjdXJhY3k6IGFsdHMuY29udmVyc2lvbkFjY3VyYWN5IHx8IGR1ci5jb252ZXJzaW9uQWNjdXJhY3ksCiAgICAgIG1hdHJpeDogYWx0cy5tYXRyaXggfHwgZHVyLm1hdHJpeCwKICAgIH07CiAgICByZXR1cm4gbmV3IER1cmF0aW9uKGNvbmYpOwogIH0KCiAgZnVuY3Rpb24gZHVyYXRpb25Ub01pbGxpcyhtYXRyaXgsIHZhbHMpIHsKICAgIGxldCBzdW0gPSB2YWxzLm1pbGxpc2Vjb25kcyA/PyAwOwogICAgZm9yIChjb25zdCB1bml0IG9mIHJldmVyc2VVbml0cy5zbGljZSgxKSkgewogICAgICBpZiAodmFsc1t1bml0XSkgewogICAgICAgIHN1bSArPSB2YWxzW3VuaXRdICogbWF0cml4W3VuaXRdWyJtaWxsaXNlY29uZHMiXTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHN1bTsKICB9CgogIC8vIE5COiBtdXRhdGVzIHBhcmFtZXRlcnMKICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZXMobWF0cml4LCB2YWxzKSB7CiAgICAvLyB0aGUgbG9naWMgYmVsb3cgYXNzdW1lcyB0aGUgb3ZlcmFsbCB2YWx1ZSBvZiB0aGUgZHVyYXRpb24gaXMgcG9zaXRpdmUKICAgIC8vIGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBmYWN0b3IgaXMgdXNlZCB0byBtYWtlIGl0IHNvCiAgICBjb25zdCBmYWN0b3IgPSBkdXJhdGlvblRvTWlsbGlzKG1hdHJpeCwgdmFscykgPCAwID8gLTEgOiAxOwoKICAgIG9yZGVyZWRVbml0cyQxLnJlZHVjZVJpZ2h0KChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbCA9IHZhbHNbcHJldmlvdXNdICogZmFjdG9yOwogICAgICAgICAgY29uc3QgY29udiA9IG1hdHJpeFtjdXJyZW50XVtwcmV2aW91c107CgogICAgICAgICAgLy8gaWYgKHByZXZpb3VzVmFsIDwgMCk6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIG5lZ2F0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IC0yIH0pCiAgICAgICAgICAvLyBub3JtYWxpemUgdGhpcyBieSByZWR1Y2luZyB0aGUgaGlnaGVyIG9yZGVyIHVuaXQgYnkgdGhlIGFwcHJvcHJpYXRlIGFtb3VudAogICAgICAgICAgLy8gYW5kIGluY3JlYXNpbmcgdGhlIGxvd2VyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIHRoaXMgY2FuIG5ldmVyIG1ha2UgdGhlIGhpZ2hlciBvcmRlciB1bml0IG5lZ2F0aXZlLCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gb25seSBvcGVyYXRlcwogICAgICAgICAgLy8gb24gcG9zaXRpdmUgZHVyYXRpb25zLCBzbyB0aGUgYW1vdW50IG9mIHRpbWUgcmVwcmVzZW50ZWQgYnkgdGhlIGxvd2VyIG9yZGVyIHVuaXQgY2Fubm90CiAgICAgICAgICAvLyBiZSBsYXJnZXIgdGhhbiB0aGUgaGlnaGVyIG9yZGVyIHVuaXQKICAgICAgICAgIC8vIGVsc2U6CiAgICAgICAgICAvLyBsb3dlciBvcmRlciB1bml0IGlzIHBvc2l0aXZlIChlLmcuIHsgeWVhcnM6IDIsIGRheXM6IDQ1MCB9IG9yIHsgeWVhcnM6IC0yLCBkYXlzOiA0NTAgfSkKICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSB3ZSBhdHRlbXB0IHRvIGNvbnZlcnQgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBsb3dlciBvcmRlciB1bml0IGludG8KICAgICAgICAgIC8vIHRoZSBoaWdoZXIgb3JkZXIgb25lCiAgICAgICAgICAvLwogICAgICAgICAgLy8gTWF0aC5mbG9vciB0YWtlcyBjYXJlIG9mIGJvdGggb2YgdGhlc2UgY2FzZXMsIHJvdW5kaW5nIGF3YXkgZnJvbSAwCiAgICAgICAgICAvLyBpZiBwcmV2aW91c1ZhbCA8IDAgaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIGxhcmdlcgogICAgICAgICAgLy8gaWYgcHJldmlvdXNWYWwgPj0gaXQgbWFrZXMgdGhlIGFic29sdXRlIHZhbHVlIHNtYWxsZXIKICAgICAgICAgIGNvbnN0IHJvbGxVcCA9IE1hdGguZmxvb3IocHJldmlvdXNWYWwgLyBjb252KTsKICAgICAgICAgIHZhbHNbY3VycmVudF0gKz0gcm9sbFVwICogZmFjdG9yOwogICAgICAgICAgdmFsc1twcmV2aW91c10gLT0gcm9sbFVwICogY29udiAqIGZhY3RvcjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHByZXZpb3VzOwogICAgICB9CiAgICB9LCBudWxsKTsKCiAgICAvLyB0cnkgdG8gY29udmVydCBhbnkgZGVjaW1hbHMgaW50byBzbWFsbGVyIHVuaXRzIGlmIHBvc3NpYmxlCiAgICAvLyBmb3IgZXhhbXBsZSBmb3IgeyB5ZWFyczogMi41LCBkYXlzOiAwLCBzZWNvbmRzOiAwIH0gd2Ugd2FudCB0byBnZXQgeyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgb3JkZXJlZFVuaXRzJDEucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4gewogICAgICBpZiAoIWlzVW5kZWZpbmVkKHZhbHNbY3VycmVudF0pKSB7CiAgICAgICAgaWYgKHByZXZpb3VzKSB7CiAgICAgICAgICBjb25zdCBmcmFjdGlvbiA9IHZhbHNbcHJldmlvdXNdICUgMTsKICAgICAgICAgIHZhbHNbcHJldmlvdXNdIC09IGZyYWN0aW9uOwogICAgICAgICAgdmFsc1tjdXJyZW50XSArPSBmcmFjdGlvbiAqIG1hdHJpeFtwcmV2aW91c11bY3VycmVudF07CiAgICAgICAgfQogICAgICAgIHJldHVybiBjdXJyZW50OwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwcmV2aW91czsKICAgICAgfQogICAgfSwgbnVsbCk7CiAgfQoKICAvLyBSZW1vdmUgYWxsIHByb3BlcnRpZXMgd2l0aCBhIHZhbHVlIG9mIDAgZnJvbSBhbiBvYmplY3QKICBmdW5jdGlvbiByZW1vdmVaZXJvZXModmFscykgewogICAgY29uc3QgbmV3VmFscyA9IHt9OwogICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFscykpIHsKICAgICAgaWYgKHZhbHVlICE9PSAwKSB7CiAgICAgICAgbmV3VmFsc1trZXldID0gdmFsdWU7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZXdWYWxzOwogIH0KCiAgLyoqCiAgICogQSBEdXJhdGlvbiBvYmplY3QgcmVwcmVzZW50cyBhIHBlcmlvZCBvZiB0aW1lLCBsaWtlICIyIG1vbnRocyIgb3IgIjEgZGF5LCAxIGhvdXIiLiBDb25jZXB0dWFsbHksIGl0J3MganVzdCBhIG1hcCBvZiB1bml0cyB0byB0aGVpciBxdWFudGl0aWVzLCBhY2NvbXBhbmllZCBieSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBhbmQgbWV0aG9kcyBmb3IgY3JlYXRpbmcsIHBhcnNpbmcsIGludGVycm9nYXRpbmcsIHRyYW5zZm9ybWluZywgYW5kIGZvcm1hdHRpbmcgdGhlbS4gVGhleSBjYW4gYmUgdXNlZCBvbiB0aGVpciBvd24gb3IgaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciBMdXhvbiB0eXBlczsgZm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlIHtAbGluayBEYXRlVGltZSNwbHVzfSB0byBhZGQgYSBEdXJhdGlvbiBvYmplY3QgdG8gYSBEYXRlVGltZSwgcHJvZHVjaW5nIGFub3RoZXIgRGF0ZVRpbWUuCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIER1cmF0aW9uOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGEgRHVyYXRpb24sIHVzZSB7QGxpbmsgRHVyYXRpb24uZnJvbU1pbGxpc30sIHtAbGluayBEdXJhdGlvbi5mcm9tT2JqZWN0fSwgb3Ige0BsaW5rIER1cmF0aW9uLmZyb21JU099LgogICAqICogKipVbml0IHZhbHVlcyoqIFNlZSB0aGUge0BsaW5rIER1cmF0aW9uI3llYXJzfSwge0BsaW5rIER1cmF0aW9uI21vbnRoc30sIHtAbGluayBEdXJhdGlvbiN3ZWVrc30sIHtAbGluayBEdXJhdGlvbiNkYXlzfSwge0BsaW5rIER1cmF0aW9uI2hvdXJzfSwge0BsaW5rIER1cmF0aW9uI21pbnV0ZXN9LCB7QGxpbmsgRHVyYXRpb24jc2Vjb25kc30sIHtAbGluayBEdXJhdGlvbiNtaWxsaXNlY29uZHN9IGFjY2Vzc29ycy4KICAgKiAqICoqQ29uZmlndXJhdGlvbioqIFNlZSAge0BsaW5rIER1cmF0aW9uI2xvY2FsZX0gYW5kIHtAbGluayBEdXJhdGlvbiNudW1iZXJpbmdTeXN0ZW19IGFjY2Vzc29ycy4KICAgKiAqICoqVHJhbnNmb3JtYXRpb24qKiBUbyBjcmVhdGUgbmV3IER1cmF0aW9ucyBvdXQgb2Ygb2xkIG9uZXMgdXNlIHtAbGluayBEdXJhdGlvbiNwbHVzfSwge0BsaW5rIER1cmF0aW9uI21pbnVzfSwge0BsaW5rIER1cmF0aW9uI25vcm1hbGl6ZX0sIHtAbGluayBEdXJhdGlvbiNzZXR9LCB7QGxpbmsgRHVyYXRpb24jcmVjb25maWd1cmV9LCB7QGxpbmsgRHVyYXRpb24jc2hpZnRUb30sIGFuZCB7QGxpbmsgRHVyYXRpb24jbmVnYXRlfS4KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgRHVyYXRpb24gaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgRHVyYXRpb24jYXN9LCB7QGxpbmsgRHVyYXRpb24jdG9JU099LCB7QGxpbmsgRHVyYXRpb24jdG9Gb3JtYXR9LCBhbmQge0BsaW5rIER1cmF0aW9uI3RvSlNPTn0KICAgKgogICAqIFRoZXJlJ3MgYXJlIG1vcmUgbWV0aG9kcyBkb2N1bWVudGVkIGJlbG93LiBJbiBhZGRpdGlvbiwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3VidGxlciB0b3BpY3MgbGlrZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBhbmQgdmFsaWRpdHksIHNlZSB0aGUgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbi4KICAgKi8KICBjbGFzcyBEdXJhdGlvbiB7CiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCBhY2N1cmF0ZSA9IGNvbmZpZy5jb252ZXJzaW9uQWNjdXJhY3kgPT09ICJsb25ndGVybSIgfHwgZmFsc2U7CiAgICAgIGxldCBtYXRyaXggPSBhY2N1cmF0ZSA/IGFjY3VyYXRlTWF0cml4IDogY2FzdWFsTWF0cml4OwoKICAgICAgaWYgKGNvbmZpZy5tYXRyaXgpIHsKICAgICAgICBtYXRyaXggPSBjb25maWcubWF0cml4OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnZhbHVlcyA9IGNvbmZpZy52YWx1ZXM7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuY29udmVyc2lvbkFjY3VyYWN5ID0gYWNjdXJhdGUgPyAibG9uZ3Rlcm0iIDogImNhc3VhbCI7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGNvbmZpZy5pbnZhbGlkIHx8IG51bGw7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubWF0cml4ID0gbWF0cml4OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EdXJhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgRHVyYXRpb24gZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gY291bnQgb2YgbWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIHBhcnNpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSB0aGUgbG9jYWxlIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuY29udmVyc2lvbkFjY3VyYWN5PSdjYXN1YWwnXSAtIHRoZSBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbU1pbGxpcyhjb3VudCwgb3B0cykgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbGxpc2Vjb25kczogY291bnQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEdXJhdGlvbiBmcm9tIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIElmIHRoaXMgb2JqZWN0IGlzIGVtcHR5IHRoZW4gYSB6ZXJvIG1pbGxpc2Vjb25kcyBkdXJhdGlvbiBpcyByZXR1cm5lZC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSB0aGUgb2JqZWN0IHRvIGNyZWF0ZSB0aGUgRGF0ZVRpbWUgZnJvbQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai55ZWFycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5xdWFydGVycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5tb250aHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla3MKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmouZGF5cwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VycwogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taW51dGVzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLnNlY29uZHMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoubWlsbGlzZWNvbmRzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9W11dIC0gb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhpcyBEdXJhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBjdXN0b20gY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGZyb21PYmplY3Qob2JqLCBvcHRzID0ge30pIHsKICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICJvYmplY3QiKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKAogICAgICAgICAgYER1cmF0aW9uLmZyb21PYmplY3Q6IGFyZ3VtZW50IGV4cGVjdGVkIHRvIGJlIGFuIG9iamVjdCwgZ290ICR7CiAgICAgICAgICBvYmogPT09IG51bGwgPyAibnVsbCIgOiB0eXBlb2Ygb2JqCiAgICAgICAgfWAKICAgICAgICApOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IER1cmF0aW9uKHsKICAgICAgICB2YWx1ZXM6IG5vcm1hbGl6ZU9iamVjdChvYmosIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgICAgY29udmVyc2lvbkFjY3VyYWN5OiBvcHRzLmNvbnZlcnNpb25BY2N1cmFjeSwKICAgICAgICBtYXRyaXg6IG9wdHMubWF0cml4LAogICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIER1cmF0aW9uIGZyb20gRHVyYXRpb25MaWtlLgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0IHwgbnVtYmVyIHwgRHVyYXRpb259IGR1cmF0aW9uTGlrZQogICAgICogT25lIG9mOgogICAgICogLSBvYmplY3Qgd2l0aCBrZXlzIGxpa2UgJ3llYXJzJyBhbmQgJ2hvdXJzJy4KICAgICAqIC0gbnVtYmVyIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMKICAgICAqIC0gRHVyYXRpb24gaW5zdGFuY2UKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbkxpa2UpIHsKICAgICAgaWYgKGlzTnVtYmVyKGR1cmF0aW9uTGlrZSkpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgaWYgKER1cmF0aW9uLmlzRHVyYXRpb24oZHVyYXRpb25MaWtlKSkgewogICAgICAgIHJldHVybiBkdXJhdGlvbkxpa2U7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uTGlrZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdChkdXJhdGlvbkxpa2UpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBVbmtub3duIGR1cmF0aW9uIGFyZ3VtZW50ICR7ZHVyYXRpb25MaWtlfSBvZiB0eXBlICR7dHlwZW9mIGR1cmF0aW9uTGlrZX1gCiAgICAgICAgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSBkdXJhdGlvbiBzdHJpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRleHQgdG8gcGFyc2UKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucyBmb3IgcGFyc2luZwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIHRoZSBsb2NhbGUgdG8gdXNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIHByZXNldCBjb252ZXJzaW9uIHN5c3RlbSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5tYXRyaXg9T2JqZWN0XSAtIHRoZSBwcmVzZXQgY29udmVyc2lvbiBzeXN0ZW0gdG8gdXNlCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI0R1cmF0aW9ucwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDNZNk0xVzREVDEySDMwTTVTJykudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDMsIG1vbnRoczogNiwgd2Vla3M6IDEsIGRheXM6IDQsIGhvdXJzOiAxMiwgbWludXRlczogMzAsIHNlY29uZHM6IDUgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUFQyM0gnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjMgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTTygnUDVZM00nKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogNSwgbW9udGhzOiAzIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBzdGF0aWMgZnJvbUlTTyh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09EdXJhdGlvbih0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRHVyYXRpb24gZnJvbSBhbiBJU08gODYwMSB0aW1lIHN0cmluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGV4dCB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIGZvciBwYXJzaW5nCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdlbi1VUyddIC0gdGhlIGxvY2FsZSB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmNvbnZlcnNpb25BY2N1cmFjeT0nY2FzdWFsJ10gLSB0aGUgcHJlc2V0IGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm1hdHJpeD1PYmplY3RdIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJzExOjIyOjMzLjQ0NCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMjIsIHNlY29uZHM6IDMzLCBtaWxsaXNlY29uZHM6IDQ0NCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTE6MDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbUlTT1RpbWUoJ1QxMTowMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnMTEwMCcpLnRvT2JqZWN0KCkgLy89PiB7IGhvdXJzOiAxMSwgbWludXRlczogMCwgc2Vjb25kczogMCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tSVNPVGltZSgnVDExMDAnKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPVGltZSh0ZXh0LCBvcHRzKSB7CiAgICAgIGNvbnN0IFtwYXJzZWRdID0gcGFyc2VJU09UaW1lT25seSh0ZXh0KTsKICAgICAgaWYgKHBhcnNlZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5mcm9tT2JqZWN0KHBhcnNlZCwgb3B0cyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIER1cmF0aW9uLmludmFsaWQoInVucGFyc2FibGUiLCBgdGhlIGlucHV0ICIke3RleHR9IiBjYW4ndCBiZSBwYXJzZWQgYXMgSVNPIDg2MDFgKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRHVyYXRpb24uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBkYXRldGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4cGxhbmF0aW9uPW51bGxdIC0gbG9uZ2VyIGV4cGxhbmF0aW9uLCBtYXkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFuZCBvdGhlciB1c2VmdWwgZGVidWdnaW5nIGluZm9ybWF0aW9uCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc3RhdGljIGludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbiA9IG51bGwpIHsKICAgICAgaWYgKCFyZWFzb24pIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBhIHJlYXNvbiB0aGUgRHVyYXRpb24gaXMgaW52YWxpZCIpOwogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gcmVhc29uIGluc3RhbmNlb2YgSW52YWxpZCA/IHJlYXNvbiA6IG5ldyBJbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24pOwoKICAgICAgaWYgKFNldHRpbmdzLnRocm93T25JbnZhbGlkKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWREdXJhdGlvbkVycm9yKGludmFsaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRHVyYXRpb24oeyBpbnZhbGlkIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBzdGF0aWMgbm9ybWFsaXplVW5pdCh1bml0KSB7CiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgICAgeWVhcjogInllYXJzIiwKICAgICAgICB5ZWFyczogInllYXJzIiwKICAgICAgICBxdWFydGVyOiAicXVhcnRlcnMiLAogICAgICAgIHF1YXJ0ZXJzOiAicXVhcnRlcnMiLAogICAgICAgIG1vbnRoOiAibW9udGhzIiwKICAgICAgICBtb250aHM6ICJtb250aHMiLAogICAgICAgIHdlZWs6ICJ3ZWVrcyIsCiAgICAgICAgd2Vla3M6ICJ3ZWVrcyIsCiAgICAgICAgZGF5OiAiZGF5cyIsCiAgICAgICAgZGF5czogImRheXMiLAogICAgICAgIGhvdXI6ICJob3VycyIsCiAgICAgICAgaG91cnM6ICJob3VycyIsCiAgICAgICAgbWludXRlOiAibWludXRlcyIsCiAgICAgICAgbWludXRlczogIm1pbnV0ZXMiLAogICAgICAgIHNlY29uZDogInNlY29uZHMiLAogICAgICAgIHNlY29uZHM6ICJzZWNvbmRzIiwKICAgICAgICBtaWxsaXNlY29uZDogIm1pbGxpc2Vjb25kcyIsCiAgICAgICAgbWlsbGlzZWNvbmRzOiAibWlsbGlzZWNvbmRzIiwKICAgICAgfVt1bml0ID8gdW5pdC50b0xvd2VyQ2FzZSgpIDogdW5pdF07CgogICAgICBpZiAoIW5vcm1hbGl6ZWQpIHRocm93IG5ldyBJbnZhbGlkVW5pdEVycm9yKHVuaXQpOwoKICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBEdXJhdGlvbi4gV29ya3MgYWNyb3NzIGNvbnRleHQgYm91bmRhcmllcwogICAgICogQHBhcmFtIHtvYmplY3R9IG8KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBpc0R1cmF0aW9uKG8pIHsKICAgICAgcmV0dXJuIChvICYmIG8uaXNMdXhvbkR1cmF0aW9uKSB8fCBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCAgdGhlIGxvY2FsZSBvZiBhIER1cmF0aW9uLCBzdWNoICdlbi1HQicKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBsb2NhbGUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5sb2NhbGUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBudW1iZXJpbmcgc3lzdGVtIG9mIGEgRHVyYXRpb24sIHN1Y2ggJ2JlbmcnLiBUaGUgbnVtYmVyaW5nIHN5c3RlbSBpcyB1c2VkIHdoZW4gZm9ybWF0dGluZyB0aGUgRHVyYXRpb24KICAgICAqCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbnVtYmVyaW5nU3lzdGVtKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEdXJhdGlvbiBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy4gWW91IG1heSB1c2UgdGhlc2UgdG9rZW5zOgogICAgICogKiBgU2AgZm9yIG1pbGxpc2Vjb25kcwogICAgICogKiBgc2AgZm9yIHNlY29uZHMKICAgICAqICogYG1gIGZvciBtaW51dGVzCiAgICAgKiAqIGBoYCBmb3IgaG91cnMKICAgICAqICogYGRgIGZvciBkYXlzCiAgICAgKiAqIGB3YCBmb3Igd2Vla3MKICAgICAqICogYE1gIGZvciBtb250aHMKICAgICAqICogYHlgIGZvciB5ZWFycwogICAgICogTm90ZXM6CiAgICAgKiAqIEFkZCBwYWRkaW5nIGJ5IHJlcGVhdGluZyB0aGUgdG9rZW4sIGUuZy4gInl5IiBwYWRzIHRoZSB5ZWFycyB0byB0d28gZGlnaXRzLCAiaGhoaCIgcGFkcyB0aGUgaG91cnMgb3V0IHRvIGZvdXIgZGlnaXRzCiAgICAgKiAqIFRva2VucyBjYW4gYmUgZXNjYXBlZCBieSB3cmFwcGluZyB3aXRoIHNpbmdsZSBxdW90ZXMuCiAgICAgKiAqIFRoZSBkdXJhdGlvbiB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgc2V0IG9mIHVuaXRzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHVzaW5nIHtAbGluayBEdXJhdGlvbiNzaGlmdFRvfSBhbmQgdGhlIER1cmF0aW9ucydzIGNvbnZlcnNpb24gYWNjdXJhY3kgc2V0dGluZy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbXQgLSB0aGUgZm9ybWF0IHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsb29yPXRydWVdIC0gZmxvb3IgbnVtZXJpY2FsIHZhbHVlcwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5IGQgcyIpIC8vPT4gIjEgNiAyIgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxLCBkYXlzOiA2LCBzZWNvbmRzOiAyIH0pLnRvRm9ybWF0KCJ5eSBkZCBzc3MiKSAvLz0+ICIwMSAwNiAwMDIiCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9Gb3JtYXQoIk0gUyIpIC8vPT4gIjEyIDUxODQwMjAwMCIKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9Gb3JtYXQoZm10LCBvcHRzID0ge30pIHsKICAgICAgLy8gcmV2ZXJzZS1jb21wYXQgc2luY2UgMS4yOyB3ZSBhbHdheXMgcm91bmQgZG93biBub3csIG5ldmVyIHVwLCBhbmQgd2UgZG8gaXQgYnkgZGVmYXVsdAogICAgICBjb25zdCBmbXRPcHRzID0gewogICAgICAgIC4uLm9wdHMsCiAgICAgICAgZmxvb3I6IG9wdHMucm91bmQgIT09IGZhbHNlICYmIG9wdHMuZmxvb3IgIT09IGZhbHNlLAogICAgICB9OwogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkCiAgICAgICAgPyBGb3JtYXR0ZXIuY3JlYXRlKHRoaXMubG9jLCBmbXRPcHRzKS5mb3JtYXREdXJhdGlvbkZyb21TdHJpbmcodGhpcywgZm10KQogICAgICAgIDogSU5WQUxJRCQyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIER1cmF0aW9uIHdpdGggYWxsIHVuaXRzIGluY2x1ZGVkLgogICAgICogVG8gbW9kaWZ5IGl0cyBiZWhhdmlvciB1c2UgdGhlIGBsaXN0U3R5bGVgIGFuZCBhbnkgSW50bC5OdW1iZXJGb3JtYXQgb3B0aW9uLCB0aG91Z2ggYHVuaXREaXNwbGF5YCBpcyBlc3BlY2lhbGx5IHJlbGV2YW50LgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9JbnRsL051bWJlckZvcm1hdAogICAgICogQHBhcmFtIG9wdHMgLSBPbiBvcHRpb24gb2JqZWN0IHRvIG92ZXJyaWRlIHRoZSBmb3JtYXR0aW5nLiBBY2NlcHRzIHRoZSBzYW1lIGtleXMgYXMgdGhlIG9wdGlvbnMgcGFyYW1ldGVyIG9mIHRoZSBuYXRpdmUgYEludC5OdW1iZXJGb3JtYXRgIGNvbnN0cnVjdG9yLCBhcyB3ZWxsIGFzIGBsaXN0U3R5bGVgLgogICAgICogQGV4YW1wbGUKICAgICAqIGBgYGpzCiAgICAgKiB2YXIgZHVyID0gRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEsIGhvdXJzOiA1LCBtaW51dGVzOiA2IH0pCiAgICAgKiBkdXIudG9IdW1hbigpIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCA2IG1pbnV0ZXMnCiAgICAgKiBkdXIudG9IdW1hbih7IGxpc3RTdHlsZTogImxvbmciIH0pIC8vPT4gJzEgZGF5LCA1IGhvdXJzLCBhbmQgNiBtaW51dGVzJwogICAgICogZHVyLnRvSHVtYW4oeyB1bml0RGlzcGxheTogInNob3J0IiB9KSAvLz0+ICcxIGRheSwgNSBociwgNiBtaW4nCiAgICAgKiBgYGAKICAgICAqLwogICAgdG9IdW1hbihvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDI7CgogICAgICBjb25zdCBsID0gb3JkZXJlZFVuaXRzJDEKICAgICAgICAubWFwKCh1bml0KSA9PiB7CiAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlc1t1bml0XTsKICAgICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWwpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMubG9jCiAgICAgICAgICAgIC5udW1iZXJGb3JtYXR0ZXIoeyBzdHlsZTogInVuaXQiLCB1bml0RGlzcGxheTogImxvbmciLCAuLi5vcHRzLCB1bml0OiB1bml0LnNsaWNlKDAsIC0xKSB9KQogICAgICAgICAgICAuZm9ybWF0KHZhbCk7CiAgICAgICAgfSkKICAgICAgICAuZmlsdGVyKChuKSA9PiBuKTsKCiAgICAgIHJldHVybiB0aGlzLmxvYwogICAgICAgIC5saXN0Rm9ybWF0dGVyKHsgdHlwZTogImNvbmp1bmN0aW9uIiwgc3R5bGU6IG9wdHMubGlzdFN0eWxlIHx8ICJuYXJyb3ciLCAuLi5vcHRzIH0pCiAgICAgICAgLmZvcm1hdChsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIHRoaXMgRHVyYXRpb24ncyB2YWx1ZXMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfSkudG9PYmplY3QoKSAvLz0+IHsgeWVhcnM6IDEsIGRheXM6IDYsIHNlY29uZHM6IDIgfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdCgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKICAgICAgcmV0dXJuIHsgLi4udGhpcy52YWx1ZXMgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNEdXJhdGlvbnMKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMywgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQM1lUNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNCwgc2Vjb25kczogNDUgfSkudG9JU08oKSAvLz0+ICdQNE1UNDVTJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogNSB9KS50b0lTTygpIC8vPT4gJ1A1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiA1IH0pLnRvSVNPKCkgLy89PiAnUFQ1TScKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDYgfSkudG9JU08oKSAvLz0+ICdQVDAuMDA2UycKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oKSB7CiAgICAgIC8vIHdlIGNvdWxkIHVzZSB0aGUgZm9ybWF0dGVyLCBidXQgdGhpcyBpcyBhbiBlYXNpZXIgd2F5IHRvIGdldCB0aGUgbWluaW11bSBzdHJpbmcKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgbGV0IHMgPSAiUCI7CiAgICAgIGlmICh0aGlzLnllYXJzICE9PSAwKSBzICs9IHRoaXMueWVhcnMgKyAiWSI7CiAgICAgIGlmICh0aGlzLm1vbnRocyAhPT0gMCB8fCB0aGlzLnF1YXJ0ZXJzICE9PSAwKSBzICs9IHRoaXMubW9udGhzICsgdGhpcy5xdWFydGVycyAqIDMgKyAiTSI7CiAgICAgIGlmICh0aGlzLndlZWtzICE9PSAwKSBzICs9IHRoaXMud2Vla3MgKyAiVyI7CiAgICAgIGlmICh0aGlzLmRheXMgIT09IDApIHMgKz0gdGhpcy5kYXlzICsgIkQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCB8fCB0aGlzLm1pbnV0ZXMgIT09IDAgfHwgdGhpcy5zZWNvbmRzICE9PSAwIHx8IHRoaXMubWlsbGlzZWNvbmRzICE9PSAwKQogICAgICAgIHMgKz0gIlQiOwogICAgICBpZiAodGhpcy5ob3VycyAhPT0gMCkgcyArPSB0aGlzLmhvdXJzICsgIkgiOwogICAgICBpZiAodGhpcy5taW51dGVzICE9PSAwKSBzICs9IHRoaXMubWludXRlcyArICJNIjsKICAgICAgaWYgKHRoaXMuc2Vjb25kcyAhPT0gMCB8fCB0aGlzLm1pbGxpc2Vjb25kcyAhPT0gMCkKICAgICAgICAvLyB0aGlzIHdpbGwgaGFuZGxlICJmbG9hdGluZyBwb2ludCBtYWRuZXNzIiBieSByZW1vdmluZyBleHRyYSBkZWNpbWFsIHBsYWNlcwogICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4ODAwNC9pcy1mbG9hdGluZy1wb2ludC1tYXRoLWJyb2tlbgogICAgICAgIHMgKz0gcm91bmRUbyh0aGlzLnNlY29uZHMgKyB0aGlzLm1pbGxpc2Vjb25kcyAvIDEwMDAsIDMpICsgIlMiOwogICAgICBpZiAocyA9PT0gIlAiKSBzICs9ICJUMFMiOwogICAgICByZXR1cm4gczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uLCBmb3JtYXR0ZWQgYXMgYSB0aW1lIG9mIGRheS4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmV0dXJuIG51bGwgaWYgdGhlIGR1cmF0aW9uIGlzIGludmFsaWQsIG5lZ2F0aXZlLCBvciBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMjQgaG91cnMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVByZWZpeD1mYWxzZV0gLSBpbmNsdWRlIHRoZSBgVGAgcHJlZml4CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKCkgLy89PiAnMTE6MDA6MDAuMDAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBzdXBwcmVzc01pbGxpc2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcxMTowMDowMCcKICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTEgfSkudG9JU09UaW1lKHsgc3VwcHJlc3NTZWNvbmRzOiB0cnVlIH0pIC8vPT4gJzExOjAwJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxMSB9KS50b0lTT1RpbWUoeyBpbmNsdWRlUHJlZml4OiB0cnVlIH0pIC8vPT4gJ1QxMTowMDowMC4wMDAnCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDExIH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcxMTAwMDAuMDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cyA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gbnVsbDsKCiAgICAgIGNvbnN0IG1pbGxpcyA9IHRoaXMudG9NaWxsaXMoKTsKICAgICAgaWYgKG1pbGxpcyA8IDAgfHwgbWlsbGlzID49IDg2NDAwMDAwKSByZXR1cm4gbnVsbDsKCiAgICAgIG9wdHMgPSB7CiAgICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHM6IGZhbHNlLAogICAgICAgIHN1cHByZXNzU2Vjb25kczogZmFsc2UsCiAgICAgICAgaW5jbHVkZVByZWZpeDogZmFsc2UsCiAgICAgICAgZm9ybWF0OiAiZXh0ZW5kZWQiLAogICAgICAgIC4uLm9wdHMsCiAgICAgICAgaW5jbHVkZU9mZnNldDogZmFsc2UsCiAgICAgIH07CgogICAgICBjb25zdCBkYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMobWlsbGlzLCB7IHpvbmU6ICJVVEMiIH0pOwogICAgICByZXR1cm4gZGF0ZVRpbWUudG9JU09UaW1lKG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSlNPTi4KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9KU09OKCkgewogICAgICByZXR1cm4gdGhpcy50b0lTTygpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIER1cmF0aW9uIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gbWlsbGlzZWNvbmRzIHZhbHVlIG9mIHRoaXMgRHVyYXRpb24uCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvTWlsbGlzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIE5hTjsKCiAgICAgIHJldHVybiBkdXJhdGlvblRvTWlsbGlzKHRoaXMubWF0cml4LCB0aGlzLnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIG1pbGxpc2Vjb25kcyB2YWx1ZSBvZiB0aGlzIER1cmF0aW9uLiBBbGlhcyBvZiB7QGxpbmsgdG9NaWxsaXN9CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHZhbHVlT2YoKSB7CiAgICAgIHJldHVybiB0aGlzLnRvTWlsbGlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIHRoaXMgRHVyYXRpb24gbG9uZ2VyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIGFkZC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBwbHVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIHJlc3VsdCA9IHt9OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGR1ci52YWx1ZXMsIGspIHx8IGhhc093blByb3BlcnR5KHRoaXMudmFsdWVzLCBrKSkgewogICAgICAgICAgcmVzdWx0W2tdID0gZHVyLmdldChrKSArIHRoaXMuZ2V0KGspOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IHJlc3VsdCB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2UgdGhpcyBEdXJhdGlvbiBzaG9ydGVyIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgYW1vdW50IHRvIHN1YnRyYWN0LiBFaXRoZXIgYSBMdXhvbiBEdXJhdGlvbiwgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLCB0aGUgb2JqZWN0IGFyZ3VtZW50IHRvIER1cmF0aW9uLmZyb21PYmplY3QoKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG1pbnVzKGR1cmF0aW9uKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKCiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pOwogICAgICByZXR1cm4gdGhpcy5wbHVzKGR1ci5uZWdhdGUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTY2FsZSB0aGlzIER1cmF0aW9uIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdW5pdC4gQXJpdHkgaXMgMSBvciAyOiB0aGUgdmFsdWUgb2YgdGhlIHVuaXQgYW5kLCBvcHRpb25hbGx5LCB0aGUgdW5pdCBuYW1lLiBNdXN0IHJldHVybiBhIG51bWJlci4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSwgbWludXRlczogMzAgfSkubWFwVW5pdHMoeCA9PiB4ICogMikgLy89PiB7IGhvdXJzOiAyLCBtaW51dGVzOiA2MCB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIG1pbnV0ZXM6IDMwIH0pLm1hcFVuaXRzKCh4LCB1KSA9PiB1ID09PSAiaG91cnMiID8geCAqIDIgOiB4KSAvLz0+IHsgaG91cnM6IDIsIG1pbnV0ZXM6IDMwIH0KICAgICAqIEByZXR1cm4ge0R1cmF0aW9ufQogICAgICovCiAgICBtYXBVbml0cyhmbikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9OwogICAgICBmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModGhpcy52YWx1ZXMpKSB7CiAgICAgICAgcmVzdWx0W2tdID0gYXNOdW1iZXIoZm4odGhpcy52YWx1ZXNba10sIGspKTsKICAgICAgfQogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogcmVzdWx0IH0sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDIsIGRheXM6IDN9KS5nZXQoJ3llYXJzJykgLy89PiAyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnbW9udGhzJykgLy89PiAwCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMiwgZGF5czogM30pLmdldCgnZGF5cycpIC8vPT4gMwogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1tEdXJhdGlvbi5ub3JtYWxpemVVbml0KHVuaXQpXTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSB2YWx1ZXMgb2Ygc3BlY2lmaWVkIHVuaXRzLiBSZXR1cm4gYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHVyLnNldCh7IHllYXJzOiAyMDE3IH0pCiAgICAgKiBAZXhhbXBsZSBkdXIuc2V0KHsgaG91cnM6IDgsIG1pbnV0ZXM6IDMwIH0pCiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBtaXhlZCA9IHsgLi4udGhpcy52YWx1ZXMsIC4uLm5vcm1hbGl6ZU9iamVjdCh2YWx1ZXMsIER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpIH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIHsgdmFsdWVzOiBtaXhlZCB9KTsKICAgIH0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBsb2NhbGUgYW5kL29yIG51bWJlcmluZ1N5c3RlbS4gIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEdXJhdGlvbi4KICAgICAqIEBleGFtcGxlIGR1ci5yZWNvbmZpZ3VyZSh7IGxvY2FsZTogJ2VuLUdCJyB9KQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHJlY29uZmlndXJlKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNvbnZlcnNpb25BY2N1cmFjeSwgbWF0cml4IH0gPSB7fSkgewogICAgICBjb25zdCBsb2MgPSB0aGlzLmxvYy5jbG9uZSh7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtIH0pOwogICAgICBjb25zdCBvcHRzID0geyBsb2MsIG1hdHJpeCwgY29udmVyc2lvbkFjY3VyYWN5IH07CiAgICAgIHJldHVybiBjbG9uZSQxKHRoaXMsIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGR1cmF0aW9uIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gYSB1bml0IHN1Y2ggYXMgJ21pbnV0ZXMnIG9yICdkYXlzJwogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7eWVhcnM6IDF9KS5hcygnZGF5cycpIC8vPT4gMzY1CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHt5ZWFyczogMX0pLmFzKCdtb250aHMnKSAvLz0+IDEyCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHtob3VyczogNjB9KS5hcygnZGF5cycpIC8vPT4gMi41CiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIGFzKHVuaXQpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuc2hpZnRUbyh1bml0KS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgdGhpcyBEdXJhdGlvbiB0byBpdHMgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGluIGl0cyBjdXJyZW50IHVuaXRzLgogICAgICogQXNzdW1pbmcgdGhlIG92ZXJhbGwgdmFsdWUgb2YgdGhlIER1cmF0aW9uIGlzIHBvc2l0aXZlLCB0aGlzIG1lYW5zOgogICAgICogLSBleGNlc3NpdmUgdmFsdWVzIGZvciBsb3dlci1vcmRlciB1bml0cyBhcmUgY29udmVydGVkIHRvIGhpZ2hlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmaXJzdCBhbmQgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIG5lZ2F0aXZlIGxvd2VyLW9yZGVyIHVuaXRzIGFyZSBjb252ZXJ0ZWQgdG8gaGlnaGVyIG9yZGVyIHVuaXRzICh0aGVyZSBtdXN0IGJlIHN1Y2ggYSBoaWdoZXIgb3JkZXIgdW5pdCwgb3RoZXJ3aXNlCiAgICAgKiAgIHRoZSBvdmVyYWxsIHZhbHVlIHdvdWxkIGJlIG5lZ2F0aXZlLCBzZWUgc2Vjb25kIGV4YW1wbGUpCiAgICAgKiAtIGZyYWN0aW9uYWwgdmFsdWVzIGZvciBoaWdoZXItb3JkZXIgdW5pdHMgYXJlIGNvbnZlcnRlZCB0byBsb3dlci1vcmRlciB1bml0cyAoaWYgcG9zc2libGUsIHNlZSBmb3VydGggZXhhbXBsZSkKICAgICAqCiAgICAgKiBJZiB0aGUgb3ZlcmFsbCB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGB0aGlzLm5lZ2F0ZSgpLm5vcm1hbGl6ZSgpLm5lZ2F0ZSgpYC4KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMiwgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMTUsIGRheXM6IDI1NSB9CiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogNTAwMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBkYXlzOiA1MDAwIH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMTIsIG1pbnV0ZXM6IC00NSB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMTEsIG1pbnV0ZXM6IDE1IH0KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMi41LCBkYXlzOiAwLCBob3VyczogMCB9KS5ub3JtYWxpemUoKS50b09iamVjdCgpIC8vPT4geyB5ZWFyczogMiwgZGF5czogMTgyLCBob3VyczogMTIgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIG5vcm1hbGl6ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gdGhpcy50b09iamVjdCgpOwogICAgICBub3JtYWxpemVWYWx1ZXModGhpcy5tYXRyaXgsIHZhbHMpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlc2NhbGUgdW5pdHMgdG8gaXRzIGxhcmdlc3QgcmVwcmVzZW50YXRpb24KICAgICAqIEBleGFtcGxlIER1cmF0aW9uLmZyb21PYmplY3QoeyBtaWxsaXNlY29uZHM6IDkwMDAwIH0pLnJlc2NhbGUoKS50b09iamVjdCgpIC8vPT4geyBtaW51dGVzOiAxLCBzZWNvbmRzOiAzMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgcmVzY2FsZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCB2YWxzID0gcmVtb3ZlWmVyb2VzKHRoaXMubm9ybWFsaXplKCkuc2hpZnRUb0FsbCgpLnRvT2JqZWN0KCkpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogdmFscyB9LCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdGhpcyBEdXJhdGlvbiBpbnRvIGl0cyByZXByZXNlbnRhdGlvbiBpbiBhIGRpZmZlcmVudCBzZXQgb2YgdW5pdHMuCiAgICAgKiBAZXhhbXBsZSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEsIHNlY29uZHM6IDMwIH0pLnNoaWZ0VG8oJ21pbnV0ZXMnLCAnbWlsbGlzZWNvbmRzJykudG9PYmplY3QoKSAvLz0+IHsgbWludXRlczogNjAsIG1pbGxpc2Vjb25kczogMzAwMDAgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG8oLi4udW5pdHMpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwoKICAgICAgaWYgKHVuaXRzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CgogICAgICB1bml0cyA9IHVuaXRzLm1hcCgodSkgPT4gRHVyYXRpb24ubm9ybWFsaXplVW5pdCh1KSk7CgogICAgICBjb25zdCBidWlsdCA9IHt9LAogICAgICAgIGFjY3VtdWxhdGVkID0ge30sCiAgICAgICAgdmFscyA9IHRoaXMudG9PYmplY3QoKTsKICAgICAgbGV0IGxhc3RVbml0OwoKICAgICAgZm9yIChjb25zdCBrIG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKHVuaXRzLmluZGV4T2YoaykgPj0gMCkgewogICAgICAgICAgbGFzdFVuaXQgPSBrOwoKICAgICAgICAgIGxldCBvd24gPSAwOwoKICAgICAgICAgIC8vIGFueXRoaW5nIHdlIGhhdmVuJ3QgYm9pbGVkIGRvd24geWV0IHNob3VsZCBnZXQgYm9pbGVkIHRvIHRoaXMgdW5pdAogICAgICAgICAgZm9yIChjb25zdCBhayBpbiBhY2N1bXVsYXRlZCkgewogICAgICAgICAgICBvd24gKz0gdGhpcy5tYXRyaXhbYWtdW2tdICogYWNjdW11bGF0ZWRbYWtdOwogICAgICAgICAgICBhY2N1bXVsYXRlZFtha10gPSAwOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHBsdXMgYW55dGhpbmcgdGhhdCdzIGFscmVhZHkgaW4gdGhpcyB1bml0CiAgICAgICAgICBpZiAoaXNOdW1iZXIodmFsc1trXSkpIHsKICAgICAgICAgICAgb3duICs9IHZhbHNba107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gb25seSBrZWVwIHRoZSBpbnRlZ2VyIHBhcnQgZm9yIG5vdyBpbiB0aGUgaG9wZXMgb2YgcHV0dGluZyBhbnkgZGVjaW1hbCBwYXJ0CiAgICAgICAgICAvLyBpbnRvIGEgc21hbGxlciB1bml0IGxhdGVyCiAgICAgICAgICBjb25zdCBpID0gTWF0aC50cnVuYyhvd24pOwogICAgICAgICAgYnVpbHRba10gPSBpOwogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSAob3duICogMTAwMCAtIGkgKiAxMDAwKSAvIDEwMDA7CgogICAgICAgICAgLy8gb3RoZXJ3aXNlLCBrZWVwIGl0IGluIHRoZSB3aW5ncyB0byBib2lsIGl0IGxhdGVyCiAgICAgICAgfSBlbHNlIGlmIChpc051bWJlcih2YWxzW2tdKSkgewogICAgICAgICAgYWNjdW11bGF0ZWRba10gPSB2YWxzW2tdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gYW55dGhpbmcgbGVmdG92ZXIgYmVjb21lcyB0aGUgZGVjaW1hbCBmb3IgdGhlIGxhc3QgdW5pdAogICAgICAvLyBsYXN0VW5pdCBtdXN0IGJlIGRlZmluZWQgc2luY2UgdW5pdHMgaXMgbm90IGVtcHR5CiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjY3VtdWxhdGVkKSB7CiAgICAgICAgaWYgKGFjY3VtdWxhdGVkW2tleV0gIT09IDApIHsKICAgICAgICAgIGJ1aWx0W2xhc3RVbml0XSArPQogICAgICAgICAgICBrZXkgPT09IGxhc3RVbml0ID8gYWNjdW11bGF0ZWRba2V5XSA6IGFjY3VtdWxhdGVkW2tleV0gLyB0aGlzLm1hdHJpeFtsYXN0VW5pdF1ba2V5XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG5vcm1hbGl6ZVZhbHVlcyh0aGlzLm1hdHJpeCwgYnVpbHQpOwogICAgICByZXR1cm4gY2xvbmUkMSh0aGlzLCB7IHZhbHVlczogYnVpbHQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGlzIER1cmF0aW9uIHRvIGFsbCBhdmFpbGFibGUgdW5pdHMuCiAgICAgKiBTYW1lIGFzIHNoaWZ0VG8oInllYXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiKQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHNoaWZ0VG9BbGwoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIHRoaXMuc2hpZnRUbygKICAgICAgICAieWVhcnMiLAogICAgICAgICJtb250aHMiLAogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgImRheXMiLAogICAgICAgICJob3VycyIsCiAgICAgICAgIm1pbnV0ZXMiLAogICAgICAgICJzZWNvbmRzIiwKICAgICAgICAibWlsbGlzZWNvbmRzIgogICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuZWdhdGl2ZSBvZiB0aGlzIER1cmF0aW9uLgogICAgICogQGV4YW1wbGUgRHVyYXRpb24uZnJvbU9iamVjdCh7IGhvdXJzOiAxLCBzZWNvbmRzOiAzMCB9KS5uZWdhdGUoKS50b09iamVjdCgpIC8vPT4geyBob3VyczogLTEsIHNlY29uZHM6IC0zMCB9CiAgICAgKiBAcmV0dXJuIHtEdXJhdGlvbn0KICAgICAqLwogICAgbmVnYXRlKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG5lZ2F0ZWQgPSB7fTsKICAgICAgZm9yIChjb25zdCBrIG9mIE9iamVjdC5rZXlzKHRoaXMudmFsdWVzKSkgewogICAgICAgIG5lZ2F0ZWRba10gPSB0aGlzLnZhbHVlc1trXSA9PT0gMCA/IDAgOiAtdGhpcy52YWx1ZXNba107CiAgICAgIH0KICAgICAgcmV0dXJuIGNsb25lJDEodGhpcywgeyB2YWx1ZXM6IG5lZ2F0ZWQgfSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMueWVhcnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcnMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcnMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5xdWFydGVycyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtb250aHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbW9udGhzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubW9udGhzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWtzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgd2Vla3MoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy53ZWVrcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXlzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXMoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnZhbHVlcy5kYXlzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXJzLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGhvdXJzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMuaG91cnMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWludXRlcy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBtaW51dGVzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWludXRlcyB8fCAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgc2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudmFsdWVzLnNlY29uZHMgfHwgMCA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbWlsbGlzZWNvbmRzLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmRzKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy52YWx1ZXMubWlsbGlzZWNvbmRzIHx8IDAgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIER1cmF0aW9uIGlzIGludmFsaWQuIEludmFsaWQgZHVyYXRpb25zIGFyZSByZXR1cm5lZCBieSBkaWZmIG9wZXJhdGlvbnMKICAgICAqIG9uIGludmFsaWQgRGF0ZVRpbWVzIG9yIEludGVydmFscy4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRHVyYXRpb24gYmVjYW1lIGludmFsaWQsIG9yIG51bGwgaWYgdGhlIER1cmF0aW9uIGlzIHZhbGlkCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIER1cmF0aW9uIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEdXJhdGlvbiBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIER1cmF0aW9ucyBhcmUgZXF1YWwgaWZmIHRoZXkgaGF2ZSB0aGUgc2FtZSB1bml0cyBhbmQgdGhlIHNhbWUgdmFsdWVzIGZvciBlYWNoIHVuaXQuCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgZXF1YWxzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkIHx8ICFvdGhlci5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBpZiAoIXRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICBmdW5jdGlvbiBlcSh2MSwgdjIpIHsKICAgICAgICAvLyBDb25zaWRlciAwIGFuZCB1bmRlZmluZWQgYXMgZXF1YWwKICAgICAgICBpZiAodjEgPT09IHVuZGVmaW5lZCB8fCB2MSA9PT0gMCkgcmV0dXJuIHYyID09PSB1bmRlZmluZWQgfHwgdjIgPT09IDA7CiAgICAgICAgcmV0dXJuIHYxID09PSB2MjsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB1IG9mIG9yZGVyZWRVbml0cyQxKSB7CiAgICAgICAgaWYgKCFlcSh0aGlzLnZhbHVlc1t1XSwgb3RoZXIudmFsdWVzW3VdKSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIGNvbnN0IElOVkFMSUQkMSA9ICJJbnZhbGlkIEludGVydmFsIjsKCiAgLy8gY2hlY2tzIGlmIHRoZSBzdGFydCBpcyBlcXVhbCB0byBvciBiZWZvcmUgdGhlIGVuZAogIGZ1bmN0aW9uIHZhbGlkYXRlU3RhcnRFbmQoc3RhcnQsIGVuZCkgewogICAgaWYgKCFzdGFydCB8fCAhc3RhcnQuaXNWYWxpZCkgewogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgibWlzc2luZyBvciBpbnZhbGlkIHN0YXJ0Iik7CiAgICB9IGVsc2UgaWYgKCFlbmQgfHwgIWVuZC5pc1ZhbGlkKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKCJtaXNzaW5nIG9yIGludmFsaWQgZW5kIik7CiAgICB9IGVsc2UgaWYgKGVuZCA8IHN0YXJ0KSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC5pbnZhbGlkKAogICAgICAgICJlbmQgYmVmb3JlIHN0YXJ0IiwKICAgICAgICBgVGhlIGVuZCBvZiBhbiBpbnRlcnZhbCBtdXN0IGJlIGFmdGVyIGl0cyBzdGFydCwgYnV0IHlvdSBoYWQgc3RhcnQ9JHtzdGFydC50b0lTTygpfSBhbmQgZW5kPSR7ZW5kLnRvSVNPKCl9YAogICAgICApOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQoKICAvKioKICAgKiBBbiBJbnRlcnZhbCBvYmplY3QgcmVwcmVzZW50cyBhIGhhbGYtb3BlbiBpbnRlcnZhbCBvZiB0aW1lLCB3aGVyZSBlYWNoIGVuZHBvaW50IGlzIGEge0BsaW5rIERhdGVUaW1lfS4gQ29uY2VwdHVhbGx5LCBpdCdzIGEgY29udGFpbmVyIGZvciB0aG9zZSB0d28gZW5kcG9pbnRzLCBhY2NvbXBhbmllZCBieSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgY29tcGFyaW5nLCB0cmFuc2Zvcm1pbmcsIGFuZCBmb3JtYXR0aW5nIHRoZW0uCiAgICoKICAgKiBIZXJlIGlzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBtZXRob2RzIGFuZCBnZXR0ZXJzIGluIEludGVydmFsOgogICAqCiAgICogKiAqKkNyZWF0aW9uKiogVG8gY3JlYXRlIGFuIEludGVydmFsLCB1c2Uge0BsaW5rIEludGVydmFsLmZyb21EYXRlVGltZXN9LCB7QGxpbmsgSW50ZXJ2YWwuYWZ0ZXJ9LCB7QGxpbmsgSW50ZXJ2YWwuYmVmb3JlfSwgb3Ige0BsaW5rIEludGVydmFsLmZyb21JU099LgogICAqICogKipBY2Nlc3NvcnMqKiBVc2Uge0BsaW5rIEludGVydmFsI3N0YXJ0fSBhbmQge0BsaW5rIEludGVydmFsI2VuZH0gdG8gZ2V0IHRoZSBzdGFydCBhbmQgZW5kLgogICAqICogKipJbnRlcnJvZ2F0aW9uKiogVG8gYW5hbHl6ZSB0aGUgSW50ZXJ2YWwsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjY291bnR9LCB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSwge0BsaW5rIEludGVydmFsI2hhc1NhbWV9LCB7QGxpbmsgSW50ZXJ2YWwjY29udGFpbnN9LCB7QGxpbmsgSW50ZXJ2YWwjaXNBZnRlcn0sIG9yIHtAbGluayBJbnRlcnZhbCNpc0JlZm9yZX0uCiAgICogKiAqKlRyYW5zZm9ybWF0aW9uKiogVG8gY3JlYXRlIG90aGVyIEludGVydmFscyBvdXQgb2YgdGhpcyBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjc2V0fSwge0BsaW5rIEludGVydmFsI3NwbGl0QXR9LCB7QGxpbmsgSW50ZXJ2YWwjc3BsaXRCeX0sIHtAbGluayBJbnRlcnZhbCNkaXZpZGVFcXVhbGx5fSwge0BsaW5rIEludGVydmFsLm1lcmdlfSwge0BsaW5rIEludGVydmFsLnhvcn0sIHtAbGluayBJbnRlcnZhbCN1bmlvbn0sIHtAbGluayBJbnRlcnZhbCNpbnRlcnNlY3Rpb259LCBvciB7QGxpbmsgSW50ZXJ2YWwjZGlmZmVyZW5jZX0uCiAgICogKiAqKkNvbXBhcmlzb24qKiBUbyBjb21wYXJlIHRoaXMgSW50ZXJ2YWwgdG8gYW5vdGhlciBvbmUsIHVzZSB7QGxpbmsgSW50ZXJ2YWwjZXF1YWxzfSwge0BsaW5rIEludGVydmFsI292ZXJsYXBzfSwge0BsaW5rIEludGVydmFsI2FidXRzU3RhcnR9LCB7QGxpbmsgSW50ZXJ2YWwjYWJ1dHNFbmR9LCB7QGxpbmsgSW50ZXJ2YWwjZW5ndWxmc30KICAgKiAqICoqT3V0cHV0KiogVG8gY29udmVydCB0aGUgSW50ZXJ2YWwgaW50byBvdGhlciByZXByZXNlbnRhdGlvbnMsIHNlZSB7QGxpbmsgSW50ZXJ2YWwjdG9TdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9Mb2NhbGVTdHJpbmd9LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU099LCB7QGxpbmsgSW50ZXJ2YWwjdG9JU09EYXRlfSwge0BsaW5rIEludGVydmFsI3RvSVNPVGltZX0sIHtAbGluayBJbnRlcnZhbCN0b0Zvcm1hdH0sIGFuZCB7QGxpbmsgSW50ZXJ2YWwjdG9EdXJhdGlvbn0uCiAgICovCiAgY2xhc3MgSW50ZXJ2YWwgewogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5zID0gY29uZmlnLnN0YXJ0OwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmUgPSBjb25maWcuZW5kOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmludmFsaWQgPSBjb25maWcuaW52YWxpZCB8fCBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25JbnRlcnZhbCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW4gaW52YWxpZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gLSBzaW1wbGUgc3RyaW5nIG9mIHdoeSB0aGlzIEludGVydmFsIGlzIGludmFsaWQuIFNob3VsZCBub3QgY29udGFpbiBwYXJhbWV0ZXJzIG9yIGFueXRoaW5nIGVsc2UgZGF0YS1kZXBlbmRlbnQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZXhwbGFuYXRpb249bnVsbF0gLSBsb25nZXIgZXhwbGFuYXRpb24sIG1heSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5kIG90aGVyIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgaW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uID0gbnVsbCkgewogICAgICBpZiAoIXJlYXNvbikgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibmVlZCB0byBzcGVjaWZ5IGEgcmVhc29uIHRoZSBJbnRlcnZhbCBpcyBpbnZhbGlkIik7CiAgICAgIH0KCiAgICAgIGNvbnN0IGludmFsaWQgPSByZWFzb24gaW5zdGFuY2VvZiBJbnZhbGlkID8gcmVhc29uIDogbmV3IEludmFsaWQocmVhc29uLCBleHBsYW5hdGlvbik7CgogICAgICBpZiAoU2V0dGluZ3MudGhyb3dPbkludmFsaWQpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEludGVydmFsRXJyb3IoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7IGludmFsaWQgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGFuIGVuZCBEYXRlVGltZS4gSW5jbHVzaXZlIG9mIHRoZSBzdGFydCBidXQgbm90IHRoZSBlbmQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBzdGFydAogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gZW5kCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21EYXRlVGltZXMoc3RhcnQsIGVuZCkgewogICAgICBjb25zdCBidWlsdFN0YXJ0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCksCiAgICAgICAgYnVpbHRFbmQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CgogICAgICBjb25zdCB2YWxpZGF0ZUVycm9yID0gdmFsaWRhdGVTdGFydEVuZChidWlsdFN0YXJ0LCBidWlsdEVuZCk7CgogICAgICBpZiAodmFsaWRhdGVFcnJvciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnRlcnZhbCh7CiAgICAgICAgICBzdGFydDogYnVpbHRTdGFydCwKICAgICAgICAgIGVuZDogYnVpbHRFbmQsCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlRXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGEgc3RhcnQgRGF0ZVRpbWUgYW5kIGEgRHVyYXRpb24gdG8gZXh0ZW5kIHRvLgogICAgICogQHBhcmFtIHtEYXRlVGltZXxEYXRlfE9iamVjdH0gc3RhcnQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYWZ0ZXIoc3RhcnQsIGR1cmF0aW9uKSB7CiAgICAgIGNvbnN0IGR1ciA9IER1cmF0aW9uLmZyb21EdXJhdGlvbkxpa2UoZHVyYXRpb24pLAogICAgICAgIGR0ID0gZnJpZW5kbHlEYXRlVGltZShzdGFydCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0LCBkdC5wbHVzKGR1cikpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIEludGVydmFsIGZyb20gYW4gZW5kIERhdGVUaW1lIGFuZCBhIER1cmF0aW9uIHRvIGV4dGVuZCBiYWNrd2FyZHMgdG8uCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfERhdGV8T2JqZWN0fSBlbmQKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSB0aGUgbGVuZ3RoIG9mIHRoZSBJbnRlcnZhbC4KICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICBzdGF0aWMgYmVmb3JlKGVuZCwgZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbiksCiAgICAgICAgZHQgPSBmcmllbmRseURhdGVUaW1lKGVuZCk7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0Lm1pbnVzKGR1ciksIGR0KTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBJbnRlcnZhbCBmcm9tIGFuIElTTyA4NjAxIHN0cmluZy4KICAgICAqIEFjY2VwdHMgYDxzdGFydD4vPGVuZD5gLCBgPHN0YXJ0Pi88ZHVyYXRpb24+YCwgYW5kIGA8ZHVyYXRpb24+LzxlbmQ+YCBmb3JtYXRzLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIG9wdGlvbnMgdG8gcGFzcyB7QGxpbmsgRGF0ZVRpbWUjZnJvbUlTT30gYW5kIG9wdGlvbmFsbHkge0BsaW5rIER1cmF0aW9uI2Zyb21JU099CiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcmV0dXJuIHtJbnRlcnZhbH0KICAgICAqLwogICAgc3RhdGljIGZyb21JU08odGV4dCwgb3B0cykgewogICAgICBjb25zdCBbcywgZV0gPSAodGV4dCB8fCAiIikuc3BsaXQoIi8iLCAyKTsKICAgICAgaWYgKHMgJiYgZSkgewogICAgICAgIGxldCBzdGFydCwgc3RhcnRJc1ZhbGlkOwogICAgICAgIHRyeSB7CiAgICAgICAgICBzdGFydCA9IERhdGVUaW1lLmZyb21JU08ocywgb3B0cyk7CiAgICAgICAgICBzdGFydElzVmFsaWQgPSBzdGFydC5pc1ZhbGlkOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIHN0YXJ0SXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgbGV0IGVuZCwgZW5kSXNWYWxpZDsKICAgICAgICB0cnkgewogICAgICAgICAgZW5kID0gRGF0ZVRpbWUuZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGVuZElzVmFsaWQgPSBlbmQuaXNWYWxpZDsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBlbmRJc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RhcnRJc1ZhbGlkICYmIGVuZElzVmFsaWQpIHsKICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBlbmQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0SXNWYWxpZCkgewogICAgICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUlTTyhlLCBvcHRzKTsKICAgICAgICAgIGlmIChkdXIuaXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gSW50ZXJ2YWwuYWZ0ZXIoc3RhcnQsIGR1cik7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChlbmRJc1ZhbGlkKSB7CiAgICAgICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tSVNPKHMsIG9wdHMpOwogICAgICAgICAgaWYgKGR1ci5pc1ZhbGlkKSB7CiAgICAgICAgICAgIHJldHVybiBJbnRlcnZhbC5iZWZvcmUoZW5kLCBkdXIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gSW50ZXJ2YWwuaW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyBJU08gODYwMWApOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIEludGVydmFsLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzSW50ZXJ2YWwobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uSW50ZXJ2YWwpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBzdGFydCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMucyA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlbmQgb2YgdGhlIEludGVydmFsCiAgICAgKiBAdHlwZSB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIGdldCBlbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmUgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBlbmQgaXMgYXQgbGVhc3QgaXRzIHN0YXJ0LCBtZWFuaW5nIHRoYXQgdGhlIEludGVydmFsIGlzbid0ICdiYWNrd2FyZHMnLgogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkUmVhc29uID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgSW50ZXJ2YWwgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgSW50ZXJ2YWwgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIEludGVydmFsIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBJbnRlcnZhbCBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIEludGVydmFsIGluIHRoZSBzcGVjaWZpZWQgdW5pdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0IC0gdGhlIHVuaXQgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIHJldHVybiB0aGUgbGVuZ3RoIGluLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBsZW5ndGgodW5pdCA9ICJtaWxsaXNlY29uZHMiKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvRHVyYXRpb24oLi4uW3VuaXRdKS5nZXQodW5pdCkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiBtaW51dGVzLCBob3VycywgZGF5cywgbW9udGhzLCBvciB5ZWFycyBpbmNsdWRlZCBpbiB0aGUgSW50ZXJ2YWwsIGV2ZW4gaW4gcGFydC4KICAgICAqIFVubGlrZSB7QGxpbmsgSW50ZXJ2YWwjbGVuZ3RofSB0aGlzIGNvdW50cyBzZWN0aW9ucyBvZiB0aGUgY2FsZW5kYXIsIG5vdCBwZXJpb2RzIG9mIHRpbWUsIGUuZy4gc3BlY2lmeWluZyAnZGF5JwogICAgICogYXNrcyAnd2hhdCBkYXRlcyBhcmUgaW5jbHVkZWQgaW4gdGhpcyBpbnRlcnZhbD8nLCBub3QgJ2hvdyBtYW55IGRheXMgbG9uZyBpcyB0aGlzIGludGVydmFsPycKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdW5pdD0nbWlsbGlzZWNvbmRzJ10gLSB0aGUgdW5pdCBvZiB0aW1lIHRvIGNvdW50LgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBjb3VudCh1bml0ID0gIm1pbGxpc2Vjb25kcyIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBOYU47CiAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydC5zdGFydE9mKHVuaXQpLAogICAgICAgIGVuZCA9IHRoaXMuZW5kLnN0YXJ0T2YodW5pdCk7CiAgICAgIHJldHVybiBNYXRoLmZsb29yKGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCkpICsgKGVuZC52YWx1ZU9mKCkgIT09IHRoaXMuZW5kLnZhbHVlT2YoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGhhc1NhbWUodW5pdCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5pc0VtcHR5KCkgfHwgdGhpcy5lLm1pbnVzKDEpLmhhc1NhbWUodGhpcy5zLCB1bml0KSA6IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBoYXMgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBEYXRlVGltZXMuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0VtcHR5KCkgewogICAgICByZXR1cm4gdGhpcy5zLnZhbHVlT2YoKSA9PT0gdGhpcy5lLnZhbHVlT2YoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwncyBzdGFydCBpcyBhZnRlciB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGlzQWZ0ZXIoZGF0ZVRpbWUpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBmYWxzZTsKICAgICAgcmV0dXJuIHRoaXMucyA+IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCBEYXRlVGltZS4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IGRhdGVUaW1lCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBpc0JlZm9yZShkYXRlVGltZSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5lIDw9IGRhdGVUaW1lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBjb250YWlucyB0aGUgc3BlY2lmaWVkIERhdGVUaW1lLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gZGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGNvbnRhaW5zKGRhdGVUaW1lKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gZGF0ZVRpbWUgJiYgdGhpcy5lID4gZGF0ZVRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0cyIgdGhlIHN0YXJ0IGFuZC9vciBlbmQgZGF0ZXMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSB0aGUgdmFsdWVzIHRvIHNldAogICAgICogQHBhcmFtIHtEYXRlVGltZX0gdmFsdWVzLnN0YXJ0IC0gdGhlIHN0YXJ0aW5nIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSB2YWx1ZXMuZW5kIC0gdGhlIGVuZGluZyBEYXRlVGltZQogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIHNldCh7IHN0YXJ0LCBlbmQgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gdGhpczsKICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMoc3RhcnQgfHwgdGhpcy5zLCBlbmQgfHwgdGhpcy5lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgYXQgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIERhdGVUaW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIHVuaXQgb2YgdGltZSB0byBjb3VudC4KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzcGxpdEF0KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIFtdOwogICAgICBjb25zdCBzb3J0ZWQgPSBkYXRlVGltZXMKICAgICAgICAgIC5tYXAoZnJpZW5kbHlEYXRlVGltZSkKICAgICAgICAgIC5maWx0ZXIoKGQpID0+IHRoaXMuY29udGFpbnMoZCkpCiAgICAgICAgICAuc29ydCgpLAogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpID0gMDsKCiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSBzb3J0ZWRbaV0gfHwgdGhpcy5lLAogICAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaSArPSAxOwogICAgICB9CgogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0IHRoaXMgSW50ZXJ2YWwgaW50byBzbWFsbGVyIEludGVydmFscywgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqIExlZnQgb3ZlciB0aW1lIGlzIGdyb3VwZWQgaW50byBhIHNtYWxsZXIgaW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7RHVyYXRpb258T2JqZWN0fG51bWJlcn0gZHVyYXRpb24gLSBUaGUgbGVuZ3RoIG9mIGVhY2ggcmVzdWx0aW5nIGludGVydmFsLgogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHNwbGl0QnkoZHVyYXRpb24pIHsKICAgICAgY29uc3QgZHVyID0gRHVyYXRpb24uZnJvbUR1cmF0aW9uTGlrZShkdXJhdGlvbik7CgogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCAhZHVyLmlzVmFsaWQgfHwgZHVyLmFzKCJtaWxsaXNlY29uZHMiKSA9PT0gMCkgewogICAgICAgIHJldHVybiBbXTsKICAgICAgfQoKICAgICAgbGV0IHsgcyB9ID0gdGhpcywKICAgICAgICBpZHggPSAxLAogICAgICAgIG5leHQ7CgogICAgICBjb25zdCByZXN1bHRzID0gW107CiAgICAgIHdoaWxlIChzIDwgdGhpcy5lKSB7CiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0YXJ0LnBsdXMoZHVyLm1hcFVuaXRzKCh4KSA9PiB4ICogaWR4KSk7CiAgICAgICAgbmV4dCA9ICthZGRlZCA+ICt0aGlzLmUgPyB0aGlzLmUgOiBhZGRlZDsKICAgICAgICByZXN1bHRzLnB1c2goSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhzLCBuZXh0KSk7CiAgICAgICAgcyA9IG5leHQ7CiAgICAgICAgaWR4ICs9IDE7CiAgICAgIH0KCiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogU3BsaXQgdGhpcyBJbnRlcnZhbCBpbnRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHNtYWxsZXIgaW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlck9mUGFydHMgLSBUaGUgbnVtYmVyIG9mIEludGVydmFscyB0byBkaXZpZGUgdGhlIEludGVydmFsIGludG8uCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgZGl2aWRlRXF1YWxseShudW1iZXJPZlBhcnRzKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gW107CiAgICAgIHJldHVybiB0aGlzLnNwbGl0QnkodGhpcy5sZW5ndGgoKSAvIG51bWJlck9mUGFydHMpLnNsaWNlKDAsIG51bWJlck9mUGFydHMpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCBvdmVybGFwcyB3aXRoIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwKICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBvdmVybGFwcyhvdGhlcikgewogICAgICByZXR1cm4gdGhpcy5lID4gb3RoZXIucyAmJiB0aGlzLnMgPCBvdGhlci5lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHdoZXRoZXIgdGhpcyBJbnRlcnZhbCdzIGVuZCBpcyBhZGphY2VudCB0byB0aGUgc3BlY2lmaWVkIEludGVydmFsJ3Mgc3RhcnQuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgYWJ1dHNTdGFydChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK3RoaXMuZSA9PT0gK290aGVyLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsJ3Mgc3RhcnQgaXMgYWRqYWNlbnQgdG8gdGhlIHNwZWNpZmllZCBJbnRlcnZhbCdzIGVuZC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBhYnV0c0VuZChvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gK290aGVyLmUgPT09ICt0aGlzLnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGlzIEludGVydmFsIGVuZ3VsZnMgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlbmd1bGZzKG90aGVyKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0aGlzLnMgPD0gb3RoZXIucyAmJiB0aGlzLmUgPj0gb3RoZXIuZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgSW50ZXJ2YWwgaGFzIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgYXMgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIEBwYXJhbSB7SW50ZXJ2YWx9IG90aGVyCiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLnMuZXF1YWxzKG90aGVyLnMpICYmIHRoaXMuZS5lcXVhbHMob3RoZXIuZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhpcyBJbnRlcnZhbCBhbmQgdGhlIHNwZWNpZmllZCBJbnRlcnZhbC4KICAgICAqIFNwZWNpZmljYWxseSwgdGhlIHJlc3VsdGluZyBJbnRlcnZhbCBoYXMgdGhlIG1heGltdW0gc3RhcnQgdGltZSBhbmQgdGhlIG1pbmltdW0gZW5kIHRpbWUgb2YgdGhlIHR3byBJbnRlcnZhbHMuCiAgICAgKiBSZXR1cm5zIG51bGwgaWYgdGhlIGludGVyc2VjdGlvbiBpcyBlbXB0eSwgbWVhbmluZywgdGhlIGludGVydmFscyBkb24ndCBpbnRlcnNlY3QuCiAgICAgKiBAcGFyYW0ge0ludGVydmFsfSBvdGhlcgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKi8KICAgIGludGVyc2VjdGlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPiBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lIDwgb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CgogICAgICBpZiAocyA+PSBlKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEludGVydmFsLmZyb21EYXRlVGltZXMocywgZSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnRlcnZhbCByZXByZXNlbnRpbmcgdGhlIHVuaW9uIG9mIHRoaXMgSW50ZXJ2YWwgYW5kIHRoZSBzcGVjaWZpZWQgSW50ZXJ2YWwuCiAgICAgKiBTcGVjaWZpY2FsbHksIHRoZSByZXN1bHRpbmcgSW50ZXJ2YWwgaGFzIHRoZSBtaW5pbXVtIHN0YXJ0IHRpbWUgYW5kIHRoZSBtYXhpbXVtIGVuZCB0aW1lIG9mIHRoZSB0d28gSW50ZXJ2YWxzLgogICAgICogQHBhcmFtIHtJbnRlcnZhbH0gb3RoZXIKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bmlvbihvdGhlcikgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IHMgPSB0aGlzLnMgPCBvdGhlci5zID8gdGhpcy5zIDogb3RoZXIucywKICAgICAgICBlID0gdGhpcy5lID4gb3RoZXIuZSA/IHRoaXMuZSA6IG90aGVyLmU7CiAgICAgIHJldHVybiBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHMsIGUpOwogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2UgYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIGludG8gYSBlcXVpdmFsZW50IG1pbmltYWwgc2V0IG9mIEludGVydmFscy4KICAgICAqIENvbWJpbmVzIG92ZXJsYXBwaW5nIGFuZCBhZGphY2VudCBJbnRlcnZhbHMuCiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbnRlcnZhbHMKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbWVyZ2UoaW50ZXJ2YWxzKSB7CiAgICAgIGNvbnN0IFtmb3VuZCwgZmluYWxdID0gaW50ZXJ2YWxzCiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEucyAtIGIucykKICAgICAgICAucmVkdWNlKAogICAgICAgICAgKFtzb2ZhciwgY3VycmVudF0sIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtzb2ZhciwgaXRlbV07CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudC5vdmVybGFwcyhpdGVtKSB8fCBjdXJyZW50LmFidXRzU3RhcnQoaXRlbSkpIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLCBjdXJyZW50LnVuaW9uKGl0ZW0pXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gW3NvZmFyLmNvbmNhdChbY3VycmVudF0pLCBpdGVtXTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFtbXSwgbnVsbF0KICAgICAgICApOwogICAgICBpZiAoZmluYWwpIHsKICAgICAgICBmb3VuZC5wdXNoKGZpbmFsKTsKICAgICAgfQogICAgICByZXR1cm4gZm91bmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgSW50ZXJ2YWxzIHJlcHJlc2VudGluZyB0aGUgc3BhbnMgb2YgdGltZSB0aGF0IG9ubHkgYXBwZWFyIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7QXJyYXl9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIHN0YXRpYyB4b3IoaW50ZXJ2YWxzKSB7CiAgICAgIGxldCBzdGFydCA9IG51bGwsCiAgICAgICAgY3VycmVudENvdW50ID0gMDsKICAgICAgY29uc3QgcmVzdWx0cyA9IFtdLAogICAgICAgIGVuZHMgPSBpbnRlcnZhbHMubWFwKChpKSA9PiBbCiAgICAgICAgICB7IHRpbWU6IGkucywgdHlwZTogInMiIH0sCiAgICAgICAgICB7IHRpbWU6IGkuZSwgdHlwZTogImUiIH0sCiAgICAgICAgXSksCiAgICAgICAgZmxhdHRlbmVkID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi5lbmRzKSwKICAgICAgICBhcnIgPSBmbGF0dGVuZWQuc29ydCgoYSwgYikgPT4gYS50aW1lIC0gYi50aW1lKTsKCiAgICAgIGZvciAoY29uc3QgaSBvZiBhcnIpIHsKICAgICAgICBjdXJyZW50Q291bnQgKz0gaS50eXBlID09PSAicyIgPyAxIDogLTE7CgogICAgICAgIGlmIChjdXJyZW50Q291bnQgPT09IDEpIHsKICAgICAgICAgIHN0YXJ0ID0gaS50aW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoc3RhcnQgJiYgK3N0YXJ0ICE9PSAraS50aW1lKSB7CiAgICAgICAgICAgIHJlc3VsdHMucHVzaChJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHN0YXJ0LCBpLnRpbWUpKTsKICAgICAgICAgIH0KCiAgICAgICAgICBzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICB9CgogICAgICByZXR1cm4gSW50ZXJ2YWwubWVyZ2UocmVzdWx0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgcmVwcmVzZW50aW5nIHRoZSBzcGFuIG9mIHRpbWUgaW4gdGhpcyBJbnRlcnZhbCB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgc3BlY2lmaWVkIEludGVydmFscy4KICAgICAqIEBwYXJhbSB7Li4uSW50ZXJ2YWx9IGludGVydmFscwogICAgICogQHJldHVybiB7QXJyYXl9CiAgICAgKi8KICAgIGRpZmZlcmVuY2UoLi4uaW50ZXJ2YWxzKSB7CiAgICAgIHJldHVybiBJbnRlcnZhbC54b3IoW3RoaXNdLmNvbmNhdChpbnRlcnZhbHMpKQogICAgICAgIC5tYXAoKGkpID0+IHRoaXMuaW50ZXJzZWN0aW9uKGkpKQogICAgICAgIC5maWx0ZXIoKGkpID0+IGkgJiYgIWkuaXNFbXB0eSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBJbnRlcnZhbCBhcHByb3ByaWF0ZSBmb3IgZGVidWdnaW5nLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1N0cmluZygpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBJTlZBTElEJDE7CiAgICAgIHJldHVybiBgWyR7dGhpcy5zLnRvSVNPKCl9IOKAkyAke3RoaXMuZS50b0lTTygpfSlgOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgSW50ZXJ2YWwuIEFjY2VwdHMgdGhlIHNhbWUgb3B0aW9ucyBhcyB0aGUKICAgICAqIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMKICAgICAqIHtAbGluayBEYXRlVGltZS5EQVRFX0ZVTEx9IG9yIHtAbGluayBEYXRlVGltZS5USU1FX1NJTVBMRX0uIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZAogICAgICogaXMgYnJvd3Nlci1zcGVjaWZpYywgYnV0IGluIGdlbmVyYWwgaXQgd2lsbCByZXR1cm4gYW4gYXBwcm9wcmlhdGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCiAgICAgKiBJbnRlcnZhbCBpbiB0aGUgYXNzaWduZWQgbG9jYWxlLiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbgogICAgICogc3BlY2lmaWVkLgogICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlVGltZUZvcm1hdAogICAgICogQHBhcmFtIHtPYmplY3R9IFtmb3JtYXRPcHRzPURhdGVUaW1lLkRBVEVfU0hPUlRdIC0gRWl0aGVyIGEgRGF0ZVRpbWUgcHJlc2V0IG9yCiAgICAgKiBJbnRsLkRhdGVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yIG9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHN0YXJ0IERhdGVUaW1lLgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZygpOyAvLz0+IDExLzcvMjAyMiDigJMgMTEvOC8yMDIyCiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tSVNPKCcyMDIyLTExLTA3VDA5OjAwWi8yMDIyLTExLTA4VDA5OjAwWicpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gTm92ZW1iZXIgNyDigJMgOCwgMjAyMgogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbUlTTygnMjAyMi0xMS0wN1QwOTowMFovMjAyMi0xMS0wOFQwOTowMFonKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX0ZVTEwsIHsgbG9jYWxlOiAnZnItRlInIH0pOyAvLz0+IDfigJM4IG5vdmVtYnJlIDIwMjIKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuVElNRV9TSU1QTEUpOyAvLz0+IDY6MDAg4oCTIDg6MDAgUE0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21JU08oJzIwMjItMTEtMDdUMTc6MDBaLzIwMjItMTEtMDdUMTk6MDBaJykudG9Mb2NhbGVTdHJpbmcoeyB3ZWVrZGF5OiAnc2hvcnQnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnMi1kaWdpdCcsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSk7IC8vPT4gTW9uLCBOb3YgMDcsIDY6MDAg4oCTIDg6MDAgcAogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5zLmxvYy5jbG9uZShvcHRzKSwgZm9ybWF0T3B0cykuZm9ybWF0SW50ZXJ2YWwodGhpcykKICAgICAgICA6IElOVkFMSUQkMTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBUaGUgc2FtZSBvcHRpb25zIGFzIHtAbGluayBEYXRlVGltZSN0b0lTT30KICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08ob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTTyhvcHRzKX0vJHt0aGlzLmUudG9JU08ob3B0cyl9YDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEtY29tcGxpYW50IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBkYXRlIG9mIHRoaXMgSW50ZXJ2YWwuCiAgICAgKiBUaGUgdGltZSBjb21wb25lbnRzIGFyZSBpZ25vcmVkLgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNUaW1lX2ludGVydmFscwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoKSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvSVNPRGF0ZSgpfS8ke3RoaXMuZS50b0lTT0RhdGUoKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgb2YgdGhpcyBJbnRlcnZhbC4KICAgICAqIFRoZSBkYXRlIGNvbXBvbmVudHMgYXJlIGlnbm9yZWQuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT184NjAxI1RpbWVfaW50ZXJ2YWxzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFRoZSBzYW1lIG9wdGlvbnMgYXMge0BsaW5rIERhdGVUaW1lI3RvSVNPfQogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT1RpbWUob3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIElOVkFMSUQkMTsKICAgICAgcmV0dXJuIGAke3RoaXMucy50b0lTT1RpbWUob3B0cyl9LyR7dGhpcy5lLnRvSVNPVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEludGVydmFsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBmb3JtYXQKICAgICAqIHN0cmluZy4gKipZb3UgbWF5IG5vdCB3YW50IHRoaXMuKiogU2VlIHtAbGluayBJbnRlcnZhbCN0b0xvY2FsZVN0cmluZ30gZm9yIGEgbW9yZSBmbGV4aWJsZQogICAgICogZm9ybWF0dGluZyB0b29sLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGVGb3JtYXQgLSBUaGUgZm9ybWF0IHN0cmluZy4gVGhpcyBzdHJpbmcgZm9ybWF0cyB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lLgogICAgICogU2VlIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0gZm9yIGRldGFpbHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIE9wdGlvbnMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuc2VwYXJhdG9yID0gICcg4oCTICddIC0gQSBzZXBhcmF0b3IgdG8gcGxhY2UgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICogcmVwcmVzZW50YXRpb25zLgogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0Zvcm1hdChkYXRlRm9ybWF0LCB7IHNlcGFyYXRvciA9ICIg4oCTICIgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gSU5WQUxJRCQxOwogICAgICByZXR1cm4gYCR7dGhpcy5zLnRvRm9ybWF0KGRhdGVGb3JtYXQpfSR7c2VwYXJhdG9yfSR7dGhpcy5lLnRvRm9ybWF0KGRhdGVGb3JtYXQpfWA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBEdXJhdGlvbiByZXByZXNlbnRpbmcgdGhlIHRpbWUgc3Bhbm5lZCBieSB0aGlzIGludGVydmFsLgogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbigpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogODg0ODkyNTcgfQogICAgICogQGV4YW1wbGUgSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhkdDEsIGR0MikudG9EdXJhdGlvbignZGF5cycpLnRvT2JqZWN0KCkgLy89PiB7IGRheXM6IDEuMDI0MTgxMjE1Mjc3Nzc3OCB9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS50b0R1cmF0aW9uKFsnaG91cnMnLCAnbWludXRlcyddKS50b09iamVjdCgpIC8vPT4geyBob3VyczogMjQsIG1pbnV0ZXM6IDM0LjgyMDk1IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oWydob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnXSkudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDI0LCBtaW51dGVzOiAzNCwgc2Vjb25kczogNDkuMjU3IH0KICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLnRvRHVyYXRpb24oJ3NlY29uZHMnKS50b09iamVjdCgpIC8vPT4geyBzZWNvbmRzOiA4ODQ4OS4yNTcgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIHRvRHVyYXRpb24odW5pdCwgb3B0cykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKHRoaXMuaW52YWxpZFJlYXNvbik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuZS5kaWZmKHRoaXMucywgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW4gbWFwRm4gb24gdGhlIGludGVydmFsIHN0YXJ0IGFuZCBlbmQsIHJldHVybmluZyBhIG5ldyBJbnRlcnZhbCBmcm9tIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWVzCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtYXBGbgogICAgICogQHJldHVybiB7SW50ZXJ2YWx9CiAgICAgKiBAZXhhbXBsZSBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKGR0MSwgZHQyKS5tYXBFbmRwb2ludHMoZW5kcG9pbnQgPT4gZW5kcG9pbnQudG9VVEMoKSkKICAgICAqIEBleGFtcGxlIEludGVydmFsLmZyb21EYXRlVGltZXMoZHQxLCBkdDIpLm1hcEVuZHBvaW50cyhlbmRwb2ludCA9PiBlbmRwb2ludC5wbHVzKHsgaG91cnM6IDIgfSkpCiAgICAgKi8KICAgIG1hcEVuZHBvaW50cyhtYXBGbikgewogICAgICByZXR1cm4gSW50ZXJ2YWwuZnJvbURhdGVUaW1lcyhtYXBGbih0aGlzLnMpLCBtYXBGbih0aGlzLmUpKTsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSBJbmZvIGNsYXNzIGNvbnRhaW5zIHN0YXRpYyBtZXRob2RzIGZvciByZXRyaWV2aW5nIGdlbmVyYWwgdGltZSBhbmQgZGF0ZSByZWxhdGVkIGRhdGEuIEZvciBleGFtcGxlLCBpdCBoYXMgbWV0aG9kcyBmb3IgZmluZGluZyBvdXQgaWYgYSB0aW1lIHpvbmUgaGFzIGEgRFNULCBmb3IgbGlzdGluZyB0aGUgbW9udGhzIGluIGFueSBzdXBwb3J0ZWQgbG9jYWxlLCBhbmQgZm9yIGRpc2NvdmVyaW5nIHdoaWNoIG9mIEx1eG9uIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuCiAgICovCiAgY2xhc3MgSW5mbyB7CiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgem9uZSBjb250YWlucyBhIERTVC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gWm9uZSB0byBjaGVjay4gRGVmYXVsdHMgdG8gdGhlIGVudmlyb25tZW50J3MgbG9jYWwgem9uZS4KICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIHN0YXRpYyBoYXNEU1Qoem9uZSA9IFNldHRpbmdzLmRlZmF1bHRab25lKSB7CiAgICAgIGNvbnN0IHByb3RvID0gRGF0ZVRpbWUubm93KCkuc2V0Wm9uZSh6b25lKS5zZXQoeyBtb250aDogMTIgfSk7CgogICAgICByZXR1cm4gIXpvbmUuaXNVbml2ZXJzYWwgJiYgcHJvdG8ub2Zmc2V0ICE9PSBwcm90by5zZXQoeyBtb250aDogNiB9KS5vZmZzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc3BlY2lmaWVkIHpvbmUgaXMgYSB2YWxpZCBJQU5BIHNwZWNpZmllci4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6b25lIC0gWm9uZSB0byBjaGVjawogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzVmFsaWRJQU5BWm9uZSh6b25lKSB7CiAgICAgIHJldHVybiBJQU5BWm9uZS5pc1ZhbGlkWm9uZSh6b25lKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBpbnB1dCBpbnRvIGEge0BsaW5rIFpvbmV9IGluc3RhbmNlLgogICAgICoKICAgICAqICogSWYgYGlucHV0YCBpcyBhbHJlYWR5IGEgWm9uZSBpbnN0YW5jZSwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCB0aW1lIHpvbmUgbmFtZSwgYSBab25lIGluc3RhbmNlCiAgICAgKiAgIHdpdGggdGhhdCBuYW1lIGlzIHJldHVybmVkLgogICAgICogKiBJZiBgaW5wdXRgIGlzIGEgc3RyaW5nIHRoYXQgZG9lc24ndCByZWZlciB0byBhIGtub3duIHRpbWUgem9uZSwgYSBab25lCiAgICAgKiAgIGluc3RhbmNlIHdpdGgge0BsaW5rIFpvbmUjaXNWYWxpZH0gPT0gZmFsc2UgaXMgcmV0dXJuZWQuCiAgICAgKiAqIElmIGBpbnB1dCBpcyBhIG51bWJlciwgYSBab25lIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBmaXhlZCBvZmZzZXQKICAgICAqICAgaW4gbWludXRlcyBpcyByZXR1cm5lZC4KICAgICAqICogSWYgYGlucHV0YCBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIHRoZSBkZWZhdWx0IHpvbmUgaXMgcmV0dXJuZWQuCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfG51bWJlcn0gW2lucHV0XSAtIHRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge1pvbmV9CiAgICAgKi8KICAgIHN0YXRpYyBub3JtYWxpemVab25lKGlucHV0KSB7CiAgICAgIHJldHVybiBub3JtYWxpemVab25lKGlucHV0LCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2Ygc3RhbmRhbG9uZSBtb250aCBuYW1lcy4KICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdsb25nJ10gLSB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aCByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibnVtZXJpYyIsICIyLWRpZ2l0IiwgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcj0nZ3JlZ29yeSddIC0gdGhlIGNhbGVuZGFyCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygpWzBdIC8vPT4gJ0phbnVhcnknCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnKVswXSAvLz0+ICdKYW4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycpWzBdIC8vPT4gJzEnCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnc2hvcnQnLCB7IGxvY2FsZTogJ2ZyLUNBJyB9IClbMF0gLy89PiAnamFudi4nCiAgICAgKiBAZXhhbXBsZSBJbmZvLm1vbnRocygnbnVtZXJpYycsIHsgbG9jYWxlOiAnYXInIH0pWzBdIC8vPT4gJ9mhJwogICAgICogQGV4YW1wbGUgSW5mby5tb250aHMoJ2xvbmcnLCB7IG91dHB1dENhbGVuZGFyOiAnaXNsYW1pYycgfSlbMF0gLy89PiAnUmFiacq7IEknCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1vbnRocygKICAgICAgbGVuZ3RoID0gImxvbmciLAogICAgICB7IGxvY2FsZSA9IG51bGwsIG51bWJlcmluZ1N5c3RlbSA9IG51bGwsIGxvY09iaiA9IG51bGwsIG91dHB1dENhbGVuZGFyID0gImdyZWdvcnkiIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyKSkubW9udGhzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZm9ybWF0IG1vbnRoIG5hbWVzLgogICAgICogRm9ybWF0IG1vbnRocyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIG1vbnRocyBpbiB0aGF0IHRoZXkncmUgbWVhbnQgdG8gYXBwZWFyIG5leHQgdG8gdGhlIGRheSBvZiB0aGUgbW9udGguIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jbW9udGhzfQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtsZW5ndGg9J2xvbmcnXSAtIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJudW1lcmljIiwgIjItZGlnaXQiLCAibmFycm93IiwgInNob3J0IiwgImxvbmciCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGVdIC0gdGhlIGxvY2FsZSBjb2RlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtPW51bGxdIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NPYmo9bnVsbF0gLSBhbiBleGlzdGluZyBsb2NhbGUgb2JqZWN0IHRvIHVzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm91dHB1dENhbGVuZGFyPSdncmVnb3J5J10gLSB0aGUgY2FsZW5kYXIKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgbW9udGhzRm9ybWF0KAogICAgICBsZW5ndGggPSAibG9uZyIsCiAgICAgIHsgbG9jYWxlID0gbnVsbCwgbnVtYmVyaW5nU3lzdGVtID0gbnVsbCwgbG9jT2JqID0gbnVsbCwgb3V0cHV0Q2FsZW5kYXIgPSAiZ3JlZ29yeSIgfSA9IHt9CiAgICApIHsKICAgICAgcmV0dXJuIChsb2NPYmogfHwgTG9jYWxlLmNyZWF0ZShsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIpKS5tb250aHMobGVuZ3RoLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBzdGFuZGFsb25lIHdlZWsgbmFtZXMuCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgd2Vla2RheSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcyAibmFycm93IiwgInNob3J0IiwgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoKVswXSAvLz0+ICdNb25kYXknCiAgICAgKiBAZXhhbXBsZSBJbmZvLndlZWtkYXlzKCdzaG9ydCcpWzBdIC8vPT4gJ01vbicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdmci1DQScgfSlbMF0gLy89PiAnbHVuLicKICAgICAqIEBleGFtcGxlIEluZm8ud2Vla2RheXMoJ3Nob3J0JywgeyBsb2NhbGU6ICdhcicgfSlbMF0gLy89PiAn2KfZhNin2KvZhtmK2YYnCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIHdlZWtkYXlzKGxlbmd0aCA9ICJsb25nIiwgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fSkgewogICAgICByZXR1cm4gKGxvY09iaiB8fCBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBudWxsKSkud2Vla2RheXMobGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBhcnJheSBvZiBmb3JtYXQgd2VlayBuYW1lcy4KICAgICAqIEZvcm1hdCB3ZWVrZGF5cyBkaWZmZXIgZnJvbSBzdGFuZGFsb25lIHdlZWtkYXlzIGluIHRoYXQgdGhleSdyZSBtZWFudCB0byBhcHBlYXIgbmV4dCB0byBtb3JlIGRhdGUgaW5mb3JtYXRpb24uIEluIHNvbWUgbGFuZ3VhZ2VzLCB0aGF0CiAgICAgKiBjaGFuZ2VzIHRoZSBzdHJpbmcuCiAgICAgKiBTZWUge0BsaW5rIEluZm8jd2Vla2RheXN9CiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xlbmd0aD0nbG9uZyddIC0gdGhlIGxlbmd0aCBvZiB0aGUgbW9udGggcmVwcmVzZW50YXRpb24sIHN1Y2ggYXMgIm5hcnJvdyIsICJzaG9ydCIsICJsb25nIi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT1udWxsXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLm51bWJlcmluZ1N5c3RlbT1udWxsXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jT2JqPW51bGxdIC0gYW4gZXhpc3RpbmcgbG9jYWxlIG9iamVjdCB0byB1c2UKICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgd2Vla2RheXNGb3JtYXQoCiAgICAgIGxlbmd0aCA9ICJsb25nIiwKICAgICAgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsLCBsb2NPYmogPSBudWxsIH0gPSB7fQogICAgKSB7CiAgICAgIHJldHVybiAobG9jT2JqIHx8IExvY2FsZS5jcmVhdGUobG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG51bGwpKS53ZWVrZGF5cyhsZW5ndGgsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGFycmF5IG9mIG1lcmlkaWVtcy4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZV0gLSB0aGUgbG9jYWxlIGNvZGUKICAgICAqIEBleGFtcGxlIEluZm8ubWVyaWRpZW1zKCkgLy89PiBbICdBTScsICdQTScgXQogICAgICogQGV4YW1wbGUgSW5mby5tZXJpZGllbXMoeyBsb2NhbGU6ICdteScgfSkgLy89PiBbICfhgJThgLbhgJThgIDhgLonLCAn4YCK4YCU4YCxJyBdCiAgICAgKiBAcmV0dXJuIHtBcnJheX0KICAgICAqLwogICAgc3RhdGljIG1lcmlkaWVtcyh7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSkubWVyaWRpZW1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgZXJhcywgc3VjaCBhcyBbJ0JDJywgJ0FEJ10uIFRoZSBsb2NhbGUgY2FuIGJlIHNwZWNpZmllZCwgYnV0IHRoZSBjYWxlbmRhciBzeXN0ZW0gaXMgYWx3YXlzIEdyZWdvcmlhbi4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGVuZ3RoPSdzaG9ydCddIC0gdGhlIGxlbmd0aCBvZiB0aGUgZXJhIHJlcHJlc2VudGF0aW9uLCBzdWNoIGFzICJzaG9ydCIgb3IgImxvbmciLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlXSAtIHRoZSBsb2NhbGUgY29kZQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCkgLy89PiBbICdCQycsICdBRCcgXQogICAgICogQGV4YW1wbGUgSW5mby5lcmFzKCdsb25nJykgLy89PiBbICdCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJyBdCiAgICAgKiBAZXhhbXBsZSBJbmZvLmVyYXMoJ2xvbmcnLCB7IGxvY2FsZTogJ2ZyJyB9KSAvLz0+IFsgJ2F2YW50IErDqXN1cy1DaHJpc3QnLCAnYXByw6hzIErDqXN1cy1DaHJpc3QnIF0KICAgICAqIEByZXR1cm4ge0FycmF5fQogICAgICovCiAgICBzdGF0aWMgZXJhcyhsZW5ndGggPSAic2hvcnQiLCB7IGxvY2FsZSA9IG51bGwgfSA9IHt9KSB7CiAgICAgIHJldHVybiBMb2NhbGUuY3JlYXRlKGxvY2FsZSwgbnVsbCwgImdyZWdvcnkiKS5lcmFzKGxlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW4gdGhpcyBlbnZpcm9ubWVudC4KICAgICAqIFNvbWUgZmVhdHVyZXMgb2YgTHV4b24gYXJlIG5vdCBhdmFpbGFibGUgaW4gYWxsIGVudmlyb25tZW50cy4gRm9yIGV4YW1wbGUsIG9uIG9sZGVyIGJyb3dzZXJzLCByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlLiBVc2UgdGhpcyBmdW5jdGlvbiB0byBmaWd1cmUgb3V0IGlmIHRoYXQncyB0aGUgY2FzZS4KICAgICAqIEtleXM6CiAgICAgKiAqIGByZWxhdGl2ZWA6IHdoZXRoZXIgdGhpcyBlbnZpcm9ubWVudCBzdXBwb3J0cyByZWxhdGl2ZSB0aW1lIGZvcm1hdHRpbmcKICAgICAqIEBleGFtcGxlIEluZm8uZmVhdHVyZXMoKSAvLz0+IHsgcmVsYXRpdmU6IGZhbHNlIH0KICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGZlYXR1cmVzKCkgewogICAgICByZXR1cm4geyByZWxhdGl2ZTogaGFzUmVsYXRpdmUoKSB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF5RGlmZihlYXJsaWVyLCBsYXRlcikgewogICAgY29uc3QgdXRjRGF5U3RhcnQgPSAoZHQpID0+IGR0LnRvVVRDKDAsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksCiAgICAgIG1zID0gdXRjRGF5U3RhcnQobGF0ZXIpIC0gdXRjRGF5U3RhcnQoZWFybGllcik7CiAgICByZXR1cm4gTWF0aC5mbG9vcihEdXJhdGlvbi5mcm9tTWlsbGlzKG1zKS5hcygiZGF5cyIpKTsKICB9CgogIGZ1bmN0aW9uIGhpZ2hPcmRlckRpZmZzKGN1cnNvciwgbGF0ZXIsIHVuaXRzKSB7CiAgICBjb25zdCBkaWZmZXJzID0gWwogICAgICBbInllYXJzIiwgKGEsIGIpID0+IGIueWVhciAtIGEueWVhcl0sCiAgICAgIFsicXVhcnRlcnMiLCAoYSwgYikgPT4gYi5xdWFydGVyIC0gYS5xdWFydGVyICsgKGIueWVhciAtIGEueWVhcikgKiA0XSwKICAgICAgWyJtb250aHMiLCAoYSwgYikgPT4gYi5tb250aCAtIGEubW9udGggKyAoYi55ZWFyIC0gYS55ZWFyKSAqIDEyXSwKICAgICAgWwogICAgICAgICJ3ZWVrcyIsCiAgICAgICAgKGEsIGIpID0+IHsKICAgICAgICAgIGNvbnN0IGRheXMgPSBkYXlEaWZmKGEsIGIpOwogICAgICAgICAgcmV0dXJuIChkYXlzIC0gKGRheXMgJSA3KSkgLyA3OwogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIFsiZGF5cyIsIGRheURpZmZdLAogICAgXTsKCiAgICBjb25zdCByZXN1bHRzID0ge307CiAgICBjb25zdCBlYXJsaWVyID0gY3Vyc29yOwogICAgbGV0IGxvd2VzdE9yZGVyLCBoaWdoV2F0ZXI7CgogICAgLyogVGhpcyBsb29wIHRyaWVzIHRvIGRpZmYgdXNpbmcgbGFyZ2VyIHVuaXRzIGZpcnN0LgogICAgICAgSWYgd2Ugb3ZlcnNob290LCB3ZSBiYWNrdHJhY2sgYW5kIHRyeSB0aGUgbmV4dCBzbWFsbGVyIHVuaXQuCiAgICAgICAiY3Vyc29yIiBzdGFydHMgb3V0IGF0IHRoZSBlYXJsaWVyIHRpbWVzdGFtcCBhbmQgbW92ZXMgY2xvc2VyIGFuZCBjbG9zZXIgdG8gImxhdGVyIgogICAgICAgYXMgd2UgdXNlIHNtYWxsZXIgYW5kIHNtYWxsZXIgdW5pdHMuCiAgICAgICBoaWdoV2F0ZXIga2VlcHMgdHJhY2sgb2Ygd2hlcmUgd2Ugd291bGQgYmUgaWYgd2UgYWRkZWQgb25lIG1vcmUgb2YgdGhlIHNtYWxsZXN0IHVuaXQsCiAgICAgICB0aGlzIGlzIHVzZWQgbGF0ZXIgdG8gcG90ZW50aWFsbHkgY29udmVydCBhbnkgZGlmZmVyZW5jZSBzbWFsbGVyIHRoYW4gdGhlIHNtYWxsZXN0IGhpZ2hlciBvcmRlciB1bml0CiAgICAgICBpbnRvIGEgZnJhY3Rpb24gb2YgdGhhdCBzbWFsbGVzdCBoaWdoZXIgb3JkZXIgdW5pdAogICAgKi8KICAgIGZvciAoY29uc3QgW3VuaXQsIGRpZmZlcl0gb2YgZGlmZmVycykgewogICAgICBpZiAodW5pdHMuaW5kZXhPZih1bml0KSA+PSAwKSB7CiAgICAgICAgbG93ZXN0T3JkZXIgPSB1bml0OwoKICAgICAgICByZXN1bHRzW3VuaXRdID0gZGlmZmVyKGN1cnNvciwgbGF0ZXIpOwogICAgICAgIGhpZ2hXYXRlciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgaWYgKGhpZ2hXYXRlciA+IGxhdGVyKSB7CiAgICAgICAgICAvLyB3ZSBvdmVyc2hvdCB0aGUgZW5kIHBvaW50LCBiYWNrdHJhY2sgY3Vyc29yIGJ5IDEKICAgICAgICAgIHJlc3VsdHNbdW5pdF0tLTsKICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKCiAgICAgICAgICAvLyBpZiB3ZSBhcmUgc3RpbGwgb3ZlcnNob290aW5nIG5vdywgd2UgbmVlZCB0byBiYWNrdHJhY2sgYWdhaW4KICAgICAgICAgIC8vIHRoaXMgaGFwcGVucyBpbiBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlbiBkaWZmaW5nIHRpbWVzIGluIGRpZmZlcmVudCB6b25lcywKICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBjYWxjdWxhdGlvbiBpZ25vcmVzIHRpbWUgem9uZXMKICAgICAgICAgIGlmIChjdXJzb3IgPiBsYXRlcikgewogICAgICAgICAgICAvLyBrZWVwIHRoZSAib3ZlcnNob3QgYnkgMSIgYXJvdW5kIGFzIGhpZ2hXYXRlcgogICAgICAgICAgICBoaWdoV2F0ZXIgPSBjdXJzb3I7CiAgICAgICAgICAgIC8vIGJhY2t0cmFjayBjdXJzb3IgYnkgMQogICAgICAgICAgICByZXN1bHRzW3VuaXRdLS07CiAgICAgICAgICAgIGN1cnNvciA9IGVhcmxpZXIucGx1cyhyZXN1bHRzKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3Vyc29yID0gaGlnaFdhdGVyOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBbY3Vyc29yLCByZXN1bHRzLCBoaWdoV2F0ZXIsIGxvd2VzdE9yZGVyXTsKICB9CgogIGZ1bmN0aW9uIGRpZmYgKGVhcmxpZXIsIGxhdGVyLCB1bml0cywgb3B0cykgewogICAgbGV0IFtjdXJzb3IsIHJlc3VsdHMsIGhpZ2hXYXRlciwgbG93ZXN0T3JkZXJdID0gaGlnaE9yZGVyRGlmZnMoZWFybGllciwgbGF0ZXIsIHVuaXRzKTsKCiAgICBjb25zdCByZW1haW5pbmdNaWxsaXMgPSBsYXRlciAtIGN1cnNvcjsKCiAgICBjb25zdCBsb3dlck9yZGVyVW5pdHMgPSB1bml0cy5maWx0ZXIoCiAgICAgICh1KSA9PiBbImhvdXJzIiwgIm1pbnV0ZXMiLCAic2Vjb25kcyIsICJtaWxsaXNlY29uZHMiXS5pbmRleE9mKHUpID49IDAKICAgICk7CgogICAgaWYgKGxvd2VyT3JkZXJVbml0cy5sZW5ndGggPT09IDApIHsKICAgICAgaWYgKGhpZ2hXYXRlciA8IGxhdGVyKSB7CiAgICAgICAgaGlnaFdhdGVyID0gY3Vyc29yLnBsdXMoeyBbbG93ZXN0T3JkZXJdOiAxIH0pOwogICAgICB9CgogICAgICBpZiAoaGlnaFdhdGVyICE9PSBjdXJzb3IpIHsKICAgICAgICByZXN1bHRzW2xvd2VzdE9yZGVyXSA9IChyZXN1bHRzW2xvd2VzdE9yZGVyXSB8fCAwKSArIHJlbWFpbmluZ01pbGxpcyAvIChoaWdoV2F0ZXIgLSBjdXJzb3IpOwogICAgICB9CiAgICB9CgogICAgY29uc3QgZHVyYXRpb24gPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHJlc3VsdHMsIG9wdHMpOwoKICAgIGlmIChsb3dlck9yZGVyVW5pdHMubGVuZ3RoID4gMCkgewogICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU1pbGxpcyhyZW1haW5pbmdNaWxsaXMsIG9wdHMpCiAgICAgICAgLnNoaWZ0VG8oLi4ubG93ZXJPcmRlclVuaXRzKQogICAgICAgIC5wbHVzKGR1cmF0aW9uKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBkdXJhdGlvbjsKICAgIH0KICB9CgogIGNvbnN0IG51bWJlcmluZ1N5c3RlbXMgPSB7CiAgICBhcmFiOiAiW1x1MDY2MC1cdTA2NjldIiwKICAgIGFyYWJleHQ6ICJbXHUwNkYwLVx1MDZGOV0iLAogICAgYmFsaTogIltcdTFCNTAtXHUxQjU5XSIsCiAgICBiZW5nOiAiW1x1MDlFNi1cdTA5RUZdIiwKICAgIGRldmE6ICJbXHUwOTY2LVx1MDk2Rl0iLAogICAgZnVsbHdpZGU6ICJbXHVGRjEwLVx1RkYxOV0iLAogICAgZ3VqcjogIltcdTBBRTYtXHUwQUVGXSIsCiAgICBoYW5pZGVjOiAiW+OAh3zkuIB85LqMfOS4iXzlm5t85LqUfOWFrXzkuIN85YWrfOS5nV0iLAogICAga2htcjogIltcdTE3RTAtXHUxN0U5XSIsCiAgICBrbmRhOiAiW1x1MENFNi1cdTBDRUZdIiwKICAgIGxhb286ICJbXHUwRUQwLVx1MEVEOV0iLAogICAgbGltYjogIltcdTE5NDYtXHUxOTRGXSIsCiAgICBtbHltOiAiW1x1MEQ2Ni1cdTBENkZdIiwKICAgIG1vbmc6ICJbXHUxODEwLVx1MTgxOV0iLAogICAgbXltcjogIltcdTEwNDAtXHUxMDQ5XSIsCiAgICBvcnlhOiAiW1x1MEI2Ni1cdTBCNkZdIiwKICAgIHRhbWxkZWM6ICJbXHUwQkU2LVx1MEJFRl0iLAogICAgdGVsdTogIltcdTBDNjYtXHUwQzZGXSIsCiAgICB0aGFpOiAiW1x1MEU1MC1cdTBFNTldIiwKICAgIHRpYnQ6ICJbXHUwRjIwLVx1MEYyOV0iLAogICAgbGF0bjogIlxcZCIsCiAgfTsKCiAgY29uc3QgbnVtYmVyaW5nU3lzdGVtc1VURjE2ID0gewogICAgYXJhYjogWzE2MzIsIDE2NDFdLAogICAgYXJhYmV4dDogWzE3NzYsIDE3ODVdLAogICAgYmFsaTogWzY5OTIsIDcwMDFdLAogICAgYmVuZzogWzI1MzQsIDI1NDNdLAogICAgZGV2YTogWzI0MDYsIDI0MTVdLAogICAgZnVsbHdpZGU6IFs2NTI5NiwgNjUzMDNdLAogICAgZ3VqcjogWzI3OTAsIDI3OTldLAogICAga2htcjogWzYxMTIsIDYxMjFdLAogICAga25kYTogWzMzMDIsIDMzMTFdLAogICAgbGFvbzogWzM3OTIsIDM4MDFdLAogICAgbGltYjogWzY0NzAsIDY0NzldLAogICAgbWx5bTogWzM0MzAsIDM0MzldLAogICAgbW9uZzogWzYxNjAsIDYxNjldLAogICAgbXltcjogWzQxNjAsIDQxNjldLAogICAgb3J5YTogWzI5MTgsIDI5MjddLAogICAgdGFtbGRlYzogWzMwNDYsIDMwNTVdLAogICAgdGVsdTogWzMxNzQsIDMxODNdLAogICAgdGhhaTogWzM2NjQsIDM2NzNdLAogICAgdGlidDogWzM4NzIsIDM4ODFdLAogIH07CgogIGNvbnN0IGhhbmlkZWNDaGFycyA9IG51bWJlcmluZ1N5c3RlbXMuaGFuaWRlYy5yZXBsYWNlKC9bXFt8XF1dL2csICIiKS5zcGxpdCgiIik7CgogIGZ1bmN0aW9uIHBhcnNlRGlnaXRzKHN0cikgewogICAgbGV0IHZhbHVlID0gcGFyc2VJbnQoc3RyLCAxMCk7CiAgICBpZiAoaXNOYU4odmFsdWUpKSB7CiAgICAgIHZhbHVlID0gIiI7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpOwoKICAgICAgICBpZiAoc3RyW2ldLnNlYXJjaChudW1iZXJpbmdTeXN0ZW1zLmhhbmlkZWMpICE9PSAtMSkgewogICAgICAgICAgdmFsdWUgKz0gaGFuaWRlY0NoYXJzLmluZGV4T2Yoc3RyW2ldKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbnVtYmVyaW5nU3lzdGVtc1VURjE2KSB7CiAgICAgICAgICAgIGNvbnN0IFttaW4sIG1heF0gPSBudW1iZXJpbmdTeXN0ZW1zVVRGMTZba2V5XTsKICAgICAgICAgICAgaWYgKGNvZGUgPj0gbWluICYmIGNvZGUgPD0gbWF4KSB7CiAgICAgICAgICAgICAgdmFsdWUgKz0gY29kZSAtIG1pbjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGRpZ2l0UmVnZXgoeyBudW1iZXJpbmdTeXN0ZW0gfSwgYXBwZW5kID0gIiIpIHsKICAgIHJldHVybiBuZXcgUmVnRXhwKGAke251bWJlcmluZ1N5c3RlbXNbbnVtYmVyaW5nU3lzdGVtIHx8ICJsYXRuIl19JHthcHBlbmR9YCk7CiAgfQoKICBjb25zdCBNSVNTSU5HX0ZUUCA9ICJtaXNzaW5nIEludGwuRGF0ZVRpbWVGb3JtYXQuZm9ybWF0VG9QYXJ0cyBzdXBwb3J0IjsKCiAgZnVuY3Rpb24gaW50VW5pdChyZWdleCwgcG9zdCA9IChpKSA9PiBpKSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHBvc3QocGFyc2VEaWdpdHMocykpIH07CiAgfQoKICBjb25zdCBOQlNQID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxNjApOwogIGNvbnN0IHNwYWNlT3JOQlNQID0gYFsgJHtOQlNQfV1gOwogIGNvbnN0IHNwYWNlT3JOQlNQUmVnRXhwID0gbmV3IFJlZ0V4cChzcGFjZU9yTkJTUCwgImciKTsKCiAgZnVuY3Rpb24gZml4TGlzdFJlZ2V4KHMpIHsKICAgIC8vIG1ha2UgZG90cyBvcHRpb25hbCBhbmQgYWxzbyBtYWtlIHRoZW0gbGl0ZXJhbAogICAgLy8gbWFrZSBzcGFjZSBhbmQgbm9uIGJyZWFrYWJsZSBzcGFjZSBjaGFyYWN0ZXJzIGludGVyY2hhbmdlYWJsZQogICAgcmV0dXJuIHMucmVwbGFjZSgvXC4vZywgIlxcLj8iKS5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCBzcGFjZU9yTkJTUCk7CiAgfQoKICBmdW5jdGlvbiBzdHJpcEluc2Vuc2l0aXZpdGllcyhzKSB7CiAgICByZXR1cm4gcwogICAgICAucmVwbGFjZSgvXC4vZywgIiIpIC8vIGlnbm9yZSBkb3RzIHRoYXQgd2VyZSBtYWRlIG9wdGlvbmFsCiAgICAgIC5yZXBsYWNlKHNwYWNlT3JOQlNQUmVnRXhwLCAiICIpIC8vIGludGVyY2hhbmdlIHNwYWNlIGFuZCBuYnNwCiAgICAgIC50b0xvd2VyQ2FzZSgpOwogIH0KCiAgZnVuY3Rpb24gb25lT2Yoc3RyaW5ncywgc3RhcnRJbmRleCkgewogICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gewogICAgICAgIHJlZ2V4OiBSZWdFeHAoc3RyaW5ncy5tYXAoZml4TGlzdFJlZ2V4KS5qb2luKCJ8IikpLAogICAgICAgIGRlc2VyOiAoW3NdKSA9PgogICAgICAgICAgc3RyaW5ncy5maW5kSW5kZXgoKGkpID0+IHN0cmlwSW5zZW5zaXRpdml0aWVzKHMpID09PSBzdHJpcEluc2Vuc2l0aXZpdGllcyhpKSkgKyBzdGFydEluZGV4LAogICAgICB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2Zmc2V0KHJlZ2V4LCBncm91cHMpIHsKICAgIHJldHVybiB7IHJlZ2V4LCBkZXNlcjogKFssIGgsIG1dKSA9PiBzaWduZWRPZmZzZXQoaCwgbSksIGdyb3VwcyB9OwogIH0KCiAgZnVuY3Rpb24gc2ltcGxlKHJlZ2V4KSB7CiAgICByZXR1cm4geyByZWdleCwgZGVzZXI6IChbc10pID0+IHMgfTsKICB9CgogIGZ1bmN0aW9uIGVzY2FwZVRva2VuKHZhbHVlKSB7CiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywgIlxcJCYiKTsKICB9CgogIC8qKgogICAqIEBwYXJhbSB0b2tlbgogICAqIEBwYXJhbSB7TG9jYWxlfSBsb2MKICAgKi8KICBmdW5jdGlvbiB1bml0Rm9yVG9rZW4odG9rZW4sIGxvYykgewogICAgY29uc3Qgb25lID0gZGlnaXRSZWdleChsb2MpLAogICAgICB0d28gPSBkaWdpdFJlZ2V4KGxvYywgInsyfSIpLAogICAgICB0aHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezN9IiksCiAgICAgIGZvdXIgPSBkaWdpdFJlZ2V4KGxvYywgIns0fSIpLAogICAgICBzaXggPSBkaWdpdFJlZ2V4KGxvYywgIns2fSIpLAogICAgICBvbmVPclR3byA9IGRpZ2l0UmVnZXgobG9jLCAiezEsMn0iKSwKICAgICAgb25lVG9UaHJlZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsM30iKSwKICAgICAgb25lVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgInsxLDZ9IiksCiAgICAgIG9uZVRvTmluZSA9IGRpZ2l0UmVnZXgobG9jLCAiezEsOX0iKSwKICAgICAgdHdvVG9Gb3VyID0gZGlnaXRSZWdleChsb2MsICJ7Miw0fSIpLAogICAgICBmb3VyVG9TaXggPSBkaWdpdFJlZ2V4KGxvYywgIns0LDZ9IiksCiAgICAgIGxpdGVyYWwgPSAodCkgPT4gKHsgcmVnZXg6IFJlZ0V4cChlc2NhcGVUb2tlbih0LnZhbCkpLCBkZXNlcjogKFtzXSkgPT4gcywgbGl0ZXJhbDogdHJ1ZSB9KSwKICAgICAgdW5pdGF0ZSA9ICh0KSA9PiB7CiAgICAgICAgaWYgKHRva2VuLmxpdGVyYWwpIHsKICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgICBzd2l0Y2ggKHQudmFsKSB7CiAgICAgICAgICAvLyBlcmEKICAgICAgICAgIGNhc2UgIkciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoInNob3J0IiksIDApOwogICAgICAgICAgY2FzZSAiR0ciOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLmVyYXMoImxvbmciKSwgMCk7CiAgICAgICAgICAvLyB5ZWFycwogICAgICAgICAgY2FzZSAieSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvU2l4KTsKICAgICAgICAgIGNhc2UgInl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvVG9Gb3VyLCB1bnRydW5jYXRlWWVhcik7CiAgICAgICAgICBjYXNlICJ5eXl5IjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJ5eXl5eSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KGZvdXJUb1NpeCk7CiAgICAgICAgICBjYXNlICJ5eXl5eXkiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChzaXgpOwogICAgICAgICAgLy8gbW9udGhzCiAgICAgICAgICBjYXNlICJNIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAiTU0iOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiTU1NIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTU1NTSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJsb25nIiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgIkxMIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgIkxMTCI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubW9udGhzKCJzaG9ydCIsIGZhbHNlKSwgMSk7CiAgICAgICAgICBjYXNlICJMTExMIjoKICAgICAgICAgICAgcmV0dXJuIG9uZU9mKGxvYy5tb250aHMoImxvbmciLCBmYWxzZSksIDEpOwogICAgICAgICAgLy8gZGF0ZXMKICAgICAgICAgIGNhc2UgImQiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJkZCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyBvcmRpbmFscwogICAgICAgICAgY2FzZSAibyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZVRvVGhyZWUpOwogICAgICAgICAgY2FzZSAib29vIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodGhyZWUpOwogICAgICAgICAgLy8gdGltZQogICAgICAgICAgY2FzZSAiSEgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0d28pOwogICAgICAgICAgY2FzZSAiSCI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgImhoIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgImgiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJtbSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJtIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lT3JUd28pOwogICAgICAgICAgY2FzZSAicSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInFxIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQodHdvKTsKICAgICAgICAgIGNhc2UgInMiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJzcyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICBjYXNlICJTIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lVG9UaHJlZSk7CiAgICAgICAgICBjYXNlICJTU1MiOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdCh0aHJlZSk7CiAgICAgICAgICBjYXNlICJ1IjoKICAgICAgICAgICAgcmV0dXJuIHNpbXBsZShvbmVUb05pbmUpOwogICAgICAgICAgY2FzZSAidXUiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKG9uZU9yVHdvKTsKICAgICAgICAgIGNhc2UgInV1dSI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KG9uZSk7CiAgICAgICAgICAvLyBtZXJpZGllbQogICAgICAgICAgY2FzZSAiYSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2MubWVyaWRpZW1zKCksIDApOwogICAgICAgICAgLy8gd2Vla1llYXIgKGspCiAgICAgICAgICBjYXNlICJra2trIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQoZm91cik7CiAgICAgICAgICBjYXNlICJrayI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3b1RvRm91ciwgdW50cnVuY2F0ZVllYXIpOwogICAgICAgICAgLy8gd2Vla051bWJlciAoVykKICAgICAgICAgIGNhc2UgIlciOgogICAgICAgICAgICByZXR1cm4gaW50VW5pdChvbmVPclR3byk7CiAgICAgICAgICBjYXNlICJXVyI6CiAgICAgICAgICAgIHJldHVybiBpbnRVbml0KHR3byk7CiAgICAgICAgICAvLyB3ZWVrZGF5cwogICAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgICBjYXNlICJjIjoKICAgICAgICAgICAgcmV0dXJuIGludFVuaXQob25lKTsKICAgICAgICAgIGNhc2UgIkVFRSI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgIkVFRUUiOgogICAgICAgICAgICByZXR1cm4gb25lT2YobG9jLndlZWtkYXlzKCJsb25nIiwgZmFsc2UpLCAxKTsKICAgICAgICAgIGNhc2UgImNjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoInNob3J0IiwgdHJ1ZSksIDEpOwogICAgICAgICAgY2FzZSAiY2NjYyI6CiAgICAgICAgICAgIHJldHVybiBvbmVPZihsb2Mud2Vla2RheXMoImxvbmciLCB0cnVlKSwgMSk7CiAgICAgICAgICAvLyBvZmZzZXQvem9uZQogICAgICAgICAgY2FzZSAiWiI6CiAgICAgICAgICBjYXNlICJaWiI6CiAgICAgICAgICAgIHJldHVybiBvZmZzZXQobmV3IFJlZ0V4cChgKFsrLV0ke29uZU9yVHdvLnNvdXJjZX0pKD86Oigke3R3by5zb3VyY2V9KSk/YCksIDIpOwogICAgICAgICAgY2FzZSAiWlpaIjoKICAgICAgICAgICAgcmV0dXJuIG9mZnNldChuZXcgUmVnRXhwKGAoWystXSR7b25lT3JUd28uc291cmNlfSkoJHt0d28uc291cmNlfSk/YCksIDIpOwogICAgICAgICAgLy8gd2UgZG9uJ3Qgc3VwcG9ydCBaWlpaIChQU1QpIG9yIFpaWlpaIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpIGluIHBhcnNpbmcKICAgICAgICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2F5IHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGV5IGFyZQogICAgICAgICAgY2FzZSAieiI6CiAgICAgICAgICAgIHJldHVybiBzaW1wbGUoL1thLXpfKy0vXXsxLDI1Nn0/L2kpOwogICAgICAgICAgLy8gdGhpcyBzcGVjaWFsLWNhc2UgInRva2VuIiByZXByZXNlbnRzIGEgcGxhY2Ugd2hlcmUgYSBtYWNyby10b2tlbiBleHBhbmRlZCBpbnRvIGEgd2hpdGUtc3BhY2UgbGl0ZXJhbAogICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGFjY2VwdCBhbnkgbm9uLW5ld2xpbmUgd2hpdGUtc3BhY2UKICAgICAgICAgIGNhc2UgIiAiOgogICAgICAgICAgICByZXR1cm4gc2ltcGxlKC9bXlxTXG5ccl0vKTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHQpOwogICAgICAgIH0KICAgICAgfTsKCiAgICBjb25zdCB1bml0ID0gdW5pdGF0ZSh0b2tlbikgfHwgewogICAgICBpbnZhbGlkUmVhc29uOiBNSVNTSU5HX0ZUUCwKICAgIH07CgogICAgdW5pdC50b2tlbiA9IHRva2VuOwoKICAgIHJldHVybiB1bml0OwogIH0KCiAgY29uc3QgcGFydFR5cGVTdHlsZVRvVG9rZW5WYWwgPSB7CiAgICB5ZWFyOiB7CiAgICAgICIyLWRpZ2l0IjogInl5IiwKICAgICAgbnVtZXJpYzogInl5eXl5IiwKICAgIH0sCiAgICBtb250aDogewogICAgICBudW1lcmljOiAiTSIsCiAgICAgICIyLWRpZ2l0IjogIk1NIiwKICAgICAgc2hvcnQ6ICJNTU0iLAogICAgICBsb25nOiAiTU1NTSIsCiAgICB9LAogICAgZGF5OiB7CiAgICAgIG51bWVyaWM6ICJkIiwKICAgICAgIjItZGlnaXQiOiAiZGQiLAogICAgfSwKICAgIHdlZWtkYXk6IHsKICAgICAgc2hvcnQ6ICJFRUUiLAogICAgICBsb25nOiAiRUVFRSIsCiAgICB9LAogICAgZGF5cGVyaW9kOiAiYSIsCiAgICBkYXlQZXJpb2Q6ICJhIiwKICAgIGhvdXIxMjogewogICAgICBudW1lcmljOiAiaCIsCiAgICAgICIyLWRpZ2l0IjogImhoIiwKICAgIH0sCiAgICBob3VyMjQ6IHsKICAgICAgbnVtZXJpYzogIkgiLAogICAgICAiMi1kaWdpdCI6ICJISCIsCiAgICB9LAogICAgbWludXRlOiB7CiAgICAgIG51bWVyaWM6ICJtIiwKICAgICAgIjItZGlnaXQiOiAibW0iLAogICAgfSwKICAgIHNlY29uZDogewogICAgICBudW1lcmljOiAicyIsCiAgICAgICIyLWRpZ2l0IjogInNzIiwKICAgIH0sCiAgICB0aW1lWm9uZU5hbWU6IHsKICAgICAgbG9uZzogIlpaWlpaIiwKICAgICAgc2hvcnQ6ICJaWloiLAogICAgfSwKICB9OwoKICBmdW5jdGlvbiB0b2tlbkZvclBhcnQocGFydCwgZm9ybWF0T3B0cywgcmVzb2x2ZWRPcHRzKSB7CiAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSBwYXJ0OwoKICAgIGlmICh0eXBlID09PSAibGl0ZXJhbCIpIHsKICAgICAgY29uc3QgaXNTcGFjZSA9IC9eXHMrJC8udGVzdCh2YWx1ZSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgbGl0ZXJhbDogIWlzU3BhY2UsCiAgICAgICAgdmFsOiBpc1NwYWNlID8gIiAiIDogdmFsdWUsCiAgICAgIH07CiAgICB9CgogICAgY29uc3Qgc3R5bGUgPSBmb3JtYXRPcHRzW3R5cGVdOwoKICAgIC8vIFRoZSB1c2VyIG1pZ2h0IGhhdmUgZXhwbGljaXRseSBzcGVjaWZpZWQgaG91cjEyIG9yIGhvdXJDeWNsZQogICAgLy8gaWYgc28sIHJlc3BlY3QgdGhlaXIgZGVjaXNpb24KICAgIC8vIGlmIG5vdCwgcmVmZXIgYmFjayB0byB0aGUgcmVzb2x2ZWRPcHRzLCB3aGljaCBhcmUgYmFzZWQgb24gdGhlIGxvY2FsZQogICAgbGV0IGFjdHVhbFR5cGUgPSB0eXBlOwogICAgaWYgKHR5cGUgPT09ICJob3VyIikgewogICAgICBpZiAoZm9ybWF0T3B0cy5ob3VyMTIgIT0gbnVsbCkgewogICAgICAgIGFjdHVhbFR5cGUgPSBmb3JtYXRPcHRzLmhvdXIxMiA/ICJob3VyMTIiIDogImhvdXIyNCI7CiAgICAgIH0gZWxzZSBpZiAoZm9ybWF0T3B0cy5ob3VyQ3ljbGUgIT0gbnVsbCkgewogICAgICAgIGlmIChmb3JtYXRPcHRzLmhvdXJDeWNsZSA9PT0gImgxMSIgfHwgZm9ybWF0T3B0cy5ob3VyQ3ljbGUgPT09ICJoMTIiKSB7CiAgICAgICAgICBhY3R1YWxUeXBlID0gImhvdXIxMiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFjdHVhbFR5cGUgPSAiaG91cjI0IjsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gdG9rZW5zIG9ubHkgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIDI0IGhvdXJzIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBob3VyQ3ljbGUgaGVyZSwgd2hpY2ggaXMgbGVzcyBzdXBwb3J0ZWQgYW55d2F5cwogICAgICAgIGFjdHVhbFR5cGUgPSByZXNvbHZlZE9wdHMuaG91cjEyID8gImhvdXIxMiIgOiAiaG91cjI0IjsKICAgICAgfQogICAgfQogICAgbGV0IHZhbCA9IHBhcnRUeXBlU3R5bGVUb1Rva2VuVmFsW2FjdHVhbFR5cGVdOwogICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiKSB7CiAgICAgIHZhbCA9IHZhbFtzdHlsZV07CiAgICB9CgogICAgaWYgKHZhbCkgewogICAgICByZXR1cm4gewogICAgICAgIGxpdGVyYWw6IGZhbHNlLAogICAgICAgIHZhbCwKICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSZWdleCh1bml0cykgewogICAgY29uc3QgcmUgPSB1bml0cy5tYXAoKHUpID0+IHUucmVnZXgpLnJlZHVjZSgoZiwgcikgPT4gYCR7Zn0oJHtyLnNvdXJjZX0pYCwgIiIpOwogICAgcmV0dXJuIFtgXiR7cmV9JGAsIHVuaXRzXTsKICB9CgogIGZ1bmN0aW9uIG1hdGNoKGlucHV0LCByZWdleCwgaGFuZGxlcnMpIHsKICAgIGNvbnN0IG1hdGNoZXMgPSBpbnB1dC5tYXRjaChyZWdleCk7CgogICAgaWYgKG1hdGNoZXMpIHsKICAgICAgY29uc3QgYWxsID0ge307CiAgICAgIGxldCBtYXRjaEluZGV4ID0gMTsKICAgICAgZm9yIChjb25zdCBpIGluIGhhbmRsZXJzKSB7CiAgICAgICAgaWYgKGhhc093blByb3BlcnR5KGhhbmRsZXJzLCBpKSkgewogICAgICAgICAgY29uc3QgaCA9IGhhbmRsZXJzW2ldLAogICAgICAgICAgICBncm91cHMgPSBoLmdyb3VwcyA/IGguZ3JvdXBzICsgMSA6IDE7CiAgICAgICAgICBpZiAoIWgubGl0ZXJhbCAmJiBoLnRva2VuKSB7CiAgICAgICAgICAgIGFsbFtoLnRva2VuLnZhbFswXV0gPSBoLmRlc2VyKG1hdGNoZXMuc2xpY2UobWF0Y2hJbmRleCwgbWF0Y2hJbmRleCArIGdyb3VwcykpOwogICAgICAgICAgfQogICAgICAgICAgbWF0Y2hJbmRleCArPSBncm91cHM7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBbbWF0Y2hlcywgYWxsXTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbbWF0Y2hlcywge31dOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZGF0ZVRpbWVGcm9tTWF0Y2hlcyhtYXRjaGVzKSB7CiAgICBjb25zdCB0b0ZpZWxkID0gKHRva2VuKSA9PiB7CiAgICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICBjYXNlICJTIjoKICAgICAgICAgIHJldHVybiAibWlsbGlzZWNvbmQiOwogICAgICAgIGNhc2UgInMiOgogICAgICAgICAgcmV0dXJuICJzZWNvbmQiOwogICAgICAgIGNhc2UgIm0iOgogICAgICAgICAgcmV0dXJuICJtaW51dGUiOwogICAgICAgIGNhc2UgImgiOgogICAgICAgIGNhc2UgIkgiOgogICAgICAgICAgcmV0dXJuICJob3VyIjsKICAgICAgICBjYXNlICJkIjoKICAgICAgICAgIHJldHVybiAiZGF5IjsKICAgICAgICBjYXNlICJvIjoKICAgICAgICAgIHJldHVybiAib3JkaW5hbCI7CiAgICAgICAgY2FzZSAiTCI6CiAgICAgICAgY2FzZSAiTSI6CiAgICAgICAgICByZXR1cm4gIm1vbnRoIjsKICAgICAgICBjYXNlICJ5IjoKICAgICAgICAgIHJldHVybiAieWVhciI7CiAgICAgICAgY2FzZSAiRSI6CiAgICAgICAgY2FzZSAiYyI6CiAgICAgICAgICByZXR1cm4gIndlZWtkYXkiOwogICAgICAgIGNhc2UgIlciOgogICAgICAgICAgcmV0dXJuICJ3ZWVrTnVtYmVyIjsKICAgICAgICBjYXNlICJrIjoKICAgICAgICAgIHJldHVybiAid2Vla1llYXIiOwogICAgICAgIGNhc2UgInEiOgogICAgICAgICAgcmV0dXJuICJxdWFydGVyIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH07CgogICAgbGV0IHpvbmUgPSBudWxsOwogICAgbGV0IHNwZWNpZmljT2Zmc2V0OwogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLnopKSB7CiAgICAgIHpvbmUgPSBJQU5BWm9uZS5jcmVhdGUobWF0Y2hlcy56KTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMuWikpIHsKICAgICAgaWYgKCF6b25lKSB7CiAgICAgICAgem9uZSA9IG5ldyBGaXhlZE9mZnNldFpvbmUobWF0Y2hlcy5aKTsKICAgICAgfQogICAgICBzcGVjaWZpY09mZnNldCA9IG1hdGNoZXMuWjsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMucSkpIHsKICAgICAgbWF0Y2hlcy5NID0gKG1hdGNoZXMucSAtIDEpICogMyArIDE7CiAgICB9CgogICAgaWYgKCFpc1VuZGVmaW5lZChtYXRjaGVzLmgpKSB7CiAgICAgIGlmIChtYXRjaGVzLmggPCAxMiAmJiBtYXRjaGVzLmEgPT09IDEpIHsKICAgICAgICBtYXRjaGVzLmggKz0gMTI7CiAgICAgIH0gZWxzZSBpZiAobWF0Y2hlcy5oID09PSAxMiAmJiBtYXRjaGVzLmEgPT09IDApIHsKICAgICAgICBtYXRjaGVzLmggPSAwOwogICAgICB9CiAgICB9CgogICAgaWYgKG1hdGNoZXMuRyA9PT0gMCAmJiBtYXRjaGVzLnkpIHsKICAgICAgbWF0Y2hlcy55ID0gLW1hdGNoZXMueTsKICAgIH0KCiAgICBpZiAoIWlzVW5kZWZpbmVkKG1hdGNoZXMudSkpIHsKICAgICAgbWF0Y2hlcy5TID0gcGFyc2VNaWxsaXMobWF0Y2hlcy51KTsKICAgIH0KCiAgICBjb25zdCB2YWxzID0gT2JqZWN0LmtleXMobWF0Y2hlcykucmVkdWNlKChyLCBrKSA9PiB7CiAgICAgIGNvbnN0IGYgPSB0b0ZpZWxkKGspOwogICAgICBpZiAoZikgewogICAgICAgIHJbZl0gPSBtYXRjaGVzW2tdOwogICAgICB9CgogICAgICByZXR1cm4gcjsKICAgIH0sIHt9KTsKCiAgICByZXR1cm4gW3ZhbHMsIHpvbmUsIHNwZWNpZmljT2Zmc2V0XTsKICB9CgogIGxldCBkdW1teURhdGVUaW1lQ2FjaGUgPSBudWxsOwoKICBmdW5jdGlvbiBnZXREdW1teURhdGVUaW1lKCkgewogICAgaWYgKCFkdW1teURhdGVUaW1lQ2FjaGUpIHsKICAgICAgZHVtbXlEYXRlVGltZUNhY2hlID0gRGF0ZVRpbWUuZnJvbU1pbGxpcygxNTU1NTU1NTU1NTU1KTsKICAgIH0KCiAgICByZXR1cm4gZHVtbXlEYXRlVGltZUNhY2hlOwogIH0KCiAgZnVuY3Rpb24gbWF5YmVFeHBhbmRNYWNyb1Rva2VuKHRva2VuLCBsb2NhbGUpIHsKICAgIGlmICh0b2tlbi5saXRlcmFsKSB7CiAgICAgIHJldHVybiB0b2tlbjsKICAgIH0KCiAgICBjb25zdCBmb3JtYXRPcHRzID0gRm9ybWF0dGVyLm1hY3JvVG9rZW5Ub0Zvcm1hdE9wdHModG9rZW4udmFsKTsKICAgIGNvbnN0IHRva2VucyA9IGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpOwoKICAgIGlmICh0b2tlbnMgPT0gbnVsbCB8fCB0b2tlbnMuaW5jbHVkZXModW5kZWZpbmVkKSkgewogICAgICByZXR1cm4gdG9rZW47CiAgICB9CgogICAgcmV0dXJuIHRva2VuczsKICB9CgogIGZ1bmN0aW9uIGV4cGFuZE1hY3JvVG9rZW5zKHRva2VucywgbG9jYWxlKSB7CiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdCguLi50b2tlbnMubWFwKCh0KSA9PiBtYXliZUV4cGFuZE1hY3JvVG9rZW4odCwgbG9jYWxlKSkpOwogIH0KCiAgLyoqCiAgICogQHByaXZhdGUKICAgKi8KCiAgZnVuY3Rpb24gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlLCBpbnB1dCwgZm9ybWF0KSB7CiAgICBjb25zdCB0b2tlbnMgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm9ybWF0KSwgbG9jYWxlKSwKICAgICAgdW5pdHMgPSB0b2tlbnMubWFwKCh0KSA9PiB1bml0Rm9yVG9rZW4odCwgbG9jYWxlKSksCiAgICAgIGRpc3F1YWxpZnlpbmdVbml0ID0gdW5pdHMuZmluZCgodCkgPT4gdC5pbnZhbGlkUmVhc29uKTsKCiAgICBpZiAoZGlzcXVhbGlmeWluZ1VuaXQpIHsKICAgICAgcmV0dXJuIHsgaW5wdXQsIHRva2VucywgaW52YWxpZFJlYXNvbjogZGlzcXVhbGlmeWluZ1VuaXQuaW52YWxpZFJlYXNvbiB9OwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgW3JlZ2V4U3RyaW5nLCBoYW5kbGVyc10gPSBidWlsZFJlZ2V4KHVuaXRzKSwKICAgICAgICByZWdleCA9IFJlZ0V4cChyZWdleFN0cmluZywgImkiKSwKICAgICAgICBbcmF3TWF0Y2hlcywgbWF0Y2hlc10gPSBtYXRjaChpbnB1dCwgcmVnZXgsIGhhbmRsZXJzKSwKICAgICAgICBbcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldF0gPSBtYXRjaGVzCiAgICAgICAgICA/IGRhdGVUaW1lRnJvbU1hdGNoZXMobWF0Y2hlcykKICAgICAgICAgIDogW251bGwsIG51bGwsIHVuZGVmaW5lZF07CiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShtYXRjaGVzLCAiYSIpICYmIGhhc093blByb3BlcnR5KG1hdGNoZXMsICJIIikpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgaW5jbHVkZSBtZXJpZGllbSB3aGVuIHNwZWNpZnlpbmcgMjQtaG91ciBmb3JtYXQiCiAgICAgICAgKTsKICAgICAgfQogICAgICByZXR1cm4geyBpbnB1dCwgdG9rZW5zLCByZWdleCwgcmF3TWF0Y2hlcywgbWF0Y2hlcywgcmVzdWx0LCB6b25lLCBzcGVjaWZpY09mZnNldCB9OwogICAgfQogIH0KCiAgZnVuY3Rpb24gcGFyc2VGcm9tVG9rZW5zKGxvY2FsZSwgaW5wdXQsIGZvcm1hdCkgewogICAgY29uc3QgeyByZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uIH0gPSBleHBsYWluRnJvbVRva2Vucyhsb2NhbGUsIGlucHV0LCBmb3JtYXQpOwogICAgcmV0dXJuIFtyZXN1bHQsIHpvbmUsIHNwZWNpZmljT2Zmc2V0LCBpbnZhbGlkUmVhc29uXTsKICB9CgogIGZ1bmN0aW9uIGZvcm1hdE9wdHNUb1Rva2Vucyhmb3JtYXRPcHRzLCBsb2NhbGUpIHsKICAgIGlmICghZm9ybWF0T3B0cykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBjb25zdCBmb3JtYXR0ZXIgPSBGb3JtYXR0ZXIuY3JlYXRlKGxvY2FsZSwgZm9ybWF0T3B0cyk7CiAgICBjb25zdCBkZiA9IGZvcm1hdHRlci5kdEZvcm1hdHRlcihnZXREdW1teURhdGVUaW1lKCkpOwogICAgY29uc3QgcGFydHMgPSBkZi5mb3JtYXRUb1BhcnRzKCk7CiAgICBjb25zdCByZXNvbHZlZE9wdHMgPSBkZi5yZXNvbHZlZE9wdGlvbnMoKTsKICAgIHJldHVybiBwYXJ0cy5tYXAoKHApID0+IHRva2VuRm9yUGFydChwLCBmb3JtYXRPcHRzLCByZXNvbHZlZE9wdHMpKTsKICB9CgogIGNvbnN0IG5vbkxlYXBMYWRkZXIgPSBbMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzRdLAogICAgbGVhcExhZGRlciA9IFswLCAzMSwgNjAsIDkxLCAxMjEsIDE1MiwgMTgyLCAyMTMsIDI0NCwgMjc0LCAzMDUsIDMzNV07CgogIGZ1bmN0aW9uIHVuaXRPdXRPZlJhbmdlKHVuaXQsIHZhbHVlKSB7CiAgICByZXR1cm4gbmV3IEludmFsaWQoCiAgICAgICJ1bml0IG91dCBvZiByYW5nZSIsCiAgICAgIGB5b3Ugc3BlY2lmaWVkICR7dmFsdWV9IChvZiB0eXBlICR7dHlwZW9mIHZhbHVlfSkgYXMgYSAke3VuaXR9LCB3aGljaCBpcyBpbnZhbGlkYAogICAgKTsKICB9CgogIGZ1bmN0aW9uIGRheU9mV2Vlayh5ZWFyLCBtb250aCwgZGF5KSB7CiAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgbW9udGggLSAxLCBkYXkpKTsKCiAgICBpZiAoeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHsKICAgICAgZC5zZXRVVENGdWxsWWVhcihkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwKTsKICAgIH0KCiAgICBjb25zdCBqcyA9IGQuZ2V0VVRDRGF5KCk7CgogICAgcmV0dXJuIGpzID09PSAwID8gNyA6IGpzOwogIH0KCiAgZnVuY3Rpb24gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSkgewogICAgcmV0dXJuIGRheSArIChpc0xlYXBZZWFyKHllYXIpID8gbGVhcExhZGRlciA6IG5vbkxlYXBMYWRkZXIpW21vbnRoIC0gMV07CiAgfQoKICBmdW5jdGlvbiB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpIHsKICAgIGNvbnN0IHRhYmxlID0gaXNMZWFwWWVhcih5ZWFyKSA/IGxlYXBMYWRkZXIgOiBub25MZWFwTGFkZGVyLAogICAgICBtb250aDAgPSB0YWJsZS5maW5kSW5kZXgoKGkpID0+IGkgPCBvcmRpbmFsKSwKICAgICAgZGF5ID0gb3JkaW5hbCAtIHRhYmxlW21vbnRoMF07CiAgICByZXR1cm4geyBtb250aDogbW9udGgwICsgMSwgZGF5IH07CiAgfQoKICAvKioKICAgKiBAcHJpdmF0ZQogICAqLwoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub1dlZWsoZ3JlZ09iaikgewogICAgY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSBncmVnT2JqLAogICAgICBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSksCiAgICAgIHdlZWtkYXkgPSBkYXlPZldlZWsoeWVhciwgbW9udGgsIGRheSk7CgogICAgbGV0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcpLAogICAgICB3ZWVrWWVhcjsKCiAgICBpZiAod2Vla051bWJlciA8IDEpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyIC0gMTsKICAgICAgd2Vla051bWJlciA9IHdlZWtzSW5XZWVrWWVhcih3ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKHdlZWtOdW1iZXIgPiB3ZWVrc0luV2Vla1llYXIoeWVhcikpIHsKICAgICAgd2Vla1llYXIgPSB5ZWFyICsgMTsKICAgICAgd2Vla051bWJlciA9IDE7CiAgICB9IGVsc2UgewogICAgICB3ZWVrWWVhciA9IHllYXI7CiAgICB9CgogICAgcmV0dXJuIHsgd2Vla1llYXIsIHdlZWtOdW1iZXIsIHdlZWtkYXksIC4uLnRpbWVPYmplY3QoZ3JlZ09iaikgfTsKICB9CgogIGZ1bmN0aW9uIHdlZWtUb0dyZWdvcmlhbih3ZWVrRGF0YSkgewogICAgY29uc3QgeyB3ZWVrWWVhciwgd2Vla051bWJlciwgd2Vla2RheSB9ID0gd2Vla0RhdGEsCiAgICAgIHdlZWtkYXlPZkphbjQgPSBkYXlPZldlZWsod2Vla1llYXIsIDEsIDQpLAogICAgICB5ZWFySW5EYXlzID0gZGF5c0luWWVhcih3ZWVrWWVhcik7CgogICAgbGV0IG9yZGluYWwgPSB3ZWVrTnVtYmVyICogNyArIHdlZWtkYXkgLSB3ZWVrZGF5T2ZKYW40IC0gMywKICAgICAgeWVhcjsKCiAgICBpZiAob3JkaW5hbCA8IDEpIHsKICAgICAgeWVhciA9IHdlZWtZZWFyIC0gMTsKICAgICAgb3JkaW5hbCArPSBkYXlzSW5ZZWFyKHllYXIpOwogICAgfSBlbHNlIGlmIChvcmRpbmFsID4geWVhckluRGF5cykgewogICAgICB5ZWFyID0gd2Vla1llYXIgKyAxOwogICAgICBvcmRpbmFsIC09IGRheXNJblllYXIod2Vla1llYXIpOwogICAgfSBlbHNlIHsKICAgICAgeWVhciA9IHdlZWtZZWFyOwogICAgfQoKICAgIGNvbnN0IHsgbW9udGgsIGRheSB9ID0gdW5jb21wdXRlT3JkaW5hbCh5ZWFyLCBvcmRpbmFsKTsKICAgIHJldHVybiB7IHllYXIsIG1vbnRoLCBkYXksIC4uLnRpbWVPYmplY3Qod2Vla0RhdGEpIH07CiAgfQoKICBmdW5jdGlvbiBncmVnb3JpYW5Ub09yZGluYWwoZ3JlZ0RhdGEpIHsKICAgIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gZ3JlZ0RhdGE7CiAgICBjb25zdCBvcmRpbmFsID0gY29tcHV0ZU9yZGluYWwoeWVhciwgbW9udGgsIGRheSk7CiAgICByZXR1cm4geyB5ZWFyLCBvcmRpbmFsLCAuLi50aW1lT2JqZWN0KGdyZWdEYXRhKSB9OwogIH0KCiAgZnVuY3Rpb24gb3JkaW5hbFRvR3JlZ29yaWFuKG9yZGluYWxEYXRhKSB7CiAgICBjb25zdCB7IHllYXIsIG9yZGluYWwgfSA9IG9yZGluYWxEYXRhOwogICAgY29uc3QgeyBtb250aCwgZGF5IH0gPSB1bmNvbXB1dGVPcmRpbmFsKHllYXIsIG9yZGluYWwpOwogICAgcmV0dXJuIHsgeWVhciwgbW9udGgsIGRheSwgLi4udGltZU9iamVjdChvcmRpbmFsRGF0YSkgfTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRXZWVrRGF0YShvYmopIHsKICAgIGNvbnN0IHZhbGlkWWVhciA9IGlzSW50ZWdlcihvYmoud2Vla1llYXIpLAogICAgICB2YWxpZFdlZWsgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla051bWJlciwgMSwgd2Vla3NJbldlZWtZZWFyKG9iai53ZWVrWWVhcikpLAogICAgICB2YWxpZFdlZWtkYXkgPSBpbnRlZ2VyQmV0d2VlbihvYmoud2Vla2RheSwgMSwgNyk7CgogICAgaWYgKCF2YWxpZFllYXIpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrWWVhciIsIG9iai53ZWVrWWVhcik7CiAgICB9IGVsc2UgaWYgKCF2YWxpZFdlZWspIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJ3ZWVrIiwgb2JqLndlZWspOwogICAgfSBlbHNlIGlmICghdmFsaWRXZWVrZGF5KSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgid2Vla2RheSIsIG9iai53ZWVrZGF5KTsKICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgfQoKICBmdW5jdGlvbiBoYXNJbnZhbGlkT3JkaW5hbERhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE9yZGluYWwgPSBpbnRlZ2VyQmV0d2VlbihvYmoub3JkaW5hbCwgMSwgZGF5c0luWWVhcihvYmoueWVhcikpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkT3JkaW5hbCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm9yZGluYWwiLCBvYmoub3JkaW5hbCk7CiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB7CiAgICBjb25zdCB2YWxpZFllYXIgPSBpc0ludGVnZXIob2JqLnllYXIpLAogICAgICB2YWxpZE1vbnRoID0gaW50ZWdlckJldHdlZW4ob2JqLm1vbnRoLCAxLCAxMiksCiAgICAgIHZhbGlkRGF5ID0gaW50ZWdlckJldHdlZW4ob2JqLmRheSwgMSwgZGF5c0luTW9udGgob2JqLnllYXIsIG9iai5tb250aCkpOwoKICAgIGlmICghdmFsaWRZZWFyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgieWVhciIsIG9iai55ZWFyKTsKICAgIH0gZWxzZSBpZiAoIXZhbGlkTW9udGgpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtb250aCIsIG9iai5tb250aCk7CiAgICB9IGVsc2UgaWYgKCF2YWxpZERheSkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoImRheSIsIG9iai5kYXkpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGhhc0ludmFsaWRUaW1lRGF0YShvYmopIHsKICAgIGNvbnN0IHsgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0gPSBvYmo7CiAgICBjb25zdCB2YWxpZEhvdXIgPQogICAgICAgIGludGVnZXJCZXR3ZWVuKGhvdXIsIDAsIDIzKSB8fAogICAgICAgIChob3VyID09PSAyNCAmJiBtaW51dGUgPT09IDAgJiYgc2Vjb25kID09PSAwICYmIG1pbGxpc2Vjb25kID09PSAwKSwKICAgICAgdmFsaWRNaW51dGUgPSBpbnRlZ2VyQmV0d2VlbihtaW51dGUsIDAsIDU5KSwKICAgICAgdmFsaWRTZWNvbmQgPSBpbnRlZ2VyQmV0d2VlbihzZWNvbmQsIDAsIDU5KSwKICAgICAgdmFsaWRNaWxsaXNlY29uZCA9IGludGVnZXJCZXR3ZWVuKG1pbGxpc2Vjb25kLCAwLCA5OTkpOwoKICAgIGlmICghdmFsaWRIb3VyKSB7CiAgICAgIHJldHVybiB1bml0T3V0T2ZSYW5nZSgiaG91ciIsIGhvdXIpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaW51dGUpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJtaW51dGUiLCBtaW51dGUpOwogICAgfSBlbHNlIGlmICghdmFsaWRTZWNvbmQpIHsKICAgICAgcmV0dXJuIHVuaXRPdXRPZlJhbmdlKCJzZWNvbmQiLCBzZWNvbmQpOwogICAgfSBlbHNlIGlmICghdmFsaWRNaWxsaXNlY29uZCkgewogICAgICByZXR1cm4gdW5pdE91dE9mUmFuZ2UoIm1pbGxpc2Vjb25kIiwgbWlsbGlzZWNvbmQpOwogICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICB9CgogIGNvbnN0IElOVkFMSUQgPSAiSW52YWxpZCBEYXRlVGltZSI7CiAgY29uc3QgTUFYX0RBVEUgPSA4LjY0ZTE1OwoKICBmdW5jdGlvbiB1bnN1cHBvcnRlZFpvbmUoem9uZSkgewogICAgcmV0dXJuIG5ldyBJbnZhbGlkKCJ1bnN1cHBvcnRlZCB6b25lIiwgYHRoZSB6b25lICIke3pvbmUubmFtZX0iIGlzIG5vdCBzdXBwb3J0ZWRgKTsKICB9CgogIC8vIHdlIGNhY2hlIHdlZWsgZGF0YSBvbiB0aGUgRFQgb2JqZWN0IGFuZCB0aGlzIGludGVybWVkaWF0ZXMgdGhlIGNhY2hlCiAgZnVuY3Rpb24gcG9zc2libHlDYWNoZWRXZWVrRGF0YShkdCkgewogICAgaWYgKGR0LndlZWtEYXRhID09PSBudWxsKSB7CiAgICAgIGR0LndlZWtEYXRhID0gZ3JlZ29yaWFuVG9XZWVrKGR0LmMpOwogICAgfQogICAgcmV0dXJuIGR0LndlZWtEYXRhOwogIH0KCiAgLy8gY2xvbmUgcmVhbGx5IG1lYW5zLCAibWFrZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGVzZSBtb2RpZmljYXRpb25zIi4gYWxsICJzZXR0ZXJzIiByZWFsbHkgdXNlIHRoaXMKICAvLyB0byBjcmVhdGUgYSBuZXcgb2JqZWN0IHdoaWxlIG9ubHkgY2hhbmdpbmcgc29tZSBvZiB0aGUgcHJvcGVydGllcwogIGZ1bmN0aW9uIGNsb25lKGluc3QsIGFsdHMpIHsKICAgIGNvbnN0IGN1cnJlbnQgPSB7CiAgICAgIHRzOiBpbnN0LnRzLAogICAgICB6b25lOiBpbnN0LnpvbmUsCiAgICAgIGM6IGluc3QuYywKICAgICAgbzogaW5zdC5vLAogICAgICBsb2M6IGluc3QubG9jLAogICAgICBpbnZhbGlkOiBpbnN0LmludmFsaWQsCiAgICB9OwogICAgcmV0dXJuIG5ldyBEYXRlVGltZSh7IC4uLmN1cnJlbnQsIC4uLmFsdHMsIG9sZDogY3VycmVudCB9KTsKICB9CgogIC8vIGZpbmQgdGhlIHJpZ2h0IG9mZnNldCBhIGdpdmVuIGxvY2FsIHRpbWUuIFRoZSBvIGlucHV0IGlzIG91ciBndWVzcywgd2hpY2ggZGV0ZXJtaW5lcyB3aGljaAogIC8vIG9mZnNldCB3ZSdsbCBwaWNrIGluIGFtYmlndW91cyBjYXNlcyAoZS5nLiB0aGVyZSBhcmUgdHdvIDMgQU1zIGIvYyBGYWxsYmFjayBEU1QpCiAgZnVuY3Rpb24gZml4T2Zmc2V0KGxvY2FsVFMsIG8sIHR6KSB7CiAgICAvLyBPdXIgVVRDIHRpbWUgaXMganVzdCBhIGd1ZXNzIGJlY2F1c2Ugb3VyIG9mZnNldCBpcyBqdXN0IGEgZ3Vlc3MKICAgIGxldCB1dGNHdWVzcyA9IGxvY2FsVFMgLSBvICogNjAgKiAxMDAwOwoKICAgIC8vIFRlc3Qgd2hldGhlciB0aGUgem9uZSBtYXRjaGVzIHRoZSBvZmZzZXQgZm9yIHRoaXMgdHMKICAgIGNvbnN0IG8yID0gdHoub2Zmc2V0KHV0Y0d1ZXNzKTsKCiAgICAvLyBJZiBzbywgb2Zmc2V0IGRpZG4ndCBjaGFuZ2UgYW5kIHdlJ3JlIGRvbmUKICAgIGlmIChvID09PSBvMikgewogICAgICByZXR1cm4gW3V0Y0d1ZXNzLCBvXTsKICAgIH0KCiAgICAvLyBJZiBub3QsIGNoYW5nZSB0aGUgdHMgYnkgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIG9mZnNldAogICAgdXRjR3Vlc3MgLT0gKG8yIC0gbykgKiA2MCAqIDEwMDA7CgogICAgLy8gSWYgdGhhdCBnaXZlcyB1cyB0aGUgbG9jYWwgdGltZSB3ZSB3YW50LCB3ZSdyZSBkb25lCiAgICBjb25zdCBvMyA9IHR6Lm9mZnNldCh1dGNHdWVzcyk7CiAgICBpZiAobzIgPT09IG8zKSB7CiAgICAgIHJldHVybiBbdXRjR3Vlc3MsIG8yXTsKICAgIH0KCiAgICAvLyBJZiBpdCdzIGRpZmZlcmVudCwgd2UncmUgaW4gYSBob2xlIHRpbWUuIFRoZSBvZmZzZXQgaGFzIGNoYW5nZWQsIGJ1dCB0aGUgd2UgZG9uJ3QgYWRqdXN0IHRoZSB0aW1lCiAgICByZXR1cm4gW2xvY2FsVFMgLSBNYXRoLm1pbihvMiwgbzMpICogNjAgKiAxMDAwLCBNYXRoLm1heChvMiwgbzMpXTsKICB9CgogIC8vIGNvbnZlcnQgYW4gZXBvY2ggdGltZXN0YW1wIGludG8gYSBjYWxlbmRhciBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0CiAgZnVuY3Rpb24gdHNUb09iaih0cywgb2Zmc2V0KSB7CiAgICB0cyArPSBvZmZzZXQgKiA2MCAqIDEwMDA7CgogICAgY29uc3QgZCA9IG5ldyBEYXRlKHRzKTsKCiAgICByZXR1cm4gewogICAgICB5ZWFyOiBkLmdldFVUQ0Z1bGxZZWFyKCksCiAgICAgIG1vbnRoOiBkLmdldFVUQ01vbnRoKCkgKyAxLAogICAgICBkYXk6IGQuZ2V0VVRDRGF0ZSgpLAogICAgICBob3VyOiBkLmdldFVUQ0hvdXJzKCksCiAgICAgIG1pbnV0ZTogZC5nZXRVVENNaW51dGVzKCksCiAgICAgIHNlY29uZDogZC5nZXRVVENTZWNvbmRzKCksCiAgICAgIG1pbGxpc2Vjb25kOiBkLmdldFVUQ01pbGxpc2Vjb25kcygpLAogICAgfTsKICB9CgogIC8vIGNvbnZlcnQgYSBjYWxlbmRhciBvYmplY3QgdG8gYSBlcG9jaCB0aW1lc3RhbXAKICBmdW5jdGlvbiBvYmpUb1RTKG9iaiwgb2Zmc2V0LCB6b25lKSB7CiAgICByZXR1cm4gZml4T2Zmc2V0KG9ialRvTG9jYWxUUyhvYmopLCBvZmZzZXQsIHpvbmUpOwogIH0KCiAgLy8gY3JlYXRlIGEgbmV3IERUIGluc3RhbmNlIGJ5IGFkZGluZyBhIGR1cmF0aW9uLCBhZGp1c3RpbmcgZm9yIERTVHMKICBmdW5jdGlvbiBhZGp1c3RUaW1lKGluc3QsIGR1cikgewogICAgY29uc3Qgb1ByZSA9IGluc3QubywKICAgICAgeWVhciA9IGluc3QuYy55ZWFyICsgTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICBtb250aCA9IGluc3QuYy5tb250aCArIE1hdGgudHJ1bmMoZHVyLm1vbnRocykgKyBNYXRoLnRydW5jKGR1ci5xdWFydGVycykgKiAzLAogICAgICBjID0gewogICAgICAgIC4uLmluc3QuYywKICAgICAgICB5ZWFyLAogICAgICAgIG1vbnRoLAogICAgICAgIGRheToKICAgICAgICAgIE1hdGgubWluKGluc3QuYy5kYXksIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIuZGF5cykgKwogICAgICAgICAgTWF0aC50cnVuYyhkdXIud2Vla3MpICogNywKICAgICAgfSwKICAgICAgbWlsbGlzVG9BZGQgPSBEdXJhdGlvbi5mcm9tT2JqZWN0KHsKICAgICAgICB5ZWFyczogZHVyLnllYXJzIC0gTWF0aC50cnVuYyhkdXIueWVhcnMpLAogICAgICAgIHF1YXJ0ZXJzOiBkdXIucXVhcnRlcnMgLSBNYXRoLnRydW5jKGR1ci5xdWFydGVycyksCiAgICAgICAgbW9udGhzOiBkdXIubW9udGhzIC0gTWF0aC50cnVuYyhkdXIubW9udGhzKSwKICAgICAgICB3ZWVrczogZHVyLndlZWtzIC0gTWF0aC50cnVuYyhkdXIud2Vla3MpLAogICAgICAgIGRheXM6IGR1ci5kYXlzIC0gTWF0aC50cnVuYyhkdXIuZGF5cyksCiAgICAgICAgaG91cnM6IGR1ci5ob3VycywKICAgICAgICBtaW51dGVzOiBkdXIubWludXRlcywKICAgICAgICBzZWNvbmRzOiBkdXIuc2Vjb25kcywKICAgICAgICBtaWxsaXNlY29uZHM6IGR1ci5taWxsaXNlY29uZHMsCiAgICAgIH0pLmFzKCJtaWxsaXNlY29uZHMiKSwKICAgICAgbG9jYWxUUyA9IG9ialRvTG9jYWxUUyhjKTsKCiAgICBsZXQgW3RzLCBvXSA9IGZpeE9mZnNldChsb2NhbFRTLCBvUHJlLCBpbnN0LnpvbmUpOwoKICAgIGlmIChtaWxsaXNUb0FkZCAhPT0gMCkgewogICAgICB0cyArPSBtaWxsaXNUb0FkZDsKICAgICAgLy8gdGhhdCBjb3VsZCBoYXZlIGNoYW5nZWQgdGhlIG9mZnNldCBieSBnb2luZyBvdmVyIGEgRFNULCBidXQgd2Ugd2FudCB0byBrZWVwIHRoZSB0cyB0aGUgc2FtZQogICAgICBvID0gaW5zdC56b25lLm9mZnNldCh0cyk7CiAgICB9CgogICAgcmV0dXJuIHsgdHMsIG8gfTsKICB9CgogIC8vIGhlbHBlciB1c2VmdWwgaW4gdHVybmluZyB0aGUgcmVzdWx0cyBvZiBwYXJzaW5nIGludG8gcmVhbCBkYXRlcwogIC8vIGJ5IGhhbmRsaW5nIHRoZSB6b25lIG9wdGlvbnMKICBmdW5jdGlvbiBwYXJzZURhdGFUb0RhdGVUaW1lKHBhcnNlZCwgcGFyc2VkWm9uZSwgb3B0cywgZm9ybWF0LCB0ZXh0LCBzcGVjaWZpY09mZnNldCkgewogICAgY29uc3QgeyBzZXRab25lLCB6b25lIH0gPSBvcHRzOwogICAgaWYgKChwYXJzZWQgJiYgT2JqZWN0LmtleXMocGFyc2VkKS5sZW5ndGggIT09IDApIHx8IHBhcnNlZFpvbmUpIHsKICAgICAgY29uc3QgaW50ZXJwcmV0YXRpb25ab25lID0gcGFyc2VkWm9uZSB8fCB6b25lLAogICAgICAgIGluc3QgPSBEYXRlVGltZS5mcm9tT2JqZWN0KHBhcnNlZCwgewogICAgICAgICAgLi4ub3B0cywKICAgICAgICAgIHpvbmU6IGludGVycHJldGF0aW9uWm9uZSwKICAgICAgICAgIHNwZWNpZmljT2Zmc2V0LAogICAgICAgIH0pOwogICAgICByZXR1cm4gc2V0Wm9uZSA/IGluc3QgOiBpbnN0LnNldFpvbmUoem9uZSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgKICAgICAgICBuZXcgSW52YWxpZCgidW5wYXJzYWJsZSIsIGB0aGUgaW5wdXQgIiR7dGV4dH0iIGNhbid0IGJlIHBhcnNlZCBhcyAke2Zvcm1hdH1gKQogICAgICApOwogICAgfQogIH0KCiAgLy8gaWYgeW91IHdhbnQgdG8gb3V0cHV0IGEgdGVjaG5pY2FsIGZvcm1hdCAoZS5nLiBSRkMgMjgyMiksIHRoaXMgaGVscGVyCiAgLy8gaGVscHMgaGFuZGxlIHRoZSBkZXRhaWxzCiAgZnVuY3Rpb24gdG9UZWNoRm9ybWF0KGR0LCBmb3JtYXQsIGFsbG93WiA9IHRydWUpIHsKICAgIHJldHVybiBkdC5pc1ZhbGlkCiAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZShMb2NhbGUuY3JlYXRlKCJlbi1VUyIpLCB7CiAgICAgICAgICBhbGxvd1osCiAgICAgICAgICBmb3JjZVNpbXBsZTogdHJ1ZSwKICAgICAgICB9KS5mb3JtYXREYXRlVGltZUZyb21TdHJpbmcoZHQsIGZvcm1hdCkKICAgICAgOiBudWxsOwogIH0KCiAgZnVuY3Rpb24gdG9JU09EYXRlKG8sIGV4dGVuZGVkKSB7CiAgICBjb25zdCBsb25nRm9ybWF0ID0gby5jLnllYXIgPiA5OTk5IHx8IG8uYy55ZWFyIDwgMDsKICAgIGxldCBjID0gIiI7CiAgICBpZiAobG9uZ0Zvcm1hdCAmJiBvLmMueWVhciA+PSAwKSBjICs9ICIrIjsKICAgIGMgKz0gcGFkU3RhcnQoby5jLnllYXIsIGxvbmdGb3JtYXQgPyA2IDogNCk7CgogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5tb250aCk7CiAgICAgIGMgKz0gIi0iOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfSBlbHNlIHsKICAgICAgYyArPSBwYWRTdGFydChvLmMubW9udGgpOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5kYXkpOwogICAgfQogICAgcmV0dXJuIGM7CiAgfQoKICBmdW5jdGlvbiB0b0lTT1RpbWUoCiAgICBvLAogICAgZXh0ZW5kZWQsCiAgICBzdXBwcmVzc1NlY29uZHMsCiAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgIGluY2x1ZGVPZmZzZXQsCiAgICBleHRlbmRlZFpvbmUKICApIHsKICAgIGxldCBjID0gcGFkU3RhcnQoby5jLmhvdXIpOwogICAgaWYgKGV4dGVuZGVkKSB7CiAgICAgIGMgKz0gIjoiOwogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8IG8uYy5zZWNvbmQgIT09IDAgfHwgIXN1cHByZXNzU2Vjb25kcykgewogICAgICAgIGMgKz0gIjoiOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjICs9IHBhZFN0YXJ0KG8uYy5taW51dGUpOwogICAgfQoKICAgIGlmIChvLmMubWlsbGlzZWNvbmQgIT09IDAgfHwgby5jLnNlY29uZCAhPT0gMCB8fCAhc3VwcHJlc3NTZWNvbmRzKSB7CiAgICAgIGMgKz0gcGFkU3RhcnQoby5jLnNlY29uZCk7CgogICAgICBpZiAoby5jLm1pbGxpc2Vjb25kICE9PSAwIHx8ICFzdXBwcmVzc01pbGxpc2Vjb25kcykgewogICAgICAgIGMgKz0gIi4iOwogICAgICAgIGMgKz0gcGFkU3RhcnQoby5jLm1pbGxpc2Vjb25kLCAzKTsKICAgICAgfQogICAgfQoKICAgIGlmIChpbmNsdWRlT2Zmc2V0KSB7CiAgICAgIGlmIChvLmlzT2Zmc2V0Rml4ZWQgJiYgby5vZmZzZXQgPT09IDAgJiYgIWV4dGVuZGVkWm9uZSkgewogICAgICAgIGMgKz0gIloiOwogICAgICB9IGVsc2UgaWYgKG8ubyA8IDApIHsKICAgICAgICBjICs9ICItIjsKICAgICAgICBjICs9IHBhZFN0YXJ0KE1hdGgudHJ1bmMoLW8ubyAvIDYwKSk7CiAgICAgICAgYyArPSAiOiI7CiAgICAgICAgYyArPSBwYWRTdGFydChNYXRoLnRydW5jKC1vLm8gJSA2MCkpOwogICAgICB9IGVsc2UgewogICAgICAgIGMgKz0gIisiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gLyA2MCkpOwogICAgICAgIGMgKz0gIjoiOwogICAgICAgIGMgKz0gcGFkU3RhcnQoTWF0aC50cnVuYyhvLm8gJSA2MCkpOwogICAgICB9CiAgICB9CgogICAgaWYgKGV4dGVuZGVkWm9uZSkgewogICAgICBjICs9ICJbIiArIG8uem9uZS5pYW5hTmFtZSArICJdIjsKICAgIH0KICAgIHJldHVybiBjOwogIH0KCiAgLy8gZGVmYXVsdHMgZm9yIHVuc3BlY2lmaWVkIHVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzCiAgY29uc3QgZGVmYXVsdFVuaXRWYWx1ZXMgPSB7CiAgICAgIG1vbnRoOiAxLAogICAgICBkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0V2Vla1VuaXRWYWx1ZXMgPSB7CiAgICAgIHdlZWtOdW1iZXI6IDEsCiAgICAgIHdlZWtkYXk6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH0sCiAgICBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXMgPSB7CiAgICAgIG9yZGluYWw6IDEsCiAgICAgIGhvdXI6IDAsCiAgICAgIG1pbnV0ZTogMCwKICAgICAgc2Vjb25kOiAwLAogICAgICBtaWxsaXNlY29uZDogMCwKICAgIH07CgogIC8vIFVuaXRzIGluIHRoZSBzdXBwb3J0ZWQgY2FsZW5kYXJzLCBzb3J0ZWQgYnkgYmlnbmVzcwogIGNvbnN0IG9yZGVyZWRVbml0cyA9IFsieWVhciIsICJtb250aCIsICJkYXkiLCAiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pbGxpc2Vjb25kIl0sCiAgICBvcmRlcmVkV2Vla1VuaXRzID0gWwogICAgICAid2Vla1llYXIiLAogICAgICAid2Vla051bWJlciIsCiAgICAgICJ3ZWVrZGF5IiwKICAgICAgImhvdXIiLAogICAgICAibWludXRlIiwKICAgICAgInNlY29uZCIsCiAgICAgICJtaWxsaXNlY29uZCIsCiAgICBdLAogICAgb3JkZXJlZE9yZGluYWxVbml0cyA9IFsieWVhciIsICJvcmRpbmFsIiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWxsaXNlY29uZCJdOwoKICAvLyBzdGFuZGFyZGl6ZSBjYXNlIGFuZCBwbHVyYWxpdHkgaW4gdW5pdHMKICBmdW5jdGlvbiBub3JtYWxpemVVbml0KHVuaXQpIHsKICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB7CiAgICAgIHllYXI6ICJ5ZWFyIiwKICAgICAgeWVhcnM6ICJ5ZWFyIiwKICAgICAgbW9udGg6ICJtb250aCIsCiAgICAgIG1vbnRoczogIm1vbnRoIiwKICAgICAgZGF5OiAiZGF5IiwKICAgICAgZGF5czogImRheSIsCiAgICAgIGhvdXI6ICJob3VyIiwKICAgICAgaG91cnM6ICJob3VyIiwKICAgICAgbWludXRlOiAibWludXRlIiwKICAgICAgbWludXRlczogIm1pbnV0ZSIsCiAgICAgIHF1YXJ0ZXI6ICJxdWFydGVyIiwKICAgICAgcXVhcnRlcnM6ICJxdWFydGVyIiwKICAgICAgc2Vjb25kOiAic2Vjb25kIiwKICAgICAgc2Vjb25kczogInNlY29uZCIsCiAgICAgIG1pbGxpc2Vjb25kOiAibWlsbGlzZWNvbmQiLAogICAgICBtaWxsaXNlY29uZHM6ICJtaWxsaXNlY29uZCIsCiAgICAgIHdlZWtkYXk6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla2RheXM6ICJ3ZWVrZGF5IiwKICAgICAgd2Vla251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrc251bWJlcjogIndlZWtOdW1iZXIiLAogICAgICB3ZWVrbnVtYmVyczogIndlZWtOdW1iZXIiLAogICAgICB3ZWVreWVhcjogIndlZWtZZWFyIiwKICAgICAgd2Vla3llYXJzOiAid2Vla1llYXIiLAogICAgICBvcmRpbmFsOiAib3JkaW5hbCIsCiAgICB9W3VuaXQudG9Mb3dlckNhc2UoKV07CgogICAgaWYgKCFub3JtYWxpemVkKSB0aHJvdyBuZXcgSW52YWxpZFVuaXRFcnJvcih1bml0KTsKCiAgICByZXR1cm4gbm9ybWFsaXplZDsKICB9CgogIC8vIHRoaXMgaXMgYSBkdW1iZWQgZG93biB2ZXJzaW9uIG9mIGZyb21PYmplY3QoKSB0aGF0IHJ1bnMgYWJvdXQgNjAlIGZhc3RlcgogIC8vIGJ1dCBkb2Vzbid0IGRvIGFueSB2YWxpZGF0aW9uLCBtYWtlcyBhIGJ1bmNoIG9mIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgdW5pdHMKICAvLyBhcmUgcHJlc2VudCwgYW5kIHNvIG9uLgogIGZ1bmN0aW9uIHF1aWNrRFQob2JqLCBvcHRzKSB7CiAgICBjb25zdCB6b25lID0gbm9ybWFsaXplWm9uZShvcHRzLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgbG9jID0gTG9jYWxlLmZyb21PYmplY3Qob3B0cyksCiAgICAgIHRzTm93ID0gU2V0dGluZ3Mubm93KCk7CgogICAgbGV0IHRzLCBvOwoKICAgIC8vIGFzc3VtZSB3ZSBoYXZlIHRoZSBoaWdoZXItb3JkZXIgdW5pdHMKICAgIGlmICghaXNVbmRlZmluZWQob2JqLnllYXIpKSB7CiAgICAgIGZvciAoY29uc3QgdSBvZiBvcmRlcmVkVW5pdHMpIHsKICAgICAgICBpZiAoaXNVbmRlZmluZWQob2JqW3VdKSkgewogICAgICAgICAgb2JqW3VdID0gZGVmYXVsdFVuaXRWYWx1ZXNbdV07CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBpbnZhbGlkID0gaGFzSW52YWxpZEdyZWdvcmlhbkRhdGEob2JqKSB8fCBoYXNJbnZhbGlkVGltZURhdGEob2JqKTsKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgY29uc3Qgb2Zmc2V0UHJvdmlzID0gem9uZS5vZmZzZXQodHNOb3cpOwogICAgICBbdHMsIG9dID0gb2JqVG9UUyhvYmosIG9mZnNldFByb3Zpcywgem9uZSk7CiAgICB9IGVsc2UgewogICAgICB0cyA9IHRzTm93OwogICAgfQoKICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoeyB0cywgem9uZSwgbG9jLCBvIH0pOwogIH0KCiAgZnVuY3Rpb24gZGlmZlJlbGF0aXZlKHN0YXJ0LCBlbmQsIG9wdHMpIHsKICAgIGNvbnN0IHJvdW5kID0gaXNVbmRlZmluZWQob3B0cy5yb3VuZCkgPyB0cnVlIDogb3B0cy5yb3VuZCwKICAgICAgZm9ybWF0ID0gKGMsIHVuaXQpID0+IHsKICAgICAgICBjID0gcm91bmRUbyhjLCByb3VuZCB8fCBvcHRzLmNhbGVuZGFyeSA/IDAgOiAyLCB0cnVlKTsKICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBlbmQubG9jLmNsb25lKG9wdHMpLnJlbEZvcm1hdHRlcihvcHRzKTsKICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChjLCB1bml0KTsKICAgICAgfSwKICAgICAgZGlmZmVyID0gKHVuaXQpID0+IHsKICAgICAgICBpZiAob3B0cy5jYWxlbmRhcnkpIHsKICAgICAgICAgIGlmICghZW5kLmhhc1NhbWUoc3RhcnQsIHVuaXQpKSB7CiAgICAgICAgICAgIHJldHVybiBlbmQuc3RhcnRPZih1bml0KS5kaWZmKHN0YXJ0LnN0YXJ0T2YodW5pdCksIHVuaXQpLmdldCh1bml0KTsKICAgICAgICAgIH0gZWxzZSByZXR1cm4gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIGVuZC5kaWZmKHN0YXJ0LCB1bml0KS5nZXQodW5pdCk7CiAgICAgICAgfQogICAgICB9OwoKICAgIGlmIChvcHRzLnVuaXQpIHsKICAgICAgcmV0dXJuIGZvcm1hdChkaWZmZXIob3B0cy51bml0KSwgb3B0cy51bml0KTsKICAgIH0KCiAgICBmb3IgKGNvbnN0IHVuaXQgb2Ygb3B0cy51bml0cykgewogICAgICBjb25zdCBjb3VudCA9IGRpZmZlcih1bml0KTsKICAgICAgaWYgKE1hdGguYWJzKGNvdW50KSA+PSAxKSB7CiAgICAgICAgcmV0dXJuIGZvcm1hdChjb3VudCwgdW5pdCk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmb3JtYXQoc3RhcnQgPiBlbmQgPyAtMCA6IDAsIG9wdHMudW5pdHNbb3B0cy51bml0cy5sZW5ndGggLSAxXSk7CiAgfQoKICBmdW5jdGlvbiBsYXN0T3B0cyhhcmdMaXN0KSB7CiAgICBsZXQgb3B0cyA9IHt9LAogICAgICBhcmdzOwogICAgaWYgKGFyZ0xpc3QubGVuZ3RoID4gMCAmJiB0eXBlb2YgYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdID09PSAib2JqZWN0IikgewogICAgICBvcHRzID0gYXJnTGlzdFthcmdMaXN0Lmxlbmd0aCAtIDFdOwogICAgICBhcmdzID0gQXJyYXkuZnJvbShhcmdMaXN0KS5zbGljZSgwLCBhcmdMaXN0Lmxlbmd0aCAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgYXJncyA9IEFycmF5LmZyb20oYXJnTGlzdCk7CiAgICB9CiAgICByZXR1cm4gW29wdHMsIGFyZ3NdOwogIH0KCiAgLyoqCiAgICogQSBEYXRlVGltZSBpcyBhbiBpbW11dGFibGUgZGF0YSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZSBhbmQgYWNjb21wYW55aW5nIG1ldGhvZHMuIEl0IGNvbnRhaW5zIGNsYXNzIGFuZCBpbnN0YW5jZSBtZXRob2RzIGZvciBjcmVhdGluZywgcGFyc2luZywgaW50ZXJyb2dhdGluZywgdHJhbnNmb3JtaW5nLCBhbmQgZm9ybWF0dGluZyB0aGVtLgogICAqCiAgICogQSBEYXRlVGltZSBjb21wcmlzZXMgb2Y6CiAgICogKiBBIHRpbWVzdGFtcC4gRWFjaCBEYXRlVGltZSBpbnN0YW5jZSByZWZlcnMgdG8gYSBzcGVjaWZpYyBtaWxsaXNlY29uZCBvZiB0aGUgVW5peCBlcG9jaC4KICAgKiAqIEEgdGltZSB6b25lLiBFYWNoIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgaW4gdGhlIGNvbnRleHQgb2YgYSBzcGVjaWZpYyB6b25lIChieSBkZWZhdWx0IHRoZSBsb2NhbCBzeXN0ZW0ncyB6b25lKS4KICAgKiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB0aGF0IGVmZmVjdCBob3cgb3V0cHV0IHN0cmluZ3MgYXJlIGZvcm1hdHRlZCwgc3VjaCBhcyBgbG9jYWxlYCwgYG51bWJlcmluZ1N5c3RlbWAsIGFuZCBgb3V0cHV0Q2FsZW5kYXJgLgogICAqCiAgICogSGVyZSBpcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlczoKICAgKgogICAqICogKipDcmVhdGlvbioqOiBUbyBjcmVhdGUgYSBEYXRlVGltZSBmcm9tIGl0cyBjb21wb25lbnRzLCB1c2Ugb25lIG9mIGl0cyBmYWN0b3J5IGNsYXNzIG1ldGhvZHM6IHtAbGluayBEYXRlVGltZS5sb2NhbH0sIHtAbGluayBEYXRlVGltZS51dGN9LCBhbmQgKG1vc3QgZmxleGlibHkpIHtAbGluayBEYXRlVGltZS5mcm9tT2JqZWN0fS4gVG8gY3JlYXRlIG9uZSBmcm9tIGEgc3RhbmRhcmQgc3RyaW5nIGZvcm1hdCwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSVNPfSwge0BsaW5rIERhdGVUaW1lLmZyb21IVFRQfSwgYW5kIHtAbGluayBEYXRlVGltZS5mcm9tUkZDMjgyMn0uIFRvIGNyZWF0ZSBvbmUgZnJvbSBhIGN1c3RvbSBzdHJpbmcgZm9ybWF0LCB1c2Uge0BsaW5rIERhdGVUaW1lLmZyb21Gb3JtYXR9LiBUbyBjcmVhdGUgb25lIGZyb20gYSBuYXRpdmUgSlMgZGF0ZSwgdXNlIHtAbGluayBEYXRlVGltZS5mcm9tSlNEYXRlfS4KICAgKiAqICoqR3JlZ29yaWFuIGNhbGVuZGFyIGFuZCB0aW1lKio6IFRvIGV4YW1pbmUgdGhlIEdyZWdvcmlhbiBwcm9wZXJ0aWVzIG9mIGEgRGF0ZVRpbWUgaW5kaXZpZHVhbGx5IChpLmUgYXMgb3Bwb3NlZCB0byBjb2xsZWN0aXZlbHkgdGhyb3VnaCB7QGxpbmsgRGF0ZVRpbWUjdG9PYmplY3R9KSwgdXNlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjeWVhcn0sIHtAbGluayBEYXRlVGltZSNtb250aH0sCiAgICoge0BsaW5rIERhdGVUaW1lI2RheX0sIHtAbGluayBEYXRlVGltZSNob3VyfSwge0BsaW5rIERhdGVUaW1lI21pbnV0ZX0sIHtAbGluayBEYXRlVGltZSNzZWNvbmR9LCB7QGxpbmsgRGF0ZVRpbWUjbWlsbGlzZWNvbmR9IGFjY2Vzc29ycy4KICAgKiAqICoqV2VlayBjYWxlbmRhcioqOiBGb3IgSVNPIHdlZWsgY2FsZW5kYXIgYXR0cmlidXRlcywgc2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjd2Vla1llYXJ9LCB7QGxpbmsgRGF0ZVRpbWUjd2Vla051bWJlcn0sIGFuZCB7QGxpbmsgRGF0ZVRpbWUjd2Vla2RheX0gYWNjZXNzb3JzLgogICAqICogKipDb25maWd1cmF0aW9uKiogU2VlIHRoZSB7QGxpbmsgRGF0ZVRpbWUjbG9jYWxlfSBhbmQge0BsaW5rIERhdGVUaW1lI251bWJlcmluZ1N5c3RlbX0gYWNjZXNzb3JzLgogICAqICogKipUcmFuc2Zvcm1hdGlvbioqOiBUbyB0cmFuc2Zvcm0gdGhlIERhdGVUaW1lIGludG8gb3RoZXIgRGF0ZVRpbWVzLCB1c2Uge0BsaW5rIERhdGVUaW1lI3NldH0sIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0sIHtAbGluayBEYXRlVGltZSNzZXRab25lfSwge0BsaW5rIERhdGVUaW1lI3NldExvY2FsZX0sIHtAbGluayBEYXRlVGltZS5wbHVzfSwge0BsaW5rIERhdGVUaW1lI21pbnVzfSwge0BsaW5rIERhdGVUaW1lI2VuZE9mfSwge0BsaW5rIERhdGVUaW1lI3N0YXJ0T2Z9LCB7QGxpbmsgRGF0ZVRpbWUjdG9VVEN9LCBhbmQge0BsaW5rIERhdGVUaW1lI3RvTG9jYWx9LgogICAqICogKipPdXRwdXQqKjogVG8gY29udmVydCB0aGUgRGF0ZVRpbWUgdG8gb3RoZXIgcmVwcmVzZW50YXRpb25zLCB1c2UgdGhlIHtAbGluayBEYXRlVGltZSN0b1JlbGF0aXZlfSwge0BsaW5rIERhdGVUaW1lI3RvUmVsYXRpdmVDYWxlbmRhcn0sIHtAbGluayBEYXRlVGltZSN0b0pTT059LCB7QGxpbmsgRGF0ZVRpbWUjdG9JU099LCB7QGxpbmsgRGF0ZVRpbWUjdG9IVFRQfSwge0BsaW5rIERhdGVUaW1lI3RvT2JqZWN0fSwge0BsaW5rIERhdGVUaW1lI3RvUkZDMjgyMn0sIHtAbGluayBEYXRlVGltZSN0b1N0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30sIHtAbGluayBEYXRlVGltZSN0b0Zvcm1hdH0sIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30gYW5kIHtAbGluayBEYXRlVGltZSN0b0pTRGF0ZX0uCiAgICoKICAgKiBUaGVyZSdzIHBsZW50eSBvdGhlcnMgZG9jdW1lbnRlZCBiZWxvdy4gSW4gYWRkaXRpb24sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN1YnRsZXIgdG9waWNzIGxpa2UgaW50ZXJuYXRpb25hbGl6YXRpb24sIHRpbWUgem9uZXMsIGFsdGVybmF0aXZlIGNhbGVuZGFycywgdmFsaWRpdHksIGFuZCBzbyBvbiwgc2VlIHRoZSBleHRlcm5hbCBkb2N1bWVudGF0aW9uLgogICAqLwogIGNsYXNzIERhdGVUaW1lIHsKICAgIC8qKgogICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0cnVjdG9yKGNvbmZpZykgewogICAgICBjb25zdCB6b25lID0gY29uZmlnLnpvbmUgfHwgU2V0dGluZ3MuZGVmYXVsdFpvbmU7CgogICAgICBsZXQgaW52YWxpZCA9CiAgICAgICAgY29uZmlnLmludmFsaWQgfHwKICAgICAgICAoTnVtYmVyLmlzTmFOKGNvbmZpZy50cykgPyBuZXcgSW52YWxpZCgiaW52YWxpZCBpbnB1dCIpIDogbnVsbCkgfHwKICAgICAgICAoIXpvbmUuaXNWYWxpZCA/IHVuc3VwcG9ydGVkWm9uZSh6b25lKSA6IG51bGwpOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLnRzID0gaXNVbmRlZmluZWQoY29uZmlnLnRzKSA/IFNldHRpbmdzLm5vdygpIDogY29uZmlnLnRzOwoKICAgICAgbGV0IGMgPSBudWxsLAogICAgICAgIG8gPSBudWxsOwogICAgICBpZiAoIWludmFsaWQpIHsKICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBjb25maWcub2xkICYmIGNvbmZpZy5vbGQudHMgPT09IHRoaXMudHMgJiYgY29uZmlnLm9sZC56b25lLmVxdWFscyh6b25lKTsKCiAgICAgICAgaWYgKHVuY2hhbmdlZCkgewogICAgICAgICAgW2MsIG9dID0gW2NvbmZpZy5vbGQuYywgY29uZmlnLm9sZC5vXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY29uc3Qgb3QgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGMgPSB0c1RvT2JqKHRoaXMudHMsIG90KTsKICAgICAgICAgIGludmFsaWQgPSBOdW1iZXIuaXNOYU4oYy55ZWFyKSA/IG5ldyBJbnZhbGlkKCJpbnZhbGlkIGlucHV0IikgOiBudWxsOwogICAgICAgICAgYyA9IGludmFsaWQgPyBudWxsIDogYzsKICAgICAgICAgIG8gPSBpbnZhbGlkID8gbnVsbCA6IG90OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICAgKi8KICAgICAgdGhpcy5fem9uZSA9IHpvbmU7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMubG9jID0gY29uZmlnLmxvYyB8fCBMb2NhbGUuY3JlYXRlKCk7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuaW52YWxpZCA9IGludmFsaWQ7CiAgICAgIC8qKgogICAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMud2Vla0RhdGEgPSBudWxsOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmMgPSBjOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLm8gPSBvOwogICAgICAvKioKICAgICAgICogQGFjY2VzcyBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLmlzTHV4b25EYXRlVGltZSA9IHRydWU7CiAgICB9CgogICAgLy8gQ09OU1RSVUNUCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFudCwgaW4gdGhlIHN5c3RlbSdzIHRpbWUgem9uZS4KICAgICAqCiAgICAgKiBVc2UgU2V0dGluZ3MgdG8gb3ZlcnJpZGUgdGhlc2UgZGVmYXVsdCB2YWx1ZXMgaWYgbmVlZGVkLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oKSAvL34+IG5vdyBpbiB0aGUgSVNPIGZvcm1hdAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBub3coKSB7CiAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoe30pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbG9jYWwgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbeWVhcl0gLSBUaGUgY2FsZW5kYXIgeWVhci4gSWYgb21pdHRlZCAoYXMgaW4sIGNhbGwgYGxvY2FsKClgIHdpdGggbm8gYXJndW1lbnRzKSwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbW9udGg9MV0gLSBUaGUgbW9udGgsIDEtaW5kZXhlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFtkYXk9MV0gLSBUaGUgZGF5IG9mIHRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiBub3cKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKHsgem9uZTogIkFtZXJpY2EvTmV3X1lvcmsiIH0pICAgICAgLy9+PiBub3csIGluIFVTIGVhc3QgY29hc3QgdGltZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IDIwMTctMDEtMDFUMDA6MDA6MDAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgeyBsb2NhbGU6ICJmciIgfSkgICAgIC8vfj4gMjAxNy0wMy0xMlQwMDowMDowMCwgd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgeyB6b25lOiAidXRjIiB9KSAgIC8vfj4gMjAxNy0wMy0xMlQwNTowMDowMCwgaW4gVVRDCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCAzLCAxMiwgNSwgNDUpICAgICAgICAgICAgICAgIC8vfj4gMjAxNy0wMy0xMlQwNTo0NTowMAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMywgMTIsIDUsIDQ1LCAxMCkgICAgICAgICAgICAvL34+IDIwMTctMDMtMTJUMDU6NDU6MTAKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSkgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBsb2NhbCgpIHsKICAgICAgY29uc3QgW29wdHMsIGFyZ3NdID0gbGFzdE9wdHMoYXJndW1lbnRzKSwKICAgICAgICBbeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kXSA9IGFyZ3M7CiAgICAgIHJldHVybiBxdWlja0RUKHsgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kIH0sIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgaW4gVVRDCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3llYXJdIC0gVGhlIGNhbGVuZGFyIHllYXIuIElmIG9taXR0ZWQgKGFzIGluLCBjYWxsIGB1dGMoKWAgd2l0aCBubyBhcmd1bWVudHMpLCB0aGUgY3VycmVudCB0aW1lIHdpbGwgYmUgdXNlZAogICAgICogQHBhcmFtIHtudW1iZXJ9IFttb250aD0xXSAtIFRoZSBtb250aCwgMS1pbmRleGVkCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RheT0xXSAtIFRoZSBkYXkgb2YgdGhlIG1vbnRoCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2hvdXI9MF0gLSBUaGUgaG91ciBvZiB0aGUgZGF5LCBpbiAyNC1ob3VyIHRpbWUKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbWludXRlPTBdIC0gVGhlIG1pbnV0ZSBvZiB0aGUgaG91ciwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NlY29uZD0wXSAtIFRoZSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgbWVhbmluZyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDU5CiAgICAgKiBAcGFyYW0ge251bWJlcn0gW21pbGxpc2Vjb25kPTBdIC0gVGhlIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIG1lYW5pbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCA5OTkKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5sb2NhbGVdIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL34+IG5vdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAxLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTAxVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDAwOjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjAwOjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgeyBsb2NhbGU6ICJmciIgfSkgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjAwWiB3aXRoIGEgRnJlbmNoIGxvY2FsZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTApICAgICAgICAgICAgICAgICAgICAgICAgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwWgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTcsIDMsIDEyLCA1LCA0NSwgMTAsIDc2NSwgeyBsb2NhbGU6ICJmciIgfSkgLy9+PiAyMDE3LTAzLTEyVDA1OjQ1OjEwLjc2NVogd2l0aCBhIEZyZW5jaCBsb2NhbGUKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgdXRjKCkgewogICAgICBjb25zdCBbb3B0cywgYXJnc10gPSBsYXN0T3B0cyhhcmd1bWVudHMpLAogICAgICAgIFt5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmRdID0gYXJnczsKCiAgICAgIG9wdHMuem9uZSA9IEZpeGVkT2Zmc2V0Wm9uZS51dGNJbnN0YW5jZTsKICAgICAgcmV0dXJuIHF1aWNrRFQoeyB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQgfSwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgSmF2YVNjcmlwdCBEYXRlIG9iamVjdC4gVXNlcyB0aGUgZGVmYXVsdCB6b25lLgogICAgICogQHBhcmFtIHtEYXRlfSBkYXRlIC0gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xab25lfSBbb3B0aW9ucy56b25lPSdsb2NhbCddIC0gdGhlIHpvbmUgdG8gcGxhY2UgdGhlIERhdGVUaW1lIGludG8KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUpTRGF0ZShkYXRlLCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgdHMgPSBpc0RhdGUoZGF0ZSkgPyBkYXRlLnZhbHVlT2YoKSA6IE5hTjsKICAgICAgaWYgKE51bWJlci5pc05hTih0cykpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiaW52YWxpZCBpbnB1dCIpOwogICAgICB9CgogICAgICBjb25zdCB6b25lVG9Vc2UgPSBub3JtYWxpemVab25lKG9wdGlvbnMuem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoIXpvbmVUb1VzZS5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQodW5zdXBwb3J0ZWRab25lKHpvbmVUb1VzZSkpOwogICAgICB9CgogICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsKICAgICAgICB0czogdHMsCiAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaWxsaXNlY29uZHMgLSBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MCBVVEMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRpb25zLnpvbmU9J2xvY2FsJ10gLSB0aGUgem9uZSB0byBwbGFjZSB0aGUgRGF0ZVRpbWUgaW50bwogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmxvY2FsZV0gLSBhIGxvY2FsZSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSB0aGUgbnVtYmVyaW5nIHN5c3RlbSB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tTWlsbGlzKG1pbGxpc2Vjb25kcywgb3B0aW9ucyA9IHt9KSB7CiAgICAgIGlmICghaXNOdW1iZXIobWlsbGlzZWNvbmRzKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigKICAgICAgICAgIGBmcm9tTWlsbGlzIHJlcXVpcmVzIGEgbnVtZXJpY2FsIGlucHV0LCBidXQgcmVjZWl2ZWQgYSAke3R5cGVvZiBtaWxsaXNlY29uZHN9IHdpdGggdmFsdWUgJHttaWxsaXNlY29uZHN9YAogICAgICAgICk7CiAgICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzIDwgLU1BWF9EQVRFIHx8IG1pbGxpc2Vjb25kcyA+IE1BWF9EQVRFKSB7CiAgICAgICAgLy8gdGhpcyBpc24ndCBwZXJmZWN0IGJlY2F1c2UgYmVjYXVzZSB3ZSBjYW4gc3RpbGwgZW5kIHVwIG91dCBvZiByYW5nZSBiZWNhdXNlIG9mIGFkZGl0aW9uYWwgc2hpZnRpbmcsIGJ1dCBpdCdzIGEgc3RhcnQKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCgiVGltZXN0YW1wIG91dCBvZiByYW5nZSIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IG1pbGxpc2Vjb25kcywKICAgICAgICAgIHpvbmU6IG5vcm1hbGl6ZVpvbmUob3B0aW9ucy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSksCiAgICAgICAgICBsb2M6IExvY2FsZS5mcm9tT2JqZWN0KG9wdGlvbnMpLAogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChtZWFuaW5nIHNpbmNlIDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuIFVzZXMgdGhlIGRlZmF1bHQgem9uZS4KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWNvbmRzIC0gYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSAxOTcwIFVUQwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBEYXRlVGltZQogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdGlvbnMuem9uZT0nbG9jYWwnXSAtIHRoZSB6b25lIHRvIHBsYWNlIHRoZSBEYXRlVGltZSBpbnRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubG9jYWxlXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc3RhdGljIGZyb21TZWNvbmRzKHNlY29uZHMsIG9wdGlvbnMgPSB7fSkgewogICAgICBpZiAoIWlzTnVtYmVyKHNlY29uZHMpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tU2Vjb25kcyByZXF1aXJlcyBhIG51bWVyaWNhbCBpbnB1dCIpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBuZXcgRGF0ZVRpbWUoewogICAgICAgICAgdHM6IHNlY29uZHMgKiAxMDAwLAogICAgICAgICAgem9uZTogbm9ybWFsaXplWm9uZShvcHRpb25zLnpvbmUsIFNldHRpbmdzLmRlZmF1bHRab25lKSwKICAgICAgICAgIGxvYzogTG9jYWxlLmZyb21PYmplY3Qob3B0aW9ucyksCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBKYXZhU2NyaXB0IG9iamVjdCB3aXRoIGtleXMgbGlrZSAneWVhcicgYW5kICdob3VyJyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdHMuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gdGhlIG9iamVjdCB0byBjcmVhdGUgdGhlIERhdGVUaW1lIGZyb20KICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoueWVhciAtIGEgeWVhciwgc3VjaCBhcyAxOTg3CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1vbnRoIC0gYSBtb250aCwgMS0xMgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5kYXkgLSBhIGRheSBvZiB0aGUgbW9udGgsIDEtMzEsIGRlcGVuZGluZyBvbiB0aGUgbW9udGgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoub3JkaW5hbCAtIGRheSBvZiB0aGUgeWVhciwgMS0zNjUgb3IgMzY2CiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLndlZWtZZWFyIC0gYW4gSVNPIHdlZWsgeWVhcgogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai53ZWVrTnVtYmVyIC0gYW4gSVNPIHdlZWsgbnVtYmVyLCBiZXR3ZWVuIDEgYW5kIDUyIG9yIDUzLCBkZXBlbmRpbmcgb24gdGhlIHllYXIKICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvYmoud2Vla2RheSAtIGFuIElTTyB3ZWVrZGF5LCAxLTcsIHdoZXJlIDEgaXMgTW9uZGF5IGFuZCA3IGlzIFN1bmRheQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5ob3VyIC0gaG91ciBvZiB0aGUgZGF5LCAwLTIzCiAgICAgKiBAcGFyYW0ge251bWJlcn0gb2JqLm1pbnV0ZSAtIG1pbnV0ZSBvZiB0aGUgaG91ciwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5zZWNvbmQgLSBzZWNvbmQgb2YgdGhlIG1pbnV0ZSwgMC01OQogICAgICogQHBhcmFtIHtudW1iZXJ9IG9iai5taWxsaXNlY29uZCAtIG1pbGxpc2Vjb25kIG9mIHRoZSBzZWNvbmQsIDAtOTk5CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBpbnRlcnByZXQgdGhlIG51bWJlcnMgaW4gdGhlIGNvbnRleHQgb2YgYSBwYXJ0aWN1bGFyIHpvbmUuIENhbiB0YWtlIGFueSB2YWx1ZSB0YWtlbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0Wm9uZSgpCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgeWVhcjogMTk4MiwgbW9udGg6IDUsIGRheTogMjV9KS50b0lTT0RhdGUoKSAvLz0+ICcxOTgyLTA1LTI1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IDE5ODIgfSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wMS0wMScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0pIC8vfj4gdG9kYXkgYXQgMTA6MjY6MDYKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ3V0YycgfSksCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgaG91cjogMTAsIG1pbnV0ZTogMjYsIHNlY29uZDogNiB9LCB7IHpvbmU6ICdsb2NhbCcgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21PYmplY3QoeyBob3VyOiAxMCwgbWludXRlOiAyNiwgc2Vjb25kOiA2IH0sIHsgem9uZTogJ0FtZXJpY2EvTmV3X1lvcmsnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tT2JqZWN0KHsgd2Vla1llYXI6IDIwMTYsIHdlZWtOdW1iZXI6IDIsIHdlZWtkYXk6IDMgfSkudG9JU09EYXRlKCkgLy89PiAnMjAxNi0wMS0xMycKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbU9iamVjdChvYmosIG9wdHMgPSB7fSkgewogICAgICBvYmogPSBvYmogfHwge307CiAgICAgIGNvbnN0IHpvbmVUb1VzZSA9IG5vcm1hbGl6ZVpvbmUob3B0cy56b25lLCBTZXR0aW5ncy5kZWZhdWx0Wm9uZSk7CiAgICAgIGlmICghem9uZVRvVXNlLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZVRvVXNlKSk7CiAgICAgIH0KCiAgICAgIGNvbnN0IHRzTm93ID0gU2V0dGluZ3Mubm93KCksCiAgICAgICAgb2Zmc2V0UHJvdmlzID0gIWlzVW5kZWZpbmVkKG9wdHMuc3BlY2lmaWNPZmZzZXQpCiAgICAgICAgICA/IG9wdHMuc3BlY2lmaWNPZmZzZXQKICAgICAgICAgIDogem9uZVRvVXNlLm9mZnNldCh0c05vdyksCiAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZU9iamVjdChvYmosIG5vcm1hbGl6ZVVuaXQpLAogICAgICAgIGNvbnRhaW5zT3JkaW5hbCA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yWWVhciA9ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLnllYXIpLAogICAgICAgIGNvbnRhaW5zR3JlZ29yTUQgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5tb250aCkgfHwgIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQuZGF5KSwKICAgICAgICBjb250YWluc0dyZWdvciA9IGNvbnRhaW5zR3JlZ29yWWVhciB8fCBjb250YWluc0dyZWdvck1ELAogICAgICAgIGRlZmluaXRlV2Vla0RlZiA9IG5vcm1hbGl6ZWQud2Vla1llYXIgfHwgbm9ybWFsaXplZC53ZWVrTnVtYmVyLAogICAgICAgIGxvYyA9IExvY2FsZS5mcm9tT2JqZWN0KG9wdHMpOwoKICAgICAgLy8gY2FzZXM6CiAgICAgIC8vIGp1c3QgYSB3ZWVrZGF5IC0+IHRoaXMgd2VlaydzIGluc3RhbmNlIG9mIHRoYXQgd2Vla2RheSwgbm8gd29ycmllcwogICAgICAvLyAoZ3JlZ29yaWFuIGRhdGEgb3Igb3JkaW5hbCkgKyAod2Vla1llYXIgb3Igd2Vla051bWJlcikgLT4gZXJyb3IKICAgICAgLy8gKGdyZWdvcmlhbiBtb250aCBvciBkYXkpICsgb3JkaW5hbCAtPiBlcnJvcgogICAgICAvLyBvdGhlcndpc2UganVzdCB1c2Ugd2Vla3Mgb3Igb3JkaW5hbHMgb3IgZ3JlZ29yaWFuLCBkZXBlbmRpbmcgb24gd2hhdCdzIHNwZWNpZmllZAoKICAgICAgaWYgKChjb250YWluc0dyZWdvciB8fCBjb250YWluc09yZGluYWwpICYmIGRlZmluaXRlV2Vla0RlZikgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigKICAgICAgICAgICJDYW4ndCBtaXggd2Vla1llYXIvd2Vla051bWJlciB1bml0cyB3aXRoIHllYXIvbW9udGgvZGF5IG9yIG9yZGluYWxzIgogICAgICAgICk7CiAgICAgIH0KCiAgICAgIGlmIChjb250YWluc0dyZWdvck1EICYmIGNvbnRhaW5zT3JkaW5hbCkgewogICAgICAgIHRocm93IG5ldyBDb25mbGljdGluZ1NwZWNpZmljYXRpb25FcnJvcigiQ2FuJ3QgbWl4IG9yZGluYWwgZGF0ZXMgd2l0aCBtb250aC9kYXkiKTsKICAgICAgfQoKICAgICAgY29uc3QgdXNlV2Vla0RhdGEgPSBkZWZpbml0ZVdlZWtEZWYgfHwgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiAhY29udGFpbnNHcmVnb3IpOwoKICAgICAgLy8gY29uZmlndXJlIG91cnNlbHZlcyB0byBkZWFsIHdpdGggZ3JlZ29yaWFuIGRhdGVzIG9yIHdlZWsgc3R1ZmYKICAgICAgbGV0IHVuaXRzLAogICAgICAgIGRlZmF1bHRWYWx1ZXMsCiAgICAgICAgb2JqTm93ID0gdHNUb09iaih0c05vdywgb2Zmc2V0UHJvdmlzKTsKICAgICAgaWYgKHVzZVdlZWtEYXRhKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkV2Vla1VuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0V2Vla1VuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9XZWVrKG9iak5vdyk7CiAgICAgIH0gZWxzZSBpZiAoY29udGFpbnNPcmRpbmFsKSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkT3JkaW5hbFVuaXRzOwogICAgICAgIGRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0T3JkaW5hbFVuaXRWYWx1ZXM7CiAgICAgICAgb2JqTm93ID0gZ3JlZ29yaWFuVG9PcmRpbmFsKG9iak5vdyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdW5pdHMgPSBvcmRlcmVkVW5pdHM7CiAgICAgICAgZGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRVbml0VmFsdWVzOwogICAgICB9CgogICAgICAvLyBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3Npbmcgc3R1ZmYKICAgICAgbGV0IGZvdW5kRmlyc3QgPSBmYWxzZTsKICAgICAgZm9yIChjb25zdCB1IG9mIHVuaXRzKSB7CiAgICAgICAgY29uc3QgdiA9IG5vcm1hbGl6ZWRbdV07CiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2KSkgewogICAgICAgICAgZm91bmRGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChmb3VuZEZpcnN0KSB7CiAgICAgICAgICBub3JtYWxpemVkW3VdID0gZGVmYXVsdFZhbHVlc1t1XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9ybWFsaXplZFt1XSA9IG9iak5vd1t1XTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgdmFsdWVzIHdlIGhhdmUgYXJlIGluIHJhbmdlCiAgICAgIGNvbnN0IGhpZ2hlck9yZGVySW52YWxpZCA9IHVzZVdlZWtEYXRhCiAgICAgICAgICA/IGhhc0ludmFsaWRXZWVrRGF0YShub3JtYWxpemVkKQogICAgICAgICAgOiBjb250YWluc09yZGluYWwKICAgICAgICAgID8gaGFzSW52YWxpZE9yZGluYWxEYXRhKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGhhc0ludmFsaWRHcmVnb3JpYW5EYXRhKG5vcm1hbGl6ZWQpLAogICAgICAgIGludmFsaWQgPSBoaWdoZXJPcmRlckludmFsaWQgfHwgaGFzSW52YWxpZFRpbWVEYXRhKG5vcm1hbGl6ZWQpOwoKICAgICAgaWYgKGludmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZChpbnZhbGlkKTsKICAgICAgfQoKICAgICAgLy8gY29tcHV0ZSB0aGUgYWN0dWFsIHRpbWUKICAgICAgY29uc3QgZ3JlZ29yaWFuID0gdXNlV2Vla0RhdGEKICAgICAgICAgID8gd2Vla1RvR3JlZ29yaWFuKG5vcm1hbGl6ZWQpCiAgICAgICAgICA6IGNvbnRhaW5zT3JkaW5hbAogICAgICAgICAgPyBvcmRpbmFsVG9HcmVnb3JpYW4obm9ybWFsaXplZCkKICAgICAgICAgIDogbm9ybWFsaXplZCwKICAgICAgICBbdHNGaW5hbCwgb2Zmc2V0RmluYWxdID0gb2JqVG9UUyhncmVnb3JpYW4sIG9mZnNldFByb3Zpcywgem9uZVRvVXNlKSwKICAgICAgICBpbnN0ID0gbmV3IERhdGVUaW1lKHsKICAgICAgICAgIHRzOiB0c0ZpbmFsLAogICAgICAgICAgem9uZTogem9uZVRvVXNlLAogICAgICAgICAgbzogb2Zmc2V0RmluYWwsCiAgICAgICAgICBsb2MsCiAgICAgICAgfSk7CgogICAgICAvLyBncmVnb3JpYW4gZGF0YSArIHdlZWtkYXkgc2VydmVzIG9ubHkgdG8gdmFsaWRhdGUKICAgICAgaWYgKG5vcm1hbGl6ZWQud2Vla2RheSAmJiBjb250YWluc0dyZWdvciAmJiBvYmoud2Vla2RheSAhPT0gaW5zdC53ZWVrZGF5KSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoCiAgICAgICAgICAibWlzbWF0Y2hlZCB3ZWVrZGF5IiwKICAgICAgICAgIGB5b3UgY2FuJ3Qgc3BlY2lmeSBib3RoIGEgd2Vla2RheSBvZiAke25vcm1hbGl6ZWQud2Vla2RheX0gYW5kIGEgZGF0ZSBvZiAke2luc3QudG9JU08oKX1gCiAgICAgICAgKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGluc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIElTTyA4NjAxIHN0cmluZwogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgSVNPIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5vdXRwdXRDYWxlbmRhcl0gLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubnVtYmVyaW5nU3lzdGVtXSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSVNPKCcyMDE2LTA1LTI1VDA5OjA4OjM0LjEyMyswNjowMCcsIHtzZXRab25lOiB0cnVlfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtMDUtMjVUMDk6MDg6MzQuMTIzJywge3pvbmU6ICd1dGMnfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21JU08oJzIwMTYtVzA1LTQnKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tSVNPKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZUlTT0RhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJJU08gODYwMSIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgRGF0ZVRpbWUgZnJvbSBhbiBSRkMgMjgyMiBzdHJpbmcKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIFJGQyAyODIyIHN0cmluZwogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSBjb252ZXJ0IHRoZSB0aW1lIHRvIHRoaXMgem9uZS4gU2luY2UgdGhlIG9mZnNldCBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBzdHJpbmcgaXRzZWxmLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSBmaXhlZC1vZmZzZXQgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J3N5c3RlbSdzIGxvY2FsZSddIC0gYSBsb2NhbGUgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21SRkMyODIyKCcyNSBOb3YgMjAxNiAxMzoyMzoxMiBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJ0ZyaSwgMjUgTm92IDIwMTYgMTM6MjM6MTIgKzA2MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVJGQzI4MjIoJzI1IE5vdiAyMDE2IDEzOjIzIFonKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tUkZDMjgyMih0ZXh0LCBvcHRzID0ge30pIHsKICAgICAgY29uc3QgW3ZhbHMsIHBhcnNlZFpvbmVdID0gcGFyc2VSRkMyODIyRGF0ZSh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlJGQyAyODIyIiwgdGV4dCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIEhUVFAgaGVhZGVyIGRhdGUKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMy5odG1sI3NlYzMuMy4xCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIHRoZSBIVFRQIGhlYWRlciBkYXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIGNvbnZlcnQgdGhlIHRpbWUgdG8gdGhpcyB6b25lLiBTaW5jZSBIVFRQIGRhdGVzIGFyZSBhbHdheXMgaW4gVVRDLCB0aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGludGVycHJldGF0aW9uIG9mIHN0cmluZywgbWVyZWx5IHRoZSB6b25lIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaXMgZXhwcmVzc2VkIGluLgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggdGhlIGZpeGVkLW9mZnNldCB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nLiBGb3IgSFRUUCBkYXRlcywgdGhpcyBpcyBhbHdheXMgVVRDLCBzbyB0aGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgdGhlIGB6b25lYCBvcHRpb24gdG8gJ3V0YycsIGJ1dCB0aGlzIG9wdGlvbiBpcyBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIG1ldGhvZHMuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMubG9jYWxlPSdzeXN0ZW0ncyBsb2NhbGUnXSAtIGEgbG9jYWxlIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5vdXRwdXRDYWxlbmRhciAtIHRoZSBvdXRwdXQgY2FsZW5kYXIgdG8gc2V0IG9uIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUgaW5zdGFuY2UKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbUhUVFAoJ1N1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3IEdNVCcpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tSFRUUCgnU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0JykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzdGF0aWMgZnJvbUhUVFAodGV4dCwgb3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IFt2YWxzLCBwYXJzZWRab25lXSA9IHBhcnNlSFRUUERhdGUodGV4dCk7CiAgICAgIHJldHVybiBwYXJzZURhdGFUb0RhdGVUaW1lKHZhbHMsIHBhcnNlZFpvbmUsIG9wdHMsICJIVFRQIiwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBEYXRlVGltZSBmcm9tIGFuIGlucHV0IHN0cmluZyBhbmQgZm9ybWF0IHN0cmluZy4KICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZS4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvcGFyc2luZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZm10IC0gdGhlIGZvcm1hdCB0aGUgc3RyaW5nIGlzIGV4cGVjdGVkIHRvIGJlIGluIChzZWUgdGhlIGxpbmsgYmVsb3cgZm9yIHRoZSBmb3JtYXRzKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRvIGFmZmVjdCB0aGUgY3JlYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFtvcHRzLnpvbmU9J2xvY2FsJ10gLSB1c2UgdGhpcyB6b25lIGlmIG5vIG9mZnNldCBpcyBzcGVjaWZpZWQgaW4gdGhlIGlucHV0IHN0cmluZyBpdHNlbGYuIFdpbGwgYWxzbyBjb252ZXJ0IHRoZSBEYXRlVGltZSB0byB0aGlzIHpvbmUKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc2V0Wm9uZT1mYWxzZV0gLSBvdmVycmlkZSB0aGUgem9uZSB3aXRoIGEgem9uZSBzcGVjaWZpZWQgaW4gdGhlIHN0cmluZyBpdHNlbGYsIGlmIGl0IHNwZWNpZmllcyBvbmUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5sb2NhbGU9J2VuLVVTJ10gLSBhIGxvY2FsZSBzdHJpbmcgdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgRGF0ZVRpbWUgdG8gdGhpcyBsb2NhbGUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm51bWJlcmluZ1N5c3RlbSAtIHRoZSBudW1iZXJpbmcgc3lzdGVtIHRvIHVzZSB3aGVuIHBhcnNpbmcuIFdpbGwgYWxzbyBzZXQgdGhlIHJlc3VsdGluZyBEYXRlVGltZSB0byB0aGlzIG51bWJlcmluZyBzeXN0ZW0KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLm91dHB1dENhbGVuZGFyIC0gdGhlIG91dHB1dCBjYWxlbmRhciB0byBzZXQgb24gdGhlIHJlc3VsdGluZyBEYXRlVGltZSBpbnN0YW5jZQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tRm9ybWF0KHRleHQsIGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIGlmIChpc1VuZGVmaW5lZCh0ZXh0KSB8fCBpc1VuZGVmaW5lZChmbXQpKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJmcm9tRm9ybWF0IHJlcXVpcmVzIGFuIGlucHV0IHN0cmluZyBhbmQgYSBmb3JtYXQiKTsKICAgICAgfQoKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRzLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pLAogICAgICAgIFt2YWxzLCBwYXJzZWRab25lLCBzcGVjaWZpY09mZnNldCwgaW52YWxpZF0gPSBwYXJzZUZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICAgIGlmIChpbnZhbGlkKSB7CiAgICAgICAgcmV0dXJuIERhdGVUaW1lLmludmFsaWQoaW52YWxpZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgYGZvcm1hdCAke2ZtdH1gLCB0ZXh0LCBzcGVjaWZpY09mZnNldCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkIHVzZSBmcm9tRm9ybWF0IGluc3RlYWQKICAgICAqLwogICAgc3RhdGljIGZyb21TdHJpbmcodGV4dCwgZm10LCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXQodGV4dCwgZm10LCBvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIERhdGVUaW1lIGZyb20gYSBTUUwgZGF0ZSwgdGltZSwgb3IgZGF0ZXRpbWUKICAgICAqIERlZmF1bHRzIHRvIGVuLVVTIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN5c3RlbSdzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSB0aGUgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMgdG8gYWZmZWN0IHRoZSBjcmVhdGlvbgogICAgICogQHBhcmFtIHtzdHJpbmd8Wm9uZX0gW29wdHMuem9uZT0nbG9jYWwnXSAtIHVzZSB0aGlzIHpvbmUgaWYgbm8gb2Zmc2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgaW5wdXQgc3RyaW5nIGl0c2VsZi4gV2lsbCBhbHNvIGNvbnZlcnQgdGhlIERhdGVUaW1lIHRvIHRoaXMgem9uZQogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zZXRab25lPWZhbHNlXSAtIG92ZXJyaWRlIHRoZSB6b25lIHdpdGggYSB6b25lIHNwZWNpZmllZCBpbiB0aGUgc3RyaW5nIGl0c2VsZiwgaWYgaXQgc3BlY2lmaWVzIG9uZQogICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmxvY2FsZT0nZW4tVVMnXSAtIGEgbG9jYWxlIHN0cmluZyB0byB1c2Ugd2hlbiBwYXJzaW5nLiBXaWxsIGFsc28gc2V0IHRoZSBEYXRlVGltZSB0byB0aGlzIGxvY2FsZQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMubnVtYmVyaW5nU3lzdGVtIC0gdGhlIG51bWJlcmluZyBzeXN0ZW0gdG8gdXNlIHdoZW4gcGFyc2luZy4gV2lsbCBhbHNvIHNldCB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIHRvIHRoaXMgbnVtYmVyaW5nIHN5c3RlbQogICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMub3V0cHV0Q2FsZW5kYXIgLSB0aGUgb3V0cHV0IGNhbGVuZGFyIHRvIHNldCBvbiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lIGluc3RhbmNlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1JykKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmZyb21TUUwoJzIwMTctMDUtMTUgMDk6MTI6MzQnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDInKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIrMDY6MDAnKQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUuZnJvbVNRTCgnMjAxNy0wNS0xNSAwOToxMjozNC4zNDIgQW1lcmljYS9Mb3NfQW5nZWxlcycpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MiBBbWVyaWNhL0xvc19BbmdlbGVzJywgeyBzZXRab25lOiB0cnVlIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcyMDE3LTA1LTE1IDA5OjEyOjM0LjM0MicsIHsgem9uZTogJ0FtZXJpY2EvTG9zX0FuZ2VsZXMnIH0pCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5mcm9tU1FMKCcwOToxMjozNC4zNDInKQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBmcm9tU1FMKHRleHQsIG9wdHMgPSB7fSkgewogICAgICBjb25zdCBbdmFscywgcGFyc2VkWm9uZV0gPSBwYXJzZVNRTCh0ZXh0KTsKICAgICAgcmV0dXJuIHBhcnNlRGF0YVRvRGF0ZVRpbWUodmFscywgcGFyc2VkWm9uZSwgb3B0cywgIlNRTCIsIHRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuIGludmFsaWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIC0gc2ltcGxlIHN0cmluZyBvZiB3aHkgdGhpcyBEYXRlVGltZSBpcyBpbnZhbGlkLiBTaG91bGQgbm90IGNvbnRhaW4gcGFyYW1ldGVycyBvciBhbnl0aGluZyBlbHNlIGRhdGEtZGVwZW5kZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IFtleHBsYW5hdGlvbj1udWxsXSAtIGxvbmdlciBleHBsYW5hdGlvbiwgbWF5IGluY2x1ZGUgcGFyYW1ldGVycyBhbmQgb3RoZXIgdXNlZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXRpYyBpbnZhbGlkKHJlYXNvbiwgZXhwbGFuYXRpb24gPSBudWxsKSB7CiAgICAgIGlmICghcmVhc29uKSB7CiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYSByZWFzb24gdGhlIERhdGVUaW1lIGlzIGludmFsaWQiKTsKICAgICAgfQoKICAgICAgY29uc3QgaW52YWxpZCA9IHJlYXNvbiBpbnN0YW5jZW9mIEludmFsaWQgPyByZWFzb24gOiBuZXcgSW52YWxpZChyZWFzb24sIGV4cGxhbmF0aW9uKTsKCiAgICAgIGlmIChTZXR0aW5ncy50aHJvd09uSW52YWxpZCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0ZVRpbWVFcnJvcihpbnZhbGlkKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IERhdGVUaW1lKHsgaW52YWxpZCB9KTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIERhdGVUaW1lLiBXb3JrcyBhY3Jvc3MgY29udGV4dCBib3VuZGFyaWVzCiAgICAgKiBAcGFyYW0ge29iamVjdH0gbwogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgc3RhdGljIGlzRGF0ZVRpbWUobykgewogICAgICByZXR1cm4gKG8gJiYgby5pc0x1eG9uRGF0ZVRpbWUpIHx8IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSBzZXQgb2Ygb3B0aW9ucwogICAgICogQHBhcmFtIGZvcm1hdE9wdHMKICAgICAqIEBwYXJhbSBsb2NhbGVPcHRzCiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfQogICAgICovCiAgICBzdGF0aWMgcGFyc2VGb3JtYXRGb3JPcHRzKGZvcm1hdE9wdHMsIGxvY2FsZU9wdHMgPSB7fSkgewogICAgICBjb25zdCB0b2tlbkxpc3QgPSBmb3JtYXRPcHRzVG9Ub2tlbnMoZm9ybWF0T3B0cywgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gIXRva2VuTGlzdCA/IG51bGwgOiB0b2tlbkxpc3QubWFwKCh0KSA9PiAodCA/IHQudmFsIDogbnVsbCkpLmpvaW4oIiIpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvZHVjZSB0aGUgdGhlIGZ1bGx5IGV4cGFuZGVkIGZvcm1hdCB0b2tlbiBmb3IgdGhlIGxvY2FsZQogICAgICogRG9lcyBOT1QgcXVvdGUgY2hhcmFjdGVycywgc28gcXVvdGVkIHRva2VucyB3aWxsIG5vdCByb3VuZCB0cmlwIGNvcnJlY3RseQogICAgICogQHBhcmFtIGZtdAogICAgICogQHBhcmFtIGxvY2FsZU9wdHMKICAgICAqIEByZXR1cm5zIHtzdHJpbmd9CiAgICAgKi8KICAgIHN0YXRpYyBleHBhbmRGb3JtYXQoZm10LCBsb2NhbGVPcHRzID0ge30pIHsKICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRNYWNyb1Rva2VucyhGb3JtYXR0ZXIucGFyc2VGb3JtYXQoZm10KSwgTG9jYWxlLmZyb21PYmplY3QobG9jYWxlT3B0cykpOwogICAgICByZXR1cm4gZXhwYW5kZWQubWFwKCh0KSA9PiB0LnZhbCkuam9pbigiIik7CiAgICB9CgogICAgLy8gSU5GTwoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSBvZiB1bml0LgogICAgICogQHBhcmFtIHtzdHJpbmd9IHVuaXQgLSBhIHVuaXQgc3VjaCBhcyAnbWludXRlJyBvciAnZGF5JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNywgNCkuZ2V0KCdtb250aCcpOyAvLz0+IDcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDcsIDQpLmdldCgnZGF5Jyk7IC8vPT4gNAogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICBnZXQodW5pdCkgewogICAgICByZXR1cm4gdGhpc1t1bml0XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQuIEludmFsaWQgRGF0ZVRpbWVzIG9jY3VyIHdoZW46CiAgICAgKiAqIFRoZSBEYXRlVGltZSB3YXMgY3JlYXRlZCBmcm9tIGludmFsaWQgY2FsZW5kYXIgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIDEzdGggbW9udGggb3IgRmVicnVhcnkgMzAKICAgICAqICogVGhlIERhdGVUaW1lIHdhcyBjcmVhdGVkIGJ5IGFuIG9wZXJhdGlvbiBvbiBhbm90aGVyIGludmFsaWQgZGF0ZQogICAgICogQHR5cGUge2Jvb2xlYW59CiAgICAgKi8KICAgIGdldCBpc1ZhbGlkKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID09PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBlcnJvciBjb2RlIGlmIHRoaXMgRGF0ZVRpbWUgaXMgaW52YWxpZCwgb3IgbnVsbCBpZiB0aGUgRGF0ZVRpbWUgaXMgdmFsaWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBpbnZhbGlkUmVhc29uKCkgewogICAgICByZXR1cm4gdGhpcy5pbnZhbGlkID8gdGhpcy5pbnZhbGlkLnJlYXNvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIERhdGVUaW1lIGJlY2FtZSBpbnZhbGlkLCBvciBudWxsIGlmIHRoZSBEYXRlVGltZSBpcyB2YWxpZAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGludmFsaWRFeHBsYW5hdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW52YWxpZCA/IHRoaXMuaW52YWxpZC5leHBsYW5hdGlvbiA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxvY2FsZSBvZiBhIERhdGVUaW1lLCBzdWNoICdlbi1HQicuIFRoZSBsb2NhbGUgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IGxvY2FsZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMubG9jLmxvY2FsZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG51bWJlcmluZyBzeXN0ZW0gb2YgYSBEYXRlVGltZSwgc3VjaCAnYmVuZycuIFRoZSBudW1iZXJpbmcgc3lzdGVtIGlzIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoZSBEYXRlVGltZQogICAgICoKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBudW1iZXJpbmdTeXN0ZW0oKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmxvYy5udW1iZXJpbmdTeXN0ZW0gOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBvdXRwdXQgY2FsZW5kYXIgb2YgYSBEYXRlVGltZSwgc3VjaCAnaXNsYW1pYycuIFRoZSBvdXRwdXQgY2FsZW5kYXIgaXMgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhlIERhdGVUaW1lCiAgICAgKgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG91dHB1dENhbGVuZGFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5sb2Mub3V0cHV0Q2FsZW5kYXIgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB0aW1lIHpvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAdHlwZSB7Wm9uZX0KICAgICAqLwogICAgZ2V0IHpvbmUoKSB7CiAgICAgIHJldHVybiB0aGlzLl96b25lOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBuYW1lIG9mIHRoZSB0aW1lIHpvbmUuCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgem9uZU5hbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnpvbmUubmFtZSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHllYXIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS55ZWFyIC8vPT4gMjAxNwogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHllYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMueWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcXVhcnRlcgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnF1YXJ0ZXIgLy89PiAyCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgcXVhcnRlcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IE1hdGguY2VpbCh0aGlzLmMubW9udGggLyAzKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbW9udGggKDEtMTIpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLm1vbnRoIC8vPT4gNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IG1vbnRoKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1vbnRoIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIG1vbnRoICgxLTMwaXNoKS4KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5kYXkgLy89PiAyNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuYy5kYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGhvdXIgb2YgdGhlIGRheSAoMC0yMykuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSkuaG91ciAvLz0+IDkKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBob3VyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLmhvdXIgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG1pbnV0ZSBvZiB0aGUgaG91ciAoMC01OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzApLm1pbnV0ZSAvLz0+IDMwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWludXRlKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gdGhpcy5jLm1pbnV0ZSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2Vjb25kIG9mIHRoZSBtaW51dGUgKDAtNTkpLgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUsIDksIDMwLCA1Mikuc2Vjb25kIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCBzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMuc2Vjb25kIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBtaWxsaXNlY29uZCBvZiB0aGUgc2Vjb25kICgwLTk5OSkuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE3LCA1LCAyNSwgOSwgMzAsIDUyLCA2NTQpLm1pbGxpc2Vjb25kIC8vPT4gNjU0CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgbWlsbGlzZWNvbmQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLmMubWlsbGlzZWNvbmQgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHdlZWsgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAxMiwgMzEpLndlZWtZZWFyIC8vPT4gMjAxNQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtZZWFyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrWWVhciA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgd2VlayBudW1iZXIgb2YgdGhlIHdlZWsgeWVhciAoMS01MmlzaCkuCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS53ZWVrTnVtYmVyIC8vPT4gMjEKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrTnVtYmVyKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gcG9zc2libHlDYWNoZWRXZWVrRGF0YSh0aGlzKS53ZWVrTnVtYmVyIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsuCiAgICAgKiAxIGlzIE1vbmRheSBhbmQgNyBpcyBTdW5kYXkKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMTEsIDMxKS53ZWVrZGF5IC8vPT4gNAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IHdlZWtkYXkoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBwb3NzaWJseUNhY2hlZFdlZWtEYXRhKHRoaXMpLndlZWtkYXkgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIG9yZGluYWwgKG1lYW5pbmcgdGhlIGRheSBvZiB0aGUgeWVhcikKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5vcmRpbmFsIC8vPT4gMTQ1CiAgICAgKiBAdHlwZSB7bnVtYmVyfERhdGVUaW1lfQogICAgICovCiAgICBnZXQgb3JkaW5hbCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGdyZWdvcmlhblRvT3JkaW5hbCh0aGlzLmMpLm9yZGluYWwgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIHNob3J0IG1vbnRoIG5hbWUsIHN1Y2ggYXMgJ09jdCcuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDEwLCAzMCkubW9udGhTaG9ydCAvLz0+IE9jdAogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IG1vbnRoU2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLm1vbnRocygic2hvcnQiLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgbG9uZyBtb250aCBuYW1lLCBzdWNoIGFzICdPY3RvYmVyJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS5tb250aExvbmcgLy89PiBPY3RvYmVyCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgbW9udGhMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby5tb250aHMoImxvbmciLCB7IGxvY09iajogdGhpcy5sb2MgfSlbdGhpcy5tb250aCAtIDFdIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaHVtYW4gcmVhZGFibGUgc2hvcnQgd2Vla2RheSwgc3VjaCBhcyAnTW9uJy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5U2hvcnQgLy89PiBNb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCB3ZWVrZGF5U2hvcnQoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbmZvLndlZWtkYXlzKCJzaG9ydCIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGh1bWFuIHJlYWRhYmxlIGxvbmcgd2Vla2RheSwgc3VjaCBhcyAnTW9uZGF5Jy4KICAgICAqIERlZmF1bHRzIHRvIHRoZSBzeXN0ZW0ncyBsb2NhbGUgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgMTAsIDMwKS53ZWVrZGF5TG9uZyAvLz0+IE1vbmRheQogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgZ2V0IHdlZWtkYXlMb25nKCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gSW5mby53ZWVrZGF5cygibG9uZyIsIHsgbG9jT2JqOiB0aGlzLmxvYyB9KVt0aGlzLndlZWtkYXkgLSAxXSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIFVUQyBvZmZzZXQgb2YgdGhpcyBEYXRlVGltZSBpbiBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5vZmZzZXQgLy89PiAtMjQwCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5vZmZzZXQgLy89PiAwCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgb2Zmc2V0KCkgewogICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkID8gK3RoaXMubyA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgc2hvcnQgaHVtYW4gbmFtZSBmb3IgdGhlIHpvbmUncyBjdXJyZW50IG9mZnNldCwgZm9yIGV4YW1wbGUgIkVTVCIgb3IgIkVEVCIuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIGdldCBvZmZzZXROYW1lU2hvcnQoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAic2hvcnQiLAogICAgICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSwKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsb25nIGh1bWFuIG5hbWUgZm9yIHRoZSB6b25lJ3MgY3VycmVudCBvZmZzZXQsIGZvciBleGFtcGxlICJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUiIG9yICJFYXN0ZXJuIERheWxpZ2h0IFRpbWUiLgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAdHlwZSB7c3RyaW5nfQogICAgICovCiAgICBnZXQgb2Zmc2V0TmFtZUxvbmcoKSB7CiAgICAgIGlmICh0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gdGhpcy56b25lLm9mZnNldE5hbWUodGhpcy50cywgewogICAgICAgICAgZm9ybWF0OiAibG9uZyIsCiAgICAgICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLAogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGlzIHpvbmUncyBvZmZzZXQgZXZlciBjaGFuZ2VzLCBhcyBpbiBhIERTVC4KICAgICAqIEB0eXBlIHtib29sZWFufQogICAgICovCiAgICBnZXQgaXNPZmZzZXRGaXhlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMuem9uZS5pc1VuaXZlcnNhbCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciB0aGUgRGF0ZVRpbWUgaXMgaW4gYSBEU1QuCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5EU1QoKSB7CiAgICAgIGlmICh0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgIHRoaXMub2Zmc2V0ID4gdGhpcy5zZXQoeyBtb250aDogMSwgZGF5OiAxIH0pLm9mZnNldCB8fAogICAgICAgICAgdGhpcy5vZmZzZXQgPiB0aGlzLnNldCh7IG1vbnRoOiA1IH0pLm9mZnNldAogICAgICAgICk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aG9zZSBEYXRlVGltZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBsb2NhbCB0aW1lIGFzIHRoaXMgRGF0ZVRpbWUsIGJ1dCBhIGRpZmZlcmVudCBvZmZzZXQgZnJvbSBVVEMKICAgICAqIGluIHRoaXMgRGF0ZVRpbWUncyB6b25lLiBEdXJpbmcgRFNUIGNoYW5nZXMgbG9jYWwgdGltZSBjYW4gYmUgYW1iaWd1b3VzLCBmb3IgZXhhbXBsZQogICAgICogYDIwMjMtMTAtMjlUMDI6MzA6MDBgIGluIGBFdXJvcGUvQmVybGluYCBjYW4gaGF2ZSBvZmZzZXQgYCswMTowMGAgb3IgYCswMjowMGAuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBib3RoIHBvc3NpYmxlIERhdGVUaW1lcyBpZiB0aGlzIERhdGVUaW1lJ3MgbG9jYWwgdGltZSBpcyBhbWJpZ3VvdXMuCiAgICAgKiBAcmV0dXJucyB7RGF0ZVRpbWVbXX0KICAgICAqLwogICAgZ2V0UG9zc2libGVPZmZzZXRzKCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCB8fCB0aGlzLmlzT2Zmc2V0Rml4ZWQpIHsKICAgICAgICByZXR1cm4gW3RoaXNdOwogICAgICB9CiAgICAgIGNvbnN0IGRheU1zID0gODY0MDAwMDA7CiAgICAgIGNvbnN0IG1pbnV0ZU1zID0gNjAwMDA7CiAgICAgIGNvbnN0IGxvY2FsVFMgPSBvYmpUb0xvY2FsVFModGhpcy5jKTsKICAgICAgY29uc3Qgb0VhcmxpZXIgPSB0aGlzLnpvbmUub2Zmc2V0KGxvY2FsVFMgLSBkYXlNcyk7CiAgICAgIGNvbnN0IG9MYXRlciA9IHRoaXMuem9uZS5vZmZzZXQobG9jYWxUUyArIGRheU1zKTsKCiAgICAgIGNvbnN0IG8xID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0VhcmxpZXIgKiBtaW51dGVNcyk7CiAgICAgIGNvbnN0IG8yID0gdGhpcy56b25lLm9mZnNldChsb2NhbFRTIC0gb0xhdGVyICogbWludXRlTXMpOwogICAgICBpZiAobzEgPT09IG8yKSB7CiAgICAgICAgcmV0dXJuIFt0aGlzXTsKICAgICAgfQogICAgICBjb25zdCB0czEgPSBsb2NhbFRTIC0gbzEgKiBtaW51dGVNczsKICAgICAgY29uc3QgdHMyID0gbG9jYWxUUyAtIG8yICogbWludXRlTXM7CiAgICAgIGNvbnN0IGMxID0gdHNUb09iaih0czEsIG8xKTsKICAgICAgY29uc3QgYzIgPSB0c1RvT2JqKHRzMiwgbzIpOwogICAgICBpZiAoCiAgICAgICAgYzEuaG91ciA9PT0gYzIuaG91ciAmJgogICAgICAgIGMxLm1pbnV0ZSA9PT0gYzIubWludXRlICYmCiAgICAgICAgYzEuc2Vjb25kID09PSBjMi5zZWNvbmQgJiYKICAgICAgICBjMS5taWxsaXNlY29uZCA9PT0gYzIubWlsbGlzZWNvbmQKICAgICAgKSB7CiAgICAgICAgcmV0dXJuIFtjbG9uZSh0aGlzLCB7IHRzOiB0czEgfSksIGNsb25lKHRoaXMsIHsgdHM6IHRzMiB9KV07CiAgICAgIH0KICAgICAgcmV0dXJuIFt0aGlzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIERhdGVUaW1lIGlzIGluIGEgbGVhcCB5ZWFyLCBmYWxzZSBvdGhlcndpc2UKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTYpLmlzSW5MZWFwWWVhciAvLz0+IHRydWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTMpLmlzSW5MZWFwWWVhciAvLz0+IGZhbHNlCiAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KICAgICAqLwogICAgZ2V0IGlzSW5MZWFwWWVhcigpIHsKICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyBtb250aAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMikuZGF5c0luTW9udGggLy89PiAyOQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNiwgMykuZGF5c0luTW9udGggLy89PiAzMQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgZ2V0IGRheXNJbk1vbnRoKCkgewogICAgICByZXR1cm4gZGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoaXMgRGF0ZVRpbWUncyB5ZWFyCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE2KS5kYXlzSW5ZZWFyIC8vPT4gMzY2CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDEzKS5kYXlzSW5ZZWFyIC8vPT4gMzY1CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICBnZXQgZGF5c0luWWVhcigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IGRheXNJblllYXIodGhpcy55ZWFyKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiB3ZWVrcyBpbiB0aGlzIERhdGVUaW1lJ3MgeWVhcgogICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDA0KS53ZWVrc0luV2Vla1llYXIgLy89PiA1MwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxMykud2Vla3NJbldlZWtZZWFyIC8vPT4gNTIKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIGdldCB3ZWVrc0luV2Vla1llYXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB3ZWVrc0luV2Vla1llYXIodGhpcy53ZWVrWWVhcikgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNvbHZlZCBJbnRsIG9wdGlvbnMgZm9yIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBUaGlzIGlzIHVzZWZ1bCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBiZWhhdmlvciBvZiBmb3JtYXR0aW5nIG1ldGhvZHMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gdGhlIHNhbWUgb3B0aW9ucyBhcyB0b0xvY2FsZVN0cmluZwogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICByZXNvbHZlZExvY2FsZU9wdGlvbnMob3B0cyA9IHt9KSB7CiAgICAgIGNvbnN0IHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIGNhbGVuZGFyIH0gPSBGb3JtYXR0ZXIuY3JlYXRlKAogICAgICAgIHRoaXMubG9jLmNsb25lKG9wdHMpLAogICAgICAgIG9wdHMKICAgICAgKS5yZXNvbHZlZE9wdGlvbnModGhpcyk7CiAgICAgIHJldHVybiB7IGxvY2FsZSwgbnVtYmVyaW5nU3lzdGVtLCBvdXRwdXRDYWxlbmRhcjogY2FsZW5kYXIgfTsKICAgIH0KCiAgICAvLyBUUkFOU0ZPUk0KCiAgICAvKioKICAgICAqICJTZXQiIHRoZSBEYXRlVGltZSdzIHpvbmUgdG8gVVRDLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKgogICAgICogRXF1aXZhbGVudCB0byB7QGxpbmsgRGF0ZVRpbWUjc2V0Wm9uZX0oJ3V0YycpCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIG9wdGlvbmFsbHksIGFuIG9mZnNldCBmcm9tIFVUQyBpbiBtaW51dGVzCiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHM9e31dIC0gb3B0aW9ucyB0byBwYXNzIHRvIGBzZXRab25lKClgCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgdG9VVEMob2Zmc2V0ID0gMCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoRml4ZWRPZmZzZXRab25lLmluc3RhbmNlKG9mZnNldCksIG9wdHMpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byB0aGUgaG9zdCdzIGxvY2FsIHpvbmUuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqCiAgICAgKiBFcXVpdmFsZW50IHRvIGBzZXRab25lKCdsb2NhbCcpYAogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHRvTG9jYWwoKSB7CiAgICAgIHJldHVybiB0aGlzLnNldFpvbmUoU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIERhdGVUaW1lJ3Mgem9uZSB0byBzcGVjaWZpZWQgem9uZS4gUmV0dXJucyBhIG5ld2x5LWNvbnN0cnVjdGVkIERhdGVUaW1lLgogICAgICoKICAgICAqIEJ5IGRlZmF1bHQsIHRoZSBzZXR0ZXIga2VlcHMgdGhlIHVuZGVybHlpbmcgdGltZSB0aGUgc2FtZSAoYXMgaW4sIHRoZSBzYW1lIHRpbWVzdGFtcCksIGJ1dCB0aGUgbmV3IGluc3RhbmNlIHdpbGwgcmVwb3J0IGRpZmZlcmVudCBsb2NhbCB0aW1lcyBhbmQgY29uc2lkZXIgRFNUcyB3aGVuIG1ha2luZyBjb21wdXRhdGlvbnMsIGFzIHdpdGgge0BsaW5rIERhdGVUaW1lI3BsdXN9LiBZb3UgbWF5IHdpc2ggdG8gdXNlIHtAbGluayBEYXRlVGltZSN0b0xvY2FsfSBhbmQge0BsaW5rIERhdGVUaW1lI3RvVVRDfSB3aGljaCBwcm92aWRlIHNpbXBsZSBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgY29tbW9ubHkgdXNlZCB6b25lcy4KICAgICAqIEBwYXJhbSB7c3RyaW5nfFpvbmV9IFt6b25lPSdsb2NhbCddIC0gYSB6b25lIGlkZW50aWZpZXIuIEFzIGEgc3RyaW5nLCB0aGF0IGNhbiBiZSBhbnkgSUFOQSB6b25lIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBlbnZpcm9ubWVudCwgb3IgYSBmaXhlZC1vZmZzZXQgbmFtZSBvZiB0aGUgZm9ybSAnVVRDKzMnLCBvciB0aGUgc3RyaW5ncyAnbG9jYWwnIG9yICd1dGMnLiBZb3UgbWF5IGFsc28gc3VwcGx5IGFuIGluc3RhbmNlIG9mIGEge0BsaW5rIERhdGVUaW1lI1pvbmV9IGNsYXNzLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmtlZXBMb2NhbFRpbWU9ZmFsc2VdIC0gSWYgdHJ1ZSwgYWRqdXN0IHRoZSB1bmRlcmx5aW5nIHRpbWUgc28gdGhhdCB0aGUgbG9jYWwgdGltZSBzdGF5cyB0aGUgc2FtZSwgYnV0IGluIHRoZSB0YXJnZXQgem9uZS4gWW91IHNob3VsZCByYXJlbHkgbmVlZCB0aGlzLgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHNldFpvbmUoem9uZSwgeyBrZWVwTG9jYWxUaW1lID0gZmFsc2UsIGtlZXBDYWxlbmRhclRpbWUgPSBmYWxzZSB9ID0ge30pIHsKICAgICAgem9uZSA9IG5vcm1hbGl6ZVpvbmUoem9uZSwgU2V0dGluZ3MuZGVmYXVsdFpvbmUpOwogICAgICBpZiAoem9uZS5lcXVhbHModGhpcy56b25lKSkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9IGVsc2UgaWYgKCF6b25lLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gRGF0ZVRpbWUuaW52YWxpZCh1bnN1cHBvcnRlZFpvbmUoem9uZSkpOwogICAgICB9IGVsc2UgewogICAgICAgIGxldCBuZXdUUyA9IHRoaXMudHM7CiAgICAgICAgaWYgKGtlZXBMb2NhbFRpbWUgfHwga2VlcENhbGVuZGFyVGltZSkgewogICAgICAgICAgY29uc3Qgb2Zmc2V0R3Vlc3MgPSB6b25lLm9mZnNldCh0aGlzLnRzKTsKICAgICAgICAgIGNvbnN0IGFzT2JqID0gdGhpcy50b09iamVjdCgpOwogICAgICAgICAgW25ld1RTXSA9IG9ialRvVFMoYXNPYmosIG9mZnNldEd1ZXNzLCB6b25lKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIHsgdHM6IG5ld1RTLCB6b25lIH0pOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG9yIG91dHB1dENhbGVuZGFyLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcGVydGllcyAtIHRoZSBwcm9wZXJ0aWVzIHRvIHNldAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNywgNSwgMjUpLnJlY29uZmlndXJlKHsgbG9jYWxlOiAnZW4tR0InIH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgcmVjb25maWd1cmUoeyBsb2NhbGUsIG51bWJlcmluZ1N5c3RlbSwgb3V0cHV0Q2FsZW5kYXIgfSA9IHt9KSB7CiAgICAgIGNvbnN0IGxvYyA9IHRoaXMubG9jLmNsb25lKHsgbG9jYWxlLCBudW1iZXJpbmdTeXN0ZW0sIG91dHB1dENhbGVuZGFyIH0pOwogICAgICByZXR1cm4gY2xvbmUodGhpcywgeyBsb2MgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGUgbG9jYWxlLiBSZXR1cm5zIGEgbmV3bHktY29uc3RydWN0ZWQgRGF0ZVRpbWUuCiAgICAgKiBKdXN0IGEgY29udmVuaWVudCBhbGlhcyBmb3IgcmVjb25maWd1cmUoeyBsb2NhbGUgfSkKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTcsIDUsIDI1KS5zZXRMb2NhbGUoJ2VuLUdCJykKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBzZXRMb2NhbGUobG9jYWxlKSB7CiAgICAgIHJldHVybiB0aGlzLnJlY29uZmlndXJlKHsgbG9jYWxlIH0pOwogICAgfQoKICAgIC8qKgogICAgICogIlNldCIgdGhlIHZhbHVlcyBvZiBzcGVjaWZpZWQgdW5pdHMuIFJldHVybnMgYSBuZXdseS1jb25zdHJ1Y3RlZCBEYXRlVGltZS4KICAgICAqIFlvdSBjYW4gb25seSBzZXQgdW5pdHMgd2l0aCB0aGlzIG1ldGhvZDsgZm9yICJzZXR0aW5nIiBtZXRhZGF0YSwgc2VlIHtAbGluayBEYXRlVGltZSNyZWNvbmZpZ3VyZX0gYW5kIHtAbGluayBEYXRlVGltZSNzZXRab25lfS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZXMgLSBhIG1hcHBpbmcgb2YgdW5pdHMgdG8gbnVtYmVycwogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAxNyB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgaG91cjogOCwgbWludXRlOiAzMCB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgd2Vla2RheTogNSB9KQogICAgICogQGV4YW1wbGUgZHQuc2V0KHsgeWVhcjogMjAwNSwgb3JkaW5hbDogMjM0IH0pCiAgICAgKiBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgc2V0KHZhbHVlcykgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CgogICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplT2JqZWN0KHZhbHVlcywgbm9ybWFsaXplVW5pdCksCiAgICAgICAgc2V0dGluZ1dlZWtTdHVmZiA9CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrWWVhcikgfHwKICAgICAgICAgICFpc1VuZGVmaW5lZChub3JtYWxpemVkLndlZWtOdW1iZXIpIHx8CiAgICAgICAgICAhaXNVbmRlZmluZWQobm9ybWFsaXplZC53ZWVrZGF5KSwKICAgICAgICBjb250YWluc09yZGluYWwgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC5vcmRpbmFsKSwKICAgICAgICBjb250YWluc0dyZWdvclllYXIgPSAhaXNVbmRlZmluZWQobm9ybWFsaXplZC55ZWFyKSwKICAgICAgICBjb250YWluc0dyZWdvck1EID0gIWlzVW5kZWZpbmVkKG5vcm1hbGl6ZWQubW9udGgpIHx8ICFpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSksCiAgICAgICAgY29udGFpbnNHcmVnb3IgPSBjb250YWluc0dyZWdvclllYXIgfHwgY29udGFpbnNHcmVnb3JNRCwKICAgICAgICBkZWZpbml0ZVdlZWtEZWYgPSBub3JtYWxpemVkLndlZWtZZWFyIHx8IG5vcm1hbGl6ZWQud2Vla051bWJlcjsKCiAgICAgIGlmICgoY29udGFpbnNHcmVnb3IgfHwgY29udGFpbnNPcmRpbmFsKSAmJiBkZWZpbml0ZVdlZWtEZWYpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoCiAgICAgICAgICAiQ2FuJ3QgbWl4IHdlZWtZZWFyL3dlZWtOdW1iZXIgdW5pdHMgd2l0aCB5ZWFyL21vbnRoL2RheSBvciBvcmRpbmFscyIKICAgICAgICApOwogICAgICB9CgogICAgICBpZiAoY29udGFpbnNHcmVnb3JNRCAmJiBjb250YWluc09yZGluYWwpIHsKICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RpbmdTcGVjaWZpY2F0aW9uRXJyb3IoIkNhbid0IG1peCBvcmRpbmFsIGRhdGVzIHdpdGggbW9udGgvZGF5Iik7CiAgICAgIH0KCiAgICAgIGxldCBtaXhlZDsKICAgICAgaWYgKHNldHRpbmdXZWVrU3R1ZmYpIHsKICAgICAgICBtaXhlZCA9IHdlZWtUb0dyZWdvcmlhbih7IC4uLmdyZWdvcmlhblRvV2Vlayh0aGlzLmMpLCAuLi5ub3JtYWxpemVkIH0pOwogICAgICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChub3JtYWxpemVkLm9yZGluYWwpKSB7CiAgICAgICAgbWl4ZWQgPSBvcmRpbmFsVG9HcmVnb3JpYW4oeyAuLi5ncmVnb3JpYW5Ub09yZGluYWwodGhpcy5jKSwgLi4ubm9ybWFsaXplZCB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBtaXhlZCA9IHsgLi4udGhpcy50b09iamVjdCgpLCAuLi5ub3JtYWxpemVkIH07CgogICAgICAgIC8vIGlmIHdlIGRpZG4ndCBzZXQgdGhlIGRheSBidXQgd2UgZW5kZWQgdXAgb24gYW4gb3ZlcmZsb3cgZGF0ZSwKICAgICAgICAvLyB1c2UgdGhlIGxhc3QgZGF5IG9mIHRoZSByaWdodCBtb250aAogICAgICAgIGlmIChpc1VuZGVmaW5lZChub3JtYWxpemVkLmRheSkpIHsKICAgICAgICAgIG1peGVkLmRheSA9IE1hdGgubWluKGRheXNJbk1vbnRoKG1peGVkLnllYXIsIG1peGVkLm1vbnRoKSwgbWl4ZWQuZGF5KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnN0IFt0cywgb10gPSBvYmpUb1RTKG1peGVkLCB0aGlzLm8sIHRoaXMuem9uZSk7CiAgICAgIHJldHVybiBjbG9uZSh0aGlzLCB7IHRzLCBvIH0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgcGVyaW9kIG9mIHRpbWUgdG8gdGhpcyBEYXRlVGltZSBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgRGF0ZVRpbWUKICAgICAqCiAgICAgKiBBZGRpbmcgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG9yIG1pbGxpc2Vjb25kcyBpbmNyZWFzZXMgdGhlIHRpbWVzdGFtcCBieSB0aGUgcmlnaHQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gQWRkaW5nIGRheXMsIG1vbnRocywgb3IgeWVhcnMgc2hpZnRzIHRoZSBjYWxlbmRhciwgYWNjb3VudGluZyBmb3IgRFNUcyBhbmQgbGVhcCB5ZWFycyBhbG9uZyB0aGUgd2F5LiBUaHVzLCBgZHQucGx1cyh7IGhvdXJzOiAyNCB9KWAgbWF5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0aW1lIHRoYW4gYGR0LnBsdXMoeyBkYXlzOiAxIH0pYCBpZiB0aGVyZSdzIGEgRFNUIHNoaWZ0IGluIGJldHdlZW4uCiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBhZGQuIEVpdGhlciBhIEx1eG9uIER1cmF0aW9uLCBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMsIHRoZSBvYmplY3QgYXJndW1lbnQgdG8gRHVyYXRpb24uZnJvbU9iamVjdCgpCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKDEyMykgLy9+PiBpbiAxMjMgbWlsbGlzZWNvbmRzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgbWludXRlczogMTUgfSkgLy9+PiBpbiAxNSBtaW51dGVzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KSAvL34+IHRoaXMgdGltZSB0b21vcnJvdwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IC0xIH0pIC8vfj4gdGhpcyB0aW1lIHllc3RlcmRheQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGhvdXJzOiAzLCBtaW51dGVzOiAxMyB9KSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDMsIG1pbnV0ZXM6IDEzIH0pKSAvL34+IGluIDMgaHIsIDEzIG1pbgogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHBsdXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCBhIHBlcmlvZCBvZiB0aW1lIHRvIHRoaXMgRGF0ZVRpbWUgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIERhdGVUaW1lCiAgICAgKiBTZWUge0BsaW5rIERhdGVUaW1lI3BsdXN9CiAgICAgKiBAcGFyYW0ge0R1cmF0aW9ufE9iamVjdHxudW1iZXJ9IGR1cmF0aW9uIC0gVGhlIGFtb3VudCB0byBzdWJ0cmFjdC4gRWl0aGVyIGEgTHV4b24gRHVyYXRpb24sIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcywgdGhlIG9iamVjdCBhcmd1bWVudCB0byBEdXJhdGlvbi5mcm9tT2JqZWN0KCkKICAgICBAcmV0dXJuIHtEYXRlVGltZX0KICAgICAqLwogICAgbWludXMoZHVyYXRpb24pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB0aGlzOwogICAgICBjb25zdCBkdXIgPSBEdXJhdGlvbi5mcm9tRHVyYXRpb25MaWtlKGR1cmF0aW9uKS5uZWdhdGUoKTsKICAgICAgcmV0dXJuIGNsb25lKHRoaXMsIGFkanVzdFRpbWUodGhpcywgZHVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSB1bml0IG9mIHRpbWUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBiZWdpbm5pbmcgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5zdGFydE9mKCdtb250aCcpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZigneWVhcicpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAxLTAxJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMykuc3RhcnRPZignd2VlaycpLnRvSVNPRGF0ZSgpOyAvLz0+ICcyMDE0LTAzLTAzJywgd2Vla3MgYWx3YXlzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5zdGFydE9mKCdkYXknKS50b0lTT1RpbWUoKTsgLy89PiAnMDA6MDAuMDAwLTA1OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubG9jYWwoMjAxNCwgMywgMywgNSwgMzApLnN0YXJ0T2YoJ2hvdXInKS50b0lTT1RpbWUoKTsgLy89PiAnMDU6MDA6MDAuMDAwLTA1OjAwJwogICAgICogQHJldHVybiB7RGF0ZVRpbWV9CiAgICAgKi8KICAgIHN0YXJ0T2YodW5pdCkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgcmV0dXJuIHRoaXM7CiAgICAgIGNvbnN0IG8gPSB7fSwKICAgICAgICBub3JtYWxpemVkVW5pdCA9IER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQodW5pdCk7CiAgICAgIHN3aXRjaCAobm9ybWFsaXplZFVuaXQpIHsKICAgICAgICBjYXNlICJ5ZWFycyI6CiAgICAgICAgICBvLm1vbnRoID0gMTsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAicXVhcnRlcnMiOgogICAgICAgIGNhc2UgIm1vbnRocyI6CiAgICAgICAgICBvLmRheSA9IDE7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgIndlZWtzIjoKICAgICAgICBjYXNlICJkYXlzIjoKICAgICAgICAgIG8uaG91ciA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgImhvdXJzIjoKICAgICAgICAgIG8ubWludXRlID0gMDsKICAgICAgICAvLyBmYWxscyB0aHJvdWdoCiAgICAgICAgY2FzZSAibWludXRlcyI6CiAgICAgICAgICBvLnNlY29uZCA9IDA7CiAgICAgICAgLy8gZmFsbHMgdGhyb3VnaAogICAgICAgIGNhc2UgInNlY29uZHMiOgogICAgICAgICAgby5taWxsaXNlY29uZCA9IDA7CiAgICAgICAgICBicmVhazsKICAgICAgICAvLyBubyBkZWZhdWx0LCBpbnZhbGlkIHVuaXRzIHRocm93IGluIG5vcm1hbGl6ZVVuaXQoKQogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJ3ZWVrcyIpIHsKICAgICAgICBvLndlZWtkYXkgPSAxOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFVuaXQgPT09ICJxdWFydGVycyIpIHsKICAgICAgICBjb25zdCBxID0gTWF0aC5jZWlsKHRoaXMubW9udGggLyAzKTsKICAgICAgICBvLm1vbnRoID0gKHEgLSAxKSAqIDMgKyAxOwogICAgICB9CgogICAgICByZXR1cm4gdGhpcy5zZXQobyk7CiAgICB9CgogICAgLyoqCiAgICAgKiAiU2V0IiB0aGlzIERhdGVUaW1lIHRvIHRoZSBlbmQgKG1lYW5pbmcgdGhlIGxhc3QgbWlsbGlzZWNvbmQpIG9mIGEgdW5pdCBvZiB0aW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIFRoZSB1bml0IHRvIGdvIHRvIHRoZSBlbmQgb2YuIENhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcsIG9yICdtaWxsaXNlY29uZCcuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignbW9udGgnKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTMxVDIzOjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMpLmVuZE9mKCd5ZWFyJykudG9JU08oKTsgLy89PiAnMjAxNC0xMi0zMVQyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzKS5lbmRPZignd2VlaycpLnRvSVNPKCk7IC8vID0+ICcyMDE0LTAzLTA5VDIzOjU5OjU5Ljk5OS0wNTowMCcsIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDMsIDMsIDUsIDMwKS5lbmRPZignZGF5JykudG9JU08oKTsgLy89PiAnMjAxNC0wMy0wM1QyMzo1OTo1OS45OTktMDU6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCAzLCAzLCA1LCAzMCkuZW5kT2YoJ2hvdXInKS50b0lTTygpOyAvLz0+ICcyMDE0LTAzLTAzVDA1OjU5OjU5Ljk5OS0wNTowMCcKICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfQogICAgICovCiAgICBlbmRPZih1bml0KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IHRoaXMucGx1cyh7IFt1bml0XTogMSB9KQogICAgICAgICAgICAuc3RhcnRPZih1bml0KQogICAgICAgICAgICAubWludXMoMSkKICAgICAgICA6IHRoaXM7CiAgICB9CgogICAgLy8gT1VUUFVUCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuCiAgICAgKiAqKllvdSBtYXkgbm90IHdhbnQgdGhpcy4qKiBTZWUge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3IgYSBtb3JlIGZsZXhpYmxlIGZvcm1hdHRpbmcgdG9vbC4gRm9yIGEgdGFibGUgb2YgdG9rZW5zIGFuZCB0aGVpciBpbnRlcnByZXRhdGlvbnMsIHNlZSBbaGVyZV0oaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uLyMvZm9ybWF0dGluZz9pZD10YWJsZS1vZi10b2tlbnMpLgogICAgICogRGVmYXVsdHMgdG8gZW4tVVMgaWYgbm8gbG9jYWxlIGhhcyBiZWVuIHNwZWNpZmllZCwgcmVnYXJkbGVzcyBvZiB0aGUgc3lzdGVtJ3MgbG9jYWxlLgogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgc3RyaW5nCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdHMgdG8gb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiB0aGlzIERhdGVUaW1lCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IEFwciAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgnZnInKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnKSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgneXl5eSBMTEwgZGQnLCB7IGxvY2FsZTogImZyIiB9KSAvLz0+ICcyMDE3IGF2ci4gMjInCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0Zvcm1hdCgiSEggJ2hvdXJzIGFuZCcgbW0gJ21pbnV0ZXMnIikgLy89PiAnMjAgaG91cnMgYW5kIDU1IG1pbnV0ZXMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvRm9ybWF0KGZtdCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MucmVkZWZhdWx0VG9FTihvcHRzKSkuZm9ybWF0RGF0ZVRpbWVGcm9tU3RyaW5nKHRoaXMsIGZtdCkKICAgICAgICA6IElOVkFMSUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBkYXRlLiBBY2NlcHRzIHRoZSBzYW1lIG9wdGlvbnMgYXMgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgY29uc3RydWN0b3IgYW5kIGFueSBwcmVzZXRzIGRlZmluZWQgYnkgTHV4b24sIHN1Y2ggYXMgYERhdGVUaW1lLkRBVEVfRlVMTGAgb3IgYERhdGVUaW1lLlRJTUVfU0lNUExFYC4KICAgICAqIFRoZSBleGFjdCBiZWhhdmlvciBvZiB0aGlzIG1ldGhvZCBpcyBicm93c2VyLXNwZWNpZmljLCBidXQgaW4gZ2VuZXJhbCBpdCB3aWxsIHJldHVybiBhbiBhcHByb3ByaWF0ZSByZXByZXNlbnRhdGlvbgogICAgICogb2YgdGhlIERhdGVUaW1lIGluIHRoZSBhc3NpZ25lZCBsb2NhbGUuCiAgICAgKiBEZWZhdWx0cyB0byB0aGUgc3lzdGVtJ3MgbG9jYWxlIGlmIG5vIGxvY2FsZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZVRpbWVGb3JtYXQKICAgICAqIEBwYXJhbSBmb3JtYXRPcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0cyB0byBvdmVycmlkZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG9uIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKCk7IC8vPT4gNC8yMC8yMDE3CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5zZXRMb2NhbGUoJ2VuLWdiJykudG9Mb2NhbGVTdHJpbmcoKTsgLy89PiAnMjAvMDQvMjAxNycKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfRlVMTCk7IC8vPT4gJ0FwcmlsIDIwLCAyMDE3JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9Mb2NhbGVTdHJpbmcoRGF0ZVRpbWUuREFURV9GVUxMLCB7IGxvY2FsZTogJ2ZyJyB9KTsgLy89PiAnMjggYW/Du3QgMjAyMicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLlRJTUVfU0lNUExFKTsgLy89PiAnMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFVElNRV9TSE9SVCk7IC8vPT4gJzQvMjAvMjAxNywgMTE6MzIgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IHdlZWtkYXk6ICdsb25nJywgbW9udGg6ICdsb25nJywgZGF5OiAnMi1kaWdpdCcgfSk7IC8vPT4gJ1RodXJzZGF5LCBBcHJpbCAyMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvTG9jYWxlU3RyaW5nKHsgd2Vla2RheTogJ3Nob3J0JywgbW9udGg6ICdzaG9ydCcsIGRheTogJzItZGlnaXQnLCBob3VyOiAnMi1kaWdpdCcsIG1pbnV0ZTogJzItZGlnaXQnIH0pOyAvLz0+ICdUaHUsIEFwciAyMCwgMTE6MjcgQU0nCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVN0cmluZyh7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcsIGhvdXJDeWNsZTogJ2gyMycgfSk7IC8vPT4gJzExOjMyJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0xvY2FsZVN0cmluZyhmb3JtYXRPcHRzID0gREFURV9TSE9SVCwgb3B0cyA9IHt9KSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQKICAgICAgICA/IEZvcm1hdHRlci5jcmVhdGUodGhpcy5sb2MuY2xvbmUob3B0cyksIGZvcm1hdE9wdHMpLmZvcm1hdERhdGVUaW1lKHRoaXMpCiAgICAgICAgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiBmb3JtYXQgInBhcnRzIiwgbWVhbmluZyBpbmRpdmlkdWFsIHRva2VucyBhbG9uZyB3aXRoIG1ldGFkYXRhLiBUaGlzIGlzIGFsbG93cyBjYWxsZXJzIHRvIHBvc3QtcHJvY2VzcyBpbmRpdmlkdWFsIHNlY3Rpb25zIG9mIHRoZSBmb3JtYXR0ZWQgb3V0cHV0LgogICAgICogRGVmYXVsdHMgdG8gdGhlIHN5c3RlbSdzIGxvY2FsZSBpZiBubyBsb2NhbGUgaGFzIGJlZW4gc3BlY2lmaWVkCiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGVUaW1lRm9ybWF0L2Zvcm1hdFRvUGFydHMKICAgICAqIEBwYXJhbSBvcHRzIHtPYmplY3R9IC0gSW50bC5EYXRlVGltZUZvcm1hdCBjb25zdHJ1Y3RvciBvcHRpb25zLCBzYW1lIGFzIGB0b0xvY2FsZVN0cmluZ2AuCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0xvY2FsZVBhcnRzKCk7IC8vPT4gWwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdkYXknLCB2YWx1ZTogJzI1JyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcvJyB9LAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vPT4gICB7IHR5cGU6ICdtb250aCcsIHZhbHVlOiAnMDUnIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJy8nIH0sCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy89PiAgIHsgdHlwZTogJ3llYXInLCB2YWx1ZTogJzE5ODInIH0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLz0+IF0KICAgICAqLwogICAgdG9Mb2NhbGVQYXJ0cyhvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZAogICAgICAgID8gRm9ybWF0dGVyLmNyZWF0ZSh0aGlzLmxvYy5jbG9uZShvcHRzKSwgb3B0cykuZm9ybWF0RGF0ZVRpbWVQYXJ0cyh0aGlzKQogICAgICAgIDogW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLnN1cHByZXNzTWlsbGlzZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NTZWNvbmRzPWZhbHNlXSAtIGV4Y2x1ZGUgc2Vjb25kcyBmcm9tIHRoZSBmb3JtYXQgaWYgdGhleSdyZSAwCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmV4dGVuZGVkWm9uZT1mYWxzZV0gLSBhZGQgdGhlIHRpbWUgem9uZSBmb3JtYXQgZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgzLCA1LCAyNSkudG9JU08oKSAvLz0+ICcxOTgyLTA1LTI1VDAwOjAwOjAwLjAwMFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b0lTTygpIC8vPT4gJzIwMTctMDQtMjJUMjA6NDc6MDUuMzM1LTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9JU08oeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE3LTA0LTIyVDIwOjQ3OjA1LjMzNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvSVNPKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzIwMTcwNDIyVDIwNDcwNS4zMzUtMDQwMCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU08oewogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgICBzdXBwcmVzc1NlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgaW5jbHVkZU9mZnNldCA9IHRydWUsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGNvbnN0IGV4dCA9IGZvcm1hdCA9PT0gImV4dGVuZGVkIjsKCiAgICAgIGxldCBjID0gdG9JU09EYXRlKHRoaXMsIGV4dCk7CiAgICAgIGMgKz0gIlQiOwogICAgICBjICs9IHRvSVNPVGltZSh0aGlzLCBleHQsIHN1cHByZXNzU2Vjb25kcywgc3VwcHJlc3NNaWxsaXNlY29uZHMsIGluY2x1ZGVPZmZzZXQsIGV4dGVuZGVkWm9uZSk7CiAgICAgIHJldHVybiBjOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBJU08gODYwMS1jb21wbGlhbnQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUncyBkYXRlIGNvbXBvbmVudAogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZm9ybWF0PSdleHRlbmRlZCddIC0gY2hvb3NlIGJldHdlZW4gdGhlIGJhc2ljIGFuZCBleHRlbmRlZCBmb3JtYXQKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKCkgLy89PiAnMTk4Mi0wNS0yNScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygxOTgyLCA1LCAyNSkudG9JU09EYXRlKHsgZm9ybWF0OiAnYmFzaWMnIH0pIC8vPT4gJzE5ODIwNTI1JwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b0lTT0RhdGUoeyBmb3JtYXQgPSAiZXh0ZW5kZWQiIH0gPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIGZvcm1hdCA9PT0gImV4dGVuZGVkIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHdlZWsgZGF0ZQogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDE5ODIsIDUsIDI1KS50b0lTT1dlZWtEYXRlKCkgLy89PiAnMTk4Mi1XMjEtMicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09XZWVrRGF0ZSgpIHsKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCAia2tray0nVydXVy1jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIElTTyA4NjAxLWNvbXBsaWFudCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSdzIHRpbWUgY29tcG9uZW50CiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuc3VwcHJlc3NNaWxsaXNlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZm9ybWF0IGlmIHRoZXkncmUgMAogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5zdXBwcmVzc1NlY29uZHM9ZmFsc2VdIC0gZXhjbHVkZSBzZWNvbmRzIGZyb20gdGhlIGZvcm1hdCBpZiB0aGV5J3JlIDAKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZU9mZnNldD10cnVlXSAtIGluY2x1ZGUgdGhlIG9mZnNldCwgc3VjaCBhcyAnWicgb3IgJy0wNDowMCcKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuZXh0ZW5kZWRab25lPXRydWVdIC0gYWRkIHRoZSB0aW1lIHpvbmUgZm9ybWF0IGV4dGVuc2lvbgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlUHJlZml4PWZhbHNlXSAtIGluY2x1ZGUgdGhlIGBUYCBwcmVmaXgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5mb3JtYXQ9J2V4dGVuZGVkJ10gLSBjaG9vc2UgYmV0d2VlbiB0aGUgYmFzaWMgYW5kIGV4dGVuZGVkIGZvcm1hdAogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCB9KS50b0lTT1RpbWUoKSAvLz0+ICcwNzozNDoxOS4zNjFaJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKCkuc2V0KHsgaG91cjogNywgbWludXRlOiAzNCwgc2Vjb25kczogMCwgbWlsbGlzZWNvbmRzOiAwIH0pLnRvSVNPVGltZSh7IHN1cHByZXNzU2Vjb25kczogdHJ1ZSB9KSAvLz0+ICcwNzozNFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS5zZXQoeyBob3VyOiA3LCBtaW51dGU6IDM0IH0pLnRvSVNPVGltZSh7IGZvcm1hdDogJ2Jhc2ljJyB9KSAvLz0+ICcwNzM0MTkuMzYxWicKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygpLnNldCh7IGhvdXI6IDcsIG1pbnV0ZTogMzQgfSkudG9JU09UaW1lKHsgaW5jbHVkZVByZWZpeDogdHJ1ZSB9KSAvLz0+ICdUMDc6MzQ6MTkuMzYxWicKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9JU09UaW1lKHsKICAgICAgc3VwcHJlc3NNaWxsaXNlY29uZHMgPSBmYWxzZSwKICAgICAgc3VwcHJlc3NTZWNvbmRzID0gZmFsc2UsCiAgICAgIGluY2x1ZGVPZmZzZXQgPSB0cnVlLAogICAgICBpbmNsdWRlUHJlZml4ID0gZmFsc2UsCiAgICAgIGV4dGVuZGVkWm9uZSA9IGZhbHNlLAogICAgICBmb3JtYXQgPSAiZXh0ZW5kZWQiLAogICAgfSA9IHt9KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGxldCBjID0gaW5jbHVkZVByZWZpeCA/ICJUIiA6ICIiOwogICAgICByZXR1cm4gKAogICAgICAgIGMgKwogICAgICAgIHRvSVNPVGltZSgKICAgICAgICAgIHRoaXMsCiAgICAgICAgICBmb3JtYXQgPT09ICJleHRlbmRlZCIsCiAgICAgICAgICBzdXBwcmVzc1NlY29uZHMsCiAgICAgICAgICBzdXBwcmVzc01pbGxpc2Vjb25kcywKICAgICAgICAgIGluY2x1ZGVPZmZzZXQsCiAgICAgICAgICBleHRlbmRlZFpvbmUKICAgICAgICApCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIFJGQyAyODIyLWNvbXBhdGlibGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9SRkMyODIyKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCArMDAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1JGQzI4MjIoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDAwOjAwOjAwIC0wNDAwJwogICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICovCiAgICB0b1JGQzI4MjIoKSB7CiAgICAgIHJldHVybiB0b1RlY2hGb3JtYXQodGhpcywgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgWlpaIiwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gSFRUUCBoZWFkZXJzLiBUaGUgb3V0cHV0IGlzIGFsd2F5cyBleHByZXNzZWQgaW4gR01ULgogICAgICogU3BlY2lmaWNhbGx5LCB0aGUgc3RyaW5nIGNvbmZvcm1zIHRvIFJGQyAxMTIzLgogICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMzLmh0bWwjc2VjMy4zLjEKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLnV0YygyMDE0LCA3LCAxMykudG9IVFRQKCkgLy89PiAnU3VuLCAxMyBKdWwgMjAxNCAwMDowMDowMCBHTVQnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMsIDE5KS50b0hUVFAoKSAvLz0+ICdTdW4sIDEzIEp1bCAyMDE0IDE5OjAwOjAwIEdNVCcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9IVFRQKCkgewogICAgICByZXR1cm4gdG9UZWNoRm9ybWF0KHRoaXMudG9VVEMoKSwgIkVFRSwgZGQgTExMIHl5eXkgSEg6bW06c3MgJ0dNVCciKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIFNRTCBEYXRlCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoMjAxNCwgNywgMTMpLnRvU1FMRGF0ZSgpIC8vPT4gJzIwMTQtMDctMTMnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMRGF0ZSgpIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICByZXR1cm4gdG9JU09EYXRlKHRoaXMsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIFRpbWUKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gb3B0aW9ucwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlWm9uZT1mYWxzZV0gLSBpbmNsdWRlIHRoZSB6b25lLCBzdWNoIGFzICdBbWVyaWNhL05ld19Zb3JrJy4gT3ZlcnJpZGVzIGluY2x1ZGVPZmZzZXQuCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXQ9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJ1onIG9yICctMDQ6MDAnCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmluY2x1ZGVPZmZzZXRTcGFjZT10cnVlXSAtIGluY2x1ZGUgdGhlIHNwYWNlIGJldHdlZW4gdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQsIHN1Y2ggYXMgJzA1OjE1OjE2LjM0NSAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS51dGMoKS50b1NRTCgpIC8vPT4gJzA1OjE1OjE2LjM0NScKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKCkgLy89PiAnMDU6MTU6MTYuMzQ1IC0wNDowMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnRvU1FMKHsgaW5jbHVkZU9mZnNldDogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1JwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkudG9TUUwoeyBpbmNsdWRlWm9uZTogZmFsc2UgfSkgLy89PiAnMDU6MTU6MTYuMzQ1IEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMVGltZSh7IGluY2x1ZGVPZmZzZXQgPSB0cnVlLCBpbmNsdWRlWm9uZSA9IGZhbHNlLCBpbmNsdWRlT2Zmc2V0U3BhY2UgPSB0cnVlIH0gPSB7fSkgewogICAgICBsZXQgZm10ID0gIkhIOm1tOnNzLlNTUyI7CgogICAgICBpZiAoaW5jbHVkZVpvbmUgfHwgaW5jbHVkZU9mZnNldCkgewogICAgICAgIGlmIChpbmNsdWRlT2Zmc2V0U3BhY2UpIHsKICAgICAgICAgIGZtdCArPSAiICI7CiAgICAgICAgfQogICAgICAgIGlmIChpbmNsdWRlWm9uZSkgewogICAgICAgICAgZm10ICs9ICJ6IjsKICAgICAgICB9IGVsc2UgaWYgKGluY2x1ZGVPZmZzZXQpIHsKICAgICAgICAgIGZtdCArPSAiWloiOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRvVGVjaEZvcm1hdCh0aGlzLCBmbXQsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciB1c2UgaW4gU1FMIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIG9wdGlvbnMKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZVpvbmU9ZmFsc2VdIC0gaW5jbHVkZSB0aGUgem9uZSwgc3VjaCBhcyAnQW1lcmljYS9OZXdfWW9yaycuIE92ZXJyaWRlcyBpbmNsdWRlT2Zmc2V0LgogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0PXRydWVdIC0gaW5jbHVkZSB0aGUgb2Zmc2V0LCBzdWNoIGFzICdaJyBvciAnLTA0OjAwJwogICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5pbmNsdWRlT2Zmc2V0U3BhY2U9dHJ1ZV0gLSBpbmNsdWRlIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSB0aW1lIGFuZCB0aGUgb2Zmc2V0LCBzdWNoIGFzICcwNToxNToxNi4zNDUgLTA0OjAwJwogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUudXRjKDIwMTQsIDcsIDEzKS50b1NRTCgpIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIFonCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoKSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCAtMDQ6MDAnCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5sb2NhbCgyMDE0LCA3LCAxMykudG9TUUwoeyBpbmNsdWRlT2Zmc2V0OiBmYWxzZSB9KSAvLz0+ICcyMDE0LTA3LTEzIDAwOjAwOjAwLjAwMCcKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLmxvY2FsKDIwMTQsIDcsIDEzKS50b1NRTCh7IGluY2x1ZGVab25lOiB0cnVlIH0pIC8vPT4gJzIwMTQtMDctMTMgMDA6MDA6MDAuMDAwIEFtZXJpY2EvTmV3X1lvcmsnCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvU1FMKG9wdHMgPSB7fSkgewogICAgICBpZiAoIXRoaXMuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICByZXR1cm4gYCR7dGhpcy50b1NRTERhdGUoKX0gJHt0aGlzLnRvU1FMVGltZShvcHRzKX1gOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIERhdGVUaW1lIGFwcHJvcHJpYXRlIGZvciBkZWJ1Z2dpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAqLwogICAgdG9TdHJpbmcoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyB0aGlzLnRvSVNPKCkgOiBJTlZBTElEOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggbWlsbGlzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuIEFsaWFzIG9mIHtAbGluayBEYXRlVGltZSN0b01pbGxpc30KICAgICAqIEByZXR1cm4ge251bWJlcn0KICAgICAqLwogICAgdmFsdWVPZigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9NaWxsaXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGVwb2NoIG1pbGxpc2Vjb25kcyBvZiB0aGlzIERhdGVUaW1lLgogICAgICogQHJldHVybiB7bnVtYmVyfQogICAgICovCiAgICB0b01pbGxpcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBlcG9jaCBzZWNvbmRzIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvU2Vjb25kcygpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgLyAxMDAwIDogTmFOOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZXBvY2ggc2Vjb25kcyAoYXMgYSB3aG9sZSBudW1iZXIpIG9mIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9CiAgICAgKi8KICAgIHRvVW5peEludGVnZXIoKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBNYXRoLmZsb29yKHRoaXMudHMgLyAxMDAwKSA6IE5hTjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gSVNPIDg2MDEgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBEYXRlVGltZSBhcHByb3ByaWF0ZSBmb3IgdXNlIGluIEpTT04uCiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgKi8KICAgIHRvSlNPTigpIHsKICAgICAgcmV0dXJuIHRoaXMudG9JU08oKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCU09OIHNlcmlhbGl6YWJsZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0JTT04oKSB7CiAgICAgIHJldHVybiB0aGlzLnRvSlNEYXRlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgSmF2YVNjcmlwdCBvYmplY3Qgd2l0aCB0aGlzIERhdGVUaW1lJ3MgeWVhciwgbW9udGgsIGRheSwgYW5kIHNvIG9uLgogICAgICogQHBhcmFtIG9wdHMgLSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIHRoZSBvYmplY3QKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMuaW5jbHVkZUNvbmZpZz1mYWxzZV0gLSBpbmNsdWRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidXRlcyBpbiB0aGUgb3V0cHV0CiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS50b09iamVjdCgpIC8vPT4geyB5ZWFyOiAyMDE3LCBtb250aDogNCwgZGF5OiAyMiwgaG91cjogMjAsIG1pbnV0ZTogNDksIHNlY29uZDogNDIsIG1pbGxpc2Vjb25kOiAyNjggfQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICB0b09iamVjdChvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiB7fTsKCiAgICAgIGNvbnN0IGJhc2UgPSB7IC4uLnRoaXMuYyB9OwoKICAgICAgaWYgKG9wdHMuaW5jbHVkZUNvbmZpZykgewogICAgICAgIGJhc2Uub3V0cHV0Q2FsZW5kYXIgPSB0aGlzLm91dHB1dENhbGVuZGFyOwogICAgICAgIGJhc2UubnVtYmVyaW5nU3lzdGVtID0gdGhpcy5sb2MubnVtYmVyaW5nU3lzdGVtOwogICAgICAgIGJhc2UubG9jYWxlID0gdGhpcy5sb2MubG9jYWxlOwogICAgICB9CiAgICAgIHJldHVybiBiYXNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEphdmFTY3JpcHQgRGF0ZSBlcXVpdmFsZW50IHRvIHRoaXMgRGF0ZVRpbWUuCiAgICAgKiBAcmV0dXJuIHtEYXRlfQogICAgICovCiAgICB0b0pTRGF0ZSgpIHsKICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuaXNWYWxpZCA/IHRoaXMudHMgOiBOYU4pOwogICAgfQoKICAgIC8vIENPTVBBUkUKCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBEYXRlVGltZXMgYXMgYSBEdXJhdGlvbi4KICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IG90aGVyRGF0ZVRpbWUgLSB0aGUgRGF0ZVRpbWUgdG8gY29tcGFyZSB0aGlzIG9uZSB0bwogICAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IFt1bml0PVsnbWlsbGlzZWNvbmRzJ11dIC0gdGhlIHVuaXQgb3IgYXJyYXkgb2YgdW5pdHMgKHN1Y2ggYXMgJ2hvdXJzJyBvciAnZGF5cycpIHRvIGluY2x1ZGUgaW4gdGhlIGR1cmF0aW9uLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQGV4YW1wbGUKICAgICAqIHZhciBpMSA9IERhdGVUaW1lLmZyb21JU08oJzE5ODItMDUtMjVUMDk6NDUnKSwKICAgICAqICAgICBpMiA9IERhdGVUaW1lLmZyb21JU08oJzE5ODMtMTAtMTRUMTA6MzAnKTsKICAgICAqIGkyLmRpZmYoaTEpLnRvT2JqZWN0KCkgLy89PiB7IG1pbGxpc2Vjb25kczogNDM4MDc1MDAwMDAgfQogICAgICogaTIuZGlmZihpMSwgJ2hvdXJzJykudG9PYmplY3QoKSAvLz0+IHsgaG91cnM6IDEyMTY4Ljc1IH0KICAgICAqIGkyLmRpZmYoaTEsIFsnbW9udGhzJywgJ2RheXMnXSkudG9PYmplY3QoKSAvLz0+IHsgbW9udGhzOiAxNiwgZGF5czogMTkuMDMxMjUgfQogICAgICogaTIuZGlmZihpMSwgWydtb250aHMnLCAnZGF5cycsICdob3VycyddKS50b09iamVjdCgpIC8vPT4geyBtb250aHM6IDE2LCBkYXlzOiAxOSwgaG91cnM6IDAuNzUgfQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmYob3RoZXJEYXRlVGltZSwgdW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQgfHwgIW90aGVyRGF0ZVRpbWUuaXNWYWxpZCkgewogICAgICAgIHJldHVybiBEdXJhdGlvbi5pbnZhbGlkKCJjcmVhdGVkIGJ5IGRpZmZpbmcgYW4gaW52YWxpZCBEYXRlVGltZSIpOwogICAgICB9CgogICAgICBjb25zdCBkdXJPcHRzID0geyBsb2NhbGU6IHRoaXMubG9jYWxlLCBudW1iZXJpbmdTeXN0ZW06IHRoaXMubnVtYmVyaW5nU3lzdGVtLCAuLi5vcHRzIH07CgogICAgICBjb25zdCB1bml0cyA9IG1heWJlQXJyYXkodW5pdCkubWFwKER1cmF0aW9uLm5vcm1hbGl6ZVVuaXQpLAogICAgICAgIG90aGVySXNMYXRlciA9IG90aGVyRGF0ZVRpbWUudmFsdWVPZigpID4gdGhpcy52YWx1ZU9mKCksCiAgICAgICAgZWFybGllciA9IG90aGVySXNMYXRlciA/IHRoaXMgOiBvdGhlckRhdGVUaW1lLAogICAgICAgIGxhdGVyID0gb3RoZXJJc0xhdGVyID8gb3RoZXJEYXRlVGltZSA6IHRoaXMsCiAgICAgICAgZGlmZmVkID0gZGlmZihlYXJsaWVyLCBsYXRlciwgdW5pdHMsIGR1ck9wdHMpOwoKICAgICAgcmV0dXJuIG90aGVySXNMYXRlciA/IGRpZmZlZC5uZWdhdGUoKSA6IGRpZmZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgRGF0ZVRpbWUgYW5kIHJpZ2h0IG5vdy4KICAgICAqIFNlZSB7QGxpbmsgRGF0ZVRpbWUjZGlmZn0KICAgICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBbdW5pdD1bJ21pbGxpc2Vjb25kcyddXSAtIHRoZSB1bml0IG9yIHVuaXRzIHVuaXRzIChzdWNoIGFzICdob3Vycycgb3IgJ2RheXMnKSB0byBpbmNsdWRlIGluIHRoZSBkdXJhdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBjcmVhdGlvbiBvZiB0aGUgRHVyYXRpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0cy5jb252ZXJzaW9uQWNjdXJhY3k9J2Nhc3VhbCddIC0gdGhlIGNvbnZlcnNpb24gc3lzdGVtIHRvIHVzZQogICAgICogQHJldHVybiB7RHVyYXRpb259CiAgICAgKi8KICAgIGRpZmZOb3codW5pdCA9ICJtaWxsaXNlY29uZHMiLCBvcHRzID0ge30pIHsKICAgICAgcmV0dXJuIHRoaXMuZGlmZihEYXRlVGltZS5ub3coKSwgdW5pdCwgb3B0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gSW50ZXJ2YWwgc3Bhbm5pbmcgYmV0d2VlbiB0aGlzIERhdGVUaW1lIGFuZCBhbm90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIGVuZCBwb2ludCBvZiB0aGUgSW50ZXJ2YWwKICAgICAqIEByZXR1cm4ge0ludGVydmFsfQogICAgICovCiAgICB1bnRpbChvdGhlckRhdGVUaW1lKSB7CiAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQgPyBJbnRlcnZhbC5mcm9tRGF0ZVRpbWVzKHRoaXMsIG90aGVyRGF0ZVRpbWUpIDogdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgRGF0ZVRpbWUgaXMgaW4gdGhlIHNhbWUgdW5pdCBvZiB0aW1lIGFzIGFub3RoZXIgRGF0ZVRpbWUuCiAgICAgKiBIaWdoZXItb3JkZXIgdW5pdHMgbXVzdCBhbHNvIGJlIGlkZW50aWNhbCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYHRydWVgLgogICAgICogTm90ZSB0aGF0IHRpbWUgem9uZXMgYXJlICoqaWdub3JlZCoqIGluIHRoaXMgY29tcGFyaXNvbiwgd2hpY2ggY29tcGFyZXMgdGhlICoqbG9jYWwqKiBjYWxlbmRhciB0aW1lLiBVc2Uge0BsaW5rIERhdGVUaW1lI3NldFpvbmV9IHRvIGNvbnZlcnQgb25lIG9mIHRoZSBkYXRlcyBpZiBuZWVkZWQuCiAgICAgKiBAcGFyYW0ge0RhdGVUaW1lfSBvdGhlckRhdGVUaW1lIC0gdGhlIG90aGVyIERhdGVUaW1lCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdW5pdCAtIHRoZSB1bml0IG9mIHRpbWUgdG8gY2hlY2sgc2FtZW5lc3Mgb24KICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLmhhc1NhbWUob3RoZXJEVCwgJ2RheScpOyAvL34+IHRydWUgaWYgb3RoZXJEVCBpcyBpbiB0aGUgc2FtZSBjdXJyZW50IGNhbGVuZGFyIGRheQogICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAqLwogICAgaGFzU2FtZShvdGhlckRhdGVUaW1lLCB1bml0KSB7CiAgICAgIGlmICghdGhpcy5pc1ZhbGlkKSByZXR1cm4gZmFsc2U7CgogICAgICBjb25zdCBpbnB1dE1zID0gb3RoZXJEYXRlVGltZS52YWx1ZU9mKCk7CiAgICAgIGNvbnN0IGFkanVzdGVkVG9ab25lID0gdGhpcy5zZXRab25lKG90aGVyRGF0ZVRpbWUuem9uZSwgeyBrZWVwTG9jYWxUaW1lOiB0cnVlIH0pOwogICAgICByZXR1cm4gYWRqdXN0ZWRUb1pvbmUuc3RhcnRPZih1bml0KSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gYWRqdXN0ZWRUb1pvbmUuZW5kT2YodW5pdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFcXVhbGl0eSBjaGVjawogICAgICogVHdvIERhdGVUaW1lcyBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSByZXByZXNlbnQgdGhlIHNhbWUgbWlsbGlzZWNvbmQsIGhhdmUgdGhlIHNhbWUgem9uZSBhbmQgbG9jYXRpb24sIGFuZCBhcmUgYm90aCB2YWxpZC4KICAgICAqIFRvIGNvbXBhcmUganVzdCB0aGUgbWlsbGlzZWNvbmQgdmFsdWVzLCB1c2UgYCtkdDEgPT09ICtkdDJgLgogICAgICogQHBhcmFtIHtEYXRlVGltZX0gb3RoZXIgLSB0aGUgb3RoZXIgRGF0ZVRpbWUKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CiAgICAgKi8KICAgIGVxdWFscyhvdGhlcikgewogICAgICByZXR1cm4gKAogICAgICAgIHRoaXMuaXNWYWxpZCAmJgogICAgICAgIG90aGVyLmlzVmFsaWQgJiYKICAgICAgICB0aGlzLnZhbHVlT2YoKSA9PT0gb3RoZXIudmFsdWVPZigpICYmCiAgICAgICAgdGhpcy56b25lLmVxdWFscyhvdGhlci56b25lKSAmJgogICAgICAgIHRoaXMubG9jLmVxdWFscyhvdGhlci5sb2MpCiAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgdGhpcyB0aW1lIHJlbGF0aXZlIHRvIG5vdywgc3VjaCBhcyAiaW4gdHdvIGRheXMiLiBDYW4gb25seSBpbnRlcm5hdGlvbmFsaXplIGlmIHlvdXIKICAgICAqIHBsYXRmb3JtIHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LiBSb3VuZHMgZG93biBieSBkZWZhdWx0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc3R5bGU9ImxvbmciXSAtIHRoZSBzdHlsZSBvZiB1bml0cywgbXVzdCBiZSAibG9uZyIsICJzaG9ydCIsIG9yICJuYXJyb3ciCiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0aW9ucy51bml0IC0gdXNlIGEgc3BlY2lmaWMgdW5pdCBvciBhcnJheSBvZiB1bml0czsgaWYgb21pdHRlZCwgb3IgYW4gYXJyYXksIHRoZSBtZXRob2Qgd2lsbCBwaWNrIHRoZSBiZXN0IHVuaXQuIFVzZSBhbiBhcnJheSBvciBvbmUgb2YgInllYXJzIiwgInF1YXJ0ZXJzIiwgIm1vbnRocyIsICJ3ZWVrcyIsICJkYXlzIiwgImhvdXJzIiwgIm1pbnV0ZXMiLCBvciAic2Vjb25kcyIKICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucm91bmQ9dHJ1ZV0gLSB3aGV0aGVyIHRvIHJvdW5kIHRoZSBudW1iZXJzIGluIHRoZSBvdXRwdXQuCiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucGFkZGluZz0wXSAtIHBhZGRpbmcgaW4gbWlsbGlzZWNvbmRzLiBUaGlzIGFsbG93cyB5b3UgdG8gcm91bmQgdXAgdGhlIHJlc3VsdCBpZiBpdCBmaXRzIGluc2lkZSB0aGUgdGhyZXNob2xkLiBEb24ndCB1c2UgaW4gY29tYmluYXRpb24gd2l0aCB7cm91bmQ6IGZhbHNlfSBiZWNhdXNlIHRoZSBkZWNpbWFsIG91dHB1dCB3aWxsIGluY2x1ZGUgdGhlIHBhZGRpbmcuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm51bWJlcmluZ1N5c3RlbSAtIG92ZXJyaWRlIHRoZSBudW1iZXJpbmdTeXN0ZW0gb2YgdGhpcyBEYXRlVGltZS4gVGhlIEludGwgc3lzdGVtIG1heSBjaG9vc2Ugbm90IHRvIGhvbm9yIHRoaXMKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnBsdXMoeyBkYXlzOiAxIH0pLnRvUmVsYXRpdmUoKSAvLz0+ICJpbiAxIGRheSIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS50b1JlbGF0aXZlKHsgZGF5czogMSB9KSAvLz0+ICJkZW50cm8gZGUgMSBkw61hIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkucGx1cyh7IGRheXM6IDEgfSkudG9SZWxhdGl2ZSh7IGxvY2FsZTogImZyIiB9KSAvLz0+ICJkYW5zIDIzIGhldXJlcyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKCkgLy89PiAiMiBkYXlzIGFnbyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLm1pbnVzKHsgZGF5czogMiB9KS50b1JlbGF0aXZlKHsgdW5pdDogImhvdXJzIiB9KSAvLz0+ICI0OCBob3VycyBhZ28iCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5taW51cyh7IGhvdXJzOiAzNiB9KS50b1JlbGF0aXZlKHsgcm91bmQ6IGZhbHNlIH0pIC8vPT4gIjEuNSBkYXlzIGFnbyIKICAgICAqLwogICAgdG9SZWxhdGl2ZShvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwogICAgICBjb25zdCBiYXNlID0gb3B0aW9ucy5iYXNlIHx8IERhdGVUaW1lLmZyb21PYmplY3Qoe30sIHsgem9uZTogdGhpcy56b25lIH0pLAogICAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcgPyAodGhpcyA8IGJhc2UgPyAtb3B0aW9ucy5wYWRkaW5nIDogb3B0aW9ucy5wYWRkaW5nKSA6IDA7CiAgICAgIGxldCB1bml0cyA9IFsieWVhcnMiLCAibW9udGhzIiwgImRheXMiLCAiaG91cnMiLCAibWludXRlcyIsICJzZWNvbmRzIl07CiAgICAgIGxldCB1bml0ID0gb3B0aW9ucy51bml0OwogICAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLnVuaXQpKSB7CiAgICAgICAgdW5pdHMgPSBvcHRpb25zLnVuaXQ7CiAgICAgICAgdW5pdCA9IHVuZGVmaW5lZDsKICAgICAgfQogICAgICByZXR1cm4gZGlmZlJlbGF0aXZlKGJhc2UsIHRoaXMucGx1cyhwYWRkaW5nKSwgewogICAgICAgIC4uLm9wdGlvbnMsCiAgICAgICAgbnVtZXJpYzogImFsd2F5cyIsCiAgICAgICAgdW5pdHMsCiAgICAgICAgdW5pdCwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgZGF0ZSByZWxhdGl2ZSB0byB0b2RheSwgc3VjaCBhcyAieWVzdGVyZGF5IiBvciAibmV4dCBtb250aCIuCiAgICAgKiBPbmx5IGludGVybmF0aW9uYWxpemVzIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZSBvdXRwdXQKICAgICAqIEBwYXJhbSB7RGF0ZVRpbWV9IFtvcHRpb25zLmJhc2U9RGF0ZVRpbWUubm93KCldIC0gdGhlIERhdGVUaW1lIHRvIHVzZSBhcyB0aGUgYmFzaXMgdG8gd2hpY2ggdGhpcyB0aW1lIGlzIGNvbXBhcmVkLiBEZWZhdWx0cyB0byBub3cuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5sb2NhbGUgLSBvdmVycmlkZSB0aGUgbG9jYWxlIG9mIHRoaXMgRGF0ZVRpbWUKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVuaXQgLSB1c2UgYSBzcGVjaWZpYyB1bml0OyBpZiBvbWl0dGVkLCB0aGUgbWV0aG9kIHdpbGwgcGljayB0aGUgdW5pdC4gVXNlIG9uZSBvZiAieWVhcnMiLCAicXVhcnRlcnMiLCAibW9udGhzIiwgIndlZWtzIiwgb3IgImRheXMiCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5udW1iZXJpbmdTeXN0ZW0gLSBvdmVycmlkZSB0aGUgbnVtYmVyaW5nU3lzdGVtIG9mIHRoaXMgRGF0ZVRpbWUuIFRoZSBJbnRsIHN5c3RlbSBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGlzCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoKSAvLz0+ICJ0b21vcnJvdyIKICAgICAqIEBleGFtcGxlIERhdGVUaW1lLm5vdygpLnNldExvY2FsZSgiZXMiKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlKCkgLy89PiAiIm1hw7FhbmEiCiAgICAgKiBAZXhhbXBsZSBEYXRlVGltZS5ub3coKS5wbHVzKHsgZGF5czogMSB9KS50b1JlbGF0aXZlQ2FsZW5kYXIoeyBsb2NhbGU6ICJmciIgfSkgLy89PiAiZGVtYWluIgogICAgICogQGV4YW1wbGUgRGF0ZVRpbWUubm93KCkubWludXMoeyBkYXlzOiAyIH0pLnRvUmVsYXRpdmVDYWxlbmRhcigpIC8vPT4gIjIgZGF5cyBhZ28iCiAgICAgKi8KICAgIHRvUmVsYXRpdmVDYWxlbmRhcihvcHRpb25zID0ge30pIHsKICAgICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybiBudWxsOwoKICAgICAgcmV0dXJuIGRpZmZSZWxhdGl2ZShvcHRpb25zLmJhc2UgfHwgRGF0ZVRpbWUuZnJvbU9iamVjdCh7fSwgeyB6b25lOiB0aGlzLnpvbmUgfSksIHRoaXMsIHsKICAgICAgICAuLi5vcHRpb25zLAogICAgICAgIG51bWVyaWM6ICJhdXRvIiwKICAgICAgICB1bml0czogWyJ5ZWFycyIsICJtb250aHMiLCAiZGF5cyJdLAogICAgICAgIGNhbGVuZGFyeTogdHJ1ZSwKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIG1pbiBvZiBzZXZlcmFsIGRhdGUgdGltZXMKICAgICAqIEBwYXJhbSB7Li4uRGF0ZVRpbWV9IGRhdGVUaW1lcyAtIHRoZSBEYXRlVGltZXMgZnJvbSB3aGljaCB0byBjaG9vc2UgdGhlIG1pbmltdW0KICAgICAqIEByZXR1cm4ge0RhdGVUaW1lfSB0aGUgbWluIERhdGVUaW1lLCBvciB1bmRlZmluZWQgaWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQKICAgICAqLwogICAgc3RhdGljIG1pbiguLi5kYXRlVGltZXMpIHsKICAgICAgaWYgKCFkYXRlVGltZXMuZXZlcnkoRGF0ZVRpbWUuaXNEYXRlVGltZSkpIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoIm1pbiByZXF1aXJlcyBhbGwgYXJndW1lbnRzIGJlIERhdGVUaW1lcyIpOwogICAgICB9CiAgICAgIHJldHVybiBiZXN0QnkoZGF0ZVRpbWVzLCAoaSkgPT4gaS52YWx1ZU9mKCksIE1hdGgubWluKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgbWF4IG9mIHNldmVyYWwgZGF0ZSB0aW1lcwogICAgICogQHBhcmFtIHsuLi5EYXRlVGltZX0gZGF0ZVRpbWVzIC0gdGhlIERhdGVUaW1lcyBmcm9tIHdoaWNoIHRvIGNob29zZSB0aGUgbWF4aW11bQogICAgICogQHJldHVybiB7RGF0ZVRpbWV9IHRoZSBtYXggRGF0ZVRpbWUsIG9yIHVuZGVmaW5lZCBpZiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudAogICAgICovCiAgICBzdGF0aWMgbWF4KC4uLmRhdGVUaW1lcykgewogICAgICBpZiAoIWRhdGVUaW1lcy5ldmVyeShEYXRlVGltZS5pc0RhdGVUaW1lKSkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigibWF4IHJlcXVpcmVzIGFsbCBhcmd1bWVudHMgYmUgRGF0ZVRpbWVzIik7CiAgICAgIH0KICAgICAgcmV0dXJuIGJlc3RCeShkYXRlVGltZXMsIChpKSA9PiBpLnZhbHVlT2YoKSwgTWF0aC5tYXgpOwogICAgfQoKICAgIC8vIE1JU0MKCiAgICAvKioKICAgICAqIEV4cGxhaW4gaG93IGEgc3RyaW5nIHdvdWxkIGJlIHBhcnNlZCBieSBmcm9tRm9ybWF0KCkKICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gdGhlIHN0cmluZyB0byBwYXJzZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGZtdCAtIHRoZSBmb3JtYXQgdGhlIHN0cmluZyBpcyBleHBlY3RlZCB0byBiZSBpbiAoc2VlIGRlc2NyaXB0aW9uKQogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBvcHRpb25zIHRha2VuIGJ5IGZyb21Gb3JtYXQoKQogICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZnJvbUZvcm1hdEV4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgY29uc3QgeyBsb2NhbGUgPSBudWxsLCBudW1iZXJpbmdTeXN0ZW0gPSBudWxsIH0gPSBvcHRpb25zLAogICAgICAgIGxvY2FsZVRvVXNlID0gTG9jYWxlLmZyb21PcHRzKHsKICAgICAgICAgIGxvY2FsZSwKICAgICAgICAgIG51bWJlcmluZ1N5c3RlbSwKICAgICAgICAgIGRlZmF1bHRUb0VOOiB0cnVlLAogICAgICAgIH0pOwogICAgICByZXR1cm4gZXhwbGFpbkZyb21Ub2tlbnMobG9jYWxlVG9Vc2UsIHRleHQsIGZtdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbUZvcm1hdEV4cGxhaW4gaW5zdGVhZAogICAgICovCiAgICBzdGF0aWMgZnJvbVN0cmluZ0V4cGxhaW4odGV4dCwgZm10LCBvcHRpb25zID0ge30pIHsKICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21Gb3JtYXRFeHBsYWluKHRleHQsIGZtdCwgb3B0aW9ucyk7CiAgICB9CgogICAgLy8gRk9STUFUIFBSRVNFVFMKCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgMTAvMTQvMTk4MwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURV9TSE9SVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MycKICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaSwgT2N0IDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFX01FRF9XSVRIX1dFRUtEQVk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0ZVTEwoKSB7CiAgICAgIHJldHVybiBEQVRFX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdUdWVzZGF5LCBPY3RvYmVyIDE0LCAxOTgzJwogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFX0hVR0UoKSB7CiAgICAgIHJldHVybiBEQVRFX0hVR0U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FX1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FX1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcwOTozMCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1NJTVBMRSgpIHsKICAgICAgcmV0dXJuIFRJTUVfMjRfU0lNUExFOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnMDk6MzA6MjMnLCBhbHdheXMgMjQtaG91ci4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgVElNRV8yNF9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVEVCcsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUKCkgewogICAgICByZXR1cm4gVElNRV8yNF9XSVRIX1NIT1JUX09GRlNFVDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJzA5OjMwOjIzIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScsIGFsd2F5cyAyNC1ob3VyLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQoKSB7CiAgICAgIHJldHVybiBUSU1FXzI0X1dJVEhfTE9OR19PRkZTRVQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUKCkgewogICAgICByZXR1cm4gREFURVRJTUVfU0hPUlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICcxMC8xNC8xOTgzLCA5OjMwOjMzIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ09jdCAxNCwgMTk4MywgOTozMCBBTScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9NRUQoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3QgMTQsIDE5ODMsIDk6MzA6MzMgQU0nLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX01FRF9XSVRIX1NFQ09ORFM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdGcmksIDE0IE9jdCAxOTgzLCA5OjMwIEFNJy4gT25seSAxMi1ob3VyIGlmIHRoZSBsb2NhbGUgaXMuCiAgICAgKiBAdHlwZSB7T2JqZWN0fQogICAgICovCiAgICBzdGF0aWMgZ2V0IERBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9NRURfV0lUSF9XRUVLREFZOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnT2N0b2JlciAxNCwgMTk4MywgOTozMCBBTSBFRFQnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfRlVMTCgpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTEw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGxpbmsgRGF0ZVRpbWUjdG9Mb2NhbGVTdHJpbmd9IGZvcm1hdCBsaWtlICdPY3RvYmVyIDE0LCAxOTgzLCA5OjMwOjMzIEFNIEVEVCcuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9GVUxMX1dJVEhfU0VDT05EUygpIHsKICAgICAgcmV0dXJuIERBVEVUSU1FX0ZVTExfV0lUSF9TRUNPTkRTOwogICAgfQoKICAgIC8qKgogICAgICoge0BsaW5rIERhdGVUaW1lI3RvTG9jYWxlU3RyaW5nfSBmb3JtYXQgbGlrZSAnRnJpZGF5LCBPY3RvYmVyIDE0LCAxOTgzLCA5OjMwIEFNIEVhc3Rlcm4gRGF5bGlnaHQgVGltZScuIE9ubHkgMTItaG91ciBpZiB0aGUgbG9jYWxlIGlzLgogICAgICogQHR5cGUge09iamVjdH0KICAgICAqLwogICAgc3RhdGljIGdldCBEQVRFVElNRV9IVUdFKCkgewogICAgICByZXR1cm4gREFURVRJTUVfSFVHRTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAbGluayBEYXRlVGltZSN0b0xvY2FsZVN0cmluZ30gZm9ybWF0IGxpa2UgJ0ZyaWRheSwgT2N0b2JlciAxNCwgMTk4MywgOTozMDozMyBBTSBFYXN0ZXJuIERheWxpZ2h0IFRpbWUnLiBPbmx5IDEyLWhvdXIgaWYgdGhlIGxvY2FsZSBpcy4KICAgICAqIEB0eXBlIHtPYmplY3R9CiAgICAgKi8KICAgIHN0YXRpYyBnZXQgREFURVRJTUVfSFVHRV9XSVRIX1NFQ09ORFMoKSB7CiAgICAgIHJldHVybiBEQVRFVElNRV9IVUdFX1dJVEhfU0VDT05EUzsKICAgIH0KICB9CgogIC8qKgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gZnJpZW5kbHlEYXRlVGltZShkYXRlVGltZWlzaCkgewogICAgaWYgKERhdGVUaW1lLmlzRGF0ZVRpbWUoZGF0ZVRpbWVpc2gpKSB7CiAgICAgIHJldHVybiBkYXRlVGltZWlzaDsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgZGF0ZVRpbWVpc2gudmFsdWVPZiAmJiBpc051bWJlcihkYXRlVGltZWlzaC52YWx1ZU9mKCkpKSB7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tSlNEYXRlKGRhdGVUaW1laXNoKTsKICAgIH0gZWxzZSBpZiAoZGF0ZVRpbWVpc2ggJiYgdHlwZW9mIGRhdGVUaW1laXNoID09PSAib2JqZWN0IikgewogICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdChkYXRlVGltZWlzaCk7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoCiAgICAgICAgYFVua25vd24gZGF0ZXRpbWUgYXJndW1lbnQ6ICR7ZGF0ZVRpbWVpc2h9LCBvZiB0eXBlICR7dHlwZW9mIGRhdGVUaW1laXNofWAKICAgICAgKTsKICAgIH0KICB9CgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gUXVlcnkgU2V0dGluZ3MgLy8KICAvLy8vLy8vLy8vLy8vLy8vLy8vLwogIGNvbnN0IERFRkFVTFRfUVVFUllfU0VUVElOR1MgPSB7CiAgICAgIHJlbmRlck51bGxBczogIlxcLSIsCiAgICAgIHRhc2tDb21wbGV0aW9uVHJhY2tpbmc6IGZhbHNlLAogICAgICB0YXNrQ29tcGxldGlvblVzZUVtb2ppU2hvcnRoYW5kOiBmYWxzZSwKICAgICAgdGFza0NvbXBsZXRpb25UZXh0OiAiY29tcGxldGlvbiIsCiAgICAgIHRhc2tDb21wbGV0aW9uRGF0ZUZvcm1hdDogInl5eXktTU0tZGQiLAogICAgICByZWN1cnNpdmVTdWJUYXNrQ29tcGxldGlvbjogZmFsc2UsCiAgICAgIHdhcm5PbkVtcHR5UmVzdWx0OiB0cnVlLAogICAgICByZWZyZXNoRW5hYmxlZDogdHJ1ZSwKICAgICAgcmVmcmVzaEludGVydmFsOiAyNTAwLAogICAgICBkZWZhdWx0RGF0ZUZvcm1hdDogIk1NTU0gZGQsIHl5eXkiLAogICAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6ICJoOm1tIGEgLSBNTU1NIGRkLCB5eXl5IiwKICAgICAgbWF4UmVjdXJzaXZlUmVuZGVyRGVwdGg6IDQsCiAgICAgIHRhYmxlSWRDb2x1bW5OYW1lOiAiRmlsZSIsCiAgICAgIHRhYmxlR3JvdXBDb2x1bW5OYW1lOiAiR3JvdXAiLAogICAgICBzaG93UmVzdWx0Q291bnQ6IHRydWUsCiAgfTsKICBjb25zdCBERUZBVUxUX0VYUE9SVF9TRVRUSU5HUyA9IHsKICAgICAgYWxsb3dIdG1sOiB0cnVlLAogIH07CiAgLyoqIERlZmF1bHQgc2V0dGluZ3MgZm9yIGRhdGF2aWV3IG9uIGluc3RhbGwuICovCiAgKHsKICAgICAgLi4uREVGQVVMVF9RVUVSWV9TRVRUSU5HUywKICAgICAgLi4uREVGQVVMVF9FWFBPUlRfU0VUVElOR1MsCiAgICAgIC4uLnsKICAgICAgICAgIGlubGluZVF1ZXJ5UHJlZml4OiAiPSIsCiAgICAgICAgICBpbmxpbmVKc1F1ZXJ5UHJlZml4OiAiJD0iLAogICAgICAgICAgaW5saW5lUXVlcmllc0luQ29kZWJsb2NrczogdHJ1ZSwKICAgICAgICAgIGVuYWJsZUlubGluZURhdGF2aWV3OiB0cnVlLAogICAgICAgICAgZW5hYmxlRGF0YXZpZXdKczogZmFsc2UsCiAgICAgICAgICBlbmFibGVJbmxpbmVEYXRhdmlld0pzOiBmYWxzZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkczogdHJ1ZSwKICAgICAgICAgIHByZXR0eVJlbmRlcklubGluZUZpZWxkc0luTGl2ZVByZXZpZXc6IHRydWUsCiAgICAgICAgICBkYXRhdmlld0pzS2V5d29yZDogImRhdGF2aWV3anMiLAogICAgICB9LAogIH0pOwoKICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgU3VjY2VzcyB7CiAgICAgIHZhbHVlOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3Rvcih2YWx1ZSkgewogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gdHJ1ZTsKICAgICAgfQogICAgICBtYXAoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKGYodGhpcy52YWx1ZSkpOwogICAgICB9CiAgICAgIGZsYXRNYXAoZikgewogICAgICAgICAgcmV0dXJuIGYodGhpcy52YWx1ZSk7CiAgICAgIH0KICAgICAgbWFwRXJyKGYpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIGJpbWFwKHN1Y2MsIF9mYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoc3VjYyk7CiAgICAgIH0KICAgICAgb3JFbHNlKF92YWx1ZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KF9tZXNzYWdlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgICAgfQogIH0KICAvKiogRnVuY3Rpb25hbCByZXR1cm4gdHlwZSBmb3IgZXJyb3IgaGFuZGxpbmcuICovCiAgY2xhc3MgRmFpbHVyZSB7CiAgICAgIGVycm9yOwogICAgICBzdWNjZXNzZnVsOwogICAgICBjb25zdHJ1Y3RvcihlcnJvcikgewogICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOwogICAgICAgICAgdGhpcy5zdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgIH0KICAgICAgbWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBmbGF0TWFwKF9mKSB7CiAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBtYXBFcnIoZikgewogICAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKGYodGhpcy5lcnJvcikpOwogICAgICB9CiAgICAgIGJpbWFwKF9zdWNjLCBmYWlsKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5tYXBFcnIoZmFpbCk7CiAgICAgIH0KICAgICAgb3JFbHNlKHZhbHVlKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgY2FzdCgpIHsKICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIG9yRWxzZVRocm93KG1lc3NhZ2UpIHsKICAgICAgICAgIGlmIChtZXNzYWdlKQogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKHRoaXMuZXJyb3IpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIiIgKyB0aGlzLmVycm9yKTsKICAgICAgfQogIH0KICAvKiogTW9uYWRpYyAnUmVzdWx0JyB0eXBlIHdoaWNoIGVuY2Fwc3VsYXRlcyB3aGV0aGVyIGEgcHJvY2VkdXJlIHN1Y2NlZWRlZCBvciBmYWlsZWQsIGFzIHdlbGwgYXMgaXQncyByZXR1cm4gdmFsdWUuICovCiAgdmFyIFJlc3VsdDsKICAoZnVuY3Rpb24gKFJlc3VsdCkgewogICAgICAvKiogQ29uc3RydWN0IGEgbmV3IHN1Y2Nlc3MgcmVzdWx0IHdyYXBwaW5nIHRoZSBnaXZlbiB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gc3VjY2Vzcyh2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBTdWNjZXNzKHZhbHVlKTsKICAgICAgfQogICAgICBSZXN1bHQuc3VjY2VzcyA9IHN1Y2Nlc3M7CiAgICAgIC8qKiBDb25zdHJ1Y3QgYSBuZXcgZmFpbHVyZSB2YWx1ZSB3cmFwcGluZyB0aGUgZ2l2ZW4gZXJyb3IuICovCiAgICAgIGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3IpIHsKICAgICAgICAgIHJldHVybiBuZXcgRmFpbHVyZShlcnJvcik7CiAgICAgIH0KICAgICAgUmVzdWx0LmZhaWx1cmUgPSBmYWlsdXJlOwogICAgICAvKiogSm9pbiB0d28gcmVzdWx0cyB3aXRoIGEgYmktZnVuY3Rpb24gYW5kIHJldHVybiBhIG5ldyByZXN1bHQuICovCiAgICAgIGZ1bmN0aW9uIGZsYXRNYXAyKGZpcnN0LCBzZWNvbmQsIGYpIHsKICAgICAgICAgIGlmIChmaXJzdC5zdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICAgaWYgKHNlY29uZC5zdWNjZXNzZnVsKQogICAgICAgICAgICAgICAgICByZXR1cm4gZihmaXJzdC52YWx1ZSwgc2Vjb25kLnZhbHVlKTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlKHNlY29uZC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZShmaXJzdC5lcnJvcik7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgUmVzdWx0LmZsYXRNYXAyID0gZmxhdE1hcDI7CiAgICAgIC8qKiBKb2luIHR3byByZXN1bHRzIHdpdGggYSBiaS1mdW5jdGlvbiBhbmQgcmV0dXJuIGEgbmV3IHJlc3VsdC4gKi8KICAgICAgZnVuY3Rpb24gbWFwMihmaXJzdCwgc2Vjb25kLCBmKSB7CiAgICAgICAgICByZXR1cm4gZmxhdE1hcDIoZmlyc3QsIHNlY29uZCwgKGEsIGIpID0+IHN1Y2Nlc3MoZihhLCBiKSkpOwogICAgICB9CiAgICAgIFJlc3VsdC5tYXAyID0gbWFwMjsKICB9KShSZXN1bHQgfHwgKFJlc3VsdCA9IHt9KSk7CgogIHZhciBjb21tb25qc0dsb2JhbCA9IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgOiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHt9OwoKICB2YXIgcGFyc2ltbW9uX3VtZF9taW4gPSB7ZXhwb3J0czoge319OwoKICBwYXJzaW1tb25fdW1kX21pbi5leHBvcnRzOwoKICAoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykgewogIAkhZnVuY3Rpb24obix0KXttb2R1bGUuZXhwb3J0cz10KCk7fSgidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjpjb21tb25qc0dsb2JhbCxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD17fTtmdW5jdGlvbiByKGUpe2lmKHRbZV0pcmV0dXJuIHRbZV0uZXhwb3J0czt2YXIgdT10W2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHUuZXhwb3J0cyx1LHUuZXhwb3J0cyxyKSx1Lmw9ITAsdS5leHBvcnRzfXJldHVybiByLm09bixyLmM9dCxyLmQ9ZnVuY3Rpb24obix0LGUpe3IubyhuLHQpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobix0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pO30sci5yPWZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt9LHIubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihuLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KX0sci5wPSIiLHIoci5zPTApfShbZnVuY3Rpb24obix0LHIpe2Z1bmN0aW9uIGUobil7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpcmV0dXJuIG5ldyBlKG4pO3RoaXMuXz1uO312YXIgdT1lLnByb3RvdHlwZTtmdW5jdGlvbiBvKG4sdCl7Zm9yKHZhciByPTA7cjxuO3IrKyl0KHIpO31mdW5jdGlvbiBpKG4sdCxyKXtyZXR1cm4gZnVuY3Rpb24obix0KXtvKHQubGVuZ3RoLGZ1bmN0aW9uKHIpe24odFtyXSxyLHQpO30pO30oZnVuY3Rpb24ocixlLHUpe3Q9bih0LHIsZSx1KTt9LHIpLHR9ZnVuY3Rpb24gYShuLHQpe3JldHVybiBpKGZ1bmN0aW9uKHQscixlLHUpe3JldHVybiB0LmNvbmNhdChbbihyLGUsdSldKX0sW10sdCl9ZnVuY3Rpb24gZihuLHQpe3ZhciByPXt2OjAsYnVmOnR9O3JldHVybiBvKG4sZnVuY3Rpb24oKXt2YXIgbjtyPXt2OnIudjw8MXwobj1yLmJ1ZixuWzBdPj43KSxidWY6ZnVuY3Rpb24obil7dmFyIHQ9aShmdW5jdGlvbihuLHQscixlKXtyZXR1cm4gbi5jb25jYXQocj09PWUubGVuZ3RoLTE/QnVmZmVyLmZyb20oW3QsMF0pLnJlYWRVSW50MTZCRSgwKTplLnJlYWRVSW50MTZCRShyKSl9LFtdLG4pO3JldHVybiBCdWZmZXIuZnJvbShhKGZ1bmN0aW9uKG4pe3JldHVybiAobjw8MSY2NTUzNSk+Pjh9LHQpKX0oci5idWYpfTt9KSxyfWZ1bmN0aW9uIGMoKXtyZXR1cm4gInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXJ9ZnVuY3Rpb24gcygpe2lmKCFjKCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIgZ2xvYmFsIGRvZXMgbm90IGV4aXN0OyBwbGVhc2UgdXNlIHdlYnBhY2sgaWYgeW91IG5lZWQgdG8gcGFyc2UgQnVmZmVycyBpbiB0aGUgYnJvd3Nlci4iKX1mdW5jdGlvbiBsKG4pe3MoKTt2YXIgdD1pKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdH0sMCxuKTtpZih0JTghPTApdGhyb3cgbmV3IEVycm9yKCJUaGUgYml0cyBbIituLmpvaW4oIiwgIikrIl0gYWRkIHVwIHRvICIrdCsiIHdoaWNoIGlzIG5vdCBhbiBldmVuIG51bWJlciBvZiBieXRlczsgdGhlIHRvdGFsIHNob3VsZCBiZSBkaXZpc2libGUgYnkgOCIpO3ZhciByLHU9dC84LG89KHI9ZnVuY3Rpb24obil7cmV0dXJuIG4+NDh9LGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnx8KHIodCk/dDpuKX0sbnVsbCxuKSk7aWYobyl0aHJvdyBuZXcgRXJyb3IobysiIGJpdCByYW5nZSByZXF1ZXN0ZWQgZXhjZWVkcyA0OCBiaXQgKDYgYnl0ZSkgTnVtYmVyIG1heC4iKTtyZXR1cm4gbmV3IGUoZnVuY3Rpb24odCxyKXt2YXIgZT11K3I7cmV0dXJuIGU+dC5sZW5ndGg/eChyLHUudG9TdHJpbmcoKSsiIGJ5dGVzIik6YihlLGkoZnVuY3Rpb24obix0KXt2YXIgcj1mKHQsbi5idWYpO3JldHVybiB7Y29sbDpuLmNvbGwuY29uY2F0KHIudiksYnVmOnIuYnVmfX0se2NvbGw6W10sYnVmOnQuc2xpY2UocixlKX0sbikuY29sbCl9KX1mdW5jdGlvbiBoKG4sdCl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHMoKSxlK3Q+ci5sZW5ndGg/eChlLHQrIiBieXRlcyBmb3IgIituKTpiKGUrdCxyLnNsaWNlKGUsZSt0KSl9KX1mdW5jdGlvbiBwKG4sdCl7aWYoIm51bWJlciIhPXR5cGVvZihyPXQpfHxNYXRoLmZsb29yKHIpIT09cnx8dDwwfHx0PjYpdGhyb3cgbmV3IEVycm9yKG4rIiByZXF1aXJlcyBpbnRlZ2VyIGxlbmd0aCBpbiByYW5nZSBbMCwgNl0uIik7dmFyIHI7fWZ1bmN0aW9uIGQobil7cmV0dXJuIHAoInVpbnRCRSIsbiksaCgidWludEJFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50QkUoMCxuKX0pfWZ1bmN0aW9uIHYobil7cmV0dXJuIHAoInVpbnRMRSIsbiksaCgidWludExFKCIrbisiKSIsbikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlYWRVSW50TEUoMCxuKX0pfWZ1bmN0aW9uIGcobil7cmV0dXJuIHAoImludEJFIixuKSxoKCJpbnRCRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50QkUoMCxuKX0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIHAoImludExFIixuKSxoKCJpbnRMRSgiK24rIikiLG4pLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWFkSW50TEUoMCxuKX0pfWZ1bmN0aW9uIHkobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBlfWZ1bmN0aW9uIEUobil7cmV0dXJuICJbb2JqZWN0IEFycmF5XSI9PT17fS50b1N0cmluZy5jYWxsKG4pfWZ1bmN0aW9uIHcobil7cmV0dXJuIGMoKSYmQnVmZmVyLmlzQnVmZmVyKG4pfWZ1bmN0aW9uIGIobix0KXtyZXR1cm4ge3N0YXR1czohMCxpbmRleDpuLHZhbHVlOnQsZnVydGhlc3Q6LTEsZXhwZWN0ZWQ6W119fWZ1bmN0aW9uIHgobix0KXtyZXR1cm4gRSh0KXx8KHQ9W3RdKSx7c3RhdHVzOiExLGluZGV4Oi0xLHZhbHVlOm51bGwsZnVydGhlc3Q6bixleHBlY3RlZDp0fX1mdW5jdGlvbiBCKG4sdCl7aWYoIXQpcmV0dXJuIG47aWYobi5mdXJ0aGVzdD50LmZ1cnRoZXN0KXJldHVybiBuO3ZhciByPW4uZnVydGhlc3Q9PT10LmZ1cnRoZXN0P2Z1bmN0aW9uKG4sdCl7aWYoZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1lLl9zdXBwb3J0c1NldClyZXR1cm4gZS5fc3VwcG9ydHNTZXQ7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBTZXQ7cmV0dXJuIGUuX3N1cHBvcnRzU2V0PW4sbn0oKSYmQXJyYXkuZnJvbSl7Zm9yKHZhciByPW5ldyBTZXQobiksdT0wO3U8dC5sZW5ndGg7dSsrKXIuYWRkKHRbdV0pO3ZhciBvPUFycmF5LmZyb20ocik7cmV0dXJuIG8uc29ydCgpLG99Zm9yKHZhciBpPXt9LGE9MDthPG4ubGVuZ3RoO2ErKylpW25bYV1dPSEwO2Zvcih2YXIgZj0wO2Y8dC5sZW5ndGg7ZisrKWlbdFtmXV09ITA7dmFyIGM9W107Zm9yKHZhciBzIGluIGkpKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGkscykmJmMucHVzaChzKTtyZXR1cm4gYy5zb3J0KCksY30obi5leHBlY3RlZCx0LmV4cGVjdGVkKTp0LmV4cGVjdGVkO3JldHVybiB7c3RhdHVzOm4uc3RhdHVzLGluZGV4Om4uaW5kZXgsdmFsdWU6bi52YWx1ZSxmdXJ0aGVzdDp0LmZ1cnRoZXN0LGV4cGVjdGVkOnJ9fXZhciBqPXt9O2Z1bmN0aW9uIFMobix0KXtpZih3KG4pKXJldHVybiB7b2Zmc2V0OnQsbGluZTotMSxjb2x1bW46LTF9O24gaW4ganx8KGpbbl09e30pO2Zvcih2YXIgcj1qW25dLGU9MCx1PTAsbz0wLGk9dDtpPj0wOyl7aWYoaSBpbiByKXtlPXJbaV0ubGluZSwwPT09byYmKG89cltpXS5saW5lU3RhcnQpO2JyZWFrfSgiXG4iPT09bi5jaGFyQXQoaSl8fCJcciI9PT1uLmNoYXJBdChpKSYmIlxuIiE9PW4uY2hhckF0KGkrMSkpJiYodSsrLDA9PT1vJiYobz1pKzEpKSxpLS07fXZhciBhPWUrdSxmPXQtbztyZXR1cm4gclt0XT17bGluZTphLGxpbmVTdGFydDpvfSx7b2Zmc2V0OnQsbGluZTphKzEsY29sdW1uOmYrMX19ZnVuY3Rpb24gXyhuKXtpZigheShuKSl0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHBhcnNlcjogIituKX1mdW5jdGlvbiBMKG4sdCl7cmV0dXJuICJzdHJpbmciPT10eXBlb2Ygbj9uLmNoYXJBdCh0KTpuW3RdfWZ1bmN0aW9uIE8obil7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigibm90IGEgbnVtYmVyOiAiK24pfWZ1bmN0aW9uIGsobil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJub3QgYSBmdW5jdGlvbjogIituKX1mdW5jdGlvbiBQKG4pe2lmKCJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZzogIituKX12YXIgcT0yLEE9MyxJPTgsRj01KkksTT00Kkksej0iICAiO2Z1bmN0aW9uIFIobix0KXtyZXR1cm4gbmV3IEFycmF5KHQrMSkuam9pbihuKX1mdW5jdGlvbiBVKG4sdCxyKXt2YXIgZT10LW4ubGVuZ3RoO3JldHVybiBlPD0wP246UihyLGUpK259ZnVuY3Rpb24gVyhuLHQscixlKXtyZXR1cm4ge2Zyb206bi10PjA/bi10OjAsdG86bityPmU/ZTpuK3J9fWZ1bmN0aW9uIEQobix0KXt2YXIgcixlLHUsbyxmLGM9dC5pbmRleCxzPWMub2Zmc2V0LGw9MTtpZihzPT09bi5sZW5ndGgpcmV0dXJuICJHb3QgdGhlIGVuZCBvZiB0aGUgaW5wdXQiO2lmKHcobikpe3ZhciBoPXMtcyVJLHA9cy1oLGQ9VyhoLEYsTStJLG4ubGVuZ3RoKSx2PWEoZnVuY3Rpb24obil7cmV0dXJuIGEoZnVuY3Rpb24obil7cmV0dXJuIFUobi50b1N0cmluZygxNiksMiwiMCIpfSxuKX0sZnVuY3Rpb24obix0KXt2YXIgcj1uLmxlbmd0aCxlPVtdLHU9MDtpZihyPD10KXJldHVybiBbbi5zbGljZSgpXTtmb3IodmFyIG89MDtvPHI7bysrKWVbdV18fGUucHVzaChbXSksZVt1XS5wdXNoKG5bb10pLChvKzEpJXQ9PTAmJnUrKztyZXR1cm4gZX0obi5zbGljZShkLmZyb20sZC50bykudG9KU09OKCkuZGF0YSxJKSk7bz1mdW5jdGlvbihuKXtyZXR1cm4gMD09PW4uZnJvbSYmMT09PW4udG8/e2Zyb206bi5mcm9tLHRvOm4udG99Ontmcm9tOm4uZnJvbS9JLHRvOk1hdGguZmxvb3Iobi50by9JKX19KGQpLGU9aC9JLHI9MypwLHA+PTQmJihyKz0xKSxsPTIsdT1hKGZ1bmN0aW9uKG4pe3JldHVybiBuLmxlbmd0aDw9ND9uLmpvaW4oIiAiKTpuLnNsaWNlKDAsNCkuam9pbigiICIpKyIgICIrbi5zbGljZSg0KS5qb2luKCIgIil9LHYpLChmPSg4KihvLnRvPjA/by50by0xOm8udG8pKS50b1N0cmluZygxNikubGVuZ3RoKTwyJiYoZj0yKTt9ZWxzZSB7dmFyIGc9bi5zcGxpdCgvXHJcbnxbXG5cclx1MjAyOFx1MjAyOV0vKTtyPWMuY29sdW1uLTEsZT1jLmxpbmUtMSxvPVcoZSxxLEEsZy5sZW5ndGgpLHU9Zy5zbGljZShvLmZyb20sby50byksZj1vLnRvLnRvU3RyaW5nKCkubGVuZ3RoO312YXIgbT1lLW8uZnJvbTtyZXR1cm4gdyhuKSYmKGY9KDgqKG8udG8+MD9vLnRvLTE6by50bykpLnRvU3RyaW5nKDE2KS5sZW5ndGgpPDImJihmPTIpLGkoZnVuY3Rpb24odCxlLHUpe3ZhciBpLGE9dT09PW0sYz1hPyI+ICI6ejtyZXR1cm4gaT13KG4pP1UoKDgqKG8uZnJvbSt1KSkudG9TdHJpbmcoMTYpLGYsIjAiKTpVKChvLmZyb20rdSsxKS50b1N0cmluZygpLGYsIiAiKSxbXS5jb25jYXQodCxbYytpKyIgfCAiK2VdLGE/W3orUigiICIsZikrIiB8ICIrVSgiIixyLCIgIikrUigiXiIsbCldOltdKX0sW10sdSkuam9pbigiXG4iKX1mdW5jdGlvbiBOKG4sdCl7cmV0dXJuIFsiXG4iLCItLSBQQVJTSU5HIEZBSUxFRCAiK1IoIi0iLDUwKSwiXG5cbiIsRChuLHQpLCJcblxuIiwocj10LmV4cGVjdGVkLDE9PT1yLmxlbmd0aD8iRXhwZWN0ZWQ6XG5cbiIrclswXToiRXhwZWN0ZWQgb25lIG9mIHRoZSBmb2xsb3dpbmc6IFxuXG4iK3Iuam9pbigiLCAiKSksIlxuIl0uam9pbigiIik7dmFyIHI7fWZ1bmN0aW9uIEcobil7cmV0dXJuIHZvaWQgMCE9PW4uZmxhZ3M/bi5mbGFnczpbbi5nbG9iYWw/ImciOiIiLG4uaWdub3JlQ2FzZT8iaSI6IiIsbi5tdWx0aWxpbmU/Im0iOiIiLG4udW5pY29kZT8idSI6IiIsbi5zdGlja3k/InkiOiIiXS5qb2luKCIiKX1mdW5jdGlvbiBDKCl7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0PW4ubGVuZ3RoLHI9MDtyPHQ7cis9MSlfKG5bcl0pO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7Zm9yKHZhciB1LG89bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSs9MSl7aWYoISh1PUIobltpXS5fKHIsZSksdSkpLnN0YXR1cylyZXR1cm4gdTtvW2ldPXUudmFsdWUsZT11LmluZGV4O31yZXR1cm4gQihiKGUsbyksdSl9KX1mdW5jdGlvbiBKKCl7dmFyIG49W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInNlcU1hcCBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKTt2YXIgdD1uLnBvcCgpO3JldHVybiBrKHQpLEMuYXBwbHkobnVsbCxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkobnVsbCxuKX0pfWZ1bmN0aW9uIFQoKXt2YXIgbj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdD1uLmxlbmd0aDtpZigwPT09dClyZXR1cm4gWSgiemVybyBhbHRlcm5hdGVzIik7Zm9yKHZhciByPTA7cjx0O3IrPTEpXyhuW3JdKTtyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZSx1PTA7dTxuLmxlbmd0aDt1Kz0xKWlmKChlPUIoblt1XS5fKHQsciksZSkpLnN0YXR1cylyZXR1cm4gZTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFYobix0KXtyZXR1cm4gSChuLHQpLm9yKFgoW10pKX1mdW5jdGlvbiBIKG4sdCl7cmV0dXJuIF8obiksXyh0KSxKKG4sdC50aGVuKG4pLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBbbl0uY29uY2F0KHQpfSl9ZnVuY3Rpb24gSyhuKXtQKG4pO3ZhciB0PSInIituKyInIjtyZXR1cm4gZShmdW5jdGlvbihyLGUpe3ZhciB1PWUrbi5sZW5ndGgsbz1yLnNsaWNlKGUsdSk7cmV0dXJuIG89PT1uP2IodSxvKTp4KGUsdCl9KX1mdW5jdGlvbiBRKG4sdCl7IWZ1bmN0aW9uKG4pe2lmKCEobiBpbnN0YW5jZW9mIFJlZ0V4cCkpdGhyb3cgbmV3IEVycm9yKCJub3QgYSByZWdleHA6ICIrbik7Zm9yKHZhciB0PUcobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgZT10LmNoYXJBdChyKTtpZigiaSIhPT1lJiYibSIhPT1lJiYidSIhPT1lJiYicyIhPT1lKXRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgcmVnZXhwIGZsYWcgIicrZSsnIjogJytuKX19KG4pLGFyZ3VtZW50cy5sZW5ndGg+PTI/Tyh0KTp0PTA7dmFyIHI9ZnVuY3Rpb24obil7cmV0dXJuIFJlZ0V4cCgiXig/OiIrbi5zb3VyY2UrIikiLEcobikpfShuKSx1PSIiK247cmV0dXJuIGUoZnVuY3Rpb24obixlKXt2YXIgbz1yLmV4ZWMobi5zbGljZShlKSk7aWYobyl7aWYoMDw9dCYmdDw9by5sZW5ndGgpe3ZhciBpPW9bMF0sYT1vW3RdO3JldHVybiBiKGUraS5sZW5ndGgsYSl9cmV0dXJuIHgoZSwidmFsaWQgbWF0Y2ggZ3JvdXAgKDAgdG8gIitvLmxlbmd0aCsiKSBpbiAiK3UpfXJldHVybiB4KGUsdSl9KX1mdW5jdGlvbiBYKG4pe3JldHVybiBlKGZ1bmN0aW9uKHQscil7cmV0dXJuIGIocixuKX0pfWZ1bmN0aW9uIFkobil7cmV0dXJuIGUoZnVuY3Rpb24odCxyKXtyZXR1cm4geChyLG4pfSl9ZnVuY3Rpb24gWihuKXtpZih5KG4pKXJldHVybiBlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQscik7cmV0dXJuIGUuaW5kZXg9cixlLnZhbHVlPSIiLGV9KTtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIFooSyhuKSk7aWYobiBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4gWihRKG4pKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBhIHN0cmluZywgcmVnZXhwLCBvciBwYXJzZXI6ICIrbil9ZnVuY3Rpb24gJChuKXtyZXR1cm4gXyhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9bi5fKHQsciksdT10LnNsaWNlKHIsZS5pbmRleCk7cmV0dXJuIGUuc3RhdHVzP3gociwnbm90ICInK3UrJyInKTpiKHIsbnVsbCl9KX1mdW5jdGlvbiBubihuKXtyZXR1cm4gayhuKSxlKGZ1bmN0aW9uKHQscil7dmFyIGU9TCh0LHIpO3JldHVybiByPHQubGVuZ3RoJiZuKGUpP2IocisxLGUpOngociwiYSBjaGFyYWN0ZXIvYnl0ZSBtYXRjaGluZyAiK24pfSl9ZnVuY3Rpb24gdG4obix0KXthcmd1bWVudHMubGVuZ3RoPDImJih0PW4sbj12b2lkIDApO3ZhciByPWUoZnVuY3Rpb24obixlKXtyZXR1cm4gci5fPXQoKS5fLHIuXyhuLGUpfSk7cmV0dXJuIG4/ci5kZXNjKG4pOnJ9ZnVuY3Rpb24gcm4oKXtyZXR1cm4gWSgiZmFudGFzeS1sYW5kL2VtcHR5Iil9dS5wYXJzZT1mdW5jdGlvbihuKXtpZigic3RyaW5nIiE9dHlwZW9mIG4mJiF3KG4pKXRocm93IG5ldyBFcnJvcigiLnBhcnNlIG11c3QgYmUgY2FsbGVkIHdpdGggYSBzdHJpbmcgb3IgQnVmZmVyIGFzIGl0cyBhcmd1bWVudCIpO3ZhciB0LHI9dGhpcy5za2lwKGFuKS5fKG4sMCk7cmV0dXJuIHQ9ci5zdGF0dXM/e3N0YXR1czohMCx2YWx1ZTpyLnZhbHVlfTp7c3RhdHVzOiExLGluZGV4OlMobixyLmZ1cnRoZXN0KSxleHBlY3RlZDpyLmV4cGVjdGVkfSxkZWxldGUgaltuXSx0fSx1LnRyeVBhcnNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMucGFyc2Uobik7aWYodC5zdGF0dXMpcmV0dXJuIHQudmFsdWU7dmFyIHI9TihuLHQpLGU9bmV3IEVycm9yKHIpO3Rocm93IGUudHlwZT0iUGFyc2ltbW9uRXJyb3IiLGUucmVzdWx0PXQsZX0sdS5hc3NlcnQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpcy5jaGFpbihmdW5jdGlvbihyKXtyZXR1cm4gbihyKT9YKHIpOlkodCl9KX0sdS5vcj1mdW5jdGlvbihuKXtyZXR1cm4gVCh0aGlzLG4pfSx1LnRyaW09ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMud3JhcChuLG4pfSx1LndyYXA9ZnVuY3Rpb24obix0KXtyZXR1cm4gSihuLHRoaXMsdCxmdW5jdGlvbihuLHQpe3JldHVybiB0fSl9LHUudGhydT1mdW5jdGlvbihuKXtyZXR1cm4gbih0aGlzKX0sdS50aGVuPWZ1bmN0aW9uKG4pe3JldHVybiBfKG4pLEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19KX0sdS5tYW55PWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm4gZShmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT1bXSx1PXZvaWQgMDs7KXtpZighKHU9QihuLl8odCxyKSx1KSkuc3RhdHVzKXJldHVybiBCKGIocixlKSx1KTtpZihyPT09dS5pbmRleCl0aHJvdyBuZXcgRXJyb3IoImluZmluaXRlIGxvb3AgZGV0ZWN0ZWQgaW4gLm1hbnkoKSBwYXJzZXIgLS0tIGNhbGxpbmcgLm1hbnkoKSBvbiBhIHBhcnNlciB3aGljaCBjYW4gYWNjZXB0IHplcm8gY2hhcmFjdGVycyBpcyB1c3VhbGx5IHRoZSBjYXVzZSIpO3I9dS5pbmRleCxlLnB1c2godS52YWx1ZSk7fX0pfSx1LnRpZVdpdGg9ZnVuY3Rpb24obil7cmV0dXJuIFAobiksdGhpcy5tYXAoZnVuY3Rpb24odCl7aWYoZnVuY3Rpb24obil7aWYoIUUobikpdGhyb3cgbmV3IEVycm9yKCJub3QgYW4gYXJyYXk6ICIrbil9KHQpLHQubGVuZ3RoKXtQKHRbMF0pO2Zvcih2YXIgcj10WzBdLGU9MTtlPHQubGVuZ3RoO2UrKylQKHRbZV0pLHIrPW4rdFtlXTtyZXR1cm4gcn1yZXR1cm4gIiJ9KX0sdS50aWU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aWVXaXRoKCIiKX0sdS50aW1lcz1mdW5jdGlvbihuLHQpe3ZhciByPXRoaXM7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9biksTyhuKSxPKHQpLGUoZnVuY3Rpb24oZSx1KXtmb3IodmFyIG89W10saT12b2lkIDAsYT12b2lkIDAsZj0wO2Y8bjtmKz0xKXtpZihhPUIoaT1yLl8oZSx1KSxhKSwhaS5zdGF0dXMpcmV0dXJuIGE7dT1pLmluZGV4LG8ucHVzaChpLnZhbHVlKTt9Zm9yKDtmPHQmJihhPUIoaT1yLl8oZSx1KSxhKSxpLnN0YXR1cyk7Zis9MSl1PWkuaW5kZXgsby5wdXNoKGkudmFsdWUpO3JldHVybiBCKGIodSxvKSxhKX0pfSx1LnJlc3VsdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSx1LmF0TW9zdD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy50aW1lcygwLG4pfSx1LmF0TGVhc3Q9ZnVuY3Rpb24obil7cmV0dXJuIEoodGhpcy50aW1lcyhuKSx0aGlzLm1hbnkoKSxmdW5jdGlvbihuLHQpe3JldHVybiBuLmNvbmNhdCh0KX0pfSx1Lm1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihiKHUuaW5kZXgsbih1LnZhbHVlKSksdSk6dX0pfSx1LmNvbnRyYW1hcD1mdW5jdGlvbihuKXtrKG4pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10LnBhcnNlKG4oci5zbGljZShlKSkpO3JldHVybiB1LnN0YXR1cz9iKGUrci5sZW5ndGgsdS52YWx1ZSk6dX0pfSx1LnByb21hcD1mdW5jdGlvbihuLHQpe3JldHVybiBrKG4pLGsodCksdGhpcy5jb250cmFtYXAobikubWFwKHQpfSx1LnNraXA9ZnVuY3Rpb24obil7cmV0dXJuIEModGhpcyxuKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19KX0sdS5tYXJrPWZ1bmN0aW9uKCl7cmV0dXJuIEooZW4sdGhpcyxlbixmdW5jdGlvbihuLHQscil7cmV0dXJuIHtzdGFydDpuLHZhbHVlOnQsZW5kOnJ9fSl9LHUubm9kZT1mdW5jdGlvbihuKXtyZXR1cm4gSihlbix0aGlzLGVuLGZ1bmN0aW9uKHQscixlKXtyZXR1cm4ge25hbWU6bix2YWx1ZTpyLHN0YXJ0OnQsZW5kOmV9fSl9LHUuc2VwQnk9ZnVuY3Rpb24obil7cmV0dXJuIFYodGhpcyxuKX0sdS5zZXBCeTE9ZnVuY3Rpb24obil7cmV0dXJuIEgodGhpcyxuKX0sdS5sb29rYWhlYWQ9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuc2tpcChaKG4pKX0sdS5ub3RGb2xsb3dlZEJ5PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNraXAoJChuKSl9LHUuZGVzYz1mdW5jdGlvbihuKXtFKG4pfHwobj1bbl0pO3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXN8fCh1LmV4cGVjdGVkPW4pLHV9KX0sdS5mYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5vcihYKG4pKX0sdS5hcD1mdW5jdGlvbihuKXtyZXR1cm4gSihuLHRoaXMsZnVuY3Rpb24obix0KXtyZXR1cm4gbih0KX0pfSx1LmNoYWluPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXM7cmV0dXJuIGUoZnVuY3Rpb24ocixlKXt2YXIgdT10Ll8ocixlKTtyZXR1cm4gdS5zdGF0dXM/QihuKHUudmFsdWUpLl8ocix1LmluZGV4KSx1KTp1fSl9LHUuY29uY2F0PXUub3IsdS5lbXB0eT1ybix1Lm9mPVgsdVsiZmFudGFzeS1sYW5kL2FwIl09dS5hcCx1WyJmYW50YXN5LWxhbmQvY2hhaW4iXT11LmNoYWluLHVbImZhbnRhc3ktbGFuZC9jb25jYXQiXT11LmNvbmNhdCx1WyJmYW50YXN5LWxhbmQvZW1wdHkiXT11LmVtcHR5LHVbImZhbnRhc3ktbGFuZC9vZiJdPXUub2YsdVsiZmFudGFzeS1sYW5kL21hcCJdPXUubWFwO3ZhciBlbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIodCxTKG4sdCkpfSksdW49ZShmdW5jdGlvbihuLHQpe3JldHVybiB0Pj1uLmxlbmd0aD94KHQsImFueSBjaGFyYWN0ZXIvYnl0ZSIpOmIodCsxLEwobix0KSl9KSxvbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGIobi5sZW5ndGgsbi5zbGljZSh0KSl9KSxhbj1lKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ8bi5sZW5ndGg/eCh0LCJFT0YiKTpiKHQsbnVsbCl9KSxmbj1RKC9bMC05XS8pLmRlc2MoImEgZGlnaXQiKSxjbj1RKC9bMC05XSovKS5kZXNjKCJvcHRpb25hbCBkaWdpdHMiKSxzbj1RKC9bYS16XS9pKS5kZXNjKCJhIGxldHRlciIpLGxuPVEoL1thLXpdKi9pKS5kZXNjKCJvcHRpb25hbCBsZXR0ZXJzIiksaG49USgvXHMqLykuZGVzYygib3B0aW9uYWwgd2hpdGVzcGFjZSIpLHBuPVEoL1xzKy8pLmRlc2MoIndoaXRlc3BhY2UiKSxkbj1LKCJcciIpLHZuPUsoIlxuIiksZ249SygiXHJcbiIpLG1uPVQoZ24sdm4sZG4pLmRlc2MoIm5ld2xpbmUiKSx5bj1UKG1uLGFuKTtlLmFsbD1vbixlLmFsdD1ULGUuYW55PXVuLGUuY3I9ZG4sZS5jcmVhdGVMYW5ndWFnZT1mdW5jdGlvbihuKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gbikoe30pLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmZnVuY3Rpb24ocil7dFtyXT10bihmdW5jdGlvbigpe3JldHVybiBuW3JdKHQpfSk7fShyKTtyZXR1cm4gdH0sZS5jcmxmPWduLGUuY3VzdG9tPWZ1bmN0aW9uKG4pe3JldHVybiBlKG4oYix4KSl9LGUuZGlnaXQ9Zm4sZS5kaWdpdHM9Y24sZS5lbXB0eT1ybixlLmVuZD15bixlLmVvZj1hbixlLmZhaWw9WSxlLmZvcm1hdEVycm9yPU4sZS5pbmRleD1lbixlLmlzUGFyc2VyPXksZS5sYXp5PXRuLGUubGV0dGVyPXNuLGUubGV0dGVycz1sbixlLmxmPXZuLGUubG9va2FoZWFkPVosZS5tYWtlRmFpbHVyZT14LGUubWFrZVN1Y2Nlc3M9YixlLm5ld2xpbmU9bW4sZS5ub25lT2Y9ZnVuY3Rpb24obil7cmV0dXJuIG5uKGZ1bmN0aW9uKHQpe3JldHVybiBuLmluZGV4T2YodCk8MH0pLmRlc2MoIm5vbmUgb2YgJyIrbisiJyIpfSxlLm5vdEZvbGxvd2VkQnk9JCxlLm9mPVgsZS5vbmVPZj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9bi5zcGxpdCgiIikscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09IiciK3Rbcl0rIiciO3JldHVybiBubihmdW5jdGlvbih0KXtyZXR1cm4gbi5pbmRleE9mKHQpPj0wfSkuZGVzYyh0KX0sZS5vcHRXaGl0ZXNwYWNlPWhuLGUuUGFyc2VyPWUsZS5yYW5nZT1mdW5jdGlvbihuLHQpe3JldHVybiBubihmdW5jdGlvbihyKXtyZXR1cm4gbjw9ciYmcjw9dH0pLmRlc2MobisiLSIrdCl9LGUucmVnZXg9USxlLnJlZ2V4cD1RLGUuc2VwQnk9VixlLnNlcEJ5MT1ILGUuc2VxPUMsZS5zZXFNYXA9SixlLnNlcU9iaj1mdW5jdGlvbigpe2Zvcih2YXIgbix0PXt9LHI9MCx1PShuPWFyZ3VtZW50cyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKSksbz11Lmxlbmd0aCxpPTA7aTxvO2krPTEpe3ZhciBhPXVbaV07aWYoIXkoYSkpe2lmKEUoYSkmJjI9PT1hLmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiBhWzBdJiZ5KGFbMV0pKXt2YXIgZj1hWzBdO2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGYpKXRocm93IG5ldyBFcnJvcigic2VxT2JqOiBkdXBsaWNhdGUga2V5ICIrZik7dFtmXT0hMCxyKys7Y29udGludWV9dGhyb3cgbmV3IEVycm9yKCJzZXFPYmogYXJndW1lbnRzIG11c3QgYmUgcGFyc2VycyBvciBbc3RyaW5nLCBwYXJzZXJdIGFycmF5IHBhaXJzLiIpfX1pZigwPT09cil0aHJvdyBuZXcgRXJyb3IoInNlcU9iaiBleHBlY3RzIGF0IGxlYXN0IG9uZSBuYW1lZCBwYXJzZXIsIGZvdW5kIHplcm8iKTtyZXR1cm4gZShmdW5jdGlvbihuLHQpe2Zvcih2YXIgcixlPXt9LGk9MDtpPG87aSs9MSl7dmFyIGEsZjtpZihFKHVbaV0pPyhhPXVbaV1bMF0sZj11W2ldWzFdKTooYT1udWxsLGY9dVtpXSksIShyPUIoZi5fKG4sdCkscikpLnN0YXR1cylyZXR1cm4gcjthJiYoZVthXT1yLnZhbHVlKSx0PXIuaW5kZXg7fXJldHVybiBCKGIodCxlKSxyKX0pfSxlLnN0cmluZz1LLGUuc3VjY2VlZD1YLGUudGFrZVdoaWxlPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pLGUoZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9cjtlPHQubGVuZ3RoJiZuKEwodCxlKSk7KWUrKztyZXR1cm4gYihlLHQuc2xpY2UocixlKSl9KX0sZS50ZXN0PW5uLGUud2hpdGVzcGFjZT1wbixlWyJmYW50YXN5LWxhbmQvZW1wdHkiXT1ybixlWyJmYW50YXN5LWxhbmQvb2YiXT1YLGUuQmluYXJ5PXtiaXRTZXE6bCxiaXRTZXFPYmo6ZnVuY3Rpb24obil7cygpO3ZhciB0PXt9LHI9MCxlPWEoZnVuY3Rpb24obil7aWYoRShuKSl7dmFyIGU9bjtpZigyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJbIitlLmpvaW4oIiwgIikrIl0gc2hvdWxkIGJlIGxlbmd0aCAyLCBnb3QgbGVuZ3RoICIrZS5sZW5ndGgpO2lmKFAoZVswXSksTyhlWzFdKSxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlWzBdKSl0aHJvdyBuZXcgRXJyb3IoImR1cGxpY2F0ZSBrZXkgaW4gYml0U2VxT2JqOiAiK2VbMF0pO3JldHVybiB0W2VbMF1dPSEwLHIrKyxlfXJldHVybiBPKG4pLFtudWxsLG5dfSxuKTtpZihyPDEpdGhyb3cgbmV3IEVycm9yKCJiaXRTZXFPYmogZXhwZWN0cyBhdCBsZWFzdCBvbmUgbmFtZWQgcGFpciwgZ290IFsiK24uam9pbigiLCAiKSsiXSIpO3ZhciB1PWEoZnVuY3Rpb24obil7cmV0dXJuIG5bMF19LGUpO3JldHVybiBsKGEoZnVuY3Rpb24obil7cmV0dXJuIG5bMV19LGUpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGkoZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbCE9PXRbMF0mJihuW3RbMF1dPXRbMV0pLG59LHt9LGEoZnVuY3Rpb24odCxyKXtyZXR1cm4gW3QsbltyXV19LHUpKX0pfSxieXRlOmZ1bmN0aW9uKG4pe2lmKHMoKSxPKG4pLG4+MjU1KXRocm93IG5ldyBFcnJvcigiVmFsdWUgc3BlY2lmaWVkIHRvIGJ5dGUgY29uc3RydWN0b3IgKCIrbisiPTB4IituLnRvU3RyaW5nKDE2KSsiKSBpcyBsYXJnZXIgaW4gdmFsdWUgdGhhbiBhIHNpbmdsZSBieXRlLiIpO3ZhciB0PShuPjE1PyIweCI6IjB4MCIpK24udG9TdHJpbmcoMTYpO3JldHVybiBlKGZ1bmN0aW9uKHIsZSl7dmFyIHU9TChyLGUpO3JldHVybiB1PT09bj9iKGUrMSx1KTp4KGUsdCl9KX0sYnVmZmVyOmZ1bmN0aW9uKG4pe3JldHVybiBoKCJidWZmZXIiLG4pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gQnVmZmVyLmZyb20obil9KX0sZW5jb2RlZFN0cmluZzpmdW5jdGlvbihuLHQpe3JldHVybiBoKCJzdHJpbmciLHQpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZyhuKX0pfSx1aW50QkU6ZCx1aW50OEJFOmQoMSksdWludDE2QkU6ZCgyKSx1aW50MzJCRTpkKDQpLHVpbnRMRTp2LHVpbnQ4TEU6digxKSx1aW50MTZMRTp2KDIpLHVpbnQzMkxFOnYoNCksaW50QkU6ZyxpbnQ4QkU6ZygxKSxpbnQxNkJFOmcoMiksaW50MzJCRTpnKDQpLGludExFOm0saW50OExFOm0oMSksaW50MTZMRTptKDIpLGludDMyTEU6bSg0KSxmbG9hdEJFOmgoImZsb2F0QkUiLDQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRmxvYXRCRSgwKX0pLGZsb2F0TEU6aCgiZmxvYXRMRSIsNCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWRGbG9hdExFKDApfSksZG91YmxlQkU6aCgiZG91YmxlQkUiLDgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbi5yZWFkRG91YmxlQkUoMCl9KSxkb3VibGVMRTpoKCJkb3VibGVMRSIsOCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlYWREb3VibGVMRSgwKX0pfSxuLmV4cG9ydHM9ZTt9XSl9KTsgCiAgfSAocGFyc2ltbW9uX3VtZF9taW4sIHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHMpKTsKCiAgdmFyIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cyA9IHBhcnNpbW1vbl91bWRfbWluLmV4cG9ydHM7CgogIHZhciBlbW9qaVJlZ2V4ID0gKCkgPT4gewogIAkvLyBodHRwczovL210aHMuYmUvZW1vamkKICAJcmV0dXJuIC9bIyowLTldXHVGRTBGP1x1MjBFM3xbXHhBOVx4QUVcdTIwM0NcdTIwNDlcdTIxMjJcdTIxMzlcdTIxOTQtXHUyMTk5XHUyMUE5XHUyMUFBXHUyMzFBXHUyMzFCXHUyMzI4XHUyM0NGXHUyM0VELVx1MjNFRlx1MjNGMVx1MjNGMlx1MjNGOC1cdTIzRkFcdTI0QzJcdTI1QUFcdTI1QUJcdTI1QjZcdTI1QzBcdTI1RkJcdTI1RkNcdTI1RkVcdTI2MDAtXHUyNjA0XHUyNjBFXHUyNjExXHUyNjE0XHUyNjE1XHUyNjE4XHUyNjIwXHUyNjIyXHUyNjIzXHUyNjI2XHUyNjJBXHUyNjJFXHUyNjJGXHUyNjM4LVx1MjYzQVx1MjY0MFx1MjY0Mlx1MjY0OC1cdTI2NTNcdTI2NUZcdTI2NjBcdTI2NjNcdTI2NjVcdTI2NjZcdTI2NjhcdTI2N0JcdTI2N0VcdTI2N0ZcdTI2OTJcdTI2OTQtXHUyNjk3XHUyNjk5XHUyNjlCXHUyNjlDXHUyNkEwXHUyNkE3XHUyNkFBXHUyNkIwXHUyNkIxXHUyNkJEXHUyNkJFXHUyNkM0XHUyNkM4XHUyNkNGXHUyNkQxXHUyNkQzXHUyNkU5XHUyNkYwLVx1MjZGNVx1MjZGN1x1MjZGOFx1MjZGQVx1MjcwMlx1MjcwOFx1MjcwOVx1MjcwRlx1MjcxMlx1MjcxNFx1MjcxNlx1MjcxRFx1MjcyMVx1MjczM1x1MjczNFx1Mjc0NFx1Mjc0N1x1Mjc1N1x1Mjc2M1x1MjdBMVx1MjkzNFx1MjkzNVx1MkIwNS1cdTJCMDdcdTJCMUJcdTJCMUNcdTJCNTVcdTMwMzBcdTMwM0RcdTMyOTdcdTMyOTldXHVGRTBGP3xbXHUyNjFEXHUyNzBDXHUyNzBEXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHUyNzBBXHUyNzBCXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdTIzRTktXHUyM0VDXHUyM0YwXHUyM0YzXHUyNUZEXHUyNjkzXHUyNkExXHUyNkFCXHUyNkM1XHUyNkNFXHUyNkQ0XHUyNkVBXHUyNkZEXHUyNzA1XHUyNzI4XHUyNzRDXHUyNzRFXHUyNzUzLVx1Mjc1NVx1Mjc5NS1cdTI3OTdcdTI3QjBcdTI3QkZcdTJCNTBdfFx1MjZGOSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFx1Mjc2NFx1RkUwRj8oPzpcdTIwMEQoPzpcdUQ4M0RcdUREMjV8XHVEODNFXHVERTc5KSk/fFx1RDgzQyg/OltcdURDMDRcdURENzBcdURENzFcdUREN0VcdUREN0ZcdURFMDJcdURFMzdcdURGMjFcdURGMjQtXHVERjJDXHVERjM2XHVERjdEXHVERjk2XHVERjk3XHVERjk5LVx1REY5Qlx1REY5RVx1REY5Rlx1REZDRFx1REZDRVx1REZENC1cdURGREZcdURGRjVcdURGRjddXHVGRTBGP3xbXHVERjg1XHVERkMyXHVERkM3XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/fFtcdURGQzNcdURGQzRcdURGQ0FdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT8oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERkNCXHVERkNDXSg/Olx1RkUwRnxcdUQ4M0NbXHVERkZCLVx1REZGRl0pPyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGPyk/fFtcdURDQ0ZcdUREOEVcdUREOTEtXHVERDlBXHVERTAxXHVERTFBXHVERTJGXHVERTMyLVx1REUzNlx1REUzOC1cdURFM0FcdURFNTBcdURFNTFcdURGMDAtXHVERjIwXHVERjJELVx1REYzNVx1REYzNy1cdURGN0NcdURGN0UtXHVERjg0XHVERjg2LVx1REY5M1x1REZBMC1cdURGQzFcdURGQzVcdURGQzZcdURGQzhcdURGQzlcdURGQ0YtXHVERkQzXHVERkUwLVx1REZGMFx1REZGOC1cdURGRkZdfFx1RERFNlx1RDgzQ1tcdURERTgtXHVEREVDXHVEREVFXHVEREYxXHVEREYyXHVEREY0XHVEREY2LVx1RERGQVx1RERGQ1x1RERGRFx1RERGRl18XHVEREU3XHVEODNDW1x1RERFNlx1RERFN1x1RERFOS1cdURERUZcdURERjEtXHVEREY0XHVEREY2LVx1RERGOVx1RERGQlx1RERGQ1x1RERGRVx1RERGRl18XHVEREU4XHVEODNDW1x1RERFNlx1RERFOFx1RERFOVx1RERFQi1cdURERUVcdURERjAtXHVEREY1XHVEREY3XHVEREZBLVx1RERGRl18XHVEREU5XHVEODNDW1x1RERFQVx1RERFQ1x1RERFRlx1RERGMFx1RERGMlx1RERGNFx1RERGRl18XHVEREVBXHVEODNDW1x1RERFNlx1RERFOFx1RERFQVx1RERFQ1x1RERFRFx1RERGNy1cdURERkFdfFx1RERFQlx1RDgzQ1tcdURERUUtXHVEREYwXHVEREYyXHVEREY0XHVEREY3XXxcdURERUNcdUQ4M0NbXHVEREU2XHVEREU3XHVEREU5LVx1RERFRVx1RERGMS1cdURERjNcdURERjUtXHVEREZBXHVEREZDXHVEREZFXXxcdURERURcdUQ4M0NbXHVEREYwXHVEREYyXHVEREYzXHVEREY3XHVEREY5XHVEREZBXXxcdURERUVcdUQ4M0NbXHVEREU4LVx1RERFQVx1RERGMS1cdURERjRcdURERjYtXHVEREY5XXxcdURERUZcdUQ4M0NbXHVEREVBXHVEREYyXHVEREY0XHVEREY1XXxcdURERjBcdUQ4M0NbXHVEREVBXHVEREVDLVx1RERFRVx1RERGMlx1RERGM1x1RERGNVx1RERGN1x1RERGQ1x1RERGRVx1RERGRl18XHVEREYxXHVEODNDW1x1RERFNi1cdURERThcdURERUVcdURERjBcdURERjctXHVEREZCXHVEREZFXXxcdURERjJcdUQ4M0NbXHVEREU2XHVEREU4LVx1RERFRFx1RERGMC1cdURERkZdfFx1RERGM1x1RDgzQ1tcdURERTZcdURERThcdURERUEtXHVEREVDXHVEREVFXHVEREYxXHVEREY0XHVEREY1XHVEREY3XHVEREZBXHVEREZGXXxcdURERjRcdUQ4M0NcdURERjJ8XHVEREY1XHVEODNDW1x1RERFNlx1RERFQS1cdURERURcdURERjAtXHVEREYzXHVEREY3LVx1RERGOVx1RERGQ1x1RERGRV18XHVEREY2XHVEODNDXHVEREU2fFx1RERGN1x1RDgzQ1tcdURERUFcdURERjRcdURERjhcdURERkFcdURERkNdfFx1RERGOFx1RDgzQ1tcdURERTYtXHVEREVBXHVEREVDLVx1RERGNFx1RERGNy1cdURERjlcdURERkJcdURERkQtXHVEREZGXXxcdURERjlcdUQ4M0NbXHVEREU2XHVEREU4XHVEREU5XHVEREVCLVx1RERFRFx1RERFRi1cdURERjRcdURERjdcdURERjlcdURERkJcdURERkNcdURERkZdfFx1RERGQVx1RDgzQ1tcdURERTZcdURERUNcdURERjJcdURERjNcdURERjhcdURERkVcdURERkZdfFx1RERGQlx1RDgzQ1tcdURERTZcdURERThcdURERUFcdURERUNcdURERUVcdURERjNcdURERkFdfFx1RERGQ1x1RDgzQ1tcdURERUJcdURERjhdfFx1RERGRFx1RDgzQ1x1RERGMHxcdURERkVcdUQ4M0NbXHVEREVBXHVEREY5XXxcdURERkZcdUQ4M0NbXHVEREU2XHVEREYyXHVEREZDXXxcdURGRjNcdUZFMEY/KD86XHUyMDBEKD86XHUyNkE3XHVGRTBGP3xcdUQ4M0NcdURGMDgpKT98XHVERkY0KD86XHUyMDBEXHUyNjIwXHVGRTBGP3xcdURCNDBcdURDNjdcdURCNDBcdURDNjJcdURCNDAoPzpcdURDNjVcdURCNDBcdURDNkVcdURCNDBcdURDNjd8XHVEQzczXHVEQjQwXHVEQzYzXHVEQjQwXHVEQzc0fFx1REM3N1x1REI0MFx1REM2Q1x1REI0MFx1REM3MylcdURCNDBcdURDN0YpPyl8XHVEODNEKD86W1x1REMwOFx1REMyNl0oPzpcdTIwMERcdTJCMUIpP3xbXHVEQzNGXHVEQ0ZEXHVERDQ5XHVERDRBXHVERDZGXHVERDcwXHVERDczXHVERDc2LVx1REQ3OVx1REQ4N1x1REQ4QS1cdUREOERcdUREQTVcdUREQThcdUREQjFcdUREQjJcdUREQkNcdUREQzItXHVEREM0XHVEREQxLVx1REREM1x1REREQy1cdUREREVcdURERTFcdURERTNcdURERThcdURERUZcdURERjNcdURERkFcdURFQ0JcdURFQ0QtXHVERUNGXHVERUUwLVx1REVFNVx1REVFOVx1REVGMFx1REVGM11cdUZFMEY/fFtcdURDNDJcdURDNDNcdURDNDYtXHVEQzUwXHVEQzY2XHVEQzY3XHVEQzZCLVx1REM2RFx1REM3Mlx1REM3NC1cdURDNzZcdURDNzhcdURDN0NcdURDODNcdURDODVcdURDOEZcdURDOTFcdURDQUFcdUREN0FcdUREOTVcdUREOTZcdURFNENcdURFNEZcdURFQzBcdURFQ0NdKD86XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REM2RVx1REM3MFx1REM3MVx1REM3M1x1REM3N1x1REM4MVx1REM4Mlx1REM4Nlx1REM4N1x1REU0NS1cdURFNDdcdURFNEJcdURFNERcdURFNEVcdURFQTNcdURFQjQtXHVERUI2XSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1REQ3NFx1REQ5MF0oPzpcdUZFMEZ8XHVEODNDW1x1REZGQi1cdURGRkZdKT98W1x1REMwMC1cdURDMDdcdURDMDktXHVEQzE0XHVEQzE2LVx1REMyNVx1REMyNy1cdURDM0FcdURDM0MtXHVEQzNFXHVEQzQwXHVEQzQ0XHVEQzQ1XHVEQzUxLVx1REM2NVx1REM2QVx1REM3OS1cdURDN0JcdURDN0QtXHVEQzgwXHVEQzg0XHVEQzg4LVx1REM4RVx1REM5MFx1REM5Mi1cdURDQTlcdURDQUItXHVEQ0ZDXHVEQ0ZGLVx1REQzRFx1REQ0Qi1cdURENEVcdURENTAtXHVERDY3XHVEREE0XHVEREZCLVx1REUyRFx1REUyRi1cdURFMzRcdURFMzctXHVERTQ0XHVERTQ4LVx1REU0QVx1REU4MC1cdURFQTJcdURFQTQtXHVERUIzXHVERUI3LVx1REVCRlx1REVDMS1cdURFQzVcdURFRDAtXHVERUQyXHVERUQ1LVx1REVEN1x1REVEQy1cdURFREZcdURFRUJcdURFRUNcdURFRjQtXHVERUZDXHVERkUwLVx1REZFQlx1REZGMF18XHVEQzE1KD86XHUyMDBEXHVEODNFXHVEREJBKT98XHVEQzNCKD86XHUyMDBEXHUyNzQ0XHVGRTBGPyk/fFx1REM0MVx1RkUwRj8oPzpcdTIwMERcdUQ4M0RcdURERThcdUZFMEY/KT98XHVEQzY4KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OHxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XVx1MjAwRFx1RDgzRCg/Olx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT8pfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1x1REM2OFx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEXHVEQzY4XHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/Olx1REM4Qlx1MjAwRFx1RDgzRCk/XHVEQzY4XHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RcdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86XHVEQzhCXHUyMDBEXHVEODNEKT9cdURDNjhcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFx1REM2OFx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzY5KD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpcdURDOEJcdTIwMERcdUQ4M0QpP1tcdURDNjhcdURDNjldfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRCg/OltcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1REM2Nig/Olx1MjAwRFx1RDgzRFx1REM2Nik/fFx1REM2Nyg/Olx1MjAwRFx1RDgzRFtcdURDNjZcdURDNjddKT98XHVEQzY5XHUyMDBEXHVEODNEKD86XHVEQzY2KD86XHUyMDBEXHVEODNEXHVEQzY2KT98XHVEQzY3KD86XHUyMDBEXHVEODNEW1x1REM2Nlx1REM2N10pPykpfFx1RDgzRVtcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXSl8XHVEODNDKD86XHVERkZCKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMERcdUQ4M0QoPzpbXHVEQzY4XHVEQzY5XXxcdURDOEJcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XSlcdUQ4M0NbXHVERkZCLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldXHVEODNDW1x1REZGQy1cdURGRkZdKSkpP3xcdURGRkMoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCXHVERkZELVx1REZGRl0pKSk/fFx1REZGRCg/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKSkpP3xcdURGRkUoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRFx1RDgzRCg/OltcdURDNjhcdURDNjldfFx1REM4Qlx1MjAwRFx1RDgzRFtcdURDNjhcdURDNjldKVx1RDgzQ1tcdURGRkItXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV1cdUQ4M0NbXHVERkZCLVx1REZGRFx1REZGRl0pKSk/fFx1REZGRig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEXHVEODNEKD86W1x1REM2OFx1REM2OV18XHVEQzhCXHUyMDBEXHVEODNEW1x1REM2OFx1REM2OV0pXHVEODNDW1x1REZGQi1cdURGRkZdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0RbXHVEQzY4XHVEQzY5XVx1RDgzQ1tcdURGRkItXHVERkZFXSkpKT8pKT98XHVEQzZGKD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERDc1KD86XHVGRTBGfFx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98XHVERTJFKD86XHUyMDBEXHVEODNEXHVEQ0E4KT98XHVERTM1KD86XHUyMDBEXHVEODNEXHVEQ0FCKT98XHVERTM2KD86XHUyMDBEXHVEODNDXHVERjJCXHVGRTBGPyk/KXxcdUQ4M0UoPzpbXHVERDBDXHVERDBGXHVERDE4LVx1REQxRlx1REQzMC1cdUREMzRcdUREMzZcdURENzdcdUREQjVcdUREQjZcdUREQkJcdURERDJcdURERDNcdURERDVcdURFQzMtXHVERUM1XHVERUYwXHVERUYyLVx1REVGOF0oPzpcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xbXHVERDI2XHVERDM1XHVERDM3LVx1REQzOVx1REQzRFx1REQzRVx1RERCOFx1RERCOVx1RERDRC1cdUREQ0ZcdURERDRcdURERDYtXHVEREREXSg/Olx1RDgzQ1tcdURGRkItXHVERkZGXSk/KD86XHUyMDBEW1x1MjY0MFx1MjY0Ml1cdUZFMEY/KT98W1x1RERERVx1RERERl0oPzpcdTIwMERbXHUyNjQwXHUyNjQyXVx1RkUwRj8pP3xbXHVERDBEXHVERDBFXHVERDEwLVx1REQxN1x1REQyMC1cdUREMjVcdUREMjctXHVERDJGXHVERDNBXHVERDNGLVx1REQ0NVx1REQ0Ny1cdURENzZcdURENzgtXHVEREI0XHVEREI3XHVEREJBXHVEREJDLVx1RERDQ1x1REREMFx1RERFMC1cdURERkZcdURFNzAtXHVERTdDXHVERTgwLVx1REU4OFx1REU5MC1cdURFQkRcdURFQkYtXHVERUMyXHVERUNFLVx1REVEQlx1REVFMC1cdURFRThdfFx1REQzQyg/Olx1MjAwRFtcdTI2NDBcdTI2NDJdXHVGRTBGP3xcdUQ4M0NbXHVERkZCLVx1REZGRl0pP3xcdURERDEoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMSkpfFx1RDgzQyg/Olx1REZGQig/Olx1MjAwRCg/OltcdTI2OTVcdTI2OTZcdTI3MDhdXHVGRTBGP3xcdTI3NjRcdUZFMEY/XHUyMDBEKD86XHVEODNEXHVEQzhCXHUyMDBEKT9cdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZDLVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZDKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkQoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQlx1REZGQ1x1REZGRVx1REZGRl18XHVEODNDW1x1REYzRVx1REY3M1x1REY3Q1x1REY4NFx1REY5M1x1REZBNFx1REZBOFx1REZFQlx1REZFRF18XHVEODNEW1x1RENCQlx1RENCQ1x1REQyN1x1REQyQ1x1REU4MFx1REU5Ml18XHVEODNFKD86W1x1RERBRi1cdUREQjNcdUREQkNcdUREQkRdfFx1REQxRFx1MjAwRFx1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZGXSkpKT98XHVERkZFKD86XHUyMDBEKD86W1x1MjY5NVx1MjY5Nlx1MjcwOF1cdUZFMEY/fFx1Mjc2NFx1RkUwRj9cdTIwMEQoPzpcdUQ4M0RcdURDOEJcdTIwMEQpP1x1RDgzRVx1REREMVx1RDgzQ1tcdURGRkItXHVERkZEXHVERkZGXXxcdUQ4M0NbXHVERjNFXHVERjczXHVERjdDXHVERjg0XHVERjkzXHVERkE0XHVERkE4XHVERkVCXHVERkVEXXxcdUQ4M0RbXHVEQ0JCXHVEQ0JDXHVERDI3XHVERDJDXHVERTgwXHVERTkyXXxcdUQ4M0UoPzpbXHVEREFGLVx1RERCM1x1RERCQ1x1RERCRF18XHVERDFEXHUyMDBEXHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkZdKSkpP3xcdURGRkYoPzpcdTIwMEQoPzpbXHUyNjk1XHUyNjk2XHUyNzA4XVx1RkUwRj98XHUyNzY0XHVGRTBGP1x1MjAwRCg/Olx1RDgzRFx1REM4Qlx1MjAwRCk/XHVEODNFXHVEREQxXHVEODNDW1x1REZGQi1cdURGRkVdfFx1RDgzQ1tcdURGM0VcdURGNzNcdURGN0NcdURGODRcdURGOTNcdURGQTRcdURGQThcdURGRUJcdURGRURdfFx1RDgzRFtcdURDQkJcdURDQkNcdUREMjdcdUREMkNcdURFODBcdURFOTJdfFx1RDgzRSg/OltcdUREQUYtXHVEREIzXHVEREJDXHVEREJEXXxcdUREMURcdTIwMERcdUQ4M0VcdURERDFcdUQ4M0NbXHVERkZCLVx1REZGRl0pKSk/KSk/fFx1REVGMSg/Olx1RDgzQyg/Olx1REZGQig/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkMtXHVERkZGXSk/fFx1REZGQyg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkQtXHVERkZGXSk/fFx1REZGRCg/Olx1MjAwRFx1RDgzRVx1REVGMlx1RDgzQ1tcdURGRkJcdURGRkNcdURGRkVcdURGRkZdKT98XHVERkZFKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkRcdURGRkZdKT98XHVERkZGKD86XHUyMDBEXHVEODNFXHVERUYyXHVEODNDW1x1REZGQi1cdURGRkVdKT8pKT8pL2c7CiAgfTsKCiAgLyoqIE5vcm1hbGl6ZSBhIGR1cmF0aW9uIHRvIGFsbCBvZiB0aGUgcHJvcGVyIHVuaXRzLiAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUR1cmF0aW9uKGR1cikgewogICAgICBpZiAoZHVyID09PSB1bmRlZmluZWQgfHwgZHVyID09PSBudWxsKQogICAgICAgICAgcmV0dXJuIGR1cjsKICAgICAgcmV0dXJuIGR1ci5zaGlmdFRvQWxsKCkubm9ybWFsaXplKCk7CiAgfQogIC8qKiBTdHJpcCB0aGUgdGltZSBjb21wb25lbnRzIG9mIGEgZGF0ZSB0aW1lIG9iamVjdC4gKi8KICBmdW5jdGlvbiBzdHJpcFRpbWUoZHQpIHsKICAgICAgaWYgKGR0ID09PSBudWxsIHx8IGR0ID09PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gZHQ7CiAgICAgIHJldHVybiBEYXRlVGltZS5mcm9tT2JqZWN0KHsKICAgICAgICAgIHllYXI6IGR0LnllYXIsCiAgICAgICAgICBtb250aDogZHQubW9udGgsCiAgICAgICAgICBkYXk6IGR0LmRheSwKICAgICAgfSk7CiAgfQogIC8qKiBUcnkgdG8gZXh0cmFjdCBhIFlZWVlNTUREIGRhdGUgZnJvbSBhIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0RGF0ZShzdHIpIHsKICAgICAgbGV0IGRhdGVNYXRjaCA9IC8oXGR7NH0pLShcZHsyfSktKFxkezJ9KS8uZXhlYyhzdHIpOwogICAgICBpZiAoIWRhdGVNYXRjaCkKICAgICAgICAgIGRhdGVNYXRjaCA9IC8oXGR7NH0pKFxkezJ9KShcZHsyfSkvLmV4ZWMoc3RyKTsKICAgICAgaWYgKGRhdGVNYXRjaCkgewogICAgICAgICAgbGV0IHllYXIgPSBOdW1iZXIucGFyc2VJbnQoZGF0ZU1hdGNoWzFdKTsKICAgICAgICAgIGxldCBtb250aCA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbMl0pOwogICAgICAgICAgbGV0IGRheSA9IE51bWJlci5wYXJzZUludChkYXRlTWF0Y2hbM10pOwogICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoeyB5ZWFyLCBtb250aCwgZGF5IH0pOwogICAgICB9CiAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgfQogIC8qKiBHZXQgdGhlIGZvbGRlciBjb250YWluaW5nIHRoZSBnaXZlbiBwYXRoIChpLmUuLCBsaWtlIGNvbXB1dGluZyAncGF0aC8uLicpLiAqLwogIGZ1bmN0aW9uIGdldFBhcmVudEZvbGRlcihwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLnNwbGl0KCIvIikuc2xpY2UoMCwgLTEpLmpvaW4oIi8iKTsKICB9CiAgLyoqIEdldCB0aGUgInRpdGxlIiBmb3IgYSBmaWxlLCBieSBzdHJpcHBpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHBhdGggYXMgd2VsbCBhcyB0aGUgZXh0ZW5zaW9uLiAqLwogIGZ1bmN0aW9uIGdldEZpbGVUaXRsZShwYXRoKSB7CiAgICAgIGlmIChwYXRoLmluY2x1ZGVzKCIvIikpCiAgICAgICAgICBwYXRoID0gcGF0aC5zdWJzdHJpbmcocGF0aC5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCIubWQiKSkKICAgICAgICAgIHBhdGggPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLmxlbmd0aCAtIDMpOwogICAgICByZXR1cm4gcGF0aDsKICB9CiAgLyoqIEdldCB0aGUgZXh0ZW5zaW9uIG9mIGEgZmlsZSBmcm9tIHRoZSBmaWxlIHBhdGguICovCiAgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGgpIHsKICAgICAgaWYgKCFwYXRoLmluY2x1ZGVzKCIuIikpCiAgICAgICAgICByZXR1cm4gIiI7CiAgICAgIHJldHVybiBwYXRoLnN1YnN0cmluZyhwYXRoLmxhc3RJbmRleE9mKCIuIikgKyAxKTsKICB9CiAgLyoqIFBhcnNlIGFsbCBzdWJ0YWdzIG91dCBvZiB0aGUgZ2l2ZW4gdGFnLiBJLmUuLCAjaGVsbG8vaS9hbSB3b3VsZCB5aWVsZCBbI2hlbGxvL2kvYW0sICNoZWxsby9pLCAjaGVsbG9dLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RTdWJ0YWdzKHRhZykgewogICAgICBsZXQgcmVzdWx0ID0gW3RhZ107CiAgICAgIHdoaWxlICh0YWcuaW5jbHVkZXMoIi8iKSkgewogICAgICAgICAgdGFnID0gdGFnLnN1YnN0cmluZygwLCB0YWcubGFzdEluZGV4T2YoIi8iKSk7CiAgICAgICAgICByZXN1bHQucHVzaCh0YWcpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBBIHBhcnNpbW1vbiBwYXJzZXIgd2hpY2ggY2Fub25pY2FsaXplcyB2YXJpYWJsZSBuYW1lcyB3aGlsZSBwcm9wZXJseSByZXNwZWN0aW5nIGVtb2ppLiAqLwogIGNvbnN0IFZBUl9OQU1FX0NBTk9OSUNBTElaRVIgPSBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgIiIpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KC9bMC05XHB7TGV0dGVyfV8tXSsvdSkubWFwKHN0ciA9PiBzdHIudG9Mb2NhbGVMb3dlckNhc2UoKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy53aGl0ZXNwYWNlLm1hcChfID0+ICItIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbnkubWFwKF8gPT4gIiIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHJlc3VsdC5qb2luKCIiKSk7CiAgLyoqIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIG5hbWUgaW50byBzb21ldGhpbmcgSlMvcXVlcnkgZnJpZW5kbHkuICovCiAgZnVuY3Rpb24gY2Fub25pY2FsaXplVmFyTmFtZShuYW1lKSB7CiAgICAgIHJldHVybiBWQVJfTkFNRV9DQU5PTklDQUxJWkVSLnRyeVBhcnNlKG5hbWUpOwogIH0KICBjb25zdCBIRUFERVJfQ0FOT05JQ0FMSVpFUiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4KG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIikpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXgoL1swLTlccHtMZXR0ZXJ9Xy1dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLndoaXRlc3BhY2UubWFwKF8gPT4gIiAiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFueS5tYXAoXyA9PiAiICIpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocmVzdWx0ID0+IHsKICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCIiKS5zcGxpdCgvXHMrLykuam9pbigiICIpLnRyaW0oKTsKICB9KTsKICAvKioKICAgKiBOb3JtYWxpemVzIHRoZSB0ZXh0IGluIGEgaGVhZGVyIHRvIGJlIHNvbWV0aGluZyB0aGF0IGlzIGFjdHVhbGx5IGxpbmthYmxlIHRvLiBUaGlzIG1pbWljcwogICAqIGhvdyBPYnNpZGlhbiBkb2VzIGl0J3Mgbm9ybWFsaXphdGlvbiwgY29sbGFwc2luZyByZXBlYXRlZCBzcGFjZXMgYW5kIHN0cmlwcGluZyBvdXQgY29udHJvbCBjaGFyYWN0ZXJzLgogICAqLwogIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlckZvckxpbmsoaGVhZGVyKSB7CiAgICAgIHJldHVybiBIRUFERVJfQ0FOT05JQ0FMSVpFUi50cnlQYXJzZShoZWFkZXIpOwogIH0KICAvKiogUmVuZGVyIGEgZHVyYXRpb24gaW4gYSBtaW5pbWFsIGZvcm1hdCB0byBzYXZlIHNwYWNlLiAqLwogIGZ1bmN0aW9uIHJlbmRlck1pbmltYWxEdXJhdGlvbihkdXIpIHsKICAgICAgZHVyID0gbm9ybWFsaXplRHVyYXRpb24oZHVyKTsKICAgICAgLy8gdG9IdW1hbiBvdXRwdXRzIHplcm8gcXVhbnRpdGllcyBlLmcuICIwIHNlY29uZHMiCiAgICAgIGR1ciA9IER1cmF0aW9uLmZyb21PYmplY3QoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGR1ci50b09iamVjdCgpKS5maWx0ZXIoKFssIHF1YW50aXR5XSkgPT4gcXVhbnRpdHkgIT0gMCkpKTsKICAgICAgcmV0dXJuIGR1ci50b0h1bWFuKCk7CiAgfQoKICB2YXIgVmFsdWVzOwogIChmdW5jdGlvbiAoVmFsdWVzKSB7CiAgICAgIC8qKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YWx1ZSBpbnRvIGEgcmVhc29uYWJsZSwgTWFya2Rvd24tZnJpZW5kbHkgc3RyaW5nIGlmIHBvc3NpYmxlLiAqLwogICAgICBmdW5jdGlvbiB0b1N0cmluZyhmaWVsZCwgc2V0dGluZyA9IERFRkFVTFRfUVVFUllfU0VUVElOR1MsIHJlY3Vyc2l2ZSA9IGZhbHNlKSB7CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IHdyYXBWYWx1ZShmaWVsZCk7CiAgICAgICAgICBpZiAoIXdyYXBwZWQpCiAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgc3dpdGNoICh3cmFwcGVkLnR5cGUpIHsKICAgICAgICAgICAgICBjYXNlICJudWxsIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmcucmVuZGVyTnVsbEFzOwogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlOwogICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6CiAgICAgICAgICAgICAgY2FzZSAiYm9vbGVhbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAiIiArIHdyYXBwZWQudmFsdWU7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwcGVkLnZhbHVlLm91dGVySFRNTDsKICAgICAgICAgICAgICBjYXNlICJ3aWRnZXQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXJrZG93bigpOwogICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZnVuY3Rpb24+IjsKICAgICAgICAgICAgICBjYXNlICJhcnJheSI6CiAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsKICAgICAgICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyI7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB3cmFwcGVkLnZhbHVlLm1hcChmID0+IHRvU3RyaW5nKGYsIHNldHRpbmcsIHRydWUpKS5qb2luKCIsICIpOwogICAgICAgICAgICAgICAgICBpZiAocmVjdXJzaXZlKQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJdIjsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICBjYXNlICJvYmplY3QiOgogICAgICAgICAgICAgICAgICByZXR1cm4gKCJ7ICIgKwogICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGUgPT4gZVswXSArICI6ICIgKyB0b1N0cmluZyhlWzFdLCBzZXR0aW5nLCB0cnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbigiLCAiKSArCiAgICAgICAgICAgICAgICAgICAgICAiIH0iKTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZWQudmFsdWUuc2Vjb25kID09IDAgJiYgd3JhcHBlZC52YWx1ZS5ob3VyID09IDAgJiYgd3JhcHBlZC52YWx1ZS5taW51dGUgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZUZvcm1hdCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUudG9Gb3JtYXQoc2V0dGluZy5kZWZhdWx0RGF0ZVRpbWVGb3JtYXQpOwogICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlck1pbmltYWxEdXJhdGlvbih3cmFwcGVkLnZhbHVlKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMudG9TdHJpbmcgPSB0b1N0cmluZzsKICAgICAgLyoqIFdyYXAgYSBsaXRlcmFsIHZhbHVlIHNvIHlvdSBjYW4gc3dpdGNoIG9uIGl0IGVhc2lseS4gKi8KICAgICAgZnVuY3Rpb24gd3JhcFZhbHVlKHZhbCkgewogICAgICAgICAgaWYgKGlzTnVsbCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJudWxsIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNOdW1iZXIodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAibnVtYmVyIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNTdHJpbmcodmFsKSkKICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAic3RyaW5nIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0R1cmF0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImR1cmF0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNEYXRlKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRhdGUiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc1dpZGdldCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ3aWRnZXQiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImFycmF5IiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNMaW5rKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxpbmsiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZ1bmN0aW9uIiwgdmFsdWU6IHZhbCB9OwogICAgICAgICAgZWxzZSBpZiAoaXNIdG1sKHZhbCkpCiAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogImh0bWwiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlIGlmIChpc09iamVjdCh2YWwpKQogICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJvYmplY3QiLCB2YWx1ZTogdmFsIH07CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgfQogICAgICBWYWx1ZXMud3JhcFZhbHVlID0gd3JhcFZhbHVlOwogICAgICAvKiogUmVjdXJzaXZlbHkgbWFwIGNvbXBsZXggb2JqZWN0cyBhdCB0aGUgbGVhdmVzLiAqLwogICAgICBmdW5jdGlvbiBtYXBMZWF2ZXModmFsLCBmdW5jKSB7CiAgICAgICAgICBpZiAoaXNPYmplY3QodmFsKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBtYXBMZWF2ZXModmFsdWUsIGZ1bmMpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsKQogICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXBMZWF2ZXModmFsdWUsIGZ1bmMpKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZ1bmModmFsKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBWYWx1ZXMubWFwTGVhdmVzID0gbWFwTGVhdmVzOwogICAgICAvKiogQ29tcGFyZSB0d28gYXJiaXRyYXJ5IEphdmFTY3JpcHQgdmFsdWVzLiBQcm9kdWNlcyBhIHRvdGFsIG9yZGVyaW5nIG92ZXIgQU5ZIHBvc3NpYmxlIGRhdGF2aWV3IHZhbHVlLiAqLwogICAgICBmdW5jdGlvbiBjb21wYXJlVmFsdWUodmFsMSwgdmFsMiwgbGlua05vcm1hbGl6ZXIpIHsKICAgICAgICAgIC8vIEhhbmRsZSB1bmRlZmluZWQvbnVsbHMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsMSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHZhbDEgPSBudWxsOwogICAgICAgICAgaWYgKHZhbDIgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB2YWwyID0gbnVsbDsKICAgICAgICAgIGlmICh2YWwxID09PSBudWxsICYmIHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICBlbHNlIGlmICh2YWwxID09PSBudWxsKQogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIGVsc2UgaWYgKHZhbDIgPT09IG51bGwpCiAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAvLyBBIG5vbi1udWxsIHZhbHVlIG5vdyB3aGljaCB3ZSBjYW4gd3JhcCAmIGNvbXBhcmUgb24uCiAgICAgICAgICBsZXQgd3JhcDEgPSB3cmFwVmFsdWUodmFsMSk7CiAgICAgICAgICBsZXQgd3JhcDIgPSB3cmFwVmFsdWUodmFsMik7CiAgICAgICAgICBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCAmJiB3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgZWxzZSBpZiAod3JhcDEgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICBlbHNlIGlmICh3cmFwMiA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgLy8gU2hvcnQtY2lyY3VpdCBvbiBkaWZmZXJlbnQgdHlwZXMgb3Igb24gcmVmZXJlbmNlIGVxdWFsaXR5LgogICAgICAgICAgaWYgKHdyYXAxLnR5cGUgIT0gd3JhcDIudHlwZSkKICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudHlwZS5sb2NhbGVDb21wYXJlKHdyYXAyLnR5cGUpOwogICAgICAgICAgaWYgKHdyYXAxLnZhbHVlID09PSB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgIHN3aXRjaCAod3JhcDEudHlwZSkgewogICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZS5sb2NhbGVDb21wYXJlKHdyYXAyLnZhbHVlKTsKICAgICAgICAgICAgICBjYXNlICJudW1iZXIiOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICBpZiAod3JhcDEudmFsdWUgPT0gd3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXAxLnZhbHVlID8gMSA6IC0xOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICBsZXQgbGluazEgPSB3cmFwMS52YWx1ZTsKICAgICAgICAgICAgICAgICAgbGV0IGxpbmsyID0gd3JhcDIudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemUgPSBsaW5rTm9ybWFsaXplciA/PyAoKHgpID0+IHgpOwogICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wYXJlIGJ5IGZpbGUgbmFtZSBvciBkaXNwbGF5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmsgZXF1YWxpdHkuIENvbXBhcmUgYnkgcGF0aC4KICAgICAgICAgICAgICAgICAgbGV0IHBhdGhDb21wYXJlID0gbm9ybWFsaXplKGxpbmsxLnBhdGgpLmxvY2FsZUNvbXBhcmUobm9ybWFsaXplKGxpbmsyLnBhdGgpKTsKICAgICAgICAgICAgICAgICAgaWYgKHBhdGhDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBhcmU7CiAgICAgICAgICAgICAgICAgIC8vIFRoZW4gY29tcGFyZSBieSB0eXBlLgogICAgICAgICAgICAgICAgICBsZXQgdHlwZUNvbXBhcmUgPSBsaW5rMS50eXBlLmxvY2FsZUNvbXBhcmUobGluazIudHlwZSk7CiAgICAgICAgICAgICAgICAgIGlmICh0eXBlQ29tcGFyZSAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVDb21wYXJlOwogICAgICAgICAgICAgICAgICAvLyBUaGVuIGNvbXBhcmUgYnkgc3VicGF0aCBleGlzdGVuY2UuCiAgICAgICAgICAgICAgICAgIGlmIChsaW5rMS5zdWJwYXRoICYmICFsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgIGlmICghbGluazEuc3VicGF0aCAmJiBsaW5rMi5zdWJwYXRoKQogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICBpZiAoIWxpbmsxLnN1YnBhdGggJiYgIWxpbmsyLnN1YnBhdGgpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgLy8gU2luY2UgYm90aCBoYXZlIGEgc3VicGF0aCwgY29tcGFyZSBieSBzdWJwYXRoLgogICAgICAgICAgICAgICAgICByZXR1cm4gKGxpbmsxLnN1YnBhdGggPz8gIiIpLmxvY2FsZUNvbXBhcmUobGluazIuc3VicGF0aCA/PyAiIik7CiAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwMS52YWx1ZSA8IHdyYXAyLnZhbHVlCiAgICAgICAgICAgICAgICAgICAgICA/IC0xCiAgICAgICAgICAgICAgICAgICAgICA6IHdyYXAxLnZhbHVlLmVxdWFscyh3cmFwMi52YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICA/IDAKICAgICAgICAgICAgICAgICAgICAgICAgICA6IDE7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcDEudmFsdWUgPCB3cmFwMi52YWx1ZQogICAgICAgICAgICAgICAgICAgICAgPyAtMQogICAgICAgICAgICAgICAgICAgICAgOiB3cmFwMS52YWx1ZS5lcXVhbHMod3JhcDIudmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxOwogICAgICAgICAgICAgIGNhc2UgImFycmF5IjoKICAgICAgICAgICAgICAgICAgbGV0IGYxID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBmMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgTWF0aC5taW4oZjEubGVuZ3RoLCBmMi5sZW5ndGgpOyBpbmRleCsrKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShmMVtpbmRleF0sIGYyW2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBmMS5sZW5ndGggLSBmMi5sZW5ndGg7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IG8xID0gd3JhcDEudmFsdWU7CiAgICAgICAgICAgICAgICAgIGxldCBvMiA9IHdyYXAyLnZhbHVlOwogICAgICAgICAgICAgICAgICBsZXQgazEgPSBBcnJheS5mcm9tKE9iamVjdC5rZXlzKG8xKSk7CiAgICAgICAgICAgICAgICAgIGxldCBrMiA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMobzIpKTsKICAgICAgICAgICAgICAgICAgazEuc29ydCgpOwogICAgICAgICAgICAgICAgICBrMi5zb3J0KCk7CiAgICAgICAgICAgICAgICAgIGxldCBrZXlDb21wYXJlID0gY29tcGFyZVZhbHVlKGsxLCBrMik7CiAgICAgICAgICAgICAgICAgIGlmIChrZXlDb21wYXJlICE9IDApCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5Q29tcGFyZTsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IG9mIGsxKSB7CiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcCA9IGNvbXBhcmVWYWx1ZShvMVtrZXldLCBvMltrZXldKTsKICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXA7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJodG1sIjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5jb21wYXJlVmFsdWUgPSBjb21wYXJlVmFsdWU7CiAgICAgIC8qKiBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIERhdGF2ZWl3IHR5cGUgZm9yIGFuIGFyYml0cmFyeSB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gdHlwZU9mKHZhbCkgewogICAgICAgICAgcmV0dXJuIHdyYXBWYWx1ZSh2YWwpPy50eXBlOwogICAgICB9CiAgICAgIFZhbHVlcy50eXBlT2YgPSB0eXBlT2Y7CiAgICAgIC8qKiBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzICJ0cnV0aHkiIChpLmUuLCBpcyBub24tbnVsbCBhbmQgaGFzIGRhdGEgaW4gaXQpLiAqLwogICAgICBmdW5jdGlvbiBpc1RydXRoeShmaWVsZCkgewogICAgICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwVmFsdWUoZmllbGQpOwogICAgICAgICAgaWYgKCF3cmFwcGVkKQogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZWQudmFsdWUgIT0gMDsKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJsaW5rIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuICEhd3JhcHBlZC52YWx1ZS5wYXRoOwogICAgICAgICAgICAgIGNhc2UgImRhdGUiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS50b01pbGxpcygpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAiZHVyYXRpb24iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5hcygic2Vjb25kcyIpICE9IDA7CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHdyYXBwZWQudmFsdWUpLmxlbmd0aCA+IDA7CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5sZW5ndGggPiAwOwogICAgICAgICAgICAgIGNhc2UgIm51bGwiOgogICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgY2FzZSAiaHRtbCI6CiAgICAgICAgICAgICAgY2FzZSAid2lkZ2V0IjoKICAgICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5pc1RydXRoeSA9IGlzVHJ1dGh5OwogICAgICAvKiogRGVlcCBjb3B5IGEgZmllbGQuICovCiAgICAgIGZ1bmN0aW9uIGRlZXBDb3B5KGZpZWxkKSB7CiAgICAgICAgICBpZiAoZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzQXJyYXkoZmllbGQpKSB7CiAgICAgICAgICAgICAgcmV0dXJuIFtdLmNvbmNhdChmaWVsZC5tYXAodiA9PiBkZWVwQ29weSh2KSkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoVmFsdWVzLmlzT2JqZWN0KGZpZWxkKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSB7fTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGQpKQogICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBDb3B5KHZhbHVlKTsKICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgICAgICAgfQogICAgICB9CiAgICAgIFZhbHVlcy5kZWVwQ29weSA9IGRlZXBDb3B5OwogICAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJzdHJpbmciOwogICAgICB9CiAgICAgIFZhbHVlcy5pc1N0cmluZyA9IGlzU3RyaW5nOwogICAgICBmdW5jdGlvbiBpc051bWJlcih2YWwpIHsKICAgICAgICAgIHJldHVybiB0eXBlb2YgdmFsID09ICJudW1iZXIiOwogICAgICB9CiAgICAgIFZhbHVlcy5pc051bWJlciA9IGlzTnVtYmVyOwogICAgICBmdW5jdGlvbiBpc0RhdGUodmFsKSB7CiAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgRGF0ZVRpbWU7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzRGF0ZSA9IGlzRGF0ZTsKICAgICAgZnVuY3Rpb24gaXNEdXJhdGlvbih2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBEdXJhdGlvbjsKICAgICAgfQogICAgICBWYWx1ZXMuaXNEdXJhdGlvbiA9IGlzRHVyYXRpb247CiAgICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQ7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzTnVsbCA9IGlzTnVsbDsKICAgICAgZnVuY3Rpb24gaXNBcnJheSh2YWwpIHsKICAgICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzQXJyYXkgPSBpc0FycmF5OwogICAgICBmdW5jdGlvbiBpc0Jvb2xlYW4odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gImJvb2xlYW4iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47CiAgICAgIGZ1bmN0aW9uIGlzTGluayh2YWwpIHsKICAgICAgICAgIHJldHVybiB2YWwgaW5zdGFuY2VvZiBMaW5rOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0xpbmsgPSBpc0xpbms7CiAgICAgIGZ1bmN0aW9uIGlzV2lkZ2V0KHZhbCkgewogICAgICAgICAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIFdpZGdldDsKICAgICAgfQogICAgICBWYWx1ZXMuaXNXaWRnZXQgPSBpc1dpZGdldDsKICAgICAgZnVuY3Rpb24gaXNIdG1sKHZhbCkgewogICAgICAgICAgaWYgKHR5cGVvZiBIVE1MRWxlbWVudCAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVmFsdWVzLmlzSHRtbCA9IGlzSHRtbDsKICAgICAgLyoqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYW4gb2JqZWN0IChhbmQgbm90IGFueSBvdGhlciBkYXRhdmlldy1yZWNvZ25pemVkIG9iamVjdC1saWtlIHR5cGUpLiAqLwogICAgICBmdW5jdGlvbiBpc09iamVjdCh2YWwpIHsKICAgICAgICAgIHJldHVybiAodHlwZW9mIHZhbCA9PSAib2JqZWN0IiAmJgogICAgICAgICAgICAgICFpc0h0bWwodmFsKSAmJgogICAgICAgICAgICAgICFpc1dpZGdldCh2YWwpICYmCiAgICAgICAgICAgICAgIWlzQXJyYXkodmFsKSAmJgogICAgICAgICAgICAgICFpc0R1cmF0aW9uKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNEYXRlKHZhbCkgJiYKICAgICAgICAgICAgICAhaXNMaW5rKHZhbCkgJiYKICAgICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCAmJgogICAgICAgICAgICAgICFpc051bGwodmFsKSk7CiAgICAgIH0KICAgICAgVmFsdWVzLmlzT2JqZWN0ID0gaXNPYmplY3Q7CiAgICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7CiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PSAiZnVuY3Rpb24iOwogICAgICB9CiAgICAgIFZhbHVlcy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKICB9KShWYWx1ZXMgfHwgKFZhbHVlcyA9IHt9KSk7CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gR3JvdXBpbmdzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgdmFyIEdyb3VwaW5nczsKICAoZnVuY3Rpb24gKEdyb3VwaW5ncykgewogICAgICAvKiogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gZ3JvdXAgZW50cnkgaXMgYSBzdGFuZGFsb25lIHZhbHVlLCBvciBhIGdyb3VwaW5nIG9mIHN1Yi1lbnRyaWVzLiAqLwogICAgICBmdW5jdGlvbiBpc0VsZW1lbnRHcm91cChlbnRyeSkgewogICAgICAgICAgcmV0dXJuIFZhbHVlcy5pc09iamVjdChlbnRyeSkgJiYgT2JqZWN0LmtleXMoZW50cnkpLmxlbmd0aCA9PSAyICYmICJrZXkiIGluIGVudHJ5ICYmICJyb3dzIiBpbiBlbnRyeTsKICAgICAgfQogICAgICBHcm91cGluZ3MuaXNFbGVtZW50R3JvdXAgPSBpc0VsZW1lbnRHcm91cDsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIGFycmF5IGlzIGEgZ3JvdXBpbmcgYXJyYXkuICovCiAgICAgIGZ1bmN0aW9uIGlzR3JvdXBpbmcoZW50cnkpIHsKICAgICAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZW50cnkpCiAgICAgICAgICAgICAgaWYgKCFpc0VsZW1lbnRHcm91cChlbGVtZW50KSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmlzR3JvdXBpbmcgPSBpc0dyb3VwaW5nOwogICAgICAvKiogQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHJlY3Vyc2l2ZSBncm91cGluZy4gKi8KICAgICAgZnVuY3Rpb24gY291bnQoZWxlbWVudHMpIHsKICAgICAgICAgIGlmIChpc0dyb3VwaW5nKGVsZW1lbnRzKSkgewogICAgICAgICAgICAgIGxldCByZXN1bHQgPSAwOwogICAgICAgICAgICAgIGZvciAobGV0IHN1Ymdyb3VwIG9mIGVsZW1lbnRzKQogICAgICAgICAgICAgICAgICByZXN1bHQgKz0gY291bnQoc3ViZ3JvdXAucm93cyk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGg7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgR3JvdXBpbmdzLmNvdW50ID0gY291bnQ7CiAgfSkoR3JvdXBpbmdzIHx8IChHcm91cGluZ3MgPSB7fSkpOwogIC8vLy8vLy8vLy8KICAvLyBMSU5LIC8vCiAgLy8vLy8vLy8vLwogIC8qKiBUaGUgT2JzaWRpYW4gJ2xpbmsnLCB1c2VkIGZvciB1bmlxdWVseSBkZXNjcmliaW5nIGEgZmlsZSwgaGVhZGVyLCBvciBibG9jay4gKi8KICBjbGFzcyBMaW5rIHsKICAgICAgLyoqIFRoZSBmaWxlIHBhdGggdGhpcyBsaW5rIHBvaW50cyB0by4gKi8KICAgICAgcGF0aDsKICAgICAgLyoqIFRoZSBkaXNwbGF5IG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rLiAqLwogICAgICBkaXNwbGF5OwogICAgICAvKiogVGhlIGJsb2NrIElEIG9yIGhlYWRlciB0aGlzIGxpbmsgcG9pbnRzIHRvIHdpdGhpbiBhIGZpbGUsIGlmIHJlbGV2YW50LiAqLwogICAgICBzdWJwYXRoOwogICAgICAvKiogSXMgdGhpcyBsaW5rIGFuIGVtYmVkZGVkIGxpbmsgKCEpPyAqLwogICAgICBlbWJlZDsKICAgICAgLyoqIFRoZSB0eXBlIG9mIHRoaXMgbGluaywgd2hpY2ggZGV0ZXJtaW5lcyB3aGF0ICdzdWJwYXRoJyByZWZlcnMgdG8sIGlmIGFueXRoaW5nLiAqLwogICAgICB0eXBlOwogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUuICovCiAgICAgIHN0YXRpYyBmaWxlKHBhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayh7CiAgICAgICAgICAgICAgcGF0aCwKICAgICAgICAgICAgICBlbWJlZCwKICAgICAgICAgICAgICBkaXNwbGF5LAogICAgICAgICAgICAgIHN1YnBhdGg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICB0eXBlOiAiZmlsZSIsCiAgICAgICAgICB9KTsKICAgICAgfQogICAgICBzdGF0aWMgaW5mZXIobGlua3BhdGgsIGVtYmVkID0gZmFsc2UsIGRpc3BsYXkpIHsKICAgICAgICAgIGlmIChsaW5rcGF0aC5pbmNsdWRlcygiI14iKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjXiIpOwogICAgICAgICAgICAgIHJldHVybiBMaW5rLmJsb2NrKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAobGlua3BhdGguaW5jbHVkZXMoIiMiKSkgewogICAgICAgICAgICAgIGxldCBzcGxpdCA9IGxpbmtwYXRoLnNwbGl0KCIjIik7CiAgICAgICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHNwbGl0WzBdLCBzcGxpdFsxXSwgZW1iZWQsIGRpc3BsYXkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIHJldHVybiBMaW5rLmZpbGUobGlua3BhdGgsIGVtYmVkLCBkaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGEgbGluayB0byBhIHNwZWNpZmljIGZpbGUgYW5kIGhlYWRlciBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBoZWFkZXIocGF0aCwgaGVhZGVyLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgLy8gSGVhZGVycyBuZWVkIHRvIGJlIG5vcm1hbGl6ZWQgdG8gYWxwaGEtbnVtZXJpYyAmIHdpdGggZXh0cmEgc3BhY2luZyByZW1vdmVkLgogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogbm9ybWFsaXplSGVhZGVyRm9yTGluayhoZWFkZXIpLAogICAgICAgICAgICAgIHR5cGU6ICJoZWFkZXIiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgLyoqIENyZWF0ZSBhIGxpbmsgdG8gYSBzcGVjaWZpYyBmaWxlIGFuZCBibG9jayBpbiB0aGF0IGZpbGUuICovCiAgICAgIHN0YXRpYyBibG9jayhwYXRoLCBibG9ja0lkLCBlbWJlZCwgZGlzcGxheSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaW5rKHsKICAgICAgICAgICAgICBwYXRoLAogICAgICAgICAgICAgIGVtYmVkLAogICAgICAgICAgICAgIGRpc3BsYXksCiAgICAgICAgICAgICAgc3VicGF0aDogYmxvY2tJZCwKICAgICAgICAgICAgICB0eXBlOiAiYmxvY2siLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgc3RhdGljIGZyb21PYmplY3Qob2JqZWN0KSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsob2JqZWN0KTsKICAgICAgfQogICAgICBjb25zdHJ1Y3RvcihmaWVsZHMpIHsKICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZmllbGRzKTsKICAgICAgfQogICAgICAvKiogQ2hlY2tzIGZvciBsaW5rIGVxdWFsaXR5IChpLmUuLCB0aGF0IHRoZSBsaW5rcyBhcmUgcG9pbnRpbmcgdG8gdGhlIHNhbWUgZXhhY3QgbG9jYXRpb24pLiAqLwogICAgICBlcXVhbHMob3RoZXIpIHsKICAgICAgICAgIGlmIChvdGhlciA9PSB1bmRlZmluZWQgfHwgb3RoZXIgPT0gbnVsbCkKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICByZXR1cm4gdGhpcy5wYXRoID09IG90aGVyLnBhdGggJiYgdGhpcy50eXBlID09IG90aGVyLnR5cGUgJiYgdGhpcy5zdWJwYXRoID09IG90aGVyLnN1YnBhdGg7CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIHRvIGl0J3MgbWFya2Rvd24gcmVwcmVzZW50YXRpb24uICovCiAgICAgIHRvU3RyaW5nKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubWFya2Rvd24oKTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gYSByYXcgb2JqZWN0IHdoaWNoIGlzIHNlcmlhbGl6YXRpb24tZnJpZW5kbHkuICovCiAgICAgIHRvT2JqZWN0KCkgewogICAgICAgICAgcmV0dXJuIHsgcGF0aDogdGhpcy5wYXRoLCB0eXBlOiB0aGlzLnR5cGUsIHN1YnBhdGg6IHRoaXMuc3VicGF0aCwgZGlzcGxheTogdGhpcy5kaXNwbGF5LCBlbWJlZDogdGhpcy5lbWJlZCB9OwogICAgICB9CiAgICAgIC8qKiBVcGRhdGUgdGhpcyBsaW5rIHdpdGggYSBuZXcgcGF0aC4gKi8KICAgICAgLy9AdHMtaWdub3JlOyBlcnJvciBhcHBlYXJlZCBhZnRlciB1cGRhdGluZyBPYnNpZGlhbiB0byAwLjE1LjQ7IGl0IGFsc28gdXBkYXRlZCBvdGhlciBwYWNrYWdlcyBidXQgZGlkbid0IHNheSB3aGljaAogICAgICB3aXRoUGF0aChwYXRoKSB7CiAgICAgICAgICByZXR1cm4gbmV3IExpbmsoT2JqZWN0LmFzc2lnbih7fSwgdGhpcywgeyBwYXRoIH0pKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgbmV3IGxpbmsgd2hpY2ggcG9pbnRzIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGJ1dCB3aXRoIGEgbmV3IGRpc3BsYXkgdmFsdWUuICovCiAgICAgIHdpdGhEaXNwbGF5KGRpc3BsYXkpIHsKICAgICAgICAgIHJldHVybiBuZXcgTGluayhPYmplY3QuYXNzaWduKHt9LCB0aGlzLCB7IGRpc3BsYXkgfSkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGEgZmlsZSBsaW5rIGludG8gYSBsaW5rIHRvIGEgc3BlY2lmaWMgaGVhZGVyLiAqLwogICAgICB3aXRoSGVhZGVyKGhlYWRlcikgewogICAgICAgICAgcmV0dXJuIExpbmsuaGVhZGVyKHRoaXMucGF0aCwgaGVhZGVyLCB0aGlzLmVtYmVkLCB0aGlzLmRpc3BsYXkpOwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFueSBsaW5rIGludG8gYSBsaW5rIHRvIGl0cyBmaWxlLiAqLwogICAgICB0b0ZpbGUoKSB7CiAgICAgICAgICByZXR1cm4gTGluay5maWxlKHRoaXMucGF0aCwgdGhpcy5lbWJlZCwgdGhpcy5kaXNwbGF5KTsKICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgaW50byBhbiBlbWJlZGRlZCBsaW5rLiAqLwogICAgICB0b0VtYmVkKCkgewogICAgICAgICAgaWYgKHRoaXMuZW1iZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGxldCBsaW5rID0gbmV3IExpbmsodGhpcyk7CiAgICAgICAgICAgICAgbGluay5lbWJlZCA9IHRydWU7CiAgICAgICAgICAgICAgcmV0dXJuIGxpbms7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqIENvbnZlcnQgdGhpcyBsaW5rIGludG8gYSBub24tZW1iZWRkZWQgbGluay4gKi8KICAgICAgZnJvbUVtYmVkKCkgewogICAgICAgICAgaWYgKCF0aGlzLmVtYmVkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgbGluayA9IG5ldyBMaW5rKHRoaXMpOwogICAgICAgICAgICAgIGxpbmsuZW1iZWQgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gbGluazsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvKiogQ29udmVydCB0aGlzIGxpbmsgdG8gbWFya2Rvd24gc28gaXQgY2FuIGJlIHJlbmRlcmVkLiAqLwogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5lbWJlZCA/ICIhIiA6ICIiKSArICJbWyIgKyB0aGlzLm9ic2lkaWFuTGluaygpOwogICAgICAgICAgaWYgKHRoaXMuZGlzcGxheSkgewogICAgICAgICAgICAgIHJlc3VsdCArPSAifCIgKyB0aGlzLmRpc3BsYXk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICByZXN1bHQgKz0gInwiICsgZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIiB8fCB0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICIgPiAiICsgdGhpcy5zdWJwYXRoOwogICAgICAgICAgfQogICAgICAgICAgcmVzdWx0ICs9ICJdXSI7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IHRoZSBpbm5lciBwYXJ0IG9mIHRoZSBsaW5rIHRvIHNvbWV0aGluZyB0aGF0IE9ic2lkaWFuIGNhbiBvcGVuIC8gdW5kZXJzdGFuZC4gKi8KICAgICAgb2JzaWRpYW5MaW5rKCkgewogICAgICAgICAgY29uc3QgZXNjYXBlZCA9IHRoaXMucGF0aC5yZXBsYWNlQWxsKCJ8IiwgIlxcfCIpOwogICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAiaGVhZGVyIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjIiArIHRoaXMuc3VicGF0aD8ucmVwbGFjZUFsbCgifCIsICJcXHwiKTsKICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gImJsb2NrIikKICAgICAgICAgICAgICByZXR1cm4gZXNjYXBlZCArICIjXiIgKyB0aGlzLnN1YnBhdGg/LnJlcGxhY2VBbGwoInwiLCAiXFx8Iik7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIGVzY2FwZWQ7CiAgICAgIH0KICAgICAgLyoqIFRoZSBzdHJpcHBlZCBuYW1lIG9mIHRoZSBmaWxlIHRoaXMgbGluayBwb2ludHMgdG8uICovCiAgICAgIGZpbGVOYW1lKCkgewogICAgICAgICAgcmV0dXJuIGdldEZpbGVUaXRsZSh0aGlzLnBhdGgpLnJlcGxhY2UoIi5tZCIsICIiKTsKICAgICAgfQogIH0KICAvLy8vLy8vLy8vLy8vLy8vLwogIC8vIFdJREdFVCBCQVNFIC8vCiAgLy8vLy8vLy8vLy8vLy8vLy8KICAvKioKICAgKiBBIHRyaXZpYWwgYmFzZSBjbGFzcyB3aGljaCBqdXN0IGRlZmluZXMgdGhlICckd2lkZ2V0JyBpZGVudGlmaWVyIHR5cGUuIFN1YnR5cGVzIG9mCiAgICogd2lkZ2V0IGFyZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHdoYXRldmVyIG1ldGFkYXRhIGlzIHJlbGV2YW50LiBJZiB5b3Ugd2FudCB5b3VyIHdpZGdldAogICAqIHRvIGhhdmUgcmVuZGVyaW5nIGZ1bmN0aW9uYWxpdHkgKHdoaWNoIHlvdSBwcm9iYWJseSBkbyksIHlvdSBzaG91bGQgZXh0ZW5kIGBSZW5kZXJXaWRnZXRgLgogICAqLwogIGNsYXNzIFdpZGdldCB7CiAgICAgICR3aWRnZXQ7CiAgICAgIGNvbnN0cnVjdG9yKCR3aWRnZXQpIHsKICAgICAgICAgIHRoaXMuJHdpZGdldCA9ICR3aWRnZXQ7CiAgICAgIH0KICB9CiAgLyoqIEEgdHJpdmlhbCB3aWRnZXQgd2hpY2ggcmVuZGVycyBhIChrZXksIHZhbHVlKSBwYWlyLCBhbmQgYWxsb3dzIGFjY2Vzc2luZyB0aGUga2V5IGFuZCB2YWx1ZS4gKi8KICBjbGFzcyBMaXN0UGFpcldpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIGtleTsKICAgICAgdmFsdWU7CiAgICAgIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUpIHsKICAgICAgICAgIHN1cGVyKCJkYXRhdmlldzpsaXN0LXBhaXIiKTsKICAgICAgICAgIHRoaXMua2V5ID0ga2V5OwogICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGAke1ZhbHVlcy50b1N0cmluZyh0aGlzLmtleSl9OiAke1ZhbHVlcy50b1N0cmluZyh0aGlzLnZhbHVlKX1gOwogICAgICB9CiAgfQogIC8qKiBBIHNpbXBsZSB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLiAqLwogIGNsYXNzIEV4dGVybmFsTGlua1dpZGdldCBleHRlbmRzIFdpZGdldCB7CiAgICAgIHVybDsKICAgICAgZGlzcGxheTsKICAgICAgY29uc3RydWN0b3IodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICBzdXBlcigiZGF0YXZpZXc6ZXh0ZXJuYWwtbGluayIpOwogICAgICAgICAgdGhpcy51cmwgPSB1cmw7CiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBkaXNwbGF5OwogICAgICB9CiAgICAgIG1hcmtkb3duKCkgewogICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLmRpc3BsYXkgPz8gdGhpcy51cmx9XSgke3RoaXMudXJsfSlgOwogICAgICB9CiAgfQogIHZhciBXaWRnZXRzOwogIChmdW5jdGlvbiAoV2lkZ2V0cykgewogICAgICAvKiogQ3JlYXRlIGEgbGlzdCBwYWlyIHdpZGdldCBtYXRjaGluZyB0aGUgZ2l2ZW4ga2V5IGFuZCB2YWx1ZS4gKi8KICAgICAgZnVuY3Rpb24gbGlzdFBhaXIoa2V5LCB2YWx1ZSkgewogICAgICAgICAgcmV0dXJuIG5ldyBMaXN0UGFpcldpZGdldChrZXksIHZhbHVlKTsKICAgICAgfQogICAgICBXaWRnZXRzLmxpc3RQYWlyID0gbGlzdFBhaXI7CiAgICAgIC8qKiBDcmVhdGUgYW4gZXh0ZXJuYWwgbGluayB3aWRnZXQgd2hpY2ggcmVuZGVycyBhbiBleHRlcm5hbCBPYnNpZGlhbiBsaW5rLiAqLwogICAgICBmdW5jdGlvbiBleHRlcm5hbExpbmsodXJsLCBkaXNwbGF5KSB7CiAgICAgICAgICByZXR1cm4gbmV3IEV4dGVybmFsTGlua1dpZGdldCh1cmwsIGRpc3BsYXkpOwogICAgICB9CiAgICAgIFdpZGdldHMuZXh0ZXJuYWxMaW5rID0gZXh0ZXJuYWxMaW5rOwogICAgICAvKiogQ2hlY2tzIGlmIHRoZSBnaXZlbiB3aWRnZXQgaXMgYSBsaXN0IHBhaXIgd2lkZ2V0LiAqLwogICAgICBmdW5jdGlvbiBpc0xpc3RQYWlyKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIHdpZGdldC4kd2lkZ2V0ID09PSAiZGF0YXZpZXc6bGlzdC1wYWlyIjsKICAgICAgfQogICAgICBXaWRnZXRzLmlzTGlzdFBhaXIgPSBpc0xpc3RQYWlyOwogICAgICBmdW5jdGlvbiBpc0V4dGVybmFsTGluayh3aWRnZXQpIHsKICAgICAgICAgIHJldHVybiB3aWRnZXQuJHdpZGdldCA9PT0gImRhdGF2aWV3OmV4dGVybmFsLWxpbmsiOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNFeHRlcm5hbExpbmsgPSBpc0V4dGVybmFsTGluazsKICAgICAgLyoqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHdpZGdldCBpcyBhbnkga2luZCBvZiBidWlsdC1pbiB3aWRnZXQgd2l0aCBzcGVjaWFsIHJlbmRlcmluZyBoYW5kbGluZy4gKi8KICAgICAgZnVuY3Rpb24gaXNCdWlsdGluKHdpZGdldCkgewogICAgICAgICAgcmV0dXJuIGlzTGlzdFBhaXIod2lkZ2V0KSB8fCBpc0V4dGVybmFsTGluayh3aWRnZXQpOwogICAgICB9CiAgICAgIFdpZGdldHMuaXNCdWlsdGluID0gaXNCdWlsdGluOwogIH0pKFdpZGdldHMgfHwgKFdpZGdldHMgPSB7fSkpOwoKICAvKiogVXRpbGl0eSBtZXRob2RzIGZvciBjcmVhdGluZyAmIGNvbXBhcmluZyBmaWVsZHMuICovCiAgdmFyIEZpZWxkczsKICAoZnVuY3Rpb24gKEZpZWxkcykgewogICAgICBmdW5jdGlvbiB2YXJpYWJsZShuYW1lKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAidmFyaWFibGUiLCBuYW1lIH07CiAgICAgIH0KICAgICAgRmllbGRzLnZhcmlhYmxlID0gdmFyaWFibGU7CiAgICAgIGZ1bmN0aW9uIGxpdGVyYWwodmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaXRlcmFsIiwgdmFsdWUgfTsKICAgICAgfQogICAgICBGaWVsZHMubGl0ZXJhbCA9IGxpdGVyYWw7CiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgRmllbGRzLmJpbmFyeU9wID0gYmluYXJ5T3A7CiAgICAgIGZ1bmN0aW9uIGluZGV4KG9iaiwgaW5kZXgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpbmRleCIsIG9iamVjdDogb2JqLCBpbmRleCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5pbmRleCA9IGluZGV4OwogICAgICAvKiogQ29udmVydHMgYSBzdHJpbmcgaW4gZG90LW5vdGF0aW9uLWZvcm1hdCBpbnRvIGEgdmFyaWFibGUgd2hpY2ggaW5kZXhlcy4gKi8KICAgICAgZnVuY3Rpb24gaW5kZXhWYXJpYWJsZShuYW1lKSB7CiAgICAgICAgICBsZXQgcGFydHMgPSBuYW1lLnNwbGl0KCIuIik7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gRmllbGRzLnZhcmlhYmxlKHBhcnRzWzBdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCBwYXJ0cy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICByZXN1bHQgPSBGaWVsZHMuaW5kZXgocmVzdWx0LCBGaWVsZHMubGl0ZXJhbChwYXJ0c1tpbmRleF0pKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgIH0KICAgICAgRmllbGRzLmluZGV4VmFyaWFibGUgPSBpbmRleFZhcmlhYmxlOwogICAgICBmdW5jdGlvbiBsYW1iZGEoYXJncywgdmFsdWUpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsYW1iZGEiLCBhcmd1bWVudHM6IGFyZ3MsIHZhbHVlIH07CiAgICAgIH0KICAgICAgRmllbGRzLmxhbWJkYSA9IGxhbWJkYTsKICAgICAgZnVuY3Rpb24gZnVuYyhmdW5jLCBhcmdzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmdW5jLCBhcmd1bWVudHM6IGFyZ3MgfTsKICAgICAgfQogICAgICBGaWVsZHMuZnVuYyA9IGZ1bmM7CiAgICAgIGZ1bmN0aW9uIGxpc3QodmFsdWVzKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibGlzdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5saXN0ID0gbGlzdDsKICAgICAgZnVuY3Rpb24gb2JqZWN0KHZhbHVlcykgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm9iamVjdCIsIHZhbHVlcyB9OwogICAgICB9CiAgICAgIEZpZWxkcy5vYmplY3QgPSBvYmplY3Q7CiAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjaGlsZCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogIm5lZ2F0ZWQiLCBjaGlsZCB9OwogICAgICB9CiAgICAgIEZpZWxkcy5uZWdhdGUgPSBuZWdhdGU7CiAgICAgIGZ1bmN0aW9uIGlzQ29tcGFyZU9wKG9wKSB7CiAgICAgICAgICByZXR1cm4gb3AgPT0gIjw9IiB8fCBvcCA9PSAiPCIgfHwgb3AgPT0gIj4iIHx8IG9wID09ICI+PSIgfHwgb3AgPT0gIiE9IiB8fCBvcCA9PSAiPSI7CiAgICAgIH0KICAgICAgRmllbGRzLmlzQ29tcGFyZU9wID0gaXNDb21wYXJlT3A7CiAgICAgIEZpZWxkcy5OVUxMID0gRmllbGRzLmxpdGVyYWwobnVsbCk7CiAgfSkoRmllbGRzIHx8IChGaWVsZHMgPSB7fSkpOwoKICAvKiogQVNUIGltcGxlbWVudGF0aW9uIGZvciBxdWVyaWVzIG92ZXIgZGF0YSBzb3VyY2VzLiAqLwogIC8qKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBzb3VyY2VzLiAqLwogIHZhciBTb3VyY2VzOwogIChmdW5jdGlvbiAoU291cmNlcykgewogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHNlYXJjaGVzIGZyb20gYSB0YWcuICovCiAgICAgIGZ1bmN0aW9uIHRhZyh0YWcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJ0YWciLCB0YWcgfTsKICAgICAgfQogICAgICBTb3VyY2VzLnRhZyA9IHRhZzsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBmZXRjaGVzIGZyb20gYSBDU1YgZmlsZS4gKi8KICAgICAgZnVuY3Rpb24gY3N2KHBhdGgpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJjc3YiLCBwYXRoIH07CiAgICAgIH0KICAgICAgU291cmNlcy5jc3YgPSBjc3Y7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHVuZGVyIGEgZm9sZGVyIHByZWZpeC4gKi8KICAgICAgZnVuY3Rpb24gZm9sZGVyKHByZWZpeCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImZvbGRlciIsIGZvbGRlcjogcHJlZml4IH07CiAgICAgIH0KICAgICAgU291cmNlcy5mb2xkZXIgPSBmb2xkZXI7CiAgICAgIC8qKiBDcmVhdGUgYSBzb3VyY2Ugd2hpY2ggc2VhcmNoZXMgZm9yIGZpbGVzIHdoaWNoIGxpbmsgdG8vZnJvbSBhIGdpdmVuIGZpbGUuICovCiAgICAgIGZ1bmN0aW9uIGxpbmsoZmlsZSwgaW5jb21pbmcpIHsKICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJsaW5rIiwgZmlsZSwgZGlyZWN0aW9uOiBpbmNvbWluZyA/ICJpbmNvbWluZyIgOiAib3V0Z29pbmciIH07CiAgICAgIH0KICAgICAgU291cmNlcy5saW5rID0gbGluazsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBqb2lucyB0d28gc291cmNlcyBieSBhIGxvZ2ljYWwgb3BlcmF0b3IgKGFuZC9vcikuICovCiAgICAgIGZ1bmN0aW9uIGJpbmFyeU9wKGxlZnQsIG9wLCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3AsIHJpZ2h0IH07CiAgICAgIH0KICAgICAgU291cmNlcy5iaW5hcnlPcCA9IGJpbmFyeU9wOwogICAgICAvKiogQ3JlYXRlIGEgc291cmNlIHdoaWNoIHRha2VzIHRoZSBpbnRlcnNlY3Rpb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIGFuZChsZWZ0LCByaWdodCkgewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImJpbmFyeW9wIiwgbGVmdCwgb3A6ICImIiwgcmlnaHQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLmFuZCA9IGFuZDsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCB0YWtlcyB0aGUgdW5pb24gb2YgdHdvIHNvdXJjZXMuICovCiAgICAgIGZ1bmN0aW9uIG9yKGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiYmluYXJ5b3AiLCBsZWZ0LCBvcDogInwiLCByaWdodCB9OwogICAgICB9CiAgICAgIFNvdXJjZXMub3IgPSBvcjsKICAgICAgLyoqIENyZWF0ZSBhIHNvdXJjZSB3aGljaCBuZWdhdGVzIHRoZSB1bmRlcmx5aW5nIHNvdXJjZS4gKi8KICAgICAgZnVuY3Rpb24gbmVnYXRlKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAibmVnYXRlIiwgY2hpbGQgfTsKICAgICAgfQogICAgICBTb3VyY2VzLm5lZ2F0ZSA9IG5lZ2F0ZTsKICAgICAgZnVuY3Rpb24gZW1wdHkoKSB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZW1wdHkiIH07CiAgICAgIH0KICAgICAgU291cmNlcy5lbXB0eSA9IGVtcHR5OwogIH0pKFNvdXJjZXMgfHwgKFNvdXJjZXMgPSB7fSkpOwoKICAvKiogRW1vamkgcmVnZXggd2l0aG91dCBhbnkgYWRkaXRpb25hbCBmbGFncy4gKi8KICBjb25zdCBFTU9KSV9SRUdFWCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAiIik7CiAgLyoqIFByb3ZpZGVzIGEgbG9va3VwIHRhYmxlIGZvciB1bml0IGR1cmF0aW9ucyBvZiB0aGUgZ2l2ZW4gdHlwZS4gKi8KICBjb25zdCBEVVJBVElPTl9UWVBFUyA9IHsKICAgICAgeWVhcjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5ZWFyczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cjogRHVyYXRpb24uZnJvbU9iamVjdCh7IHllYXJzOiAxIH0pLAogICAgICB5cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyB5ZWFyczogMSB9KSwKICAgICAgbW9udGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vbnRoczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgbW86IER1cmF0aW9uLmZyb21PYmplY3QoeyBtb250aHM6IDEgfSksCiAgICAgIG1vczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1vbnRoczogMSB9KSwKICAgICAgd2VlazogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3ZWVrczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3azogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICB3a3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyB3ZWVrczogMSB9KSwKICAgICAgdzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHdlZWtzOiAxIH0pLAogICAgICBkYXk6IER1cmF0aW9uLmZyb21PYmplY3QoeyBkYXlzOiAxIH0pLAogICAgICBkYXlzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSwKICAgICAgZDogRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSksCiAgICAgIGhvdXI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaG91cnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHI6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgaHJzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgaG91cnM6IDEgfSksCiAgICAgIGg6IER1cmF0aW9uLmZyb21PYmplY3QoeyBob3VyczogMSB9KSwKICAgICAgbWludXRlOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgbWludXRlczogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbjogRHVyYXRpb24uZnJvbU9iamVjdCh7IG1pbnV0ZXM6IDEgfSksCiAgICAgIG1pbnM6IER1cmF0aW9uLmZyb21PYmplY3QoeyBtaW51dGVzOiAxIH0pLAogICAgICBtOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgbWludXRlczogMSB9KSwKICAgICAgc2Vjb25kOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICAgICAgc2Vjb25kczogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlYzogRHVyYXRpb24uZnJvbU9iamVjdCh7IHNlY29uZHM6IDEgfSksCiAgICAgIHNlY3M6IER1cmF0aW9uLmZyb21PYmplY3QoeyBzZWNvbmRzOiAxIH0pLAogICAgICBzOiBEdXJhdGlvbi5mcm9tT2JqZWN0KHsgc2Vjb25kczogMSB9KSwKICB9OwogIC8qKiBTaG9ydGhhbmQgZm9yIGNvbW1vbiBkYXRlcyAocmVsYXRpdmUgdG8gcmlnaHQgbm93KS4gKi8KICBjb25zdCBEQVRFX1NIT1JUSEFORFMgPSB7CiAgICAgIG5vdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKSwKICAgICAgdG9kYXk6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuc3RhcnRPZigiZGF5IiksCiAgICAgIHllc3RlcmRheTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAubWludXMoRHVyYXRpb24uZnJvbU9iamVjdCh7IGRheXM6IDEgfSkpLAogICAgICB0b21vcnJvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKQogICAgICAgICAgLnN0YXJ0T2YoImRheSIpCiAgICAgICAgICAucGx1cyhEdXJhdGlvbi5mcm9tT2JqZWN0KHsgZGF5czogMSB9KSksCiAgICAgIHNvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgICJzdGFydC1vZi13ZWVrIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ3ZWVrIiksCiAgICAgIGVvdzogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigid2VlayIpLAogICAgICAiZW5kLW9mLXdlZWsiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ3ZWVrIiksCiAgICAgIHNveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgICJzdGFydC1vZi15ZWFyIjogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJ5ZWFyIiksCiAgICAgIGVveTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigieWVhciIpLAogICAgICAiZW5kLW9mLXllYXIiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLmVuZE9mKCJ5ZWFyIiksCiAgICAgIHNvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5zdGFydE9mKCJtb250aCIpLAogICAgICAic3RhcnQtb2YtbW9udGgiOiAoKSA9PiBEYXRlVGltZS5sb2NhbCgpLnN0YXJ0T2YoIm1vbnRoIiksCiAgICAgIGVvbTogKCkgPT4gRGF0ZVRpbWUubG9jYWwoKS5lbmRPZigibW9udGgiKSwKICAgICAgImVuZC1vZi1tb250aCI6ICgpID0+IERhdGVUaW1lLmxvY2FsKCkuZW5kT2YoIm1vbnRoIiksCiAgfTsKICAvKioKICAgKiBLZXl3b3JkcyB3aGljaCBjYW5ub3QgYmUgdXNlZCBhcyB2YXJpYWJsZXMgZGlyZWN0bHkuIFVzZSBgcm93Ljx0aGluZz5gIGlmIGl0IGlzIGEgdmFyaWFibGUgeW91IGhhdmUgZGVmaW5lZCBhbmQgd2FudAogICAqIHRvIGFjY2Vzcy4KICAgKi8KICBjb25zdCBLRVlXT1JEUyA9IFsiRlJPTSIsICJXSEVSRSIsICJMSU1JVCIsICJHUk9VUCIsICJGTEFUVEVOIl07CiAgLy8vLy8vLy8vLy8vLy8vCiAgLy8gVXRpbGl0aWVzIC8vCiAgLy8vLy8vLy8vLy8vLy8vCiAgLyoqIFNwbGl0IG9uIHVuZXNjYXBlZCBwaXBlcyBpbiBhbiBpbm5lciBsaW5rLiAqLwogIGZ1bmN0aW9uIHNwbGl0T25VbmVzY2FwZWRQaXBlKGxpbmspIHsKICAgICAgbGV0IHBpcGUgPSAtMTsKICAgICAgd2hpbGUgKChwaXBlID0gbGluay5pbmRleE9mKCJ8IiwgcGlwZSArIDEpKSA+PSAwKSB7CiAgICAgICAgICBpZiAocGlwZSA+IDAgJiYgbGlua1twaXBlIC0gMV0gPT0gIlxcIikKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJldHVybiBbbGluay5zdWJzdHJpbmcoMCwgcGlwZSkucmVwbGFjZSgvXFxcfC9nLCAifCIpLCBsaW5rLnN1YnN0cmluZyhwaXBlICsgMSldOwogICAgICB9CiAgICAgIHJldHVybiBbbGluay5yZXBsYWNlKC9cXFx8L2csICJ8IiksIHVuZGVmaW5lZF07CiAgfQogIC8qKiBBdHRlbXB0IHRvIHBhcnNlIHRoZSBpbnNpZGUgb2YgYSBsaW5rIHRvIHB1bGwgb3V0IGRpc3BsYXkgbmFtZSwgc3VicGF0aCwgZXRjLiAqLwogIGZ1bmN0aW9uIHBhcnNlSW5uZXJMaW5rKHJhd2xpbmspIHsKICAgICAgbGV0IFtsaW5rLCBkaXNwbGF5XSA9IHNwbGl0T25VbmVzY2FwZWRQaXBlKHJhd2xpbmspOwogICAgICByZXR1cm4gTGluay5pbmZlcihsaW5rLCBmYWxzZSwgZGlzcGxheSk7CiAgfQogIC8qKiBDcmVhdGUgYSBsZWZ0LWFzc29jaWF0aXZlIGJpbmFyeSBwYXJzZXIgd2hpY2ggcGFyc2VzIHRoZSBnaXZlbiBzdWItZWxlbWVudCBhbmQgc2VwYXJhdG9yLiBIYW5kbGVzIHdoaXRlc3BhY2UuICovCiAgZnVuY3Rpb24gY3JlYXRlQmluYXJ5UGFyc2VyKGNoaWxkLCBzZXAsIGNvbWJpbmUpIHsKICAgICAgcmV0dXJuIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAoY2hpbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXEocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHNlcCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIGNoaWxkKS5tYW55KCksIChmaXJzdCwgcmVzdCkgPT4gewogICAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09IDApCiAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgICAgICAgbGV0IG5vZGUgPSBjb21iaW5lKGZpcnN0LCByZXN0WzBdWzFdLCByZXN0WzBdWzNdKTsKICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCByZXN0Lmxlbmd0aDsgaW5kZXgrKykgewogICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5lKG5vZGUsIHJlc3RbaW5kZXhdWzFdLCByZXN0W2luZGV4XVszXSk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgfSk7CiAgfQogIGZ1bmN0aW9uIGNoYWluT3B0KGJhc2UsIC4uLmZ1bmNzKSB7CiAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuY3VzdG9tKChzdWNjZXNzLCBmYWlsdXJlKSA9PiB7CiAgICAgICAgICByZXR1cm4gKGlucHV0LCBpKSA9PiB7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGJhc2UuXyhpbnB1dCwgaSk7CiAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgIGZvciAobGV0IGZ1bmMgb2YgZnVuY3MpIHsKICAgICAgICAgICAgICAgICAgbGV0IG5leHQgPSBmdW5jKHJlc3VsdC52YWx1ZSkuXyhpbnB1dCwgcmVzdWx0LmluZGV4KTsKICAgICAgICAgICAgICAgICAgaWYgKCFuZXh0LnN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9OwogICAgICB9KTsKICB9CiAgY29uc3QgRVhQUkVTU0lPTiA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5jcmVhdGVMYW5ndWFnZSh7CiAgICAgIC8vIEEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyOyB0aGUgZGVjaW1hbCBwb2ludCBpcyBvcHRpb25hbC4KICAgICAgbnVtYmVyOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoLy0/WzAtOV0rKFwuWzAtOV0rKT8vKQogICAgICAgICAgLm1hcChzdHIgPT4gTnVtYmVyLnBhcnNlRmxvYXQoc3RyKSkKICAgICAgICAgIC5kZXNjKCJudW1iZXIiKSwKICAgICAgLy8gQSBxdW90ZS1zdXJyb3VuZGVkIHN0cmluZyB3aGljaCBzdXBwb3J0cyBlc2NhcGUgY2hhcmFjdGVycyAoJ1wnKS4KICAgICAgc3RyaW5nOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoJyInKQogICAgICAgICAgLnRoZW4ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmVzY2FwZUNoYXJhY3RlciwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm5vbmVPZignIlxcJykpCiAgICAgICAgICAuYXRMZWFzdCgwKQogICAgICAgICAgLm1hcChjaGFycyA9PiBjaGFycy5qb2luKCIiKSkpCiAgICAgICAgICAuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCciJykpCiAgICAgICAgICAuZGVzYygic3RyaW5nIiksCiAgICAgIGVzY2FwZUNoYXJhY3RlcjogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJcXCIpCiAgICAgICAgICAudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYW55KQogICAgICAgICAgLm1hcChlc2NhcGVkID0+IHsKICAgICAgICAgIC8vIElmIHdlIGFyZSBlc2NhcGluZyBhIGJhY2tzbGFzaCBvciBhIHF1b3RlLCBwYXNzIGluIG9uIGluIGVzY2FwZWQgZm9ybQogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICciJykKICAgICAgICAgICAgICByZXR1cm4gJyInOwogICAgICAgICAgaWYgKGVzY2FwZWQgPT09ICJcXCIpCiAgICAgICAgICAgICAgcmV0dXJuICJcXCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuICJcXCIgKyBlc2NhcGVkOwogICAgICB9KSwKICAgICAgLy8gQSBib29sZWFuIHRydWUvZmFsc2UgdmFsdWUuCiAgICAgIGJvb2w6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvdHJ1ZXxmYWxzZXxUcnVlfEZhbHNlLykKICAgICAgICAgIC5tYXAoc3RyID0+IHN0ci50b0xvd2VyQ2FzZSgpID09ICJ0cnVlIikKICAgICAgICAgIC5kZXNjKCJib29sZWFuICgndHJ1ZScgb3IgJ2ZhbHNlJykiKSwKICAgICAgLy8gQSB0YWcgb2YgdGhlIGZvcm0gJyNzdHVmZi9oZWxsby10aGVyZScuCiAgICAgIHRhZzogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiMiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9bXlx1MjAwMC1cdTIwNkZcdTJFMDAtXHUyRTdGJyEiIyQlJigpKissLjo7PD0+P0BeYHt8fX5cW1xdXFxcc10vKS5kZXNjKCJ0ZXh0IikpLm1hbnkoKSwgKHN0YXJ0LCByZXN0KSA9PiBzdGFydCArIHJlc3Quam9pbigiIikpLmRlc2MoInRhZyAoJyNoZWxsby9zdHVmZicpIiksCiAgICAgIC8vIEEgdmFyaWFibGUgaWRlbnRpZmllciwgd2hpY2ggaXMgYWxwaGFudW1lcmljIGFuZCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IuLi4gZW1vamkuCiAgICAgIGlkZW50aWZpZXI6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xwe0xldHRlcn0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOVxwe0xldHRlcn1fLV0vdSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoRU1PSklfUkVHRVgpLmRlc2MoInRleHQiKSkubWFueSgpLCAoZmlyc3QsIHJlc3QpID0+IGZpcnN0ICsgcmVzdC5qb2luKCIiKSkuZGVzYygidmFyaWFibGUgaWRlbnRpZmllciIpLAogICAgICAvLyBBbiBPYnNpZGlhbiBsaW5rIG9mIHRoZSBmb3JtIFtbPGxpbms+XV0uCiAgICAgIGxpbms6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXFtcWyhbXlxbXF1dKj8pXF1cXS91LCAxKQogICAgICAgICAgLm1hcChsaW5rSW5uZXIgPT4gcGFyc2VJbm5lckxpbmsobGlua0lubmVyKSkKICAgICAgICAgIC5kZXNjKCJmaWxlIGxpbmsiKSwKICAgICAgLy8gQW4gZW1iZWRkYWJsZSBsaW5rIHdoaWNoIGNhbiBzdGFydCB3aXRoICchJy4gVGhpcyBvdmVybGFwcyB3aXRoIHRoZSBub3JtYWwgbmVnYXRpb24gb3BlcmF0b3IsIHNvIGl0IGlzIG9ubHkKICAgICAgLy8gcHJvdmlkZWQgZm9yIG1ldGFkYXRhIHBhcnNpbmcuCiAgICAgIGVtYmVkTGluazogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKS5hdE1vc3QoMSksIHEubGluaywgKHAsIGwpID0+IHsKICAgICAgICAgIGlmIChwLmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgbC5lbWJlZCA9IHRydWU7CiAgICAgICAgICByZXR1cm4gbDsKICAgICAgfSkuZGVzYygiZmlsZSBsaW5rIiksCiAgICAgIC8vIEJpbmFyeSBwbHVzIG9yIG1pbnVzIG9wZXJhdG9yLgogICAgICBiaW5hcnlQbHVzTWludXM6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCt8LS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJysnIG9yICctJyIpLAogICAgICAvLyBCaW5hcnkgdGltZXMgb3IgZGl2aWRlIG9wZXJhdG9yLgogICAgICBiaW5hcnlNdWxEaXY6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXCp8XC98JS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJyonIG9yICcvJyBvciAnJSciKSwKICAgICAgLy8gQmluYXJ5IGNvbXBhcmlzb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUNvbXBhcmVPcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC8+PXw8PXwhPXw+fDx8PS8pCiAgICAgICAgICAubWFwKHN0ciA9PiBzdHIpCiAgICAgICAgICAuZGVzYygiJz49JyBvciAnPD0nIG9yICchPScgb3IgJz0nIG9yICc+JyBvciAnPCciKSwKICAgICAgLy8gQmluYXJ5IGJvb2xlYW4gY29tYmluYXRpb24gb3BlcmF0b3IuCiAgICAgIGJpbmFyeUJvb2xlYW5PcDogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9hbmR8b3J8JnxcfC9pKQogICAgICAgICAgLm1hcChzdHIgPT4gewogICAgICAgICAgaWYgKHN0ci50b0xvd2VyQ2FzZSgpID09ICJhbmQiKQogICAgICAgICAgICAgIHJldHVybiAiJiI7CiAgICAgICAgICBlbHNlIGlmIChzdHIudG9Mb3dlckNhc2UoKSA9PSAib3IiKQogICAgICAgICAgICAgIHJldHVybiAifCI7CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgfSkKICAgICAgICAgIC5kZXNjKCInYW5kJyBvciAnb3InIiksCiAgICAgIC8vIEEgZGF0ZSB3aGljaCBjYW4gYmUgWVlZWS1NTVstRERUSEg6bW06c3NdLgogICAgICByb290RGF0ZTogXyA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezR9LyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7Mn0vKSwgKHllYXIsIF8sIG1vbnRoKSA9PiB7CiAgICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbU9iamVjdCh7IHllYXI6IE51bWJlci5wYXJzZUludCh5ZWFyKSwgbW9udGg6IE51bWJlci5wYXJzZUludChtb250aCkgfSk7CiAgICAgIH0pLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSIpLAogICAgICBkYXRlU2hvcnRoYW5kOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQoLi4uT2JqZWN0LmtleXMoREFURV9TSE9SVEhBTkRTKQogICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpCiAgICAgICAgICAubWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcpKSwKICAgICAgZGF0ZTogcSA9PiBjaGFpbk9wdChxLnJvb3REYXRlLCAoeW0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgZGF5KSA9PiB5bS5zZXQoeyBkYXk6IE51bWJlci5wYXJzZUludChkYXkpIH0pKSwgKHltZCkgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJUIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezJ9LyksIChfLCBob3VyKSA9PiB5bWQuc2V0KHsgaG91cjogTnVtYmVyLnBhcnNlSW50KGhvdXIpIH0pKSwgKHltZGgpID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgbWludXRlKSA9PiB5bWRoLnNldCh7IG1pbnV0ZTogTnVtYmVyLnBhcnNlSW50KG1pbnV0ZSkgfSkpLCAoeW1kaG0pID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiOiIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMucmVnZXhwKC9cZHsyfS8pLCAoXywgc2Vjb25kKSA9PiB5bWRobS5zZXQoeyBzZWNvbmQ6IE51bWJlci5wYXJzZUludChzZWNvbmQpIH0pKSwgKHltZGhtcykgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi4iKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvXGR7M30vKSwgKF8sIG1pbGxpc2Vjb25kKSA9PiB5bWRobXMuc2V0KHsgbWlsbGlzZWNvbmQ6IE51bWJlci5wYXJzZUludChtaWxsaXNlY29uZCkgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZCh5bWRobXMpIC8vIHBhc3MKICAgICAgKSwgKGR0KSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKyIpLm9yKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIi0iKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1xkezEsMn0oOlxkezJ9KT8vKSwgKHBtLCBocikgPT4gZHQuc2V0Wm9uZSgiVVRDIiArIHBtICsgaHIsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWiIpLCAoKSA9PiBkdC5zZXRab25lKCJ1dGMiLCB7IGtlZXBMb2NhbFRpbWU6IHRydWUgfSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvWzAtOUEtWmEteistXC9dKy91KSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiXSIpLCAoX2EsIHpvbmUsIF9iKSA9PiBkdC5zZXRab25lKHpvbmUsIHsga2VlcExvY2FsVGltZTogdHJ1ZSB9KSkpKQogICAgICAgICAgLmFzc2VydCgoZHQpID0+IGR0LmlzVmFsaWQsICJ2YWxpZCBkYXRlIikKICAgICAgICAgIC5kZXNjKCJkYXRlIGluIGZvcm1hdCBZWVlZLU1NWy1ERFRISC1NTS1TUy5NU10iKSwKICAgICAgLy8gQSBkYXRlLCBwbHVzIHZhcmlvdXMgc2hvcnRoYW5kIHRpbWVzIG9mIGRheSBpdCBjb3VsZCBiZS4KICAgICAgZGF0ZVBsdXM6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChxLmRhdGVTaG9ydGhhbmQubWFwKGQgPT4gREFURV9TSE9SVEhBTkRTW2RdKCkpLCBxLmRhdGUpLmRlc2MoImRhdGUgaW4gZm9ybWF0IFlZWVktTU1bLUREVEhILU1NLVNTLk1TXSBvciBpbiBzaG9ydGhhbmQiKSwKICAgICAgLy8gQSBkdXJhdGlvbiBvZiB0aW1lLgogICAgICBkdXJhdGlvblR5cGU6IF8gPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdCguLi5PYmplY3Qua2V5cyhEVVJBVElPTl9UWVBFUykKICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKQogICAgICAgICAgLm1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKSksCiAgICAgIGR1cmF0aW9uOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5udW1iZXIsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uVHlwZSwgKGNvdW50LCBfLCB0KSA9PiBEVVJBVElPTl9UWVBFU1t0XS5tYXBVbml0cyh4ID0+IHggKiBjb3VudCkpCiAgICAgICAgICAuc2VwQnkxKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5vcihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpCiAgICAgICAgICAubWFwKGR1cmF0aW9ucyA9PiBkdXJhdGlvbnMucmVkdWNlKChwLCBjKSA9PiBwLnBsdXMoYykpKQogICAgICAgICAgLmRlc2MoImR1cmF0aW9uIGxpa2UgNGhyMm1pbiIpLAogICAgICAvLyBBIHJhdyBudWxsIHZhbHVlLgogICAgICByYXdOdWxsOiBfID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm51bGwiKSwKICAgICAgLy8gU291cmNlIHBhcnNpbmcuCiAgICAgIHRhZ1NvdXJjZTogcSA9PiBxLnRhZy5tYXAodGFnID0+IFNvdXJjZXMudGFnKHRhZykpLAogICAgICBjc3ZTb3VyY2U6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJjc3YoIikuc2tpcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuc3RyaW5nLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIpIiksIChfMSwgcGF0aCwgXzIpID0+IFNvdXJjZXMuY3N2KHBhdGgpKSwKICAgICAgbGlua0luY29taW5nU291cmNlOiBxID0+IHEubGluay5tYXAobGluayA9PiBTb3VyY2VzLmxpbmsobGluay5wYXRoLCB0cnVlKSksCiAgICAgIGxpbmtPdXRnb2luZ1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIm91dGdvaW5nKCIpLnNraXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpLCBxLmxpbmssIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBsaW5rLCBfMikgPT4gU291cmNlcy5saW5rKGxpbmsucGF0aCwgZmFsc2UpKSwKICAgICAgZm9sZGVyU291cmNlOiBxID0+IHEuc3RyaW5nLm1hcChzdHIgPT4gU291cmNlcy5mb2xkZXIoc3RyKSksCiAgICAgIHBhcmVuc1NvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHEuc291cmNlLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXzEsIF8yLCBmaWVsZCwgXzMsIF80KSA9PiBmaWVsZCksCiAgICAgIG5lZ2F0ZVNvdXJjZTogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLSIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIhIikpLCBxLmF0b21Tb3VyY2UsIChfLCBzb3VyY2UpID0+IFNvdXJjZXMubmVnYXRlKHNvdXJjZSkpLAogICAgICBhdG9tU291cmNlOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5wYXJlbnNTb3VyY2UsIHEubmVnYXRlU291cmNlLCBxLmxpbmtPdXRnb2luZ1NvdXJjZSwgcS5saW5rSW5jb21pbmdTb3VyY2UsIHEuZm9sZGVyU291cmNlLCBxLnRhZ1NvdXJjZSwgcS5jc3ZTb3VyY2UpLAogICAgICBiaW5hcnlPcFNvdXJjZTogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5hdG9tU291cmNlLCBxLmJpbmFyeUJvb2xlYW5PcC5tYXAocyA9PiBzKSwgU291cmNlcy5iaW5hcnlPcCksCiAgICAgIHNvdXJjZTogcSA9PiBxLmJpbmFyeU9wU291cmNlLAogICAgICAvLyBGaWVsZCBwYXJzaW5nLgogICAgICB2YXJpYWJsZUZpZWxkOiBxID0+IHEuaWRlbnRpZmllcgogICAgICAgICAgLmNoYWluKHIgPT4gewogICAgICAgICAgaWYgKEtFWVdPUkRTLmluY2x1ZGVzKHIudG9VcHBlckNhc2UoKSkpIHsKICAgICAgICAgICAgICByZXR1cm4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmZhaWwoIlZhcmlhYmxlIGZpZWxkcyBjYW5ub3QgYmUgYSBrZXl3b3JkICgiICsgS0VZV09SRFMuam9pbigiIG9yICIpICsgIikiKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHJldHVybiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3VjY2VlZChGaWVsZHMudmFyaWFibGUocikpOwogICAgICAgICAgfQogICAgICB9KQogICAgICAgICAgLmRlc2MoInZhcmlhYmxlIiksCiAgICAgIG51bWJlckZpZWxkOiBxID0+IHEubnVtYmVyLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygibnVtYmVyIiksCiAgICAgIHN0cmluZ0ZpZWxkOiBxID0+IHEuc3RyaW5nLm1hcCh2YWwgPT4gRmllbGRzLmxpdGVyYWwodmFsKSkuZGVzYygic3RyaW5nIiksCiAgICAgIGJvb2xGaWVsZDogcSA9PiBxLmJvb2wubWFwKHZhbCA9PiBGaWVsZHMubGl0ZXJhbCh2YWwpKS5kZXNjKCJib29sZWFuIiksCiAgICAgIGRhdGVGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoImRhdGUoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmRhdGVQbHVzLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZGF0ZSwgXzIsIHBvc3RmaXgpID0+IEZpZWxkcy5saXRlcmFsKGRhdGUpKS5kZXNjKCJkYXRlIiksCiAgICAgIGR1cmF0aW9uRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnNlcU1hcChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJkdXIoIiksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlLCBxLmR1cmF0aW9uLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAocHJlZml4LCBfMSwgZHVyLCBfMiwgcG9zdGZpeCkgPT4gRmllbGRzLmxpdGVyYWwoZHVyKSkuZGVzYygiZHVyYXRpb24iKSwKICAgICAgbnVsbEZpZWxkOiBxID0+IHEucmF3TnVsbC5tYXAoXyA9PiBGaWVsZHMuTlVMTCksCiAgICAgIGxpbmtGaWVsZDogcSA9PiBxLmxpbmsubWFwKGYgPT4gRmllbGRzLmxpdGVyYWwoZikpLAogICAgICBsaXN0RmllbGQ6IHEgPT4gcS5maWVsZAogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIlsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJdIikpKQogICAgICAgICAgLm1hcChsID0+IEZpZWxkcy5saXN0KGwpKQogICAgICAgICAgLmRlc2MoImxpc3QgKCdbMSwgMiwgM10nKSIpLAogICAgICBvYmplY3RGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllci5vcihxLnN0cmluZyksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIjoiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKG5hbWUsIF9zZXAsIHZhbHVlKSA9PiB7CiAgICAgICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZSB9OwogICAgICB9KQogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoInsiKS5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UudGhlbihwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCJ9IikpKQogICAgICAgICAgLm1hcCh2YWxzID0+IHsKICAgICAgICAgIGxldCByZXMgPSB7fTsKICAgICAgICAgIGZvciAobGV0IGVudHJ5IG9mIHZhbHMpCiAgICAgICAgICAgICAgcmVzW2VudHJ5Lm5hbWVdID0gZW50cnkudmFsdWU7CiAgICAgICAgICByZXR1cm4gRmllbGRzLm9iamVjdChyZXMpOwogICAgICB9KQogICAgICAgICAgLmRlc2MoIm9iamVjdCAoJ3sgYTogMSwgYjogMiB9JykiKSwKICAgICAgYXRvbUlubGluZUZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kYXRlLCBxLmR1cmF0aW9uLm1hcChkID0+IG5vcm1hbGl6ZUR1cmF0aW9uKGQpKSwgcS5zdHJpbmcsIHEudGFnLCBxLmVtYmVkTGluaywgcS5ib29sLCBxLm51bWJlciwgcS5yYXdOdWxsKSwKICAgICAgaW5saW5lRmllbGRMaXN0OiBxID0+IHEuYXRvbUlubGluZUZpZWxkLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKS5sb29rYWhlYWQocS5hdG9tSW5saW5lRmllbGQpKSwKICAgICAgaW5saW5lRmllbGQ6IHEgPT4gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLmFsdChwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuYXRvbUlubGluZUZpZWxkLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSksIHEuaW5saW5lRmllbGRMaXN0LCAoZiwgX3MsIGwpID0+IFtmXS5jb25jYXQobCkpLCBxLmF0b21JbmxpbmVGaWVsZCksCiAgICAgIGF0b21GaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuYWx0KAogICAgICAvLyBQbGFjZSBlbWJlZCBsaW5rcyBhYm92ZSBuZWdhdGVkIGZpZWxkcyBhcyB0aGV5IGFyZSB0aGUgc3BlY2lhbCBwYXJzZXIgY2FzZSAnIVtbdGhpbmddXScgYW5kIGFyZSBnZW5lcmFsbHkgdW5hbWJpZ2lvdXMuCiAgICAgIHEuZW1iZWRMaW5rLm1hcChsID0+IEZpZWxkcy5saXRlcmFsKGwpKSwgcS5uZWdhdGVkRmllbGQsIHEubGlua0ZpZWxkLCBxLmxpc3RGaWVsZCwgcS5vYmplY3RGaWVsZCwgcS5sYW1iZGFGaWVsZCwgcS5wYXJlbnNGaWVsZCwgcS5ib29sRmllbGQsIHEubnVtYmVyRmllbGQsIHEuc3RyaW5nRmllbGQsIHEuZGF0ZUZpZWxkLCBxLmR1cmF0aW9uRmllbGQsIHEubnVsbEZpZWxkLCBxLnZhcmlhYmxlRmllbGQpLAogICAgICBpbmRleEZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocS5hdG9tRmllbGQsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocS5kb3RQb3N0Zml4LCBxLmluZGV4UG9zdGZpeCwgcS5mdW5jdGlvblBvc3RmaXgpLm1hbnkoKSwgKG9iaiwgcG9zdGZpeGVzKSA9PiB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gb2JqOwogICAgICAgICAgZm9yIChsZXQgcG9zdCBvZiBwb3N0Zml4ZXMpIHsKICAgICAgICAgICAgICBzd2l0Y2ggKHBvc3QudHlwZSkgewogICAgICAgICAgICAgICAgICBjYXNlICJkb3QiOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmllbGRzLmluZGV4KHJlc3VsdCwgRmllbGRzLmxpdGVyYWwocG9zdC5maWVsZCkpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImluZGV4IjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5pbmRleChyZXN1bHQsIHBvc3QuZmllbGQpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgIGNhc2UgImZ1bmN0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZpZWxkcy5mdW5jKHJlc3VsdCwgcG9zdC5maWVsZHMpOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfSksCiAgICAgIG5lZ2F0ZWRGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiEiKSwgcS5pbmRleEZpZWxkLCAoXywgZmllbGQpID0+IEZpZWxkcy5uZWdhdGUoZmllbGQpKS5kZXNjKCJuZWdhdGVkIGZpZWxkIiksCiAgICAgIHBhcmVuc0ZpZWxkOiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIikiKSwgKF8xLCBfMiwgZmllbGQsIF8zLCBfNCkgPT4gZmllbGQpLAogICAgICBsYW1iZGFGaWVsZDogcSA9PiBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc2VxTWFwKHEuaWRlbnRpZmllcgogICAgICAgICAgLnNlcEJ5KHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIiwiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSkKICAgICAgICAgIC53cmFwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIigiKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLnRyaW0ocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UpKSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiPT4iKS50cmltKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5vcHRXaGl0ZXNwYWNlKSwgcS5maWVsZCwgKGlkZW50LCBfaWdub3JlLCB2YWx1ZSkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImxhbWJkYSIsIGFyZ3VtZW50czogaWRlbnQsIHZhbHVlIH07CiAgICAgIH0pLAogICAgICBkb3RQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiLiIpLCBxLmlkZW50aWZpZXIsIChfLCBmaWVsZCkgPT4gewogICAgICAgICAgcmV0dXJuIHsgdHlwZTogImRvdCIsIGZpZWxkOiBmaWVsZCB9OwogICAgICB9KSwKICAgICAgaW5kZXhQb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiWyIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZCwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLm9wdFdoaXRlc3BhY2UsIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zdHJpbmcoIl0iKSwgKF8sIF8yLCBmaWVsZCwgXzMsIF80KSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaW5kZXgiLCBmaWVsZCB9OwogICAgICB9KSwKICAgICAgZnVuY3Rpb25Qb3N0Zml4OiBxID0+IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5zZXFNYXAocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKCIpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcS5maWVsZC5zZXBCeShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMuc3RyaW5nKCIsIikudHJpbShwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSkpLCBwYXJzaW1tb25fdW1kX21pbkV4cG9ydHMub3B0V2hpdGVzcGFjZSwgcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnN0cmluZygiKSIpLCAoXywgXzEsIGZpZWxkcywgXzIsIF8zKSA9PiB7CiAgICAgICAgICByZXR1cm4geyB0eXBlOiAiZnVuY3Rpb24iLCBmaWVsZHMgfTsKICAgICAgfSksCiAgICAgIC8vIFRoZSBwcmVjZWRlbmNlIGhpZXJhcmNoeSBvZiBvcGVyYXRvcnMgLSBtdWx0aXBseS9kaXZpZGUsIGFkZC9zdWJ0cmFjdCwgY29tcGFyZSwgYW5kIHRoZW4gYm9vbGVhbiBvcGVyYXRpb25zLgogICAgICBiaW5hcnlNdWxEaXZGaWVsZDogcSA9PiBjcmVhdGVCaW5hcnlQYXJzZXIocS5pbmRleEZpZWxkLCBxLmJpbmFyeU11bERpdiwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5UGx1c01pbnVzRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5TXVsRGl2RmllbGQsIHEuYmluYXJ5UGx1c01pbnVzLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlDb21wYXJlRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5UGx1c01pbnVzRmllbGQsIHEuYmluYXJ5Q29tcGFyZU9wLCBGaWVsZHMuYmluYXJ5T3ApLAogICAgICBiaW5hcnlCb29sZWFuRmllbGQ6IHEgPT4gY3JlYXRlQmluYXJ5UGFyc2VyKHEuYmluYXJ5Q29tcGFyZUZpZWxkLCBxLmJpbmFyeUJvb2xlYW5PcCwgRmllbGRzLmJpbmFyeU9wKSwKICAgICAgYmluYXJ5T3BGaWVsZDogcSA9PiBxLmJpbmFyeUJvb2xlYW5GaWVsZCwKICAgICAgZmllbGQ6IHEgPT4gcS5iaW5hcnlPcEZpZWxkLAogIH0pOwoKICAvKiogUGFyc2UgaW5saW5lIGZpZWxkcyBhbmQgb3RoZXIgZW1iZWRkZWQgbWV0YWRhdGEgaW4gYSBsaW5lLiAqLwogIC8qKiBUaGUgd3JhcHBlciBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGFuIGlubGluZSBmaWVsZC4gKi8KICBjb25zdCBJTkxJTkVfRklFTERfV1JBUFBFUlMgPSBPYmplY3QuZnJlZXplKHsKICAgICAgIlsiOiAiXSIsCiAgICAgICIoIjogIikiLAogIH0pOwogIC8qKgogICAqIEZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIGJyYWNrZXQgdGhhdCBvY2N1cnMgYXQgb3IgYWZ0ZXIgYHN0YXJ0YCwgcmVzcGVjdGluZyBuZXN0aW5nIGFuZCBlc2NhcGVzLiBJZiBmb3VuZCwKICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBjb250YWluZWQgd2l0aGluIGFuZCB0aGUgc3RyaW5nIGluZGV4IGFmdGVyIHRoZSBlbmQgb2YgdGhlIHZhbHVlLgogICAqLwogIGZ1bmN0aW9uIGZpbmRDbG9zaW5nKGxpbmUsIHN0YXJ0LCBvcGVuLCBjbG9zZSkgewogICAgICBsZXQgbmVzdGluZyA9IDA7CiAgICAgIGxldCBlc2NhcGVkID0gZmFsc2U7CiAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgbGluZS5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgIGxldCBjaGFyID0gbGluZS5jaGFyQXQoaW5kZXgpOwogICAgICAgICAgLy8gQWxsb3dzIGZvciBkb3VibGUgZXNjYXBlcyBsaWtlICdcXCcgdG8gYmUgcmVuZGVyZWQgbm9ybWFsbHkuCiAgICAgICAgICBpZiAoY2hhciA9PSAiXFwiKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgLy8gSWYgZXNjYXBlZCwgaWdub3JlIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgY29tcHV0aW5nIG5lc3RpbmcsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpdCBpcy4KICAgICAgICAgIGlmIChlc2NhcGVkKSB7CiAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGNoYXIgPT0gb3BlbikKICAgICAgICAgICAgICBuZXN0aW5nKys7CiAgICAgICAgICBlbHNlIGlmIChjaGFyID09IGNsb3NlKQogICAgICAgICAgICAgIG5lc3RpbmctLTsKICAgICAgICAgIC8vIE9ubHkgb2NjdXJzIGlmIHdlIGFyZSBvbiBhIGNsb3NlIGNoYXJhY3RlciBhbmQgdHJoZXJlIGlzIG5vIG1vcmUgbmVzdGluZy4KICAgICAgICAgIGlmIChuZXN0aW5nIDwgMCkKICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbGluZS5zdWJzdHJpbmcoc3RhcnQsIGluZGV4KS50cmltKCksIGVuZEluZGV4OiBpbmRleCArIDEgfTsKICAgICAgICAgIGVzY2FwZWQgPSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KICAvKiogRmluZCB0aGUgJzo6JyBzZXBhcmF0b3IgaW4gYW4gaW5saW5lIGZpZWxkLiAqLwogIGZ1bmN0aW9uIGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQpIHsKICAgICAgbGV0IHNlcCA9IGxpbmUuaW5kZXhPZigiOjoiLCBzdGFydCk7CiAgICAgIGlmIChzZXAgPCAwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsga2V5OiBsaW5lLnN1YnN0cmluZyhzdGFydCwgc2VwKS50cmltKCksIHZhbHVlSW5kZXg6IHNlcCArIDIgfTsKICB9CiAgLyoqIFRyeSB0byBjb21wbGV0ZWx5IHBhcnNlIGFuIGlubGluZSBmaWVsZCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uIEFzc3VlbXMgYHN0YXJ0YCBpcyBvbiBhIHdyYXBwaW5nIGNoYXJhY3Rlci4gKi8KICBmdW5jdGlvbiBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBzdGFydCkgewogICAgICBsZXQgb3BlbiA9IGxpbmUuY2hhckF0KHN0YXJ0KTsKICAgICAgbGV0IGtleSA9IGZpbmRTZXBhcmF0b3IobGluZSwgc3RhcnQgKyAxKTsKICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gRmFpbCB0aGUgbWF0Y2ggaWYgd2UgZmluZCBhbnkgc2VwYXJhdG9yIGNoYXJhY3RlcnMgKG5vdCBhbGxvd2VkIGluIGtleXMpLgogICAgICBmb3IgKGxldCBzZXAgb2YgT2JqZWN0LmtleXMoSU5MSU5FX0ZJRUxEX1dSQVBQRVJTKS5jb25jYXQoT2JqZWN0LnZhbHVlcyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSkgewogICAgICAgICAgaWYgKGtleS5rZXkuaW5jbHVkZXMoc2VwKSkKICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICB9CiAgICAgIGxldCB2YWx1ZSA9IGZpbmRDbG9zaW5nKGxpbmUsIGtleS52YWx1ZUluZGV4LCBvcGVuLCBJTkxJTkVfRklFTERfV1JBUFBFUlNbb3Blbl0pOwogICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIHJldHVybiB7CiAgICAgICAgICBrZXk6IGtleS5rZXksCiAgICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsCiAgICAgICAgICBzdGFydDogc3RhcnQsCiAgICAgICAgICBzdGFydFZhbHVlOiBrZXkudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdmFsdWUuZW5kSW5kZXgsCiAgICAgICAgICB3cmFwcGluZzogb3BlbiwKICAgICAgfTsKICB9CiAgLyoqIFBhcnNlIGEgdGV4dHVhbCBpbmxpbmUgZmllbGQgdmFsdWUgaW50byBzb21ldGhpbmcgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICBmdW5jdGlvbiBwYXJzZUlubGluZVZhbHVlKHZhbHVlKSB7CiAgICAgIC8vIEVtcHR5IGlubGluZSB2YWx1ZXMgKGkuZS4sIG5vIHRleHQpIHNob3VsZCBtYXAgdG8gbnVsbCB0byBtYXRjaCBsb25nLXRlcm0gRGF0YXZpZXcgc2VtYW50aWNzLgogICAgICAvLyBOdWxsIGlzIGFsc28gYSBtb3JlIHVuaXZlcnNhbCB0eXBlIHRvIGRlYWwgd2l0aCB0aGFuIHN0cmluZ3MsIHNpbmNlIGFsbCBmdW5jdGlvbnMgYWNjZXB0IG51bGxzLgogICAgICBpZiAodmFsdWUudHJpbSgpID09ICIiKQogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIC8vIFRoZSBzdHJpcHBlZCBsaXRlcmFsIGZpZWxkIHBhcnNlciB1bmRlcnN0YW5kcyBhbGwgb2YgdGhlIG5vbi1hcnJheS9ub24tb2JqZWN0IGZpZWxkcyBhbmQgY2FuIHBhcnNlIHRoZW0gZm9yIHVzLgogICAgICAvLyBJbmxpbmUgZmllbGQgb2JqZWN0cyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQ7IGlubGluZSBhcnJheSBvYmplY3RzIGhhdmUgdG8gYmUgaGFuZGxlZCBieSB0aGUgcGFyc2VyCiAgICAgIC8vIHNlcGFyYXRlbHkuCiAgICAgIGxldCBpbmxpbmUgPSBFWFBSRVNTSU9OLmlubGluZUZpZWxkLnBhcnNlKHZhbHVlKTsKICAgICAgaWYgKGlubGluZS5zdGF0dXMpCiAgICAgICAgICByZXR1cm4gaW5saW5lLnZhbHVlOwogICAgICBlbHNlCiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgfQogIC8qKiBFeHRyYWN0cyBpbmxpbmUgZmllbGRzIG9mIHRoZSBmb3JtICdba2V5OjogdmFsdWVdJyBmcm9tIGEgbGluZSBvZiB0ZXh0LiBUaGlzIGlzIGRvbmUgaW4gYSByZWxhdGl2ZWx5CiAgICogInJvYnVzdCIgd2F5IHRvIGF2b2lkIGZhaWxpbmcgZHVlIHRvIGJhZCBuZXN0aW5nIG9yIG90aGVyIGludGVyZmVyaW5nIE1hcmtkb3duIHN5bWJvbHM6CiAgICoKICAgKiAtIExvb2sgZm9yIGFueSB3cmFwcGVycyAoJ1snIGFuZCAnKCcpIGluIHRoZSBsaW5lLCB0cnlpbmcgdG8gcGFyc2Ugd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgYXMgYW4gaW5saW5lIGtleTo6LgogICAqIC0gSWYgc3VjY2Vzc2Z1bCwgc2NhbiB1bnRpbCB5b3UgZmluZCBhIG1hdGNoaW5nIGVuZCBicmFja2V0LCBhbmQgcGFyc2Ugd2hhdGV2ZXIgcmVtYWlucyBhcyBhbiBpbmxpbmUgdmFsdWUuCiAgICovCiAgZnVuY3Rpb24gZXh0cmFjdElubGluZUZpZWxkcyhsaW5lLCBpbmNsdWRlVGFza0ZpZWxkcyA9IGZhbHNlKSB7CiAgICAgIGxldCBmaWVsZHMgPSBbXTsKICAgICAgZm9yIChsZXQgd3JhcHBlciBvZiBPYmplY3Qua2V5cyhJTkxJTkVfRklFTERfV1JBUFBFUlMpKSB7CiAgICAgICAgICBsZXQgZm91bmRJbmRleCA9IGxpbmUuaW5kZXhPZih3cmFwcGVyKTsKICAgICAgICAgIHdoaWxlIChmb3VuZEluZGV4ID49IDApIHsKICAgICAgICAgICAgICBsZXQgcGFyc2VkRmllbGQgPSBmaW5kU3BlY2lmaWNJbmxpbmVGaWVsZChsaW5lLCBmb3VuZEluZGV4KTsKICAgICAgICAgICAgICBpZiAoIXBhcnNlZEZpZWxkKSB7CiAgICAgICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgZm91bmRJbmRleCArIDEpOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZmllbGRzLnB1c2gocGFyc2VkRmllbGQpOwogICAgICAgICAgICAgIGZvdW5kSW5kZXggPSBsaW5lLmluZGV4T2Yod3JhcHBlciwgcGFyc2VkRmllbGQuZW5kKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVRhc2tGaWVsZHMpCiAgICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGV4dHJhY3RTcGVjaWFsVGFza0ZpZWxkcyhsaW5lKSk7CiAgICAgIGZpZWxkcy5zb3J0KChhLCBiKSA9PiBhLnN0YXJ0IC0gYi5zdGFydCk7CiAgICAgIGxldCBmaWx0ZXJlZEZpZWxkcyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGkgPT0gMCB8fCBmaWx0ZXJlZEZpZWxkc1tmaWx0ZXJlZEZpZWxkcy5sZW5ndGggLSAxXS5lbmQgPCBmaWVsZHNbaV0uc3RhcnQpIHsKICAgICAgICAgICAgICBmaWx0ZXJlZEZpZWxkcy5wdXNoKGZpZWxkc1tpXSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGZpbHRlcmVkRmllbGRzOwogIH0KICAvKiogVmFsaWRhdGVzIHRoYXQgYSByYXcgZmllbGQgbmFtZSBoYXMgYSB2YWxpZCBmb3JtLiAqLwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSVCA9IHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5hbHQocGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cChuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgInUiKSksIHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1swLTlccHtMZXR0ZXJ9XHdcc18vLV0rL3UpKQogICAgICAubWFueSgpCiAgICAgIC5tYXAocGFydHMgPT4gcGFydHMuam9pbigiIikpOwogIGNvbnN0IEZVTExfTElORV9LRVlfUEFSU0VSID0gcGFyc2ltbW9uX3VtZF9taW5FeHBvcnRzLnJlZ2V4cCgvW14wLTlcd1xwe0xldHRlcn1dKi91KQogICAgICAudGhlbihGVUxMX0xJTkVfS0VZX1BBUlQpCiAgICAgIC5za2lwKHBhcnNpbW1vbl91bWRfbWluRXhwb3J0cy5yZWdleHAoL1tfXCp+YF0qL3UpKTsKICAvKiogQXR0ZW1wdCB0byBleHRyYWN0IGEgZnVsbC1saW5lIGZpZWxkIChLZXk6OiBWYWx1ZSBjb25zdW1pbmcgdGhlIGVudGlyZSBjb250ZW50IGxpbmUpLiAqLwogIGZ1bmN0aW9uIGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHQpIHsKICAgICAgbGV0IHNlcCA9IGZpbmRTZXBhcmF0b3IodGV4dCwgMCk7CiAgICAgIGlmICghc2VwKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgLy8gV2UgbmVlZCB0byBwb3N0LXByb2Nlc3MgdGhlIGtleSB0byBkcm9wIHVubmVjZXNzYXJ5IG9wZW5pbmcgYW5ub3RhdGlvbnMgYXMgd2VsbCBhcwogICAgICAvLyBkcm9wIHN1cnJvdW5kaW5nIE1hcmtkb3duLgogICAgICBsZXQgcmVhbEtleSA9IEZVTExfTElORV9LRVlfUEFSU0VSLnBhcnNlKHNlcC5rZXkpOwogICAgICBpZiAoIXJlYWxLZXkuc3RhdHVzKQogICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgcmV0dXJuIHsKICAgICAgICAgIGtleTogcmVhbEtleS52YWx1ZSwKICAgICAgICAgIHZhbHVlOiB0ZXh0LnN1YnN0cmluZyhzZXAudmFsdWVJbmRleCkudHJpbSgpLAogICAgICAgICAgc3RhcnQ6IDAsCiAgICAgICAgICBzdGFydFZhbHVlOiBzZXAudmFsdWVJbmRleCwKICAgICAgICAgIGVuZDogdGV4dC5sZW5ndGgsCiAgICAgIH07CiAgfQogIGNvbnN0IENSRUFURURfREFURV9SRUdFWCA9IC9cdXsyNzk1fVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBEVUVfREFURV9SRUdFWCA9IC8oPzpcdXsxRjRDNX18XHV7MUY0QzZ9fFx1ezFGNUQzfVx1e0ZFMEZ9PylccyooXGR7NH0tXGR7Mn0tXGR7Mn0pL3U7CiAgY29uc3QgRE9ORV9EQVRFX1JFR0VYID0gL1x1ezI3MDV9XHMqKFxkezR9LVxkezJ9LVxkezJ9KS91OwogIGNvbnN0IFNDSEVEVUxFRF9EQVRFX1JFR0VYID0gL1tcdXsyM0YzfVx1ezIzMUJ9XVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBTVEFSVF9EQVRFX1JFR0VYID0gL1x1ezFGNkVCfVxzKihcZHs0fS1cZHsyfS1cZHsyfSkvdTsKICBjb25zdCBFTU9KSV9SRUdFWEVTID0gWwogICAgICB7IHJlZ2V4OiBDUkVBVEVEX0RBVEVfUkVHRVgsIGtleTogImNyZWF0ZWQiIH0sCiAgICAgIHsgcmVnZXg6IFNUQVJUX0RBVEVfUkVHRVgsIGtleTogInN0YXJ0IiB9LAogICAgICB7IHJlZ2V4OiBTQ0hFRFVMRURfREFURV9SRUdFWCwga2V5OiAic2NoZWR1bGVkIiB9LAogICAgICB7IHJlZ2V4OiBEVUVfREFURV9SRUdFWCwga2V5OiAiZHVlIiB9LAogICAgICB7IHJlZ2V4OiBET05FX0RBVEVfUkVHRVgsIGtleTogImNvbXBsZXRpb24iIH0sCiAgXTsKICAvKiogUGFyc2Ugc3BlY2lhbCBjb21wbGV0ZWQvZHVlL2RvbmUgdGFzayBmaWVsZHMgd2hpY2ggYXJlIG1hcmtlZCB2aWEgZW1vamkuICovCiAgZnVuY3Rpb24gZXh0cmFjdFNwZWNpYWxUYXNrRmllbGRzKGxpbmUpIHsKICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKICAgICAgZm9yIChsZXQgeyByZWdleCwga2V5IH0gb2YgRU1PSklfUkVHRVhFUykgewogICAgICAgICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGxpbmUpOwogICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIHJlc3VsdHMucHVzaCh7CiAgICAgICAgICAgICAga2V5LAogICAgICAgICAgICAgIHZhbHVlOiBtYXRjaFsxXSwKICAgICAgICAgICAgICBzdGFydDogbWF0Y2guaW5kZXgsCiAgICAgICAgICAgICAgc3RhcnRWYWx1ZTogbWF0Y2guaW5kZXggKyAxLAogICAgICAgICAgICAgIGVuZDogbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgsCiAgICAgICAgICAgICAgd3JhcHBpbmc6ICJlbW9qaS1zaG9ydGhhbmQiLAogICAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICAvKiogQWxsIGV4dHJhY3RlZCBtYXJrZG93biBmaWxlIG1ldGFkYXRhIG9idGFpbmVkIGZyb20gYSBmaWxlLiAqLwogIGNsYXNzIFBhZ2VNZXRhZGF0YSB7CiAgICAgIC8qKiBUaGUgcGF0aCB0aGlzIGZpbGUgZXhpc3RzIGF0LiAqLwogICAgICBwYXRoOwogICAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgZGF0ZSB0aGlzIHBhZ2Ugd2FzIGNyZWF0ZWQuICovCiAgICAgIGN0aW1lOwogICAgICAvKiogT2JzaWRpYW4tcHJvdmlkZWQgZGF0ZSB0aGlzIHBhZ2Ugd2FzIG1vZGlmaWVkLiAqLwogICAgICBtdGltZTsKICAgICAgLyoqIE9ic2lkaWFuLXByb3ZpZGVkIHNpemUgb2YgdGhpcyBwYWdlIGluIGJ5dGVzLiAqLwogICAgICBzaXplOwogICAgICAvKiogVGhlIGRheSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYWdlLCBpZiByZWxldmFudC4gKi8KICAgICAgZGF5OwogICAgICAvKiogVGhlIGZpcnN0IEgxL0gyIGhlYWRlciBpbiB0aGUgZmlsZS4gTWF5IG5vdCBleGlzdC4gKi8KICAgICAgdGl0bGU7CiAgICAgIC8qKiBBbGwgb2YgdGhlIGZpZWxkcyBjb250YWluZWQgaW4gdGhpcyBtYXJrZG93biBmaWxlIC0gYm90aCBmcm9udG1hdHRlciBBTkQgaW4tZmlsZSBsaW5rcy4gKi8KICAgICAgZmllbGRzOwogICAgICAvKiogQWxsIG9mIHRoZSBleGFjdCB0YWdzIChwcmVmaXhlZCB3aXRoICcjJykgaW4gdGhpcyBmaWxlIG92ZXJhbGwuICovCiAgICAgIHRhZ3M7CiAgICAgIC8qKiBBbGwgb2YgdGhlIGFsaWFzZXMgZGVmaW5lZCBmb3IgdGhpcyBmaWxlLiAqLwogICAgICBhbGlhc2VzOwogICAgICAvKiogQWxsIE9VVEdPSU5HIGxpbmtzIChpbmNsdWRpbmcgZW1iZWRzLCBoZWFkZXIgKyBibG9jayBsaW5rcykgaW4gdGhpcyBmaWxlLiAqLwogICAgICBsaW5rczsKICAgICAgLyoqIEFsbCBsaXN0IGl0ZW1zIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBwYWdlLiBGaWx0ZXIgZm9yIHRhc2tzIHRvIGdldCBqdXN0IHRhc2tzLiAqLwogICAgICBsaXN0czsKICAgICAgLyoqIFRoZSByYXcgZnJvbnRtYXR0ZXIgZm9yIHRoaXMgZG9jdW1lbnQuICovCiAgICAgIGZyb250bWF0dGVyOwogICAgICBjb25zdHJ1Y3RvcihwYXRoLCBpbml0KSB7CiAgICAgICAgICB0aGlzLnBhdGggPSBwYXRoOwogICAgICAgICAgdGhpcy5maWVsZHMgPSBuZXcgTWFwKCk7CiAgICAgICAgICB0aGlzLmZyb250bWF0dGVyID0ge307CiAgICAgICAgICB0aGlzLnRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmFsaWFzZXMgPSBuZXcgU2V0KCk7CiAgICAgICAgICB0aGlzLmxpbmtzID0gW107CiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGluaXQpOwogICAgICAgICAgdGhpcy5saXN0cyA9ICh0aGlzLmxpc3RzIHx8IFtdKS5tYXAobCA9PiBuZXcgTGlzdEl0ZW0obCkpOwogICAgICB9CiAgICAgIC8qKiBDYW5vbmljYWxpemUgcmF3IGxpbmtzIGFuZCBvdGhlciBkYXRhIGluIHBhcnRpYWwgZGF0YSB3aXRoIG5vcm1hbGl6ZXJzLCByZXR1cm5pbmcgYSBjb21wbGV0ZWQgb2JqZWN0LiAqLwogICAgICBzdGF0aWMgY2Fub25pY2FsaXplKGRhdGEsIGxpbmtOb3JtYWxpemVyKSB7CiAgICAgICAgICAvLyBNdXRhdGUgdGhlIGRhdGEgZm9yIG5vdywgd2hpY2ggaXMgcHJvYmFibHkgYSBiYWQgaWRlYSBidXQuLi4gYWxsIHdlbGwuCiAgICAgICAgICBpZiAoZGF0YS5mcm9udG1hdHRlcikgewogICAgICAgICAgICAgIGRhdGEuZnJvbnRtYXR0ZXIgPSBWYWx1ZXMubWFwTGVhdmVzKGRhdGEuZnJvbnRtYXR0ZXIsIHQgPT4gVmFsdWVzLmlzTGluayh0KSA/IGxpbmtOb3JtYWxpemVyKHQpIDogdCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZGF0YS5maWVsZHMpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgZGF0YS5maWVsZHMuZW50cmllcygpKSB7CiAgICAgICAgICAgICAgICAgIGRhdGEuZmllbGRzLnNldChrZXksIFZhbHVlcy5tYXBMZWF2ZXModmFsdWUsIHQgPT4gKFZhbHVlcy5pc0xpbmsodCkgPyBsaW5rTm9ybWFsaXplcih0KSA6IHQpKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKGRhdGEubGlzdHMpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGRhdGEubGlzdHMpIHsKICAgICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGl0ZW0uZmllbGRzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgICAgICAgICAgaXRlbS5maWVsZHMuc2V0KGtleSwgdmFsdWUubWFwKHggPT4gVmFsdWVzLm1hcExlYXZlcyh4LCB0ID0+IChWYWx1ZXMuaXNMaW5rKHQpID8gbGlua05vcm1hbGl6ZXIodCkgOiB0KSkpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChkYXRhLmxpbmtzKSB7CiAgICAgICAgICAgICAgZGF0YS5saW5rcyA9IGRhdGEubGlua3MubWFwKGwgPT4gbGlua05vcm1hbGl6ZXIobCkpOwogICAgICAgICAgfQogICAgICAgICAgLy8gVGhpcyBpcyBwcmV0dHkgdWdseSwgYnV0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIG5vcm1hbGl6ZSBvbiB0aGUgd29ya2VyIHRocmVhZCB0aGF0IGRvZXMgcGFyc2luZy4KICAgICAgICAgIC8vIFRoZSBiZXN0IHdheSB0byBpbXByb3ZlIHRoaXMgaXMgdG8gaW5zdGVhZCBqdXN0IGNhbm9uaWNhbGl6ZSB0aGUgZW50aXJlIGRhdGEgb2JqZWN0OyBJIGNhbiB0cnkgdG8KICAgICAgICAgIC8vIG9wdGltaXplIGBWYWx1ZXMubWFwTGVhdmVzYCB0byBvbmx5IG11dGF0ZSBpZiBpdCBhY3R1YWxseSBjaGFuZ2VzIHRoaW5ncy4KICAgICAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKGRhdGEucGF0aCwgZGF0YSk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBuYW1lIChiYXNlZCBvbiBwYXRoKSBvZiB0aGlzIGZpbGUuICovCiAgICAgIG5hbWUoKSB7CiAgICAgICAgICByZXR1cm4gZ2V0RmlsZVRpdGxlKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBjb250YWluaW5nIGZvbGRlciAoYmFzZWQgb24gcGF0aCkgb2YgdGhpcyBmaWxlLiAqLwogICAgICBmb2xkZXIoKSB7CiAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50Rm9sZGVyKHRoaXMucGF0aCk7CiAgICAgIH0KICAgICAgLyoqIFRoZSBleHRlbnNpb24gb2YgdGhpcyBmaWxlIChsaWtlbHkgJ21kJykuICovCiAgICAgIGV4dGVuc2lvbigpIHsKICAgICAgICAgIHJldHVybiBnZXRFeHRlbnNpb24odGhpcy5wYXRoKTsKICAgICAgfQogICAgICAvKiogUmV0dXJuIGEgc2V0IG9mIHRhZ3MgQU5EIGFsbCBvZiB0aGVpciBwYXJlbnQgdGFncyAoc28gI2hlbGxvL3llcyB3b3VsZCBiZWNvbWUgI2hlbGxvLCAjaGVsbG8veWVzKS4gKi8KICAgICAgZnVsbFRhZ3MoKSB7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICAgICAgZm9yIChsZXQgdGFnIG9mIHRoaXMudGFncykgewogICAgICAgICAgICAgIGZvciAobGV0IHN1YnRhZyBvZiBleHRyYWN0U3VidGFncyh0YWcpKQogICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN1YnRhZyk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICAgIC8qKiBDb252ZXJ0IGFsbCBsaW5rcyBpbiB0aGlzIGZpbGUgdG8gZmlsZSBsaW5rcy4gKi8KICAgICAgZmlsZUxpbmtzKCkgewogICAgICAgICAgLy8gV2Ugd2FudCB0byBtYWtlIHRoZW0gZGlzdGluY3QsIGJ1dCB3aGVyZSBsaW5rcyBhcmUgbm90IHJhdyBsaW5rcyB3ZQogICAgICAgICAgLy8gbm93IGtlZXAgdGhlIGFkZGl0aW9uYWwgbWV0YWRhdGEuCiAgICAgICAgICBsZXQgZGlzdGluY3RMaW5rcyA9IG5ldyBTZXQodGhpcy5saW5rcyk7CiAgICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShkaXN0aW5jdExpbmtzKTsKICAgICAgfQogICAgICAvKiogTWFwIHRoaXMgbWV0YWRhdGEgdG8gYSBmdWxsIG9iamVjdDsgdXNlcyB0aGUgaW5kZXggZm9yIGFkZGl0aW9uYWwgZGF0YSBsb29rdXBzLiAgKi8KICAgICAgc2VyaWFsaXplKGluZGV4LCBjYWNoZSkgewogICAgICAgICAgLy8gQ29udmVydCBsaXN0IGl0ZW1zIHZpYSB0aGUgY2Fub25pY2FsaXphdGlvbiBjYWNoZS4KICAgICAgICAgIGxldCByZWFsQ2FjaGUgPSBjYWNoZSA/PyBuZXcgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSh0aGlzLmxpc3RzKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgZmlsZTogewogICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLnBhdGgsCiAgICAgICAgICAgICAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIoKSwKICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lKCksCiAgICAgICAgICAgICAgICAgIGxpbms6IExpbmsuZmlsZSh0aGlzLnBhdGgpLAogICAgICAgICAgICAgICAgICBvdXRsaW5rczogdGhpcy5maWxlTGlua3MoKSwKICAgICAgICAgICAgICAgICAgaW5saW5rczogQXJyYXkuZnJvbShpbmRleC5saW5rcy5nZXRJbnZlcnNlKHRoaXMucGF0aCkpLm1hcChsID0+IExpbmsuZmlsZShsKSksCiAgICAgICAgICAgICAgICAgIGV0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgICAgIHRhZ3M6IEFycmF5LmZyb20odGhpcy5mdWxsVGFncygpKSwKICAgICAgICAgICAgICAgICAgYWxpYXNlczogQXJyYXkuZnJvbSh0aGlzLmFsaWFzZXMpLAogICAgICAgICAgICAgICAgICBsaXN0czogdGhpcy5saXN0cy5tYXAobCA9PiByZWFsQ2FjaGUuZ2V0KGwubGluZSkpLAogICAgICAgICAgICAgICAgICB0YXNrczogdGhpcy5saXN0cy5maWx0ZXIobCA9PiAhIWwudGFzaykubWFwKGwgPT4gcmVhbENhY2hlLmdldChsLmxpbmUpKSwKICAgICAgICAgICAgICAgICAgY3RpbWU6IHRoaXMuY3RpbWUsCiAgICAgICAgICAgICAgICAgIGNkYXk6IHN0cmlwVGltZSh0aGlzLmN0aW1lKSwKICAgICAgICAgICAgICAgICAgbXRpbWU6IHRoaXMubXRpbWUsCiAgICAgICAgICAgICAgICAgIG1kYXk6IHN0cmlwVGltZSh0aGlzLm10aW1lKSwKICAgICAgICAgICAgICAgICAgc2l6ZTogdGhpcy5zaXplLAogICAgICAgICAgICAgICAgICBzdGFycmVkOiBpbmRleC5zdGFycmVkLnN0YXJyZWQodGhpcy5wYXRoKSwKICAgICAgICAgICAgICAgICAgZnJvbnRtYXR0ZXI6IFZhbHVlcy5kZWVwQ29weSh0aGlzLmZyb250bWF0dGVyKSwKICAgICAgICAgICAgICAgICAgZXh0OiB0aGlzLmV4dGVuc2lvbigpLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICB9OwogICAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IGRheSBpZiBwcmVzZW50LgogICAgICAgICAgaWYgKHRoaXMuZGF5KQogICAgICAgICAgICAgIHJlc3VsdC5maWxlLmRheSA9IHRoaXMuZGF5OwogICAgICAgICAgLy8gVGhlbiBhcHBlbmQgdGhlIGNvbXB1dGVkIGZpZWxkcy4KICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiB0aGlzLmZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgICBpZiAoa2V5IGluIHJlc3VsdCkKICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIERvbid0IGFsbG93IGZpZWxkcyB0byBvdmVycmlkZSBleGlzdGluZyBrZXlzLgogICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8qKiBBIGxpc3QgaXRlbSBpbnNpZGUgb2YgYSBsaXN0LiAqLwogIGNsYXNzIExpc3RJdGVtIHsKICAgICAgLyoqIFRoZSBzeW1ib2wgKCcqJywgJy0nLCAnMS4nKSB1c2VkIHRvIGRlZmluZSB0aGlzIGxpc3QgaXRlbS4gKi8KICAgICAgc3ltYm9sOwogICAgICAvKiogQSBsaW5rIHdoaWNoIHBvaW50cyB0byB0aGlzIHRhc2ssIG9yIHRvIHRoZSBjbG9zZXN0IGJsb2NrIHRoYXQgdGhpcyB0YXNrIGlzIGNvbnRhaW5lZCBpbi4gKi8KICAgICAgbGluazsKICAgICAgLyoqIEEgbGluayB0byB0aGUgc2VjdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgbGlzdCBlbGVtZW50OyBjb3VsZCBiZSBhIGZpbGUgaWYgdGhpcyBpcyBub3QgaW4gYSBzZWN0aW9uLiAqLwogICAgICBzZWN0aW9uOwogICAgICAvKiogVGhlIHRleHQgb2YgdGhpcyBsaXN0IGl0ZW0uIFRoaXMgbWF5IGJlIG11bHRpcGxlIGxpbmVzIG9mIG1hcmtkb3duLiAqLwogICAgICB0ZXh0OwogICAgICAvKiogVGhlIGxpbmUgdGhhdCB0aGlzIGxpc3QgaXRlbSBzdGFydHMgb24gaW4gdGhlIGZpbGUuICovCiAgICAgIGxpbmU7CiAgICAgIC8qKiBUaGUgbnVtYmVyIG9mIGxpbmVzIHRoYXQgZGVmaW5lIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICBsaW5lQ291bnQ7CiAgICAgIC8qKiBUaGUgbGluZSBudW1iZXIgZm9yIHRoZSBmaXJzdCBsaXN0IGl0ZW0gaW4gdGhlIGxpc3QgdGhpcyBpdGVtIGJlbG9uZ3MgdG8uICovCiAgICAgIGxpc3Q7CiAgICAgIC8qKiBBbnkgbGlua3MgY29udGFpbmVkIHdpdGhpbiB0aGlzIGxpc3QgaXRlbS4gKi8KICAgICAgbGlua3M7CiAgICAgIC8qKiBUaGUgdGFncyBjb250YWluZWQgd2l0aGluIHRoaXMgbGlzdCBpdGVtLiAqLwogICAgICB0YWdzOwogICAgICAvKiogVGhlIHJhdyBPYnNpZGlhbi1wcm92aWRlZCBwb3NpdGlvbiBmb3Igd2hlcmUgdGhpcyB0YXNrIGlzLiAqLwogICAgICBwb3NpdGlvbjsKICAgICAgLyoqIFRoZSBsaW5lIG51bWJlciBvZiB0aGUgcGFyZW50IGxpc3QgaXRlbSwgaWYgcHJlc2VudDsgaWYgdGhpcyBpcyB1bmRlZmluZWQsIHRoaXMgaXMgYSByb290IGl0ZW0uICovCiAgICAgIHBhcmVudDsKICAgICAgLyoqIFRoZSBsaW5lIG51bWJlcnMgb2YgY2hpbGRyZW4gb2YgdGhpcyBsaXN0IGl0ZW0uICovCiAgICAgIGNoaWxkcmVuOwogICAgICAvKiogVGhlIGJsb2NrIElEIGZvciB0aGlzIGl0ZW0sIGlmIG9uZSBpcyBwcmVzZW50LiAqLwogICAgICBibG9ja0lkOwogICAgICAvKiogQW55IGZpZWxkcyBkZWZpbmVkIGluIHRoaXMgbGlzdCBpdGVtLiBGb3IgdGFza3MsIHRoaXMgaW5jbHVkZXMgZmllbGRzIHVuZGVybmVhdGggdGhlIHRhc2suICovCiAgICAgIGZpZWxkczsKICAgICAgdGFzazsKICAgICAgY29uc3RydWN0b3IoaW5pdCkgewogICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBpbml0KTsKICAgICAgICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMgfHwgbmV3IE1hcCgpOwogICAgICAgICAgdGhpcy50YWdzID0gdGhpcy50YWdzIHx8IG5ldyBTZXQoKTsKICAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuIHx8IFtdOwogICAgICAgICAgdGhpcy5saW5rcyA9IHRoaXMubGlua3MgfHwgW107CiAgICAgIH0KICAgICAgaWQoKSB7CiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5maWxlKCkucGF0aH0tJHt0aGlzLmxpbmV9YDsKICAgICAgfQogICAgICBmaWxlKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMubGluay50b0ZpbGUoKTsKICAgICAgfQogICAgICBtYXJrZG93bigpIHsKICAgICAgICAgIGlmICh0aGlzLnRhc2spCiAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc3ltYm9sfSBbJHt0aGlzLnRhc2suY29tcGxldGVkID8gIngiIDogIiAifV0gJHt0aGlzLnRleHR9YDsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zeW1ib2x9ICR7dGhpcy50ZXh0fWA7CiAgICAgIH0KICAgICAgY3JlYXRlZCgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJjcmVhdGVkIikgPz8gdGhpcy5maWVsZHMuZ2V0KCJjdGltZSIpID8/IHRoaXMuZmllbGRzLmdldCgiY2RheSIpKT8uWzBdOwogICAgICB9CiAgICAgIGR1ZSgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJkdWUiKSA/PyB0aGlzLmZpZWxkcy5nZXQoImR1ZXRpbWUiKSA/PyB0aGlzLmZpZWxkcy5nZXQoImR1ZWRheSIpKT8uWzBdOwogICAgICB9CiAgICAgIGNvbXBsZXRlZCgpIHsKICAgICAgICAgIHJldHVybiAodGhpcy5maWVsZHMuZ2V0KCJjb21wbGV0ZWQiKSA/PwogICAgICAgICAgICAgIHRoaXMuZmllbGRzLmdldCgiY29tcGxldGlvbiIpID8/CiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KCJjb21wdGltZSIpID8/CiAgICAgICAgICAgICAgdGhpcy5maWVsZHMuZ2V0KCJjb21wZGF5IikpPy5bMF07CiAgICAgIH0KICAgICAgc3RhcnQoKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5maWVsZHMuZ2V0KCJzdGFydCIpPy5bMF07CiAgICAgIH0KICAgICAgc2NoZWR1bGVkKCkgewogICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGRzLmdldCgic2NoZWR1bGVkIik/LlswXTsKICAgICAgfQogICAgICAvKiogQ3JlYXRlIGFuIEFQSS1mcmllbmRseSBjb3B5IG9mIHRoaXMgbGlzdCBpdGVtLiBEZS1kdXBsaWNhdGlvbiBpcyBkb25lIHZpYSB0aGUgcHJvdmlkZWQgY2FjaGUuICovCiAgICAgIHNlcmlhbGl6ZShjYWNoZSkgewogICAgICAgICAgLy8gTWFwIGNoaWxkcmVuIHRvIHRoZWlyIHNlcmlhbGl6ZWQvZGUtZHVwbGljYXRlZCBlcXVpdmFsZW50cyByaWdodCBhd2F5LgogICAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbi5tYXAobCA9PiBjYWNoZS5nZXQobCkpLmZpbHRlcigobCkgPT4gbCAhPT0gdW5kZWZpbmVkKTsKICAgICAgICAgIGxldCByZXN1bHQgPSB7CiAgICAgICAgICAgICAgc3ltYm9sOiB0aGlzLnN5bWJvbCwKICAgICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssCiAgICAgICAgICAgICAgc2VjdGlvbjogdGhpcy5zZWN0aW9uLAogICAgICAgICAgICAgIHRleHQ6IHRoaXMudGV4dCwKICAgICAgICAgICAgICB0YWdzOiBBcnJheS5mcm9tKHRoaXMudGFncyksCiAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogdGhpcy5saW5lQ291bnQsCiAgICAgICAgICAgICAgbGlzdDogdGhpcy5saXN0LAogICAgICAgICAgICAgIG91dGxpbmtzOiBBcnJheS5mcm9tKHRoaXMubGlua3MpLAogICAgICAgICAgICAgIHBhdGg6IHRoaXMubGluay5wYXRoLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwKICAgICAgICAgICAgICB0YXNrOiAhIXRoaXMudGFzaywKICAgICAgICAgICAgICBhbm5vdGF0ZWQ6IHRoaXMuZmllbGRzLnNpemUgPiAwLAogICAgICAgICAgICAgIHBvc2l0aW9uOiBWYWx1ZXMuZGVlcENvcHkodGhpcy5wb3NpdGlvbiksCiAgICAgICAgICAgICAgc3VidGFza3M6IGNoaWxkcmVuLAogICAgICAgICAgICAgIHJlYWw6ICEhdGhpcy50YXNrLAogICAgICAgICAgICAgIGhlYWRlcjogdGhpcy5zZWN0aW9uLCAvLyBAZGVwcmVjYXRlZCwgdXNlICdpdGVtLnNlY3Rpb24nIGluc3RlYWQuCiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHRoaXMucGFyZW50IHx8IHRoaXMucGFyZW50ID09PSAwKQogICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQgPSB0aGlzLnBhcmVudDsKICAgICAgICAgIGlmICh0aGlzLmJsb2NrSWQpCiAgICAgICAgICAgICAgcmVzdWx0LmJsb2NrSWQgPSB0aGlzLmJsb2NrSWQ7CiAgICAgICAgICBhZGRGaWVsZHModGhpcy5maWVsZHMsIHJlc3VsdCk7CiAgICAgICAgICBpZiAodGhpcy50YXNrKSB7CiAgICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9IHRoaXMudGFzay5zdGF0dXM7CiAgICAgICAgICAgICAgcmVzdWx0LmNoZWNrZWQgPSB0aGlzLnRhc2suY2hlY2tlZDsKICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGVkID0gdGhpcy50YXNrLmNvbXBsZXRlZDsKICAgICAgICAgICAgICByZXN1bHQuZnVsbHlDb21wbGV0ZWQgPSB0aGlzLnRhc2suZnVsbHlDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgbGV0IGNyZWF0ZWQgPSB0aGlzLmNyZWF0ZWQoKSwgZHVlID0gdGhpcy5kdWUoKSwgY29tcGxldGVkID0gdGhpcy5jb21wbGV0ZWQoKSwgc3RhcnQgPSB0aGlzLnN0YXJ0KCksIHNjaGVkdWxlZCA9IHRoaXMuc2NoZWR1bGVkKCk7CiAgICAgICAgICAgICAgaWYgKGNyZWF0ZWQpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5jcmVhdGVkID0gVmFsdWVzLmRlZXBDb3B5KGNyZWF0ZWQpOwogICAgICAgICAgICAgIGlmIChkdWUpCiAgICAgICAgICAgICAgICAgIHJlc3VsdC5kdWUgPSBWYWx1ZXMuZGVlcENvcHkoZHVlKTsKICAgICAgICAgICAgICBpZiAoY29tcGxldGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGlvbiA9IFZhbHVlcy5kZWVwQ29weShjb21wbGV0ZWQpOwogICAgICAgICAgICAgIGlmIChzdGFydCkKICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXJ0ID0gVmFsdWVzLmRlZXBDb3B5KHN0YXJ0KTsKICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkKQogICAgICAgICAgICAgICAgICByZXN1bHQuc2NoZWR1bGVkID0gVmFsdWVzLmRlZXBDb3B5KHNjaGVkdWxlZCk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8vIENvbnZlcnNpb24gLyBTZXJpYWxpemF0aW9uIFV0aWxpdGllcyAvLwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIC8qKiBEZS1kdXBsaWNhdGVzIGxpc3QgaXRlbXMgYWNyb3NzIHNlY3Rpb24gbWV0YWRhdGEgYW5kIHBhZ2UgbWV0YWRhdGEuICovCiAgY2xhc3MgTGlzdFNlcmlhbGl6YXRpb25DYWNoZSB7CiAgICAgIGxpc3RJdGVtczsKICAgICAgY2FjaGU7CiAgICAgIHNlZW47CiAgICAgIGNvbnN0cnVjdG9yKGxpc3RJdGVtcykgewogICAgICAgICAgdGhpcy5saXN0SXRlbXMgPSB7fTsKICAgICAgICAgIHRoaXMuY2FjaGUgPSB7fTsKICAgICAgICAgIHRoaXMuc2VlbiA9IG5ldyBTZXQoKTsKICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgbGlzdEl0ZW1zKQogICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1zW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIGdldChsaW5lbm8pIHsKICAgICAgICAgIGlmIChsaW5lbm8gaW4gdGhpcy5jYWNoZSkKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtsaW5lbm9dOwogICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWVuLmhhcyhsaW5lbm8pKSB7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coYERhdGF2aWV3OiBFbmNvdW50ZXJlZCBhIGNpcmN1bGFyIGxpc3QgKGxpbmUgbnVtYmVyICR7bGluZW5vfTsgY2hpbGRyZW4gJHt0aGlzLmxpc3RJdGVtc1tsaW5lbm9dLmNoaWxkcmVuLmpvaW4oIiwgIil9KWApOwogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnNlZW4uYWRkKGxpbmVubyk7CiAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5saXN0SXRlbXNbbGluZW5vXS5zZXJpYWxpemUodGhpcyk7CiAgICAgICAgICB0aGlzLmNhY2hlW2xpbmVub10gPSByZXN1bHQ7CiAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgfQogIGZ1bmN0aW9uIGFkZEZpZWxkcyhmaWVsZHMsIHRhcmdldCkgewogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0KQogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZXMubGVuZ3RoID09IDEgPyB2YWx1ZXNbMF0gOiB2YWx1ZXM7CiAgICAgIH0KICAgICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8qKiBDb21tb24gdXRpbGl0aWVzIGZvciBleHRyYWN0aW5nIHRhZ3MsIGxpbmtzLCBhbmQgb3RoZXIgYnVzaW5lc3MgZnJvbSBtZXRhZGF0YS4gKi8KICBjb25zdCBQT1RFTlRJQUxfVEFHX01BVENIRVIgPSAvI1teXHMsO1wuOiFcPyciYCgpXFtcXVx7XH1dKy9naXU7CiAgLyoqIEV4dHJhY3QgYWxsIHRhZ3MgZnJvbSB0aGUgZ2l2ZW4gc291cmNlIHN0cmluZy4gKi8KICBmdW5jdGlvbiBleHRyYWN0VGFncyQxKHNvdXJjZSkgewogICAgICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpOwogICAgICBsZXQgbWF0Y2hlcyA9IHNvdXJjZS5tYXRjaEFsbChQT1RFTlRJQUxfVEFHX01BVENIRVIpOwogICAgICBmb3IgKGxldCBtYXRjaCBvZiBtYXRjaGVzKSB7CiAgICAgICAgICBsZXQgcGFyc2VkID0gRVhQUkVTU0lPTi50YWcucGFyc2UobWF0Y2hbMF0pOwogICAgICAgICAgaWYgKHBhcnNlZC5zdGF0dXMpCiAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZWQudmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICAvKiogSW1wb3J0ZXIgZm9yIG1hcmtkb3duIGRvY3VtZW50cy4gKi8KICAvKiogRXh0cmFjdCBtYXJrZG93biBtZXRhZGF0YSBmcm9tIHRoZSBnaXZlbiBPYnNpZGlhbiBtYXJrZG93biBmaWxlLiAqLwogIGZ1bmN0aW9uIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ3MgPSBuZXcgU2V0KCk7CiAgICAgIGxldCBhbGlhc2VzID0gbmV3IFNldCgpOwogICAgICBsZXQgZmllbGRzID0gbmV3IE1hcCgpOwogICAgICBsZXQgbGlua3MgPSBbXTsKICAgICAgLy8gRmlsZSB0YWdzLCBpbmNsdWRpbmcgZnJvbnQtbWF0dGVyIGFuZCBpbi1maWxlIHRhZ3MuCiAgICAgIChtZXRhZGF0YS50YWdzIHx8IFtdKS5mb3JFYWNoKHQgPT4gdGFncy5hZGQodC50YWcuc3RhcnRzV2l0aCgiIyIpID8gdC50YWcgOiAiIyIgKyB0LnRhZykpOwogICAgICAvLyBGcm9udC1tYXR0ZXIgZmlsZSB0YWdzLCBhbGlhc2VzLCBBTkQgZnJvbnRtYXR0ZXIgcHJvcGVydGllcy4KICAgICAgaWYgKG1ldGFkYXRhLmZyb250bWF0dGVyKSB7CiAgICAgICAgICBmb3IgKGxldCB0YWcgb2YgZXh0cmFjdFRhZ3MobWV0YWRhdGEuZnJvbnRtYXR0ZXIpKSB7CiAgICAgICAgICAgICAgaWYgKCF0YWcuc3RhcnRzV2l0aCgiIyIpKQogICAgICAgICAgICAgICAgICB0YWcgPSAiIyIgKyB0YWc7CiAgICAgICAgICAgICAgdGFncy5hZGQodGFnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZvciAobGV0IGFsaWFzIG9mIGV4dHJhY3RBbGlhc2VzKG1ldGFkYXRhLmZyb250bWF0dGVyKSB8fCBbXSkKICAgICAgICAgICAgICBhbGlhc2VzLmFkZChhbGlhcyk7CiAgICAgICAgICBsZXQgZnJvbnRGaWVsZHMgPSBwYXJzZUZyb250bWF0dGVyKG1ldGFkYXRhLmZyb250bWF0dGVyKTsKICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmcm9udEZpZWxkcykpIHsKICAgICAgICAgICAgICBpZiAoa2V5ID09ICJwb3NpdGlvbiIpCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIGFkZElubGluZUZpZWxkKGtleSwgdmFsdWUsIGZpZWxkcyk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gQWRkIGZyb250bWF0dGVyIGxpbmtzIHRvIGxpbmtzLgogICAgICBpZiAobWV0YWRhdGEuZnJvbnRtYXR0ZXJMaW5rcykgewogICAgICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5mcm9udG1hdHRlckxpbmtzIHx8IFtdKSB7CiAgICAgICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICAvLyBMaW5rcyBpbiBtZXRhZGF0YS4KICAgICAgY29uc3QgbGlua3NCeUxpbmUgPSB7fTsKICAgICAgZm9yIChsZXQgcmF3TGluayBvZiBtZXRhZGF0YS5saW5rcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3TGluay5saW5rLCBmYWxzZSwgcmF3TGluay5kaXNwbGF5VGV4dCk7CiAgICAgICAgICBjb25zdCBsaW5lID0gcmF3TGluay5wb3NpdGlvbi5zdGFydC5saW5lOwogICAgICAgICAgbGlua3MucHVzaChsaW5rKTsKICAgICAgICAgIGlmICghKGxpbmUgaW4gbGlua3NCeUxpbmUpKQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdID0gW2xpbmtdOwogICAgICAgICAgZWxzZQogICAgICAgICAgICAgIGxpbmtzQnlMaW5lW2xpbmVdLnB1c2gobGluayk7CiAgICAgIH0KICAgICAgLy8gRW1iZWQgTGlua3MgaW4gbWV0YWRhdGEuCiAgICAgIGZvciAobGV0IHJhd0VtYmVkIG9mIG1ldGFkYXRhLmVtYmVkcyB8fCBbXSkgewogICAgICAgICAgY29uc3QgbGluayA9IExpbmsuaW5mZXIocmF3RW1iZWQubGluaywgdHJ1ZSwgcmF3RW1iZWQuZGlzcGxheVRleHQpOwogICAgICAgICAgY29uc3QgbGluZSA9IHJhd0VtYmVkLnBvc2l0aW9uLnN0YXJ0LmxpbmU7CiAgICAgICAgICBsaW5rcy5wdXNoKGxpbmspOwogICAgICAgICAgaWYgKCEobGluZSBpbiBsaW5rc0J5TGluZSkpCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0gPSBbbGlua107CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgbGlua3NCeUxpbmVbbGluZV0ucHVzaChsaW5rKTsKICAgICAgfQogICAgICAvLyBNZXJnZSBmcm9udG1hdHRlciBmaWVsZHMgd2l0aCBwYXJzZWQgZmllbGRzLgogICAgICBsZXQgbWFya2Rvd25EYXRhID0gcGFyc2VNYXJrZG93bihwYXRoLCBjb250ZW50cy5zcGxpdCgiXG4iKSwgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgbWVyZ2VGaWVsZEdyb3VwcyhmaWVsZHMsIG1hcmtkb3duRGF0YS5maWVsZHMpOwogICAgICAvLyBTdHJpcCAicG9zaXRpb24iIGZyb20gZnJvbnRtYXR0ZXIgc2luY2UgaXQgaXMgT2JzaWRpYW4gZGV0ZXJtaW5lZC4KICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSBtZXRhZGF0YS5mcm9udG1hdHRlciB8fCB7fTsKICAgICAgaWYgKGZyb250bWF0dGVyICYmICJwb3NpdGlvbiIgaW4gZnJvbnRtYXR0ZXIpCiAgICAgICAgICBkZWxldGUgZnJvbnRtYXR0ZXJbInBvc2l0aW9uIl07CiAgICAgIHJldHVybiBuZXcgUGFnZU1ldGFkYXRhKHBhdGgsIHsKICAgICAgICAgIHRhZ3MsCiAgICAgICAgICBhbGlhc2VzLAogICAgICAgICAgbGlua3MsCiAgICAgICAgICBsaXN0czogbWFya2Rvd25EYXRhLmxpc3RzLAogICAgICAgICAgZmllbGRzOiBmaW5hbGl6ZUlubGluZUZpZWxkcyhmaWVsZHMpLAogICAgICAgICAgZnJvbnRtYXR0ZXI6IGZyb250bWF0dGVyLAogICAgICAgICAgY3RpbWU6IERhdGVUaW1lLmZyb21NaWxsaXMoc3RhdC5jdGltZSksCiAgICAgICAgICBtdGltZTogRGF0ZVRpbWUuZnJvbU1pbGxpcyhzdGF0Lm10aW1lKSwKICAgICAgICAgIHNpemU6IHN0YXQuc2l6ZSwKICAgICAgICAgIGRheTogZmluZERhdGUocGF0aCwgZmllbGRzKSwKICAgICAgfSk7CiAgfQogIC8qKiBFeHRyYWN0IHRhZ3MgaW50ZWxsaWdlbnRseSBmcm9tIGZyb250bWF0dGVyLiBIYW5kbGVzIGFycmF5cywgbnVtYmVycywgYW5kIHN0cmluZ3MuICovCiAgZnVuY3Rpb24gZXh0cmFjdFRhZ3MobWV0YWRhdGEpIHsKICAgICAgbGV0IHRhZ0tleXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YSkuZmlsdGVyKHQgPT4gdC50b0xvd2VyQ2FzZSgpID09ICJ0YWdzIiB8fCB0LnRvTG93ZXJDYXNlKCkgPT0gInRhZyIpOwogICAgICByZXR1cm4gdGFnS2V5cwogICAgICAgICAgLm1hcChrID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKG1ldGFkYXRhW2tdLCAvWyxcc10rLykpCiAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pCiAgICAgICAgICAubWFwKHN0ciA9PiAoc3RyLnN0YXJ0c1dpdGgoIiMiKSA/IHN0ciA6ICIjIiArIHN0cikpOwogIH0KICAvKiogRXh0cmFjdCBhbGlhc2VzIGludGVsbGlnZW50bHkgZnJvbSBmcm9udG1hdHRlci4gSGFuZGxlcyBhcnJheXMsIG51bWJlcnMsIGFuZCBzdHJpbmdzLiAgKi8KICBmdW5jdGlvbiBleHRyYWN0QWxpYXNlcyhtZXRhZGF0YSkgewogICAgICBsZXQgYWxpYXNLZXlzID0gT2JqZWN0LmtleXMobWV0YWRhdGEpLmZpbHRlcih0ID0+IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXMiIHx8IHQudG9Mb3dlckNhc2UoKSA9PSAiYWxpYXNlcyIpOwogICAgICBjb25zdCByZXN1bHQgPSBbXTsKICAgICAgZm9yIChsZXQga2V5IG9mIGFsaWFzS2V5cykgewogICAgICAgICAgY29uc3QgdmFsdWUgPSBtZXRhZGF0YVtrZXldOwogICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi52YWx1ZS5tYXAodiA9PiAoIiIgKyB2KS50cmltKCkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5zcGxpdEZyb250bWF0dGVyVGFnT3JBbGlhcyh2YWx1ZSwgLywvKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgLyoqIFNwbGl0IGEgZnJvbnRtYXR0ZXIgbGlzdCBpbnRvIHNlcGFyYXRlIGVsZW1lbnRzOyBoYW5kbGVzIGFjdHVhbCBsaXN0cywgY29tbWEgc2VwYXJhdGVkIGxpc3RzLCBhbmQgc2luZ2xlIGVsZW1lbnRzLiAqLwogIGZ1bmN0aW9uIHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKGRhdGEsIG9uKSB7CiAgICAgIGlmIChkYXRhID09IG51bGwgfHwgZGF0YSA9PSB1bmRlZmluZWQpCiAgICAgICAgICByZXR1cm4gW107CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7CiAgICAgICAgICByZXR1cm4gZGF0YQogICAgICAgICAgICAgIC5maWx0ZXIocyA9PiAhIXMpCiAgICAgICAgICAgICAgLm1hcChzID0+IHNwbGl0RnJvbnRtYXR0ZXJUYWdPckFsaWFzKHMsIG9uKSkKICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBwLmNvbmNhdChjKSwgW10pOwogICAgICB9CiAgICAgIC8vIEZvcmNlIHRvIGEgc3RyaW5nIHRvIGhhbmRsZSBudW1iZXJzIGFuZCBzbyBvbi4KICAgICAgcmV0dXJuICgiIiArIGRhdGEpCiAgICAgICAgICAuc3BsaXQob24pCiAgICAgICAgICAuZmlsdGVyKHQgPT4gISF0KQogICAgICAgICAgLm1hcCh0ID0+IHQudHJpbSgpKQogICAgICAgICAgLmZpbHRlcih0ID0+IHQubGVuZ3RoID4gMCk7CiAgfQogIC8qKiBQYXJzZSByYXcgKG5ld2xpbmUtZGVsaW1pdGVkKSBtYXJrZG93biwgcmV0dXJuaW5nIGlubGluZSBmaWVsZHMsIGxpc3QgaXRlbXMsIGFuZCBvdGhlciBtZXRhZGF0YS4gKi8KICBmdW5jdGlvbiBwYXJzZU1hcmtkb3duKHBhdGgsIGNvbnRlbnRzLCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGZpZWxkcyA9IG5ldyBNYXAoKTsKICAgICAgLy8gRXh0cmFjdCB0YXNrIGRhdGEgYW5kIGFwcGVuZCB0aGUgZ2xvYmFsIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlbSB0byBvdXIgZmllbGRzLgogICAgICBsZXQgW2xpc3RzLCBleHRyYURhdGFdID0gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50cywgbWV0YWRhdGEsIGxpbmtzQnlMaW5lKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVzXSBvZiBleHRyYURhdGEuZW50cmllcygpKSB7CiAgICAgICAgICBpZiAoIWZpZWxkcy5oYXMoa2V5KSkKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBmaWVsZHMuc2V0KGtleSwgZmllbGRzLmdldChrZXkpLmNvbmNhdCh2YWx1ZXMpKTsKICAgICAgfQogICAgICAvLyBUaGUgT2JzaWRpYW4gbWV0YWRhdGEgY2FjaGUgd2lsbCB0cmFjayBsaXN0IGVsZW1lbnRzIGluc2lkZSBvZiBvdGhlciBlbGVtZW50IGdyb3VwcyAobGlrZSBhbm5vdGF0aW9ucyBhbmQKICAgICAgLy8gY2FsbG91dHMpLi4uIHRoaXMgbWVhbnMgd2UgbWlnaHQgc2VlIG1ldGFkYXRhIHR3aWNlLCBzbyBza2lwIHRoZW0gbm93LiBWZXJ5IGFubm95aW5nLgogICAgICBjb25zdCBsaXN0TGluZXNUb1NraXAgPSBuZXcgU2V0KCk7CiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaXN0cykgewogICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lLmxpbmVDb3VudDsgaSsrKQogICAgICAgICAgICAgIGxpc3RMaW5lc1RvU2tpcC5hZGQobGluZS5saW5lICsgaSk7CiAgICAgIH0KICAgICAgLy8gT25seSBwYXJzZSBoZWFkaW5nIGFuZCBwYXJhZ3JhcGggZWxlbWVudHMgZm9yIGlubGluZSBmaWVsZHM7IHdlIHdpbGwgcGFyc2UgbGlzdCBtZXRhZGF0YSBzZXBhcmF0ZWx5LgogICAgICBmb3IgKGxldCBzZWN0aW9uIG9mIG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKSB7CiAgICAgICAgICBpZiAoc2VjdGlvbi50eXBlID09ICJsaXN0IiB8fCBzZWN0aW9uLnR5cGUgPT0gInJ1bGluZyIpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBmb3IgKGxldCBsaW5lbm8gPSBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmU7IGxpbmVubyA8PSBzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lbm8rKykgewogICAgICAgICAgICAgIGxldCBsaW5lID0gY29udGVudHNbbGluZW5vXTsKICAgICAgICAgICAgICBpZiAobGluZSA9PSB1bmRlZmluZWQgfHwgbGluZSA9PSBudWxsKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBpZiAobGlzdExpbmVzVG9Ta2lwLmhhcyhsaW5lbm8pKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAvLyBGYXN0IGJhaWwtb3V0IGZvciBsaW5lcyB0aGF0IGFyZSB0b28gbG9uZyBvciBkbyBub3QgY29udGFpbiAnOjonLgogICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCA+IDMyNzY4IHx8ICFsaW5lLmluY2x1ZGVzKCI6OiIpKQogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgICAgICAgbGV0IGlubGluZUZpZWxkcyA9IGV4dHJhY3RJbmxpbmVGaWVsZHMobGluZSk7CiAgICAgICAgICAgICAgaWYgKGlubGluZUZpZWxkcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGlmaWVsZCBvZiBpbmxpbmVGaWVsZHMpCiAgICAgICAgICAgICAgICAgICAgICBhZGRSYXdJbmxpbmVGaWVsZChpZmllbGQsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICBsZXQgZnVsbExpbmUgPSBleHRyYWN0RnVsbExpbmVGaWVsZChsaW5lKTsKICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxMaW5lKQogICAgICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGZpZWxkcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7IGZpZWxkcywgbGlzdHMgfTsKICB9CiAgLy8gVE9ETzogQ29uc2lkZXIgdXNpbmcgYW4gYWN0dWFsIHBhcnNlciBpbiBsZWl1IG9mIGEgbW9yZSBleHBlbnNpdmUgcmVnZXguCiAgY29uc3QgTElTVF9JVEVNX1JFR0VYID0gL15bXHM+XSooXGQrXC58XGQrXCl8XCp8LXxcKylccyooXFsuezAsMX1cXSk/XHMqKC4qKSQvbXU7CiAgLyoqCiAgICogUGFyc2UgbGlzdCBpdGVtcyBmcm9tIHRoZSBwYWdlICsgbWV0YWRhdGEuIFRoaXMgcmVxdWlyZXMgc29tZSBhZGRpdGlvbmFsIHBhcnNpbmcgYWJvdmUgd2hhdGV2ZXIgT2JzaWRpYW4gcHJvdmlkZXMsCiAgICogc2luY2UgT2JzaWRpYW4gb25seSBnaXZlcyBsaW5lIG51bWJlcnMuCiAgICovCiAgZnVuY3Rpb24gcGFyc2VMaXN0cyhwYXRoLCBjb250ZW50LCBtZXRhZGF0YSwgbGlua3NCeUxpbmUpIHsKICAgICAgbGV0IGNhY2hlID0ge307CiAgICAgIC8vIFBsYWNlIGFsbCBvZiB0aGUgdmFsdWVzIGluIHRoZSBjYWNoZSBiZWZvcmUgcmVzb2x2aW5nIGNoaWxkcmVuICYgbWV0YWRhdGEgcmVsYXRpb25zaGlwcy4KICAgICAgZm9yIChsZXQgcmF3RWxlbWVudCBvZiBtZXRhZGF0YS5saXN0SXRlbXMgfHwgW10pIHsKICAgICAgICAgIC8vIE1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lIHRvIGdldCB0aGUgc3ltYm9sIGFuZCBmaXJzdCBsaW5lIG9mIHRleHQuCiAgICAgICAgICBsZXQgcmF3TWF0Y2ggPSBMSVNUX0lURU1fUkVHRVguZXhlYyhjb250ZW50W3Jhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZV0pOwogICAgICAgICAgaWYgKCFyYXdNYXRjaCkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIC8vIEFuZCB0aGVuIHN0cmlwIHVubmVjZXNzYXJ5IHNwYWNpbmcgZnJvbSB0aGUgcmVtYWluaW5nIGxpbmVzLgogICAgICAgICAgbGV0IHRleHRQYXJ0cyA9IFtyYXdNYXRjaFszXV0KICAgICAgICAgICAgICAuY29uY2F0KGNvbnRlbnQuc2xpY2UocmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSArIDEpKQogICAgICAgICAgICAgIC5tYXAodCA9PiB0LnRyaW0oKSk7CiAgICAgICAgICBsZXQgdGV4dFdpdGhOZXdsaW5lID0gdGV4dFBhcnRzLmpvaW4oIlxuIik7CiAgICAgICAgICBsZXQgdGV4dE5vTmV3bGluZSA9IHRleHRQYXJ0cy5qb2luKCIgIik7CiAgICAgICAgICAvLyBGaW5kIHRoZSBsaXN0IHRoYXQgd2UgYXJlIGEgcGFydCBvZiBieSBsaW5lLgogICAgICAgICAgbGV0IGNvbnRhaW5pbmdMaXN0SWQgPSAobWV0YWRhdGEuc2VjdGlvbnMgfHwgW10pLmZpbmRJbmRleChzID0+IHMudHlwZSA9PSAibGlzdCIgJiYKICAgICAgICAgICAgICBzLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPD0gcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lICYmCiAgICAgICAgICAgICAgcy5wb3NpdGlvbi5lbmQubGluZSA+PSByYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUpOwogICAgICAgICAgLy8gRmluZCB0aGUgc2VjdGlvbiB3ZSBiZWxvbmcgdG8gYXMgd2VsbC4KICAgICAgICAgIGxldCBzZWN0aW9uTmFtZSA9IGZpbmRQcmV2aW91c0hlYWRlcihyYXdFbGVtZW50LnBvc2l0aW9uLnN0YXJ0LmxpbmUsIG1ldGFkYXRhLmhlYWRpbmdzIHx8IFtdKTsKICAgICAgICAgIGxldCBzZWN0aW9uTGluayA9IHNlY3Rpb25OYW1lID09PSB1bmRlZmluZWQgPyBMaW5rLmZpbGUocGF0aCkgOiBMaW5rLmhlYWRlcihwYXRoLCBzZWN0aW9uTmFtZSk7CiAgICAgICAgICBsZXQgY2xvc2VzdExpbmsgPSByYXdFbGVtZW50LmlkID09PSB1bmRlZmluZWQgPyBzZWN0aW9uTGluayA6IExpbmsuYmxvY2socGF0aCwgcmF3RWxlbWVudC5pZCk7CiAgICAgICAgICAvLyBHYXRoZXIgYW55IGxpbmtzIHRoYXQgb2NjdXIgb24gdGhlIHNhbWUgbGluZXMgYXMgdGhlIHRhc2suCiAgICAgICAgICBjb25zdCBsaW5rcyA9IFtdOwogICAgICAgICAgZm9yIChsZXQgbGluZSA9IHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZTsgbGluZSA8PSByYXdFbGVtZW50LnBvc2l0aW9uLmVuZC5saW5lOyBsaW5lKyspIHsKICAgICAgICAgICAgICBpZiAobGlua3NCeUxpbmVbbGluZV0pCiAgICAgICAgICAgICAgICAgIGxpbmtzLnB1c2goLi4ubGlua3NCeUxpbmVbbGluZV0pOwogICAgICAgICAgfQogICAgICAgICAgLy8gQ29uc3RydWN0IHVuaXZlcnNhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVsZW1lbnQgKGJlZm9yZSB0YXNrcykuCiAgICAgICAgICBsZXQgaXRlbSA9IG5ldyBMaXN0SXRlbSh7CiAgICAgICAgICAgICAgc3ltYm9sOiByYXdNYXRjaFsxXSwKICAgICAgICAgICAgICBsaW5rOiBjbG9zZXN0TGluaywKICAgICAgICAgICAgICBsaW5rczogbGlua3MsCiAgICAgICAgICAgICAgc2VjdGlvbjogc2VjdGlvbkxpbmssCiAgICAgICAgICAgICAgdGV4dDogdGV4dFdpdGhOZXdsaW5lLAogICAgICAgICAgICAgIHRhZ3M6IGV4dHJhY3RUYWdzJDEodGV4dE5vTmV3bGluZSksCiAgICAgICAgICAgICAgbGluZTogcmF3RWxlbWVudC5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIGxpbmVDb3VudDogcmF3RWxlbWVudC5wb3NpdGlvbi5lbmQubGluZSAtIHJhd0VsZW1lbnQucG9zaXRpb24uc3RhcnQubGluZSArIDEsCiAgICAgICAgICAgICAgbGlzdDogY29udGFpbmluZ0xpc3RJZCA9PSAtMSA/IC0xIDogKG1ldGFkYXRhLnNlY3Rpb25zIHx8IFtdKVtjb250YWluaW5nTGlzdElkXS5wb3NpdGlvbi5zdGFydC5saW5lLAogICAgICAgICAgICAgIHBvc2l0aW9uOiByYXdFbGVtZW50LnBvc2l0aW9uLAogICAgICAgICAgICAgIGNoaWxkcmVuOiBbXSwKICAgICAgICAgICAgICBibG9ja0lkOiByYXdFbGVtZW50LmlkLAogICAgICAgICAgfSk7CiAgICAgICAgICBpZiAocmF3RWxlbWVudC5wYXJlbnQgPj0gMCAmJiByYXdFbGVtZW50LnBhcmVudCAhPSBpdGVtLmxpbmUpCiAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSByYXdFbGVtZW50LnBhcmVudDsKICAgICAgICAgIC8vIFNldCB1cCB0aGUgYmFzaWMgdGFzayBpbmZvcm1hdGlvbiBmb3Igbm93LCB0aG91Z2ggd2UgaGF2ZSB0byByZWNvbXB1dGUgYGZ1bGx5Q29tcHV0ZWRgIGxhdGVyLgogICAgICAgICAgaWYgKHJhd0VsZW1lbnQudGFzaykgewogICAgICAgICAgICAgIGl0ZW0udGFzayA9IHsKICAgICAgICAgICAgICAgICAgc3RhdHVzOiByYXdFbGVtZW50LnRhc2ssCiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IHJhd0VsZW1lbnQudGFzayAhPSAiIiAmJiByYXdFbGVtZW50LnRhc2sgIT0gIiAiLAogICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICAgICAgZnVsbHlDb21wbGV0ZWQ6IHJhd0VsZW1lbnQudGFzayA9PSAiWCIgfHwgcmF3RWxlbWVudC50YXNrID09ICJ4IiwKICAgICAgICAgICAgICB9OwogICAgICAgICAgfQogICAgICAgICAgLy8gRXh0cmFjdCBpbmxpbmUgZmllbGRzOyBleHRyYWN0IGZ1bGwtbGluZSBmaWVsZHMgb25seSBpZiB3ZSBhcmUgTk9UIGEgdGFzay4KICAgICAgICAgIGl0ZW0uZmllbGRzID0gbmV3IE1hcCgpOwogICAgICAgICAgZm9yIChsZXQgZWxlbWVudCBvZiBleHRyYWN0SW5saW5lRmllbGRzKHRleHROb05ld2xpbmUsIHRydWUpKQogICAgICAgICAgICAgIGFkZFJhd0lubGluZUZpZWxkKGVsZW1lbnQsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIGlmICghcmF3RWxlbWVudC50YXNrICYmIGl0ZW0uZmllbGRzLnNpemUgPT0gMCkgewogICAgICAgICAgICAgIGxldCBmdWxsTGluZSA9IGV4dHJhY3RGdWxsTGluZUZpZWxkKHRleHROb05ld2xpbmUpOwogICAgICAgICAgICAgIGlmIChmdWxsTGluZSkKICAgICAgICAgICAgICAgICAgYWRkUmF3SW5saW5lRmllbGQoZnVsbExpbmUsIGl0ZW0uZmllbGRzKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhY2hlW2l0ZW0ubGluZV0gPSBpdGVtOwogICAgICB9CiAgICAgIC8vIFRyZWUgdXBkYXRpbmcgcGFzc2VzLiBVcGRhdGUgY2hpbGQgbGlzdHMuIFByb3BvZ2F0ZSBtZXRhZGF0YSB1cCB0byBwYXJlbnQgdGFza3MuIFVwZGF0ZSB0YXNrIGBmdWxseUNvbXBsZXRlZGAuCiAgICAgIGxldCBsaXRlcmFscyA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgbGlzdEl0ZW0gb2YgT2JqZWN0LnZhbHVlcyhjYWNoZSkpIHsKICAgICAgICAgIC8vIFBhc3MgMTogVXBkYXRlIGNoaWxkIGxpc3RzLgogICAgICAgICAgaWYgKGxpc3RJdGVtLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIGxpc3RJdGVtLnBhcmVudCBpbiBjYWNoZSkgewogICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBjYWNoZVtsaXN0SXRlbS5wYXJlbnRdOwogICAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKGxpc3RJdGVtLmxpbmUpOwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAyOiBQcm9wb2dhdGUgbWV0YWRhdGEgdXAgdG8gdGhlIHBhcmVudCB0YXNrIG9yIHJvb3QgZWxlbWVudC4KICAgICAgICAgIGlmICghbGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIG1lcmdlRmllbGRHcm91cHMobGl0ZXJhbHMsIGxpc3RJdGVtLmZpZWxkcyk7CiAgICAgICAgICAgICAgLy8gVE9ETyAoYmxhY2tzbWl0aGd1KTogVGhlIGJlbG93IGNvZGUgcHJvcGVybHkgcHJvcG9nYXRlcyBtZXRhZGF0YSB1cCB0byB0aGUgbmVhcmVzdCB0YXNrLCB3aGljaCBpcyB0aGUKICAgICAgICAgICAgICAvLyBtb3JlIGludHVpdGl2ZSBiZWhhdmlvci4gRm9yIG5vdywgdGhvdWdoLCB3ZSB3aWxsIGtlZXAgdGhlIGV4aXN0aW5nIGxvZ2ljLgogICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgbGV0IHJvb3Q6IExpc3RJdGVtIHwgdW5kZWZpbmVkID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhcm9vdCAmJiAhcm9vdC50YXNrKSByb290ID0gY2FjaGVbcm9vdC5wYXJlbnQgPz8gLTFdOwoKICAgICAgICAgICAgICAvLyBJZiB0aGUgcm9vdCBpcyBudWxsLCBhcHBlbmQgdGhpcyBtZXRhZGF0YSB0byB0aGUgcm9vdDsgb3RoZXJ3aXNlLCBhcHBlbmQgdG8gdGhlIHRhc2suCiAgICAgICAgICAgICAgbWVyZ2VGaWVsZEdyb3Vwcyhyb290ID09PSB1bmRlZmluZWQgfHwgcm9vdCA9PSBudWxsID8gbGl0ZXJhbHMgOiByb290LmZpZWxkcywgbGlzdEl0ZW0uZmllbGRzKTsKICAgICAgICAgICAgICAqLwogICAgICAgICAgfQogICAgICAgICAgLy8gUGFzcyAzOiBQcm9wb2dhdGUgYGZ1bGx5Q29tcGxldGVkYCB1cCB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgZWZmaWNpZW50IHRoYW4ganVzdCBkb2luZyBhIHNpbXBsZQogICAgICAgICAgLy8gREZTIHVzaW5nIHRoZSBjaGlsZHJlbiBJRHMsIGJ1dCBpdCdzIHByb2JhYmx5IGZpbmUuCiAgICAgICAgICBpZiAobGlzdEl0ZW0udGFzaykgewogICAgICAgICAgICAgIGxldCBjdXJyID0gbGlzdEl0ZW07CiAgICAgICAgICAgICAgd2hpbGUgKCEhY3VycikgewogICAgICAgICAgICAgICAgICBpZiAoY3Vyci50YXNrKQogICAgICAgICAgICAgICAgICAgICAgY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkID0gY3Vyci50YXNrLmZ1bGx5Q29tcGxldGVkICYmIGxpc3RJdGVtLnRhc2suY29tcGxldGVkOwogICAgICAgICAgICAgICAgICBjdXJyID0gY2FjaGVbY3Vyci5wYXJlbnQgPz8gLTFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gW09iamVjdC52YWx1ZXMoY2FjaGUpLCBsaXRlcmFsc107CiAgfQogIC8qKiBBdHRlbXB0IHRvIGZpbmQgYSBkYXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gcGFnZSBmcm9tIG1ldGFkYXRhIG9yIGZpbGVuYW1lcy4gKi8KICBmdW5jdGlvbiBmaW5kRGF0ZShmaWxlLCBmaWVsZHMpIHsKICAgICAgZm9yIChsZXQga2V5IG9mIGZpZWxkcy5rZXlzKCkpIHsKICAgICAgICAgIGlmICghKGtleS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICJkYXRlIiB8fCBrZXkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAiZGF5IikpCiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICBsZXQgdmFsdWUgPSBmaWVsZHMuZ2V0KGtleSk7CiAgICAgICAgICBpZiAoVmFsdWVzLmlzRGF0ZSh2YWx1ZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChWYWx1ZXMuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCAmJiBWYWx1ZXMuaXNEYXRlKHZhbHVlWzBdKSkgewogICAgICAgICAgICAgIHJldHVybiB2YWx1ZVswXTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKFZhbHVlcy5pc0xpbmsodmFsdWUpKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGUgPSBleHRyYWN0RGF0ZSh2YWx1ZS5wYXRoKSA/PyBleHRyYWN0RGF0ZSh2YWx1ZS5zdWJwYXRoID8/ICIiKSA/PyBleHRyYWN0RGF0ZSh2YWx1ZS5kaXNwbGF5ID8/ICIiKTsKICAgICAgICAgICAgICBpZiAoZGF0ZSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIGV4dHJhY3REYXRlKGdldEZpbGVUaXRsZShmaWxlKSk7CiAgfQogIC8qKiBSZWN1cnNpdmVseSBjb252ZXJ0IGZyb250bWF0dGVyIGludG8gZmllbGRzLiBXZSBoYXZlIHRvIGRhbmNlIGFyb3VuZCBZQU1MIHN0cnVjdHVyZS4gKi8KICBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gW107CiAgICAgICAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VGcm9udG1hdHRlcihjaGlsZCkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgICAgICAgbGV0IGRhdGVQYXJzZSA9IERhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUpOwogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2U7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBsZXQgb2JqZWN0ID0gdmFsdWU7CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBvYmplY3QpIHsKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSBwYXJzZUZyb250bWF0dGVyKG9iamVjdFtrZXldKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJudW1iZXIiKSB7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAiYm9vbGVhbiIpIHsKICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgfQogICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciKSB7CiAgICAgICAgICBsZXQgZGF0ZVBhcnNlID0gRVhQUkVTU0lPTi5kYXRlLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChkYXRlUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkYXRlUGFyc2UudmFsdWU7CiAgICAgICAgICBsZXQgZHVyYXRpb25QYXJzZSA9IEVYUFJFU1NJT04uZHVyYXRpb24ucGFyc2UodmFsdWUpOwogICAgICAgICAgaWYgKGR1cmF0aW9uUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblBhcnNlLnZhbHVlOwogICAgICAgICAgbGV0IGxpbmtQYXJzZSA9IEVYUFJFU1NJT04uZW1iZWRMaW5rLnBhcnNlKHZhbHVlKTsKICAgICAgICAgIGlmIChsaW5rUGFyc2Uuc3RhdHVzKQogICAgICAgICAgICAgIHJldHVybiBsaW5rUGFyc2UudmFsdWU7CiAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgIH0KICAgICAgLy8gQmFja3VwIGlmIHdlIGRvbid0IHVuZGVyc3RhbmQgdGhlIHR5cGUuCiAgICAgIHJldHVybiBudWxsOwogIH0KICAvKiogQWRkIGEgcGFyc2VkIGlubGluZSBmaWVsZCB0byB0aGUgb3V0cHV0IG1hcC4gKi8KICBmdW5jdGlvbiBhZGRSYXdJbmxpbmVGaWVsZChmaWVsZCwgb3V0cHV0KSB7CiAgICAgIGFkZElubGluZUZpZWxkKGZpZWxkLmtleSwgcGFyc2VJbmxpbmVWYWx1ZShmaWVsZC52YWx1ZSksIG91dHB1dCk7CiAgfQogIC8qKiBBZGQgYSByYXcgaW5saW5lIGZpZWxkIHRvIGFuIG91dHB1dCBtYXAsIGNhbm9uaWNhbGl6aW5nIGFzIG5lZWRlZC4gKi8KICBmdW5jdGlvbiBhZGRJbmxpbmVGaWVsZChrZXksIHZhbHVlLCBvdXRwdXQpIHsKICAgICAgaWYgKCFvdXRwdXQuaGFzKGtleSkpCiAgICAgICAgICBvdXRwdXQuc2V0KGtleSwgW3ZhbHVlXSk7CiAgICAgIGVsc2UKICAgICAgICAgIG91dHB1dC5nZXQoa2V5KT8ucHVzaCh2YWx1ZSk7CiAgfQogIC8qKiBHaXZlbiBhIHJhdyBsaXN0IG9mIGlubGluZSBmaWVsZCB2YWx1ZXMsIGFkZCBub3JtYWxpemVkIGtleXMgYW5kIHNxdWFzaCB0aGVtLiAqLwogIGZ1bmN0aW9uIGZpbmFsaXplSW5saW5lRmllbGRzKGZpZWxkcykgewogICAgICAvLyBDb21wdXRlIHVuaXF1ZSBub3JtYWxpemVkIGtleXMgKHRoYXQgZG8gbm90IG92ZXJsYXAgdy8gdGhlIGZpZWxkcykuCiAgICAgIGxldCBub3JtYWxpemVkID0gbmV3IE1hcCgpOwogICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHsKICAgICAgICAgIGxldCBub3JtS2V5ID0gY2Fub25pY2FsaXplVmFyTmFtZShrZXkpOwogICAgICAgICAgaWYgKG5vcm1LZXkgPT0gIiIgfHwgZmllbGRzLmhhcyhub3JtS2V5KSkKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIGlmICghbm9ybWFsaXplZC5oYXMobm9ybUtleSkpCiAgICAgICAgICAgICAgbm9ybWFsaXplZC5zZXQobm9ybUtleSwgdmFsdWVzKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBub3JtYWxpemVkLnNldChub3JtS2V5LCBub3JtYWxpemVkLmdldChub3JtS2V5KS5jb25jYXQodmFsdWVzKSk7CiAgICAgIH0KICAgICAgLy8gQ29tYmluZSBub3JtYWxpemVkICsgbm9ybWFsIGtleXMuCiAgICAgIGxldCBpbnRlcmltID0gbmV3IE1hcCgpOwogICAgICBtZXJnZUZpZWxkR3JvdXBzKGludGVyaW0sIGZpZWxkcyk7CiAgICAgIG1lcmdlRmllbGRHcm91cHMoaW50ZXJpbSwgbm9ybWFsaXplZCk7CiAgICAgIC8vIEFuZCB0aGVuIGZsYXR0ZW4gdGhlbS4KICAgICAgbGV0IHJlc3VsdCA9IG5ldyBNYXAoKTsKICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIGludGVyaW0uZW50cmllcygpKSB7CiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDEpCiAgICAgICAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlWzBdKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgdmFsdWUpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHQ7CiAgfQogIC8qKiBDb3B5IGFsbCBmaWVsZHMgb2YgJ3NvdXJjZScgaW50byAndGFyZ2V0Jy4gKi8KICBmdW5jdGlvbiBtZXJnZUZpZWxkR3JvdXBzKHRhcmdldCwgc291cmNlKSB7CiAgICAgIGZvciAobGV0IGtleSBvZiBzb3VyY2Uua2V5cygpKSB7CiAgICAgICAgICBpZiAoIXRhcmdldC5oYXMoa2V5KSkKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgc291cmNlLmdldChrZXkpKTsKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICB0YXJnZXQuc2V0KGtleSwgdGFyZ2V0LmdldChrZXkpLmNvbmNhdChzb3VyY2UuZ2V0KGtleSkpKTsKICAgICAgfQogIH0KICAvKiogRmluZCB0aGUgaGVhZGVyIHRoYXQgaXMgbW9zdCBpbW1lZGlhdGVseSBhYm92ZSB0aGUgZ2l2ZW4gbGluZSBudW1iZXIuICovCiAgZnVuY3Rpb24gZmluZFByZXZpb3VzSGVhZGVyKGxpbmUsIGhlYWRlcnMpIHsKICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoID09IDApCiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICBpZiAoaGVhZGVyc1swXS5wb3NpdGlvbi5zdGFydC5saW5lID4gbGluZSkKICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgIGxldCBpbmRleCA9IGhlYWRlcnMubGVuZ3RoIC0gMTsKICAgICAgd2hpbGUgKGluZGV4ID49IDAgJiYgaGVhZGVyc1tpbmRleF0ucG9zaXRpb24uc3RhcnQubGluZSA+IGxpbmUpCiAgICAgICAgICBpbmRleC0tOwogICAgICByZXR1cm4gaGVhZGVyc1tpbmRleF0uaGVhZGluZzsKICB9CgogIC8qKiBBY3R1YWwgaW1wb3J0IGltcGxlbWVudGF0aW9uIGJhY2tlbmQuIFRoaXMgbXVzdCByZW1haW4gc2VwYXJhdGUgZnJvbSBgaW1wb3J0LWVudHJ5YCBzaW5jZSBpdCBpcyB1c2VkIHdpdGhvdXQgd2ViIHdvcmtlcnMuICovCiAgZnVuY3Rpb24gcnVuSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0cywgbWV0YWRhdGEpIHsKICAgICAgcmV0dXJuIHBhcnNlUGFnZShwYXRoLCBjb250ZW50cywgc3RhdHMsIG1ldGFkYXRhKTsKICB9CgogIC8qKiBTaW1wbGlmaWVzIHBhc3NpbmcgZGF0YXZpZXcgdmFsdWVzIGFjcm9zcyB0aGUgSlMgd2ViIHdvcmtlciBiYXJyaWVyLiAqLwogIHZhciBUcmFuc2ZlcmFibGU7CiAgKGZ1bmN0aW9uIChUcmFuc2ZlcmFibGUpIHsKICAgICAgLyoqIENvbnZlcnQgYSBsaXRlcmFsIHZhbHVlIHRvIGEgc2VyaWFsaXplci1mcmllbmRseSB0cmFuc2ZlcmFibGUgdmFsdWUuICovCiAgICAgIGZ1bmN0aW9uIHRyYW5zZmVyYWJsZSh2YWx1ZSkgewogICAgICAgICAgLy8gSGFuZGxlIHNpbXBsZSB1bml2ZXJzYWwgdHlwZXMgZmlyc3QuCiAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgY29waWVkID0gbmV3IE1hcCgpOwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgdmFsdWUuZW50cmllcygpKQogICAgICAgICAgICAgICAgICBjb3BpZWQuc2V0KHRyYW5zZmVyYWJsZShrZXkpLCB0cmFuc2ZlcmFibGUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGNvcGllZDsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IGNvcGllZCA9IG5ldyBTZXQoKTsKICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgb2YgdmFsdWUpCiAgICAgICAgICAgICAgICAgIGNvcGllZC5hZGQodHJhbnNmZXJhYmxlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiBjb3BpZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBsZXQgd3JhcHBlZCA9IFZhbHVlcy53cmFwVmFsdWUodmFsdWUpOwogICAgICAgICAgaWYgKHdyYXBwZWQgPT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIHRyYW5zZmVyYWJsZSB2YWx1ZTogIiArIHZhbHVlKTsKICAgICAgICAgIHN3aXRjaCAod3JhcHBlZC50eXBlKSB7CiAgICAgICAgICAgICAgY2FzZSAibnVsbCI6CiAgICAgICAgICAgICAgY2FzZSAibnVtYmVyIjoKICAgICAgICAgICAgICBjYXNlICJzdHJpbmciOgogICAgICAgICAgICAgIGNhc2UgImJvb2xlYW4iOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZTsKICAgICAgICAgICAgICBjYXNlICJkYXRlIjoKICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICJfX190cmFuc2Zlci10eXBlIjogImRhdGUiLAogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpLAogICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAgIHpvbmU6IHdyYXBwZWQudmFsdWUuem9uZS5lcXVhbHMoU3lzdGVtWm9uZS5pbnN0YW5jZSkgPyB1bmRlZmluZWQgOiB3cmFwcGVkLnZhbHVlLnpvbmVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBjYXNlICJkdXJhdGlvbiI6CiAgICAgICAgICAgICAgICAgIHJldHVybiB7ICJfX190cmFuc2Zlci10eXBlIjogImR1cmF0aW9uIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAiYXJyYXkiOgogICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlZC52YWx1ZS5tYXAodiA9PiB0cmFuc2ZlcmFibGUodikpOwogICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICByZXR1cm4geyAiX19fdHJhbnNmZXItdHlwZSI6ICJsaW5rIiwgdmFsdWU6IHRyYW5zZmVyYWJsZSh3cmFwcGVkLnZhbHVlLnRvT2JqZWN0KCkpIH07CiAgICAgICAgICAgICAgY2FzZSAib2JqZWN0IjoKICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMod3JhcHBlZC52YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZmVyYWJsZSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZSA9IHRyYW5zZmVyYWJsZTsKICAgICAgLyoqIENvbnZlcnQgYSB0cmFuc2ZlcmFibGUgdmFsdWUgYmFjayB0byBhIGxpdGVyYWwgdmFsdWUgd2UgY2FuIHdvcmsgd2l0aC4gKi8KICAgICAgZnVuY3Rpb24gdmFsdWUodHJhbnNmZXJhYmxlKSB7CiAgICAgICAgICBpZiAodHJhbnNmZXJhYmxlID09PSBudWxsKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmICh0cmFuc2ZlcmFibGUgaW5zdGFuY2VvZiBNYXApIHsKICAgICAgICAgICAgICBsZXQgcmVhbCA9IG5ldyBNYXAoKTsKICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWxdIG9mIHRyYW5zZmVyYWJsZS5lbnRyaWVzKCkpCiAgICAgICAgICAgICAgICAgIHJlYWwuc2V0KHZhbHVlKGtleSksIHZhbHVlKHZhbCkpOwogICAgICAgICAgICAgIHJldHVybiByZWFsOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAodHJhbnNmZXJhYmxlIGluc3RhbmNlb2YgU2V0KSB7CiAgICAgICAgICAgICAgbGV0IHJlYWwgPSBuZXcgU2V0KCk7CiAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIG9mIHRyYW5zZmVyYWJsZSkKICAgICAgICAgICAgICAgICAgcmVhbC5hZGQodmFsdWUodmFsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIHJlYWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRyYW5zZmVyYWJsZSkpIHsKICAgICAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlLm1hcCh2ID0+IHZhbHVlKHYpKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0cmFuc2ZlcmFibGUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICAgICAgaWYgKCJfX190cmFuc2Zlci10eXBlIiBpbiB0cmFuc2ZlcmFibGUpIHsKICAgICAgICAgICAgICAgICAgc3dpdGNoICh0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXSkgewogICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZGF0ZSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGVPcHRzID0gdmFsdWUodHJhbnNmZXJhYmxlLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkYXRlRGF0YSA9IHZhbHVlKHRyYW5zZmVyYWJsZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGVUaW1lLmZyb21PYmplY3QoZGF0ZURhdGEsIHsgem9uZTogZGF0ZU9wdHMuem9uZSB9KTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImR1cmF0aW9uIjoKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRHVyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSh0cmFuc2ZlcmFibGUudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgIGNhc2UgImxpbmsiOgogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBMaW5rLmZyb21PYmplY3QodmFsdWUodHJhbnNmZXJhYmxlLnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBVbnJlY29nbml6ZWQgdHJhbnNmZXIgdHlwZSAnJHt0cmFuc2ZlcmFibGVbIl9fX3RyYW5zZmVyLXR5cGUiXX0nYCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHt9OwogICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModHJhbnNmZXJhYmxlKSkKICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZSh2YWwpOwogICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdHJhbnNmZXJhYmxlOwogICAgICB9CiAgICAgIFRyYW5zZmVyYWJsZS52YWx1ZSA9IHZhbHVlOwogIH0pKFRyYW5zZmVyYWJsZSB8fCAoVHJhbnNmZXJhYmxlID0ge30pKTsKCiAgLyoqIEVudHJ5LXBvaW50IHNjcmlwdCB1c2VkIGJ5IHRoZSBpbmRleCBhcyBhIHdlYiB3b3JrZXIuICovCiAgLyoqIEFuIGltcG9ydCB3aGljaCBjYW4gZmFpbCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uLCB3aGljaCB3aWxsIGJlIGNhdWdodCBieSB0aGUgaGFuZGxlci4gKi8KICBmdW5jdGlvbiBmYWlsYWJsZUltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpIHsKICAgICAgaWYgKG1ldGFkYXRhID09PSB1bmRlZmluZWQgfHwgbWV0YWRhdGEgPT09IG51bGwpIHsKICAgICAgICAgIHRocm93IEVycm9yKGBDYW5ub3QgaW5kZXggZmlsZSwgc2luY2UgaXQgaGFzIG5vIE9ic2lkaWFuIGZpbGUgbWV0YWRhdGEuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJ1bkltcG9ydChwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEpOwogIH0KICBvbm1lc3NhZ2UgPSBhc3luYyAoZXZ0KSA9PiB7CiAgICAgIHRyeSB7CiAgICAgICAgICBsZXQgeyBwYXRoLCBjb250ZW50cywgc3RhdCwgbWV0YWRhdGEgfSA9IGV2dC5kYXRhOwogICAgICAgICAgbGV0IHJlc3VsdCA9IGZhaWxhYmxlSW1wb3J0KHBhdGgsIGNvbnRlbnRzLCBzdGF0LCBtZXRhZGF0YSk7CiAgICAgICAgICBwb3N0TWVzc2FnZSh7IHBhdGg6IGV2dC5kYXRhLnBhdGgsIHJlc3VsdDogVHJhbnNmZXJhYmxlLnRyYW5zZmVyYWJsZShyZXN1bHQpIH0pOwogICAgICB9CiAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgIHBhdGg6IGV2dC5kYXRhLnBhdGgsCiAgICAgICAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICAgICAgICAgICRlcnJvcjogYEZhaWxlZCB0byBpbmRleCBmaWxlOiAke2V2dC5kYXRhLnBhdGh9OiAke2Vycm9yfWAsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgIH0pOwogICAgICB9CiAgfTsKCn0pKCk7Cgo=', null, false); /* eslint-enable */ /** Controls and creates Dataview file importers, allowing for asynchronous loading and parsing of files. */ /** Multi-threaded file parser which debounces rapid file requests automatically. */ class FileImporter extends obsidian.Component { + numWorkers; + vault; + metadataCache; + /* Background workers which do the actual file parsing. */ + workers; + /** Tracks which workers are actively parsing a file, to make sure we properly delegate results. */ + busy; + /** List of files which have been queued for a reload. */ + reloadQueue; + /** Fast-access set which holds the list of files queued to be reloaded; used for debouncing. */ + reloadSet; + /** Paths -> promises for file reloads which have not yet been queued. */ + callbacks; constructor(numWorkers, vault, metadataCache) { super(); this.numWorkers = numWorkers; @@ -12588,9 +12712,8 @@ class FileImporter extends obsidian.Component { */ reload(file) { let promise = new Promise((resolve, reject) => { - var _a; if (this.callbacks.has(file.path)) - (_a = this.callbacks.get(file.path)) === null || _a === void 0 ? void 0 : _a.push([resolve, reject]); + this.callbacks.get(file.path)?.push([resolve, reject]); else this.callbacks.set(file.path, [[resolve, reject]]); }); @@ -12610,9 +12733,8 @@ class FileImporter extends obsidian.Component { } /** Finish the parsing of a file, potentially queueing a new file. */ finish(path, data, index) { - var _a; // Cache the callbacks before we do book-keeping. - let calls = [].concat((_a = this.callbacks.get(path)) !== null && _a !== void 0 ? _a : []); + let calls = [].concat(this.callbacks.get(path) ?? []); // Book-keeping to clear metadata & allow the file to be re-loaded again. this.reloadSet.delete(path); this.callbacks.delete(path); @@ -12652,10 +12774,43 @@ class FileImporter extends obsidian.Component { /** Stores various indices on all files in the vault to make dataview generation fast. */ /** Aggregate index which has several sub-indices and will initialize all of them. */ class FullIndex extends obsidian.Component { + app; + indexVersion; + onChange; /** Generate a full index from the given vault. */ static create(app, indexVersion, onChange) { return new FullIndex(app, indexVersion, onChange); } + /** Whether all files in the vault have been indexed at least once. */ + initialized; + /** I/O access to the Obsidian vault contents. */ + vault; + /** Access to in-memory metadata, useful for parsing and metadata lookups. */ + metadataCache; + /** Persistent IndexedDB backing store, used for faster startup. */ + persister; + /* Maps path -> markdown metadata for all markdown pages. */ + pages; + /** Map files -> tags in that file, and tags -> files. This version includes subtags. */ + tags; + /** Map files -> exact tags in that file, and tags -> files. This version does not automatically add subtags. */ + etags; + /** Map files -> linked files in that file, and linked file -> files that link to it. */ + links; + /** Search files by path prefix. */ + prefix; + /** Allows for efficient lookups of whether a file is starred or not. */ + starred; + /** Caches data in CSV files. */ + // TODO: CSV parsing should be done by a worker thread asynchronously to avoid frontend stalls. + csv; + /** + * The current "revision" of the index, which monotonically increases for every index change. Use this to determine + * if you are up to date. + */ + revision; + /** Asynchronously parses files in the background using web workers. */ + importer; /** Construct a new index using the app data and a current data version. */ constructor(app, indexVersion, onChange) { super(); @@ -12816,6 +12971,8 @@ class FullIndex extends obsidian.Component { } /** Indexes files by their full prefix - essentially a simple prefix tree. */ class PrefixIndex extends obsidian.Component { + vault; + updateRevision; static create(vault, updateRevision) { return new PrefixIndex(vault, updateRevision); } @@ -12880,6 +13037,12 @@ var PathFilters; * that uses CSV) fast. */ class CsvCache extends obsidian.Component { + vault; + static CACHE_EXPIRY_SECONDS = 5 * 60; + // Cache of loaded CSVs; old entries will periodically be removed + cache; + // Periodic job which clears out the cache based on time. + cacheClearInterval; constructor(vault) { super(); this.vault = vault; @@ -12945,9 +13108,16 @@ class CsvCache extends obsidian.Component { keysToRemove.forEach(key => this.cache.delete(key)); } } -CsvCache.CACHE_EXPIRY_SECONDS = 5 * 60; /** Optional connector to the Obsidian 'Starred' plugin which allows for efficiently querying if a file is starred or not. */ class StarredCache extends obsidian.Component { + app; + onUpdate; + /** Initial delay before checking the cache; we need to wait for it to asynchronously load the initial stars. */ + static INITIAL_DELAY = 4 * 1000; + /** How frequently to check for star updates. */ + static REFRESH_INTERVAL = 30 * 1000; + /** Set of all starred file paths. */ + stars; constructor(app, onUpdate) { super(); this.app = app; @@ -12970,8 +13140,7 @@ class StarredCache extends obsidian.Component { } /** Fetch all starred files from the stars plugin, if present. */ static fetch(app) { - var _a, _b, _c, _d; - let items = (_d = (_c = (_b = (_a = app === null || app === void 0 ? void 0 : app.internalPlugins) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.bookmarks) === null || _c === void 0 ? void 0 : _c.instance) === null || _d === void 0 ? void 0 : _d.items; + let items = app?.internalPlugins?.plugins?.bookmarks?.instance?.items; if (items == undefined) return new Set(); // Retrieve all grouped (nested) items, returning a flat array @@ -12990,12 +13159,12 @@ class StarredCache extends obsidian.Component { return new Set(items.filter((l) => l.type === "file").map(l => l.path)); } } -/** Initial delay before checking the cache; we need to wait for it to asynchronously load the initial stars. */ -StarredCache.INITIAL_DELAY = 4 * 1000; -/** How frequently to check for star updates. */ -StarredCache.REFRESH_INTERVAL = 30 * 1000; /** A generic index which indexes variables of the form key -> value[], allowing both forward and reverse lookups. */ class IndexMap { + /** Maps key -> values for that key. */ + map; + /** Cached inverse map; maps value -> keys that reference that value. */ + invMap; /** Create a new, empty index map. */ constructor() { this.map = new Map(); @@ -13017,7 +13186,6 @@ class IndexMap { } /** Sets the key to the given values; this will delete the old mapping for the key if one was present. */ set(key, values) { - var _a, _b; if (!values.size) { // no need to store if no values this.delete(key); @@ -13028,7 +13196,7 @@ class IndexMap { for (let value of oldValues) { // Only delete the ones we're not adding back if (!values.has(key)) - (_a = this.invMap.get(value)) === null || _a === void 0 ? void 0 : _a.delete(key); + this.invMap.get(value)?.delete(key); } } this.map.set(key, values); @@ -13036,19 +13204,18 @@ class IndexMap { if (!this.invMap.has(value)) this.invMap.set(value, new Set([key])); else - (_b = this.invMap.get(value)) === null || _b === void 0 ? void 0 : _b.add(key); + this.invMap.get(value)?.add(key); } return this; } /** Clears all values for the given key so they can be re-added. */ delete(key) { - var _a; let oldValues = this.map.get(key); if (!oldValues) return false; this.map.delete(key); for (let value of oldValues) { - (_a = this.invMap.get(value)) === null || _a === void 0 ? void 0 : _a.delete(key); + this.invMap.get(value)?.delete(key); } return true; } @@ -13066,10 +13233,11 @@ class IndexMap { this.map.clear(); this.invMap.clear(); } + static EMPTY_SET = Object.freeze(new Set()); } -IndexMap.EMPTY_SET = Object.freeze(new Set()); /** Index map wrapper which is case-insensitive in the key. */ class ValueCaseInsensitiveIndexMap { + delegate; /** Create a new, empty case insensitive index map. */ constructor(delegate = new IndexMap()) { this.delegate = delegate; @@ -13104,7 +13272,6 @@ class ValueCaseInsensitiveIndexMap { /** Collect data matching a source query. */ /** Find source paths which match the given source. */ function matchingSourcePaths(source, index, originFile = "") { - var _a; switch (source.type) { case "empty": return Result.success(new Set()); @@ -13124,7 +13291,7 @@ function matchingSourcePaths(source, index, originFile = "") { // For backwards-compat, return an empty result even if the folder does not exist. return Result.success(new Set()); case "link": - let fullPath = (_a = index.metadataCache.getFirstLinkpathDest(source.file, originFile)) === null || _a === void 0 ? void 0 : _a.path; + let fullPath = index.metadataCache.getFirstLinkpathDest(source.file, originFile)?.path; if (!fullPath) { // Look in links which includes unresolved links return Result.success(index.links.getInverse(source.file)); @@ -13224,12 +13391,36 @@ async function resolveSource(source, index, originFile = "") { return Result.success(result); } +// cyrb53 (c) 2018 bryc (github.com/bryc). License: Public domain. Attribution appreciated. +// A fast and simple 64-bit (or 53-bit) string hash function with decent collision resistance. +// Largely inspired by MurmurHash2/3, but with a focus on speed/simplicity. +// See https://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript/52171480#52171480 +// https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js +function cyrb53(str, seed = 0) { + let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed; + for (let i = 0, ch; i < str.length; i++) { + ch = str.charCodeAt(i); + h1 = Math.imul(h1 ^ ch, 2654435761); + h2 = Math.imul(h2 ^ ch, 1597334677); + } + h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507); + h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909); + h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507); + h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909); + // For a full 64-bit value we could return + // [h2>>>0, h1>>>0] + return 4294967296 * (2097151 & h2) + (h1 >>> 0); // ; +} + /** Default function implementations for the expression evaluator. */ /** * Allows for the creation of functions that check the number and type of their arguments, and dispatch * to different implemenations based on the types of the inputs. */ class FunctionBuilder { + name; + variants; + vectorized; constructor(name) { this.name = name; this.variants = []; @@ -13429,7 +13620,6 @@ var DefaultFunctions; }) .add1("date", d => d) .add1("link", (link, c) => { - var _c, _d; // Try to parse from the display... if (link.display) { let parsedDate = EXPRESSION.date.parse(link.display); @@ -13442,8 +13632,8 @@ var DefaultFunctions; return parsedDate.value; // Then pull it from the file. let resolved = c.linkHandler.resolve(link.path); - if (resolved && ((_c = resolved === null || resolved === void 0 ? void 0 : resolved.file) === null || _c === void 0 ? void 0 : _c.day)) { - return (_d = resolved === null || resolved === void 0 ? void 0 : resolved.file) === null || _d === void 0 ? void 0 : _d.day; + if (resolved && resolved?.file?.day) { + return resolved?.file?.day; } return null; }) @@ -13465,6 +13655,7 @@ var DefaultFunctions; } } }) + .add2("null", "string", () => null) .add1("null", () => null) .vectorize(1, [0]) .build(); @@ -13831,6 +14022,17 @@ var DefaultFunctions; .add3("*", "*", "*", (b, left, right) => (Values.isTruthy(b) ? left : right)) .vectorize(3, [0]) .build(); + DefaultFunctions.hash = new FunctionBuilder("hash") + .add2("string", "number", (seed, variant) => { + return cyrb53(seed, variant); + }) + .add2("string", "string", (seed, text) => { + return cyrb53(seed + text); + }) + .add3("string", "string", "number", (seed, text, variant) => { + return cyrb53(seed + text, variant); + }) + .build(); DefaultFunctions.reduce = new FunctionBuilder("reduce") .add2("array", "string", (lis, op, context) => { if (lis.length == 0) @@ -13923,16 +14125,13 @@ var DefaultFunctions; .build(); /** Gets an object containing a link's own properties */ DefaultFunctions.meta = new FunctionBuilder("meta") - .add1("link", link => { - var _c, _d; - return ({ - display: (_c = link.display) !== null && _c !== void 0 ? _c : null, - embed: link.embed, - path: link.path, - subpath: (_d = link.subpath) !== null && _d !== void 0 ? _d : null, - type: link.type, - }); - }) + .add1("link", link => ({ + display: link.display ?? null, + embed: link.embed, + path: link.path, + subpath: link.subpath ?? null, + type: link.type, + })) .build(); // Concatenates sub-array elements into a new array DefaultFunctions.flat = new FunctionBuilder("flat") @@ -13945,38 +14144,71 @@ var DefaultFunctions; }) .add1("null", () => null) .build(); + // Slices the array into a new array + DefaultFunctions.slice = new FunctionBuilder("slice") + .add1("array", a => { + return a.slice(); + }) + .add2("array", "number", (a, start) => { + return a.slice(start); + }) + .add3("array", "number", "number", (a, start, end) => { + return a.slice(start, end); + }) + .add1("null", () => null) + .build(); })(DefaultFunctions || (DefaultFunctions = {})); /** Default function implementations for the expression evaluator. */ +// Keep functions in same order as they're documented !! const DEFAULT_FUNCTIONS = { - // Constructors. + // Constructors + object: DefaultFunctions.object, list: DefaultFunctions.list, array: DefaultFunctions.list, + date: DefaultFunctions.date, + dur: DefaultFunctions.dur, + number: DefaultFunctions.number, + string: DefaultFunctions.string, link: DefaultFunctions.link, embed: DefaultFunctions.embed, elink: DefaultFunctions.elink, - date: DefaultFunctions.date, - dur: DefaultFunctions.dur, - dateformat: DefaultFunctions.dateformat, - durationformat: DefaultFunctions.durationformat, - localtime: DefaultFunctions.localtime, - number: DefaultFunctions.number, - currencyformat: DefaultFunctions.currencyformat, - string: DefaultFunctions.string, - object: DefaultFunctions.object, typeof: DefaultFunctions.typeOf, - // Math Operations. + // Numeric Operations round: DefaultFunctions.round, trunc: DefaultFunctions.trunc, floor: DefaultFunctions.floor, ceil: DefaultFunctions.ceil, min: DefaultFunctions.min, max: DefaultFunctions.max, + sum: DefaultFunctions.sum, + product: DefaultFunctions.product, + average: DefaultFunctions.average, minby: DefaultFunctions.minby, maxby: DefaultFunctions.maxby, - // String operations. - regexreplace: DefaultFunctions.regexreplace, + // Object, Arrays, and String operations + contains: DefaultFunctions.contains, + icontains: DefaultFunctions.icontains, + econtains: DefaultFunctions.econtains, + containsword: DefaultFunctions.containsword, + extract: DefaultFunctions.extract, + sort: DefaultFunctions.sort, + reverse: DefaultFunctions.reverse, + length: DefaultFunctions.length, + nonnull: DefaultFunctions.nonnull, + all: DefaultFunctions.all, + any: DefaultFunctions.any, + none: DefaultFunctions.none, + join: DefaultFunctions.join, + filter: DefaultFunctions.filter, + map: DefaultFunctions.map, + flat: DefaultFunctions.flat, + slice: DefaultFunctions.slice, + unique: DefaultFunctions.unique, + reduce: DefaultFunctions.reduce, + // String Operations regextest: DefaultFunctions.regextest, regexmatch: DefaultFunctions.regexmatch, + regexreplace: DefaultFunctions.regexreplace, replace: DefaultFunctions.replace, lower: DefaultFunctions.lower, upper: DefaultFunctions.upper, @@ -13987,41 +14219,23 @@ const DEFAULT_FUNCTIONS = { padright: DefaultFunctions.padright, substring: DefaultFunctions.substring, truncate: DefaultFunctions.truncate, - // Date Operations. - striptime: DefaultFunctions.striptime, - // List operations. - length: DefaultFunctions.length, - contains: DefaultFunctions.contains, - icontains: DefaultFunctions.icontains, - econtains: DefaultFunctions.econtains, - containsword: DefaultFunctions.containsword, - reverse: DefaultFunctions.reverse, - sort: DefaultFunctions.sort, - flat: DefaultFunctions.flat, - // Aggregation operations like reduce. - reduce: DefaultFunctions.reduce, - join: DefaultFunctions.join, - sum: DefaultFunctions.sum, - product: DefaultFunctions.product, - average: DefaultFunctions.average, - all: DefaultFunctions.all, - any: DefaultFunctions.any, - none: DefaultFunctions.none, - filter: DefaultFunctions.filter, - unique: DefaultFunctions.unique, - map: DefaultFunctions.map, - nonnull: DefaultFunctions.nonnull, - // Object/Utility operations. - extract: DefaultFunctions.extract, + // Utility Operations default: DefaultFunctions.fdefault, ldefault: DefaultFunctions.ldefault, choice: DefaultFunctions.choice, + striptime: DefaultFunctions.striptime, + dateformat: DefaultFunctions.dateformat, + durationformat: DefaultFunctions.durationformat, + currencyformat: DefaultFunctions.currencyformat, + localtime: DefaultFunctions.localtime, + hash: DefaultFunctions.hash, meta: DefaultFunctions.meta, }; /** Provides a global dispatch table for evaluating binary operators, including comparison. */ /** Provides implementations for binary operators on two types using a registry. */ class BinaryOpHandler { + map; static create() { return new BinaryOpHandler(); } @@ -14125,6 +14339,11 @@ function createBinaryOps(linkNormalizer) { * for binary operators. */ class Context { + linkHandler; + settings; + globals; + binaryOps; + functions; /** * Create a new context with the given namespace of globals, as well as optionally with custom binary operator, function, * and link handlers. @@ -14143,8 +14362,7 @@ class Context { } /** Get the value of a global variable by name. Returns null if not present. */ get(name) { - var _a; - return (_a = this.globals[name]) !== null && _a !== void 0 ? _a : null; + return this.globals[name] ?? null; } /** Try to evaluate an arbitrary field in this context, raising an exception on failure. */ tryEvaluate(field, data = {}) { @@ -14152,7 +14370,6 @@ class Context { } /** Evaluate an arbitrary field in this context. */ evaluate(field, data = {}) { - var _a, _b; switch (field.type) { case "literal": return Result.success(field.value); @@ -14247,14 +14464,14 @@ class Context { case "object": if (!Values.isString(index)) return Result.failure('can only index into objects with strings (a.b or a["b"])'); - return Result.success((_a = object.value[index]) !== null && _a !== void 0 ? _a : null); + return Result.success(object.value[index] ?? null); case "link": if (!Values.isString(index)) return Result.failure('can only index into links with strings (a.b or a["b"])'); let linkValue = this.linkHandler.resolve(object.value.path); if (Values.isNull(linkValue)) return Result.success(null); - return Result.success((_b = linkValue[index]) !== null && _b !== void 0 ? _b : null); + return Result.success(linkValue[index] ?? null); case "array": if (Values.isNumber(index)) { if (index >= object.value.length || index < 0) @@ -14550,14 +14767,13 @@ function executeCoreExtract(rows, context, ops, fields) { } /** Execute a list-based query, returning the final results. */ async function executeList(query, index, origin, settings) { - var _a, _b; // Start by collecting all of the files that match the 'from' queries. let fileset = await resolveSource(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); let targetField = query.header.format; let showId = query.header.showId; @@ -14565,10 +14781,10 @@ async function executeList(query, index, origin, settings) { return executeCoreExtract(fileset.value, rootContext, query.operations, fields).map(core => { let data; if (showId && targetField) { - data = core.data.map(p => { var _a; return Widgets.listPair(p.id, (_a = p.data["target"]) !== null && _a !== void 0 ? _a : null); }); + data = core.data.map(p => Widgets.listPair(p.id, p.data["target"] ?? null)); } else if (targetField) { - data = core.data.map(p => { var _a; return (_a = p.data["target"]) !== null && _a !== void 0 ? _a : null; }); + data = core.data.map(p => p.data["target"] ?? null); } else { data = core.data.map(p => p.id); @@ -14578,14 +14794,13 @@ async function executeList(query, index, origin, settings) { } /** Execute a table query. */ async function executeTable(query, index, origin, settings) { - var _a, _b; // Start by collecting all of the files that match the 'from' queries. let fileset = await resolveSource(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); let targetFields = query.header.fields; let showId = query.header.showId; @@ -14621,7 +14836,6 @@ function extractTaskGroupings(id, rows) { } /** Execute a task query, returning all matching tasks. */ async function executeTask(query, origin, index, settings) { - var _a, _b; let fileset = matchingSourcePaths(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); @@ -14647,7 +14861,7 @@ async function executeTask(query, origin, index, settings) { } // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); return executeCore(incomingTasks, rootContext, query.operations).map(core => { return { @@ -14658,9 +14872,8 @@ async function executeTask(query, origin, index, settings) { } /** Execute a single field inline a file, returning the evaluated result. */ function executeInline(field, origin, index, settings) { - var _a, _b; return new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }).evaluate(field); } /** The default link resolver used when creating contexts. */ @@ -14676,9 +14889,8 @@ function defaultLinkHandler(index, origin) { return realPage.serialize(index); }, normalize: link => { - var _a; let realFile = index.metadataCache.getFirstLinkpathDest(link, origin); - return (_a = realFile === null || realFile === void 0 ? void 0 : realFile.path) !== null && _a !== void 0 ? _a : link; + return realFile?.path ?? link; }, exists: link => { let realFile = index.metadataCache.getFirstLinkpathDest(link, origin); @@ -14688,14 +14900,13 @@ function defaultLinkHandler(index, origin) { } /** Execute a calendar-based query, returning the final results. */ async function executeCalendar(query, index, origin, settings) { - var _a, _b; // Start by collecting all of the files that match the 'from' queries. let fileset = await resolveSource(query.source, index, origin); if (!fileset.successful) return Result.failure(fileset.error); // Extract information about the origin page to add to the root context. let rootContext = new Context(defaultLinkHandler(index, origin), settings, { - this: (_b = (_a = index.pages.get(origin)) === null || _a === void 0 ? void 0 : _a.serialize(index)) !== null && _b !== void 0 ? _b : {}, + this: index.pages.get(origin)?.serialize(index) ?? {}, }); let targetField = query.header.field.field; let fields = { @@ -14922,7 +15133,6 @@ function RawEmbedHtml({ element }) { const EmbedHtml = wn.memo(RawEmbedHtml); /** Intelligently render an arbitrary literal value. */ function RawLit({ value, sourcePath, inline = false, depth = 0, }) { - var _a, _b, _c; const context = q$1(DataviewContext); // Short-circuit if beyond the maximum render depth. if (depth >= context.settings.maxRecursiveRenderDepth) @@ -14974,7 +15184,7 @@ function RawLit({ value, sourcePath, inline = false, depth = 0, }) { y$1(Lit, { value: value.value, sourcePath: sourcePath }))); } else if (Widgets.isExternalLink(value)) { - return (y$1("a", { href: value.url, rel: "noopener", target: "_blank", class: "external-link" }, (_a = value.display) !== null && _a !== void 0 ? _a : value.url)); + return (y$1("a", { href: value.url, rel: "noopener", target: "_blank", class: "external-link" }, value.display ?? value.url)); } else { return y$1("b", null, @@ -15001,7 +15211,7 @@ function RawLit({ value, sourcePath, inline = false, depth = 0, }) { } else if (Values.isObject(value)) { // Don't render classes in case they have recursive references; spoopy. - if (((_b = value === null || value === void 0 ? void 0 : value.constructor) === null || _b === void 0 ? void 0 : _b.name) && ((_c = value === null || value === void 0 ? void 0 : value.constructor) === null || _c === void 0 ? void 0 : _c.name) != "Object") { + if (value?.constructor?.name && value?.constructor?.name != "Object") { return y$1(k$2, null, "<", value.constructor.name, @@ -15073,6 +15283,8 @@ function useIndexBackedState(container, app, settings, index, initial, compute) } /** A trivial wrapper which allows a react component to live for the duration of a `MarkdownRenderChild`. */ class ReactRenderer extends obsidian.MarkdownRenderChild { + init; + element; constructor(init, element) { super(init.container); this.init = init; @@ -15093,7 +15305,6 @@ function wasLinkPressed(evt) { } /** JSX component which renders a task element recursively. */ function TaskItem({ item }) { - var _a; let context = q$1(DataviewContext); // Navigate to the given task on click. const onClicked = (evt) => { @@ -15120,7 +15331,7 @@ function TaskItem({ item }) { const status = completed ? "x" : " "; // Update data-task on the parent element (css style) const parent = evt.currentTarget.parentElement; - parent === null || parent === void 0 ? void 0 : parent.setAttribute("data-task", status); + parent?.setAttribute("data-task", status); let flatted = [item]; if (context.settings.recursiveSubTaskCompletion) { function flatter(iitem) { @@ -15146,12 +15357,11 @@ function TaskItem({ item }) { const checked = item.status !== " "; return (y$1("li", { class: "dataview task-list-item" + (checked ? " is-checked" : ""), onClick: onClicked, "data-task": item.status }, y$1("input", { class: "dataview task-list-item-checkbox", type: "checkbox", checked: checked, onClick: onChecked }), - y$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), + y$1(Markdown, { inline: true, content: item.visual ?? item.text, sourcePath: item.path }), item.children.length > 0 && y$1(TaskList, { items: item.children }))); } /** JSX component which renders a plain list item recursively. */ function ListItem({ item }) { - var _a; let context = q$1(DataviewContext); // Navigate to the given task on click. const onClicked = (evt) => { @@ -15172,7 +15382,7 @@ function ListItem({ item }) { context.app.workspace.openLinkText(item.link.toFile().obsidianLink(), item.path, evt.ctrlKey || (evt.metaKey && obsidian.Platform.isMacOS), selectionState); }; return (y$1("li", { class: "dataview task-list-basic-item", onClick: onClicked }, - y$1(Markdown, { inline: true, content: (_a = item.visual) !== null && _a !== void 0 ? _a : item.text, sourcePath: item.path }), + y$1(Markdown, { inline: true, content: item.visual ?? item.text, sourcePath: item.path }), item.children.length > 0 && y$1(TaskList, { items: item.children }))); } /** JSX component which renders a list of task items recursively. */ @@ -15318,7 +15528,7 @@ function setTaskCompletion(originalText, useEmojiShorthand, completionKey, compl else { processedPart = setInlineField(processedPart, completionKey, DateTime.now().toFormat(completionDateFormat)); } - processedPart = `${processedPart.trimEnd()}${(matches === null || matches === void 0 ? void 0 : matches.length) ? " " + matches[0].trim() : ""}`.trimEnd(); // add back block id + processedPart = `${processedPart.trimEnd()}${matches?.length ? " " + matches[0].trim() : ""}`.trimEnd(); // add back block id parts[parts.length - 1] = processedPart; return parts.join("\n"); } @@ -15475,6 +15685,16 @@ const QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ .map(str => str.toLowerCase()) .desc("query type ('TABLE', 'LIST', 'TASK', or 'CALENDAR')"), explicitNamedField: q => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.whitespace), parsimmon_umd_minExports.regexp(/AS/i).skip(parsimmon_umd_minExports.whitespace), EXPRESSION.identifier.or(EXPRESSION.string), (field, _as, ident) => QueryFields.named(ident, field)), + comment: () => parsimmon_umd_minExports.Parser((input, i) => { + // Parse a comment, which is a line starting with //. + let line = input.substring(i); + if (!line.startsWith("//")) + return parsimmon_umd_minExports.makeFailure(i, "Not a comment"); + // The comment ends at the end of the line. + line = line.split("\n")[0]; + let comment = line.substring(2).trim(); + return parsimmon_umd_minExports.makeSuccess(i + line.length, comment); + }), namedField: q => parsimmon_umd_minExports.alt(q.explicitNamedField, captureRaw(EXPRESSION.field).map(([value, text]) => QueryFields.named(stripNewlines(text), value))), sortField: q => parsimmon_umd_minExports.seqMap(EXPRESSION.field.skip(parsimmon_umd_minExports.optWhitespace), parsimmon_umd_minExports.regexp(/ASCENDING|DESCENDING|ASC|DESC/i).atMost(1), (field, dir) => { let direction = dir.length == 0 ? "ascending" : dir[0].toLowerCase(); @@ -15540,7 +15760,7 @@ const QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ }).desc("GROUP BY [AS ]"), // Full query parsing. clause: q => parsimmon_umd_minExports.alt(q.fromClause, q.whereClause, q.sortByClause, q.limitClause, q.groupByClause, q.flattenClause), - query: q => parsimmon_umd_minExports.seqMap(q.headerClause.trim(parsimmon_umd_minExports.optWhitespace), q.fromClause.trim(parsimmon_umd_minExports.optWhitespace).atMost(1), q.clause.trim(parsimmon_umd_minExports.optWhitespace).many(), (header, from, clauses) => { + query: q => parsimmon_umd_minExports.seqMap(q.headerClause.trim(optionalWhitespaceOrComment), q.fromClause.trim(optionalWhitespaceOrComment).atMost(1), q.clause.trim(optionalWhitespaceOrComment).many(), (header, from, clauses) => { return { header, source: from.length == 0 ? Sources.folder("") : from[0], @@ -15549,6 +15769,13 @@ const QUERY_LANGUAGE = parsimmon_umd_minExports.createLanguage({ }; }), }); +/** + * A parser for optional whitespace or comments. This is used to exclude whitespace and comments from other parsers. + */ +const optionalWhitespaceOrComment = parsimmon_umd_minExports.alt(parsimmon_umd_minExports.whitespace, QUERY_LANGUAGE.comment) + .many() // Use many() since there may be zero whitespaces or comments. + // Transform the many to a single result. + .map(arr => arr.join("")); /** * Attempt to parse a query from the given query text, returning a string error * if the parse failed. @@ -18220,20 +18447,17 @@ class Calendar extends SvelteComponent { /** Generic code for embedded Dataviews. */ class DataviewRefreshableRenderer extends obsidian.MarkdownRenderChild { + container; + index; + app; + settings; + lastReload; constructor(container, index, app, settings) { super(container); this.container = container; this.index = index; this.app = app; this.settings = settings; - this.maybeRefresh = () => { - // If the index revision has changed recently, then queue a reload. - // But only if we're mounted in the DOM and auto-refreshing is active. - if (this.lastReload != this.index.revision && this.container.isShown() && this.settings.refreshEnabled) { - this.lastReload = this.index.revision; - this.render(); - } - }; this.lastReload = 0; } onload() { @@ -18244,9 +18468,24 @@ class DataviewRefreshableRenderer extends obsidian.MarkdownRenderChild { // ...or when the DOM is shown (sidebar expands, tab selected, nodes scrolled into view). this.register(this.container.onNodeInserted(this.maybeRefresh)); } + maybeRefresh = () => { + // If the index revision has changed recently, then queue a reload. + // But only if we're mounted in the DOM and auto-refreshing is active. + if (this.lastReload != this.index.revision && this.container.isShown() && this.settings.refreshEnabled) { + this.lastReload = this.index.revision; + this.render(); + } + }; } class DataviewCalendarRenderer extends DataviewRefreshableRenderer { + query; + container; + index; + origin; + settings; + app; + calendar; constructor(query, container, index, origin, settings, app) { super(container, index, app, settings); this.query = query; @@ -18257,7 +18496,6 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { this.app = app; } async render() { - var _a; this.container.innerHTML = ""; let maybeResult = await asyncTryOrPropogate(() => executeCalendar(this.query, this.index, this.origin, this.settings)); if (!maybeResult.successful) { @@ -18281,7 +18519,7 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { dateMap.set(d, [dot]); } else { - (_a = dateMap.get(d)) === null || _a === void 0 ? void 0 : _a.push(dot); + dateMap.get(d)?.push(dot); } } const querySource = { @@ -18302,7 +18540,7 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { if (!vals || vals.length == 0) { return; } - if ((vals === null || vals === void 0 ? void 0 : vals.length) == 0) { + if (vals?.length == 0) { return; } renderer.app.workspace.trigger("link-hover", {}, targetEl, vals[0].link.path, vals[0].link.path); @@ -18312,7 +18550,7 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { if (!vals || vals.length == 0) { return; } - if ((vals === null || vals === void 0 ? void 0 : vals.length) == 0) { + if (vals?.length == 0) { return; } const file = renderer.app.metadataCache.getFirstLinkpathDest(vals[0].link.path, ""); @@ -18338,6 +18576,8 @@ class DataviewCalendarRenderer extends DataviewRefreshableRenderer { /** Fancy wrappers for the JavaScript API, used both by external plugins AND by the dataview javascript view. */ /** Asynchronous API calls related to file / system IO. */ class DataviewInlineIOApi { + api; + currentFile; constructor(api, currentFile) { this.api = api; this.currentFile = currentFile; @@ -18356,14 +18596,39 @@ class DataviewInlineIOApi { } } class DataviewInlineApi { + /** + * The raw dataview indices, which track file <-> metadata relations. Use these if the intuitive API does not support + * your use case. + */ + index; + /** The component that handles the lifetime of this view. Use it if you are adding custom event handlers/components. */ + component; + /** The path to the current file this script is running in. */ + currentFilePath; + /** + * The container which holds the output of this view. You can directly append fields to this, if you wish, though + * the rendering API is likely to be easier for straight-forward purposes. + */ + container; + /** Directly access the Obsidian app object, such as for reaching out to other plugins. */ + app; + /** The general plugin API which much of this inline API delegates to. */ + api; + /** Settings which determine defaults, incl. many rendering options. */ + settings; + /** Evaluation context which expressions can be evaluated in. */ + evaluationContext; + /** Value utilities which allow for type-checking and comparisons. */ + value = Values; + /** Widget utility functions for creating built-in widgets. */ + widget = Widgets; + /** IO utilities which are largely asynchronous. */ + io; + /** Re-exporting of luxon for people who can't easily require it. Sorry! */ + luxon = Luxon; + /** Dataview functions which can be called from DataviewJS. */ + func; constructor(api, component, container, currentFilePath) { - var _a, _b; - /** Value utilities which allow for type-checking and comparisons. */ - this.value = Values; - /** Widget utility functions for creating built-in widgets. */ - this.widget = Widgets; - /** Re-exporting of luxon for people who can't easily require it. Sorry! */ - this.luxon = Luxon; this.index = api.index; this.app = api.app; this.settings = api.settings; @@ -18373,7 +18638,7 @@ class DataviewInlineApi { this.api = api; this.io = new DataviewInlineIOApi(this.api.io, this.currentFilePath); // Set up the evaluation context with variables from the current file. - let fileMeta = (_b = (_a = this.index.pages.get(this.currentFilePath)) === null || _a === void 0 ? void 0 : _a.serialize(this.index)) !== null && _b !== void 0 ? _b : {}; + let fileMeta = this.index.pages.get(this.currentFilePath)?.serialize(this.index) ?? {}; this.evaluationContext = new Context(defaultLinkHandler(this.index, this.currentFilePath), this.settings, { this: fileMeta, }); @@ -18403,19 +18668,19 @@ class DataviewInlineApi { /////////////////////////////// /** Execute a Dataview query, returning the results in programmatic form. */ async query(source, originFile, settings) { - return this.api.query(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.query(source, originFile ?? this.currentFilePath, settings); } /** Error-throwing version of {@link query}. */ async tryQuery(source, originFile, settings) { - return this.api.tryQuery(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.tryQuery(source, originFile ?? this.currentFilePath, settings); } /** Execute a Dataview query, returning the results in Markdown. */ async queryMarkdown(source, originFile, settings) { - return this.api.queryMarkdown(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.queryMarkdown(source, originFile ?? this.currentFilePath, settings); } /** Error-throwing version of {@link queryMarkdown}. */ async tryQueryMarkdown(source, originFile, settings) { - return this.api.tryQueryMarkdown(source, originFile !== null && originFile !== void 0 ? originFile : this.currentFilePath, settings); + return this.api.tryQueryMarkdown(source, originFile ?? this.currentFilePath, settings); } /** * Evaluate a dataview expression (like '2 + 2' or 'link("hello")'), returning the evaluated result. @@ -18521,7 +18786,7 @@ class DataviewInlineApi { return container.createEl(el, Object.assign({ text }, options)); } let _el = container.createEl(el, options); - renderValue(wrapped.value, _el, this.currentFilePath, this.component, this.settings, true); + renderValue(this.app, wrapped.value, _el, this.currentFilePath, this.component, this.settings, true); return _el; } /** Render an HTML header; the level can be anything from 1 - 6. */ @@ -18548,6 +18813,7 @@ class DataviewInlineApi { const simpleViewPath = `${viewName}.js`; const complexViewPath = `${viewName}/view.js`; let checkForCss = false; + let cssElement = undefined; let viewFile = this.app.metadataCache.getFirstLinkpathDest(simpleViewPath, this.currentFilePath); if (!viewFile) { viewFile = this.app.metadataCache.getFirstLinkpathDest(complexViewPath, this.currentFilePath); @@ -18557,6 +18823,15 @@ class DataviewInlineApi { renderErrorPre(this.container, `Dataview: custom view not found for '${simpleViewPath}' or '${complexViewPath}'.`); return; } + if (checkForCss) { + // Check for optional CSS. + let cssFile = this.app.metadataCache.getFirstLinkpathDest(`${viewName}/view.css`, this.currentFilePath); + if (cssFile) { + let cssContents = await this.app.vault.read(cssFile); + cssContents += `\n/*# sourceURL=${location.origin}/${cssFile.path} */`; + cssElement = this.container.createEl("style", { text: cssContents, attr: { scope: " " } }); + } + } let contents = await this.app.vault.read(viewFile); if (contents.contains("await")) contents = "(async () => { " + contents + " })()"; @@ -18566,21 +18841,13 @@ class DataviewInlineApi { // This may directly render, in which case it will likely return undefined or null. let result = await Promise.resolve(func(this, input)); if (result) - await renderValue(result, this.container, this.currentFilePath, this.component, this.settings, true); + await renderValue(this.app, result, this.container, this.currentFilePath, this.component, this.settings, true); } catch (ex) { + if (cssElement) + this.container.removeChild(cssElement); renderErrorPre(this.container, `Dataview: Failed to execute view '${viewFile.path}'.\n\n${ex}`); } - if (!checkForCss) { - return; - } - // Check for optional CSS. - let cssFile = this.app.metadataCache.getFirstLinkpathDest(`${viewName}/view.css`, this.currentFilePath); - if (!cssFile) - return; - let cssContents = await this.app.vault.read(cssFile); - cssContents += `\n/*# sourceURL=${location.origin}/${cssFile.path} */`; - this.container.createEl("style", { text: cssContents, attr: { scope: " " } }); } /** Render a dataview list of the given values. */ list(values) { @@ -18631,6 +18898,11 @@ async function asyncEvalInContext(script, context) { } class DataviewJSRenderer extends DataviewRefreshableRenderer { + api; + script; + container; + origin; + static PREAMBLE = "const dataview = this;const dv = this;"; constructor(api, script, container, origin) { super(container, api.index, api.app, api.settings); this.api = api; @@ -18655,9 +18927,16 @@ class DataviewJSRenderer extends DataviewRefreshableRenderer { } } } -DataviewJSRenderer.PREAMBLE = "const dataview = this;const dv = this;"; /** Inline JS renderer accessible using '=$' by default. */ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { + api; + script; + container; + target; + origin; + static PREAMBLE = "const dataview = this;const dv=this;"; + // The box that the error is rendered in, if relevant. + errorbox; constructor(api, script, container, target, origin) { super(container, api.index, api.app, api.settings); this.api = api; @@ -18667,8 +18946,7 @@ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { this.origin = origin; } async render() { - var _a; - (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); + this.errorbox?.remove(); if (!this.settings.enableDataviewJs || !this.settings.enableInlineDataviewJs) { let temp = document.createElement("span"); temp.innerText = "(disabled; enable in settings)"; @@ -18684,7 +18962,7 @@ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { this.target = temp; if (result === undefined) return; - renderValue(result, temp, this.origin, this, this.settings, false); + renderValue(this.api.app, result, temp, this.origin, this, this.settings, false); } catch (e) { this.errorbox = this.container.createEl("div"); @@ -18692,7 +18970,6 @@ class DataviewInlineJSRenderer extends DataviewRefreshableRenderer { } } } -DataviewInlineJSRenderer.PREAMBLE = "const dataview = this;const dv=this;"; //////////// // Tables // @@ -18701,7 +18978,7 @@ DataviewInlineJSRenderer.PREAMBLE = "const dataview = this;const dv=this;"; function markdownTable(headers, values, settings) { if (values.length > 0 && headers.length != values[0].length) throw new Error(`The number of headers (${headers.length}) must match the number of columns (${values[0].length})`); - settings = settings !== null && settings !== void 0 ? settings : DEFAULT_SETTINGS; + settings = settings ?? DEFAULT_SETTINGS; const mvalues = []; const maxLengths = Array.from(headers, v => escapeTable(v).length); // Pre-construct the table in memory so we can size columns. @@ -18796,7 +19073,6 @@ function markdownListRec(input, settings, depth = 0) { /////////// /** Render the result of a task query to markdown. */ function markdownTaskList(tasks, settings, depth = 0) { - var _a, _b; if (Groupings.isGrouping(tasks)) { let result = ""; for (let element of tasks) { @@ -18812,10 +19088,10 @@ function markdownTaskList(tasks, settings, depth = 0) { for (let element of dedupTasks) { result += " ".repeat(depth) + "- "; if (element.task) { - result += `[${element.status}] ${((_a = element.visual) !== null && _a !== void 0 ? _a : element.text).split("\n").join(" ")}\n`; + result += `[${element.status}] ${(element.visual ?? element.text).split("\n").join(" ")}\n`; } else { - result += `${((_b = element.visual) !== null && _b !== void 0 ? _b : element.text).split("\n").join(" ")}\n`; + result += `${(element.visual ?? element.text).split("\n").join(" ")}\n`; } result += markdownTaskList(element.children, settings, depth + 1); } @@ -18826,6 +19102,7 @@ function markdownTaskList(tasks, settings, depth = 0) { /** The general, externally accessible plugin API (available at `app.plugins.plugins.dataview.api` or as global `DataviewAPI`). */ /** Asynchronous API calls related to file / system IO. */ class DataviewIOApi { + api; constructor(api) { this.api = api; } @@ -18838,7 +19115,7 @@ class DataviewIOApi { if (data.successful) return DataArray.from(data.value, this.api.settings); else - throw Error(`Could not find CSV for path '${path}' (relative to origin '${originFile !== null && originFile !== void 0 ? originFile : "/"}')`); + throw Error(`Could not find CSV for path '${path}' (relative to origin '${originFile ?? "/"}')`); } /** Asynchronously load the contents of any link or path in an Obsidian vault. */ async load(path, originFile) { @@ -18862,32 +19139,42 @@ class DataviewIOApi { } /** Global API for accessing the Dataview API, executing dataview queries, and */ class DataviewApi { + app; + index; + settings; + verNum; + /** Evaluation context which expressions can be evaluated in. */ + evaluationContext; + /** IO API which supports asynchronous loading of data directly. */ + io; + /** Dataview functions which can be called from DataviewJS. */ + func; + /** Value utility functions for comparisons and type-checking. */ + value = Values; + /** Widget utility functions for creating built-in widgets. */ + widget = Widgets; + /** Re-exporting of luxon for people who can't easily require it. Sorry! */ + luxon = Luxon; constructor(app, index, settings, verNum) { this.app = app; this.index = index; this.settings = settings; this.verNum = verNum; - /** Value utility functions for comparisons and type-checking. */ - this.value = Values; - /** Widget utility functions for creating built-in widgets. */ - this.widget = Widgets; - /** Re-exporting of luxon for people who can't easily require it. Sorry! */ - this.luxon = Luxon; - /** Utilities to check the current Dataview version and comapre it to SemVer version ranges. */ - this.version = (() => { - const { verNum: version } = this; - return { - get current() { - return version; - }, - compare: (op, ver) => compare(version, ver, op), - satisfies: (range) => satisfies(version, range), - }; - })(); this.evaluationContext = new Context(defaultLinkHandler(index, ""), settings); this.func = Functions.bindAll(DEFAULT_FUNCTIONS, this.evaluationContext); this.io = new DataviewIOApi(this); } + /** Utilities to check the current Dataview version and comapre it to SemVer version ranges. */ + version = (() => { + const self = this; + return { + get current() { + return self.verNum; + }, + compare: (op, ver) => compare(this.verNum, ver, op), + satisfies: (range) => satisfies(this.verNum, range), + }; + })(); ///////////////////////////// // Index + Data Collection // ///////////////////////////// @@ -18913,7 +19200,7 @@ class DataviewApi { throw Error("dv.page only handles string and link paths; was provided type '" + typeof path + "'"); } let rawPath = path instanceof Link ? path.path : path; - let normPath = this.app.metadataCache.getFirstLinkpathDest(rawPath, originFile !== null && originFile !== void 0 ? originFile : ""); + let normPath = this.app.metadataCache.getFirstLinkpathDest(rawPath, originFile ?? ""); if (!normPath) return undefined; let pageObject = this.index.pages.get(normPath.path); @@ -19027,19 +19314,19 @@ class DataviewApi { const header = query.value.header; switch (header.type) { case "calendar": - const cres = await executeCalendar(query.value, this.index, originFile !== null && originFile !== void 0 ? originFile : "", this.settings); + const cres = await executeCalendar(query.value, this.index, originFile ?? "", this.settings); if (!cres.successful) return cres.cast(); return Result.success({ type: "calendar", values: cres.value.data }); case "task": - const tasks = await executeTask(query.value, originFile !== null && originFile !== void 0 ? originFile : "", this.index, this.settings); + const tasks = await executeTask(query.value, originFile ?? "", this.index, this.settings); if (!tasks.successful) return tasks.cast(); return Result.success({ type: "task", values: tasks.value.tasks }); case "list": - if ((settings === null || settings === void 0 ? void 0 : settings.forceId) !== undefined) + if (settings?.forceId !== undefined) header.showId = settings.forceId; - const lres = await executeList(query.value, this.index, originFile !== null && originFile !== void 0 ? originFile : "", this.settings); + const lres = await executeList(query.value, this.index, originFile ?? "", this.settings); if (!lres.successful) return lres.cast(); // TODO: WITHOUT ID probably shouldn't exist, or should be moved to the engine itself. @@ -19050,9 +19337,9 @@ class DataviewApi { primaryMeaning: lres.value.primaryMeaning, }); case "table": - if ((settings === null || settings === void 0 ? void 0 : settings.forceId) !== undefined) + if (settings?.forceId !== undefined) header.showId = settings.forceId; - const tres = await executeTable(query.value, this.index, originFile !== null && originFile !== void 0 ? originFile : "", this.settings); + const tres = await executeTable(query.value, this.index, originFile ?? "", this.settings); if (!tres.successful) return tres.cast(); return Result.success({ @@ -19113,6 +19400,13 @@ class DataviewApi { tryEvaluate(expression, context, originFile) { return this.evaluate(expression, context, originFile).orElseThrow(); } + /** Evaluate an expression in the context of the given file. */ + evaluateInline(expression, origin) { + let field = EXPRESSION.field.parse(expression); + if (!field.status) + return Result.failure(`Failed to parse expression "${expression}"`); + return executeInline(field.value, origin, this.index, this.settings); + } /////////////// // Rendering // /////////////// @@ -19202,7 +19496,7 @@ class DataviewApi { } /** Render an arbitrary value into a container. */ async renderValue(value, container, component, filePath, inline = false) { - return renderValue(value, container, filePath, component, this.settings, inline); + return renderValue(this.app, value, container, filePath, component, this.settings, inline); } ///////////////// // Data Export // @@ -19234,6 +19528,8 @@ class DataviewApi { } /** Determines if source-path has a `?no-dataview` annotation that disables dataview. */ function isDataviewDisabled(sourcePath) { + if (!sourcePath) + return false; let questionLocation = sourcePath.lastIndexOf("?"); if (questionLocation == -1) return false; @@ -19242,6 +19538,16 @@ function isDataviewDisabled(sourcePath) { /** Refreshable renderer which renders inline instead of in a div. */ class DataviewInlineRenderer extends DataviewRefreshableRenderer { + field; + fieldText; + container; + target; + index; + origin; + settings; + app; + // The box that the error is rendered in, if relevant. + errorbox; constructor(field, fieldText, container, target, index, origin, settings, app) { super(container, index, app, settings); this.field = field; @@ -19254,8 +19560,7 @@ class DataviewInlineRenderer extends DataviewRefreshableRenderer { this.app = app; } async render() { - var _a; - (_a = this.errorbox) === null || _a === void 0 ? void 0 : _a.remove(); + this.errorbox?.remove(); let result = tryOrPropogate(() => executeInline(this.field, this.origin, this.index, this.settings)); if (!result.successful) { this.errorbox = this.container.createEl("div"); @@ -19264,7 +19569,7 @@ class DataviewInlineRenderer extends DataviewRefreshableRenderer { else { let temp = document.createElement("span"); temp.addClasses(["dataview", "dataview-inline-query"]); - await renderValue(result.value, temp, this.origin, this, this.settings, false); + await renderValue(this.app, result.value, temp, this.origin, this, this.settings, false); this.target.replaceWith(temp); } } @@ -19272,10 +19577,10 @@ class DataviewInlineRenderer extends DataviewRefreshableRenderer { /** Replaces raw textual inline fields in text containers with pretty HTML equivalents. */ async function replaceInlineFields(ctx, init) { - let inlineFields = extractInlineFields(init.container.innerHTML); + const inlineFields = extractInlineFields(init.container.innerHTML); if (inlineFields.length == 0) return; - let component = new obsidian.MarkdownRenderChild(init.container); + const component = new obsidian.MarkdownRenderChild(init.container); ctx.addChild(component); // Iterate through the raw HTML and replace inline field matches with corresponding rendered values. let result = init.container.innerHTML; @@ -19313,13 +19618,33 @@ async function replaceInlineFields(ctx, init) { // Replace the container children with the new rendered children. // TODO: Replace this with a dom-to-dom diff to reduce the actual amount of updates. init.container.replaceChildren(...template.content.childNodes); + let inlineFieldsFromText; + let hasRetrievedText = false; for (let index = 0; index < inlineFields.length; index++) { const box = init.container.querySelector("#dataview-inline-field-" + index); if (!box) continue; const context = Object.assign({}, init, { container: box, component: component }); + const parseInlineValueWrapper = (fieldVal) => { + if (fieldVal.startsWith(' { " + PREAMBLE + code + " })()").then((result) => { - renderValue(result, el, currentFile.path, this.component, settings); + renderValue(app, result, el, currentFile.path, this.component, settings); }); } else { result = evalInContext(PREAMBLE + code); - renderValue(result, el, currentFile.path, this.component, settings); + renderValue(app, result, el, currentFile.path, this.component, settings); } function evalInContext(script) { return function () { @@ -19655,7 +19989,7 @@ function inlinePlugin(app, index, settings, api) { return; } const tokenProps = type.prop(language.tokenClassNodeProp); - const props = new Set(tokenProps === null || tokenProps === void 0 ? void 0 : tokenProps.split(" ")); + const props = new Set(tokenProps?.split(" ")); const classes = getCssClasses(props); return view.Decoration.replace({ widget: new InlineWidget(classes, code, el, view$1), @@ -19669,15 +20003,250 @@ function inlinePlugin(app, index, settings, api) { }, { decorations: v => v.decorations }); } -class DataviewPlugin extends obsidian.Plugin { - constructor() { - super(...arguments); - this.debouncedRefresh = () => null; +class InlineFieldValue extends state.RangeValue { + field; + constructor(field) { + super(); + this.field = field; } + eq(other) { + return this.field.key == other.field.key && this.field.value == other.field.value; + } +} +function buildInlineFields(state$1) { + const builder = new state.RangeSetBuilder(); + const tree = language.syntaxTree(state$1); + for (let lineNumber = 1; lineNumber <= state$1.doc.lines; lineNumber++) { + const line = state$1.doc.line(lineNumber); + let isInsideCodeBlock = false; + tree.iterate({ + from: line.from, + to: line.to, + enter: node => { + // ignore code blocks + if (node.name.startsWith("HyperMD-codeblock")) { + isInsideCodeBlock = true; + } + return node.name == "Document"; + }, + }); + if (!isInsideCodeBlock) { + const inlineFields = extractInlineFields(line.text); + for (const field of inlineFields) { + builder.add(line.from + field.start, line.from + field.end, new InlineFieldValue(field)); + } + } + } + return builder.finish(); +} +/** A state field that stores the inline fields and their positions as a range set. */ +const inlineFieldsField = state.StateField.define({ + create: buildInlineFields, + update(oldFields, tr) { + return tr.docChanged ? buildInlineFields(tr.state) : oldFields; + }, +}); +/** Create a view plugin that renders inline fields in live preview just as in the reading view. */ +const replaceInlineFieldsInLivePreview = (app, settings) => view.ViewPlugin.fromClass(class { + decorations; + component; + constructor(view) { + this.component = new obsidian.Component(); + this.component.load(); + this.decorations = this.buildDecorations(view); + } + destroy() { + this.component.unload(); + } + buildDecorations(view$1) { + // Disable in the source mode + if (!view$1.state.field(obsidian.editorLivePreviewField)) + return view.Decoration.none; + const file = view$1.state.field(obsidian.editorInfoField).file; + if (!file) + return view.Decoration.none; + const info = view$1.state.field(inlineFieldsField); + const builder = new state.RangeSetBuilder(); + const selection = view$1.state.selection; + for (const { from, to } of view$1.visibleRanges) { + info.between(from, to, (start, end, { field }) => { + // If the inline field is not overlapping with the cursor, we replace it with a widget. + if (!selectionAndRangeOverlap(selection, start, end)) { + builder.add(start, end, view.Decoration.replace({ + widget: new InlineFieldWidget(app, field, file.path, this.component, settings, view$1), + })); + } + }); + } + return builder.finish(); + } + update(update) { + // only activate in LP and not source mode + if (!update.state.field(obsidian.editorLivePreviewField)) { + this.decorations = view.Decoration.none; + return; + } + const layoutChanged = update.transactions.some(transaction => transaction.effects.some(effect => effect.is(workspaceLayoutChangeEffect))); + if (update.docChanged) { + this.decorations = this.decorations.map(update.changes); + this.updateDecorations(update.view); + } + else if (update.selectionSet) { + this.updateDecorations(update.view); + } + else if (update.viewportChanged || layoutChanged) { + this.decorations = this.buildDecorations(update.view); + } + } + updateDecorations(view$1) { + const file = view$1.state.field(obsidian.editorInfoField).file; + if (!file) { + this.decorations = view.Decoration.none; + return; + } + const inlineFields = view$1.state.field(inlineFieldsField); + const selection = view$1.state.selection; + for (const { from, to } of view$1.visibleRanges) { + inlineFields.between(from, to, (start, end, { field }) => { + const overlap = selectionAndRangeOverlap(selection, start, end); + if (overlap) { + this.removeDeco(start, end); + return; + } + else { + this.addDeco(start, end, field, file, view$1); + } + }); + } + } + removeDeco(start, end) { + this.decorations.between(start, end, (from, to) => { + this.decorations = this.decorations.update({ + filterFrom: from, + filterTo: to, + filter: () => false, + }); + }); + } + addDeco(start, end, field, file, view$1) { + let exists = false; + this.decorations.between(start, end, () => { + exists = true; + }); + if (!exists) { + this.decorations = this.decorations.update({ + add: [ + { + from: start, + to: end, + value: view.Decoration.replace({ + widget: new InlineFieldWidget(app, field, file.path, this.component, settings, view$1), + }), + }, + ], + }); + } + } +}, { + decorations: instance => instance.decorations, +}); +/** A widget which inline fields are replaced with. */ +class InlineFieldWidget extends view.WidgetType { + app; + field; + sourcePath; + component; + settings; + view; + constructor(app, field, sourcePath, component, settings, view) { + super(); + this.app = app; + this.field = field; + this.sourcePath = sourcePath; + this.component = component; + this.settings = settings; + this.view = view; + } + eq(other) { + return this.field.key == other.field.key && this.field.value == other.field.value; + } + toDOM() { + // A large part of this method was taken from replaceInlineFields() in src/ui/views/inline-field.tsx. + // It will be better to extract the common part as a function... + const renderContainer = createSpan({ + cls: ["dataview", "inline-field"], + }); + // Block inline fields render the key, parenthesis ones do not. + if (this.field.wrapping == "[") { + const key = renderContainer.createSpan({ + cls: ["dataview", "inline-field-key"], + attr: { + "data-dv-key": this.field.key, + "data-dv-norm-key": canonicalizeVarName(this.field.key), + }, + }); + renderCompactMarkdown(this.app, this.field.key, key, this.sourcePath, this.component, true); + const value = renderContainer.createSpan({ + cls: ["dataview", "inline-field-value"], + }); + renderValue(this.app, parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); + this.addKeyClickHandler(key, renderContainer); + this.addValueClickHandler(value, renderContainer); + } + else { + const value = renderContainer.createSpan({ + cls: ["dataview", "inline-field-standalone-value"], + }); + renderValue(this.app, parseInlineValue(this.field.value), value, this.sourcePath, this.component, this.settings, false, undefined, undefined, true); + this.addValueClickHandler(value, renderContainer); + } + return renderContainer; + } + // https://github.com/blacksmithgu/obsidian-dataview/issues/2101 + // When the user clicks on a rendered inline field, move the cursor to the clicked position. + addKeyClickHandler(key, renderContainer) { + key.addEventListener("click", event => { + if (event instanceof MouseEvent) { + const rect = key.getBoundingClientRect(); + const relativePos = (event.x - rect.x) / rect.width; + const startPos = this.view.posAtCoords(renderContainer.getBoundingClientRect(), false); + const clickedPos = Math.round(startPos + (this.field.startValue - 2 - this.field.start) * relativePos); // 2 is the length of "::" + this.view.dispatch({ selection: { anchor: clickedPos } }); + } + }); + } + addValueClickHandler(value, renderContainer) { + value.addEventListener("click", event => { + if (event instanceof MouseEvent) { + const rect = value.getBoundingClientRect(); + const relativePos = (event.x - rect.x) / rect.width; + const startPos = this.view.posAtCoords(renderContainer.getBoundingClientRect(), false); + const clickedPos = Math.round(startPos + + (this.field.startValue - this.field.start) + + (this.field.end - this.field.startValue) * relativePos); + this.view.dispatch({ selection: { anchor: clickedPos } }); + } + }); + } +} +/** + * A state effect that represents the workspace's layout change. + * Mainly intended to detect when the user switches between live preview and source mode. + */ +const workspaceLayoutChangeEffect = state.StateEffect.define(); + +class DataviewPlugin extends obsidian.Plugin { + /** Plugin-wide default settings. */ + settings; + /** The index that stores all dataview data. */ + index; + /** External-facing plugin API. */ + api; + /** CodeMirror 6 extensions that dataview installs. Tracked via array to allow for dynamic updates. */ + cmExtension; async onload() { - var _a; // Settings initialization; write defaults first time around. - this.settings = Object.assign(DEFAULT_SETTINGS, (_a = (await this.loadData())) !== null && _a !== void 0 ? _a : {}); + this.settings = Object.assign(DEFAULT_SETTINGS, (await this.loadData()) ?? {}); this.addSettingTab(new GeneralSettingsTab(this.app, this)); this.index = this.addChild(FullIndex.create(this.app, this.manifest.version, () => { if (this.settings.refreshEnabled) @@ -19716,15 +20285,14 @@ class DataviewPlugin extends obsidian.Plugin { await replaceInlineFields(ctx, init); } }); - // editor extension for inline queries - if (this.settings.enableInlineDataview || this.settings.enableInlineDataviewJs) { - this.cmExtension = [inlinePlugin(this.app, this.index, this.settings, this.api)]; - this.registerEditorExtension(this.cmExtension); - } + // editor extensions + this.cmExtension = []; + this.registerEditorExtension(this.cmExtension); + this.updateEditorExtensions(); // Dataview "force refresh" operation. this.addCommand({ id: "dataview-force-refresh-views", - name: "Force Refresh All Views and Blocks", + name: "Force refresh all views and blocks", callback: () => { this.index.revision += 1; this.app.workspace.trigger("dataview:refresh-views"); @@ -19732,11 +20300,21 @@ class DataviewPlugin extends obsidian.Plugin { }); this.addCommand({ id: "dataview-drop-cache", - name: "Drop All Cached File Metadata", + name: "Drop all cached file metadata", callback: () => { this.index.reinitialize(); }, }); + this.addCommand({ + id: "dataview-rebuild-current-view", + name: "Rebuild current view", + callback: () => { + const activeView = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView); + if (activeView) { + activeView.leaf.rebuildView(); + } + }, + }); // Run index initialization, which actually traverses the vault to index files. if (!this.app.workspace.layoutReady) { this.app.workspace.onLayoutReady(async () => this.index.initialize()); @@ -19747,7 +20325,26 @@ class DataviewPlugin extends obsidian.Plugin { // Not required anymore, though holding onto it for backwards-compatibility. this.app.metadataCache.trigger("dataview:api-ready", this.api); console.log(`Dataview: version ${this.manifest.version} (requires obsidian ${this.manifest.minAppVersion})`); + // Mainly intended to detect when the user switches between live preview and source mode. + this.registerEvent(this.app.workspace.on("layout-change", () => { + this.app.workspace.iterateAllLeaves(leaf => { + if (leaf.view instanceof obsidian.MarkdownView && leaf.view.editor.cm) { + leaf.view.editor.cm.dispatch({ + effects: workspaceLayoutChangeEffect.of(null), + }); + } + }); + })); + this.registerDataviewjsCodeHighlighting(); + this.register(() => this.unregisterDataviewjsCodeHighlighting()); } + registerDataviewjsCodeHighlighting() { + window.CodeMirror.defineMode(this.settings.dataviewJsKeyword, config => window.CodeMirror.getMode(config, "javascript")); + } + unregisterDataviewjsCodeHighlighting() { + window.CodeMirror.defineMode(this.settings.dataviewJsKeyword, config => window.CodeMirror.getMode(config, "null")); + } + debouncedRefresh = () => null; updateRefreshSettings() { this.debouncedRefresh = obsidian.debounce(() => this.app.workspace.trigger("dataview:refresh-views"), this.settings.refreshInterval, true); } @@ -19764,15 +20361,28 @@ class DataviewPlugin extends obsidian.Plugin { let registered = this.registerMarkdownCodeBlockProcessor(language, processor); registered.sortOrder = priority; } + updateEditorExtensions() { + // Don't create a new array, keep the same reference + this.cmExtension.length = 0; + // editor extension for inline queries: enabled regardless of settings (enableInlineDataview/enableInlineDataviewJS) + this.cmExtension.push(inlinePlugin(this.app, this.index, this.settings, this.api)); + // editor extension for rendering inline fields in live preview + if (this.settings.prettyRenderInlineFieldsInLivePreview) { + this.cmExtension.push(inlineFieldsField, replaceInlineFieldsInLivePreview(this.app, this.settings)); + } + this.app.workspace.updateOptions(); + } /** * Based on the source, generate a dataview view. This works by doing an initial parsing pass, and then adding * a long-lived view object to the given component for life-cycle management. */ async dataview(source, el, component, sourcePath) { + el.style.overflowX = "auto"; this.api.execute(source, el, component, sourcePath); } /** Generate a DataviewJS view running the given source in the given element. */ async dataviewjs(source, el, component, sourcePath) { + el.style.overflowX = "auto"; this.api.executeJs(source, el, component, sourcePath); } /** Render all dataview inline expressions in the given element. */ @@ -19831,40 +20441,47 @@ class DataviewPlugin extends obsidian.Plugin { } /** All of the dataview settings in a single, nice tab. */ class GeneralSettingsTab extends obsidian.PluginSettingTab { + plugin; constructor(app, plugin) { super(app, plugin); this.plugin = plugin; } display() { this.containerEl.empty(); - this.containerEl.createEl("h2", { text: "General Settings" }); new obsidian.Setting(this.containerEl) - .setName("Enable Inline Queries") + .setName("Enable inline queries") .setDesc("Enable or disable executing regular inline Dataview queries.") .addToggle(toggle => toggle .setValue(this.plugin.settings.enableInlineDataview) .onChange(async (value) => await this.plugin.updateSettings({ enableInlineDataview: value }))); new obsidian.Setting(this.containerEl) - .setName("Enable JavaScript Queries") + .setName("Enable JavaScript queries") .setDesc("Enable or disable executing DataviewJS queries.") .addToggle(toggle => toggle .setValue(this.plugin.settings.enableDataviewJs) .onChange(async (value) => await this.plugin.updateSettings({ enableDataviewJs: value }))); new obsidian.Setting(this.containerEl) - .setName("Enable Inline JavaScript Queries") + .setName("Enable inline JavaScript queries") .setDesc("Enable or disable executing inline DataviewJS queries. Requires that DataviewJS queries are enabled.") .addToggle(toggle => toggle .setValue(this.plugin.settings.enableInlineDataviewJs) .onChange(async (value) => await this.plugin.updateSettings({ enableInlineDataviewJs: value }))); new obsidian.Setting(this.containerEl) - .setName("Enable Inline Field Highlighting") - .setDesc("Enables or disables visual highlighting / pretty rendering for inline fields.") + .setName("Enable inline field highlighting in reading view") + .setDesc("Enables or disables visual highlighting / pretty rendering for inline fields in reading view.") .addToggle(toggle => toggle .setValue(this.plugin.settings.prettyRenderInlineFields) .onChange(async (value) => await this.plugin.updateSettings({ prettyRenderInlineFields: value }))); - this.containerEl.createEl("h2", { text: "Codeblock Settings" }); new obsidian.Setting(this.containerEl) - .setName("DataviewJS Keyword") + .setName("Enable inline field highlighting in Live Preview") + .setDesc("Enables or disables visual highlighting / pretty rendering for inline fields in Live Preview.") + .addToggle(toggle => toggle.setValue(this.plugin.settings.prettyRenderInlineFieldsInLivePreview).onChange(async (value) => { + await this.plugin.updateSettings({ prettyRenderInlineFieldsInLivePreview: value }); + this.plugin.updateEditorExtensions(); + })); + new obsidian.Setting(this.containerEl).setName("Codeblocks").setHeading(); + new obsidian.Setting(this.containerEl) + .setName("DataviewJS keyword") .setDesc("Keyword for DataviewJS blocks. Defaults to 'dataviewjs'. Reload required for changes to take effect.") .addText(text => text .setPlaceholder("dataviewjs") @@ -19872,10 +20489,12 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { .onChange(async (value) => { if (value.length == 0) return; + this.plugin.unregisterDataviewjsCodeHighlighting(); await this.plugin.updateSettings({ dataviewJsKeyword: value }); + this.plugin.registerDataviewjsCodeHighlighting(); })); new obsidian.Setting(this.containerEl) - .setName("Inline Query Prefix") + .setName("Inline query prefix") .setDesc("The prefix to inline queries (to mark them as Dataview queries). Defaults to '='.") .addText(text => text .setPlaceholder("=") @@ -19886,7 +20505,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { await this.plugin.updateSettings({ inlineQueryPrefix: value }); })); new obsidian.Setting(this.containerEl) - .setName("JavaScript Inline Query Prefix") + .setName("JavaScript inline query prefix") .setDesc("The prefix to JavaScript inline queries (to mark them as DataviewJS queries). Defaults to '$='.") .addText(text => text .setPlaceholder("$=") @@ -19897,29 +20516,28 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { await this.plugin.updateSettings({ inlineJsQueryPrefix: value }); })); new obsidian.Setting(this.containerEl) - .setName("Codeblock Inline Queries") - .setDesc("If enabled, inline queries will also be evaluated inside full codeblocks.") + .setName("Code block inline queries") + .setDesc("If enabled, inline queries will also be evaluated inside full code blocks.") .addToggle(toggle => toggle .setValue(this.plugin.settings.inlineQueriesInCodeblocks) .onChange(async (value) => await this.plugin.updateSettings({ inlineQueriesInCodeblocks: value }))); - this.containerEl.createEl("h2", { text: "View Settings" }); - this.containerEl.createEl("h3", { text: "General" }); + new obsidian.Setting(this.containerEl).setName("View").setHeading(); new obsidian.Setting(this.containerEl) .setName("Display result count") - .setDesc("If toggled off, the small number in the result header of TASK and TABLE Queries will be hidden.") + .setDesc("If toggled off, the small number in the result header of TASK and TABLE queries will be hidden.") .addToggle(toggle => toggle.setValue(this.plugin.settings.showResultCount).onChange(async (value) => { await this.plugin.updateSettings({ showResultCount: value }); this.plugin.index.touch(); })); new obsidian.Setting(this.containerEl) - .setName("Warn on Empty Result") + .setName("Warn on empty result") .setDesc("If set, queries which return 0 results will render a warning message.") .addToggle(toggle => toggle.setValue(this.plugin.settings.warnOnEmptyResult).onChange(async (value) => { await this.plugin.updateSettings({ warnOnEmptyResult: value }); this.plugin.index.touch(); })); new obsidian.Setting(this.containerEl) - .setName("Render Null As") + .setName("Render null as") .setDesc("What null/non-existent should show up as in tables, by default. This supports Markdown notation.") .addText(text => text .setPlaceholder("-") @@ -19929,7 +20547,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { this.plugin.index.touch(); })); new obsidian.Setting(this.containerEl) - .setName("Automatic View Refreshing") + .setName("Automatic view refreshing") .setDesc("If enabled, views will automatically refresh when files in your vault change; this can negatively affect" + " some functionality like embeds in views, so turn it off if such functionality is not working.") .addToggle(toggle => toggle.setValue(this.plugin.settings.refreshEnabled).onChange(async (value) => { @@ -19937,7 +20555,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { this.plugin.index.touch(); })); new obsidian.Setting(this.containerEl) - .setName("Refresh Interval") + .setName("Refresh interval") .setDesc("How long to wait (in milliseconds) for files to stop changing before updating views.") .addText(text => text .setPlaceholder("500") @@ -19950,7 +20568,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { await this.plugin.updateSettings({ refreshInterval: parsed }); })); let dformat = new obsidian.Setting(this.containerEl) - .setName("Date Format") + .setName("Date format") .setDesc("The default date format (see Luxon date format options)." + " Currently: " + DateTime.now().toFormat(this.plugin.settings.defaultDateFormat, { locale: currentLocale() })) @@ -19965,7 +20583,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { this.plugin.index.touch(); })); let dtformat = new obsidian.Setting(this.containerEl) - .setName("Date + Time Format") + .setName("Date + time format") .setDesc("The default date and time format (see Luxon date format options)." + " Currently: " + DateTime.now().toFormat(this.plugin.settings.defaultDateTimeFormat, { locale: currentLocale() })) @@ -19979,9 +20597,9 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { await this.plugin.updateSettings({ defaultDateTimeFormat: value }); this.plugin.index.touch(); })); - this.containerEl.createEl("h3", { text: "Table Settings" }); + new obsidian.Setting(this.containerEl).setName("Tables").setHeading(); new obsidian.Setting(this.containerEl) - .setName("Primary Column Name") + .setName("Primary column name") .setDesc("The name of the default ID column in tables; this is the auto-generated first column that links to the source file.") .addText(text => text .setPlaceholder("File") @@ -19991,7 +20609,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { this.plugin.index.touch(); })); new obsidian.Setting(this.containerEl) - .setName("Grouped Column Name") + .setName("Grouped column name") .setDesc("The name of the default ID column in tables, when the table is on grouped data; this is the auto-generated first column" + "that links to the source file/group.") .addText(text => text @@ -20001,11 +20619,11 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { await this.plugin.updateSettings({ tableGroupColumnName: value }); this.plugin.index.touch(); })); - this.containerEl.createEl("h3", { text: "Task Settings" }); + new obsidian.Setting(this.containerEl).setName("Tasks").setHeading(); let taskCompletionSubsettingsEnabled = this.plugin.settings.taskCompletionTracking; let taskCompletionInlineSubsettingsEnabled = taskCompletionSubsettingsEnabled && !this.plugin.settings.taskCompletionUseEmojiShorthand; new obsidian.Setting(this.containerEl) - .setName("Automatic Task Completion Tracking") + .setName("Automatic task completion tracking") .setDesc(createFragment(el => { el.appendText("If enabled, Dataview will automatically append tasks with their completion date when they are checked in Dataview views."); el.createEl("br"); @@ -20017,7 +20635,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { this.display(); })); let taskEmojiShorthand = new obsidian.Setting(this.containerEl) - .setName("Use Emoji Shorthand for Completion") + .setName("Use emoji shorthand for completion") .setDisabled(!taskCompletionSubsettingsEnabled); if (taskCompletionSubsettingsEnabled) taskEmojiShorthand @@ -20028,7 +20646,7 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { el.createEl("br"); el.appendText("Disable this to customize the completion date format or field name, or to use Dataview inline field formatting."); el.createEl("br"); - el.appendText('Only available when "Automatic Task Completion Tracking" is enabled.'); + el.appendText('Only available when "automatic task completion tracking" is enabled.'); })) .addToggle(toggle => toggle.setValue(this.plugin.settings.taskCompletionUseEmojiShorthand).onChange(async (value) => { await this.plugin.updateSettings({ taskCompletionUseEmojiShorthand: value }); @@ -20036,29 +20654,29 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { this.display(); })); else - taskEmojiShorthand.setDesc('Only available when "Automatic Task Completion Tracking" is enabled.'); + taskEmojiShorthand.setDesc('Only available when "automatic task completion tracking" is enabled.'); let taskFieldName = new obsidian.Setting(this.containerEl) - .setName("Completion Field Name") + .setName("Completion field name") .setDisabled(!taskCompletionInlineSubsettingsEnabled); if (taskCompletionInlineSubsettingsEnabled) taskFieldName .setDesc(createFragment(el => { - el.appendText("Text used as inline field key for task completion date when toggling a task's checkbox in a dataview view."); + el.appendText("Text used as inline field key for task completion date when toggling a task's checkbox in a Dataview view."); el.createEl("br"); - el.appendText('Only available when "Automatic Task Completion Tracking" is enabled and "Use Emoji Shorthand for Completion" is disabled.'); + el.appendText('Only available when "automatic task completion tracking" is enabled and "use emoji shorthand for completion" is disabled.'); })) .addText(text => text.setValue(this.plugin.settings.taskCompletionText).onChange(async (value) => { await this.plugin.updateSettings({ taskCompletionText: value.trim() }); })); else - taskFieldName.setDesc('Only available when "Automatic Task Completion Tracking" is enabled and "Use Emoji Shorthand for Completion" is disabled.'); + taskFieldName.setDesc('Only available when "automatic task completion tracking" is enabled and "use emoji shorthand for completion" is disabled.'); let taskDtFormat = new obsidian.Setting(this.containerEl) - .setName("Completion Date Format") + .setName("Completion date format") .setDisabled(!taskCompletionInlineSubsettingsEnabled); if (taskCompletionInlineSubsettingsEnabled) { let descTextLines = [ - "Date-time format for task completion date when toggling a task's checkbox in a dataview view (see Luxon date format options).", - 'Only available when "Automatic Task Completion Tracking" is enabled and "Use Emoji Shorthand for Completion" is disabled.', + "Date-time format for task completion date when toggling a task's checkbox in a Dataview view (see Luxon date format options).", + 'Only available when "automatic task completion tracking" is enabled and "use emoji shorthand for completion" is disabled.', "Currently: ", ]; taskDtFormat @@ -20089,12 +20707,12 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { })); } else { - taskDtFormat.setDesc('Only available when "Automatic Task Completion Tracking" is enabled and "Use Emoji Shorthand for Completion" is disabled.'); + taskDtFormat.setDesc('Only available when "automatic task completion tracking" is enabled and "use emoji shorthand for completion" is disabled.'); } new obsidian.Setting(this.containerEl) - .setName("Recursive Sub-Task Completion") + .setName("Recursive sub-task completion") // I gotta word this better :/ - .setDesc("If enabled, completing a task in a DataView will automatically complete its subtasks too.") + .setDesc("If enabled, completing a task in a Dataview will automatically complete its subtasks too.") .addToggle(toggle => toggle .setValue(this.plugin.settings.recursiveSubTaskCompletion) .onChange(async (value) => await this.plugin.updateSettings({ recursiveSubTaskCompletion: value }))); @@ -20102,4 +20720,4 @@ class GeneralSettingsTab extends obsidian.PluginSettingTab { } module.exports = DataviewPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4Lm1qcyIsIi4uL3NyYy91dGlsL25vcm1hbGl6ZS50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3ZhbHVlLnRzIiwiLi4vc3JjL2FwaS9kYXRhLWFycmF5LnRzIiwiLi4vc3JjL3V0aWwvbG9jYWxlLnRzIiwiLi4vc3JjL3VpL3JlbmRlci50cyIsIi4uL25vZGVfbW9kdWxlcy9wYXBhcGFyc2UvcGFwYXBhcnNlLm1pbi5qcyIsIi4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvc291cmNlLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvaW5saW5lLWZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvbWFya2Rvd24udHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvbWFya2Rvd24tZmlsZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9jc3YudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC90cmFuc2ZlcmFibGUudHMiLCIuLi9ub2RlX21vZHVsZXMvbG9jYWxmb3JhZ2UvZGlzdC9sb2NhbGZvcmFnZS5qcyIsIi4uL3NyYy9kYXRhLWltcG9ydC9wZXJzaXN0ZXIudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvd2ViLXdvcmtlci9pbXBvcnQtbWFuYWdlci50cyIsIi4uL3NyYy9kYXRhLWluZGV4L2luZGV4LnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvcmVzb2x2ZXIudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9mdW5jdGlvbnMudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9iaW5hcnlvcC50cyIsIi4uL3NyYy9leHByZXNzaW9uL2NvbnRleHQudHMiLCIuLi9zcmMvcXVlcnkvZW5naW5lLnRzIiwiLi4vbm9kZV9tb2R1bGVzL2NvbXBhcmUtdmVyc2lvbnMvaW5kZXgubWpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9kaXN0L3ByZWFjdC5tb2R1bGUuanMiLCIuLi9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL2Rpc3QvaG9va3MubW9kdWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvZGlzdC9jb21wYXQubW9kdWxlLmpzIiwiLi4vc3JjL3V0aWwvbWVkaWEudHMiLCIuLi9zcmMvdWkvbWFya2Rvd24udHN4IiwiLi4vc3JjL3VpL3ZpZXdzL3Rhc2stdmlldy50c3giLCIuLi9zcmMvdWkvdmlld3MvbGlzdC12aWV3LnRzeCIsIi4uL3NyYy91aS92aWV3cy90YWJsZS12aWV3LnRzeCIsIi4uL3NyYy9xdWVyeS9xdWVyeS50cyIsIi4uL3NyYy9xdWVyeS9wYXJzZS50cyIsIi4uL25vZGVfbW9kdWxlcy9vYnNpZGlhbi1jYWxlbmRhci11aS9kaXN0L2luZGV4Lm1qcyIsIi4uL3NyYy91aS9yZWZyZXNoYWJsZS12aWV3LnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2NhbGVuZGFyLXZpZXcudHMiLCIuLi9zcmMvYXBpL2lubGluZS1hcGkudHMiLCIuLi9zcmMvdWkvdmlld3MvanMtdmlldy50cyIsIi4uL3NyYy91aS9leHBvcnQvbWFya2Rvd24udHMiLCIuLi9zcmMvYXBpL3BsdWdpbi1hcGkudHMiLCIuLi9zcmMvdWkvdmlld3MvaW5saW5lLXZpZXcudHMiLCIuLi9zcmMvdWkvdmlld3MvaW5saW5lLWZpZWxkLnRzeCIsIi4uL3NyYy91aS9scC1yZW5kZXIudHMiLCIuLi9zcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsibiIsInMiLCJsIiwic2luZ2xldG9uIiwiRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUiLCJFbmdsaXNoLm1vbnRocyIsIkVuZ2xpc2gud2Vla2RheXMiLCJFbmdsaXNoLm1lcmlkaWVtcyIsIkVuZ2xpc2guZXJhcyIsIkZvcm1hdHMuREFURV9TSE9SVCIsIkZvcm1hdHMuREFURV9NRUQiLCJGb3JtYXRzLkRBVEVfRlVMTCIsIkZvcm1hdHMuREFURV9IVUdFIiwiRm9ybWF0cy5USU1FX1NJTVBMRSIsIkZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuVElNRV8yNF9TSU1QTEUiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUIiwiRm9ybWF0cy5EQVRFVElNRV9NRUQiLCJGb3JtYXRzLkRBVEVUSU1FX0ZVTEwiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0UiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTIiwiRW5nbGlzaC5tZXJpZGllbUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aEZvckRhdGVUaW1lIiwiRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUiLCJFbmdsaXNoLmVyYUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aHNTaG9ydCIsIkVuZ2xpc2gud2Vla2RheXNMb25nIiwiRW5nbGlzaC53ZWVrZGF5c1Nob3J0IiwiSU5WQUxJRCIsIm9yZGVyZWRVbml0cyIsImNsb25lIiwiRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVkiLCJGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkiLCJ0aGlzIiwiUC5hbHQiLCJQLnJlZ2V4IiwiUC53aGl0ZXNwYWNlIiwiUC5hbnkiLCJNYXJrZG93blJlbmRlcmVyIiwiUC5zZXFNYXAiLCJQLnNlcSIsIlAub3B0V2hpdGVzcGFjZSIsIlAuY3VzdG9tIiwiUC5jcmVhdGVMYW5ndWFnZSIsIlAucmVnZXhwIiwiUC5zdHJpbmciLCJQLm5vbmVPZiIsIlAuc3VjY2VlZCIsIlAuZmFpbCIsIkxpc3RJdGVtIiwiUGFwYS5wYXJzZSIsInJlcXVpcmUiLCJnbG9iYWwiLCJDb21wb25lbnQiLCJEYXRhdmlld0ltcG9ydFdvcmtlciIsIlRGaWxlIiwiVEZvbGRlciIsInUiLCJpIiwibyIsInIiLCJmIiwiZSIsImMiLCJhIiwiaCIsInYiLCJwIiwieSIsImQiLCJfIiwiayIsImIiLCJnIiwibSIsInciLCJ4IiwiTCIsIk0iLCJQIiwiQSIsIk8iLCIkIiwicSIsIkMiLCJIIiwiVCIsIkkiLCJ6IiwiaiIsIkIiLCJOIiwiRCIsIkUiLCJGIiwiRyIsIlYiLCJ0IiwiUyIsImNyZWF0ZUNvbnRleHQiLCJ1c2VSZWYiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwiUmVhY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlJlc3VsdENvdW50IiwiUC5lb2YiLCJQLnNlcEJ5IiwiV2lkZ2V0VHlwZSIsImVkaXRvckluZm9GaWVsZCIsIlZpZXdQbHVnaW4iLCJ2aWV3IiwiRGVjb3JhdGlvbiIsImVkaXRvckxpdmVQcmV2aWV3RmllbGQiLCJzeW50YXhUcmVlIiwidG9rZW5DbGFzc05vZGVQcm9wIiwiUGx1Z2luIiwiZGVib3VuY2UiLCJQbHVnaW5TZXR0aW5nVGFiIiwi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LENBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7QUFDL0QsSUFBSSxPQUFPLFNBQVMsQ0FBQztBQUNyQixHQUFHLE1BQU07QUFDVCxJQUFJLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDTyxTQUFTLFdBQVcsQ0FBQyxRQUFRLEVBQUU7QUFDdEM7QUFDQSxFQUFFLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLEVBQUUsRUFBRTtBQUNyRSxJQUFJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLEdBQUcsTUFBTTtBQUNULElBQUksTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDakQsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNILENBQUM7QUFDRDtBQUNPLFNBQVMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRTtBQUM1RCxFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxNQUFNO0FBQzdCLElBQUksT0FBTyxHQUFHLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDbkQsRUFBRSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzNDLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDTyxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUU7QUFDakMsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUNEO0FBQ08sU0FBUyxVQUFVLENBQUMs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LENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdEO0FBQ0EsRUFBRUQsY0FBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEtBQUs7QUFDbEQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLE1BQU0sSUFBSSxRQUFRLEVBQUU7QUFDcEIsUUFBUSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3BELFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0RCxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ2pELE9BQU87QUFDUCxNQUFNLE9BQU8sT0FBTyxDQUFDO0FBQ3JCLEtBQUssTUFBTTtBQUNYLE1BQU0sT0FBTyxRQUFRLENBQUM7QUFDdEIsS0FBSztBQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNYO0FBQ0E7QUFDQTtBQUNBLEVBQUVBLGNBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxLQUFLO0FBQzdDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtBQUNyQyxNQUFNLElBQUksUUFBUSxFQUFFO0FBQ3BCLFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFB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QUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdGLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLFlBQVk7QUFDckIsSUFBSSxNQUFNLEdBQUcsTUFBTTtBQUNuQixJQUFJLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFBRSxHQUFHLEVBQUU7QUFDN0YsSUFBSTtBQUNKLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxlQUFlLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDbEcsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLGNBQWM7QUFDdkIsSUFBSSxNQUFN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QUUsS0FBSztBQUNiLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxxQkFBcUIsR0FBRztBQUM5QixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUMxQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdkIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNwQixFQUFFLElBQUksRUFBRSxD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QUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtBQUN2QyxFQUFFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckM7QUFDQSxFQUFFLElBQUksT0FBTyxFQUFFO0FBQ2YsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDbkIsSUFBSSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsRUFBRTtBQUM5QixNQUFNLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDN0IsVUFBVSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ25DLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcs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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxLQUFLLE1BQU07QUFDWCxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2YsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksWUFBWSxFQUFFO0FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLE1BQU0saUJBQWlCLEdBQUc7QUFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUNaLElBQUksR0FBRyxFQUFFLENBQUM7QUFDVixJQUFJLElBQUksRUFBRSxDQUFDO0FBQ1gsSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUNiLElBQUksTUFBTSxFQUFFLENBQUM7QUFDYixJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLHFCQUFxQixHQUFHO0FBQzFCLElBQUksVUFBVSxFQUFFLENBQUM7QUFDakIsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNkLElBQUksSUFBSSxFQUFFLENBQUM7QUFDWCxJQUFJ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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsT0FBTyxLQUFLLEdBQUc7QUFDakIsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDNUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNuRSxJQUFJLE9BQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEYsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxPQUFPLEdBQUcsR0FBRztBQUNmLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQzVDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDbkU7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUM1QyxJQUFJLE9BQU8sT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxD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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBYyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFNLFdBQVcsRUFBRSxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtGQUErRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQywyRUFBMkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLDBEQUEwRCxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU0sMEJBQTBCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksTUFBTSxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0lBQWdJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsMENBQTBDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FB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TSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLHdPQUF3TyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxvTkFBb04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUs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UUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVuQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUN6QyxDQUFDO0FBRUY7QUFDTyxNQUFNLGVBQWUsR0FBRztBQUMzQixJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBQSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM1QyxJQUFBLFNBQVMsRUFBRSxNQUNQLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxJQUFBLFFBQVEsRUFBRSxNQUNOLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFD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LEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7O1lBQ3BGLE9BQU8sQ0FBQSxFQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQSxDQUFFLENBQUM7S0FDN0M7SUFFTSxPQUFPLEdBQUE7O0FBQ1YsUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7SUFFTSxHQUFHLEdBQUE7O0FBQ04sUUFBQSxPQUFPLENBQUEsRUFBQSxJQUFDLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFJLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxHQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQUcsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsQ0FBQyxDQUFDLENBQUM7S0FDbkc7SUFFTSxTQUFTLEdB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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU9BLGVBQU8sRUFBRSxVQUFVLEVBQUVBLGVBQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7Q0FDcjFCLENBQUMsVUFBVSxNQUFNLENBQUM7Q0FFbEIsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFD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QUksQ0FBQyxDQUFDO0FBQ25ELFNBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDO0FBQzFELFNBQVEsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO01BQ3BEO0tBQ0QsT0FBTyxNQUFNLENBQUM7RUFDakI7QUFDRDtBQUNBO0FBQ0E7Q0FDQSxTQUFTLGNBQWMsQ0FBQyxNQUFNLEVBQUU7QUFDaEM7S0FDSSxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QyxLQUFJLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztLQUN0QixJQUFJLENBQUMsQ0FBQztBQUNWO0FBQ0EsS0FBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMxQztTQUNRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzFDLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3BFLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqRixTQUFRLFlBQVksSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztN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LENBQUMsT0FBTyxDQUFDO0FBQzVDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQzFDLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDeEIsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQWlCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztBQUN0RCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0IsU0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssZ0JBQUEsQ0FBQSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxnQkFBQSxDQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLEdBQUcsR0FBaUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO0FBQ3RELFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQixTQUFBLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0IsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakcsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxnQkFBQSxDQUFBLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6QyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENB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LE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ2xDLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsVUFBVSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxZQUFZLENBQUM7QUFDcEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEtBQUssR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDaEUsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsT0FBTyxHQUFpQixJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztTQUNoRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDbkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFNBQVMsR0FBaUIsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDO0FBQ2xFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDbEYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBaUIsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ2hFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEtBQUk7UUFDeEQsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3JDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6RSxTQUFBO0FBQU0sYUFBQTtBQUNILFlBQUEsT0FBTyxHQUFHLENBQUM7QUFDZCxTQUFBO0FBQ0wsS0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxnQkFBQSxDQUFBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQztBQUNqRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0RCxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNsRCxTQUFBLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RCxTQUFBLEtBQUssRUFB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U0FDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxHQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0RixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJ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QUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNoRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEUsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzNFOztBQUdNLElBQUEsUUFBUSxDQUFDLEVBQVksRUFBRSxJQUFhLEVBQUUsS0FBYyxFQUFFLEdBQVksRUFBQTtRQUNyRSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsUUFBQSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDaEUsYUFBQSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFFNUUsUUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRSxRQUFBLElBQUksT0FBTztBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRzlELFFBQUEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckUsUUFBQSxJQUFJLFFBQVE7QUFBRSxZQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDOztBQUdoRSxRQUFBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQUEsSUFBSSxRQUFRO0FBQUUsWUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzs7QUFHaEUsUUFBQSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRSxRQUFBLElBQUksUUFBUTtBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFaEUsUUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBZ0MsNkJBQUEsRUFBQSxRQUFRLENBQUksQ0FBQSxFQUFBLEVBQUUsQ0FBSSxDQUFBLEVBQUEsU0FBUyxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUM7S0FDekY7O0FBR00sSUFBQSxPQUFPLElBQUksQ0FBQyxFQUFZLEVBQUUsSUFBc0IsRUFBRSxLQUF1QixFQUFBO0FBQzVFLFFBQUEsT0FBTyxHQUFHLElBQUksQ0FBQSxDQUFBLEVBQUksRUFBRSxDQUFJLENBQUEsRUFBQSxLQUFLLEVBQUUsQ0FBQztLQUNuQztBQUNKLENBQUE7QUFFRDtBQUNNLFNBQVUsZUFBZSxDQUFDLGNBQXFDLEVBQUE7QUFDakUsSUFBQSxRQUNJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7O1NBRW5CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7U0FFakUsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0UsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakYsU0FBQSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pGLFNBQUEsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSTtRQUNwQyxPQUFPLGlCQUFpQixDQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ3hGLENBQUM7QUFDTixLQUFDLENBQUM7U0FDRCxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUUxRCxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxTQUFBLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsU0FBQSxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUU1RixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFNLEVBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFaEYsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRXBFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVB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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUVaLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFL0QsR0FBQyxDQUFDLEtBQUssRUFBRUEsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzRFLEdBQUMsRUFBRSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFakIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDa0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFakIsR0FBQyxHQUFHakUsR0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQ2lFLEdBQUMsQ0FBQ2pFLEdBQUMsQ0FBQyxpQkFBaUIsR0FBR2tFLEdBQUMsRUFBRWdCLEdBQUMsRUFBQyxDQUFDLFNBQVNBLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSWxCLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUNlLEdBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRXRGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDNEUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUNFLEdBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDRixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDakIsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQ2MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRUksR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdsQixHQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDVCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBR25CLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUNtQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxTQUFTSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFdkIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTc0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvRixHQUFDLENBQUMsS0FBSyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM4RixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzlGLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU21GLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNuRixHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSThFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQ2tCLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUN4QixHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDeEUsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ3dFLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHTSxHQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzdFLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2lHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2pHLEdBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNvRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsRUFBRUEsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNpRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTVCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdzQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUdOLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRVEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTTCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUd6RixHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUV1RixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVoQixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEcsR0FBQyxDQUFDLEVBQUUsRUFBRUEsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNtRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVIsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMwQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUNqQyxHQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEYsR0FBQyxDQUFDLEtBQUssQ0FBQ0MsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQytELEdBQUMsQ0FBQyxDQUFDLENBQXVEZSxHQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQ04sR0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUNELEdBQUMsQ0FBQ2IsR0FBQyxDQUFDLEVBQUUsQ0FBQ0UsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDQyxHQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDZSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2QsR0FBQyxDQUFDLENBQUM7O0FDQWowVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUN0RSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDa0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNsRyxHQUFDLENBQUMsR0FBRyxFQUFFZ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEcsR0FBQyxDQUFDLEdBQUcsRUFBRWdHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTZCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTYyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPTixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNYLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBU1AsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3BGLEdBQUMsQ0FBQyxhQUFhLEVBQUVBLEdBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBcUssU0FBU3dHLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDekIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUNuRixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ25GLEdBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0EsR0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxxQkFBcUIsR0FBR2lHLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDakcsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ25GLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMrRSxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFL0UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJaUYsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLHFCQUFxQixDQUFDLFNBQVNnQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNoQixHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNBLEdBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUNBdDVGLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDTyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl6RyxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNGLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU9tQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQ25DLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXRFLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFeUcsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDd0MsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDc0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJekcsR0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDb0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyw2UkFBNlIsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDbEUsR0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUNBLEdBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsQ0FBSSxJQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWEsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT21DLEdBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHeEMsR0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBR0YsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDRixHQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUNZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9LLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMs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QyxZQUFBLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUUxRSxZQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkIsWUFBQSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVELFNBQUE7QUFDRCxRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsS0FBQTs7O0FBSUQsSUFBQSxJQUFJLEtBQUssR0FBRyxDQUFLLEVBQUEsRUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDOztJQUV2RyxLQUFLLElBQUksQ0FBSyxFQUFBLEVBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsSUFBQSxDQUFNLENBQUM7O0FBRTFFLElBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDMUMsUUFBQSxLQUFLLElBQUksQ0FBQSxFQUFBLEVBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9lcnJvcnMuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvc3lzdGVtWm9uZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvem9uZXMvSUFOQVpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvbG9jYWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy96b25lcy9maXhlZE9mZnNldFpvbmUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL3pvbmVzL2ludmFsaWRab25lLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL3pvbmVVdGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9zZXR0aW5ncy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC91dGlsLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2VuZ2xpc2guanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvZm9ybWF0dGVyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2ludmFsaWQuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2ltcGwvcmVnZXhQYXJzZXIuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2R1cmF0aW9uLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbnRlcnZhbC5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW5mby5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9kaWZmLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2x1eG9uL3NyYy9pbXBsL2RpZ2l0cy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC90b2tlblBhcnNlci5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvaW1wbC9jb252ZXJzaW9ucy5qcyIsIi4uL25vZGVfbW9kdWxlcy9sdXhvbi9zcmMvZGF0ZXRpbWUuanMiLCIuLi9ub2RlX21vZHVsZXMvbHV4b24vc3JjL2x1eG9uLmpzIiwiLi4vc3JjL3NldHRpbmdzLnRzIiwiLi4vc3JjL2FwaS9yZXN1bHQudHMiLCIuLi9ub2RlX21vZHVsZXMvcGFyc2ltbW9uL2J1aWxkL3BhcnNpbW1vbi51bWQubWluLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Vtb2ppLXJlZ2V4L2luZGV4Lm1qcyIsIi4uL3NyYy91dGlsL25vcm1hbGl6ZS50cyIsIi4uL3NyYy9kYXRhLW1vZGVsL3ZhbHVlLnRzIiwiLi4vc3JjL2FwaS9kYXRhLWFycmF5LnRzIiwiLi4vc3JjL3V0aWwvbG9jYWxlLnRzIiwiLi4vc3JjL3VpL3JlbmRlci50cyIsIi4uL25vZGVfbW9kdWxlcy9wYXBhcGFyc2UvcGFwYXBhcnNlLm1pbi5qcyIsIi4uL3NyYy9leHByZXNzaW9uL2ZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvc291cmNlLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vcGFyc2UudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvaW5saW5lLWZpZWxkLnRzIiwiLi4vc3JjL2RhdGEtbW9kZWwvbWFya2Rvd24udHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvbWFya2Rvd24tZmlsZS50cyIsIi4uL3NyYy9kYXRhLWltcG9ydC9jc3YudHMiLCIuLi9zcmMvZGF0YS1tb2RlbC90cmFuc2ZlcmFibGUudHMiLCIuLi9ub2RlX21vZHVsZXMvbG9jYWxmb3JhZ2UvZGlzdC9sb2NhbGZvcmFnZS5qcyIsIi4uL3NyYy9kYXRhLWltcG9ydC9wZXJzaXN0ZXIudHMiLCIuLi9zcmMvZGF0YS1pbXBvcnQvd2ViLXdvcmtlci9pbXBvcnQtbWFuYWdlci50cyIsIi4uL3NyYy9kYXRhLWluZGV4L2luZGV4LnRzIiwiLi4vc3JjL2RhdGEtaW5kZXgvcmVzb2x2ZXIudHMiLCIuLi9zcmMvdXRpbC9oYXNoLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vZnVuY3Rpb25zLnRzIiwiLi4vc3JjL2V4cHJlc3Npb24vYmluYXJ5b3AudHMiLCIuLi9zcmMvZXhwcmVzc2lvbi9jb250ZXh0LnRzIiwiLi4vc3JjL3F1ZXJ5L2VuZ2luZS50cyIsIi4uL25vZGVfbW9kdWxlcy9jb21wYXJlLXZlcnNpb25zL2luZGV4Lm1qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvZGlzdC9wcmVhY3QubW9kdWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9ob29rcy9kaXN0L2hvb2tzLm1vZHVsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9wcmVhY3QvY29tcGF0L2Rpc3QvY29tcGF0Lm1vZHVsZS5qcyIsIi4uL3NyYy91dGlsL21lZGlhLnRzIiwiLi4vc3JjL3VpL21hcmtkb3duLnRzeCIsIi4uL3NyYy91aS92aWV3cy90YXNrLXZpZXcudHN4IiwiLi4vc3JjL3VpL3ZpZXdzL2xpc3Qtdmlldy50c3giLCIuLi9zcmMvdWkvdmlld3MvdGFibGUtdmlldy50c3giLCIuLi9zcmMvcXVlcnkvcXVlcnkudHMiLCIuLi9zcmMvcXVlcnkvcGFyc2UudHMiLCIuLi9ub2RlX21vZHVsZXMvb2JzaWRpYW4tY2FsZW5kYXItdWkvZGlzdC9pbmRleC5tanMiLCIuLi9zcmMvdWkvcmVmcmVzaGFibGUtdmlldy50cyIsIi4uL3NyYy91aS92aWV3cy9jYWxlbmRhci12aWV3LnRzIiwiLi4vc3JjL2FwaS9pbmxpbmUtYXBpLnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2pzLXZpZXcudHMiLCIuLi9zcmMvdWkvZXhwb3J0L21hcmtkb3duLnRzIiwiLi4vc3JjL2FwaS9wbHVnaW4tYXBpLnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2lubGluZS12aWV3LnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2lubGluZS1maWVsZC50c3giLCIuLi9zcmMvdWkvbHAtcmVuZGVyLnRzIiwiLi4vc3JjL3VpL3ZpZXdzL2lubGluZS1maWVsZC1saXZlLXByZXZpZXcudHMiLCIuLi9zcmMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6bnVsbCwibmFtZXMiOlsibiIsInMiLCJsIiwic2luZ2xldG9uIiwiRW5nbGlzaC5mb3JtYXRSZWxhdGl2ZVRpbWUiLCJFbmdsaXNoLm1vbnRocyIsIkVuZ2xpc2gud2Vla2RheXMiLCJFbmdsaXNoLm1lcmlkaWVtcyIsIkVuZ2xpc2guZXJhcyIsIkZvcm1hdHMuREFURV9TSE9SVCIsIkZvcm1hdHMuREFURV9NRUQiLCJGb3JtYXRzLkRBVEVfRlVMTCIsIkZvcm1hdHMuREFURV9IVUdFIiwiRm9ybWF0cy5USU1FX1NJTVBMRSIsIkZvcm1hdHMuVElNRV9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLlRJTUVfV0lUSF9TSE9SVF9PRkZTRVQiLCJGb3JtYXRzLlRJTUVfV0lUSF9MT05HX09GRlNFVCIsIkZvcm1hdHMuVElNRV8yNF9TSU1QTEUiLCJGb3JtYXRzLlRJTUVfMjRfV0lUSF9TRUNPTkRTIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfU0hPUlRfT0ZGU0VUIiwiRm9ybWF0cy5USU1FXzI0X1dJVEhfTE9OR19PRkZTRVQiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUIiwiRm9ybWF0cy5EQVRFVElNRV9NRUQiLCJGb3JtYXRzLkRBVEVUSU1FX0ZVTEwiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0UiLCJGb3JtYXRzLkRBVEVUSU1FX1NIT1JUX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfTUVEX1dJVEhfU0VDT05EUyIsIkZvcm1hdHMuREFURVRJTUVfRlVMTF9XSVRIX1NFQ09ORFMiLCJGb3JtYXRzLkRBVEVUSU1FX0hVR0VfV0lUSF9TRUNPTkRTIiwiRW5nbGlzaC5tZXJpZGllbUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aEZvckRhdGVUaW1lIiwiRW5nbGlzaC53ZWVrZGF5Rm9yRGF0ZVRpbWUiLCJFbmdsaXNoLmVyYUZvckRhdGVUaW1lIiwiRW5nbGlzaC5tb250aHNTaG9ydCIsIkVuZ2xpc2gud2Vla2RheXNMb25nIiwiRW5nbGlzaC53ZWVrZGF5c1Nob3J0IiwiSU5WQUxJRCIsIm9yZGVyZWRVbml0cyIsImNsb25lIiwiRm9ybWF0cy5EQVRFX01FRF9XSVRIX1dFRUtEQVkiLCJGb3JtYXRzLkRBVEVUSU1FX01FRF9XSVRIX1dFRUtEQVkiLCJ0aGlzIiwiUC5hbHQiLCJQLnJlZ2V4IiwiUC53aGl0ZXNwYWNlIiwiUC5hbnkiLCJNYXJrZG93blJlbmRlcmVyIiwiUC5zZXFNYXAiLCJQLnNlcSIsIlAub3B0V2hpdGVzcGFjZSIsIlAuY3VzdG9tIiwiUC5jcmVhdGVMYW5ndWFnZSIsIlAucmVnZXhwIiwiUC5zdHJpbmciLCJQLm5vbmVPZiIsIlAuc3VjY2VlZCIsIlAuZmFpbCIsIkxpc3RJdGVtIiwiUGFwYS5wYXJzZSIsInJlcXVpcmUiLCJnbG9iYWwiLCJDb21wb25lbnQiLCJEYXRhdmlld0ltcG9ydFdvcmtlciIsIlRGaWxlIiwiVEZvbGRlciIsInUiLCJpIiwibyIsInIiLCJmIiwiZSIsImMiLCJhIiwiaCIsInYiLCJwIiwieSIsImQiLCJfIiwiayIsImIiLCJnIiwibSIsInciLCJ4IiwiTCIsIk0iLCJQIiwiQSIsIk8iLCIkIiwicSIsIkMiLCJIIiwiVCIsIkkiLCJ6IiwiaiIsIkIiLCJOIiwiRCIsIkUiLCJGIiwiRyIsIlYiLCJ0IiwiUyIsImNyZWF0ZUNvbnRleHQiLCJ1c2VSZWYiLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwiUmVhY3QiLCJGcmFnbWVudCIsInVzZVN0YXRlIiwiTWFya2Rvd25SZW5kZXJDaGlsZCIsInJlbmRlciIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJQbGF0Zm9ybSIsIlJlc3VsdENvdW50IiwiUC5lb2YiLCJQLlBhcnNlciIsIlAubWFrZUZhaWx1cmUiLCJQLm1ha2VTdWNjZXNzIiwiUC5zZXBCeSIsIldpZGdldFR5cGUiLCJlZGl0b3JJbmZvRmllbGQiLCJWaWV3UGx1Z2luIiwidmlldyIsIkRlY29yYXRpb24iLCJlZGl0b3JMaXZlUHJldmlld0ZpZWxkIiwic3ludGF4VHJlZSIsInRva2VuQ2xhc3NOb2RlUHJvcCIsIlJhbmdlVmFsdWUiLCJzdGF0ZSIsIlJhbmdlU2V0QnVpbGRlciIsIlN0YXRlRmllbGQiLCJTdGF0ZUVmZmVjdCIsIlBsdWdpbiIsIk1hcmtkb3duVmlldyIsImRlYm91bmNlIiwiUGx1Z2luU2V0dGluZ1RhYiIsIlNldHRpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxVQUFVLFNBQVMsS0FBSyxDQUFDLEVBQUU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNLG9CQUFvQixTQUFTLFVBQVUsQ0FBQztBQUNyRCxFQUFFLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDdEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU0sb0JBQW9CLFNBQVMsVUFBVSxDQUFDO0FBQ3JELEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRTtBQUN0QixJQUFJLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTSxvQkFBb0IsU0FBUyxVQUFVLENBQUM7QUFDckQsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ3RCLElBQUksS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JELEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNLDZCQUE2QixTQUFTLFVBQVUsQ0FBQyxFQUFFO0FBQ2hFO0FBQ0E7QUFD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Q0FBQztBQUN0QixHQUFHO0FBQ0g7O0FDdExBO0FBQ0E7QUFDQSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDckIsU0FBUyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDM0MsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsRUFBRSxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDM0IsR0FBRztBQUNILEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBQ0Q7QUFDQSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDckIsU0FBUyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDNUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsRUFBRSxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRCxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDM0IsR0FBRztBQUNILEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBQ0Q7QUFDQSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDdEIsU0FBUyxZQUFZ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QUM3RixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7QUFDOUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQztBQUMvRixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDZixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDcEQsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQztBQUNyRDtBQUNBO0FBQ0EsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3JFLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDOUIsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxTQUFTLENBQUMsSUFBSSxHQUFHLEVB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QUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM3RSxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkU7QUFDQSxTQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ3JDLEVBQUUsT0FBTyxJQUFJLE9BQU87QUFDcEIsSUFBSSxtQkFBbUI7QUFDdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUM7QUFDckYsR0FBRyxDQUFDO0FBQ0osQ0FBQztBQUNEO0FBQ0EsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDckMsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQ7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFO0FBQy9CLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDaEQsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDM0I7QUFDQSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFDRDtBQUNBLFNBQVMs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QUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLO0FBQzNELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSztBQUMxQixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUQsTUFBTSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0QsTUFBTSxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxJQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSztBQUN2QixNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtBQUN2QyxVQUFVLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0UsU0FBUyxNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBQ3hCLE9BQU8sTUFBTTtBQUNiLFFBQVEsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0MsT0FBTztBQUNQLEtBQUssQ0FBQztBQUNOO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDakIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFD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QUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQzVDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksT0FBTyxHQUFHO0FBQ2hCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzVELEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHO0FBQ2QsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQzdDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHO0FBQ1osSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQzNDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHO0FBQ2IsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQzVDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHO0FBQ2YsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQzlDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHO0FBQ2YsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFN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QW1ELE1BQWUsQ0FBQSxPQUFBLENBQUEsQ0FBQyxHQUFvSCxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQ2EsY0FBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTSxXQUFXLEVBQUUsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsMkVBQTJFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywwREFBMEQsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFNLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLGdJQUFnSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFD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QyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLHdPQUF3TyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxjQUFjLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQyxvTkFBb04sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsNkNBQTZDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMs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Q0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVuQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxFQUFFLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVwQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUV0QyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QyxHQUFHLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN6QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUN6QyxDQUFDO0FBRUY7QUFDTyxNQUFNLGVBQWUsR0FBRztBQUMzQixJQUFBLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQyxLQUFLLEVBQUU7QUFDM0IsSUFBQSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUM1QyxJQUFBLFNBQVMsRUFBRSxNQUNQLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRCxJQUFBLFFBQVEsRUFBRSxNQUNOLFFBQVEsQ0FBQyxLQUFLLEVBQUU7U0FDWCxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2QsSUFBSSxDQUFD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QUNBO0FBQ0E7U0FFZ0IsTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUFlLENBQUMsRUFBQTtJQUNoRCxJQUFJLEVBQUUsR0FBRyxVQUFVLEdBQUcsSUFBSSxFQUN0QixFQUFFLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQztBQUMzQixJQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxRQUFBLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2QyxLQUFBO0FBQ0QsSUFBQSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdDLElBQUEsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5QyxJQUFBLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDN0MsSUFBQSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDOzs7QUFHOUMsSUFBQSxPQUFPLFVBQVUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3BEOztBQ3JCQTtBQTZCQTs7O0FBR0c7TUFDVSxl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RyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztBQUNsQyxTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFVBQVUsR0FBaUIsSUFBSSxlQUFlLENBQUMsWUFBWSxDQUFDO0FBQ3BFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxLQUFLLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBaUIsSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ2hFLFNBQUEsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDL0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLE9BQU8sR0FBaUIsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM5RCxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3BCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsUUFBUSxHQUFpQixJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7U0FDaEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzVELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ25GLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxTQUFTLEdBQWlCLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQztBQUNsRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2xGLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDcEIsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxRQUFRLEdBQWlCLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNoRSxTQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxLQUFJO1FBQ3hELElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNyQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekUsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLE9BQU8sR0FBRyxDQUFDO0FBQ2QsU0FBQTtBQUNMLEtBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssZ0JBQUEsQ0FBQSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDakYsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ2xDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDbEMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNwQixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7QUFDakQsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDdEQsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDbEQsU0FBQSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEQsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO0FBQzlDLFNBQUEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDNUUsU0FBQSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQzFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sS0FBSTtBQUN4QyxRQUFBLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqQyxLQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUk7QUFDckMsUUFBQSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0IsS0FBQyxDQUFDO0FBQ0QsU0FBQSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSTtRQUN4RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hDLEtBQUMsQ0FBQztBQUNELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQztBQUM5QyxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEtBQUk7QUFDMUMsUUFBQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQztBQUFFLFlBQUEsT0FBTyxJQUFJLENBQUM7UUFFakMsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUc7QUFDMUUsWUFBQSxNQUFNLEtBQUssQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO0FBRS9FLFFBQUEsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFFBQUEsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7QUFDN0MsWUFBQSxLQUFLLEdBQUcsT0FBTztpQkFDVixRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsaUJBQUEsV0FBVyxFQUFFLENBQUM7QUFDdEIsU0FBQTtBQUVELFFBQUEsT0FBTyxLQUFLLENBQUM7QUFDakIsS0FBQyxDQUFDO0FBQ0QsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxLQUFJO0FBQzVDLFFBQUEsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUM7QUFBRSxZQUFBLE9BQU8sSUFBSSxDQUFDO0FBRWpDLFFBQUEsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLFFBQUEsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7O1lBRTdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQUUsU0FBUztBQUV4QyxZQUFBLEtBQUssR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQyxTQUFBO0FBRUQsUUFBQSxPQUFPLEtBQUssQ0FBQztBQUNqQixLQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztBQUM3QixTQUFBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLEdBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUM7QUFDeEMsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxnQkFBQSxDQUFBLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQixTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUM7U0FDaEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLEtBQUk7QUFDOUIsUUFBQSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztBQUFFLFlBQUEsT0FBTyxJQUFJLENBQUM7UUFFbkMsTUFBTSxHQUFHLEdBQUcsZ0JBQUEsQ0FBQSxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLFFBQUEsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxTQUFTO0FBQUUsWUFBQSxPQUFPLElBQUksQ0FBQztBQUVqRCxRQUFBLE9BQU8sT0FBTzthQUNULFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDakYsYUFBQSxXQUFXLEVBQUUsQ0FBQztBQUN2QixLQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDO0FBQ2hELFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssZ0JBQUEsQ0FBQSxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUM5QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakIsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxJQUFJLEdBQWlCLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQztBQUN4RCxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxPQUFPLEtBQUssZ0JBQUEsQ0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNyRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM1RSxTQUFBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxLQUFLLGdCQUFBLENBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZELFNBQUEsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsR0FBRyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQztTQUN4QyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsU0FBQSxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RCxTQUFBLEtBQUssRUFBRSxDQUFDO0FBRUEsSUFBQSxnQkFBQSxDQUFBLEdBQUcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUM7U0FDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsU0FBQSxLQUFLLEVBQUUsQ0FBQztBQUVBLElBQUEsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO1NBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELFNBQUEsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQUEsS0FBSyxFQUFFLENBQUM7QUFFQSxJQUFBLGdCQUFBLENBQUEsTUFBTSxHQUFHLElBQUksZUFB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LENBQUM7YUFDdkUsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNoRSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEUsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzNFOztBQUdNLElBQUEsUUFBUSxDQUFDLEVBQVksRUFBRSxJQUFhLEVBQUUsS0FBYyxFQUFFLEdBQVksRUFBQTtRQUNyRSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsUUFBQSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDaEUsYUFBQSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFFNUUsUUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMxRSxRQUFBLElBQUksT0FBTztBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRzlELFFBQUEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckUsUUFBQSxJQUFJLFFBQVE7QUFBRSxZQUFBLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDOztBQUdoRSxRQUFBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQUEsSUFBSSxRQUFRO0FBQUUsWUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzs7QUFHaEUsUUFBQSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRSxRQUFBLElBQUksUUFBUTtBQUFFLFlBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFaEUsUUFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBZ0MsNkJBQUEsRUFBQSxRQUFRLENBQUksQ0FBQSxFQUFBLEVBQUUsQ0FBSSxDQUFBLEVBQUEsU0FBUyxDQUFHLENBQUEsQ0FBQSxDQUFDLENBQUM7S0FDekY7O0FBR00sSUFBQSxPQUFPLElBQUksQ0FBQyxFQUFZLEVBQUUsSUFBc0IsRUFBRSxLQUF1QixFQUFBO0FBQzVFLFFBQUEsT0FBTyxHQUFHLElBQUksQ0FBQSxDQUFBLEVBQUksRUFBRSxDQUFJLENBQUEsRUFBQSxLQUFLLEVBQUUsQ0FBQztLQUNuQztBQUNKLENBQUE7QUFFRDtBQUNNLFNBQVUsZUFBZSxDQUFDLGNBQXFDLEVBQUE7QUFDakUsSUFBQSxRQUNJLGVBQWUsQ0FBQyxNQUFNLEVBQUU7O1NBRW5CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQzs7U0FFakUsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0UsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELFNBQUEsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztBQUVsRCxTQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakYsU0FBQSxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pGLFNBQUEsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTNFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSTtRQUNwQyxPQUFPLGlCQUFpQixDQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ3hGLENBQUM7QUFDTixLQUFDLENBQUM7U0FDRCxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkQsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUUxRCxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RSxRQUFRLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxTQUFBLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEYsU0FBQSxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOztTQUU1RixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFNLEVBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7U0FFaEYsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRXBFLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUM7QUFDL0MsU0FBQSxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQztBQUMvQyxTQUFBLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQy9DLFNBQUEsUUFB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RUFBRSxDQUFDdEUsR0FBQyxDQUFDLEVBQUUsQ0FBQ3VFLEdBQUMsQ0FBQyxtRUFBbUUsQ0FBQ0MsR0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUVaLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFL0QsR0FBQyxDQUFDLEtBQUssRUFBRUEsR0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzRFLEdBQUMsRUFBRSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLFNBQVNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFakIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDa0IsR0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFakIsR0FBQyxHQUFHakUsR0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQ2lFLEdBQUMsQ0FBQ2pFLEdBQUMsQ0FBQyxpQkFBaUIsR0FBR2tFLEdBQUMsRUFBRWdCLEdBQUMsRUFBQyxDQUFDLFNBQVNBLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSWxCLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUNKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ssR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUVKLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEIsR0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxJQUFJLENBQUNHLEdBQUMsQ0FBQyxDQUFDLENBQUNlLEdBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLFNBQVNHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRXRGLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDNEUsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0osR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUNFLEdBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDRixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDakIsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQ2MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRUksR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdsQixHQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDVCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ1UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBR25CLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUNtQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTSixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxTQUFTSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFdkIsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTc0IsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUVDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxHQUFDLENBQUNDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0QsR0FBQyxDQUFDQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBU0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvRixHQUFDLENBQUMsS0FBSyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM4RixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzlGLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU21GLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNuRixHQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSThFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQ2tCLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUN4QixHQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDeEUsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQ3dFLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHTSxHQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzdFLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQ2lHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2pHLEdBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNvRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsRUFBRUEsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLFNBQVNpRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTVCLEdBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUdzQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUdOLEdBQUMsQ0FBQyxDQUFDLENBQUNkLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRVEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVOLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFbUIsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUVBLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTTCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDdkYsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUd6RixHQUFDLENBQUMsT0FBTyxFQUFFQSxHQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUV1RixHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsR0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUN2RixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFeUYsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUVoQixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLFNBQVN1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEcsR0FBQyxDQUFDLEVBQUUsRUFBRUEsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNtRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDVCxHQUFDLENBQUNHLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRVIsR0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTZSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsR0FBQyxFQUFDLENBQUMsU0FBU0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDNUIsR0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMwQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUNqQyxHQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNhLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDbEYsR0FBQyxDQUFDLEtBQUssQ0FBQ0MsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQytELEdBQUMsQ0FBQyxDQUFDLENBQXVEZSxHQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQ04sR0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNTLEdBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUNILEdBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0csR0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQ0gsR0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUNELEdBQUMsQ0FBQ2IsR0FBQyxDQUFDLEVBQUUsQ0FBQ0UsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDQyxHQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDZSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ2QsR0FBQyxDQUFDLENBQUM7O0FDQWowVSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUN0RSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxHQUFHLEVBQUVBLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDa0csR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNsRyxHQUFDLENBQUMsR0FBRyxFQUFFZ0csR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDaEcsR0FBQyxDQUFDLEdBQUcsRUFBRWdHLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDTSxHQUFDLENBQUMsVUFBVSxDQUFDLE9BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTZCxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTYyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPTixHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ1EsR0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVNYLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBU1AsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ3BGLEdBQUMsQ0FBQyxhQUFhLEVBQUVBLEdBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBcUssU0FBU3dHLEdBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDekIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUNuRixHQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUNJLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQ25GLEdBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBR0EsR0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNBLEdBQUMsQ0FBQyxxQkFBcUIsR0FBR2lHLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxDQUFDakcsR0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDK0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQ25GLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDQSxHQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMrRSxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFL0UsR0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJaUYsR0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLHFCQUFxQixDQUFDLFNBQVNnQixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUNoQixHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUNBLEdBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTRixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTSSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBU2EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBU0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7QUNBdDVGLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDTyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUl6RyxHQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUNGLEdBQUMsQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDQSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFLLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQ0EsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU9tQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQ25DLEdBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSXRFLEdBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFeUcsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDd0MsR0FBQyxDQUFDeEMsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0EsR0FBQyxDQUFDc0MsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJekcsR0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDb0UsR0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyw2UkFBNlIsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxXQUFXLEVBQUUsT0FBTyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQ0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT0QsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDbEUsR0FBQyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUNBLEdBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNzRSxHQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQ0EsR0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLGNBQWMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNGLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUNBLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDRSxHQUFDLENBQUMsR0FBRyxDQUFDQSxHQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDQSxHQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsQ0FBSSxJQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWEsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBT21DLEdBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHeEMsR0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDSSxHQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBR0YsR0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDRixHQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUNZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU9LLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDSCxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDRixDQUFDLENBQUMsS0FBSyxDQUFDdkUsR0FBQyxDQUFDLFVBQVUsQ0FBQ3dFLENBQUMsQ0FBQyxTQUFTLENBQUNDLENBQUMsQ0FBQyxlQUFlLENBQUNHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDRixDQUFDLENBQUMsbUJBQW1CLENBQUNPLEdBQUMsQ0FBQyxPQUFPLENBQUNOLEdBQUMsQ0FBQyxXQUFXLENBQUNFLEdBQUMsQ0FBQyxVQUFVLENBQUNFLEdBQUMsQ0FBQyxhQUFhLENBQUMwQixHQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUNELEdBQUMsQ0FBQyxhQUFhLENBQUN2RyxHQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQ3FFLEdBQUMsQ0FBQyxRQUFRLENBQUNOLEdBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQ2pFLEdBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCxDQUFDLEVBQUUsQ0FBQzs7QUNFbDFSLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDekMsSUFBSSxHQUFHLENBQUM7SUFDSixNQUFNO0lBQ04sT0FBTztJQUNQLE1BQU07SUFDTixNQUFNO0lBQ04sT0FBTztJQUNQLE9BQU87SUFDUCxNQUFNO0lBQ04sT0FBTztJQUNQLE9BQU87SUFDUCxRQUFRO0lBQ1IsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0FBQ1QsQ0FBQSxDQUFDLENBQ0wsQ0FBQztBQUVGO0FBQ00sU0FBVSxZQUFZLENBQUMsSUFBVSxFQUFBO0lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7QUFBRSxRQUFBLE9BQU8sS0FBSyxDQUFDO0FBRTNDLElBQUEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRSxJQUFBLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVEO0FBQ00sU0FBVSxzQkFBc0IsQ0FBQyxJQUFVLEVBQUE7SUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO0FBQUUsUUFBQSxPQUFPLFNBQVMsQ0FBQztJQUVwQyxJQUFJLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELElBQUEsSUFBSSxLQUFLO0FBQUUsUUFBQSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNELElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pDLElBQUEsSUFBSSxNQUFNO1FBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztBQUd6QyxJQUFBLE9BQU8sU0FBUyxDQUFDO0FBQ3JCOztBQzNDQTtBQThCTyxNQUFNLGVBQWUsR0FBRzJHLEdBQWEsQ0FBbUIsU0FBVSxDQUFDLENBQUM7QUFFM0U7U0FDZ0IsV0FBVyxDQUFDLEVBQ3hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsTUFBTSxHQUFHLElBQUksRUFDYixLQUFLLEVBQ0wsR0FBRyxFQUNILE9BQU8sR0FRVixFQUFBO0FBQ0csSUFBQSxNQUFNLFNBQVMsR0FBR0MsQ0FBTSxDQUFxQixJQUFJLENBQUMsQ0FBQztJQUNuRCxNQUFNLFNBQVMsR0FBR0MsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV4REMsQ0FBUyxDQUFDLE1BQUs7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87WUFBRSxPQUFPO0FBRS9CLFFBQUEsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLFFBQUFoRSx5QkFBZ0IsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFLO0FBQ3pGLFlBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87O1lBRzFDLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELFlBQUEsT0FBTyxTQUFTLEVBQUU7QUFDZCxnQkFBQSxJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNwQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEQsYUFBQTtBQUNMLFNBQUMsQ0FBQyxDQUFDO0tBQ04sRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFFN0MsSUFBQSxPQUFPMkIsY0FBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxHQUFTLENBQUM7QUFDckYsQ0FBQztBQUVEO0FBQ08sTUFBTSxRQUFRLEdBQUdzQyxFQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWhEO0FBQ2dCLFNBQUEsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUE0QixFQUFBO0FBQzlELElBQUEsTUFBTSxTQUFTLEdBQUdILENBQU0sQ0FBcUIsSUFBSSxDQUFDLENBQUM7SUFFbkRFLENBQVMsQ0FBQyxNQUFLO1FBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO1lBQUUsT0FBTztBQUMvQixRQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNqQyxRQUFBLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFFakMsSUFBQSxPQUFPckMsR0FBTSxDQUFBLE1BQUEsRUFBQSxFQUFBLEdBQUcsRUFBRSxTQUFTLEdBQVMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7QUFDTyxNQUFNLFNBQVMsR0FBR3NDLEVBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFbEQ7QUFDZ0IsU0FBQSxNQUFNLENBQUMsRUFDbkIsS0FBSyxFQUNMLFVBQVUsRUFDVixNQUFNLEdBQUcsS0FBSyxFQUNkLEtBQUssR0FBRyxDQUFDLEdBTVosRUFBQTtBQUNHLElBQUEsTUFBTSxPQUFPLEdBQUdGLEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQzs7QUFHNUMsSUFBQSxJQUFJLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLHVCQUF1QjtRQUFFLE9BQU9wQyxHQUFBLENBQUN1QyxHQUFRLEVBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBZSxDQUFDO0lBRXZGLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQzdDLFFBQUEsT0FBT3ZDLEdBQUMsQ0FBQSxRQUFRLEVBQUMsRUFBQSxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxDQUFDO0FBQ3ZGLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUMvQixPQUFPQSxHQUFBLENBQUMsUUFBUSxFQUFBLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FBQztBQUMvRCxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0IsUUFBQSxPQUFPQSxJQUFDdUMsR0FBUSxFQUFBLElBQUEsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFZLENBQUM7QUFDNUMsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2hDLFFBQUEsT0FBT3ZDLElBQUN1QyxHQUFRLEVBQUEsSUFBQSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQVksQ0FBQztBQUM1QyxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsUUFBQSxPQUFPdkMsR0FBQyxDQUFBdUMsR0FBUSxFQUFFLElBQUEsRUFBQSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFZLENBQUM7QUFDN0YsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ2pDLE9BQU92QyxHQUFBLENBQUN1QyxHQUFRLEVBQUUsSUFBQSxFQUFBLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFZLENBQUM7QUFDOUQsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFOztBQUU3QixRQUFBLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3JCLFlBQUEsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN0RixZQUFBLElBQUksQ0FBQyxRQUFRO0FBQUUsZ0JBQUEsT0FBT3ZDLEdBQUMsQ0FBQSxRQUFRLEVBQUMsRUFBQSxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FBQztBQUV0RixZQUFBLElBQUksVUFBVSxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLFlBQUEsSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRS9ELFlBQUEsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUNwQyxPQUFPQSxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUEsQ0FBSSxDQUFDO0FBQy9GLGlCQUFBLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQztBQUN6QyxnQkFBQSxPQUFPQSxhQUFLLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBSSxDQUFDOztnQkFDeEUsT0FBT0EsR0FBQSxDQUFBLEtBQUEsRUFBQSxFQUFLLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUEsQ0FBSSxDQUFDO0FBQzNELFNBQUE7QUFFRCxRQUFBLE9BQU9BLEdBQUMsQ0FBQSxRQUFRLEVBQUMsRUFBQSxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FBQztBQUMxRSxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDN0IsUUFBQSxPQUFPQSxJQUFDLFNBQVMsRUFBQSxFQUFDLE9BQU8sRUFBRSxLQUFLLEdBQUksQ0FBQztBQUN4QyxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0IsUUFBQSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsUUFDSUEsSUFBQ3VDLEdBQVEsRUFBQSxJQUFBO2dCQUNMdkMsR0FBQyxDQUFBLEdBQUcsRUFBQyxFQUFBLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUksQ0FBQTs7Z0JBQUUsR0FBRztBQUN0RCxnQkFBQUEsR0FBQSxDQUFDLEdBQUcsRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUksQ0FBQSxDQUM1QyxFQUNiO0FBQ0wsU0FBQTtBQUFNLGFBQUEsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3RDLFlBQUEsUUFDSUEsR0FBQSxDQUFBLEdBQUEsRUFBQSxFQUFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxLQUFLLEVBQUMsZUFBZSxFQUFBLEVBQ25FLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FDM0IsRUFDTjtBQUNMLFNBQUE7QUFBTSxhQUFBO1lBQ0gsT0FBT0EsR0FBQSxDQUFBLEdBQUEsRUFBQSxJQUFBOztBQUF3QixnQkFBQSxLQUFLLENBQUMsT0FBTztxQkFBVSxDQUFDO0FBQzFELFNBQUE7QUFDSixLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDakMsT0FBT0EsR0FBQSxDQUFDdUMsR0FBUSxFQUFBLElBQUEsRUFBQSxZQUFBLENBQTRCLENBQUM7QUFDaEQsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNULFlBQUEsUUFDSXZDLEdBQUksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUUsOENBQThDLEVBQUEsRUFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQ2ZBLEdBQUksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMseUJBQXlCLEVBQUE7Z0JBQy9CQSxHQUFDLENBQUEsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUksQ0FBQSxDQUNqRixDQUNSLENBQUMsQ0FDRCxFQUNQO0FBQ0wsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLE9BQU9BLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBQSxJQUFBLEVBQUEsY0FBQSxDQUE4QixDQUFDO0FBRXRFLFlBQUEsUUFDSXZDLEdBQU0sQ0FBQSxNQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsb0NBQW9DLEVBQUEsRUFDM0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQ3ZCQSxJQUFDdUMsR0FBUSxFQUFBLElBQUE7Z0JBQ0osS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSTtnQkFDdkJ2QyxHQUFDLENBQUEsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUksQ0FBQSxDQUMzRSxDQUNkLENBQUMsQ0FDQyxFQUNUO0FBQ0wsU0FBQTtBQUNKLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTs7QUFFL0IsUUFBQSxJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLFFBQVEsRUFBRTtBQUNsRSxZQUFBLE9BQU9BLElBQUN1QyxHQUFRLEVBQUEsSUFBQTs7Z0JBQU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJO29CQUFnQixDQUFDO0FBQ2hFLFNBQUE7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ1QsWUFBQSxRQUNJdkMsR0FBQSxDQUFBLElBQUEsRUFBQSxFQUFJLEtBQUssRUFBQyxnREFBZ0QsRUFBQSxFQUNyRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUNwQ0EsR0FBQSxDQUFBLElBQUEsRUFBQSxFQUFJLEtBQUssRUFBQyxnREFBZ0QsRUFBQTtnQkFDckQsR0FBRzs7Z0JBQUdBLEdBQUMsQ0FBQSxHQUFHLEVBQUMsRUFBQSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBSSxDQUFBLENBQ3JGLENBQ1IsQ0FBQyxDQUNELEVBQ1A7QUFDTCxTQUFBO0FBQU0sYUFBQTtZQUNILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFBRSxPQUFPQSxHQUFBLENBQUN1QyxHQUFRLEVBQUEsSUFBQSxFQUFBLGdCQUFBLENBQWdDLENBQUM7QUFFckYsWUFBQSxRQUNJdkMsR0FBQSxDQUFBLE1BQUEsRUFBQSxFQUFNLEtBQUssRUFBQyxzQ0FBc0MsRUFBQSxFQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssTUFDM0NBLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBQSxJQUFBO2dCQUNKLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7Z0JBQ3RCLEdBQUc7O2dCQUFHdkMsR0FBQyxDQUFBLEdBQUcsRUFBQyxFQUFBLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFJLENBQUEsQ0FDL0UsQ0FDZCxDQUFDLENBQ0MsRUFDVDtBQUNMLFNBQUE7QUFDSixLQUFBO0FBRUQsSUFBQSxPQUFPQSxJQUFDdUMsR0FBUSxFQUFBLElBQUE7O0FBQW9CLFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFBZ0IsQ0FBQztBQUM5RSxDQUFDO0FBRUQ7QUFDTyxNQUFNLEdBQUcsR0FBR0QsRUFBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUV0QztBQUNnQixTQUFBLFFBQVEsQ0FBQyxLQUFzQyxFQUFFLEVBQUUsRUFBQTtJQUMvRCxPQUFPdEMsR0FBQSxDQUFBLEtBQUEsRUFBQSxFQUFLLEtBQUssRUFBQyx5QkFBeUIsSUFBRSxLQUFLLENBQUMsUUFBUSxDQUFPLENBQUM7QUFDdkUsQ0FBQztBQUVEO0FBQ2dCLFNBQUEsWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUF1QixFQUFBO0FBQ3pELElBQUEsUUFDSUEsR0FBQSxDQUFBLEtBQUEsRUFBQSxFQUFLLEtBQUssRUFBQyw2QkFBNkIsRUFBQTtRQUNwQ0EsR0FBRyxDQUFBLEdBQUEsRUFBQSxFQUFBLEtBQUssRUFBQyxpQ0FBaUMsRUFBQSxFQUFFLE9BQU8sQ0FBSyxDQUN0RCxFQUNSO0FBQ04sQ0FBQztBQUVEOztBQUVHO0FBQ2EsU0FBQSxtQkFBbUIsQ0FDL0IsU0FBc0IsRUFDdEIsR0FBUSxFQUNSLFFBQTBCLEVBQzFCLEtBQWdCLEVBQ2hCLE9BQVUsRUFDVixPQUF5QixFQUFBO0lBRXpCLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLEdBQUd3QyxDQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsR0FBR0EsQ0FBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLElBQUEsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsR0FBR0EsQ0FBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzs7SUFHM0QsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUNkLFFBQUEsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFckIsUUFBQSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDL0IsS0FBQTs7SUFHREgsQ0FBUyxDQUFDLE1BQUs7UUFDWCxNQUFNLGdCQUFnQixHQUFHLE1BQUs7QUFDMUIsWUFBQSxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxRQUFRLENBQUMsY0FBYyxFQUFFO0FBQ2hGLGdCQUFBLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM1QixnQkFBQSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLGFBQUE7QUFDTCxTQUFDLENBQUM7O0FBR0YsUUFBQSxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDOztRQUU3RSxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFM0QsUUFBQSxPQUFPLE1BQUs7QUFDUixZQUFBLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hDLFlBQUEsU0FBUyxFQUFFLENBQUM7QUFDaEIsU0FBQyxDQUFDO0FBQ04sS0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFFNUIsSUFBQSxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBRUQ7QUFDTSxNQUFPLGFBQWMsU0FBUUksNEJBQW1CLENBQUE7QUFDeEIsSUFBQSxJQUFBLENBQUE7QUFBMkIsSUFBQSxPQUFBLENBQUE7SUFBckQsV0FBMEIsQ0FBQSxJQUFrQixFQUFTLE9BQXNCLEVBQUE7QUFDdkUsUUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREEsSUFBSSxDQUFBLElBQUEsR0FBSixJQUFJLENBQWM7UUFBUyxJQUFPLENBQUEsT0FBQSxHQUFQLE9BQU8sQ0FBZTtLQUUxRTtJQUVNLE1BQU0sR0FBQTtBQUNULFFBQUEsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xFLFFBQUFDLEdBQU0sQ0FBQzFDLEdBQUMsQ0FBQSxlQUFlLENBQUMsUUFBUSxFQUFBLEVBQUMsS0FBSyxFQUFFLE9BQU8sSUFBRyxJQUFJLENBQUMsT0FBTyxDQUE0QixFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUNqSDtJQUVNLFFBQVEsR0FBQTtBQUNYLFFBQUEyQyxFQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM1QztBQUNKOztBQ2hSRDtBQUNBLFNBQVMsY0FBYyxDQUFDLEdBQStDLEVBQUE7QUFDbkUsSUFBQSxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksU0FBUyxJQUFLLEdBQUcsQ0FBQyxNQUFzQixDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUM7QUFDdkcsQ0FBQztBQUVEO0FBQ0EsU0FBUyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQW1CLEVBQUE7QUFDdkMsSUFBQSxJQUFJLE9BQU8sR0FBR1AsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDOztBQUcxQyxJQUFBLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBK0MsS0FBSTtBQUNsRSxRQUFBLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU87QUFDVixTQUFBO1FBRUQsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsTUFBTSxjQUFjLEdBQUc7QUFDbkIsWUFBQSxNQUFNLEVBQUU7QUFDSixnQkFBQSxNQUFNLEVBQUU7QUFDSixvQkFBQSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUN0RCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzFFLGlCQUFBO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtBQUNsQixhQUFBO1NBQ0osQ0FBQzs7QUFHRixRQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFDakMsSUFBSSxDQUFDLElBQUksRUFDVCxHQUFHLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUlRLGlCQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2hELGNBQXFCLENBQ3hCLENBQUM7QUFDTixLQUFDLENBQUM7O0FBR0YsSUFBQSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQStDLEtBQUk7UUFDbEUsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDNUMsTUFBTSxNQUFNLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7O0FBRXJDLFFBQUEsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7QUFDL0MsUUFBQSxNQUFNLEVBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUUxQyxRQUFBLElBQUksT0FBTyxHQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFOUIsUUFBQSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLEVBQUU7WUFDN0MsU0FBUyxPQUFPLENBQUMsS0FBd0IsRUFBQTtBQUNyQyxnQkFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQWMsQ0FBQyxDQUFDO0FBQzdCLGdCQUFBLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25DO0FBQ0QsWUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMvQixZQUFBLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLFNBQUE7QUFFRCxRQUFBLGVBQWUsUUFBUSxHQUFBO0FBQ25CLFlBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDckMsZ0JBQUEsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLGdCQUFBLElBQUksV0FBVyxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDckMsZ0JBQUEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFO29CQUN6QyxXQUFXLEdBQUcsaUJBQWlCLENBQzNCLEtBQUssQ0FBQyxJQUFJLEVBQ1YsT0FBTyxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsRUFDaEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFDbkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsRUFDekMsU0FBUyxDQUNaLENBQUM7QUFDTCxpQkFBQTtBQUNELGdCQUFBLE1BQU0sV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDcEUsYUFBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQzNEO0FBQ0QsUUFBQSxRQUFRLEVBQUUsQ0FBQztBQUNmLEtBQUMsQ0FBQztBQUVGLElBQUEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUM7SUFDcEMsUUFDSTVDLEdBQ0ksQ0FBQSxJQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUUseUJBQXlCLElBQUksT0FBTyxHQUFHLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBQSxXQUFBLEVBQ1AsSUFBSSxDQUFDLE1BQU0sRUFBQTtBQUV0QixRQUFBQSxHQUFBLENBQUEsT0FBQSxFQUFBLEVBQU8sS0FBSyxFQUFDLGtDQUFrQyxFQUFDLElBQUksRUFBQyxVQUFVLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFJLENBQUE7UUFDeEdBLEdBQUMsQ0FBQSxRQUFRLElBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFJLENBQUE7QUFDbkYsUUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUlBLEdBQUMsQ0FBQSxRQUFRLEVBQUMsRUFBQSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBSSxDQUFBLENBQzlELEVBQ1A7QUFDTixDQUFDO0FBRUQ7QUFDQSxTQUFTLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBd0IsRUFBQTtBQUM1QyxJQUFBLElBQUksT0FBTyxHQUFHb0MsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDOztBQUcxQyxJQUFBLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBK0MsS0FBSTtBQUNsRSxRQUFBLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE9BQU87QUFDVixTQUFBO1FBRUQsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsTUFBTSxjQUFjLEdBQUc7QUFDbkIsWUFBQSxNQUFNLEVBQUU7QUFDSixnQkFBQSxNQUFNLEVBQUU7QUFDSixvQkFBQSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUN0RCxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO0FBQzFFLGlCQUFBO2dCQUNELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtBQUNsQixhQUFBO1NBQ0osQ0FBQzs7QUFHRixRQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFDakMsSUFBSSxDQUFDLElBQUksRUFDVCxHQUFHLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxPQUFPLElBQUlRLGlCQUFRLENBQUMsT0FBTyxDQUFDLEVBQ2hELGNBQXFCLENBQ3hCLENBQUM7QUFDTixLQUFDLENBQUM7SUFFRixRQUNJNUMsWUFBSSxLQUFLLEVBQUMsK0JBQStCLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQTtRQUN4REEsR0FBQyxDQUFBLFFBQVEsSUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUksQ0FBQTtBQUNuRixRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSUEsR0FBQyxDQUFBLFFBQVEsRUFBQyxFQUFBLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFJLENBQUEsQ0FDOUQsRUFDUDtBQUNOLENBQUM7QUFFRDtBQUNBLFNBQVMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUEwQixFQUFBO0lBQy9DLE1BQU0sUUFBUSxHQUFHb0MsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUN0RCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUI7QUFDL0MsUUFBQSxPQUFPcEMsSUFBQyxZQUFZLEVBQUEsRUFBQyxPQUFPLEVBQUMsOENBQThDLEdBQUcsQ0FBQztJQUVuRixJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxRQUNJQSxHQUFJLENBQUEsSUFBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLG9CQUFvQixJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFDVixJQUFJLENBQUMsSUFBSSxHQUFHQSxHQUFBLENBQUMsUUFBUSxFQUFBLEVBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFBLENBQUksR0FBR0EsR0FBQyxDQUFBLFFBQVEsRUFBQyxFQUFBLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBSSxDQUFBLENBQ3hHLENBQ0EsRUFDUDtBQUNOLENBQUM7QUFFRDtBQUNBLFNBQVM2QyxhQUFXLENBQUMsS0FBc0UsRUFBQTtJQUN2RixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUdULEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNqRCxJQUFBLE9BQU8sUUFBUSxDQUFDLGVBQWUsSUFDM0JwQyxHQUFNLENBQUEsTUFBQSxFQUFBLEVBQUEsS0FBSyxFQUFDLHFCQUFxQixFQUFFLEVBQUEsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFRLEtBRTNFQSxHQUFBLENBQUN1QyxHQUFRLEVBQUEsSUFBQSxDQUFZLENBQ3hCLENBQUM7QUFDTixDQUFDO0FBRUQ7QUFDQSxTQUFTLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQXNELEVBQUE7QUFDM0YsSUFBQSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRW5FLFFBQ0l2QyxJQUFDdUMsR0FBUSxFQUFBLElBQUE7UUFDSixVQUFVO0FBQ1AsWUFBQSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksS0FDVnZDLEdBQUEsQ0FBQ3VDLEdBQVEsRUFBQyxFQUFBLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFBO0FBQ25CLGdCQUFBdkMsR0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBO29CQUNJQSxHQUFDLENBQUEsR0FBRyxFQUFDLEVBQUEsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBSSxDQUFBO0FBQ2hELG9CQUFBQSxHQUFBLENBQUM2QyxhQUFXLEVBQUMsRUFBQSxJQUFJLEVBQUUsSUFBSSxHQUFJLENBQzFCO2dCQUNMN0MsR0FBSyxDQUFBLEtBQUEsRUFBQSxFQUFBLEtBQUssRUFBQyx1QkFBdUIsRUFBQTtBQUM5QixvQkFBQUEsR0FBQSxDQUFDLFlBQVksRUFBQSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUEsQ0FBSSxDQUN4RCxDQUNDLENBQ2QsQ0FBQztRQUNMLENBQUMsVUFBVSxJQUFJQSxHQUFBLENBQUMsUUFBUSxFQUFBLEVBQUMsS0FBSyxFQUFFLEtBQW9CLEVBQUEsQ0FBSSxDQUNsRCxFQUNiO0FBQ04sQ0FBQztBQU9EOzs7QUFHRztTQUNhLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQXdDLEVBQUE7QUFDaEYsSUFBQSxJQUFJLE9BQU8sR0FBR29DLEdBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUUxQyxJQUFBLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUMzQixPQUFPLENBQUMsU0FBUyxFQUNqQixPQUFPLENBQUMsR0FBRyxFQUNYLE9BQU8sQ0FBQyxRQUFRLEVBQ2hCLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQ3BCLFlBQVc7UUFDUCxJQUFJLE1BQU0sR0FBRyxNQUFNLG1CQUFtQixDQUFDLE1BQ25DLFdBQVcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUNsRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO0FBQUUsWUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQzs7QUFDOUUsWUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM5RCxLQUFDLENBQ0osQ0FBQztBQUVGLElBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLFNBQVM7UUFDeEIsUUFDSXBDLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtBQUNMLFlBQUF2QyxHQUFBLENBQUMsUUFBUSxFQUFBLElBQUEsRUFBQSxTQUFBLENBQW1CLENBQ3JCLEVBQ2I7QUFDRCxTQUFBLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxPQUFPO1FBQzNCLFFBQ0lBLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtBQUNMLFlBQUF2QyxHQUFBLENBQUMsUUFBUSxFQUFBLElBQUE7O0FBQVksZ0JBQUEsS0FBSyxDQUFDLEtBQUssQ0FBWSxDQUNyQyxFQUNiO0FBRU4sSUFBQSxRQUNJQSxHQUFBLENBQUEsS0FBQSxFQUFBLEVBQUssS0FBSyxFQUFDLDZCQUE2QixFQUFBO0FBQ3BDLFFBQUFBLEdBQUEsQ0FBQyxZQUFZLEVBQUEsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFJLENBQUEsQ0FDMUQsRUFDUjtBQUNOLENBQUM7U0FFZSxjQUFjLENBQUMsSUFBa0IsRUFBRSxLQUFZLEVBQUUsVUFBa0IsRUFBQTtBQUMvRSxJQUFBLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFQSxJQUFDLFFBQVEsRUFBQSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUN2RixDQUFDO1NBRWUsbUJBQW1CLENBQy9CLElBQWtCLEVBQ2xCLEtBQTBCLEVBQzFCLFVBQWtCLEVBQUE7QUFFbEIsSUFBQSxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksRUFBRUEsSUFBQyxZQUFZLEVBQUEsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUEsQ0FBSSxDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVEO0FBQ0E7QUFDQTtBQUVBLFNBQVMsTUFBTSxDQUFDLElBQWUsRUFBQTtJQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDdkMsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQWUsRUFBQTtJQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDekMsQ0FBQztBQUVEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxJQUFlLEVBQUUsTUFBOEIsRUFBQTtJQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5RCxJQUFBLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVE7QUFBRSxRQUFBLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUVsRSxJQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRDtBQUNBLFNBQVMsZUFBZSxDQUFDLFFBQXFCLEVBQUUsTUFBOEIsRUFBQTtBQUMxRSxJQUFBLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUc7UUFDMUIsT0FBTyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUU3RCxRQUFBLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRTNCLFFBQUEsSUFBSSxHQUFHO0FBQUUsWUFBQSxPQUFPLEdBQUcsQ0FBQzs7QUFDZixZQUFBLE9BQU8sT0FBTyxDQUFDO0FBQ3hCLEtBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7QUFHRztBQUNHLFNBQVUsU0FBUyxDQUFDLEdBQWdCLEVBQUE7QUFDdEMsSUFBQSxJQUFJLFFBQVEsR0FBMkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNqRCxJQUFBLElBQUksSUFBSSxHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRWxDLElBQUEsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUU7QUFDbEIsUUFBQSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsUUFBQSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QixRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEIsS0FBQTs7SUFHRCxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUc7QUFBRSxRQUFBLGlCQUFpQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUV4RCxJQUFBLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQ2xCLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQy9GLENBQUM7SUFDRixPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7OztBQUdHO0FBQ0csU0FBVSxVQUFVLENBQUMsR0FBd0IsRUFBQTtBQUMvQyxJQUFBLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMzQixRQUFBLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUc7QUFDZixZQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3BELFNBQUMsQ0FBQyxDQUFDO0FBQ04sS0FBQTtBQUFNLFNBQUE7QUFDSCxRQUFBLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEtBQUE7QUFDTCxDQUFDO0FBRUQ7QUFDQTtBQUNBO0FBRUE7QUFDQSxTQUFTLGVBQWUsQ0FBQyxJQUFZLEVBQUE7SUFDakMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqQyxJQUFBLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLElBQUEsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQUUsUUFBQSxJQUFJLEVBQUUsQ0FBQztBQUVwRCxJQUFBLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQ7QUFDTSxTQUFVLGlCQUFpQixDQUM3QixZQUFvQixFQUNwQixpQkFBMEIsRUFDMUIsYUFBcUIsRUFDckIsb0JBQTRCLEVBQzVCLFFBQWlCLEVBQUE7SUFFakIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7QUFFdEMsSUFBQSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsaUJBQWlCO0FBQy9CLFFBQUEsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTVGLElBQUksS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsSUFBQSxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsSUFBQSxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVuQyxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLElBQUEsSUFBSSxpQkFBaUIsRUFBRTtRQUNuQixhQUFhLEdBQUcsZ0NBQWdDLENBQzVDLGFBQWEsRUFDYixRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ3hELENBQUM7QUFDTCxLQUFBO0FBQU0sU0FBQTtBQUNILFFBQUEsYUFBYSxHQUFHLGNBQWMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0FBQy9HLEtBQUE7QUFDRCxJQUFBLGFBQWEsR0FBRyxDQUFBLEVBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFBLEVBQUcsT0FBTyxFQUFFLE1BQU0sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQSxDQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDO0FBRXhDLElBQUEsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRDtBQUNPLGVBQWUsV0FBVyxDQUFDLEtBQVksRUFBRSxJQUFXLEVBQUUsYUFBcUIsRUFBRSxXQUFvQixFQUFBO0FBQ3BHLElBQUEsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLElBQUksU0FBUyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTztBQUNuRyxJQUFBLGFBQWEsR0FBRyxhQUFhLElBQUksRUFBRSxHQUFHLEdBQUcsR0FBRyxhQUFhLENBQUM7QUFFMUQsSUFBQSxJQUFJLFdBQVcsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFM0MsSUFBQSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0FBQ3hDLElBQUEsSUFBSSxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPO0lBRTNDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLElBQUEsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtRQUFFLE9BQU87O0FBR3ZELElBQUEsSUFBSSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0QsSUFBQSxJQUFJLFdBQVcsRUFBRTtRQUNiLElBQUksWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFM0MsUUFBQSxJQUFJLFlBQVksR0FBYSxDQUFDLEdBQUcsY0FBYyxDQUFBLEVBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBSyxFQUFBLEVBQUEsYUFBYSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFFLENBQUMsQ0FBQyxNQUFNLENBQ3pHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUM1RCxDQUFDO0FBRUYsUUFBQSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO0FBQy9ELEtBQUE7QUFBTSxTQUFBO1FBQ0gsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBLEVBQUcsY0FBYyxDQUFBLEVBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBSyxFQUFBLEVBQUEsYUFBYSxDQUFLLEVBQUEsRUFBQSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUEsQ0FBRSxDQUFDO0FBQ3pHLEtBQUE7QUFFRCxJQUFBLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNuRCxJQUFBLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNsRDs7U0NuWWdCLFlBQVksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQTRDLEVBQUE7QUFDeEYsSUFBQSxRQUNJQSxHQUFBLENBQUEsSUFBQSxFQUFBLEVBQUksS0FBSyxFQUFDLHVCQUF1QixFQUM1QixFQUFBLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUNYQSxHQUFBLENBQUEsSUFBQSxFQUFBLElBQUE7QUFDSSxRQUFBQSxHQUFBLENBQUMsR0FBRyxFQUFBLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFJLENBQzNDLENBQ1IsQ0FBQyxDQUNELEVBQ1A7QUFDTixDQUFDO0FBT0Q7U0FDZ0IsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBd0MsRUFBQTtBQUNoRixJQUFBLElBQUksT0FBTyxHQUFHb0MsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDLElBQUEsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQzNCLE9BQU8sQ0FBQyxTQUFTLEVBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQ1gsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLEtBQUssRUFDYixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFDcEIsWUFBVztRQUNQLElBQUksTUFBTSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsTUFDbkMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQ2xFLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7QUFBRSxZQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBQ25GLFFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEQsS0FBQyxDQUNKLENBQUM7QUFFRixJQUFBLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTO1FBQ3hCLFFBQ0lwQyxJQUFDdUMsR0FBUSxFQUFBLElBQUE7QUFDTCxZQUFBdkMsR0FBQSxDQUFDLFFBQVEsRUFBQSxJQUFBLEVBQUEsWUFBQSxDQUFzQixDQUN4QixFQUNiO0FBQ0QsU0FBQSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTztRQUMzQixRQUNJQSxJQUFDdUMsR0FBUSxFQUFBLElBQUE7WUFDSixHQUFHO0FBQ0osWUFBQXZDLEdBQUEsQ0FBQyxRQUFRLEVBQUEsSUFBQTs7Z0JBQVksS0FBSyxDQUFDLEtBQUssQ0FBWTtZQUFDLEdBQUcsQ0FDekMsRUFDYjtBQUVOLElBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7QUFDN0QsUUFBQSxPQUFPQSxJQUFDLFlBQVksRUFBQSxFQUFDLE9BQU8sRUFBQyw4Q0FBOEMsR0FBRyxDQUFDO0FBRW5GLElBQUEsT0FBT0EsR0FBQyxDQUFBLFlBQVksRUFBQyxFQUFBLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FBQztBQUN4RSxDQUFDO1NBRWUsY0FBYyxDQUFDLElBQWtCLEVBQUUsS0FBWSxFQUFFLFVBQWtCLEVBQUE7QUFDL0UsSUFBQSxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksRUFBRUEsSUFBQyxRQUFRLEVBQUEsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUEsQ0FBSSxDQUFDLENBQUM7QUFDdkYsQ0FBQztTQUVlLG1CQUFtQixDQUFDLElBQWtCLEVBQUUsUUFBbUIsRUFBRSxVQUFrQixFQUFBO0FBQzNGLElBQUEsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUVBLElBQUMsWUFBWSxFQUFBLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFBLENBQUksQ0FBQyxDQUFDO0FBQzlGOztBQzlEQTtBQUNBLFNBQVMsV0FBVyxDQUFDLEtBQXlCLEVBQUE7SUFDMUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHb0MsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELE9BQU8sUUFBUSxDQUFDLGVBQWUsR0FBR3BDLEdBQUEsQ0FBQSxNQUFBLEVBQUEsRUFBTSxLQUFLLEVBQUMscUJBQXFCLElBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBUSxHQUFHQSxHQUFBLENBQUN1QyxHQUFRLEVBQUEsSUFBQSxDQUFZLENBQUM7QUFDdEgsQ0FBQztBQUVEO0FBQ00sU0FBVSxhQUFhLENBQUMsRUFDMUIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEdBS2IsRUFBQTtJQUNHLElBQUksUUFBUSxHQUFHSCxHQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBRXBELFFBQ0lwQyxJQUFDdUMsR0FBUSxFQUFBLElBQUE7UUFDTHZDLEdBQU8sQ0FBQSxPQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsMkJBQTJCLEVBQUE7WUFDcENBLEdBQU8sQ0FBQSxPQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsa0JBQWtCLEVBQUE7QUFDM0IsZ0JBQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsRUFBSSxLQUFLLEVBQUMsc0JBQXNCLElBQzNCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxNQUN6QkEsR0FBSSxDQUFBLElBQUEsRUFBQSxFQUFBLEtBQUssRUFBQyxlQUFlLEVBQUE7b0JBQ3JCQSxHQUFDLENBQUEsUUFBUSxJQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBSSxDQUFBO0FBQ3JELG9CQUFBLEtBQUssSUFBSSxDQUFDLElBQUlBLEdBQUMsQ0FBQSxXQUFXLElBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUksQ0FBQSxDQUNwRCxDQUNSLENBQUMsQ0FDRCxDQUNEO1lBQ1JBLEdBQU8sQ0FBQSxPQUFBLEVBQUEsRUFBQSxLQUFLLEVBQUMsa0JBQWtCLEVBQUEsRUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQ1hBLEdBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxFQUNLLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUNaQSxHQUFBLENBQUEsSUFBQSxFQUFBLElBQUE7QUFDSSxnQkFBQUEsR0FBQSxDQUFDLEdBQUcsRUFBQyxFQUFBLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQSxDQUFJLENBQzlDLENBQ1IsQ0FBQyxDQUNELENBQ1IsQ0FBQyxDQUNFLENBQ0o7UUFDUCxRQUFRLENBQUMsaUJBQWlCLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQzdDQSxJQUFDLFlBQVksRUFBQSxFQUFDLE9BQU8sRUFBQywrQ0FBK0MsR0FBRyxDQUMzRSxDQUNNLEVBQ2I7QUFDTixDQUFDO0FBT0Q7U0FDZ0IsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBd0MsRUFBQTtBQUNqRixJQUFBLElBQUksT0FBTyxHQUFHb0MsR0FBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRTFDLElBQUEsSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQzNCLE9BQU8sQ0FBQyxTQUFTLEVBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQ1gsT0FBTyxDQUFDLFFBQVEsRUFDaEIsT0FBTyxDQUFDLEtBQUssRUFDYixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFDcEIsWUFBVztRQUNQLElBQUksTUFBTSxHQUFHLE1BQU0sbUJBQW1CLENBQUMsTUFDbkMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN2RixLQUFDLENBQ0osQ0FBQztBQUVGLElBQUEsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLFNBQVM7UUFDeEIsUUFDSXBDLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtBQUNMLFlBQUF2QyxHQUFBLENBQUMsUUFBUSxFQUFBLElBQUEsRUFBQSxZQUFBLENBQXNCLENBQ3hCLEVBQ2I7QUFDRCxTQUFBLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxPQUFPO1FBQzNCLFFBQ0lBLElBQUN1QyxHQUFRLEVBQUEsSUFBQTtZQUNKLEdBQUc7QUFDSixZQUFBdkMsR0FBQSxDQUFDLFFBQVEsRUFBQSxJQUFBOztnQkFBWSxLQUFLLENBQUMsS0FBSyxDQUFZO1lBQUMsR0FBRyxDQUN6QyxFQUNiO0FBRU4sSUFBQSxPQUFPQSxJQUFDLGFBQWEsRUFBQSxFQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEdBQUksQ0FBQztBQUNyRyxDQUFDO1NBRWUsZUFBZSxDQUFDLElBQWtCLEVBQUUsS0FBWSxFQUFFLFVBQWtCLEVBQUE7QUFDaEYsSUFBQSxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksRUFBRUEsSUFBQyxTQUFTLEVBQUEsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUEsQ0FBSSxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVLLFNBQVUsb0JBQW9CLENBQ2hDLElBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLE1BQW1CLEVBQ25CLFVBQWtCLEVBQUE7SUFFbEIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUVBLEdBQUMsQ0FBQSxhQUFhLElBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUksQ0FBQSxDQUFDLENBQUM7QUFDbEg7O0FDOUZBO0FBQ00sSUFBVyxXQUFXLENBUTNCO0FBUkQsQ0FBQSxVQUFpQixXQUFXLEVBQUE7QUFDeEIsSUFBQSxTQUFnQixLQUFLLENBQUMsSUFBWSxFQUFFLEtBQVksRUFBQTtBQUM1QyxRQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFnQixDQUFDO0tBQ3hDO0FBRmUsSUFBQSxXQUFBLENBQUEsS0FBSyxRQUVwQixDQUFBO0FBRUQsSUFBQSxTQUFnQixNQUFNLENBQUMsS0FBWSxFQUFFLEdBQStCLEVBQUE7QUFDaEUsUUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQztLQUNwQztBQUZlLElBQUEsV0FBQSxDQUFBLE1BQU0sU0FFckIsQ0FBQTtBQUNMLENBQUMsRUFSZ0IsV0FBVyxLQUFYLFdBQVcsR0FRM0IsRUFBQSxDQUFBLENBQUE7O0FDV0Q7QUFDTSxTQUFVLFVBQVUsQ0FBSSxJQUFpQixFQUFBO0lBQzNDLE9BQU92QiwrQkFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sS0FBSTtBQUNqQyxRQUFBLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFJO1lBQ2hCLElBQUksTUFBTSxHQUFJLElBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUFFLGdCQUFBLE9BQU8sTUFBTSxDQUFDO0FBRWxDLFlBQUEsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRyxTQUFDLENBQUM7QUFDTixLQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDtBQUNBLFNBQVMsYUFBYSxDQUFDLElBQVksRUFBQTtBQUMvQixJQUFBLE9BQU8sSUFBSTtTQUNOLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDaEIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLENBQUM7QUFFRDtBQUM4RDtBQUM5RCxTQUFTLDRCQUE0QixDQUFJLE1BQTJCLEVBQUUsTUFBbUIsRUFBQTtJQUNyRixPQUFPcUUsNEJBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDM0UsbUNBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMzRCxDQUFDO0FBRUQ7QUFDTyxNQUFNLGNBQWMsR0FBR08sdUNBQWdCLENBQXFCOztBQUUvRCxJQUFBLFNBQVMsRUFBRSxDQUFDLElBQ1JULDRCQUFLLENBQVNVLCtCQUFRLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUMvQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQWUsQ0FBQztTQUMxQyxJQUFJLENBQUMscURBQXFELENBQUM7QUFDcEUsSUFBQSxrQkFBa0IsRUFBRSxDQUFDLElBQ2pCTCwrQkFBUSxDQUNKLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDSCxtQ0FBWSxDQUFDLEVBQ25DUSwrQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQ1IsbUNBQVksQ0FBQyxFQUNsQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQzNDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQ3pEO0FBQ0wsSUFBQSxPQUFPLEVBQUUsTUFDTDRFLCtCQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFJOztRQUVsQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBT0Msb0NBQWEsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7O1FBRXJFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdkMsUUFBQSxPQUFPQyxvQ0FBYSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELEtBQUMsQ0FBQztBQUNOLElBQUEsVUFBVSxFQUFFLENBQUMsSUFDVGhGLDRCQUFLLENBQ0QsQ0FBQyxDQUFDLGtCQUFrQixFQUNwQixVQUFVLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQ3JHO0FBQ0wsSUFBQSxTQUFTLEVBQUUsQ0FBQyxJQUNSSywrQkFBUSxDQUNKLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDRSxzQ0FBZSxDQUFDLEVBQ3RDRywrQkFBUSxDQUFDLGdDQUFnQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNwRCxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUk7UUFDWCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JFLElBQUksU0FBUyxJQUFJLE1BQU07WUFBRSxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ2xELElBQUksU0FBUyxJQUFJLEtBQUs7WUFBRSxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQ2hELE9BQU87QUFDSCxZQUFBLEtBQUssRUFBRSxLQUFLO0FBQ1osWUFBQSxTQUFTLEVBQUUsU0FBdUM7U0FDckQsQ0FBQztBQUNOLEtBQUMsQ0FDSjtBQUVMLElBQUEsWUFBWSxFQUFFLENBQUMsSUFDWCxDQUFDLENBQUMsU0FBUztTQUNOLEtBQUssQ0FBQyxJQUFJLElBQUc7QUFDVixRQUFBLFFBQVEsSUFBSTtZQUNSLEtBQUssT0FBTyxFQUFFO0FBQ1YsZ0JBQUEsT0FBTyw0QkFBNEIsQ0FDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUMxQ0wsK0JBQVEsQ0FDSkssK0JBQVEsQ0FBQyxlQUFlLENBQUM7QUFDcEIscUJBQUEsSUFBSSxDQUFDSCxzQ0FBZSxDQUFDO0FBQ3JCLHFCQUFBLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDZDBFLDhCQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRXRFLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDSixzQ0FBZSxDQUFDLENBQUMsRUFDMUQsQ0FBQyxTQUFTLEVBQUUsTUFBTSxLQUFJO0FBQ2xCLG9CQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO2lCQUMxRCxDQUNKLENBQ0osQ0FBQztBQUNMLGFBQUE7QUFDRCxZQUFBLEtBQUssTUFBTTtBQUNQLGdCQUFBLE9BQU8sNEJBQTRCLENBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDakRGLCtCQUFRLENBQ0pLLCtCQUFRLENBQUMsZUFBZSxDQUFDO0FBQ3BCLHFCQUFBLElBQUksQ0FBQ0gsc0NBQWUsQ0FBQztBQUNyQixxQkFBQSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ2QsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQzFCLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSTtvQkFDbEIsT0FBTzt3QkFDSCxJQUFJO0FBQ0osd0JBQUEsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTO0FBQ2xELHdCQUFBLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUM7cUJBQ2hDLENBQUM7aUJBQ0wsQ0FDSixDQUNKLENBQUM7QUFDTixZQUFBLEtBQUssTUFBTTtnQkFDUCxPQUFPTSxnQ0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMvQixZQUFBLEtBQUssVUFBVTtBQUNYLGdCQUFBLE9BQU9YLG1DQUFZLENBQUMsSUFBSSxDQUNwQkcsK0JBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssSUFBRztvQkFDM0IsT0FBTzt3QkFDSCxJQUFJO0FBQ0osd0JBQUEsTUFBTSxFQUFFLElBQUk7d0JBQ1osS0FBSztxQkFDTyxDQUFDO2lCQUNwQixDQUFDLENBQ0wsQ0FBQztBQUNOLFlBQUE7Z0JBQ0ksT0FBT1MsNkJBQU0sQ0FBQyw0QkFBNEIsSUFBSSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7QUFDMUQsU0FBQTtBQUNMLEtBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxtQ0FBbUMsQ0FBQztBQUNsRCxJQUFBLFVBQVUsRUFBRSxDQUFDLElBQUlULCtCQUFRLENBQUNLLCtCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUVSLG1DQUFZLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztBQUN6RyxJQUFBLFdBQVcsRUFBRSxDQUFDLElBQ1ZHLCtCQUFRLENBQUNLLCtCQUFRLENBQUMsUUFBUSxDQUFDLEVBQUVSLG1DQUFZLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFJO1FBQzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsQ0FBQztBQUN6RCxLQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDakMsWUFBWSxFQUFFLENBQUMsSUFDWEcsK0JBQVEsQ0FDSkssK0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFDakJSLG1DQUFZLEVBQ1osQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUNTLCtCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDSixzQ0FBZSxDQUFDLENBQUMsRUFDdkQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sS0FBSTtBQUNqQixRQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZ0IsQ0FBQztBQUNsRCxLQUFDLENBQ0osQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7QUFDbkMsSUFBQSxXQUFXLEVBQUUsQ0FBQyxJQUNWRiwrQkFBUSxDQUFDSywrQkFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFUixtQ0FBWSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSTtRQUM5RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFlLENBQUM7QUFDekQsS0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUM1QixJQUFBLGFBQWEsRUFBRSxDQUFDLElBQ1pHLCtCQUFRLENBQUNLLCtCQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDUixtQ0FBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUk7QUFDekUsUUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWlCLENBQUM7QUFDckQsS0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDO0FBQzFDLElBQUEsYUFBYSxFQUFFLENBQUMsSUFDWkcsK0JBQVEsQ0FBQ0ssK0JBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUNSLG1DQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssS0FBSTtBQUMxRSxRQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBZSxDQUFDO0FBQ2pELEtBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQzs7QUFFM0MsSUFBQSxNQUFNLEVBQUUsQ0FBQyxJQUFJRiw0QkFBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ2hILEtBQUssRUFBRSxDQUFDLElBQ0pLLCtCQUFRLENBQ0osQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFDaEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQ3hELENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQ2pELENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEtBQUk7UUFDdEIsT0FBTztZQUNILE1BQU07WUFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELFlBQUEsVUFBVSxFQUFFLE9BQU87QUFDbkIsWUFBQSxRQUFRLEVBQUUsc0JBQXNCO1NBQzFCLENBQUM7QUFDZixLQUFDLENBQ0o7QUFDUixDQUFBLENBQUMsQ0FBQztBQUVIOztBQUVHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBcUJMLDRCQUFLLENBQUNFLG1DQUFZLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQztLQUM1RixJQUFJLEVBQUU7O0FBRU4sS0FBQSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUU5Qjs7O0FBR0c7QUFDRyxTQUFVLFVBQVUsQ0FBQyxJQUFZLEVBQUE7SUFDbkMsSUFBSTtRQUNBLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hELFFBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLEtBQUE7QUFBQyxJQUFBLE9BQU8sS0FBSyxFQUFFO1FBQ1osT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNyQyxLQUFBO0FBQ0w7O0FDck9BLFNBQVMsSUFBSSxHQUFHLEdBQUc7QUFDbkIsU0FBUyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUMxQjtBQUNBLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHO0FBQ3ZCLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQUNELFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtBQUMzQixJQUFJLE9BQU8sS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBQ2xGLENBQUM7QUFDRCxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUU7QUFDakIsSUFBSSxPQUFPLEVBQUUsRUFBRSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxTQUFTLFlBQVksR0FBRztBQUN4QixJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBQ0QsU0FBUyxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQ3RCLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFO0FBQzVCLElBQUksT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUM7QUFDdkMsQ0FBQztBQUNELFNBQVMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDOUIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsS0FBSyxPQUFPLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN6QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRTtBQUN2QixJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7QUFDbkQsSUFBSSxJQUFJLFVBQVUsRUFBRTtBQUNwQixRQUFRLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLFFBQVEsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtBQUN4RCxJQUFJLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7QUFDOUIsVUFBVSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0QsVUFBVSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3RCLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtBQUMxRCxJQUFJLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3QixRQUFRLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM5QyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7QUFDekMsWUFBWSxPQUFPLElBQUksQ0FBQztBQUN4QixTQUFTO0FBQ1QsUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUN0QyxZQUFZLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUM5QixZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BFLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdDLGdCQUFnQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQsYUFBYTtBQUNiLFlBQVksT0FBTyxNQUFNLENBQUM7QUFDMUIsU0FBUztBQUNULFFBQVEsT0FBTyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNwQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDekIsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUU7QUFDM0csSUFBSSxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hHLElBQUksSUFBSSxZQUFZLEVBQUU7QUFDdEIsUUFBUSxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2xHLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztBQUN0QyxDQUFDO0FBQ0Q7QUFDQSxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBQzlCLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDdEMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUNELFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRTtBQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFDRCxTQUFTLFlBQVksQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFO0FBQzdDLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxRQUFRLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztBQUN6QixZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDdkIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUMzQixJQUFJLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3BCLElBQUksT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFDRCxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDL0MsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxJQUFJLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7QUFDdEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJO0FBQ3JCLFFBQVEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4QyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLO0FBQ25ELFFBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUNELFNBQVMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7QUFDMUM7QUFDQSxJQUFJLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekUsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRTtBQUNsQyxRQUFRLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtBQUNyQyxZQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEMsU0FBUztBQUNULGFBQWEsSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFO0FBQ2xDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pELFNBQVM7QUFDVCxhQUFhLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtBQUNwQyxZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyRCxTQUFTO0FBQ1QsYUFBYSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO0FBQzNELFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsU0FBUztBQUNULEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxRQUFRLENBQUMsT0FBTyxFQUFFO0FBQzNCLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBQ0QsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5QixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7QUFDL0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixDQUFDO0FBQ0QsU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7QUFDN0MsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUNEO0FBQ0EsSUFBSSxpQkFBaUIsQ0FBQztBQUN0QixTQUFTLHFCQUFxQixDQUFDLFNBQVMsRUFBRTtBQUMxQyxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztBQUNsQyxDQUFDO0FBQ0QsU0FBUyxxQkFBcUIsR0FBRztBQUNqQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7QUFDMUIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDNUUsSUFBSSxPQUFPLGlCQUFpQixDQUFDO0FBQzdCLENBQUM7QUFDRDtBQUNBLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBQzdCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUMzQixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzQyxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUM3QixTQUFTLGVBQWUsR0FBRztBQUMzQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtBQUMzQixRQUFRLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQUNoQyxRQUFRLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsbUJBQW1CLENBQUMsRUFBRSxFQUFFO0FBQ2pDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNqQyxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLElBQUksUUFBUTtBQUNoQixRQUFRLE9BQU87QUFDZixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxHQUFHO0FBQ1A7QUFDQTtBQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdELFlBQVksTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsWUFBWSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakMsU0FBUztBQUNULFFBQVEscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNO0FBQ3ZDLFlBQVksaUJBQWlCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM3RCxZQUFZLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELFlBQVksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDL0M7QUFDQSxnQkFBZ0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QyxnQkFBZ0IsUUFBUSxFQUFFLENBQUM7QUFDM0IsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEMsS0FBSyxRQUFRLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtBQUN0QyxJQUFJLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRTtBQUNuQyxRQUFRLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUM3QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDckIsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsQ0FBQztBQUNELFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUNwQixJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFDOUIsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2xDLFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztBQUMvQixRQUFRLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLFFBQVEsRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BELFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUNyRCxLQUFLO0FBQ0wsQ0FBQztBQUNELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxNQUFNLENBQUM7QUFDWCxTQUFTLFlBQVksR0FBRztBQUN4QixJQUFJLE1BQU0sR0FBRztBQUNiLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixRQUFRLENBQUMsRUFBRSxFQUFFO0FBQ2IsUUFBUSxDQUFDLEVBQUUsTUFBTTtBQUNqQixLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBUyxZQUFZLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsS0FBSztBQUNMLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDckMsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDeEQsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMvQixZQUFZLE9BQU87QUFDbkIsUUFBUSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUM1QixZQUFZLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsWUFBWSxJQUFJLFFBQVEsRUFBRTtBQUMxQixnQkFBZ0IsSUFBSSxNQUFNO0FBQzFCLG9CQUFvQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLGdCQUFnQixRQUFRLEVBQUUsQ0FBQztBQUMzQixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBLFNBQVMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDdkMsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNsQyxJQUFJLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUM3QyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLO0FBQ2hDLFlBQVksT0FBTztBQUNuQixRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzlCLFFBQVEsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNqQyxRQUFRLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtBQUMvQixZQUFZLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUMsWUFBWSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ25DLFNBQVM7QUFDVCxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELFFBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ2hDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFlBQVksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzdCLGdCQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUs7QUFDbEQsb0JBQW9CLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxLQUFLLEVBQUU7QUFDOUMsd0JBQXdCLFlBQVksRUFBRSxDQUFDO0FBQ3ZDLHdCQUF3QixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtBQUMxRCw0QkFBNEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtBQUMxRCxnQ0FBZ0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEQsNkJBQTZCO0FBQzdCLHlCQUF5QixDQUFDLENBQUM7QUFDM0Isd0JBQXdCLFlBQVksRUFBRSxDQUFDO0FBQ3ZDLHFCQUFxQjtBQUNyQixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLGFBQWE7QUFDYixZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QixZQUFZLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0MsWUFBWSxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQy9CLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTTtBQUN2QixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLFFBQVEsSUFBSSxXQUFXLEVBQUU7QUFDekIsWUFBWSxLQUFLLEVBQUUsQ0FBQztBQUNwQixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDN0IsUUFBUSxNQUFNLGlCQUFpQixHQUFHLHFCQUFxQixFQUFFLENBQUM7QUFDMUQsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSTtBQUM5QixZQUFZLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDckQsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRCxZQUFZLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLFNBQVMsRUFBRSxLQUFLLElBQUk7QUFDcEIsWUFBWSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3JELFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQsWUFBWSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ2hDLGdCQUFnQixNQUFNLEtBQUssQ0FBQztBQUM1QixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWDtBQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDM0MsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwQyxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsU0FBUztBQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDeEMsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RCxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ2hELElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU07QUFDdEMsUUFBUSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDeEksSUFBSSxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzlCLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLElBQUksTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzNCLElBQUksT0FBTyxDQUFDLEVBQUU7QUFDZCxRQUFRLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLElBQUksTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQzFCLElBQUksTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNqQyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ1YsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ2hCLFFBQVEsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkMsUUFBUSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNwQixZQUFZLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdEQsWUFBWSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEIsU0FBUztBQUNULGFBQWEsSUFBSSxPQUFPLEVBQUU7QUFDMUIsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QyxTQUFTO0FBQ1QsUUFBUSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDbkQsUUFBUSxJQUFJLEdBQUcsSUFBSSxXQUFXO0FBQzlCLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RCxLQUFLO0FBQ0wsSUFBSSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMvQixJQUFJLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUMzQixRQUFRLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQyxRQUFRLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzNCLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixLQUFLO0FBQ0wsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkIsUUFBUSxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxRQUFRLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDdEMsUUFBUSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFO0FBQ3JDO0FBQ0EsWUFBWSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUNuQyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsU0FBUztBQUNULGFBQWEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDM0M7QUFDQSxZQUFZLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixTQUFTO0FBQ1QsYUFBYSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ2pFLFlBQVksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzlCLFNBQVM7QUFDVCxhQUFhLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4QyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFNBQVM7QUFDVCxhQUFhLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzVELFlBQVksUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QixTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQyxZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO0FBQ2hCLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUMxQyxZQUFZLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMLElBQUksT0FBTyxDQUFDO0FBQ1osUUFBUSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFO0FBQzVDLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLElBQUksTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzNCLElBQUksTUFBTSxhQUFhLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDekMsSUFBSSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQzFCLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUNoQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2YsWUFBWSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRTtBQUNqQyxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0Isb0JBQW9CLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsYUFBYTtBQUNiLFlBQVksS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDakMsZ0JBQWdCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDekMsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekMsb0JBQW9CLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0MsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQ2pDLGdCQUFnQixhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUU7QUFDbkMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQztBQUM1QixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDcEMsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO0FBQ3pDLElBQUksT0FBTyxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksWUFBWSxLQUFLLElBQUksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3pGLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRTtBQUNqQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsQ0FBQztBQUNELFNBQVMsZUFBZSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRTtBQUNuRSxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQzFFLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtBQUN4QjtBQUNBLFFBQVEsbUJBQW1CLENBQUMsTUFBTTtBQUNsQyxZQUFZLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pFLFlBQVksSUFBSSxVQUFVLEVBQUU7QUFDNUIsZ0JBQWdCLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztBQUNuRCxhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxnQkFBZ0IsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3hDLGFBQWE7QUFDYixZQUFZLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN2QyxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBQ0QsU0FBUyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO0FBQ2pELElBQUksTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUM1QixJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFDOUIsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLFFBQVEsRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRDtBQUNBO0FBQ0EsUUFBUSxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzNDLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDcEIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO0FBQ2xDLElBQUksSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUN0QyxRQUFRLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxRQUFRLGVBQWUsRUFBRSxDQUFDO0FBQzFCLFFBQVEsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLEtBQUs7QUFDTCxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUNELFNBQVMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDN0YsSUFBSSxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDO0FBQy9DLElBQUkscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsSUFBSSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsRUFBRSxHQUFHO0FBQzlCLFFBQVEsUUFBUSxFQUFFLElBQUk7QUFDdEIsUUFBUSxHQUFHLEVBQUUsSUFBSTtBQUNqQjtBQUNBLFFBQVEsS0FBSztBQUNiLFFBQVEsTUFBTSxFQUFFLElBQUk7QUFDcEIsUUFBUSxTQUFTO0FBQ2pCLFFBQVEsS0FBSyxFQUFFLFlBQVksRUFBRTtBQUM3QjtBQUNBLFFBQVEsUUFBUSxFQUFFLEVBQUU7QUFDcEIsUUFBUSxVQUFVLEVBQUUsRUFBRTtBQUN0QixRQUFRLGFBQWEsRUFBRSxFQUFFO0FBQ3pCLFFBQVEsYUFBYSxFQUFFLEVBQUU7QUFDekIsUUFBUSxZQUFZLEVBQUUsRUFBRTtBQUN4QixRQUFRLE9BQU8sRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUM3RTtBQUNBLFFBQVEsU0FBUyxFQUFFLFlBQVksRUFBRTtBQUNqQyxRQUFRLEtBQUs7QUFDYixRQUFRLFVBQVUsRUFBRSxLQUFLO0FBQ3pCLEtBQUssQ0FBQztBQUNOLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxRQUFRO0FBQ3JCLFVBQVUsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLEtBQUs7QUFDeEUsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDdEQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtBQUNuRSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakQsb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkMsZ0JBQWdCLElBQUksS0FBSztBQUN6QixvQkFBb0IsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxhQUFhO0FBQ2IsWUFBWSxPQUFPLEdBQUcsQ0FBQztBQUN2QixTQUFTLENBQUM7QUFDVixVQUFVLEVBQUUsQ0FBQztBQUNiLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNqQixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUI7QUFDQSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3BFLElBQUksSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ3hCLFFBQVEsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQzdCLFlBQVksTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRDtBQUNBLFlBQVksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRCxZQUFZLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEMsU0FBUztBQUNULGFBQWE7QUFDYjtBQUNBLFlBQVksRUFBRSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNDLFNBQVM7QUFDVCxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUs7QUFDekIsWUFBWSxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNqRCxRQUFRLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUMxRixRQUFRLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEtBQUs7QUFDTCxJQUFJLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLE1BQU0sZUFBZSxDQUFDO0FBQ3RCLElBQUksUUFBUSxHQUFHO0FBQ2YsUUFBUSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUM3QixLQUFLO0FBQ0wsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtBQUN4QixRQUFRLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEYsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pDLFFBQVEsT0FBTyxNQUFNO0FBQ3JCLFlBQVksTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0RCxZQUFZLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztBQUM1QixnQkFBZ0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0MsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNsQixRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM5QyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUN0QyxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFDdkMsU0FBUztBQUNULEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLEdBQUcsS0FBSyxFQUFFO0FBQy9DLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMxRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBQ0QsSUFBSSxZQUFZLEdBQUcsVUFBVSxDQUFDO0FBQzlCO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCLENBQUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQztBQUNuQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsd1VBQXdVLENBQUM7QUFDOVYsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQ2xDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksTUFBTSxDQUFDO0FBQ1osQ0FBQyxJQUFJLGVBQWUsQ0FBQztBQUNyQjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUNwSCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxLQUFLLGlCQUFpQixDQUFDLElBQUksZUFBZSxNQUFNLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsRUFBRTtBQUN0SixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLDJCQUEyQixDQUFDLEVBQUU7QUFDMUMsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksTUFBTSxDQUFDO0FBQ1osQ0FBQyxJQUFJLGVBQWUsQ0FBQztBQUNyQjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsV0FBVyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQztBQUN4SCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxLQUFLLGlCQUFpQixDQUFDLElBQUksZUFBZSxNQUFNLGVBQWUsR0FBRyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUMsV0FBVyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsRUFBRTtBQUMxSixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3hDLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLDJCQUEyQixDQUFDLEVBQUU7QUFDMUMsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksZUFBZSxDQUFDO0FBQ3JCO0FBQ0EsQ0FBQyxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDeEMsRUFBRSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8saUJBQWlCLENBQUM7QUFDcEQsRUFBRSxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqRCxDQUFDLElBQUksUUFBUSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQixHQUFHLGVBQWUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUM3QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLEdBQUcsSUFBSSxrQkFBa0IsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRTtBQUN6RixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNCLElBQUksTUFBTTtBQUNWLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixJQUFJLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztBQUNBLElBQUksSUFBSSxRQUFRLEVBQUU7QUFDbEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDN0QsS0FBSztBQUNMLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekIsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25ELENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDbEMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzVCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM1QjtBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdFLEVBQUUsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxFQUFFLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUUsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFDRDtBQUNBLE1BQU0sR0FBRyxTQUFTLGVBQWUsQ0FBQztBQUNsQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNwRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakgsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxNQUFNLDBCQUEwQixHQUFHLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNqRCxNQUFNLDBCQUEwQixHQUFHLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakYsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEtBQUssRUFBRSxRQUFRLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxNQUFNLHFCQUFxQixjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDekQsQ0FBQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBQzlHO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLElBQUksWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLElBQUksWUFBWSxFQUFFO0FBQ3JCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxZQUFZLEVBQUU7QUFDckIsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRTtBQUNqRCxLQUFLLFdBQVcsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztBQUM5SSxLQUFLO0FBQ0wsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9DLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQztBQUN4QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxJQUFJLElBQUksR0FBRztBQUNaLEVBQUUsR0FBRztBQUNMLEVBQUUsT0FBTyxFQUFFLElBQUk7QUFDZixFQUFFLEtBQUssRUFBRSxJQUFJO0FBQ2IsRUFBRSxRQUFRLEVBQUUsS0FBSztBQUNqQixFQUFFLE9BQU8sRUFBRSxvQkFBb0I7QUFDL0IsRUFBRSxJQUFJLEVBQUUsaUJBQWlCO0FBQ3pCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQjtBQUMzQixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxNQUFNLEVBQUUsS0FBSztBQUNmLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxjQUFjLENBQUMsT0FBTyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JEO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLGtCQUFrQixHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5QyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7QUFDcEQsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDO0FBQ3BDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtBQUNwQixHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUM7QUFDakIsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNsQjtBQUNBLEdBQUcsSUFBSSxLQUFLLGdCQUFnQixDQUFDLElBQUksT0FBTyxNQUFNLE9BQU8sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNO0FBQ3RILElBQUksTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2xDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDakMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzdCLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEMsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFCLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUM3QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2YsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUU7QUFDakMsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxNQUFNLHFCQUFxQixjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDekQsQ0FBQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQzVHO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLElBQUksWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN0QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLElBQUksWUFBWSxFQUFFO0FBQ3JCLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxZQUFZLEVBQUU7QUFDckIsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLElBQUksS0FBSyx5QkFBeUIsQ0FBQyxFQUFFO0FBQzNELEtBQUssV0FBVyxDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0FBQzFJLEtBQUs7QUFDTCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDL0MsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUU7QUFDbkMsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLHdCQUF3QixDQUFDO0FBQzlCLENBQUMsSUFBSSxRQUFRLENBQUM7QUFDZCxDQUFDLElBQUksZUFBZSxDQUFDO0FBQ3JCLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2xFLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsQ0FBQyxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDeEMsRUFBRSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3BDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDWCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLHdCQUF3QixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkc7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsZUFBZSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQzdCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsR0FBRyxJQUFJLG9CQUFvQixHQUFHLHdCQUF3QixDQUFDO0FBQ3ZELEdBQUcsd0JBQXdCLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckQ7QUFDQSxHQUFHLElBQUksd0JBQXdCLEtBQUssb0JBQW9CLEVBQUU7QUFDMUQsSUFBSSxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELElBQUksTUFBTTtBQUNWLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQSxJQUFJLGNBQWMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU07QUFDaEUsS0FBSyxTQUFTLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDNUMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDbkQ7QUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDbkIsS0FBSyxRQUFRLEdBQUcsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2RyxLQUFLLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNsQixLQUFLLE1BQU07QUFDWCxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUM1RCxJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMzQixHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVCLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDcEQsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25ELENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoRDtBQUNBLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM1QjtBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUNEO0FBQ0EsTUFBTSxnQkFBZ0IsU0FBUyxlQUFlLENBQUM7QUFDL0MsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQ3RCLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDVixFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRixFQUFFO0FBQ0YsQ0FBQztBQUNEO0FBQ0EsU0FBUyxPQUFPLEdBQUc7QUFDbkIsSUFBSSxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxDQUFDLEVBQUU7QUFDMUIsSUFBSSxPQUFPLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUM3QyxDQUFDO0FBQ0QsU0FBUyxhQUFhLENBQUMsR0FBRyxLQUFLLEVBQUU7QUFDakMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFDRCxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDekIsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBQ0QsU0FBUyxjQUFjLENBQUMsSUFBSSxFQUFFO0FBQzlCLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLEtBQUssRUFBRTtBQUM1QyxJQUFJLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM1QyxJQUFJLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNyQixJQUFJLElBQUksSUFBSSxDQUFDO0FBQ2IsSUFBSSxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RSxJQUFJLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMvQyxJQUFJLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xFLElBQUksS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRTtBQUMxQyxRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDNUIsWUFBWSxJQUFJLEdBQUc7QUFDbkIsZ0JBQWdCLElBQUksRUFBRSxFQUFFO0FBQ3hCLGdCQUFnQixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNwQyxhQUFhLENBQUM7QUFDZCxZQUFZLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCLENBQUMsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztBQUNsQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsb3hCQUFveEIsQ0FBQztBQUMxeUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzFDLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3ZELEVBQUUsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssZ0JBQWdCLEdBQUc7QUFDaEQsS0FBSyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsS0FBSyxFQUFFLENBQUM7QUFDUjtBQUNBLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtBQUNwQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ1YsQ0FBQyxJQUFJLFFBQVEsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNqRCxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksZ0JBQWdCLENBQUM7QUFDdEIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLFVBQVUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDM0MsQ0FBQyxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDdEI7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEQsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLEVBQUU7QUFDRjtBQUNBLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNO0FBQzdELEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN4QixFQUFFLENBQUMsQ0FBQztBQUNKO0FBQ0EsQ0FBQyxJQUFJLFdBQVcsR0FBRztBQUNuQixFQUFFO0FBQ0YsR0FBRyxLQUFLLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzRSxHQUFHO0FBQ0gsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxJQUFJLEVBQUU7QUFDMUMsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNqRCxFQUFFLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QixHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO0FBQ3RELEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuQyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNoRyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDckcsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQjtBQUNBLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNqQixJQUFJLE9BQU8sR0FBRztBQUNkLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWTtBQUN2QyxNQUFNLElBQUksV0FBVyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDL0ksTUFBTSxDQUFDO0FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQzdDLE1BQU0sSUFBSSxXQUFXLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdkssTUFBTSxDQUFDO0FBQ1AsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZO0FBQzdDLE1BQU0sSUFBSSxXQUFXLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM3SixNQUFNLENBQUM7QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztBQUNuQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUssUUFBUSxNQUFNLFFBQVEsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUg7QUFDQSxHQUFHLElBQUksS0FBSyxnQkFBZ0IsR0FBRyxFQUFFO0FBQ2pDLElBQUksVUFBVSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMxQyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ1Y7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQy9DLEtBQUssTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RDtBQUNBLEtBQUssSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDekIsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsTUFBTSxNQUFNO0FBQ1osTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdEQsTUFBTSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekIsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNaLEtBQUs7QUFDTDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUU7QUFDbkUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtBQUNySyxJQUFJLEtBQUssZ0JBQWdCLEdBQUcsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO0FBQzFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDUDtBQUNBLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2hHLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNyRyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDaEYsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QyxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2xELElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QztBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4QyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEIsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO0FBQ2hDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksZ0JBQWdCLENBQUM7QUFDdEIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDO0FBQ3pDLEdBQUcsS0FBSyxFQUFFO0FBQ1YsSUFBSSxRQUFRLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQyxJQUFJLE9BQU8sRUFBRTtBQUNiLEtBQUssT0FBTyxFQUFFO0FBQ2QsTUFBTSxxQkFBcUI7QUFDM0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDekMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssUUFBUSxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQzFDLE1BQU07QUFDTixLQUFLO0FBQ0wsSUFBSSxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUU7QUFDcEIsSUFBSTtBQUNKLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRCxHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLEdBQUcsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDdkMsR0FBRyxJQUFJLEtBQUssZ0JBQWdCLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekY7QUFDQSxHQUFHLElBQUksS0FBSyxtR0FBbUcsS0FBSyxFQUFFO0FBQ3RILElBQUksd0JBQXdCLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RELElBQUk7QUFDSjtBQUNBLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDbkQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN2RCxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2QyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQ7QUFDQTtBQUNBLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUN4QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDNUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMzQixDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLENBQUMsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDekMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNyQyxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RTtBQUNBLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxPQUFPLElBQUk7QUFDM0IsRUFBRSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlELEVBQUUsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsSUFBSSxlQUFlLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN6RixFQUFFLElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakUsRUFBRSxJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDNUYsRUFBRSxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hGLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxJQUFJO0FBQ04sRUFBRSxPQUFPO0FBQ1QsRUFBRSxPQUFPO0FBQ1QsRUFBRSxhQUFhO0FBQ2YsRUFBRSxLQUFLO0FBQ1AsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsVUFBVTtBQUNaLEVBQUUsUUFBUTtBQUNWLEVBQUUsYUFBYTtBQUNmLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLE1BQU0sR0FBRyxTQUFTLGVBQWUsQ0FBQztBQUNsQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNuRTtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRTtBQUNoRSxHQUFHLElBQUksRUFBRSxDQUFDO0FBQ1YsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNkLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNuQixHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ1gsR0FBRyxjQUFjLEVBQUUsQ0FBQztBQUNwQixHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsc0JBQXNCLENBQUM7QUFDbkMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLHlVQUF5VSxDQUFDO0FBQy9WLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ1YsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixHQUFHLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN0QyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGdQQUFnUCxDQUFDLENBQUM7QUFDclEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztBQUNwRCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN4QyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDOUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsV0FBVyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDaEUsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEIsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2pCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVk7QUFDL0MsS0FBSyxJQUFJLFdBQVcsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNwRixLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ25CLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDdEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCO0FBQ0EsR0FBRyxJQUFJLEtBQUssZUFBZSxDQUFDLEVBQUU7QUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxFQUFFO0FBQ2hDLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDakUsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsSUFBSSxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25ELENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMzQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzdCO0FBQ0E7QUFDQSxDQUFDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3BDO0FBQ0EsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sSUFBSTtBQUMzQixFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3RSxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFDRDtBQUNBLE1BQU0sS0FBSyxTQUFTLGVBQWUsQ0FBQztBQUNwQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNwRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0csRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsc0JBQXNCLENBQUM7QUFDbkMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLHUwQkFBdTBCLENBQUM7QUFDNzFCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLFFBQVEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzdELENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNYLENBQUMsSUFBSSxRQUFRLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUM5RCxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksTUFBTSxDQUFDO0FBQ1osQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDVixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLE1BQU0sQ0FBQztBQUNaLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUM7QUFDcEIsR0FBRyxLQUFLLEVBQUU7QUFDVixJQUFJLFNBQVMsRUFBRSxNQUFNO0FBQ3JCLElBQUksT0FBTyw4QkFBOEIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvQyxJQUFJLE9BQU8sRUFBRSxnQkFBZ0I7QUFDN0IsSUFBSTtBQUNKLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNwQixHQUFHLEtBQUssRUFBRTtBQUNWLElBQUksU0FBUyxFQUFFLE9BQU87QUFDdEIsSUFBSSxPQUFPLDhCQUE4QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQy9DLElBQUksT0FBTyxFQUFFLFlBQVk7QUFDekIsSUFBSTtBQUNKLEdBQUcsQ0FBQyxDQUFDO0FBQ0w7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QixHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZCLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7QUFDaEQsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQy9DLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUM3QyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixDQUFDLENBQUM7QUFDdEQsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBQ25ELEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUM3QyxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsV0FBVyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDaEMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xCLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyQixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCO0FBQ0EsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2pCLElBQUksT0FBTyxHQUFHO0FBQ2QsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxZQUFZO0FBQ3JDLE1BQU0sSUFBSSxXQUFXLHlCQUF5QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzdHLE1BQU0sQ0FBQztBQUNQLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWTtBQUN2QyxNQUFNLElBQUksV0FBVyx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM3RyxNQUFNLENBQUM7QUFDUCxLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztBQUNuQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3RCLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUNqQixHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLHNCQUFzQixDQUFDLEtBQUssUUFBUSxNQUFNLFFBQVEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNwSixHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLHNCQUFzQixDQUFDLEtBQUssUUFBUSxNQUFNLFFBQVEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUNySixHQUFHLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUM3QixHQUFHLElBQUksS0FBSywrQkFBK0IsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxPQUFPLCtCQUErQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9CLEdBQUcsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBQzdCLEdBQUcsSUFBSSxLQUFLLCtCQUErQixDQUFDLEVBQUUsY0FBYyxDQUFDLE9BQU8sK0JBQStCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDL0IsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdDLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QixHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDbkQ7QUFDQSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDbEMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNDLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNDO0FBQ0E7QUFDQSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7QUFDQTtBQUNBLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDcEM7QUFDQSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJO0FBQzNCLEVBQUUsSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzVGLEVBQUUsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRSxFQUFFLElBQUkscUJBQXFCLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDM0csRUFBRSxJQUFJLHlCQUF5QixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ3ZILEVBQUUsSUFBSSx5QkFBeUIsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSx1QkFBdUIsR0FBRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUN2SCxFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsY0FBYztBQUNoQixFQUFFLG1CQUFtQjtBQUNyQixFQUFFLHVCQUF1QjtBQUN6QixFQUFFLHVCQUF1QjtBQUN6QixFQUFFLGVBQWU7QUFDakIsRUFBRSxRQUFRO0FBQ1YsRUFBRSxLQUFLO0FBQ1AsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxHQUFHLFNBQVMsZUFBZSxDQUFDO0FBQ2xDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3BFO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFO0FBQ3JFLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDcEIsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNYLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztBQUN6QixHQUFHLHVCQUF1QixFQUFFLENBQUM7QUFDN0IsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO0FBQzdCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsR0FBRztBQUNyQixDQUFDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcscUJBQXFCLENBQUM7QUFDbEMsQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLGd0QkFBZ3RCLENBQUM7QUFDdHVCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUMxQyxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsbUJBQW1CLENBQUMsR0FBRyxFQUFFO0FBQ2xDLENBQUMsSUFBSSxHQUFHLENBQUM7QUFDVCxDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsQ0FBQyxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDcEI7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN2RCxFQUFFLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNyQztBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLGdCQUFnQixFQUFFO0FBQy9DLEtBQUssaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxpQkFBaUIsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLEtBQUssRUFBRSxDQUFDO0FBQ1I7QUFDQSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDckMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUNWLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUN0QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2IsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksVUFBVSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQyxDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRCxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU07QUFDN0QsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEVBQUUsQ0FBQyxDQUFDO0FBQ0o7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHLEVBQUUsR0FBRyxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztBQUN0RCxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixHQUFHLEVBQUUsSUFBSSxhQUFhLENBQUMsQ0FBQyxTQUFTLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0FBQ3hJLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BHLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDaEMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEI7QUFDQSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7QUFDakIsSUFBSSxPQUFPLEdBQUc7QUFDZCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVk7QUFDdkMsTUFBTSxJQUFJLFdBQVcsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9JLE1BQU0sQ0FBQztBQUNQLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWTtBQUM3QyxNQUFNLElBQUksV0FBVyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZLLE1BQU0sQ0FBQztBQUNQLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWTtBQUM3QyxNQUFNLElBQUksV0FBVyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDN0osTUFBTSxDQUFDO0FBQ1AsS0FBSyxDQUFDO0FBQ047QUFDQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbkIsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQ3BCLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUNqQixHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxlQUFlLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0FBQ0EsR0FBRyxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsRUFBRTtBQUNoQyxJQUFJLFVBQVUsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDMUMsSUFBSSxJQUFJLENBQUMsQ0FBQztBQUNWO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUMvQyxLQUFLLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7QUFDQSxLQUFLLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekMsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sTUFBTTtBQUNaLE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RELE1BQU0sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3pCLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2QyxNQUFNLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DLE1BQU07QUFDTixLQUFLO0FBQ0w7QUFDQSxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDWixLQUFLO0FBQ0w7QUFDQSxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLGdCQUFnQixFQUFFLElBQUksZ0JBQWdCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxJQUFJLGFBQWEsQ0FBQyxDQUFDLFNBQVMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7QUFDdEwsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzFDLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxLQUFLLDhDQUE4QyxFQUFFLEVBQUU7QUFDOUQsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckcsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNwQixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7QUFDaEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQztBQUN0QixDQUFDLElBQUksT0FBTyxDQUFDO0FBQ2I7QUFDQSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUM7QUFDekMsR0FBRyxLQUFLLEVBQUU7QUFDVixJQUFJLFFBQVEsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLElBQUksT0FBTyxFQUFFO0FBQ2IsS0FBSyxPQUFPLEVBQUU7QUFDZCxNQUFNLG1CQUFtQjtBQUN6QixNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUN6QyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDekMsTUFBTTtBQUNOLEtBQUs7QUFDTCxJQUFJLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRTtBQUNwQixJQUFJO0FBQ0osR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xELEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdEMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQixHQUFHLE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLEdBQUcsSUFBSSxLQUFLLGdCQUFnQixFQUFFLEVBQUUsd0JBQXdCLENBQUMsUUFBUSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hGO0FBQ0EsR0FBRyxJQUFJLEtBQUssa0dBQWtHLEtBQUssRUFBRTtBQUNySCxJQUFJLHdCQUF3QixDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN0RCxJQUFJO0FBQ0o7QUFDQSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ25ELEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RCxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkQsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkMsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO0FBQ25EO0FBQ0E7QUFDQSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM1QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDM0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNqQyxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3JDLENBQUMsSUFBSSxXQUFXLENBQUM7QUFDakIsQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkY7QUFDQSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJO0FBQzNCLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksTUFBTSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsRUFBRSxJQUFJLFVBQVUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksU0FBUyxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkUsRUFBRSxJQUFJLGVBQWUsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3pGLEVBQUUsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRixFQUFFLENBQUM7QUFDSDtBQUNBLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsTUFBTTtBQUMxQixFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksQ0FBQyxFQUFFO0FBQ3BDLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdkQsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxPQUFPO0FBQ1QsRUFBRSxJQUFJO0FBQ04sRUFBRSxPQUFPO0FBQ1QsRUFBRSxPQUFPO0FBQ1QsRUFBRSxhQUFhO0FBQ2YsRUFBRSxVQUFVO0FBQ1osRUFBRSxRQUFRO0FBQ1YsRUFBRSxXQUFXO0FBQ2IsRUFBRSxhQUFhO0FBQ2YsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxtQkFBbUI7QUFDckIsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsTUFBTSxPQUFPLFNBQVMsZUFBZSxDQUFDO0FBQ3RDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN0QixFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ1YsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ25FO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFO0FBQ2hFLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLElBQUksRUFBRSxDQUFDO0FBQ1YsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNkLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDYixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUNuQixHQUFHLFVBQVUsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsRUFBRTtBQUNGLENBQUM7QUFDRDtBQUNBLGVBQWUsZUFBZSxDQUFDLGdCQUFnQixFQUFFO0FBQ2pELElBQUksTUFBTSxJQUFJLEdBQUc7QUFDakIsUUFBUSxJQUFJLEVBQUUsRUFBRTtBQUNoQixRQUFRLE9BQU8sRUFBRSxFQUFFO0FBQ25CLFFBQVEsY0FBYyxFQUFFLEVBQUU7QUFDMUIsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN0RCxJQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLE1BQU07QUFDeEMsUUFBUSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzFELFFBQVEsY0FBYyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO0FBQzlFLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqRCxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNkLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUU7QUFDbkQsSUFBSSxPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRTtBQUNwRCxJQUFJLE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsU0FBUyxPQUFPLEdBQUc7QUFDbkIsQ0FBQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLHFCQUFxQixDQUFDO0FBQ2xDLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyw0M0JBQTQzQixDQUFDO0FBQ2w1QixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRDtBQUNBLFNBQVMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDeEMsQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUMxQyxDQUFDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsQ0FBQyxPQUFPLFNBQVMsQ0FBQztBQUNsQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0FBQzFDLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixDQUFDLE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUM7QUFDRDtBQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7QUFDMUMsQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1Q7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtBQUNsQyxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1Q7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUNoQixHQUFHLElBQUksS0FBSyx3QkFBd0IsS0FBSyxFQUFFO0FBQzNDLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsSUFBSTtBQUNKLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtBQUNoQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1I7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLENBQUMsR0FBRztBQUNOLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QixHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdEMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0IsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0EsU0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7QUFDbEMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxPQUFPLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDUDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3RDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFO0FBQ3BCLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUIsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFO0FBQ2hCLEdBQUcsSUFBSSxLQUFLLGtCQUFrQixLQUFLLElBQUksT0FBTyxNQUFNLE9BQU8saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hILEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGVBQWUsQ0FBQyxHQUFHLEVBQUU7QUFDOUIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYjtBQUNBLENBQUMsTUFBTSxxQkFBcUIsR0FBRztBQUMvQixXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDbEIsRUFBRTtBQUNGLEdBQUcsUUFBUSxFQUFFLGlCQUFpQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvRixHQUFHO0FBQ0gsRUFBRSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNyQyxFQUFFO0FBQ0YsR0FBRyxhQUFhLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLEdBQUc7QUFDSCxFQUFFLEVBQUUsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLEVBQUUsRUFBRSxVQUFVLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkMsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzNELEVBQUUsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRSxFQUFFO0FBQ0Y7QUFDQSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUU7QUFDaEIsR0FBRyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQUsseUdBQXlHLEtBQUs7QUFDL0ksS0FBSyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRTtBQUM5QyxLQUFLLEtBQUssYUFBYSxLQUFLLElBQUksaUJBQWlCLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLEtBQUssS0FBSyxnREFBZ0QsS0FBSyxJQUFJO0FBQ25FLE1BQU0sUUFBUSxFQUFFLGlCQUFpQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRyxNQUFNO0FBQ04sS0FBSyxLQUFLLG1CQUFtQixHQUFHLElBQUksRUFBRSxPQUFPLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkUsS0FBSyxLQUFLLHlCQUF5QixFQUFFLElBQUk7QUFDekMsTUFBTSxhQUFhLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pELE1BQU07QUFDTixLQUFLLEtBQUssbUJBQW1CLENBQUMsSUFBSSxFQUFFLE9BQU8sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNyRSxLQUFLLEtBQUssa0JBQWtCLEdBQUcsSUFBSSxFQUFFLFVBQVUsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN4RSxLQUFLLENBQUM7QUFDTixLQUFLLEVBQUUsQ0FBQztBQUNSO0FBQ0EsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ2pDLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLElBQUksT0FBTyxFQUFFLE9BQU87QUFDdkIsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0MsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDWCxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNmLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLEdBQUc7QUFDSCxFQUFFLENBQUM7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLFNBQVMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUN6QyxDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYjtBQUNBLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ2YsR0FBRyxLQUFLLEVBQUU7QUFDVixJQUFJLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3pCLElBQUksS0FBSyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDNUIsSUFBSSxjQUFjLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdDLElBQUksT0FBTyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJLGFBQWEsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsSUFBSSxPQUFPLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksUUFBUSxFQUFFLGdCQUFnQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RGLElBQUksVUFBVSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQyxJQUFJO0FBQ0osR0FBRyxDQUFDLENBQUM7QUFDTDtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsR0FBRyxFQUFFLEtBQUs7QUFDWixFQUFFLEtBQUssRUFBRSxJQUFJO0FBQ2IsRUFBRSxDQUFDLEdBQUc7QUFDTixHQUFHLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNuQixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN0QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtBQUNwQixHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDeEMsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQ3BCLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztBQUNqQixHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMxQixHQUFHLElBQUksS0FBSyxhQUFhLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRSxHQUFHLElBQUksS0FBSyxhQUFhLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyRSxHQUFHLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxjQUFjLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUYsR0FBRyxJQUFJLEtBQUssa0JBQWtCLEVBQUUsRUFBRSxXQUFXLENBQUMsT0FBTyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFLEdBQUcsSUFBSSxLQUFLLHdCQUF3QixFQUFFLEVBQUUsV0FBVyxDQUFDLGFBQWEsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRyxHQUFHLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxPQUFPLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsR0FBRyxJQUFJLEtBQUssNkJBQTZCLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxHQUFHLGdCQUFnQixhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEosR0FBRyxJQUFJLEtBQUssa0JBQWtCLEdBQUcsRUFBRSxXQUFXLENBQUMsVUFBVSxrQkFBa0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDdkMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QixDQUFDLElBQUksYUFBYSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxPQUFPLENBQUM7QUFDYixDQUFDLElBQUksUUFBUSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRSxDQUFDLElBQUksWUFBWSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDMUMsQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pEO0FBQ0EsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2xELEVBQUUsSUFBSSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzRCxFQUFFLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvQixFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvRSxFQUFFO0FBQ0Y7QUFDQSxDQUFDLE9BQU87QUFDUixFQUFFLEdBQUcsRUFBRSxLQUFLO0FBQ1osRUFBRSxLQUFLLEVBQUUsSUFBSTtBQUNiLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLEdBQUcsSUFBSSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlCLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSjtBQUNBLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDbkIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM5QixHQUFHLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9CLElBQUk7QUFDSjtBQUNBLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQixHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEIsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDO0FBQ2pCO0FBQ0EsR0FBRyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2hDLElBQUksSUFBSSxRQUFRLEVBQUU7QUFDbEIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QjtBQUNBLEtBQUssSUFBSSxLQUFLLG9CQUFvQixDQUFDLEVBQUU7QUFDckMsTUFBTSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLE1BQU07QUFDTixLQUFLLE1BQU07QUFDWCxLQUFLLFFBQVEsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckMsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbEIsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDeEIsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLFFBQVEsRUFBRTtBQUN4QixJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTTtBQUN6QyxLQUFLLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDckIsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEtBQUsscUhBQXFILEtBQUssRUFBRTtBQUN4SSxJQUFJLFlBQVksWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3pDLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkIsSUFBSSxXQUFXLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUNoTCxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxJQUFJLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3BELElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQ1gsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ25CLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDZixHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QixHQUFHLElBQUksUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM5QjtBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNuRCxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN2QixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLEdBQUcsRUFBRTtBQUM5QixDQUFDLElBQUksR0FBRyxDQUFDO0FBQ1QsQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUNULENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksS0FBSyxDQUFDO0FBQ1gsQ0FBQyxJQUFJLFFBQVEsQ0FBQztBQUNkLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNYLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDUixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNSLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDWCxDQUFDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QixDQUFDLElBQUksWUFBWSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDOUIsQ0FBQyxJQUFJLE9BQU8sQ0FBQztBQUNiO0FBQ0EsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDZixHQUFHLEtBQUssRUFBRTtBQUNWLElBQUksS0FBSyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDNUIsSUFBSSxjQUFjLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdDLElBQUksdUJBQXVCLDhCQUE4QixHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2hFLElBQUksdUJBQXVCLDhCQUE4QixHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2hFLElBQUksbUJBQW1CLDBCQUEwQixHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3hELElBQUk7QUFDSixHQUFHLENBQUMsQ0FBQztBQUNMO0FBQ0EsQ0FBQyxJQUFJLFNBQVMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hFLENBQUMsSUFBSSxZQUFZLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUM5QyxDQUFDLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtBQUNBLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsRCxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLFNBQVMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hFLENBQUMsSUFBSSxZQUFZLGtCQUFrQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0MsQ0FBQyxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDeEI7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDbEQsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25GLEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSxVQUFVLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsTUFBTSxPQUFPLEdBQUcsR0FBRyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDakQ7QUFDQSxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEQsRUFBRSxJQUFJLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELEVBQUUsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQy9CLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVFLEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTztBQUNSLEVBQUUsQ0FBQyxHQUFHO0FBQ04sR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUNoQixHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUIsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2xDLEdBQUcsSUFBSSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ2hDLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3JELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3pCLElBQUk7QUFDSjtBQUNBLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0FBQ2hCLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QixHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDekIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDaEIsR0FBRyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSjtBQUNBLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztBQUNsRCxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDekMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0FBQ2pELEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxXQUFXLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEQsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDcEIsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25DLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEIsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNCLEdBQUcsSUFBSSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3JELElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JCLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QixHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEI7QUFDQSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDckQsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckIsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsSUFBSTtBQUNKO0FBQ0EsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ2xCLEdBQUc7QUFDSCxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQixHQUFHLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMxQixHQUFHLElBQUksS0FBSyxhQUFhLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyRSxHQUFHLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxjQUFjLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUYsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3pCO0FBQ0EsR0FBRyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ2hDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQyxNQUFNO0FBQzFCLEtBQUssU0FBUyxHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDckMsS0FBSyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbkIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO0FBQ3pCLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSTtBQUNKO0FBQ0EsR0FBRyxJQUFJLEtBQUssd0JBQXdCLEtBQUssRUFBRTtBQUMzQyxJQUFJLFlBQVksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDVjtBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakQsS0FBSyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0EsS0FBSyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMzQixNQUFNLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNDLE1BQU0sTUFBTTtBQUNaLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNCLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekMsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdDLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixLQUFLO0FBQ0w7QUFDQSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztBQUMvQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDaEMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDLE1BQU07QUFDMUIsS0FBSyxTQUFTLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztBQUNyQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7QUFDekIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyxrQkFBa0IsS0FBSyxFQUFFO0FBQ3JDLElBQUksWUFBWSxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDVjtBQUNBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDakQsS0FBSyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0EsS0FBSyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMzQixNQUFNLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNDLE1BQU0sTUFBTTtBQUNaLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzNCLE1BQU0sYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkMsTUFBTTtBQUNOLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdDLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixLQUFLO0FBQ0w7QUFDQSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztBQUMvQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLElBQUksS0FBSyxtTUFBbU0sS0FBSyxFQUFFO0FBQ3ROLElBQUksVUFBVSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuQyxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CLElBQUksV0FBVyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDOUssSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsSUFBSSxPQUFPLEVBQUUsT0FBTztBQUN2QixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QztBQUNBLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNsRCxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJO0FBQ0o7QUFDQSxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDbEIsR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRTtBQUNYLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DLElBQUk7QUFDSjtBQUNBLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0gsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFO0FBQ2YsR0FBRyxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNoQyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUMsR0FBRyxJQUFJLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEMsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0gsQ0FBQztBQUNEO0FBQ0EsU0FBUyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDakQ7QUFDQTtBQUNBLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM5QixDQUFDLElBQUksRUFBRSxZQUFZLEdBQUcsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ3hDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM5QixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDL0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDcEMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDckMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzlCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMvQixDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQ2hDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUM5QixDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0FBQzNDLENBQUMsSUFBSSxFQUFFLGNBQWMsR0FBRyxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDMUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztBQUNYLENBQUMsSUFBSSxVQUFVLENBQUM7QUFDaEI7QUFDQTtBQUNBLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDcEM7QUFDQSxDQUFDLFNBQVMsdUJBQXVCLEdBQUc7QUFDcEMsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGNBQWMsR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzNFLEVBQUU7QUFDRjtBQUNBLENBQUMsU0FBUyx1QkFBdUIsR0FBRztBQUNwQyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsY0FBYyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDaEYsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxTQUFTLG1CQUFtQixHQUFHO0FBQ2hDLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDbEQsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE9BQU8sSUFBSTtBQUMzQixFQUFFLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDakYsRUFBRSxJQUFJLGNBQWMsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3RGLEVBQUUsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRixFQUFFLElBQUksYUFBYSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkYsRUFBRSxJQUFJLGtCQUFrQixJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2xHLEVBQUUsSUFBSSxtQkFBbUIsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyRyxFQUFFLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEYsRUFBRSxJQUFJLGFBQWEsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25GLEVBQUUsSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RSxFQUFFLElBQUksWUFBWSxJQUFJLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEYsRUFBRSxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLEVBQUUsSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzVGLEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxNQUFNO0FBQzFCLEVBQUUsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssa0NBQWtDLE1BQU0sRUFBRTtBQUMvRCxHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNsRSxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLHlCQUF5QixNQUFNLEVBQUU7QUFDdEQsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDbkUsR0FBRztBQUNILEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxPQUFPO0FBQ1IsRUFBRSxjQUFjO0FBQ2hCLEVBQUUsWUFBWTtBQUNkLEVBQUUsVUFBVTtBQUNaLEVBQUUsV0FBVztBQUNiLEVBQUUsZ0JBQWdCO0FBQ2xCLEVBQUUsaUJBQWlCO0FBQ25CLEVBQUUsVUFBVTtBQUNaLEVBQUUsV0FBVztBQUNiLEVBQUUsT0FBTztBQUNULEVBQUUsVUFBVTtBQUNaLEVBQUUsS0FBSztBQUNQLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsdUJBQXVCO0FBQ3pCLEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsS0FBSztBQUNQLEVBQUUsVUFBVTtBQUNaLEVBQUUsUUFBUTtBQUNWLEVBQUUsVUFBVTtBQUNaLEVBQUUsQ0FBQztBQUNILENBQUM7QUFDRDtBQUNBLE1BQU0sUUFBUSxTQUFTLGVBQWUsQ0FBQztBQUN2QyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7QUFDdEIsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNWLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNqRTtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUU7QUFDNUQsR0FBRyxVQUFVLEVBQUUsRUFBRTtBQUNqQixHQUFHLFlBQVksRUFBRSxDQUFDO0FBQ2xCLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDaEIsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUNqQixHQUFHLGdCQUFnQixFQUFFLENBQUM7QUFDdEIsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0FBQ3ZCLEdBQUcsVUFBVSxFQUFFLENBQUM7QUFDaEIsR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUNqQixHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQ2IsR0FBRyxVQUFVLEVBQUUsQ0FBQztBQUNoQixHQUFHLEtBQUssRUFBRSxFQUFFO0FBQ1osR0FBRyxjQUFjLEVBQUUsQ0FBQztBQUNwQixHQUFHLHVCQUF1QixFQUFFLEVBQUU7QUFDOUIsR0FBRyx1QkFBdUIsRUFBRSxFQUFFO0FBQzlCLEdBQUcsbUJBQW1CLEVBQUUsRUFBRTtBQUMxQixHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUU7QUFDRjtBQUNBLENBQUMsSUFBSSx1QkFBdUIsR0FBRztBQUMvQixFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekIsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLHVCQUF1QixHQUFHO0FBQy9CLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QixFQUFFO0FBQ0Y7QUFDQSxDQUFDLElBQUksbUJBQW1CLEdBQUc7QUFDM0IsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLEVBQUU7QUFDRjs7QUMzbEZBO0FBQ00sTUFBZ0IsMkJBQTRCLFNBQVFzRSw0QkFBbUIsQ0FBQTtBQUk5RCxJQUFBLFNBQUEsQ0FBQTtBQUNBLElBQUEsS0FBQSxDQUFBO0FBQ0EsSUFBQSxHQUFBLENBQUE7QUFDQSxJQUFBLFFBQUEsQ0FBQTtBQU5ILElBQUEsVUFBVSxDQUFTO0FBRTNCLElBQUEsV0FBQSxDQUNXLFNBQXNCLEVBQ3RCLEtBQWdCLEVBQ2hCLEdBQVEsRUFDUixRQUEwQixFQUFBO1FBRWpDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUxWLElBQVMsQ0FBQSxTQUFBLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLElBQUssQ0FBQSxLQUFBLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFLO1FBQ1IsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQWtCO0FBR2pDLFFBQUEsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7S0FDdkI7SUFJRCxNQUFNLEdBQUE7UUFDRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDOztBQUV0QyxRQUFBLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDOztBQUV2RixRQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7S0FDbkU7SUFFRCxZQUFZLEdBQUcsTUFBSzs7O1FBR2hCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFO1lBQ3BHLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2pCLFNBQUE7QUFDTCxLQUFDLENBQUM7QUFDTDs7QUNuQkssTUFBTyx3QkFBeUIsU0FBUSwyQkFBMkIsQ0FBQTtBQUcxRCxJQUFBLEtBQUEsQ0FBQTtBQUNBLElBQUEsU0FBQSxDQUFBO0FBQ0EsSUFBQSxLQUFBLENBQUE7QUFDQSxJQUFBLE1BQUEsQ0FBQTtBQUNBLElBQUEsUUFBQSxDQUFBO0FBQ0EsSUFBQSxHQUFBLENBQUE7QUFQSCxJQUFBLFFBQVEsQ0FBVztJQUMzQixXQUNXLENBQUEsS0FBWSxFQUNaLFNBQXNCLEVBQ3RCLEtBQWdCLEVBQ2hCLE1BQWMsRUFDZCxRQUEwQixFQUMxQixHQUFRLEVBQUE7UUFFZixLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFQaEMsSUFBSyxDQUFBLEtBQUEsR0FBTCxLQUFLLENBQU87UUFDWixJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBYTtRQUN0QixJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBVztRQUNoQixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUNkLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixJQUFHLENBQUEsR0FBQSxHQUFILEdBQUcsQ0FBSztLQUdsQjtBQUVELElBQUEsTUFBTSxNQUFNLEdBQUE7QUFDUixRQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLFdBQVcsR0FBRyxNQUFNLG1CQUFtQixDQUFDLE1BQ3hDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3RFLENBQUM7QUFDRixRQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFO1lBQ3pCLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakUsT0FBTztBQUNWLFNBQUE7QUFBTSxhQUFBLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFO0FBQzlFLFlBQUEsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUscUNBQXFDLENBQUMsQ0FBQztZQUN0RSxPQUFPO0FBQ1YsU0FBQTtBQUNELFFBQUEsSUFBSSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7UUFDaEQsS0FBSyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtBQUNyQyxZQUFBLE1BQU0sR0FBRyxHQUFHO0FBQ1IsZ0JBQUEsS0FBSyxFQUFFLFNBQVM7QUFDaEIsZ0JBQUEsU0FBUyxFQUFFLE1BQU07QUFDakIsZ0JBQUEsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2xCLENBQUM7WUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6QyxZQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDekIsYUFBQTtBQUFNLGlCQUFBO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLGFBQUE7QUFDSixTQUFBO0FBRUQsUUFBQSxNQUFNLFdBQVcsR0FBb0I7QUFDakMsWUFBQSxnQkFBZ0IsRUFBRSxPQUFPLElBQVksS0FBMkI7Z0JBQzVELE9BQU87QUFDSCxvQkFBQSxJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRTtpQkFDbkQsQ0FBQzthQUNMO1NBQ0osQ0FBQztBQUVGLFFBQUEsTUFBTSxPQUFPLEdBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLFFBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQzs7WUFFekIsTUFBTSxFQUFHLElBQVksQ0FBQyxTQUFTO0FBQy9CLFlBQUEsS0FBSyxFQUFFO2dCQUNILFVBQVUsQ0FBQyxJQUFZLEVBQUUsUUFBcUIsRUFBQTtBQUMxQyxvQkFBQSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDM0IsT0FBTztBQUNWLHFCQUFBO0FBQ0Qsb0JBQUEsSUFBSSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDbkIsT0FBTztBQUNWLHFCQUFBO0FBRUQsb0JBQUEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3BHO0FBQ0QsZ0JBQUEsVUFBVSxFQUFFLE9BQU0sSUFBSSxLQUFHO0FBQ3JCLG9CQUFBLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUMzQixPQUFPO0FBQ1YscUJBQUE7QUFDRCxvQkFBQSxJQUFJLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUNuQixPQUFPO0FBQ1YscUJBQUE7b0JBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3BGLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTt3QkFDZCxPQUFPO0FBQ1YscUJBQUE7b0JBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDdEQsb0JBQUEsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUMvQztBQUNELGdCQUFBLFlBQVksRUFBRSxLQUFLO2dCQUNuQixPQUFPO0FBQ1YsYUFBQTtBQUNKLFNBQUEsQ0FBQyxDQUFDO0tBQ047SUFFRCxPQUFPLEdBQUE7UUFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDZixZQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUIsU0FBQTtBQUNELFFBQUEsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDNUI7QUFDSjs7QUMvR0Q7QUFrQkE7TUFDYSxtQkFBbUIsQ0FBQTtBQUNGLElBQUEsR0FBQSxDQUFBO0FBQTJCLElBQUEsV0FBQSxDQUFBO0lBQXJELFdBQTBCLENBQUEsR0FBa0IsRUFBUyxXQUFtQixFQUFBO1FBQTlDLElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFlO1FBQVMsSUFBVyxDQUFBLFdBQUEsR0FBWCxXQUFXLENBQVE7S0FBSTs7QUFHckUsSUFBQSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsVUFBbUIsRUFBQTtBQUM5QyxRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDN0Q7O0FBR00sSUFBQSxNQUFNLElBQUksQ0FBQyxJQUFtQixFQUFFLFVBQW1CLEVBQUE7QUFDdEQsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQzlEOztJQUdNLFNBQVMsQ0FBQyxJQUFtQixFQUFFLFVBQW1CLEVBQUE7QUFDckQsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQ25FO0FBQ0osQ0FBQTtNQUVZLGlCQUFpQixDQUFBO0FBQzFCOzs7QUFHRztBQUNJLElBQUEsS0FBSyxDQUFZOztBQUdqQixJQUFBLFNBQVMsQ0FBWTs7QUFHckIsSUFBQSxlQUFlLENBQVM7QUFFL0I7OztBQUdHO0FBQ0ksSUFBQSxTQUFTLENBQWM7O0FBR3ZCLElBQUEsR0FBRyxDQUFNOztBQUdULElBQUEsR0FBRyxDQUFjOztBQUdqQixJQUFBLFFBQVEsQ0FBbUI7O0FBRzNCLElBQUEsaUJBQWlCLENBQVU7O0lBRzNCLEtBQUssR0FBRyxNQUFNLENBQUM7O0lBR2YsTUFBTSxHQUFHLE9BQU8sQ0FBQzs7QUFHakIsSUFBQSxFQUFFLENBQXNCOztJQUd4QixLQUFLLEdBQUcsS0FBSyxDQUFDOztBQUdkLElBQUEsSUFBSSxDQUFvQztBQUUvQyxJQUFBLFdBQUEsQ0FBWSxHQUFnQixFQUFFLFNBQW9CLEVBQUUsU0FBc0IsRUFBRSxlQUF1QixFQUFBO0FBQy9GLFFBQUEsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLFFBQUEsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBQ25CLFFBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBRTdCLFFBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDM0IsUUFBQSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixRQUFBLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0FBRXZDLFFBQUEsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixRQUFBLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7O1FBR3JFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksT0FBTyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDdEcsWUFBQSxJQUFJLEVBQUUsUUFBUTtBQUNqQixTQUFBLENBQUMsQ0FBQztBQUVILFFBQUEsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBQzVFOzs7OztBQU9NLElBQUEsU0FBUyxDQUFDLEtBQWMsRUFBQTtBQUMzQixRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUMxRDs7QUFHTSxJQUFBLElBQUksQ0FBQyxJQUFtQixFQUFBO0FBQzNCLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3BEOztBQUdNLElBQUEsS0FBSyxDQUFDLEtBQWMsRUFBQTtBQUN2QixRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN0RDs7SUFHTSxPQUFPLEdBQUE7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQzFDOzs7OztBQU9NLElBQUEsTUFBTSxLQUFLLENBQ2QsTUFBYyxFQUNkLFVBQW1CLEVBQ25CLFFBQTJCLEVBQUE7QUFFM0IsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUMvRTs7QUFHTSxJQUFBLE1BQU0sUUFBUSxDQUFDLE1BQWMsRUFBRSxVQUFtQixFQUFFLFFBQTJCLEVBQUE7QUFDbEYsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUNsRjs7QUFHTSxJQUFBLE1BQU0sYUFBYSxDQUN0QixNQUFjLEVBQ2QsVUFBbUIsRUFDbkIsUUFBMkIsRUFBQTtBQUUzQixRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ3ZGOztBQUdNLElBQUEsTUFBTSxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsVUFBbUIsRUFBRSxRQUEyQixFQUFBO0FBQzFGLFFBQUEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUMxRjtBQUVEOzs7Ozs7Ozs7Ozs7OztBQWNHO0lBQ0ksUUFBUSxDQUFDLFVBQWtCLEVBQUUsT0FBb0IsRUFBQTtRQUNwRCxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsK0JBQStCLFVBQVUsQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFDO0FBRXZGLFFBQUEsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDaEU7O0lBR00sV0FBVyxDQUFDLFVBQWtCLEVBQUUsT0FBb0IsRUFBQTtRQUN2RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQzNEOztJQUdNLE1BQU0sT0FBTyxDQUFDLE1BQWMsRUFBQTtBQUMvQixRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ2xGOztJQUdNLE1BQU0sU0FBUyxDQUFDLElBQVksRUFBQTtBQUMvQixRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ2xGOzs7O0FBTUQ7OztBQUdHO0FBQ0ksSUFBQSxLQUFLLENBQUMsR0FBUSxFQUFBO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDOUI7O0FBR00sSUFBQSxPQUFPLENBQUMsR0FBUSxFQUFBO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDaEM7O0FBR00sSUFBQSxXQUFXLENBQUMsR0FBWSxFQUFBO0FBQzNCLFFBQUEsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ3JDOztBQUdNLElBQUEsUUFBUSxDQUFDLElBQVksRUFBRSxLQUFpQixHQUFBLEtBQUssRUFBRSxPQUFnQixFQUFBO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzFDOztJQUdNLFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLEtBQWlCLEdBQUEsS0FBSyxFQUFFLE9BQWdCLEVBQUE7QUFDdEYsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDckQ7O0lBR00sU0FBUyxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsS0FBaUIsR0FBQSxLQUFLLEVBQUUsT0FBZ0IsRUFBQTtBQUNwRixRQUFBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwRDs7QUFHTSxJQUFBLElBQUksQ0FBQyxRQUFrQyxFQUFBO1FBQzFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDbEM7O0FBR00sSUFBQSxRQUFRLENBQUMsR0FBc0IsRUFBQTtRQUNsQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDOztBQUdNLElBQUEsS0FBSyxDQUFDLEtBQWEsRUFBQTtRQUN0QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2hDOztBQUdNLElBQUEsT0FBTyxDQUFDLEtBQVUsRUFBQTtRQUNyQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2xDOztBQUdNLElBQUEsS0FBSyxDQUFDLEtBQWMsRUFBQTtBQUN2QixRQUFBLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNqQztBQUVEOzs7QUFHRztJQUNJLE9BQU8sQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFBO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDcEM7O0lBR00sS0FBSyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUE7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7Ozs7O0FBT00sSUFBQSxFQUFFLENBQ0wsRUFBSyxFQUNMLElBQVMsRUFDVCxFQUFFLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxLQUFtRCxFQUFFLEVBQUE7UUFFN0YsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVyQyxRQUFBLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQzNDLFlBQUEsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuRSxTQUFBO1FBRUQsSUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckcsUUFBQSxPQUFPLEdBQUcsQ0FBQztLQUNkOztBQUdNLElBQUEsTUFBTSxDQUFDLEtBQWEsRUFBRSxJQUFTLEVBQUUsT0FBd0IsRUFBQTtBQUM1RCxRQUFBLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RSxRQUFBLElBQUksQ0FBQyxNQUFNO0FBQUUsWUFBQSxNQUFNLEtBQUssQ0FBQyxDQUFBLG9CQUFBLEVBQXVCLEtBQUssQ0FBQSxnQ0FBQSxDQUFrQyxDQUFDLENBQUM7UUFFekYsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQXFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBdUIsQ0FBQztLQUM5Rjs7SUFHTSxTQUFTLENBQUMsSUFBUyxFQUFFLE9BQXdCLEVBQUE7UUFDaEQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDdEM7O0lBR00sSUFBSSxDQUFDLElBQVMsRUFBRSxPQUF3QixFQUFBO1FBQzNDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3pDO0FBRUQ7OztBQUdHO0FBQ0ksSUFBQSxNQUFNLElBQUksQ0FBQyxRQUFnQixFQUFFLEtBQVUsRUFBQTs7QUFFMUMsUUFBQSxNQUFNLGNBQWMsR0FBRyxDQUFHLEVBQUEsUUFBUSxLQUFLLENBQUM7QUFDeEMsUUFBQSxNQUFNLGVBQWUsR0FBRyxDQUFHLEVBQUEsUUFBUSxVQUFVLENBQUM7UUFDOUMsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksVUFBVSxHQUFHLFNBQVMsQ0FBQztBQUMzQixRQUFBLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNYLFlBQUEsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDOUYsV0FBVyxHQUFHLElBQUksQ0FBQztBQUN0QixTQUFBO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNYLGNBQWMsQ0FDVixJQUFJLENBQUMsU0FBUyxFQUNkLENBQXdDLHFDQUFBLEVBQUEsY0FBYyxDQUFTLE1BQUEsRUFBQSxlQUFlLENBQUksRUFBQSxDQUFBLENBQ3JGLENBQUM7WUFDRixPQUFPO0FBQ1YsU0FBQTtBQUVELFFBQUEsSUFBSSxXQUFXLEVBQUU7O0FBRWIsWUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBLEVBQUcsUUFBUSxDQUFXLFNBQUEsQ0FBQSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN4RyxZQUFBLElBQUksT0FBTyxFQUFFO0FBQ1QsZ0JBQUEsSUFBSSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JELFdBQVcsSUFBSSxDQUFtQixnQkFBQSxFQUFBLFFBQVEsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQSxHQUFBLENBQUssQ0FBQztnQkFDdkUsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5RixhQUFBO0FBQ0osU0FBQTtBQUVELFFBQUEsSUFBSSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkQsUUFBQSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0FBQUUsWUFBQSxRQUFRLEdBQUcsaUJBQWlCLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUNsRixRQUFBLFFBQVEsSUFBSSxDQUFtQixnQkFBQSxFQUFBLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQyxJQUFJLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRWpELElBQUk7O0FBRUEsWUFBQSxJQUFJLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RELFlBQUEsSUFBSSxNQUFNO2dCQUNOLE1BQU0sV0FBVyxDQUNiLElBQUksQ0FBQyxHQUFHLEVBQ1IsTUFBYSxFQUNiLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FDUCxDQUFDO0FBQ1QsU0FBQTtBQUFDLFFBQUEsT0FBTyxFQUFFLEVBQUU7QUFDVCxZQUFBLElBQUksVUFBVTtBQUFFLGdCQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3ZELFlBQUEsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQSxrQ0FBQSxFQUFxQyxRQUFRLENBQUMsSUFBSSxDQUFBLE1BQUEsRUFBUyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbkcsU0FBQTtLQUNKOztBQUdNLElBQUEsSUFBSSxDQUFDLE1BQStCLEVBQUE7UUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN0Rjs7SUFHTSxLQUFLLENBQUMsT0FBaUIsRUFBRSxNQUFpQyxFQUFBO1FBQzdELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ2hHOztBQUdNLElBQUEsUUFBUSxDQUFDLEtBQTBCLEVBQUUsV0FBQSxHQUF1QixJQUFJLEVBQUE7UUFDbkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7S0FDdEc7Ozs7O0FBT00sSUFBQSxhQUFhLENBQ2hCLE9BQWlCLEVBQ2pCLE1BQWlDLEVBQ2pDLFFBQWtDLEVBQUE7QUFFbEMsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDNUQ7O0lBR00sWUFBWSxDQUFDLE1BQTJDLEVBQUUsUUFBa0MsRUFBQTtRQUMvRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztLQUNsRDs7SUFHTSxnQkFBZ0IsQ0FBQyxNQUEyQixFQUFFLFFBQWtDLEVBQUE7UUFDbkYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN0RDtBQUNKLENBQUE7QUFFRDs7QUFFRztBQUNhLFNBQUEsYUFBYSxDQUFDLE1BQWMsRUFBRSxPQUFZLEVBQUE7SUFDdEQsT0FBTyxZQUFBO0FBQ0gsUUFBQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QixLQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7QUFFRztBQUNJLGVBQWUsa0JBQWtCLENBQUMsTUFBYyxFQUFFLE9BQVksRUFBQTtBQUNqRSxJQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUMxQixPQUFPLGFBQWEsQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBaUIsQ0FBQztBQUN2RixLQUFBO0FBQU0sU0FBQTtRQUNILE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDMUQsS0FBQTtBQUNMOztBQ3RhTSxNQUFPLGtCQUFtQixTQUFRLDJCQUEyQixDQUFBO0FBRzVDLElBQUEsR0FBQSxDQUFBO0FBQXlCLElBQUEsTUFBQSxDQUFBO0FBQXVCLElBQUEsU0FBQSxDQUFBO0FBQStCLElBQUEsTUFBQSxDQUFBO0FBRmxHLElBQUEsT0FBTyxRQUFRLEdBQVcsd0NBQXdDLENBQUM7QUFFbkUsSUFBQSxXQUFBLENBQW1CLEdBQWdCLEVBQVMsTUFBYyxFQUFTLFNBQXNCLEVBQVMsTUFBYyxFQUFBO0FBQzVHLFFBQUEsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRHBDLElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFhO1FBQVMsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7UUFBUyxJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBYTtRQUFTLElBQU0sQ0FBQSxNQUFBLEdBQU4sTUFBTSxDQUFRO0tBRS9HO0FBRUQsSUFBQSxNQUFNLE1BQU0sR0FBQTtBQUNSLFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQzlCLFFBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7QUFDakMsWUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDaEMsWUFBQSxjQUFjLENBQ1YsSUFBSSxDQUFDLFNBQVMsRUFDZCxpRkFBaUYsQ0FDcEYsQ0FBQztZQUNGLE9BQU87QUFDVixTQUFBOztRQUdELElBQUk7QUFDQSxZQUFBLE1BQU0sa0JBQWtCLENBQ3BCLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUN6QyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUNyRSxDQUFDO0FBQ0wsU0FBQTtBQUFDLFFBQUEsT0FBTyxDQUFDLEVBQUU7QUFDUixZQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNoQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEUsU0FBQTtLQUNKOztBQUdMO0FBQ00sTUFBTyx3QkFBeUIsU0FBUSwyQkFBMkIsQ0FBQTtBQU8xRCxJQUFBLEdBQUEsQ0FBQTtBQUNBLElBQUEsTUFBQSxDQUFBO0FBQ0EsSUFBQSxTQUFBLENBQUE7QUFDQSxJQUFBLE1BQUEsQ0FBQTtBQUNBLElBQUEsTUFBQSxDQUFBO0FBVlgsSUFBQSxPQUFPLFFBQVEsR0FBVyxzQ0FBc0MsQ0FBQzs7QUFHakUsSUFBQSxRQUFRLENBQWU7SUFFdkIsV0FDVyxDQUFBLEdBQWdCLEVBQ2hCLE1BQWMsRUFDZCxTQUFzQixFQUN0QixNQUFtQixFQUNuQixNQUFjLEVBQUE7QUFFckIsUUFBQSxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFONUMsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQWE7UUFDaEIsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7UUFDZCxJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBYTtRQUN0QixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtLQUd4QjtBQUVELElBQUEsTUFBTSxNQUFNLEdBQUE7QUFDUixRQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDeEIsUUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUU7WUFDMUUsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxZQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0NBQWdDLENBQUM7QUFDbEQsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixZQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLE9BQU87QUFDVixTQUFBOztRQUdELElBQUk7WUFDQSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLFlBQUEsSUFBSSxNQUFNLEdBQUcsTUFBTSxrQkFBa0IsQ0FDakMsd0JBQXdCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQy9DLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDM0QsQ0FBQztBQUNGLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsWUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLE1BQU0sS0FBSyxTQUFTO2dCQUFFLE9BQU87WUFFakMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRixTQUFBO0FBQUMsUUFBQSxPQUFPLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsWUFBQSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxpQ0FBaUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRixTQUFBO0tBQ0o7OztBQzFFTDtBQUNBO0FBQ0E7QUFFQTtTQUNnQixhQUFhLENBQ3pCLE9BQWlCLEVBQ2pCLE1BQW1CLEVBQ25CLFFBQXlDLEVBQUE7QUFFekMsSUFBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07QUFDdkQsUUFBQSxNQUFNLElBQUksS0FBSyxDQUNYLENBQTBCLHVCQUFBLEVBQUEsT0FBTyxDQUFDLE1BQU0sQ0FBQSxvQ0FBQSxFQUF1QyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBLENBQUEsQ0FBRyxDQUNyRyxDQUFDO0FBRU4sSUFBQSxRQUFRLEdBQUcsUUFBUSxJQUFJLGdCQUFnQixDQUFDO0lBRXhDLE1BQU0sT0FBTyxHQUFlLEVBQUUsQ0FBQztBQUMvQixJQUFBLE1BQU0sVUFBVSxHQUFhLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7O0FBRzdFLElBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDMUMsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzdCLFFBQUEsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDL0MsWUFBQSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFMUUsWUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25CLFlBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RCxTQUFBO0FBQ0QsUUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLEtBQUE7OztBQUlELElBQUEsSUFBSSxLQUFLLEdBQUcsQ0FBSyxFQUFBLEVBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzs7SUFFdkcsS0FBSyxJQUFJLENBQUssRUFBQSxFQUFBLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLElBQUEsQ0FBTSxDQUFDOztBQUUxRSxJQUFBLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQzFDLFFBQUEsS0FBSyxJQUFJLENBQUEsRUFBQSxFQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDL0YsS0FBQTtBQUVELElBQUEsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVEO0FBQ0EsU0FBUyxZQUFZLENBQUMsS0FBYyxFQUFFLFNBQXFCLEdBQUEsSUFBSSxFQUFFLFFBQXdCLEVBQUE7SUFDckYsT0FBTyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQ7QUFDQSxTQUFTLGVBQWUsQ0FBQyxLQUFjLEVBQUUsU0FBcUIsR0FBQSxJQUFJLEVBQUUsUUFBd0IsRUFBQTtBQUN4RixJQUFBLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUV4RCxJQUFBLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN2QixRQUFBLE9BQU8sQ0FBTyxJQUFBLEVBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQSxLQUFBLENBQU8sQ0FBQztBQUN6RyxLQUFBO0FBQU0sU0FBQSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDL0IsUUFBQSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUM5QixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSTtBQUNaLFlBQUEsT0FBTyxVQUFVLFlBQVksQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLFlBQVksQ0FDdEUsQ0FBQyxFQUNELFNBQVMsRUFDVCxRQUFRLENBQ1gsT0FBTyxDQUFDO0FBQ2IsU0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWQsT0FBTyxDQUFBLElBQUEsRUFBTyxLQUFLLENBQUEsS0FBQSxDQUFPLENBQUM7QUFDOUIsS0FBQTtBQUFNLFNBQUE7UUFDSCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzNDLEtBQUE7QUFDTCxDQUFDO0FBRUQ7QUFDQSxTQUFTLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLE1BQWMsRUFBQTtBQUMzRCxJQUFBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNO0FBQUUsUUFBQSxPQUFPLElBQUksQ0FBQztBQUN2QyxJQUFBLE9BQU8sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7QUFDQSxTQUFTLFdBQVcsQ0FBQyxJQUFZLEVBQUE7SUFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7QUFDQTtBQUNBO0FBRUE7QUFDZ0IsU0FBQSxZQUFZLENBQUMsTUFBaUIsRUFBRSxRQUF5QyxFQUFBO0lBQ3JGLE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVEO0FBQ0EsU0FBUyxlQUFlLENBQUMsS0FBYyxFQUFFLFFBQXlDLEVBQUUsUUFBZ0IsQ0FBQyxFQUFBO0FBQ2pHLElBQUEsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLFFBQUEsSUFBSSxNQUFNLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLFFBQUEsS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUU7WUFDckIsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLE1BQU0sSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxNQUFNLElBQUksSUFBSSxDQUFDO0FBQ2xCLFNBQUE7QUFFRCxRQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2pCLEtBQUE7QUFBTSxTQUFBLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMvQixRQUFBLElBQUksTUFBTSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUNwQyxRQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN0QyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdEMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDbEIsU0FBQTtBQUVELFFBQUEsT0FBTyxNQUFNLENBQUM7QUFDakIsS0FBQTtBQUFNLFNBQUEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDNUQsT0FBTyxDQUFBLEVBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUssRUFBQSxFQUFBLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBRSxDQUFDO0FBQ2hHLEtBQUE7QUFFRCxJQUFBLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7QUFDQTtBQUNBO0FBRUE7QUFDTSxTQUFVLGdCQUFnQixDQUM1QixLQUEwQixFQUMxQixRQUF5QyxFQUN6QyxRQUFnQixDQUFDLEVBQUE7QUFFakIsSUFBQSxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDN0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLFFBQUEsS0FBSyxJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDOUUsWUFBQSxNQUFNLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLFNBQUE7QUFDRCxRQUFBLE9BQU8sTUFBTSxDQUFDO0FBQ2pCLEtBQUE7QUFBTSxTQUFBOztRQUVILE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixRQUFBLEtBQUssSUFBSSxPQUFPLElBQUksVUFBVSxFQUFFO1lBQzVCLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztZQUV0QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLENBQUksQ0FBQSxFQUFBLE9BQU8sQ0FBQyxNQUFNLENBQUssRUFBQSxFQUFBLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsRUFBQSxDQUFJLENBQUM7QUFDL0YsYUFBQTtBQUFNLGlCQUFBO2dCQUNILE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsRUFBQSxDQUFJLENBQUM7QUFDM0UsYUFBQTtBQUVELFlBQUEsTUFBTSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyRSxTQUFBO0FBRUQsUUFBQSxPQUFPLE1BQU0sQ0FBQztBQUNqQixLQUFBO0FBQ0w7O0FDbEtBO0FBc0NBO01BQ2EsYUFBYSxDQUFBO0FBQ0ksSUFBQSxHQUFBLENBQUE7QUFBMUIsSUFBQSxXQUFBLENBQTBCLEdBQWdCLEVBQUE7UUFBaEIsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQWE7S0FBSTs7QUFHdkMsSUFBQSxNQUFNLEdBQUcsQ0FBQyxJQUFtQixFQUFFLFVBQW1CLEVBQUE7QUFDckQsUUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEQsWUFBQSxNQUFNLEtBQUssQ0FBQyxDQUFBLGdFQUFBLEVBQW1FLE9BQU8sSUFBSSxDQUFBLEVBQUEsQ0FBSSxDQUFDLENBQUM7QUFDbkcsU0FBQTtRQUVELElBQUksSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksSUFBSSxDQUFDLFVBQVU7QUFBRSxZQUFBLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7O1lBQ3JFLE1BQU0sS0FBSyxDQUFDLENBQUEsNkJBQUEsRUFBZ0MsSUFBSSxDQUFBLHVCQUFBLEVBQTBCLFVBQVUsSUFBSSxHQUFHLENBQUksRUFBQSxDQUFBLENBQUMsQ0FBQztLQUN6Rzs7QUFHTSxJQUFBLE1BQU0sSUFBSSxDQUFDLElBQW1CLEVBQUUsVUFBbUIsRUFBQTtBQUN0RCxRQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRCxZQUFBLE1BQU0sS0FBSyxDQUFDLENBQUEsaUVBQUEsRUFBb0UsT0FBTyxJQUFJLENBQUEsRUFBQSxDQUFJLENBQUMsQ0FBQztBQUNwRyxTQUFBO1FBRUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLFlBQVksWUFBWW5ELGNBQUssQ0FBQztBQUFFLFlBQUEsT0FBTyxTQUFTLENBQUM7QUFFeEUsUUFBQSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDeEQ7O0lBR00sU0FBUyxDQUFDLElBQW1CLEVBQUUsVUFBbUIsRUFBQTtBQUNyRCxRQUFBLElBQUksUUFBUSxDQUFDO0FBQ2IsUUFBQSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQUUsWUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzs7WUFDekMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUVyQixRQUFBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSixDQUFBO0FBRUQ7TUFDYSxXQUFXLENBQUE7QUFlVCxJQUFBLEdBQUEsQ0FBQTtBQUNBLElBQUEsS0FBQSxDQUFBO0FBQ0EsSUFBQSxRQUFBLENBQUE7QUFDQyxJQUFBLE1BQUEsQ0FBQTs7QUFoQkwsSUFBQSxpQkFBaUIsQ0FBVTs7QUFFM0IsSUFBQSxFQUFFLENBQWdCOztBQUVsQixJQUFBLElBQUksQ0FBb0M7O0lBRXhDLEtBQUssR0FBRyxNQUFNLENBQUM7O0lBRWYsTUFBTSxHQUFHLE9BQU8sQ0FBQzs7SUFFakIsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUVyQixJQUFBLFdBQUEsQ0FDVyxHQUFRLEVBQ1IsS0FBZ0IsRUFDaEIsUUFBMEIsRUFDekIsTUFBYyxFQUFBO1FBSGYsSUFBRyxDQUFBLEdBQUEsR0FBSCxHQUFHLENBQUs7UUFDUixJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBVztRQUNoQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBa0I7UUFDekIsSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQVE7QUFFdEIsUUFBQSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzlFLFFBQUEsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckM7O0lBR00sT0FBTyxHQUlWLENBQUMsTUFBSztRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPO0FBQ0gsWUFBQSxJQUFJLE9BQU8sR0FBQTtnQkFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDdEI7QUFDRCxZQUFBLE9BQU8sRUFBRSxDQUFDLEVBQW1CLEVBQUUsR0FBVyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDNUUsWUFBQSxTQUFTLEVBQUUsQ0FBQyxLQUFhLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1NBQzlELENBQUM7S0FDTCxHQUFHLENBQUM7Ozs7O0lBT0UsU0FBUyxDQUFDLEtBQWMsRUFBRSxVQUFtQixFQUFBO0FBQ2hELFFBQUEsSUFBSSxNQUFNLENBQUM7UUFDWCxJQUFJO1lBQ0EsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUFFLGdCQUFBLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDOztnQkFDMUQsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELFNBQUE7QUFBQyxRQUFBLE9BQU8sRUFBRSxFQUFFO0FBQ1QsWUFBQSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxFQUFFLENBQUEsQ0FBRSxDQUFDLENBQUM7QUFDbEUsU0FBQTtRQUVELE9BQU8sbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDO0FBQ3JELGFBQUEsR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDMUMsYUFBQSxXQUFXLEVBQUUsQ0FBQztLQUN0Qjs7SUFHTSxJQUFJLENBQUMsSUFBbUIsRUFBRSxVQUFtQixFQUFBO0FBQ2hELFFBQUEsSUFBSSxFQUFFLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRCxNQUFNLEtBQUssQ0FBQyxpRUFBaUUsR0FBRyxPQUFPLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN0RyxTQUFBO0FBRUQsUUFBQSxJQUFJLE9BQU8sR0FBRyxJQUFJLFlBQVksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3RELFFBQUEsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN0RixRQUFBLElBQUksQ0FBQyxRQUFRO0FBQUUsWUFBQSxPQUFPLFNBQVMsQ0FBQztBQUVoQyxRQUFBLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckQsUUFBQSxJQUFJLENBQUMsVUFBVTtBQUFFLFlBQUEsT0FBTyxTQUFTLENBQUM7QUFFbEMsUUFBQSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUNoRTs7SUFHTSxLQUFLLENBQUMsS0FBYyxFQUFFLFVBQW1CLEVBQUE7QUFDNUMsUUFBQSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUc7WUFDakQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbkMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDNUIsU0FBQyxDQUFDLENBQUM7S0FDTjs7QUFHTyxJQUFBLGNBQWMsQ0FBQyxVQUF5QixFQUFBOztBQUU1QyxRQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN0RCxZQUFBLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFBRyxnQkFBQSxVQUFVLENBQUMsSUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQU0sS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2RyxTQUFBO0FBRUQsUUFBQSxPQUFPLFVBQVUsQ0FBQztLQUNyQjs7OztBQU1EOzs7QUFHRztBQUNJLElBQUEsS0FBSyxDQUFDLEdBQVksRUFBQTtBQUNyQixRQUFBLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7QUFBRSxZQUFBLE9BQU8sR0FBRyxDQUFDO0FBQzNDLFFBQUEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xFLFFBQUEsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQy9DOztBQUdNLElBQUEsT0FBTyxDQUFDLEdBQVksRUFBQTtBQUN2QixRQUFBLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzNEOztBQUdNLElBQUEsV0FBVyxDQUFDLEdBQVksRUFBQTtBQUMzQixRQUFBLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNyQzs7QUFHTSxJQUFBLFFBQVEsQ0FBQyxJQUFZLEVBQUUsS0FBaUIsR0FBQSxLQUFLLEVBQUUsT0FBZ0IsRUFBQTtRQUNsRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztLQUMxQzs7SUFHTSxXQUFXLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBRSxLQUFpQixHQUFBLEtBQUssRUFBRSxPQUFnQixFQUFBO0FBQ3RGLFFBQUEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3JEOztJQUdNLFNBQVMsQ0FBQyxJQUFZLEVBQUUsT0FBZSxFQUFFLEtBQWlCLEdBQUEsS0FBSyxFQUFFLE9BQWdCLEVBQUE7QUFDcEYsUUFBQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDcEQ7O0FBR00sSUFBQSxJQUFJLENBQUMsUUFBa0MsRUFBQTtRQUMxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBb0IsQ0FBQztLQUN0RDs7QUFHTSxJQUFBLFFBQVEsQ0FBQyxHQUFzQixFQUFBO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFvQixDQUFDO0tBQ2hEOztBQUdNLElBQUEsS0FBSyxDQUFDLEtBQWEsRUFBQTtRQUN0QixJQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLEdBQUcsQ0FBQyxNQUFNO1lBQUUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDOztBQUM1QixZQUFBLE9BQU8sS0FBSyxDQUFDO0tBQ3JCOztBQUdNLElBQUEsT0FBTyxDQUFDLEtBQVUsRUFBQTtBQUNyQixRQUFBLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDbEM7O0FBR00sSUFBQSxLQUFLLENBQUMsS0FBYyxFQUFBO0FBQ3ZCLFFBQUEsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2pDO0FBRUQ7OztBQUdHO0lBQ0ksT0FBTyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUE7QUFDekIsUUFBQSxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2xGOztJQUdNLEtBQUssQ0FBQyxDQUFNLEVBQUUsQ0FBTSxFQUFBO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOzs7O0FBTUQ7Ozs7Ozs7Ozs7QUFVRztBQUNJLElBQUEsTUFBTSxLQUFLLENBQ2QsTUFBc0IsRUFDdEIsVUFBbUIsRUFDbkIsUUFBMkIsRUFBQTtRQUUzQixNQUFNLEtBQUssR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQWdCLE1BQU0sQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtBQUFFLFlBQUEsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFM0MsUUFBQSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNsQyxRQUFRLE1BQU0sQ0FBQyxJQUFJO0FBQ2YsWUFBQSxLQUFLLFVBQVU7Z0JBQ1gsTUFBTSxJQUFJLEdBQUcsTUFBTSxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3RixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFBRSxvQkFBQSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUV6QyxnQkFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekUsWUFBQSxLQUFLLE1BQU07Z0JBQ1AsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVU7QUFBRSxvQkFBQSxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUUzQyxnQkFBQSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsWUFBQSxLQUFLLE1BQU07QUFDUCxnQkFBQSxJQUFJLFFBQVEsRUFBRSxPQUFPLEtBQUssU0FBUztBQUFFLG9CQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFFdEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFBRSxvQkFBQSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7O2dCQUt6QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDbEIsb0JBQUEsSUFBSSxFQUFFLE1BQU07QUFDWixvQkFBQSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQ3ZCLG9CQUFBLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7QUFDNUMsaUJBQUEsQ0FBQyxDQUFDO0FBQ1AsWUFBQSxLQUFLLE9BQU87QUFDUixnQkFBQSxJQUFJLFFBQVEsRUFBRSxPQUFPLEtBQUssU0FBUztBQUFFLG9CQUFBLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFFdEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7QUFBRSxvQkFBQSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFekMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ2xCLG9CQUFBLElBQUksRUFBRSxPQUFPO0FBQ2Isb0JBQUEsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtBQUN2QixvQkFBQSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO0FBQ3pCLG9CQUFBLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7QUFDbEMsaUJBQUEsQ0FBQyxDQUFDO0FBQ1YsU0FBQTtLQUNKOztBQUdNLElBQUEsTUFBTSxRQUFRLENBQUMsTUFBYyxFQUFFLFVBQW1CLEVBQUUsUUFBMkIsRUFBQTtBQUNsRixRQUFBLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztLQUN6RTs7QUFHTSxJQUFBLE1BQU0sYUFBYSxDQUN0QixNQUFzQixFQUN0QixVQUFtQixFQUNuQixRQUFxRCxFQUFBO0FBRXJELFFBQUEsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO0FBQUUsWUFBQSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUU3QyxRQUFBLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO0FBQ3JCLFlBQUEsS0FBSyxNQUFNO0FBQ1AsZ0JBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM1RSxZQUFBLEtBQUssT0FBTztnQkFDUixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ25HLFlBQUEsS0FBSyxNQUFNO0FBQ1AsZ0JBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLFlBQUEsS0FBSyxVQUFVO0FBQ1gsZ0JBQUEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFDNUUsU0FBQTtLQUNKOztBQUdNLElBQUEsTUFBTSxnQkFBZ0IsQ0FDekIsTUFBc0IsRUFDdEIsVUFBbUIsRUFDbkIsUUFBcUQsRUFBQTtBQUVyRCxRQUFBLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztLQUNqRjtBQUVEOzs7Ozs7Ozs7Ozs7QUFZRztBQUNJLElBQUEsUUFBUSxDQUFDLFVBQWtCLEVBQUUsT0FBb0IsRUFBRSxVQUFtQixFQUFBO1FBQ3pFLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsVUFBVSxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUM7UUFFdkYsSUFBSSxpQkFBaUIsR0FBRyxVQUFVO0FBQzlCLGNBQUUsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQ3hFLGNBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRTdCLE9BQU8saUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDM0Q7O0FBR00sSUFBQSxXQUFXLENBQUMsVUFBa0IsRUFBRSxPQUFvQixFQUFFLFVBQW1CLEVBQUE7QUFDNUUsUUFBQSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUN2RTs7SUFHTSxjQUFjLENBQUMsVUFBa0IsRUFBRSxNQUFjLEVBQUE7UUFDcEQsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLCtCQUErQixVQUFVLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQztBQUV2RixRQUFBLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3hFOzs7O0FBTUQ7Ozs7Ozs7QUFPRztJQUNJLE1BQU0sT0FBTyxDQUNoQixNQUFjLEVBQ2QsU0FBc0IsRUFDdEIsU0FBbUQsRUFDbkQsUUFBZ0IsRUFBQTtBQUVoQixRQUFBLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDOUIsWUFBQSxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25DLE9BQU87QUFDVixTQUFBO0FBRUQsUUFBQSxJQUFJLFVBQVUsR0FBRyxjQUFjLENBQUMsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs7QUFHMUQsUUFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUN4QixjQUFjLENBQUMsU0FBUyxFQUFFLFlBQVksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0QsT0FBTztBQUNWLFNBQUE7QUFFRCxRQUFBLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUNwRixRQUFBLElBQUksY0FBYyxDQUFDO0FBQ25CLFFBQUEsUUFBUSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDckIsWUFBQSxLQUFLLE1BQU07Z0JBQ1AsY0FBYyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2hFLGdCQUFBLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07QUFDVixZQUFBLEtBQUssTUFBTTtnQkFDUCxjQUFjLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFjLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDaEUsZ0JBQUEsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFbkMsTUFBTTtBQUNWLFlBQUEsS0FBSyxPQUFPO2dCQUNSLGNBQWMsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUVqRSxnQkFBQSxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO0FBQ1YsWUFBQSxLQUFLLFVBQVU7Z0JBQ1gsY0FBYyxHQUFHLElBQUksd0JBQXdCLENBQ3pDLEtBQWMsRUFDZCxTQUFTLEVBQ1QsSUFBSSxDQUFDLEtBQUssRUFDVixRQUFRLEVBQ1IsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsR0FBRyxDQUNYLENBQUM7QUFFRixnQkFBQSxTQUFTLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNO0FBQ2IsU0FBQTtRQUNELGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUN6QjtBQUVEOzs7QUFHRztJQUNJLE1BQU0sU0FBUyxDQUNsQixJQUFZLEVBQ1osU0FBc0IsRUFDdEIsU0FBbUQsRUFDbkQsUUFBZ0IsRUFBQTtBQUVoQixRQUFBLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDOUIsWUFBQSxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMvQyxPQUFPO0FBQ1YsU0FBQTtBQUNELFFBQUEsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsUUFBQSxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ2hDOztJQUdNLE1BQU0sSUFBSSxDQUNiLE1BQTBDLEVBQzFDLFNBQXNCLEVBQ3RCLFNBQW9CLEVBQ3BCLFFBQWdCLEVBQUE7QUFFaEIsUUFBQSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDcEIsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDbkcsWUFBQSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7UUFHaEMsSUFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QyxRQUFBLFNBQVMsQ0FBQyxRQUFRLENBQ2QsbUJBQW1CLENBQ2YsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEVBQ3RGLE1BQW1CLEVBQ25CLFFBQVEsQ0FDWCxDQUNKLENBQUM7S0FDTDs7SUFHTSxNQUFNLEtBQUssQ0FDZCxPQUFpQixFQUNqQixNQUE0QyxFQUM1QyxTQUFzQixFQUN0QixTQUFvQixFQUNwQixRQUFnQixFQUFBO0FBRWhCLFFBQUEsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQzNCLFFBQUEsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLFFBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztBQUFFLFlBQUEsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7O1FBRzlGLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0MsUUFBQSxTQUFTLENBQUMsUUFBUSxDQUNkLG9CQUFvQixDQUNoQixFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsRUFDdEYsT0FBTyxFQUNQLE1BQXFCLEVBQ3JCLFFBQVEsQ0FDWCxDQUNKLENBQUM7S0FDTDs7QUFHTSxJQUFBLE1BQU0sUUFBUSxDQUNqQixLQUEwQixFQUMxQixXQUFBLEdBQXVCLElBQUksRUFDM0IsU0FBc0IsRUFDdEIsU0FBb0IsRUFDcEIsV0FBbUIsRUFBRSxFQUFBO0FBRXJCLFFBQUEsSUFBSSxZQUFZLEdBQ1osQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O1FBRzVHLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUMsUUFBQSxTQUFTLENBQUMsUUFBUSxDQUNkLG1CQUFtQixDQUNmLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxFQUN2RixZQUFtQyxFQUNuQyxRQUFRLENBQ1gsQ0FDSixDQUFDO0tBQ0w7O0FBR00sSUFBQSxNQUFNLFdBQVcsQ0FDcEIsS0FBVSxFQUNWLFNBQXNCLEVBQ3RCLFNBQW9CLEVBQ3BCLFFBQWdCLEVBQ2hCLE1BQUEsR0FBa0IsS0FBSyxFQUFBO1FBRXZCLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBZ0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3pHOzs7OztBQU9NLElBQUEsYUFBYSxDQUNoQixPQUE2QixFQUM3QixNQUE0QyxFQUM1QyxRQUFrQyxFQUFBO0FBRWxDLFFBQUEsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQzNCLFFBQUEsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBRXpCLFFBQUEsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1RCxPQUFPLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUM5RDs7SUFHTSxZQUFZLENBQUMsTUFBMEMsRUFBRSxRQUFrQyxFQUFBO0FBQzlGLFFBQUEsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBRXpCLFFBQUEsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1RCxRQUFBLE9BQU8sWUFBWSxDQUFDLE1BQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUNsRDs7SUFHTSxnQkFBZ0IsQ0FBQyxNQUEyQixFQUFFLFFBQWtDLEVBQUE7QUFDbkYsUUFBQSxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFFekIsUUFBQSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEMsUUFBQSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzVELFFBQUEsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7S0FDdEQ7QUFDSixDQUFBO0FBMkJEO0FBQ00sU0FBVSxrQkFBa0IsQ0FBQyxVQUFrQixFQUFBO0FBQ2pELElBQUEsSUFBSSxDQUFDLFVBQVU7QUFBRSxRQUFBLE9BQU8sS0FBSyxDQUFDO0lBRTlCLElBQUksZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxJQUFJLGdCQUFnQixJQUFJLENBQUMsQ0FBQztBQUFFLFFBQUEsT0FBTyxLQUFLLENBQUM7SUFFekMsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzFFOztBQy9sQkE7QUFDTSxNQUFPLHNCQUF1QixTQUFRLDJCQUEyQixDQUFBO0FBS3hELElBQUEsS0FBQSxDQUFBO0FBQ0EsSUFBQSxTQUFBLENBQUE7QUFDQSxJQUFBLFNBQUEsQ0FBQTtBQUNBLElBQUEsTUFBQSxDQUFBO0FBQ0EsSUFBQSxLQUFBLENBQUE7QUFDQSxJQUFBLE1BQUEsQ0FBQTtBQUNBLElBQUEsUUFBQSxDQUFBO0FBQ0EsSUFBQSxHQUFBLENBQUE7O0FBVlgsSUFBQSxRQUFRLENBQWU7QUFFdkIsSUFBQSxXQUFBLENBQ1csS0FBWSxFQUNaLFNBQWlCLEVBQ2pCLFNBQXNCLEVBQ3RCLE1BQW1CLEVBQ25CLEtBQWdCLEVBQ2hCLE1BQWMsRUFDZCxRQUEwQixFQUMxQixHQUFRLEVBQUE7UUFFZixLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFUaEMsSUFBSyxDQUFBLEtBQUEsR0FBTCxLQUFLLENBQU87UUFDWixJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBUTtRQUNqQixJQUFTLENBQUEsU0FBQSxHQUFULFNBQVMsQ0FBYTtRQUN0QixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixJQUFLLENBQUEsS0FBQSxHQUFMLEtBQUssQ0FBVztRQUNoQixJQUFNLENBQUEsTUFBQSxHQUFOLE1BQU0sQ0FBUTtRQUNkLElBQVEsQ0FBQSxRQUFBLEdBQVIsUUFBUSxDQUFrQjtRQUMxQixJQUFHLENBQUEsR0FBQSxHQUFILEdBQUcsQ0FBSztLQUdsQjtBQUVELElBQUEsTUFBTSxNQUFNLEdBQUE7QUFDUixRQUFBLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEIsSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3JHLFFBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQyxZQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLDhCQUE4QixHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxRyxTQUFBO0FBQU0sYUFBQTtZQUNILElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7WUFDdkQsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRXpGLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsU0FBQTtLQUNKO0FBQ0o7O0FDbkNEO0FBQ08sZUFBZSxtQkFBbUIsQ0FBQyxHQUFpQyxFQUFFLElBQWtCLEVBQUE7SUFDM0YsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuRSxJQUFBLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQUUsT0FBTztJQUVyQyxNQUFNLFNBQVMsR0FBRyxJQUFJbUQsNEJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFELElBQUEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7QUFHeEIsSUFBQSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztBQUN0QyxJQUFBLEtBQUssSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMvQyxRQUFBLElBQUksS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixJQUFJLGVBQWUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQzs7QUFHekQsUUFBQSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksR0FBRyxFQUFFO0FBQ3ZCLFlBQUEsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNuQyxnQkFBQSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUM7QUFDckMsZ0JBQUEsSUFBSSxFQUFFO29CQUNGLGFBQWEsRUFBRSxLQUFLLENBQUMsR0FBRztBQUN4QixvQkFBQSxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ3JELGlCQUFBO0FBQ0osYUFBQSxDQUFDLENBQUM7O0FBR0gsWUFBQSxHQUFHLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFFMUIsZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUN2QixnQkFBQSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUM7QUFDdkMsZ0JBQUEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixHQUFHLENBQUMsRUFBRTtBQUM3QyxhQUFBLENBQUMsQ0FBQztBQUNOLFNBQUE7QUFBTSxhQUFBO1lBQ0gsZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUN2QixnQkFBQSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsK0JBQStCLENBQUM7QUFDbEQsZ0JBQUEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLHdCQUF3QixHQUFHLENBQUMsRUFBRTtBQUM3QyxhQUFBLENBQUMsQ0FBQztBQUNOLFNBQUE7UUFFRCxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLGVBQWUsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0YsS0FBQTs7SUFHRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3BELElBQUEsUUFBUSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7OztBQUk1QixJQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvRCxJQUFBLElBQUksb0JBQStDLENBQUM7SUFDcEQsSUFBSSxnQkFBZ0IsR0FBWSxLQUFLLENBQUM7QUFDdEMsSUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUN0RCxRQUFBLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQzVFLFFBQUEsSUFBSSxDQUFDLEdBQUc7WUFBRSxTQUFTO1FBRW5CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUFDbEYsUUFBQSxNQUFNLHVCQUF1QixHQUFHLENBQUMsUUFBZ0IsS0FBSTtBQUNqRCxZQUFBLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFOztnQkFFM0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUNuQixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDeEIsb0JBQUEsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ3BELG9CQUFBLElBQUksSUFBSSxFQUFFO0FBQ04sd0JBQUEsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEQscUJBQUE7QUFDSixpQkFBQTtBQUNELGdCQUFBLElBQUksQ0FBQyxvQkFBb0I7QUFBRSxvQkFBQSxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlELGFBQUE7QUFBTSxpQkFBQTtBQUNILGdCQUFBLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckMsYUFBQTtBQUNMLFNBQUMsQ0FBQztRQUVGQyxHQUFNLENBQ0YxQyxJQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUMsRUFBQSxLQUFLLEVBQUUsT0FBTyxFQUFBO0FBQ3BDLFlBQUFBLEdBQUEsQ0FBQyxHQUFHLEVBQUEsRUFDQSxLQUFLLEVBQUUsdUJBQXVCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUN6RCxNQUFNLEVBQUUsSUFBSSxFQUNaLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxFQUFBLENBQzVCLENBQ3FCLEVBQzNCLEdBQUcsQ0FDTixDQUFDO0FBQ0wsS0FBQTtBQUNMOztBQzFGQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJLO1NBaUJXLHdCQUF3QixDQUFDLFNBQTBCLEVBQUUsU0FBaUIsRUFBRSxPQUFlLEVBQUE7QUFDbkcsSUFBQSxLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUU7UUFDbEMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLFNBQVMsRUFBRTtBQUNoRCxZQUFBLE9BQU8sSUFBSSxDQUFDO0FBQ2YsU0FBQTtBQUNKLEtBQUE7QUFFRCxJQUFBLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFlBQWEsU0FBUW1ELGVBQVUsQ0FBQTtBQUVwQixJQUFBLFVBQUEsQ0FBQTtBQUNBLElBQUEsUUFBQSxDQUFBO0FBQ0QsSUFBQSxFQUFBLENBQUE7QUFDQSxJQUFBLElBQUEsQ0FBQTtBQUpaLElBQUEsV0FBQSxDQUNhLFVBQW9CLEVBQ3BCLFFBQWdCLEVBQ2pCLEVBQWUsRUFDZixJQUFnQixFQUFBO0FBRXhCLFFBQUEsS0FBSyxFQUFFLENBQUM7UUFMQyxJQUFVLENBQUEsVUFBQSxHQUFWLFVBQVUsQ0FBVTtRQUNwQixJQUFRLENBQUEsUUFBQSxHQUFSLFFBQVEsQ0FBUTtRQUNqQixJQUFFLENBQUEsRUFBQSxHQUFGLEVBQUUsQ0FBYTtRQUNmLElBQUksQ0FBQSxJQUFBLEdBQUosSUFBSSxDQUFZO0tBRzNCOzs7QUFJRCxJQUFBLEVBQUUsQ0FBQyxLQUFtQixFQUFBO0FBQ2xCLFFBQUEsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7O0FBRWxDLFlBQUEsS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEMsb0JBQUEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUIsaUJBQUE7QUFBTSxxQkFBQTtBQUNILG9CQUFBLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNCLGlCQUFBO0FBQ0osYUFBQTtBQUNELFlBQUEsT0FBTyxJQUFJLENBQUM7QUFDZixTQUFBO0FBQ0QsUUFBQSxPQUFPLEtBQUssQ0FBQztLQUNoQjs7O0FBSUQsSUFBQSxLQUFLLENBQUMsSUFBZ0IsRUFBQTtRQUNsQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0tBQ2xCO0FBRUQ7Ozs7QUFJRztBQUNILElBQUEsV0FBVyxDQUFDLEtBQXlCLEVBQUE7O0FBRWpDLFFBQUEsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUM1QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRyxLQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUcsS0FBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JHLElBQUssS0FBb0IsQ0FBQyxRQUFRLEVBQUU7O0FBRWhDLGdCQUFBLElBQUksVUFBVSxFQUFFO0FBQ1osb0JBQUEsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQ0Msd0JBQWUsQ0FBQyxDQUFDO0FBQzFELG9CQUFBLElBQUksTUFBTSxFQUFFO3dCQUNSLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3BELHFCQUFBO0FBQ0osaUJBQUE7QUFDRCxnQkFBQSxPQUFPLEtBQUssQ0FBQztBQUNoQixhQUFBO0FBQ0osU0FBQTtBQUNELFFBQUEsT0FBTyxJQUFJLENBQUM7S0FDZjtBQUNKLENBQUE7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFrQixFQUFBO0lBQ3JDLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztBQUM3QixJQUFBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUNyQixRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDN0IsS0FBQTtBQUNELElBQUEsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2pCLFFBQUEsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6QixLQUFBO0FBQ0QsSUFBQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDeEIsUUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ2hDLEtBQUE7QUFDRCxJQUFBLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRTtBQUM1QixRQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNwQyxLQUFBO0FBQ0QsSUFBQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7QUFDdEIsUUFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzlCLEtBQUE7QUFDRCxJQUFBLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFFSyxTQUFVLFlBQVksQ0FBQyxHQUFRLEVBQUUsS0FBZ0IsRUFBRSxRQUEwQixFQUFFLEdBQWdCLEVBQUE7SUFDakcsT0FBT0MsZUFBVSxDQUFDLFNBQVMsQ0FDdkIsTUFBQTtBQUNJLFFBQUEsV0FBVyxDQUFnQjtBQUMzQixRQUFBLFNBQVMsQ0FBWTtBQUVyQixRQUFBLFdBQUEsQ0FBWUMsTUFBZ0IsRUFBQTtBQUN4QixZQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSWxFLGtCQUFTLEVBQUUsQ0FBQztBQUNqQyxZQUFBLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEIsWUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUNrRSxNQUFJLENBQUMsSUFBSUMsZUFBVSxDQUFDLElBQUksQ0FBQztTQUNqRTtBQUVELFFBQUEsTUFBTSxDQUFDLE1BQWtCLEVBQUE7O1lBRXJCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQ0MsK0JBQXNCLENBQUMsRUFBRTtBQUM3QyxnQkFBQSxJQUFJLENBQUMsV0FBVyxHQUFHRCxlQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNuQyxPQUFPO0FBQ1YsYUFBQTtZQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtBQUNuQixnQkFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RCxnQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxhQUFBO2lCQUFNLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtBQUM1QixnQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxhQUFBO0FBQU0saUJBQUEsSUFBSSxNQUFNLENBQUMsZUFBZSw2QkFBNkI7QUFDMUQsZ0JBQUEsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSUEsZUFBVSxDQUFDLElBQUksQ0FBQztBQUN4RSxhQUFBO1NBQ0o7QUFFRCxRQUFBLFVBQVUsQ0FBQyxJQUFnQixFQUFBO1lBQ3ZCLEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO0FBQzNDLGdCQUFBRSxtQkFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUM7b0JBQzNCLElBQUk7b0JBQ0osRUFBRTtBQUNGLG9CQUFBLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUk7QUFDaEIsd0JBQUEsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RCx3QkFBQSxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRTtBQUNwQiw0QkFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUN0QixPQUFPO0FBQ1YseUJBQUE7NkJBQU0sSUFBSSxDQUFDLE1BQU0sRUFBRTs0QkFDaEIsT0FBTztBQUNWLHlCQUFBO0FBQU0sNkJBQUEsSUFBSSxNQUFNLEVBQUU7QUFDZiw0QkFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM1Qix5QkFBQTtxQkFDSjtBQUNKLGlCQUFBLENBQUMsQ0FBQztBQUNOLGFBQUE7U0FDSjtBQUVELFFBQUEsVUFBVSxDQUFDLElBQWdCLEVBQUE7WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSTtnQkFDckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUN2QyxvQkFBQSxVQUFVLEVBQUUsSUFBSTtBQUNoQixvQkFBQSxRQUFRLEVBQUUsRUFBRTtvQkFDWixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssS0FBSyxLQUFLO0FBQ3JDLGlCQUFBLENBQUMsQ0FBQztBQUNQLGFBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLENBQUMsSUFBZ0IsRUFBRSxJQUFnQixFQUFBO0FBQ3RDLFlBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDM0IsWUFBQSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEtBQUk7Z0JBQ25ELE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbEIsYUFBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ1Q7Ozs7O0FBS0c7QUFDSCxnQkFBQSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQ0wsd0JBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzRCxnQkFBQSxJQUFJLENBQUMsV0FBVztvQkFBRSxPQUFPO0FBQ3pCLGdCQUFBLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDbEUsZ0JBQUEsSUFBSSxPQUFPLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUN2Qyx3QkFBQSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDaEQscUJBQUEsQ0FBQyxDQUFDO0FBQ04saUJBQUE7QUFDSixhQUFBO1NBQ0o7O1FBR0QsVUFBVSxDQUFDLElBQWdCLEVBQUUsSUFBZ0IsRUFBQTtBQUN6QyxZQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7O1lBRXZCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQVNNLDJCQUFrQixDQUFDLENBQUM7QUFDekQsWUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsWUFBQSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFOztBQUV0RCxnQkFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3hCLGdCQUFBLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7OztBQUdwQixnQkFBQSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztBQUN2QyxnQkFBQSxJQUFJLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDekQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7d0JBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMzQyxxQkFBQTtBQUFNLHlCQUFBO3dCQUNILE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM1QyxxQkFBQTtBQUNKLGlCQUFBO3FCQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUMsaUJBQUE7QUFDSixhQUFBO1lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQzVDO0FBRUQsUUFBQSxhQUFhLENBQUMsSUFBZ0IsRUFBRSxLQUFhLEVBQUUsR0FBVyxFQUFBO0FBQ3RELFlBQUEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRCxZQUFBLE1BQU0sYUFBYSxHQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUNqRyxZQUFBLE9BQU8sYUFBYSxDQUFDO1NBQ3hCO0FBRUQsUUFBQSxZQUFZLENBQUNKLE1BQWdCLEVBQUE7O1lBRXpCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztnQkFBRSxPQUFPO0FBQy9CLFlBQUEsTUFBTSxXQUFXLEdBQUdBLE1BQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDRix3QkFBZSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQzNELFlBQUEsSUFBSSxDQUFDLFdBQVc7Z0JBQUUsT0FBTztZQUV6QixNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFDO0FBQ3hDOzs7Ozs7QUFNRztZQUVILEtBQUssTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSUUsTUFBSSxDQUFDLGFBQWEsRUFBRTtBQUMzQyxnQkFBQUcsbUJBQVUsQ0FBQ0gsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFDM0IsSUFBSTtvQkFDSixFQUFFO0FBQ0Ysb0JBQUEsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSTt3QkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUNBLE1BQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNOzRCQUFFLE9BQU87QUFDaEQsd0JBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUVBLE1BQUksRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMxRCx3QkFBQSxJQUFJLE1BQU0sRUFBRTtBQUNSLDRCQUFBLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIseUJBQUE7cUJBQ0o7QUFDSixpQkFBQSxDQUFDLENBQUM7QUFDTixhQUFBO1lBRUQsT0FBT0MsZUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDeEM7QUFFRCxRQUFBLFlBQVksQ0FBQyxJQUFnQixFQUFFRCxNQUFnQixFQUFFLFdBQWtCLEVBQUE7QUFDL0QsWUFBQSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDOztBQUV2QixZQUFBLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDeEIsWUFBQSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDOztBQUVwQixZQUFBLElBQUlBLE1BQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDbkQsT0FBTztBQUNWLGFBQUE7QUFDRCxZQUFBLE1BQU0sSUFBSSxHQUFHQSxNQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELElBQUksSUFBSSxHQUFXLEVBQUUsQ0FBQztZQUN0QixJQUFJLE1BQU0sR0FBWSxFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQVcsb0NBQW9DLENBQUM7WUFDOUQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBQ2xCLGdCQUFBLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztBQUN2QyxhQUFBLENBQUMsQ0FBQztBQUNIOzs7O0FBSUc7WUFDSCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQzdDLElBQUksUUFBUSxDQUFDLG9CQUFvQixFQUFFO0FBQy9CLG9CQUFBLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoRSxvQkFBQSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyRCxvQkFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTt3QkFDbkIsTUFBTSxHQUFHLDJCQUEyQixJQUFJLENBQUEsSUFBQSxFQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM3RCx3QkFBQSxFQUFFLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUN6QixxQkFBQTtBQUFNLHlCQUFBO0FBQ0gsd0JBQUEsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQzt3QkFDL0IsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsTUFDdEMsYUFBYSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FDL0QsQ0FBQztBQUNGLHdCQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUU7NEJBQ2hDLE1BQU0sR0FBRywrQkFBK0IsVUFBVSxDQUFBLElBQUEsRUFBTyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNwRiw0QkFBQSxFQUFFLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUN6Qix5QkFBQTtBQUFNLDZCQUFBO0FBQ0gsNEJBQUEsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLGtCQUFrQixDQUFDOzRCQUNyQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ2YsNEJBQUEsV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1RSx5QkFBQTtBQUNKLHFCQUFBO0FBQ0osaUJBQUE7QUFBTSxxQkFBQTtvQkFDSCxNQUFNLEdBQUcsZ0NBQWdDLENBQUM7QUFDMUMsb0JBQUEsRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDekIsaUJBQUE7QUFDSixhQUFBO2lCQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDdEQsSUFBSSxRQUFRLENBQUMsc0JBQXNCLEVBQUU7QUFDakMsb0JBQUEsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNsRSxJQUFJOztBQUVBLHdCQUFBLE1BQU0sSUFBSSxHQUFHLFNBQVMsRUFBRSxDQUFDO0FBQ3pCLHdCQUFBLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQWlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2Rix3QkFBQSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDdkIsNEJBQUEsYUFBYSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFrQixDQUFDLElBQUksQ0FDL0UsQ0FBQyxNQUFXLEtBQUk7QUFDWixnQ0FBQSxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzdFLDZCQUFDLENBQ0osQ0FBQztBQUNMLHlCQUFBO0FBQU0sNkJBQUE7QUFDSCw0QkFBQSxNQUFNLEdBQUcsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN4Qyw0QkFBQSxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzVFLHlCQUFBO3dCQUVELFNBQVMsYUFBYSxDQUFDLE1BQWMsRUFBQTs0QkFDakMsT0FBTyxZQUFBO0FBQ0gsZ0NBQUEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEIsNkJBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7eUJBQ3ZCO0FBQ0oscUJBQUE7QUFBQyxvQkFBQSxPQUFPLENBQUMsRUFBRTtBQUNSLHdCQUFBLE1BQU0sR0FBRyxDQUFrQywrQkFBQSxFQUFBLElBQUksQ0FBTyxJQUFBLEVBQUEsQ0FBQyxFQUFFLENBQUM7QUFDMUQsd0JBQUEsRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDekIscUJBQUE7QUFDSixpQkFBQTtBQUFNLHFCQUFBO29CQUNILE1BQU0sR0FBRyxnQ0FBZ0MsQ0FBQztBQUMxQyxvQkFBQSxFQUFFLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUN6QixpQkFBQTtBQUNKLGFBQUE7QUFBTSxpQkFBQTtnQkFDSCxPQUFPO0FBQ1YsYUFBQTtZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQVNJLDJCQUFrQixDQUFDLENBQUM7QUFDekQsWUFBQSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsWUFBQSxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckMsT0FBT0gsZUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDdEIsTUFBTSxFQUFFLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFRCxNQUFJLENBQUM7QUFDakQsZ0JBQUEsU0FBUyxFQUFFLEtBQUs7QUFDaEIsZ0JBQUEsS0FBSyxFQUFFLEtBQUs7YUFDZixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxHQUFBO0FBQ0gsWUFBQSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzNCO0FBQ0osS0FBQSxFQUNELEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQ3RDLENBQUM7QUFDTjs7QUN4V0EsTUFBTSxnQkFBaUIsU0FBUUssZ0JBQVUsQ0FBQTtBQUNsQixJQUFBLEtBQUEsQ0FBQTtBQUFuQixJQUFBLFdBQUEsQ0FBbUIsS0FBa0IsRUFBQTtBQUNqQyxRQUFBLEtBQUssRUFBRSxDQUFDO1FBRE8sSUFBSyxDQUFBLEtBQUEsR0FBTCxLQUFLLENBQWE7S0FFcEM7QUFFRCxJQUFBLEVBQUUsQ0FBQyxLQUF1QixFQUFBO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7S0FDckY7QUFDSixDQUFBO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQ0MsT0FBa0IsRUFBQTtBQUN6QyxJQUFBLE1BQU0sT0FBTyxHQUFHLElBQUlDLHFCQUFlLEVBQW9CLENBQUM7QUFDeEQsSUFBQSxNQUFNLElBQUksR0FBR0osbUJBQVUsQ0FBQ0csT0FBSyxDQUFDLENBQUM7QUFFL0IsSUFBQSxLQUFLLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLElBQUlBLE9BQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO1FBQ2xFLE1BQU0sSUFBSSxHQUFHQSxPQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsS0FBSyxFQUFFLElBQUksSUFBRzs7Z0JBRVYsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO29CQUMzQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDNUIsaUJBQUE7QUFDRCxnQkFBQSxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO2FBQ2xDO0FBQ0osU0FBQSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDcEIsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BELFlBQUEsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUYsYUFBQTtBQUNKLFNBQUE7QUFDSixLQUFBO0FBQ0QsSUFBQSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQ7QUFDTyxNQUFNLGlCQUFpQixHQUFHRSxnQkFBVSxDQUFDLE1BQU0sQ0FBNkI7QUFDM0UsSUFBQSxNQUFNLEVBQUUsaUJBQWlCO0lBQ3pCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFBO0FBQ2hCLFFBQUEsT0FBTyxFQUFFLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7S0FDbEU7QUFDSixDQUFBLENBQUMsQ0FBQztBQUVIO0FBQ08sTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLEdBQVEsRUFBRSxRQUEwQixLQUNqRlQsZUFBVSxDQUFDLFNBQVMsQ0FDaEIsTUFBQTtBQUNJLElBQUEsV0FBVyxDQUFnQjtBQUMzQixJQUFBLFNBQVMsQ0FBWTtBQUVyQixJQUFBLFdBQUEsQ0FBWSxJQUFnQixFQUFBO0FBQ3hCLFFBQUEsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJakUsa0JBQVMsRUFBRSxDQUFDO0FBQ2pDLFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNsRDtJQUVELE9BQU8sR0FBQTtBQUNILFFBQUEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMzQjtBQUVELElBQUEsZ0JBQWdCLENBQUNrRSxNQUFnQixFQUFBOztRQUU3QixJQUFJLENBQUNBLE1BQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDRSwrQkFBc0IsQ0FBQztZQUFFLE9BQU9ELGVBQVUsQ0FBQyxJQUFJLENBQUM7QUFFdEUsUUFBQSxNQUFNLElBQUksR0FBR0QsTUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUNGLHdCQUFlLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDcEQsUUFBQSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU9HLGVBQVUsQ0FBQyxJQUFJLENBQUM7UUFFbEMsTUFBTSxJQUFJLEdBQUdELE1BQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDakQsUUFBQSxNQUFNLE9BQU8sR0FBRyxJQUFJTyxxQkFBZSxFQUFjLENBQUM7QUFDbEQsUUFBQSxNQUFNLFNBQVMsR0FBR1AsTUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFFdkMsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJQSxNQUFJLENBQUMsYUFBYSxFQUFFO0FBQzNDLFlBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFJOztnQkFFN0MsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQ1AsS0FBSyxFQUNMLEdBQUcsRUFDSEMsZUFBVSxDQUFDLE9BQU8sQ0FBQztBQUNmLHdCQUFBLE1BQU0sRUFBRSxJQUFJLGlCQUFpQixDQUN6QixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFNBQVMsRUFDZCxRQUFRLEVBQ1JELE1BQUksQ0FDUDtBQUNKLHFCQUFBLENBQUMsQ0FDTCxDQUFDO0FBQ0wsaUJBQUE7QUFDTCxhQUFDLENBQUMsQ0FBQztBQUNOLFNBQUE7QUFDRCxRQUFBLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQzNCO0FBRUQsSUFBQSxNQUFNLENBQUMsTUFBa0IsRUFBQTs7UUFFckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDRSwrQkFBc0IsQ0FBQyxFQUFFO0FBQzdDLFlBQUEsSUFBSSxDQUFDLFdBQVcsR0FBR0QsZUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQyxPQUFPO0FBQ1YsU0FBQTtBQUVELFFBQUEsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUN0RCxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQzdFLENBQUM7UUFFRixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7QUFDbkIsWUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RCxZQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsU0FBQTthQUFNLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtBQUM1QixZQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsU0FBQTtBQUFNLGFBQUEsSUFBSSxNQUFNLENBQUMsZUFBZSxJQUFJLGFBQWEsRUFBRTtZQUNoRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsU0FBQTtLQUNKO0FBRUQsSUFBQSxpQkFBaUIsQ0FBQ0QsTUFBZ0IsRUFBQTtBQUM5QixRQUFBLE1BQU0sSUFBSSxHQUFHQSxNQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQ0Ysd0JBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ1AsWUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHRyxlQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25DLE9BQU87QUFDVixTQUFBO1FBRUQsTUFBTSxZQUFZLEdBQUdELE1BQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFDekQsUUFBQSxNQUFNLFNBQVMsR0FBR0EsTUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFFdkMsS0FBSyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJQSxNQUFJLENBQUMsYUFBYSxFQUFFO0FBQzNDLFlBQUEsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFJO2dCQUNyRCxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFLGdCQUFBLElBQUksT0FBTyxFQUFFO0FBQ1Qsb0JBQUEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzVCLE9BQU87QUFDVixpQkFBQTtBQUFNLHFCQUFBO0FBQ0gsb0JBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUVBLE1BQUksQ0FBQyxDQUFDO0FBQy9DLGlCQUFBO0FBQ0wsYUFBQyxDQUFDLENBQUM7QUFDTixTQUFBO0tBQ0o7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBQTtBQUNqQyxRQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFJO1lBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDdkMsZ0JBQUEsVUFBVSxFQUFFLElBQUk7QUFDaEIsZ0JBQUEsUUFBUSxFQUFFLEVBQUU7QUFDWixnQkFBQSxNQUFNLEVBQUUsTUFBTSxLQUFLO0FBQ3RCLGFBQUEsQ0FBQyxDQUFDO0FBQ1AsU0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sQ0FBQyxLQUFhLEVBQUUsR0FBVyxFQUFFLEtBQWtCLEVBQUUsSUFBVyxFQUFFQSxNQUFnQixFQUFBO1FBQ2pGLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQUs7WUFDdEMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUNsQixTQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0FBQ3ZDLGdCQUFBLEdBQUcsRUFBRTtBQUNELG9CQUFBO0FBQ0ksd0JBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWCx3QkFBQSxFQUFFLEVBQUUsR0FBRztBQUNQLHdCQUFBLEtBQUssRUFBRUMsZUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN0Qiw0QkFBQSxNQUFNLEVBQUUsSUFBSSxpQkFBaUIsQ0FDekIsR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxTQUFTLEVBQ2QsUUFBUSxFQUNSRCxNQUFJLENBQ1A7eUJBQ0osQ0FBQztBQUNMLHFCQUFBO0FBQ0osaUJBQUE7QUFDSixhQUFBLENBQUMsQ0FBQztBQUNOLFNBQUE7S0FDSjtDQUNKLEVBQ0Q7QUFDSSxJQUFBLFdBQVcsRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLFdBQVc7QUFDaEQsQ0FBQSxDQUNKLENBQUM7QUFFTjtBQUNBLE1BQU0saUJBQWtCLFNBQVFILGVBQVUsQ0FBQTtBQUUzQixJQUFBLEdBQUEsQ0FBQTtBQUNBLElBQUEsS0FBQSxDQUFBO0FBQ0EsSUFBQSxVQUFBLENBQUE7QUFDQSxJQUFBLFNBQUEsQ0FBQTtBQUNBLElBQUEsUUFBQSxDQUFBO0FBQ0EsSUFBQSxJQUFBLENBQUE7SUFOWCxXQUNXLENBQUEsR0FBUSxFQUNSLEtBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLFNBQW9CLEVBQ3BCLFFBQTBCLEVBQzFCLElBQWdCLEVBQUE7QUFFdkIsUUFBQSxLQUFLLEVBQUUsQ0FBQztRQVBELElBQUcsQ0FBQSxHQUFBLEdBQUgsR0FBRyxDQUFLO1FBQ1IsSUFBSyxDQUFBLEtBQUEsR0FBTCxLQUFLLENBQWE7UUFDbEIsSUFBVSxDQUFBLFVBQUEsR0FBVixVQUFVLENBQVE7UUFDbEIsSUFBUyxDQUFBLFNBQUEsR0FBVCxTQUFTLENBQVc7UUFDcEIsSUFBUSxDQUFBLFFBQUEsR0FBUixRQUFRLENBQWtCO1FBQzFCLElBQUksQ0FBQSxJQUFBLEdBQUosSUFBSSxDQUFZO0tBRzFCO0FBRUQsSUFBQSxFQUFFLENBQUMsS0FBd0IsRUFBQTtRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0tBQ3JGO0lBRUQsS0FBSyxHQUFBOzs7UUFJRCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7QUFDL0IsWUFBQSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDO0FBQ3BDLFNBQUEsQ0FBQyxDQUFDOztBQUdILFFBQUEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxHQUFHLEVBQUU7QUFDNUIsWUFBQSxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDO0FBQ25DLGdCQUFBLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQztBQUNyQyxnQkFBQSxJQUFJLEVBQUU7QUFDRixvQkFBQSxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHO29CQUM3QixrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUMxRCxpQkFBQTtBQUNKLGFBQUEsQ0FBQyxDQUFDO1lBRUgscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRTVGLFlBQUEsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQztBQUNyQyxnQkFBQSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUM7QUFDMUMsYUFBQSxDQUFDLENBQUM7QUFDSCxZQUFBLFdBQVcsQ0FDUCxJQUFJLENBQUMsR0FBRyxFQUNSLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQ2xDLEtBQUssRUFDTCxJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLFFBQVEsRUFDYixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLENBQ1AsQ0FBQztBQUVGLFlBQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUM5QyxZQUFBLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDckQsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7QUFDckMsZ0JBQUEsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLCtCQUErQixDQUFDO0FBQ3JELGFBQUEsQ0FBQyxDQUFDO0FBQ0gsWUFBQSxXQUFXLENBQ1AsSUFBSSxDQUFDLEdBQUcsRUFDUixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUNsQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxRQUFRLEVBQ2IsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxDQUNQLENBQUM7QUFDRixZQUFBLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDckQsU0FBQTtBQUVELFFBQUEsT0FBTyxlQUFlLENBQUM7S0FDMUI7OztJQUlELGtCQUFrQixDQUFDLEdBQWdCLEVBQUUsZUFBNEIsRUFBQTtBQUM3RCxRQUFBLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFHO1lBQ2xDLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRTtBQUM3QixnQkFBQSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUN6QyxnQkFBQSxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3BELGdCQUFBLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZGLGdCQUFBLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZHLGdCQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3RCxhQUFBO0FBQ0wsU0FBQyxDQUFDLENBQUM7S0FDTjtJQUVELG9CQUFvQixDQUFDLEtBQWtCLEVBQUUsZUFBNEIsRUFBQTtBQUNqRSxRQUFBLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFHO1lBQ3BDLElBQUksS0FBSyxZQUFZLFVBQVUsRUFBRTtBQUM3QixnQkFBQSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUMzQyxnQkFBQSxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3BELGdCQUFBLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3ZGLGdCQUFBLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQ3pCLFFBQVE7cUJBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFDMUMsb0JBQUEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQzdELENBQUM7QUFDRixnQkFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0QsYUFBQTtBQUNMLFNBQUMsQ0FBQyxDQUFDO0tBQ047QUFDSixDQUFBO0FBRUQ7OztBQUdHO0FBQ0ksTUFBTSwyQkFBMkIsR0FBR1ksaUJBQVcsQ0FBQyxNQUFNLEVBQVE7O0FDMVJoRCxNQUFBLGNBQWUsU0FBUUMsZUFBTSxDQUFBOztBQUV2QyxJQUFBLFFBQVEsQ0FBbUI7O0FBRzNCLElBQUEsS0FBSyxDQUFZOztBQUVqQixJQUFBLEdBQUcsQ0FBYzs7QUFHaEIsSUFBQSxXQUFXLENBQWM7QUFFakMsSUFBQSxNQUFNLE1BQU0sR0FBQTs7QUFFUixRQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLFFBQUEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQ3RCLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFLO0FBQ25ELFlBQUEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWM7Z0JBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDN0QsQ0FBQyxDQUNMLENBQUM7O1FBR0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O1FBRzdCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7UUFHdkYsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzs7QUFHeEYsUUFBQSxJQUFJLENBQUMsc0NBQXNDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLE9BQU8sTUFBYyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQ3hGLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUNqRCxDQUFDOztBQUdGLFFBQUEsSUFBSSxDQUFDLHNDQUFzQyxDQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUMvQixDQUFDLEdBQUcsRUFDSixPQUFPLE1BQWMsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUN0RixDQUFDOztBQUdGLFFBQUEsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsS0FBSTs7QUFFL0QsWUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUFFLE9BQU87WUFFdEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqRCxTQUFDLENBQUMsQ0FBQzs7UUFHSCxJQUFJLENBQUMscUNBQXFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsS0FBSTs7QUFFOUQsWUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO2dCQUFFLE9BQU87O1lBRzFGLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxtQ0FBbUMsQ0FBQyxFQUFFO0FBQy9ELGdCQUFBLE1BQU0sSUFBSSxHQUFpQjtvQkFDdkIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO29CQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0FBQ3ZCLG9CQUFBLFNBQVMsRUFBRSxDQUFDO2lCQUNmLENBQUM7QUFFRixnQkFBQSxNQUFNLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4QyxhQUFBO0FBQ0wsU0FBQyxDQUFDLENBQUM7O0FBR0gsUUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN0QixRQUFBLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7O1FBRzlCLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDWixZQUFBLEVBQUUsRUFBRSw4QkFBOEI7QUFDbEMsWUFBQSxJQUFJLEVBQUUsb0NBQW9DO1lBQzFDLFFBQVEsRUFBRSxNQUFLO0FBQ1gsZ0JBQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQzthQUN4RDtBQUNKLFNBQUEsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNaLFlBQUEsRUFBRSxFQUFFLHFCQUFxQjtBQUN6QixZQUFBLElBQUksRUFBRSwrQkFBK0I7WUFDckMsUUFBUSxFQUFFLE1BQUs7QUFDWCxnQkFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQzdCO0FBQ0osU0FBQSxDQUFDLENBQUM7UUFNSCxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ1osWUFBQSxFQUFFLEVBQUUsK0JBQStCO0FBQ25DLFlBQUEsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixRQUFRLEVBQUUsTUFBSztBQUNYLGdCQUFBLE1BQU0sVUFBVSxHQUF3QixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQ0MscUJBQVksQ0FBQyxDQUFDO0FBQzdGLGdCQUFBLElBQUksVUFBVSxFQUFFO0FBQ1gsb0JBQUEsVUFBVSxDQUFDLElBQTZCLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDM0QsaUJBQUE7YUFDSjtBQUNKLFNBQUEsQ0FBQyxDQUFDOztRQUdILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7QUFDakMsWUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDekUsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDM0IsU0FBQTs7QUFHRCxRQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0QsUUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQXFCLGtCQUFBLEVBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUEsb0JBQUEsRUFBdUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUEsQ0FBQSxDQUFHLENBQUMsQ0FBQzs7QUFHN0csUUFBQSxJQUFJLENBQUMsYUFBYSxDQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsTUFBSztZQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUc7QUFDdkMsZ0JBQUEsSUFBSSxJQUFJLENBQUMsSUFBSSxZQUFZQSxxQkFBWSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtvQkFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUN6Qix3QkFBQSxPQUFPLEVBQUUsMkJBQTJCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztBQUNoRCxxQkFBQSxDQUFDLENBQUM7QUFDTixpQkFBQTtBQUNMLGFBQUMsQ0FBQyxDQUFDO1NBQ04sQ0FBQyxDQUNMLENBQUM7UUFFRixJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUMsQ0FBQztLQUNwRTtJQUVNLGtDQUFrQyxHQUFBO1FBQ3JDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxJQUNoRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQ2xELENBQUM7S0FDTDtJQUVNLG9DQUFvQyxHQUFBO1FBQ3ZDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxJQUNoRSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQzVDLENBQUM7S0FDTDtBQUVPLElBQUEsZ0JBQWdCLEdBQWUsTUFBTSxJQUFJLENBQUM7SUFFMUMscUJBQXFCLEdBQUE7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHQyxpQkFBUSxDQUM1QixNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUMxRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFDN0IsSUFBSSxDQUNQLENBQUM7S0FDTDtJQUVNLFFBQVEsR0FBQTtRQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBcUIsa0JBQUEsRUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBWSxVQUFBLENBQUEsQ0FBQyxDQUFDO0tBQ3ZFOztJQUdNLHFDQUFxQyxDQUN4QyxRQUFnQixFQUNoQixTQUFnRixFQUFBO1FBRWhGLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvRCxRQUFBLFVBQVUsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0tBQ25DOztBQUdNLElBQUEsc0NBQXNDLENBQ3pDLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLFNBQWdHLEVBQUE7UUFFaEcsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM5RSxRQUFBLFVBQVUsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0tBQ25DO0lBRU0sc0JBQXNCLEdBQUE7O0FBRXpCLFFBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOztRQUU1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7O0FBRW5GLFFBQUEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHFDQUFxQyxFQUFFO0FBQ3JELFlBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN2RyxTQUFBO0FBQ0QsUUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztLQUN0QztBQUVEOzs7QUFHRztJQUNJLE1BQU0sUUFBUSxDQUNqQixNQUFjLEVBQ2QsRUFBZSxFQUNmLFNBQW1ELEVBQ25ELFVBQWtCLEVBQUE7QUFFbEIsUUFBQSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDNUIsUUFBQSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztLQUN2RDs7SUFHTSxNQUFNLFVBQVUsQ0FDbkIsTUFBYyxFQUNkLEVBQWUsRUFDZixTQUFtRCxFQUNuRCxVQUFrQixFQUFBO0FBRWxCLFFBQUEsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQzVCLFFBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDekQ7O0FBR00sSUFBQSxNQUFNLGNBQWMsQ0FDdkIsRUFBZSxFQUNmLFNBQW1ELEVBQ25ELFVBQWtCLEVBQUE7UUFFbEIsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPOztRQUczQyxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0MsUUFBQSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwRCxJQUFJLFNBQVMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOztZQUd2QyxJQUNJLFNBQVMsQ0FBQyxhQUFhO2dCQUN2QixTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLO0FBQ3ZELGdCQUFBLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUI7Z0JBRXhDLFNBQVM7WUFFYixJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO0FBQ3BHLGdCQUFBLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMzRSxnQkFBQSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxTQUFTO0FBRS9CLGdCQUFBLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDL0YsYUFBQTtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRTtBQUN2RyxnQkFBQSxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkYsZ0JBQUEsSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQUUsU0FBUztBQUV6QyxnQkFBQSxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUM3RCxnQkFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtvQkFDbkIsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDcEMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUEyQix3QkFBQSxFQUFBLGNBQWMsQ0FBTyxJQUFBLEVBQUEsS0FBSyxDQUFDLEtBQUssQ0FBRSxDQUFBLENBQUMsQ0FBQztBQUM3RixpQkFBQTtBQUFNLHFCQUFBO0FBQ0gsb0JBQUEsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUM3QixvQkFBQSxTQUFTLENBQUMsUUFBUSxDQUNkLElBQUksc0JBQXNCLENBQ3RCLFVBQVUsRUFDVixJQUFJLEVBQ0osRUFBRSxFQUNGLFNBQVMsRUFDVCxJQUFJLENBQUMsS0FBSyxFQUNWLFVBQVUsRUFDVixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxHQUFHLENBQ1gsQ0FDSixDQUFDO0FBQ0wsaUJBQUE7QUFDSixhQUFBO0FBQ0osU0FBQTtLQUNKOztJQUdELE1BQU0sY0FBYyxDQUFDLFFBQW1DLEVBQUE7UUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDdEM7O0FBR00sSUFBQSxPQUFPLENBQUMsUUFBb0MsRUFBQTtBQUMvQyxRQUFBLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDdEI7QUFFRDs7O0FBR0c7QUFDSSxJQUFBLFFBQVEsQ0FBQyxJQUFZLEVBQUUsU0FBb0IsRUFBRSxFQUFlLEVBQUE7QUFDL0QsUUFBQSxPQUFPLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQy9EO0FBQ0osQ0FBQTtBQUVEO0FBQ0EsTUFBTSxrQkFBbUIsU0FBUUMseUJBQWdCLENBQUE7QUFDZixJQUFBLE1BQUEsQ0FBQTtJQUE5QixXQUFZLENBQUEsR0FBUSxFQUFVLE1BQXNCLEVBQUE7QUFDaEQsUUFBQSxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRE8sSUFBTSxDQUFBLE1BQUEsR0FBTixNQUFNLENBQWdCO0tBRW5EO0lBRU0sT0FBTyxHQUFBO0FBQ1YsUUFBQSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBRXpCLFFBQUEsSUFBSUMsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQzthQUNoQyxPQUFPLENBQUMsOERBQThELENBQUM7QUFDdkUsYUFBQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU07YUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7YUFDbkQsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ2xHLENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsMkJBQTJCLENBQUM7YUFDcEMsT0FBTyxDQUFDLGlEQUFpRCxDQUFDO0FBQzFELGFBQUEsU0FBUyxDQUFDLE1BQU0sSUFDYixNQUFNO2FBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDO2FBQy9DLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUM5RixDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLGtDQUFrQyxDQUFDO2FBQzNDLE9BQU8sQ0FDSixzR0FBc0csQ0FDekc7QUFDQSxhQUFBLFNBQVMsQ0FBQyxNQUFNLElBQ2IsTUFBTTthQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQzthQUNyRCxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDcEcsQ0FBQztBQUVOLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxrREFBa0QsQ0FBQzthQUMzRCxPQUFPLENBQUMsK0ZBQStGLENBQUM7QUFDeEcsYUFBQSxTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU07YUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUM7YUFDdkQsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RHLENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMsa0RBQWtELENBQUM7YUFDM0QsT0FBTyxDQUFDLCtGQUErRixDQUFDO2FBQ3hHLFNBQVMsQ0FBQyxNQUFNLElBQ2IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUMvRixZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxxQ0FBcUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ25GLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ3hDLENBQUMsQ0FDTCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7QUFFakUsUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLG9CQUFvQixDQUFDO2FBQzdCLE9BQU8sQ0FDSixzR0FBc0csQ0FDekc7QUFDQSxhQUFBLE9BQU8sQ0FBQyxJQUFJLElBQ1QsSUFBSTthQUNDLGNBQWMsQ0FBQyxZQUFZLENBQUM7YUFDNUIsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0FBQ2hELGFBQUEsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3BCLFlBQUEsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsT0FBTztBQUM5QixZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsb0NBQW9DLEVBQUUsQ0FBQztBQUNuRCxZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQy9ELFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1NBQ3BELENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLHFCQUFxQixDQUFDO2FBQzlCLE9BQU8sQ0FBQyxtRkFBbUYsQ0FBQztBQUM1RixhQUFBLE9BQU8sQ0FBQyxJQUFJLElBQ1QsSUFBSTthQUNDLGNBQWMsQ0FBQyxHQUFHLENBQUM7YUFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO0FBQ2hELGFBQUEsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3BCLFlBQUEsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsT0FBTztBQUU5QixZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ2xFLENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO2FBQ3pDLE9BQU8sQ0FBQyxpR0FBaUcsQ0FBQztBQUMxRyxhQUFBLE9BQU8sQ0FBQyxJQUFJLElBQ1QsSUFBSTthQUNDLGNBQWMsQ0FBQyxJQUFJLENBQUM7YUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDO0FBQ2xELGFBQUEsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3BCLFlBQUEsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQUUsT0FBTztBQUU5QixZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BFLENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLDJCQUEyQixDQUFDO2FBQ3BDLE9BQU8sQ0FBQyw0RUFBNEUsQ0FBQztBQUNyRixhQUFBLFNBQVMsQ0FBQyxNQUFNLElBQ2IsTUFBTTthQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQzthQUN4RCxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLHlCQUF5QixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDdkcsQ0FBQztBQUVOLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRTNELFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQzthQUMvQixPQUFPLENBQUMsaUdBQWlHLENBQUM7YUFDMUcsU0FBUyxDQUFDLE1BQU0sSUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUN6RSxZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM3RCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDTCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLHNCQUFzQixDQUFDO2FBQy9CLE9BQU8sQ0FBQyx1RUFBdUUsQ0FBQzthQUNoRixTQUFTLENBQUMsTUFBTSxJQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDM0UsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMvRCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDTCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDO2FBQ3pCLE9BQU8sQ0FBQyxrR0FBa0csQ0FBQztBQUMzRyxhQUFBLE9BQU8sQ0FBQyxJQUFJLElBQ1QsSUFBSTthQUNDLGNBQWMsQ0FBQyxHQUFHLENBQUM7YUFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUMzQyxhQUFBLFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBRztBQUNwQixZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMxRCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLDJCQUEyQixDQUFDO0FBQ3BDLGFBQUEsT0FBTyxDQUNKLDBHQUEwRztBQUN0RyxZQUFBLGdHQUFnRyxDQUN2RzthQUNBLFNBQVMsQ0FBQyxNQUFNLElBQ2IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDeEUsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDNUQsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUM3QixDQUFDLENBQ0wsQ0FBQztBQUVOLFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQzthQUMzQixPQUFPLENBQUMsc0ZBQXNGLENBQUM7QUFDL0YsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUk7YUFDQyxjQUFjLENBQUMsS0FBSyxDQUFDO2FBQ3JCLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0FBQ25ELGFBQUEsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3BCLFlBQUEsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFBRSxPQUFPO0FBQzFCLFlBQUEsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNyQyxZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNqRSxDQUFDLENBQ1QsQ0FBQztRQUVOLElBQUksT0FBTyxHQUFHLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN0QyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3RCLGFBQUEsT0FBTyxDQUNKLDBEQUEwRDtZQUN0RCxjQUFjO1lBQ2QsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQ25HO0FBQ0EsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUk7QUFDQyxhQUFBLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQzthQUN4RCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7QUFDaEQsYUFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7WUFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FDWCwwREFBMEQ7Z0JBQ3RELGNBQWM7QUFDZCxnQkFBQSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQ2xFLENBQUM7QUFDRixZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRS9ELFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0IsQ0FBQyxDQUNULENBQUM7UUFFTixJQUFJLFFBQVEsR0FBRyxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDdkMsT0FBTyxDQUFDLG9CQUFvQixDQUFDO0FBQzdCLGFBQUEsT0FBTyxDQUNKLG1FQUFtRTtZQUMvRCxjQUFjO1lBQ2QsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQ3ZHO0FBQ0EsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUNULElBQUk7QUFDQyxhQUFBLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQzthQUM1RCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7QUFDcEQsYUFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7WUFDcEIsUUFBUSxDQUFDLE9BQU8sQ0FDWixtRUFBbUU7Z0JBQy9ELGNBQWM7QUFDZCxnQkFBQSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQ2xFLENBQUM7QUFDRixZQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBRW5FLFlBQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0IsQ0FBQyxDQUNULENBQUM7QUFFTixRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUU3RCxRQUFBLElBQUlBLGdCQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN4QixPQUFPLENBQUMscUJBQXFCLENBQUM7YUFDOUIsT0FBTyxDQUNKLHFIQUFxSCxDQUN4SDtBQUNBLGFBQUEsT0FBTyxDQUFDLElBQUksSUFDVCxJQUFJO2FBQ0MsY0FBYyxDQUFDLE1BQU0sQ0FBQzthQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7QUFDaEQsYUFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDcEIsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMvRCxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLHFCQUFxQixDQUFDO0FBQzlCLGFBQUEsT0FBTyxDQUNKLHlIQUF5SDtBQUNySCxZQUFBLHNDQUFzQyxDQUM3QztBQUNBLGFBQUEsT0FBTyxDQUFDLElBQUksSUFDVCxJQUFJO2FBQ0MsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7QUFDbkQsYUFBQSxRQUFRLENBQUMsT0FBTSxLQUFLLEtBQUc7QUFDcEIsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNsRSxZQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FDVCxDQUFDO0FBRU4sUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFNUQsSUFBSSxnQ0FBZ0MsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQztBQUNuRixRQUFBLElBQUksc0NBQXNDLEdBQ3RDLGdDQUFnQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUM7QUFFOUYsUUFBQSxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDeEIsT0FBTyxDQUFDLG9DQUFvQyxDQUFDO0FBQzdDLGFBQUEsT0FBTyxDQUNKLGNBQWMsQ0FBQyxFQUFFLElBQUc7QUFDaEIsWUFBQSxFQUFFLENBQUMsVUFBVSxDQUNULDBIQUEwSCxDQUM3SCxDQUFDO0FBQ0YsWUFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLFlBQUEsRUFBRSxDQUFDLFVBQVUsQ0FDVCwwRkFBMEYsQ0FDN0YsQ0FBQztBQUNOLFNBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxDQUFDLE1BQU0sSUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ2hGLFlBQUEsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDcEUsZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNsQixDQUFDLENBQ0wsQ0FBQztRQUVOLElBQUksa0JBQWtCLEdBQUcsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ2pELE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQztBQUM3QyxhQUFBLFdBQVcsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFDcEQsUUFBQSxJQUFJLGdDQUFnQztZQUNoQyxrQkFBa0I7QUFDYixpQkFBQSxPQUFPLENBQ0osY0FBYyxDQUFDLEVBQUUsSUFBRztBQUNoQixnQkFBQSxFQUFFLENBQUMsVUFBVSxDQUNULHVIQUF1SCxDQUMxSCxDQUFDO0FBQ0YsZ0JBQUEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixnQkFBQSxFQUFFLENBQUMsVUFBVSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFDckQsZ0JBQUEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixnQkFBQSxFQUFFLENBQUMsVUFBVSxDQUNULGlIQUFpSCxDQUNwSCxDQUFDO0FBQ0YsZ0JBQUEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixnQkFBQSxFQUFFLENBQUMsVUFBVSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFDMUYsYUFBQyxDQUFDLENBQ0w7aUJBQ0EsU0FBUyxDQUFDLE1BQU0sSUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3pGLGdCQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLGdCQUFBLHNDQUFzQyxHQUFHLGdDQUFnQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNwRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDbEIsQ0FBQyxDQUNMLENBQUM7O0FBQ0wsWUFBQSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsc0VBQXNFLENBQUMsQ0FBQztRQUV4RyxJQUFJLGFBQWEsR0FBRyxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDNUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ2hDLGFBQUEsV0FBVyxDQUFDLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUMxRCxRQUFBLElBQUksc0NBQXNDO1lBQ3RDLGFBQWE7QUFDUixpQkFBQSxPQUFPLENBQ0osY0FBYyxDQUFDLEVBQUUsSUFBRztBQUNoQixnQkFBQSxFQUFFLENBQUMsVUFBVSxDQUNULDRHQUE0RyxDQUMvRyxDQUFDO0FBQ0YsZ0JBQUEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixnQkFBQSxFQUFFLENBQUMsVUFBVSxDQUNULDJIQUEySCxDQUM5SCxDQUFDO0FBQ04sYUFBQyxDQUFDLENBQ0w7aUJBQ0EsT0FBTyxDQUFDLElBQUksSUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQzFFLGdCQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzFFLENBQUMsQ0FDTCxDQUFDOztBQUVOLFlBQUEsYUFBYSxDQUFDLE9BQU8sQ0FDakIsMkhBQTJILENBQzlILENBQUM7UUFFTixJQUFJLFlBQVksR0FBRyxJQUFJQSxnQkFBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDM0MsT0FBTyxDQUFDLHdCQUF3QixDQUFDO0FBQ2pDLGFBQUEsV0FBVyxDQUFDLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUMxRCxRQUFBLElBQUksc0NBQXNDLEVBQUU7QUFDeEMsWUFBQSxJQUFJLGFBQWEsR0FBRztnQkFDaEIsK0hBQStIO2dCQUMvSCwySEFBMkg7Z0JBQzNILGFBQWE7YUFDaEIsQ0FBQztZQUNGLFlBQVk7QUFDUCxpQkFBQSxPQUFPLENBQ0osY0FBYyxDQUFDLEVBQUUsSUFBRztnQkFDaEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxnQkFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLGdCQUFBLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsZ0JBQUEsRUFBRSxDQUFDLFVBQVUsQ0FDVCxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ1osb0JBQUEsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTt3QkFDbkUsTUFBTSxFQUFFLGFBQWEsRUFBRTtBQUMxQixxQkFBQSxDQUFDLENBQ1QsQ0FBQztBQUNOLGFBQUMsQ0FBQyxDQUNMO0FBQ0EsaUJBQUEsT0FBTyxDQUFDLElBQUksSUFDVCxJQUFJO0FBQ0MsaUJBQUEsY0FBYyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDO2lCQUN6RCxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUM7QUFDdkQsaUJBQUEsUUFBUSxDQUFDLE9BQU0sS0FBSyxLQUFHO0FBQ3BCLGdCQUFBLFlBQVksQ0FBQyxPQUFPLENBQ2hCLGNBQWMsQ0FBQyxFQUFFLElBQUc7b0JBQ2hCLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsb0JBQUEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxvQkFBQSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLG9CQUFBLEVBQUUsQ0FBQyxVQUFVLENBQ1QsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNaLHdCQUFBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FDekUsQ0FBQztpQkFDTCxDQUFDLENBQ0wsQ0FBQztBQUNGLGdCQUFBLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLGdCQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzdCLENBQUMsQ0FDVCxDQUFDO0FBQ1QsU0FBQTtBQUFNLGFBQUE7QUFDSCxZQUFBLFlBQVksQ0FBQyxPQUFPLENBQ2hCLDJIQUEySCxDQUM5SCxDQUFDO0FBQ0wsU0FBQTtBQUNELFFBQUEsSUFBSUEsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3hCLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQzs7YUFFeEMsT0FBTyxDQUFDLDJGQUEyRixDQUFDO0FBQ3BHLGFBQUEsU0FBUyxDQUFDLE1BQU0sSUFDYixNQUFNO2FBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDO2FBQ3pELFFBQVEsQ0FBQyxPQUFNLEtBQUssS0FBSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUN4RyxDQUFDO0tBQ1Q7QUFDSjs7OzsifQ== diff --git a/.obsidian/plugins/dataview/manifest.json b/.obsidian/plugins/dataview/manifest.json index c902d02..95b8152 100644 --- a/.obsidian/plugins/dataview/manifest.json +++ b/.obsidian/plugins/dataview/manifest.json @@ -1,10 +1,11 @@ { "id": "dataview", "name": "Dataview", - "version": "0.5.59", + "version": "0.5.67", "minAppVersion": "0.13.11", "description": "Complex data views for the data-obsessed.", "author": "Michael Brenan ", "authorUrl": "https://github.com/blacksmithgu", + "helpUrl": "https://blacksmithgu.github.io/obsidian-dataview/", "isDesktopOnly": false } diff --git a/.obsidian/plugins/local-backup/main.js b/.obsidian/plugins/local-backup/main.js index 60aec67..1ce26e9 100644 --- a/.obsidian/plugins/local-backup/main.js +++ b/.obsidian/plugins/local-backup/main.js @@ -44,11 +44,8 @@ var require_universalify = __commonJS({ fn.apply(this, args); else { return new Promise((resolve, reject) => { - fn.call( - this, - ...args, - (err, res) => err != null ? reject(err) : resolve(res) - ); + args.push((err, res) => err != null ? reject(err) : resolve(res)); + fn.apply(this, args); }); } }, "name", { value: fn.name }); @@ -58,8 +55,10 @@ var require_universalify = __commonJS({ const cb = args[args.length - 1]; if (typeof cb !== "function") return fn.apply(this, args); - else - fn.apply(this, args.slice(0, -1)).then((r) => cb(null, r), cb); + else { + args.pop(); + fn.apply(this, args).then((r) => cb(null, r), cb); + } }, "name", { value: fn.name }); }; } @@ -1075,18 +1074,23 @@ var require_path_exists = __commonJS({ var require_utimes = __commonJS({ "node_modules/fs-extra/lib/util/utimes.js"(exports, module2) { "use strict"; - var fs2 = require_graceful_fs(); - function utimesMillis(path2, atime, mtime, callback) { - fs2.open(path2, "r+", (err, fd) => { - if (err) - return callback(err); - fs2.futimes(fd, atime, mtime, (futimesErr) => { - fs2.close(fd, (closeErr) => { - if (callback) - callback(futimesErr || closeErr); - }); - }); - }); + var fs2 = require_fs(); + var u = require_universalify().fromPromise; + async function utimesMillis(path2, atime, mtime) { + const fd = await fs2.open(path2, "r+"); + let closeErr = null; + try { + await fs2.futimes(fd, atime, mtime); + } finally { + try { + await fs2.close(fd); + } catch (e) { + closeErr = e; + } + } + if (closeErr) { + throw closeErr; + } } function utimesMillisSync(path2, atime, mtime) { const fd = fs2.openSync(path2, "r+"); @@ -1094,7 +1098,7 @@ var require_utimes = __commonJS({ return fs2.closeSync(fd); } module2.exports = { - utimesMillis, + utimesMillis: u(utimesMillis), utimesMillisSync }; } @@ -1106,7 +1110,7 @@ var require_stat = __commonJS({ "use strict"; var fs2 = require_fs(); var path2 = require("path"); - var util = require("util"); + var u = require_universalify().fromPromise; function getStats(src, dest, opts) { const statFunc = opts.dereference ? (file) => fs2.stat(file, { bigint: true }) : (file) => fs2.lstat(file, { bigint: true }); return Promise.all([ @@ -1131,32 +1135,28 @@ var require_stat = __commonJS({ } return { srcStat, destStat }; } - function checkPaths(src, dest, funcName, opts, cb) { - util.callbackify(getStats)(src, dest, opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, destStat } = stats; - if (destStat) { - if (areIdentical(srcStat, destStat)) { - const srcBaseName = path2.basename(src); - const destBaseName = path2.basename(dest); - if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { - return cb(null, { srcStat, destStat, isChangingCase: true }); - } - return cb(new Error("Source and destination must not be the same.")); - } - if (srcStat.isDirectory() && !destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)); - } - if (!srcStat.isDirectory() && destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)); + async function checkPaths(src, dest, funcName, opts) { + const { srcStat, destStat } = await getStats(src, dest, opts); + if (destStat) { + if (areIdentical(srcStat, destStat)) { + const srcBaseName = path2.basename(src); + const destBaseName = path2.basename(dest); + if (funcName === "move" && srcBaseName !== destBaseName && srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { + return { srcStat, destStat, isChangingCase: true }; } + throw new Error("Source and destination must not be the same."); } - if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { - return cb(new Error(errMsg(src, dest, funcName))); + if (srcStat.isDirectory() && !destStat.isDirectory()) { + throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`); } - return cb(null, { srcStat, destStat }); - }); + if (!srcStat.isDirectory() && destStat.isDirectory()) { + throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`); + } + } + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + throw new Error(errMsg(src, dest, funcName)); + } + return { srcStat, destStat }; } function checkPathsSync(src, dest, funcName, opts) { const { srcStat, destStat } = getStatsSync(src, dest, opts); @@ -1181,22 +1181,23 @@ var require_stat = __commonJS({ } return { srcStat, destStat }; } - function checkParentPaths(src, srcStat, dest, funcName, cb) { + async function checkParentPaths(src, srcStat, dest, funcName) { const srcParent = path2.resolve(path2.dirname(src)); const destParent = path2.resolve(path2.dirname(dest)); if (destParent === srcParent || destParent === path2.parse(destParent).root) - return cb(); - fs2.stat(destParent, { bigint: true }, (err, destStat) => { - if (err) { - if (err.code === "ENOENT") - return cb(); - return cb(err); - } - if (areIdentical(srcStat, destStat)) { - return cb(new Error(errMsg(src, dest, funcName))); - } - return checkParentPaths(src, srcStat, destParent, funcName, cb); - }); + return; + let destStat; + try { + destStat = await fs2.stat(destParent, { bigint: true }); + } catch (err) { + if (err.code === "ENOENT") + return; + throw err; + } + if (areIdentical(srcStat, destStat)) { + throw new Error(errMsg(src, dest, funcName)); + } + return checkParentPaths(src, srcStat, destParent, funcName); } function checkParentPathsSync(src, srcStat, dest, funcName) { const srcParent = path2.resolve(path2.dirname(src)); @@ -1222,16 +1223,19 @@ var require_stat = __commonJS({ function isSrcSubdir(src, dest) { const srcArr = path2.resolve(src).split(path2.sep).filter((i) => i); const destArr = path2.resolve(dest).split(path2.sep).filter((i) => i); - return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true); + return srcArr.every((cur, i) => destArr[i] === cur); } function errMsg(src, dest, funcName) { return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`; } module2.exports = { - checkPaths, + // checkPaths + checkPaths: u(checkPaths), checkPathsSync, - checkParentPaths, + // checkParent + checkParentPaths: u(checkParentPaths), checkParentPathsSync, + // Misc isSrcSubdir, areIdentical }; @@ -1242,22 +1246,16 @@ var require_stat = __commonJS({ var require_copy = __commonJS({ "node_modules/fs-extra/lib/copy/copy.js"(exports, module2) { "use strict"; - var fs2 = require_graceful_fs(); + var fs2 = require_fs(); var path2 = require("path"); - var mkdirs = require_mkdirs().mkdirs; - var pathExists = require_path_exists().pathExists; - var utimesMillis = require_utimes().utimesMillis; + var { mkdirs } = require_mkdirs(); + var { pathExists } = require_path_exists(); + var { utimesMillis } = require_utimes(); var stat = require_stat(); - function copy(src, dest, opts, cb) { - if (typeof opts === "function" && !cb) { - cb = opts; - opts = {}; - } else if (typeof opts === "function") { + async function copy(src, dest, opts = {}) { + if (typeof opts === "function") { opts = { filter: opts }; } - cb = cb || function() { - }; - opts = opts || {}; opts.clobber = "clobber" in opts ? !!opts.clobber : true; opts.overwrite = "overwrite" in opts ? !!opts.overwrite : opts.clobber; if (opts.preserveTimestamps && process.arch === "ia32") { @@ -1267,204 +1265,111 @@ var require_copy = __commonJS({ "fs-extra-WARN0001" ); } - stat.checkPaths(src, dest, "copy", opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, destStat } = stats; - stat.checkParentPaths(src, srcStat, dest, "copy", (err2) => { - if (err2) - return cb(err2); - runFilter(src, dest, opts, (err3, include) => { - if (err3) - return cb(err3); - if (!include) - return cb(); - checkParentDir(destStat, src, dest, opts, cb); - }); - }); - }); - } - function checkParentDir(destStat, src, dest, opts, cb) { + const { srcStat, destStat } = await stat.checkPaths(src, dest, "copy", opts); + await stat.checkParentPaths(src, srcStat, dest, "copy"); + const include = await runFilter(src, dest, opts); + if (!include) + return; const destParent = path2.dirname(dest); - pathExists(destParent, (err, dirExists) => { - if (err) - return cb(err); - if (dirExists) - return getStats(destStat, src, dest, opts, cb); - mkdirs(destParent, (err2) => { - if (err2) - return cb(err2); - return getStats(destStat, src, dest, opts, cb); - }); - }); - } - function runFilter(src, dest, opts, cb) { - if (!opts.filter) - return cb(null, true); - Promise.resolve(opts.filter(src, dest)).then((include) => cb(null, include), (error) => cb(error)); - } - function getStats(destStat, src, dest, opts, cb) { - const stat2 = opts.dereference ? fs2.stat : fs2.lstat; - stat2(src, (err, srcStat) => { - if (err) - return cb(err); - if (srcStat.isDirectory()) - return onDir(srcStat, destStat, src, dest, opts, cb); - else if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) - return onFile(srcStat, destStat, src, dest, opts, cb); - else if (srcStat.isSymbolicLink()) - return onLink(destStat, src, dest, opts, cb); - else if (srcStat.isSocket()) - return cb(new Error(`Cannot copy a socket file: ${src}`)); - else if (srcStat.isFIFO()) - return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)); - return cb(new Error(`Unknown file: ${src}`)); - }); - } - function onFile(srcStat, destStat, src, dest, opts, cb) { - if (!destStat) - return copyFile(srcStat, src, dest, opts, cb); - return mayCopyFile(srcStat, src, dest, opts, cb); - } - function mayCopyFile(srcStat, src, dest, opts, cb) { - if (opts.overwrite) { - fs2.unlink(dest, (err) => { - if (err) - return cb(err); - return copyFile(srcStat, src, dest, opts, cb); - }); - } else if (opts.errorOnExist) { - return cb(new Error(`'${dest}' already exists`)); - } else - return cb(); - } - function copyFile(srcStat, src, dest, opts, cb) { - fs2.copyFile(src, dest, (err) => { - if (err) - return cb(err); - if (opts.preserveTimestamps) - return handleTimestampsAndMode(srcStat.mode, src, dest, cb); - return setDestMode(dest, srcStat.mode, cb); - }); - } - function handleTimestampsAndMode(srcMode, src, dest, cb) { - if (fileIsNotWritable(srcMode)) { - return makeFileWritable(dest, srcMode, (err) => { - if (err) - return cb(err); - return setDestTimestampsAndMode(srcMode, src, dest, cb); - }); + const dirExists = await pathExists(destParent); + if (!dirExists) { + await mkdirs(destParent); } - return setDestTimestampsAndMode(srcMode, src, dest, cb); + await getStatsAndPerformCopy(destStat, src, dest, opts); + } + async function runFilter(src, dest, opts) { + if (!opts.filter) + return true; + return opts.filter(src, dest); + } + async function getStatsAndPerformCopy(destStat, src, dest, opts) { + const statFn = opts.dereference ? fs2.stat : fs2.lstat; + const srcStat = await statFn(src); + if (srcStat.isDirectory()) + return onDir(srcStat, destStat, src, dest, opts); + if (srcStat.isFile() || srcStat.isCharacterDevice() || srcStat.isBlockDevice()) + return onFile(srcStat, destStat, src, dest, opts); + if (srcStat.isSymbolicLink()) + return onLink(destStat, src, dest, opts); + if (srcStat.isSocket()) + throw new Error(`Cannot copy a socket file: ${src}`); + if (srcStat.isFIFO()) + throw new Error(`Cannot copy a FIFO pipe: ${src}`); + throw new Error(`Unknown file: ${src}`); + } + async function onFile(srcStat, destStat, src, dest, opts) { + if (!destStat) + return copyFile(srcStat, src, dest, opts); + if (opts.overwrite) { + await fs2.unlink(dest); + return copyFile(srcStat, src, dest, opts); + } + if (opts.errorOnExist) { + throw new Error(`'${dest}' already exists`); + } + } + async function copyFile(srcStat, src, dest, opts) { + await fs2.copyFile(src, dest); + if (opts.preserveTimestamps) { + if (fileIsNotWritable(srcStat.mode)) { + await makeFileWritable(dest, srcStat.mode); + } + const updatedSrcStat = await fs2.stat(src); + await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime); + } + return fs2.chmod(dest, srcStat.mode); } function fileIsNotWritable(srcMode) { return (srcMode & 128) === 0; } - function makeFileWritable(dest, srcMode, cb) { - return setDestMode(dest, srcMode | 128, cb); + function makeFileWritable(dest, srcMode) { + return fs2.chmod(dest, srcMode | 128); } - function setDestTimestampsAndMode(srcMode, src, dest, cb) { - setDestTimestamps(src, dest, (err) => { - if (err) - return cb(err); - return setDestMode(dest, srcMode, cb); - }); - } - function setDestMode(dest, srcMode, cb) { - return fs2.chmod(dest, srcMode, cb); - } - function setDestTimestamps(src, dest, cb) { - fs2.stat(src, (err, updatedSrcStat) => { - if (err) - return cb(err); - return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb); - }); - } - function onDir(srcStat, destStat, src, dest, opts, cb) { - if (!destStat) - return mkDirAndCopy(srcStat.mode, src, dest, opts, cb); - return copyDir(src, dest, opts, cb); - } - function mkDirAndCopy(srcMode, src, dest, opts, cb) { - fs2.mkdir(dest, (err) => { - if (err) - return cb(err); - copyDir(src, dest, opts, (err2) => { - if (err2) - return cb(err2); - return setDestMode(dest, srcMode, cb); - }); - }); - } - function copyDir(src, dest, opts, cb) { - fs2.readdir(src, (err, items) => { - if (err) - return cb(err); - return copyDirItems(items, src, dest, opts, cb); - }); - } - function copyDirItems(items, src, dest, opts, cb) { - const item = items.pop(); - if (!item) - return cb(); - return copyDirItem(items, item, src, dest, opts, cb); - } - function copyDirItem(items, item, src, dest, opts, cb) { - const srcItem = path2.join(src, item); - const destItem = path2.join(dest, item); - runFilter(srcItem, destItem, opts, (err, include) => { - if (err) - return cb(err); + async function onDir(srcStat, destStat, src, dest, opts) { + if (!destStat) { + await fs2.mkdir(dest); + } + const items = await fs2.readdir(src); + await Promise.all(items.map(async (item) => { + const srcItem = path2.join(src, item); + const destItem = path2.join(dest, item); + const include = await runFilter(srcItem, destItem, opts); if (!include) - return copyDirItems(items, src, dest, opts, cb); - stat.checkPaths(srcItem, destItem, "copy", opts, (err2, stats) => { - if (err2) - return cb(err2); - const { destStat } = stats; - getStats(destStat, srcItem, destItem, opts, (err3) => { - if (err3) - return cb(err3); - return copyDirItems(items, src, dest, opts, cb); - }); - }); - }); + return; + const { destStat: destStat2 } = await stat.checkPaths(srcItem, destItem, "copy", opts); + return getStatsAndPerformCopy(destStat2, srcItem, destItem, opts); + })); + if (!destStat) { + await fs2.chmod(dest, srcStat.mode); + } } - function onLink(destStat, src, dest, opts, cb) { - fs2.readlink(src, (err, resolvedSrc) => { - if (err) - return cb(err); - if (opts.dereference) { - resolvedSrc = path2.resolve(process.cwd(), resolvedSrc); - } - if (!destStat) { - return fs2.symlink(resolvedSrc, dest, cb); - } else { - fs2.readlink(dest, (err2, resolvedDest) => { - if (err2) { - if (err2.code === "EINVAL" || err2.code === "UNKNOWN") - return fs2.symlink(resolvedSrc, dest, cb); - return cb(err2); - } - if (opts.dereference) { - resolvedDest = path2.resolve(process.cwd(), resolvedDest); - } - if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { - return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)); - } - if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { - return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)); - } - return copyLink(resolvedSrc, dest, cb); - }); - } - }); - } - function copyLink(resolvedSrc, dest, cb) { - fs2.unlink(dest, (err) => { - if (err) - return cb(err); - return fs2.symlink(resolvedSrc, dest, cb); - }); + async function onLink(destStat, src, dest, opts) { + let resolvedSrc = await fs2.readlink(src); + if (opts.dereference) { + resolvedSrc = path2.resolve(process.cwd(), resolvedSrc); + } + if (!destStat) { + return fs2.symlink(resolvedSrc, dest); + } + let resolvedDest = null; + try { + resolvedDest = await fs2.readlink(dest); + } catch (e) { + if (e.code === "EINVAL" || e.code === "UNKNOWN") + return fs2.symlink(resolvedSrc, dest); + throw e; + } + if (opts.dereference) { + resolvedDest = path2.resolve(process.cwd(), resolvedDest); + } + if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { + throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`); + } + if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) { + throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`); + } + await fs2.unlink(dest); + return fs2.symlink(resolvedSrc, dest); } module2.exports = copy; } @@ -1615,7 +1520,7 @@ var require_copy_sync = __commonJS({ var require_copy2 = __commonJS({ "node_modules/fs-extra/lib/copy/index.js"(exports, module2) { "use strict"; - var u = require_universalify().fromCallback; + var u = require_universalify().fromPromise; module2.exports = { copy: u(require_copy()), copySync: require_copy_sync() @@ -1685,43 +1590,36 @@ var require_empty = __commonJS({ var require_file = __commonJS({ "node_modules/fs-extra/lib/ensure/file.js"(exports, module2) { "use strict"; - var u = require_universalify().fromCallback; + var u = require_universalify().fromPromise; var path2 = require("path"); - var fs2 = require_graceful_fs(); + var fs2 = require_fs(); var mkdir = require_mkdirs(); - function createFile(file, callback) { - function makeFile() { - fs2.writeFile(file, "", (err) => { - if (err) - return callback(err); - callback(); - }); + async function createFile(file) { + let stats; + try { + stats = await fs2.stat(file); + } catch (e) { + } + if (stats && stats.isFile()) + return; + const dir = path2.dirname(file); + let dirStats = null; + try { + dirStats = await fs2.stat(dir); + } catch (err) { + if (err.code === "ENOENT") { + await mkdir.mkdirs(dir); + await fs2.writeFile(file, ""); + return; + } else { + throw err; + } + } + if (dirStats.isDirectory()) { + await fs2.writeFile(file, ""); + } else { + await fs2.readdir(dir); } - fs2.stat(file, (err, stats) => { - if (!err && stats.isFile()) - return callback(); - const dir = path2.dirname(file); - fs2.stat(dir, (err2, stats2) => { - if (err2) { - if (err2.code === "ENOENT") { - return mkdir.mkdirs(dir, (err3) => { - if (err3) - return callback(err3); - makeFile(); - }); - } - return callback(err2); - } - if (stats2.isDirectory()) - makeFile(); - else { - fs2.readdir(dir, (err3) => { - if (err3) - return callback(err3); - }); - } - }); - }); } function createFileSync(file) { let stats; @@ -1755,42 +1653,33 @@ var require_file = __commonJS({ var require_link = __commonJS({ "node_modules/fs-extra/lib/ensure/link.js"(exports, module2) { "use strict"; - var u = require_universalify().fromCallback; + var u = require_universalify().fromPromise; var path2 = require("path"); - var fs2 = require_graceful_fs(); + var fs2 = require_fs(); var mkdir = require_mkdirs(); - var pathExists = require_path_exists().pathExists; + var { pathExists } = require_path_exists(); var { areIdentical } = require_stat(); - function createLink(srcpath, dstpath, callback) { - function makeLink(srcpath2, dstpath2) { - fs2.link(srcpath2, dstpath2, (err) => { - if (err) - return callback(err); - callback(null); - }); + async function createLink(srcpath, dstpath) { + let dstStat; + try { + dstStat = await fs2.lstat(dstpath); + } catch (e) { } - fs2.lstat(dstpath, (_, dstStat) => { - fs2.lstat(srcpath, (err, srcStat) => { - if (err) { - err.message = err.message.replace("lstat", "ensureLink"); - return callback(err); - } - if (dstStat && areIdentical(srcStat, dstStat)) - return callback(null); - const dir = path2.dirname(dstpath); - pathExists(dir, (err2, dirExists) => { - if (err2) - return callback(err2); - if (dirExists) - return makeLink(srcpath, dstpath); - mkdir.mkdirs(dir, (err3) => { - if (err3) - return callback(err3); - makeLink(srcpath, dstpath); - }); - }); - }); - }); + let srcStat; + try { + srcStat = await fs2.lstat(srcpath); + } catch (err) { + err.message = err.message.replace("lstat", "ensureLink"); + throw err; + } + if (dstStat && areIdentical(srcStat, dstStat)) + return; + const dir = path2.dirname(dstpath); + const dirExists = await pathExists(dir); + if (!dirExists) { + await mkdir.mkdirs(dir); + } + await fs2.link(srcpath, dstpath); } function createLinkSync(srcpath, dstpath) { let dstStat; @@ -1825,78 +1714,71 @@ var require_symlink_paths = __commonJS({ "node_modules/fs-extra/lib/ensure/symlink-paths.js"(exports, module2) { "use strict"; var path2 = require("path"); - var fs2 = require_graceful_fs(); - var pathExists = require_path_exists().pathExists; - function symlinkPaths(srcpath, dstpath, callback) { + var fs2 = require_fs(); + var { pathExists } = require_path_exists(); + var u = require_universalify().fromPromise; + async function symlinkPaths(srcpath, dstpath) { if (path2.isAbsolute(srcpath)) { - return fs2.lstat(srcpath, (err) => { - if (err) { - err.message = err.message.replace("lstat", "ensureSymlink"); - return callback(err); - } - return callback(null, { - toCwd: srcpath, - toDst: srcpath - }); - }); - } else { - const dstdir = path2.dirname(dstpath); - const relativeToDst = path2.join(dstdir, srcpath); - return pathExists(relativeToDst, (err, exists) => { - if (err) - return callback(err); - if (exists) { - return callback(null, { - toCwd: relativeToDst, - toDst: srcpath - }); - } else { - return fs2.lstat(srcpath, (err2) => { - if (err2) { - err2.message = err2.message.replace("lstat", "ensureSymlink"); - return callback(err2); - } - return callback(null, { - toCwd: srcpath, - toDst: path2.relative(dstdir, srcpath) - }); - }); - } - }); + try { + await fs2.lstat(srcpath); + } catch (err) { + err.message = err.message.replace("lstat", "ensureSymlink"); + throw err; + } + return { + toCwd: srcpath, + toDst: srcpath + }; } + const dstdir = path2.dirname(dstpath); + const relativeToDst = path2.join(dstdir, srcpath); + const exists = await pathExists(relativeToDst); + if (exists) { + return { + toCwd: relativeToDst, + toDst: srcpath + }; + } + try { + await fs2.lstat(srcpath); + } catch (err) { + err.message = err.message.replace("lstat", "ensureSymlink"); + throw err; + } + return { + toCwd: srcpath, + toDst: path2.relative(dstdir, srcpath) + }; } function symlinkPathsSync(srcpath, dstpath) { - let exists; if (path2.isAbsolute(srcpath)) { - exists = fs2.existsSync(srcpath); - if (!exists) + const exists2 = fs2.existsSync(srcpath); + if (!exists2) throw new Error("absolute srcpath does not exist"); return { toCwd: srcpath, toDst: srcpath }; - } else { - const dstdir = path2.dirname(dstpath); - const relativeToDst = path2.join(dstdir, srcpath); - exists = fs2.existsSync(relativeToDst); - if (exists) { - return { - toCwd: relativeToDst, - toDst: srcpath - }; - } else { - exists = fs2.existsSync(srcpath); - if (!exists) - throw new Error("relative srcpath does not exist"); - return { - toCwd: srcpath, - toDst: path2.relative(dstdir, srcpath) - }; - } } + const dstdir = path2.dirname(dstpath); + const relativeToDst = path2.join(dstdir, srcpath); + const exists = fs2.existsSync(relativeToDst); + if (exists) { + return { + toCwd: relativeToDst, + toDst: srcpath + }; + } + const srcExists = fs2.existsSync(srcpath); + if (!srcExists) + throw new Error("relative srcpath does not exist"); + return { + toCwd: srcpath, + toDst: path2.relative(dstdir, srcpath) + }; } module2.exports = { - symlinkPaths, + symlinkPaths: u(symlinkPaths), symlinkPathsSync }; } @@ -1906,23 +1788,23 @@ var require_symlink_paths = __commonJS({ var require_symlink_type = __commonJS({ "node_modules/fs-extra/lib/ensure/symlink-type.js"(exports, module2) { "use strict"; - var fs2 = require_graceful_fs(); - function symlinkType(srcpath, type, callback) { - callback = typeof type === "function" ? type : callback; - type = typeof type === "function" ? false : type; - if (type) - return callback(null, type); - fs2.lstat(srcpath, (err, stats) => { - if (err) - return callback(null, "file"); - type = stats && stats.isDirectory() ? "dir" : "file"; - callback(null, type); - }); - } - function symlinkTypeSync(srcpath, type) { - let stats; + var fs2 = require_fs(); + var u = require_universalify().fromPromise; + async function symlinkType(srcpath, type) { if (type) return type; + let stats; + try { + stats = await fs2.lstat(srcpath); + } catch (e) { + return "file"; + } + return stats && stats.isDirectory() ? "dir" : "file"; + } + function symlinkTypeSync(srcpath, type) { + if (type) + return type; + let stats; try { stats = fs2.lstatSync(srcpath); } catch (e) { @@ -1931,7 +1813,7 @@ var require_symlink_type = __commonJS({ return stats && stats.isDirectory() ? "dir" : "file"; } module2.exports = { - symlinkType, + symlinkType: u(symlinkType), symlinkTypeSync }; } @@ -1941,59 +1823,36 @@ var require_symlink_type = __commonJS({ var require_symlink = __commonJS({ "node_modules/fs-extra/lib/ensure/symlink.js"(exports, module2) { "use strict"; - var u = require_universalify().fromCallback; + var u = require_universalify().fromPromise; var path2 = require("path"); var fs2 = require_fs(); - var _mkdirs = require_mkdirs(); - var mkdirs = _mkdirs.mkdirs; - var mkdirsSync = _mkdirs.mkdirsSync; - var _symlinkPaths = require_symlink_paths(); - var symlinkPaths = _symlinkPaths.symlinkPaths; - var symlinkPathsSync = _symlinkPaths.symlinkPathsSync; - var _symlinkType = require_symlink_type(); - var symlinkType = _symlinkType.symlinkType; - var symlinkTypeSync = _symlinkType.symlinkTypeSync; - var pathExists = require_path_exists().pathExists; + var { mkdirs, mkdirsSync } = require_mkdirs(); + var { symlinkPaths, symlinkPathsSync } = require_symlink_paths(); + var { symlinkType, symlinkTypeSync } = require_symlink_type(); + var { pathExists } = require_path_exists(); var { areIdentical } = require_stat(); - function createSymlink(srcpath, dstpath, type, callback) { - callback = typeof type === "function" ? type : callback; - type = typeof type === "function" ? false : type; - fs2.lstat(dstpath, (err, stats) => { - if (!err && stats.isSymbolicLink()) { - Promise.all([ - fs2.stat(srcpath), - fs2.stat(dstpath) - ]).then(([srcStat, dstStat]) => { - if (areIdentical(srcStat, dstStat)) - return callback(null); - _createSymlink(srcpath, dstpath, type, callback); - }); - } else - _createSymlink(srcpath, dstpath, type, callback); - }); - } - function _createSymlink(srcpath, dstpath, type, callback) { - symlinkPaths(srcpath, dstpath, (err, relative) => { - if (err) - return callback(err); - srcpath = relative.toDst; - symlinkType(relative.toCwd, type, (err2, type2) => { - if (err2) - return callback(err2); - const dir = path2.dirname(dstpath); - pathExists(dir, (err3, dirExists) => { - if (err3) - return callback(err3); - if (dirExists) - return fs2.symlink(srcpath, dstpath, type2, callback); - mkdirs(dir, (err4) => { - if (err4) - return callback(err4); - fs2.symlink(srcpath, dstpath, type2, callback); - }); - }); - }); - }); + async function createSymlink(srcpath, dstpath, type) { + let stats; + try { + stats = await fs2.lstat(dstpath); + } catch (e) { + } + if (stats && stats.isSymbolicLink()) { + const [srcStat, dstStat] = await Promise.all([ + fs2.stat(srcpath), + fs2.stat(dstpath) + ]); + if (areIdentical(srcStat, dstStat)) + return; + } + const relative = await symlinkPaths(srcpath, dstpath); + srcpath = relative.toDst; + const toType = await symlinkType(relative.toCwd, type); + const dir = path2.dirname(dstpath); + if (!await pathExists(dir)) { + await mkdirs(dir); + } + return fs2.symlink(srcpath, dstpath, toType); } function createSymlinkSync(srcpath, dstpath, type) { let stats; @@ -2160,35 +2019,23 @@ var require_jsonfile2 = __commonJS({ var require_output_file = __commonJS({ "node_modules/fs-extra/lib/output-file/index.js"(exports, module2) { "use strict"; - var u = require_universalify().fromCallback; - var fs2 = require_graceful_fs(); + var u = require_universalify().fromPromise; + var fs2 = require_fs(); var path2 = require("path"); var mkdir = require_mkdirs(); var pathExists = require_path_exists().pathExists; - function outputFile(file, data, encoding, callback) { - if (typeof encoding === "function") { - callback = encoding; - encoding = "utf8"; - } + async function outputFile(file, data, encoding = "utf-8") { const dir = path2.dirname(file); - pathExists(dir, (err, itDoes) => { - if (err) - return callback(err); - if (itDoes) - return fs2.writeFile(file, data, encoding, callback); - mkdir.mkdirs(dir, (err2) => { - if (err2) - return callback(err2); - fs2.writeFile(file, data, encoding, callback); - }); - }); + if (!await pathExists(dir)) { + await mkdir.mkdirs(dir); + } + return fs2.writeFile(file, data, encoding); } function outputFileSync(file, ...args) { const dir = path2.dirname(file); - if (fs2.existsSync(dir)) { - return fs2.writeFileSync(file, ...args); + if (!fs2.existsSync(dir)) { + mkdir.mkdirsSync(dir); } - mkdir.mkdirsSync(dir); fs2.writeFileSync(file, ...args); } module2.exports = { @@ -2248,80 +2095,49 @@ var require_json = __commonJS({ var require_move = __commonJS({ "node_modules/fs-extra/lib/move/move.js"(exports, module2) { "use strict"; - var fs2 = require_graceful_fs(); + var fs2 = require_fs(); var path2 = require("path"); - var copy = require_copy2().copy; - var remove2 = require_remove().remove; - var mkdirp = require_mkdirs().mkdirp; - var pathExists = require_path_exists().pathExists; + var { copy } = require_copy2(); + var { remove: remove2 } = require_remove(); + var { mkdirp } = require_mkdirs(); + var { pathExists } = require_path_exists(); var stat = require_stat(); - function move(src, dest, opts, cb) { - if (typeof opts === "function") { - cb = opts; - opts = {}; - } - opts = opts || {}; + async function move(src, dest, opts = {}) { const overwrite = opts.overwrite || opts.clobber || false; - stat.checkPaths(src, dest, "move", opts, (err, stats) => { - if (err) - return cb(err); - const { srcStat, isChangingCase = false } = stats; - stat.checkParentPaths(src, srcStat, dest, "move", (err2) => { - if (err2) - return cb(err2); - if (isParentRoot(dest)) - return doRename(src, dest, overwrite, isChangingCase, cb); - mkdirp(path2.dirname(dest), (err3) => { - if (err3) - return cb(err3); - return doRename(src, dest, overwrite, isChangingCase, cb); - }); - }); - }); - } - function isParentRoot(dest) { - const parent = path2.dirname(dest); - const parsedPath = path2.parse(parent); - return parsedPath.root === parent; - } - function doRename(src, dest, overwrite, isChangingCase, cb) { - if (isChangingCase) - return rename(src, dest, overwrite, cb); - if (overwrite) { - return remove2(dest, (err) => { - if (err) - return cb(err); - return rename(src, dest, overwrite, cb); - }); + const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, "move", opts); + await stat.checkParentPaths(src, srcStat, dest, "move"); + const destParent = path2.dirname(dest); + const parsedParentPath = path2.parse(destParent); + if (parsedParentPath.root !== destParent) { + await mkdirp(destParent); } - pathExists(dest, (err, destExists) => { - if (err) - return cb(err); - if (destExists) - return cb(new Error("dest already exists.")); - return rename(src, dest, overwrite, cb); - }); + return doRename(src, dest, overwrite, isChangingCase); } - function rename(src, dest, overwrite, cb) { - fs2.rename(src, dest, (err) => { - if (!err) - return cb(); - if (err.code !== "EXDEV") - return cb(err); - return moveAcrossDevice(src, dest, overwrite, cb); - }); + async function doRename(src, dest, overwrite, isChangingCase) { + if (!isChangingCase) { + if (overwrite) { + await remove2(dest); + } else if (await pathExists(dest)) { + throw new Error("dest already exists."); + } + } + try { + await fs2.rename(src, dest); + } catch (err) { + if (err.code !== "EXDEV") { + throw err; + } + await moveAcrossDevice(src, dest, overwrite); + } } - function moveAcrossDevice(src, dest, overwrite, cb) { + async function moveAcrossDevice(src, dest, overwrite) { const opts = { overwrite, errorOnExist: true, preserveTimestamps: true }; - copy(src, dest, opts, (err) => { - if (err) - return cb(err); - return remove2(src, cb); - }); + await copy(src, dest, opts); + return remove2(src); } module2.exports = move; } @@ -2388,7 +2204,7 @@ var require_move_sync = __commonJS({ var require_move2 = __commonJS({ "node_modules/fs-extra/lib/move/index.js"(exports, module2) { "use strict"; - var u = require_universalify().fromCallback; + var u = require_universalify().fromPromise; module2.exports = { move: u(require_move()), moveSync: require_move_sync() @@ -3006,7 +2822,7 @@ var require_entryHeader = __commonJS({ val.getMinutes() << 5 | // b05-10 minute val.getSeconds() >> 1; } - setTime(+new Date()); + setTime(+/* @__PURE__ */ new Date()); return { get made() { return _verMade; @@ -4796,125 +4612,777 @@ __export(main_exports, { default: () => LocalBackupPlugin }); module.exports = __toCommonJS(main_exports); -var import_obsidian2 = require("obsidian"); +var import_obsidian3 = require("obsidian"); var import_path = require("path"); -var path = __toESM(require("path")); -var fs = __toESM(require_lib()); // src/settings.ts var import_obsidian = require("obsidian"); var LocalBackupSettingTab = class extends import_obsidian.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); + constructor(app2, plugin) { + super(app2, plugin); this.plugin = plugin; } display() { const { containerEl } = this; containerEl.empty(); - new import_obsidian.Setting(containerEl).setName("Backup once on startup").setDesc("Run local backup once on Obsidian starts.").addToggle((toggle) => toggle.setValue(this.plugin.settings.startupSetting).onChange(async (value) => { - this.plugin.settings.startupSetting = value; - await this.plugin.saveSettings(); - })); - new import_obsidian.Setting(containerEl).setName("Backup lifecycle (Days)").setDesc("Set local backup keeping days. (0 -- Infinity)").addText((toggle) => toggle.setValue(this.plugin.settings.lifecycleSetting).onChange(async (value) => { - this.plugin.settings.lifecycleSetting = value; - await this.plugin.saveSettings(); - })); - new import_obsidian.Setting(containerEl).setName("Output path").setDesc("Setup backup storage path.").addText((toggle) => toggle.setValue(this.plugin.settings.savePathSetting).onChange(async (value) => { - this.plugin.settings.savePathSetting = value; - await this.plugin.saveSettings(); + containerEl.createEl("h3", { text: "General Settings" }); + const ribbonIconDesc = new DocumentFragment(); + ribbonIconDesc.createSpan({ + text: "Show a ribbon icon in the left sidebar." + }); + ribbonIconDesc.createDiv({ + text: "Please close and reopen Obsidian for this setting to take effect.", + cls: "local-backup-text--accent" + }); + new import_obsidian.Setting(containerEl).setName("Show ribbon icon").setDesc(ribbonIconDesc).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.showRibbonIcon).onChange(async (value) => { + this.plugin.settings.showRibbonIcon = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Backup once on startup").setDesc("Run local backup once on Obsidian starts.").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.startupBackupStatus).onChange(async (value) => { + this.plugin.settings.startupBackupStatus = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Backup history length (days)").setDesc( + "Specify the number of days backups should be retained. (0 -- Infinity)" + ).addText( + (text) => text.setValue(this.plugin.settings.lifecycleValue).onChange(async (value) => { + const numericValue = parseFloat(value); + if (isNaN(numericValue) || numericValue < 0) { + new import_obsidian.Notice( + "Backup lifecycle must be a non-negative number." + ); + return; + } + this.plugin.settings.lifecycleValue = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Backups per day").setDesc( + "Specify the number of backups per day to keep. (0 -- Infinity)" + ).addText( + (text) => text.setValue(this.plugin.settings.backupsPerDayValue).onChange(async (value) => { + const numericValue = parseFloat(value); + if (isNaN(numericValue) || numericValue < 0) { + new import_obsidian.Notice( + "Backups per day must be a non-negative number." + ); + return; + } + this.plugin.settings.backupsPerDayValue = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Windows output path (optional)").setDesc("Setup a Windows backup storage path. eg. D:\\documents\\Obsidian").addText( + (text) => text.setValue(this.plugin.settings.winSavePathValue).onChange(async (value) => { + this.plugin.settings.winSavePathValue = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Linux/MacOS output path (optional)").setDesc("Setup a Unix backup storage path. eg. /home/user/Documents/Obsidian").addText( + (text) => text.setValue(this.plugin.settings.unixSavePathValue).onChange(async (value) => { + this.plugin.settings.unixSavePathValue = value; + await this.plugin.saveSettings(); + }) + ); + const fileNameFragment = document.createDocumentFragment(); + fileNameFragment.createDiv({ + text: "Name of the backup ZIP file." + }); + fileNameFragment.createEl("br"); + fileNameFragment.createDiv({ + text: "You may use date placeholders to add date and time." + }); + fileNameFragment.createDiv({ + text: "%Y for year" + }); + fileNameFragment.createDiv({ + text: "%m for month" + }); + fileNameFragment.createDiv({ + text: "%d for day" + }); + fileNameFragment.createDiv({ + text: "%H for hour" + }); + fileNameFragment.createDiv({ + text: "%M for minute" + }); + fileNameFragment.createDiv({ + text: "%S for second" + }); + fileNameFragment.createEl("br"); + fileNameFragment.createDiv({ + text: "Default: {vaultName}-Backup-%Y_%m_%d-%H_%M_%S" + }); + new import_obsidian.Setting(containerEl).setName("File name").setDesc(fileNameFragment).addText( + (text) => text.setValue(this.plugin.settings.fileNameFormatValue).onChange(async (value) => { + this.plugin.settings.fileNameFormatValue = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Interval backups").setDesc("Enable to create backups at regular intervals").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.intervalBackupStatus).onChange(async (value) => { + this.plugin.settings.intervalBackupStatus = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Backup frequency (minutes)").setDesc("Set the frequency of backups in minutes.").addText( + (text) => text.setValue(this.plugin.settings.backupFrequencyValue).onChange(async (value) => { + const numericValue = parseFloat(value); + if (isNaN(numericValue) || numericValue <= 0) { + new import_obsidian.Notice( + "Backup intervals must be a positive number." + ); + return; + } else { + this.plugin.settings.backupFrequencyValue = value; + await this.plugin.saveSettings(); + await this.plugin.applySettings(); + } + }) + ); + new import_obsidian.Setting(containerEl).setName("Retry times").setDesc("Set the retry times after backup failed.").addText( + (text) => text.setValue(this.plugin.settings.maxRetriesValue).onChange(async (value) => { + const numericValue = parseFloat(value); + if (isNaN(numericValue) || numericValue <= 0) { + new import_obsidian.Notice( + "Retry times must be a positive number." + ); + return; + } else { + this.plugin.settings.maxRetriesValue = value; + await this.plugin.saveSettings(); + await this.plugin.applySettings(); + } + }) + ); + new import_obsidian.Setting(containerEl).setName("Retry interval (ms)").setDesc("Set the retry interval (millisecond).").addText( + (text) => text.setValue(this.plugin.settings.retryIntervalValue).onChange(async (value) => { + const numericValue = parseFloat(value); + if (isNaN(numericValue) || numericValue <= 0) { + new import_obsidian.Notice( + "Backup intervals must be a positive number." + ); + return; + } else { + this.plugin.settings.retryIntervalValue = value; + await this.plugin.saveSettings(); + await this.plugin.applySettings(); + } + }) + ); + containerEl.createEl("h3", { text: "File Archiver Settings (Optional)" }); + new import_obsidian.Setting(containerEl).setName("Backup by Calling external file archiver").setDesc("If toggled, backups will be created by calling external file archiver.").addToggle( + (toggle) => toggle.setValue(this.plugin.settings.callingArchiverStatus).onChange(async (value) => { + this.plugin.settings.callingArchiverStatus = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("Select file archiver").setDesc("The selected archiver must be installed. eg. 7-Zip for Windows, 7-Zip/p7zip for Unix").addDropdown((dropDown) => { + dropDown.addOption("sevenZip", "7-Zip").addOption("winRAR", "WinRAR").addOption("bandizip", "bandizip").setValue(this.plugin.settings.archiverTypeValue).onChange(async (value) => { + this.plugin.settings.archiverTypeValue = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian.Setting(containerEl).setName("Select archive file type").addDropdown((dropDown) => { + dropDown.addOption("zip", "zip").addOption("7z", "7z").addOption("rar", "rar").setValue(this.plugin.settings.archiveFileTypeValue).onChange(async (value) => { + this.plugin.settings.archiveFileTypeValue = value; + await this.plugin.saveSettings(); + }); + }); + new import_obsidian.Setting(containerEl).setName("File archiver path (Win)").setDesc("Full path of Archiver. eg. D:\\software\\7-Zip\\7z.exe for Windows. Using bz.exe (Bandizip) for Windows is recommended.").addText( + (text) => text.setValue(this.plugin.settings.archiverWinPathValue).onChange(async (value) => { + this.plugin.settings.archiverWinPathValue = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).setName("File archiver path (Unix)").setDesc("Full path of Archiver. eg. /usr/bin/7z for Unix.").addText( + (text) => text.setValue(this.plugin.settings.archiverUnixPathValue).onChange(async (value) => { + this.plugin.settings.archiverUnixPathValue = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian.Setting(containerEl).addButton( + (btn) => btn.setTooltip("Restore defaults").setButtonText("Restore defaults").onClick(async () => { + await this.plugin.restoreDefault(); + new import_obsidian.Notice("Settings restored to default."); + }) + ); + } +}; + +// src/utils.ts +var path = __toESM(require("path")); +var fs = __toESM(require_lib()); +var import_adm_zip = __toESM(require_adm_zip()); +var import_child_process = require("child_process"); +var replaceDatePlaceholdersWithValues = (value) => { + const now = /* @__PURE__ */ new Date(); + if (value.includes("%Y")) { + value = value.replace(/%Y/g, now.getFullYear().toString()); + } + if (value.includes("%m")) { + value = value.replace( + /%m/g, + (now.getMonth() + 1).toString().padStart(2, "0") + ); + } + if (value.includes("%d")) { + value = value.replace(/%d/g, now.getDate().toString().padStart(2, "0")); + } + if (value.includes("%H")) { + value = value.replace( + /%H/g, + now.getHours().toString().padStart(2, "0") + ); + } + if (value.includes("%M")) { + value = value.replace( + /%M/g, + now.getMinutes().toString().padStart(2, "0") + ); + } + if (value.includes("%S")) { + value = value.replace( + /%S/g, + now.getSeconds().toString().padStart(2, "0") + ); + } + return value; +}; +var getDatePlaceholdersForISO = (includeTime) => { + if (includeTime) { + return "%Y_%m_%d-%H_%M_%S"; + } + return "%Y_%m_%d"; +}; +function getDefaultPath() { + const defaultPath = path.dirname(this.app.vault.adapter.basePath); + return defaultPath; +} +function getDefaultName() { + const vaultName = this.app.vault.getName(); + const defaultDatePlaceholders = getDatePlaceholdersForISO(true); + return `${vaultName}-Backup-${defaultDatePlaceholders}`; +} +function deleteBackupsByLifeCycle(winSavePath, unixSavePath, fileNameFormat, lifecycle) { + console.log("Run deleteBackupsByLifeCycle"); + const os = require("os"); + const platform = os.platform(); + let savePathSetting = ""; + if (platform === "win32") { + savePathSetting = winSavePath; + } else if (platform === "linux" || platform === "darwin") { + savePathSetting = unixSavePath; + } + const currentDate = /* @__PURE__ */ new Date(); + if (parseInt(lifecycle) !== 0) { + currentDate.setDate(currentDate.getDate() - parseInt(lifecycle)); + } + fs.readdir(savePathSetting, (err, files) => { + if (err) { + console.error(err); + return; + } + if (parseInt(lifecycle) !== 0) { + files.forEach((file) => { + const filePath = path.join(savePathSetting, file); + const stats = fs.statSync(filePath); + const fileNameRegex = generateRegexFromCustomPattern(fileNameFormat); + const matchFileName = file.match(fileNameRegex); + if (stats.isFile() && matchFileName !== null) { + const parseTime = stats.mtime; + const createDate = new Date(parseTime.getFullYear(), parseTime.getMonth(), parseTime.getDate()); + if (createDate < currentDate) { + fs.remove(filePath); + console.log(`Backup removed by deleteBackupsByLifeCycle: ${filePath}`); + } + } + }); + } + }); +} +function deletePerDayBackups(winSavePath, unixSavePath, fileNameFormat, backupsPerDay) { + console.log("Run deletePerDayBackups"); + if (parseInt(backupsPerDay) === 0) { + return; + } + const os = require("os"); + const platform = os.platform(); + let savePathSetting = ""; + if (platform === "win32") { + savePathSetting = winSavePath; + } else if (platform === "linux" || platform === "darwin") { + savePathSetting = unixSavePath; + } + fs.readdir(savePathSetting, (err, files) => { + if (err) { + console.error(err); + return; + } + const currentDate = /* @__PURE__ */ new Date(); + currentDate.setHours(0, 0, 0, 0); + const fileNameRegex = generateRegexFromCustomPattern(fileNameFormat); + const backupFiles = files.filter((file) => { + const filePath = path.join(savePathSetting, file); + const stats = fs.statSync(filePath); + const matchFileName = file.match(fileNameRegex); + return stats.isFile() && matchFileName !== null; + }); + const todayBackupFiles = backupFiles.filter((file) => { + const filePath = path.join(savePathSetting, file); + const stats = fs.statSync(filePath); + const parseTime = stats.mtime; + const createDate = new Date(parseTime.getFullYear(), parseTime.getMonth(), parseTime.getDate()); + return createDate.getTime() === currentDate.getTime(); + }); + if (todayBackupFiles.length > parseInt(backupsPerDay)) { + const filesToDelete = todayBackupFiles.slice(0, todayBackupFiles.length - parseInt(backupsPerDay)); + filesToDelete.forEach((file) => { + const filePath = path.join(savePathSetting, file); + fs.remove(filePath, (err2) => { + if (err2) { + console.error(`Failed to remove backup file: ${filePath}`, err2); + } else { + console.log(`Backup removed by deletePerDayBackups: ${filePath}`); + } + }); + }); + } + }); +} +function generateRegexFromCustomPattern(customPattern) { + const regexPattern = customPattern.replace(/%Y/g, "\\d{4}").replace(/%m/g, "\\d{2}").replace(/%d/g, "\\d{2}").replace(/%H/g, "\\d{2}").replace(/%M/g, "\\d{2}").replace(/%S/g, "\\d{2}"); + return new RegExp(regexPattern); +} +function createZipByAdmZip(vaultPath, backupZipPath) { + const zip = new import_adm_zip.default(); + zip.addLocalFolder(vaultPath); + zip.writeZip(backupZipPath); +} +async function createFileByArchiver(archiverType, archiverPath, archiveFileType, vaultPath, backupFilePath) { + switch (archiverType) { + case "sevenZip": + const sevenZipPromise = new Promise((resolve, reject) => { + const command = `"${archiverPath}" a "${backupFilePath}" "${vaultPath}"`; + console.log(`command: ${command}`); + (0, import_child_process.exec)(command, (error, stdout, stderr) => { + if (error) { + console.error("Failed to create file by 7-Zip:", error); + reject(error); + } else { + console.log("File created by 7-Zip successfully."); + resolve(); + } + }); + }); + return sevenZipPromise; + case "winRAR": + const winRARPromise = new Promise((resolve, reject) => { + const command = `"${archiverPath}" a -ep1 -rh "${backupFilePath}" "${vaultPath}*"`; + console.log(`command: ${command}`); + (0, import_child_process.exec)(command, (error, stdout, stderr) => { + if (error) { + console.error("Failed to create file by WinRAR:", error); + reject(error); + } else { + console.log("File created by WinRAR successfully."); + resolve(); + } + }); + }); + return winRARPromise; + case "bandizip": + const bandizipPromise = new Promise((resolve, reject) => { + const command = `"${archiverPath}" c "${backupFilePath}" "${vaultPath}"`; + console.log(`command: ${command}`); + (0, import_child_process.exec)(command, (error, stdout, stderr) => { + if (error) { + console.error("Failed to create file by Bandizip:", error); + reject(error); + } else { + console.log("File created by Bandizip successfully."); + resolve(); + } + }); + }); + return bandizipPromise; + default: + break; + } +} + +// src/constants.ts +var ICON_DATA = ` + + + + +`; + +// src/modals.ts +var import_obsidian2 = require("obsidian"); +var NewVersionNotifyModal = class extends import_obsidian2.Modal { + constructor(app2, plugin) { + super(app2); + this.plugin = plugin; + } + onOpen() { + const { contentEl } = this; + const release = "0.1.7"; + const header = `### New in Local Backup ${release} +`; + const text = `Thank you for using Local Backup! +`; + const contentDiv = contentEl.createDiv("local-backup-update-modal"); + const releaseNotes = [ + "1. Now you can create a specific backup file, which won't delete by the plugin, just type: ctrl + p, local backup." + ].join("\n"); + const andNow = `Here are the updates in the latest version:`; + const markdownStr = `${header} +${text} +${andNow} + +--- + +${addExtraHashToHeadings( + releaseNotes + )}`; + new import_obsidian2.Setting(contentEl).addButton((btn) => btn.setButtonText("Okey").setCta().onClick(() => { + this.plugin.saveSettings(); + this.close(); })); + void import_obsidian2.MarkdownRenderer.renderMarkdown( + markdownStr, + contentDiv, + app.vault.getRoot().path, + new import_obsidian2.Component() + ); + } + onClose() { + let { contentEl } = this; + contentEl.empty(); + } +}; +function addExtraHashToHeadings(markdownText, numHashes = 1) { + const lines = markdownText.split("\n"); + for (let i = 0; i < lines.length; i++) { + if (lines[i].startsWith("#")) { + lines[i] = "#".repeat(numHashes) + lines[i]; + } + } + return lines.join("\n"); +} +var PromptModal = class extends import_obsidian2.Modal { + constructor(prompt_text, default_value, multi_line, app2, plugin) { + super(app2); + this.prompt_text = prompt_text; + this.default_value = default_value; + this.multi_line = multi_line; + this.submitted = false; + this.plugin = plugin; + } + onOpen() { + this.titleEl.setText(this.prompt_text); + this.createForm(); + } + onClose() { + this.contentEl.empty(); + if (!this.submitted) { + } + } + createForm() { + var _a; + const div = this.contentEl.createDiv(); + div.addClass("templater-prompt-div"); + let textInput; + if (this.multi_line) { + textInput = new import_obsidian2.TextAreaComponent(div); + const buttonDiv = this.contentEl.createDiv(); + buttonDiv.addClass("templater-button-div"); + const submitButton = new import_obsidian2.ButtonComponent(buttonDiv); + submitButton.buttonEl.addClass("mod-cta"); + submitButton.setButtonText("Submit").onClick((evt) => { + this.resolveAndClose(evt); + }); + } else { + textInput = new import_obsidian2.TextComponent(div); + } + this.value = (_a = this.default_value) != null ? _a : ""; + textInput.inputEl.addClass("templater-prompt-input"); + textInput.setPlaceholder("Type text here"); + textInput.setValue(this.value); + textInput.onChange((value) => this.value = value); + textInput.inputEl.addEventListener( + "keydown", + (evt) => this.enterCallback(evt) + ); + } + enterCallback(evt) { + if (evt.isComposing || evt.keyCode === 229) + return; + if (this.multi_line) { + if (import_obsidian2.Platform.isDesktop) { + if (evt.shiftKey && evt.key === "Enter") { + } else if (evt.key === "Enter") { + this.resolveAndClose(evt); + } + } else { + if (evt.key === "Enter") { + evt.preventDefault(); + } + } + } else { + if (evt.key === "Enter") { + this.resolveAndClose(evt); + } + } + } + resolveAndClose(evt) { + this.submitted = true; + evt.preventDefault(); + this.plugin.archiveVaultWithRetryAsync(this.value); + this.close(); + } + async openAndGetValue(resolve) { + this.resolve = resolve; + this.open(); } }; // src/main.ts var DEFAULT_SETTINGS = { - startupSetting: false, - lifecycleSetting: "3", - savePathSetting: getDefaultPath() + versionValue: "", + startupBackupStatus: false, + lifecycleValue: "3", + backupsPerDayValue: "3", + maxRetriesValue: "1", + retryIntervalValue: "100", + winSavePathValue: getDefaultPath(), + unixSavePathValue: getDefaultPath(), + fileNameFormatValue: getDefaultName(), + intervalBackupStatus: false, + backupFrequencyValue: "10", + callingArchiverStatus: false, + archiverTypeValue: "sevenZip", + archiveFileTypeValue: "zip", + archiverWinPathValue: "", + archiverUnixPathValue: "", + showRibbonIcon: true }; -var LocalBackupPlugin = class extends import_obsidian2.Plugin { +var LocalBackupPlugin = class extends import_obsidian3.Plugin { + constructor() { + super(...arguments); + this.intervalId = null; + } async onload() { await this.loadSettings(); + const settingTab = new LocalBackupSettingTab(this.app, this); + this.addSettingTab(settingTab); + try { + if (this.settings.versionValue !== this.manifest.version) { + new NewVersionNotifyModal(this.app, this).open(); + this.saveSettings(); + } + } catch (error) { + new import_obsidian3.Notice(`Please recofig \`Local Backup\` after upgrading to ${this.manifest.version}!`, 1e4); + } this.addCommand({ id: "run-local-backup", name: "Run local backup", callback: async () => { - await this.archiveVaultAsync(); + await this.archiveVaultWithRetryAsync(); } }); - this.addSettingTab(new LocalBackupSettingTab(this.app, this)); + this.addCommand({ + id: "run-specific-backup", + name: "Run specific backup", + callback: async () => { + new PromptModal( + "Input specific file name", + "Specific-Backup-%Y_%m_%d-%H_%M_%S", + false, + this.app, + this + ).open(); + } + }); + if (this.settings.showRibbonIcon) { + (0, import_obsidian3.addIcon)("sidebar-icon", ICON_DATA); + this.addRibbonIcon("sidebar-icon", "Run local backup", () => { + new import_obsidian3.Notice("Running local backup..."); + this.archiveVaultWithRetryAsync(); + }); + } + if (this.settings.startupBackupStatus) { + await this.archiveVaultWithRetryAsync(); + } + await this.applySettings(); + } + /** + * Archive vault with retry method + */ + async archiveVaultWithRetryAsync(specificFileName = "") { + const maxRetries = parseInt(this.settings.maxRetriesValue); + let retryCount = 0; + const retryInterval = parseInt(this.settings.retryIntervalValue); + while (retryCount < maxRetries) { + try { + await this.archiveVaultAsync(specificFileName); + break; + } catch (error) { + console.error(`Error during archive attempt ${retryCount + 1}: ${error}`); + retryCount++; + if (retryCount < maxRetries) { + await this.delay(retryInterval); + console.log(`Retrying archive attempt ${retryCount + 1}...`); + } else { + console.error(`Failed to create vault backup after ${maxRetries} attempts.`); + new import_obsidian3.Notice(`Failed to create vault backup after ${maxRetries} attempts: ${error}`); + } + } + } } /** * Archive vault method */ - async archiveVaultAsync() { + async archiveVaultAsync(specificFileName) { try { - const vaultName = this.app.vault.getName(); - const currentDate = new Date().toISOString().split("T")[0]; - const backupZipName = `${vaultName}-Backup-${currentDate}.zip`; + await this.loadSettings(); + let fileName = ""; + if (specificFileName == "") { + fileName = this.settings.fileNameFormatValue; + } else { + fileName = specificFileName; + } + const fileNameWithDateValues = replaceDatePlaceholdersWithValues(fileName); + const backupZipName = `${fileNameWithDateValues}.zip`; const vaultPath = this.app.vault.adapter.basePath; - const parentDir = this.settings.savePathSetting; - const backupZipPath = (0, import_path.join)(parentDir, backupZipName); - const AdmZip = require_adm_zip(); - const zip = new AdmZip(); - zip.addLocalFolder(vaultPath); - zip.writeZip(backupZipPath); - new import_obsidian2.Notice(`Vault backup created: ${backupZipPath}`); + const os = require("os"); + const platform = os.platform(); + let savePathValue = ""; + let archiverPathValue = ""; + if (platform == "win32") { + savePathValue = this.settings.winSavePathValue; + archiverPathValue = this.settings.archiverWinPathValue; + } else if (platform == "linux" || platform == "darwin") { + savePathValue = this.settings.unixSavePathValue; + archiverPathValue = this.settings.archiverUnixPathValue; + } + let backupFilePath = (0, import_path.join)(savePathValue, backupZipName); + if (this.settings.callingArchiverStatus) { + backupFilePath = (0, import_path.join)(savePathValue, `${fileNameWithDateValues}.${this.settings.archiveFileTypeValue}`); + await createFileByArchiver(this.settings.archiverTypeValue, archiverPathValue, this.settings.archiveFileTypeValue, vaultPath, backupFilePath); + } else { + createZipByAdmZip(vaultPath, backupFilePath); + } + console.log(`Vault backup created: ${backupFilePath}`); + new import_obsidian3.Notice(`Vault backup created: ${backupFilePath}`); + deleteBackupsByLifeCycle( + this.settings.winSavePathValue, + this.settings.unixSavePathValue, + this.settings.fileNameFormatValue, + this.settings.lifecycleValue + ); + deletePerDayBackups( + this.settings.winSavePathValue, + this.settings.unixSavePathValue, + this.settings.fileNameFormatValue, + this.settings.backupsPerDayValue + ); } catch (error) { - new import_obsidian2.Notice(`Failed to create repository backup: ${error}`); - console.log(error); + throw error; + } + } + /** + * delay function + * @param ms + * @returns + */ + async delay(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } + /** + * Start an interval to run archiveVaultAsync method at regular intervals + * @param intervalMinutes The interval in minutes + */ + async startAutoBackupInterval(intervalMinutes) { + if (this.intervalId) { + clearInterval(this.intervalId); + } + this.intervalId = setInterval(async () => { + await this.archiveVaultWithRetryAsync(); + }, intervalMinutes * 60 * 1e3); + new import_obsidian3.Notice( + `Auto backup interval started: Running every ${intervalMinutes} minutes.` + ); + } + /** + * Stop the auto backup interval + */ + stopAutoBackupInterval() { + if (this.intervalId) { + clearInterval(this.intervalId); + this.intervalId = null; + new import_obsidian3.Notice("Auto backup interval stopped."); } } async onunload() { console.log("Local Backup unloaded"); } async loadSettings() { - this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); - if (this.settings.startupSetting) { - await this.archiveVaultAsync(); - } - autoDeleteBackups(this.settings.savePathSetting, this.settings.lifecycleSetting); + this.settings = Object.assign( + {}, + DEFAULT_SETTINGS, + await this.loadData() + ); } async saveSettings() { + this.settings.versionValue = this.manifest.version; await this.saveData(this.settings); } -}; -function getDefaultPath() { - const defaultPath = path.dirname(this.app.vault.adapter.basePath); - return defaultPath; -} -function autoDeleteBackups(savePathSetting, lifecycleSetting) { - console.log("Run auto delete method"); - if (parseInt(lifecycleSetting) == 0) { - return; - } - const vaultName = this.app.vault.getName(); - const currentDate = new Date(); - currentDate.setDate(currentDate.getDate() - parseInt(lifecycleSetting)); - const vaultBackupDirFormat = `${vaultName}-Backup-`; - fs.readdir(savePathSetting, (err, files) => { - if (err) { - console.error(err); - return; + /** + * Apply settings + */ + async applySettings() { + await this.loadSettings(); + if (this.settings.intervalBackupStatus && !isNaN(parseInt(this.settings.backupFrequencyValue))) { + const intervalMinutes = parseInt( + this.settings.backupFrequencyValue + ); + await this.startAutoBackupInterval(intervalMinutes); + } else if (!this.settings.intervalBackupStatus) { + this.stopAutoBackupInterval(); } - files.forEach((file) => { - console.log(file); - const filePath = path.join(savePathSetting, file); - const stats = fs.statSync(filePath); - if (stats.isFile() && file.contains(vaultBackupDirFormat)) { - const regex = /(\d{4}-\d{2}-\d{2})/; - const match = file.match(regex); - if (match && match.length > 1) { - const dateStr = match[1]; - console.log(dateStr); - const parsedDate = new Date(dateStr); - if (parsedDate < currentDate) { - fs.remove(filePath); - } - } else { - console.log("DateStr Not Found."); - } - } - }); - }); -} + } + /** + * Restore default settings + */ + async restoreDefault() { + this.settings.versionValue = DEFAULT_SETTINGS.versionValue; + this.settings.startupBackupStatus = DEFAULT_SETTINGS.startupBackupStatus; + this.settings.lifecycleValue = DEFAULT_SETTINGS.lifecycleValue; + this.settings.backupsPerDayValue = DEFAULT_SETTINGS.backupsPerDayValue; + this.settings.maxRetriesValue = DEFAULT_SETTINGS.maxRetriesValue; + this.settings.retryIntervalValue = DEFAULT_SETTINGS.retryIntervalValue; + this.settings.winSavePathValue = DEFAULT_SETTINGS.winSavePathValue; + this.settings.unixSavePathValue = DEFAULT_SETTINGS.unixSavePathValue; + this.settings.fileNameFormatValue = DEFAULT_SETTINGS.fileNameFormatValue; + this.settings.intervalBackupStatus = DEFAULT_SETTINGS.intervalBackupStatus; + this.settings.backupFrequencyValue = DEFAULT_SETTINGS.backupFrequencyValue; + this.settings.callingArchiverStatus = DEFAULT_SETTINGS.callingArchiverStatus; + this.settings.archiverTypeValue = DEFAULT_SETTINGS.archiverTypeValue; + this.settings.archiveFileTypeValue = DEFAULT_SETTINGS.archiveFileTypeValue; + this.settings.archiverWinPathValue = DEFAULT_SETTINGS.archiverWinPathValue; + this.settings.archiverUnixPathValue = DEFAULT_SETTINGS.archiverUnixPathValue; + await this.saveSettings(); + } +}; diff --git a/.obsidian/plugins/local-backup/manifest.json b/.obsidian/plugins/local-backup/manifest.json index 500e0c0..cf1e5c6 100644 --- a/.obsidian/plugins/local-backup/manifest.json +++ b/.obsidian/plugins/local-backup/manifest.json @@ -1,7 +1,7 @@ { "id": "local-backup", "name": "Local Backup", - "version": "0.0.5", + "version": "0.1.7", "minAppVersion": "0.15.0", "description": "Automatically creates a local backup of the vault.", "author": "GC Chen", diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js index dc70752..c04aa73 100644 --- a/.obsidian/plugins/obsidian-git/main.js +++ b/.obsidian/plugins/obsidian-git/main.js @@ -37,10 +37,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var __publicField = (obj, key2, value) => { - __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value); - return value; -}; +var __publicField = (obj, key2, value) => __defNormalProp(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value); // node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js var require_base64_js = __commonJS({ @@ -68,8 +65,7 @@ var require_base64_js = __commonJS({ throw new Error("Invalid string. Length must be a multiple of 4"); } var validLen = b64.indexOf("="); - if (validLen === -1) - validLen = len2; + if (validLen === -1) validLen = len2; var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; return [validLen, placeHoldersLen]; } @@ -264,16 +260,14 @@ var require_buffer = __commonJS({ Object.defineProperty(Buffer2.prototype, "parent", { enumerable: true, get: function() { - if (!Buffer2.isBuffer(this)) - return void 0; + if (!Buffer2.isBuffer(this)) return void 0; return this.buffer; } }); Object.defineProperty(Buffer2.prototype, "offset", { enumerable: true, get: function() { - if (!Buffer2.isBuffer(this)) - return void 0; + if (!Buffer2.isBuffer(this)) return void 0; return this.byteOffset; } }); @@ -325,8 +319,7 @@ var require_buffer = __commonJS({ return Buffer2.from(valueOf, encodingOrOffset, length); } const b = fromObject(value); - if (b) - return b; + if (b) return b; if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") { return Buffer2.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); } @@ -453,17 +446,14 @@ var require_buffer = __commonJS({ return b != null && b._isBuffer === true && b !== Buffer2.prototype; }; Buffer2.compare = function compare(a, b) { - if (isInstance(a, Uint8Array)) - a = Buffer2.from(a, a.offset, a.byteLength); - if (isInstance(b, Uint8Array)) - b = Buffer2.from(b, b.offset, b.byteLength); + if (isInstance(a, Uint8Array)) a = Buffer2.from(a, a.offset, a.byteLength); + if (isInstance(b, Uint8Array)) b = Buffer2.from(b, b.offset, b.byteLength); if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) { throw new TypeError( 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' ); } - if (a === b) - return 0; + if (a === b) return 0; let x = a.length; let y = b.length; for (let i = 0, len = Math.min(x, y); i < len; ++i) { @@ -473,10 +463,8 @@ var require_buffer = __commonJS({ break; } } - if (x < y) - return -1; - if (y < x) - return 1; + if (x < y) return -1; + if (y < x) return 1; return 0; }; Buffer2.isEncoding = function isEncoding(encoding) { @@ -517,8 +505,7 @@ var require_buffer = __commonJS({ let buf = list[i]; if (isInstance(buf, Uint8Array)) { if (pos + buf.length > buffer2.length) { - if (!Buffer2.isBuffer(buf)) - buf = Buffer2.from(buf); + if (!Buffer2.isBuffer(buf)) buf = Buffer2.from(buf); buf.copy(buffer2, pos); } else { Uint8Array.prototype.set.call( @@ -550,8 +537,7 @@ var require_buffer = __commonJS({ } const len = string.length; const mustMatch = arguments.length > 2 && arguments[2] === true; - if (!mustMatch && len === 0) - return 0; + if (!mustMatch && len === 0) return 0; let loweredCase = false; for (; ; ) { switch (encoding) { @@ -600,8 +586,7 @@ var require_buffer = __commonJS({ if (end <= start) { return ""; } - if (!encoding) - encoding = "utf8"; + if (!encoding) encoding = "utf8"; while (true) { switch (encoding) { case "hex": @@ -622,8 +607,7 @@ var require_buffer = __commonJS({ case "utf-16le": return utf16leSlice(this, start, end); default: - if (loweredCase) - throw new TypeError("Unknown encoding: " + encoding); + if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); encoding = (encoding + "").toLowerCase(); loweredCase = true; } @@ -671,26 +655,21 @@ var require_buffer = __commonJS({ }; Buffer2.prototype.toString = function toString() { const length = this.length; - if (length === 0) - return ""; - if (arguments.length === 0) - return utf8Slice(this, 0, length); + if (length === 0) return ""; + if (arguments.length === 0) return utf8Slice(this, 0, length); return slowToString.apply(this, arguments); }; Buffer2.prototype.toLocaleString = Buffer2.prototype.toString; - Buffer2.prototype.equals = function equals2(b) { - if (!Buffer2.isBuffer(b)) - throw new TypeError("Argument must be a Buffer"); - if (this === b) - return true; + Buffer2.prototype.equals = function equals3(b) { + if (!Buffer2.isBuffer(b)) throw new TypeError("Argument must be a Buffer"); + if (this === b) return true; return Buffer2.compare(this, b) === 0; }; Buffer2.prototype.inspect = function inspect() { let str = ""; const max = exports2.INSPECT_MAX_BYTES; str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim(); - if (this.length > max) - str += " ... "; + if (this.length > max) str += " ... "; return ""; }; if (customInspectSymbol) { @@ -733,8 +712,7 @@ var require_buffer = __commonJS({ end >>>= 0; thisStart >>>= 0; thisEnd >>>= 0; - if (this === target) - return 0; + if (this === target) return 0; let x = thisEnd - thisStart; let y = end - start; const len = Math.min(x, y); @@ -747,15 +725,12 @@ var require_buffer = __commonJS({ break; } } - if (x < y) - return -1; - if (y < x) - return 1; + if (x < y) return -1; + if (y < x) return 1; return 0; }; function bidirectionalIndexOf(buffer2, val, byteOffset, encoding, dir) { - if (buffer2.length === 0) - return -1; + if (buffer2.length === 0) return -1; if (typeof byteOffset === "string") { encoding = byteOffset; byteOffset = 0; @@ -768,18 +743,13 @@ var require_buffer = __commonJS({ if (numberIsNaN(byteOffset)) { byteOffset = dir ? 0 : buffer2.length - 1; } - if (byteOffset < 0) - byteOffset = buffer2.length + byteOffset; + if (byteOffset < 0) byteOffset = buffer2.length + byteOffset; if (byteOffset >= buffer2.length) { - if (dir) - return -1; - else - byteOffset = buffer2.length - 1; + if (dir) return -1; + else byteOffset = buffer2.length - 1; } else if (byteOffset < 0) { - if (dir) - byteOffset = 0; - else - return -1; + if (dir) byteOffset = 0; + else return -1; } if (typeof val === "string") { val = Buffer2.from(val, encoding); @@ -830,19 +800,15 @@ var require_buffer = __commonJS({ let foundIndex = -1; for (i = byteOffset; i < arrLength; i++) { if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) - foundIndex = i; - if (i - foundIndex + 1 === valLength) - return foundIndex * indexSize; + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; } else { - if (foundIndex !== -1) - i -= i - foundIndex; + if (foundIndex !== -1) i -= i - foundIndex; foundIndex = -1; } } } else { - if (byteOffset + valLength > arrLength) - byteOffset = arrLength - valLength; + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; for (i = byteOffset; i >= 0; i--) { let found = true; for (let j = 0; j < valLength; j++) { @@ -851,8 +817,7 @@ var require_buffer = __commonJS({ break; } } - if (found) - return i; + if (found) return i; } } return -1; @@ -884,8 +849,7 @@ var require_buffer = __commonJS({ let i; for (i = 0; i < length; ++i) { const parsed = parseInt(string.substr(i * 2, 2), 16); - if (numberIsNaN(parsed)) - return i; + if (numberIsNaN(parsed)) return i; buf[offset + i] = parsed; } return i; @@ -915,8 +879,7 @@ var require_buffer = __commonJS({ offset = offset >>> 0; if (isFinite(length)) { length = length >>> 0; - if (encoding === void 0) - encoding = "utf8"; + if (encoding === void 0) encoding = "utf8"; } else { encoding = length; length = void 0; @@ -927,13 +890,11 @@ var require_buffer = __commonJS({ ); } const remaining = this.length - offset; - if (length === void 0 || length > remaining) - length = remaining; + if (length === void 0 || length > remaining) length = remaining; if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { throw new RangeError("Attempt to write outside buffer bounds"); } - if (!encoding) - encoding = "utf8"; + if (!encoding) encoding = "utf8"; let loweredCase = false; for (; ; ) { switch (encoding) { @@ -954,8 +915,7 @@ var require_buffer = __commonJS({ case "utf-16le": return ucs2Write(this, string, offset, length); default: - if (loweredCase) - throw new TypeError("Unknown encoding: " + encoding); + if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); encoding = ("" + encoding).toLowerCase(); loweredCase = true; } @@ -1068,10 +1028,8 @@ var require_buffer = __commonJS({ } function hexSlice(buf, start, end) { const len = buf.length; - if (!start || start < 0) - start = 0; - if (!end || end < 0 || end > len) - end = len; + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; let out = ""; for (let i = start; i < end; ++i) { out += hexSliceLookupTable[buf[i]]; @@ -1092,35 +1050,29 @@ var require_buffer = __commonJS({ end = end === void 0 ? len : ~~end; if (start < 0) { start += len; - if (start < 0) - start = 0; + if (start < 0) start = 0; } else if (start > len) { start = len; } if (end < 0) { end += len; - if (end < 0) - end = 0; + if (end < 0) end = 0; } else if (end > len) { end = len; } - if (end < start) - end = start; + if (end < start) end = start; const newBuf = this.subarray(start, end); Object.setPrototypeOf(newBuf, Buffer2.prototype); return newBuf; }; function checkOffset(offset, ext, length) { - if (offset % 1 !== 0 || offset < 0) - throw new RangeError("offset is not uint"); - if (offset + ext > length) - throw new RangeError("Trying to access beyond buffer length"); + if (offset % 1 !== 0 || offset < 0) throw new RangeError("offset is not uint"); + if (offset + ext > length) throw new RangeError("Trying to access beyond buffer length"); } Buffer2.prototype.readUintLE = Buffer2.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; - if (!noAssert) - checkOffset(offset, byteLength2, this.length); + if (!noAssert) checkOffset(offset, byteLength2, this.length); let val = this[offset]; let mul = 1; let i = 0; @@ -1144,32 +1096,27 @@ var require_buffer = __commonJS({ }; Buffer2.prototype.readUint8 = Buffer2.prototype.readUInt8 = function readUInt8(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 1, this.length); + if (!noAssert) checkOffset(offset, 1, this.length); return this[offset]; }; Buffer2.prototype.readUint16LE = Buffer2.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); + if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] | this[offset + 1] << 8; }; Buffer2.prototype.readUint16BE = Buffer2.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); + if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] << 8 | this[offset + 1]; }; Buffer2.prototype.readUint32LE = Buffer2.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); + if (!noAssert) checkOffset(offset, 4, this.length); return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216; }; Buffer2.prototype.readUint32BE = Buffer2.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); + if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); }; Buffer2.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) { @@ -1199,8 +1146,7 @@ var require_buffer = __commonJS({ Buffer2.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; - if (!noAssert) - checkOffset(offset, byteLength2, this.length); + if (!noAssert) checkOffset(offset, byteLength2, this.length); let val = this[offset]; let mul = 1; let i = 0; @@ -1208,15 +1154,13 @@ var require_buffer = __commonJS({ val += this[offset + i] * mul; } mul *= 128; - if (val >= mul) - val -= Math.pow(2, 8 * byteLength2); + if (val >= mul) val -= Math.pow(2, 8 * byteLength2); return val; }; Buffer2.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { offset = offset >>> 0; byteLength2 = byteLength2 >>> 0; - if (!noAssert) - checkOffset(offset, byteLength2, this.length); + if (!noAssert) checkOffset(offset, byteLength2, this.length); let i = byteLength2; let mul = 1; let val = this[offset + --i]; @@ -1224,42 +1168,35 @@ var require_buffer = __commonJS({ val += this[offset + --i] * mul; } mul *= 128; - if (val >= mul) - val -= Math.pow(2, 8 * byteLength2); + if (val >= mul) val -= Math.pow(2, 8 * byteLength2); return val; }; Buffer2.prototype.readInt8 = function readInt8(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 1, this.length); - if (!(this[offset] & 128)) - return this[offset]; + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 128)) return this[offset]; return (255 - this[offset] + 1) * -1; }; Buffer2.prototype.readInt16LE = function readInt16LE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); + if (!noAssert) checkOffset(offset, 2, this.length); const val = this[offset] | this[offset + 1] << 8; return val & 32768 ? val | 4294901760 : val; }; Buffer2.prototype.readInt16BE = function readInt16BE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 2, this.length); + if (!noAssert) checkOffset(offset, 2, this.length); const val = this[offset + 1] | this[offset] << 8; return val & 32768 ? val | 4294901760 : val; }; Buffer2.prototype.readInt32LE = function readInt32LE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); + if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; }; Buffer2.prototype.readInt32BE = function readInt32BE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); + if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; }; Buffer2.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) { @@ -1287,35 +1224,28 @@ var require_buffer = __commonJS({ }); Buffer2.prototype.readFloatLE = function readFloatLE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); + if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, true, 23, 4); }; Buffer2.prototype.readFloatBE = function readFloatBE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 4, this.length); + if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, false, 23, 4); }; Buffer2.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 8, this.length); + if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, true, 52, 8); }; Buffer2.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { offset = offset >>> 0; - if (!noAssert) - checkOffset(offset, 8, this.length); + if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, false, 52, 8); }; function checkInt(buf, value, offset, ext, max, min) { - if (!Buffer2.isBuffer(buf)) - throw new TypeError('"buffer" argument must be a Buffer instance'); - if (value > max || value < min) - throw new RangeError('"value" argument is out of bounds'); - if (offset + ext > buf.length) - throw new RangeError("Index out of range"); + if (!Buffer2.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); + if (offset + ext > buf.length) throw new RangeError("Index out of range"); } Buffer2.prototype.writeUintLE = Buffer2.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { value = +value; @@ -1352,16 +1282,14 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeUint8 = Buffer2.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 1, 255, 0); + if (!noAssert) checkInt(this, value, offset, 1, 255, 0); this[offset] = value & 255; return offset + 1; }; Buffer2.prototype.writeUint16LE = Buffer2.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 65535, 0); + if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); this[offset] = value & 255; this[offset + 1] = value >>> 8; return offset + 2; @@ -1369,8 +1297,7 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeUint16BE = Buffer2.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 65535, 0); + if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); this[offset] = value >>> 8; this[offset + 1] = value & 255; return offset + 2; @@ -1378,8 +1305,7 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeUint32LE = Buffer2.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 4294967295, 0); + if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); this[offset + 3] = value >>> 24; this[offset + 2] = value >>> 16; this[offset + 1] = value >>> 8; @@ -1389,8 +1315,7 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeUint32BE = Buffer2.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 4294967295, 0); + if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); this[offset] = value >>> 24; this[offset + 1] = value >>> 16; this[offset + 2] = value >>> 8; @@ -1484,18 +1409,15 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 1, 127, -128); - if (value < 0) - value = 255 + value + 1; + if (!noAssert) checkInt(this, value, offset, 1, 127, -128); + if (value < 0) value = 255 + value + 1; this[offset] = value & 255; return offset + 1; }; Buffer2.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 32767, -32768); + if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); this[offset] = value & 255; this[offset + 1] = value >>> 8; return offset + 2; @@ -1503,8 +1425,7 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 2, 32767, -32768); + if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); this[offset] = value >>> 8; this[offset + 1] = value & 255; return offset + 2; @@ -1512,8 +1433,7 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 2147483647, -2147483648); + if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); this[offset] = value & 255; this[offset + 1] = value >>> 8; this[offset + 2] = value >>> 16; @@ -1523,10 +1443,8 @@ var require_buffer = __commonJS({ Buffer2.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; - if (!noAssert) - checkInt(this, value, offset, 4, 2147483647, -2147483648); - if (value < 0) - value = 4294967295 + value + 1; + if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); + if (value < 0) value = 4294967295 + value + 1; this[offset] = value >>> 24; this[offset + 1] = value >>> 16; this[offset + 2] = value >>> 8; @@ -1540,10 +1458,8 @@ var require_buffer = __commonJS({ return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); }); function checkIEEE754(buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) - throw new RangeError("Index out of range"); - if (offset < 0) - throw new RangeError("Index out of range"); + if (offset + ext > buf.length) throw new RangeError("Index out of range"); + if (offset < 0) throw new RangeError("Index out of range"); } function writeFloat(buf, value, offset, littleEndian, noAssert) { value = +value; @@ -1576,31 +1492,20 @@ var require_buffer = __commonJS({ return writeDouble(this, value, offset, false, noAssert); }; Buffer2.prototype.copy = function copy2(target, targetStart, start, end) { - if (!Buffer2.isBuffer(target)) - throw new TypeError("argument should be a Buffer"); - if (!start) - start = 0; - if (!end && end !== 0) - end = this.length; - if (targetStart >= target.length) - targetStart = target.length; - if (!targetStart) - targetStart = 0; - if (end > 0 && end < start) - end = start; - if (end === start) - return 0; - if (target.length === 0 || this.length === 0) - return 0; + if (!Buffer2.isBuffer(target)) throw new TypeError("argument should be a Buffer"); + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + if (end === start) return 0; + if (target.length === 0 || this.length === 0) return 0; if (targetStart < 0) { throw new RangeError("targetStart out of bounds"); } - if (start < 0 || start >= this.length) - throw new RangeError("Index out of range"); - if (end < 0) - throw new RangeError("sourceEnd out of bounds"); - if (end > this.length) - end = this.length; + if (start < 0 || start >= this.length) throw new RangeError("Index out of range"); + if (end < 0) throw new RangeError("sourceEnd out of bounds"); + if (end > this.length) end = this.length; if (target.length - targetStart < end - start) { end = target.length - targetStart + start; } @@ -1651,8 +1556,7 @@ var require_buffer = __commonJS({ } start = start >>> 0; end = end === void 0 ? this.length : end >>> 0; - if (!val) - val = 0; + if (!val) val = 0; let i; if (typeof val === "number") { for (i = start; i < end; ++i) { @@ -1791,8 +1695,7 @@ var require_buffer = __commonJS({ function base64clean(str) { str = str.split("=")[0]; str = str.trim().replace(INVALID_BASE64_RE, ""); - if (str.length < 2) - return ""; + if (str.length < 2) return ""; while (str.length % 4 !== 0) { str = str + "="; } @@ -1809,51 +1712,43 @@ var require_buffer = __commonJS({ if (codePoint > 55295 && codePoint < 57344) { if (!leadSurrogate) { if (codePoint > 56319) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); + if ((units -= 3) > -1) bytes.push(239, 191, 189); continue; } else if (i + 1 === length) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); + if ((units -= 3) > -1) bytes.push(239, 191, 189); continue; } leadSurrogate = codePoint; continue; } if (codePoint < 56320) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); + if ((units -= 3) > -1) bytes.push(239, 191, 189); leadSurrogate = codePoint; continue; } codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; } else if (leadSurrogate) { - if ((units -= 3) > -1) - bytes.push(239, 191, 189); + if ((units -= 3) > -1) bytes.push(239, 191, 189); } leadSurrogate = null; if (codePoint < 128) { - if ((units -= 1) < 0) - break; + if ((units -= 1) < 0) break; bytes.push(codePoint); } else if (codePoint < 2048) { - if ((units -= 2) < 0) - break; + if ((units -= 2) < 0) break; bytes.push( codePoint >> 6 | 192, codePoint & 63 | 128 ); } else if (codePoint < 65536) { - if ((units -= 3) < 0) - break; + if ((units -= 3) < 0) break; bytes.push( codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128 ); } else if (codePoint < 1114112) { - if ((units -= 4) < 0) - break; + if ((units -= 4) < 0) break; bytes.push( codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, @@ -1877,8 +1772,7 @@ var require_buffer = __commonJS({ let c, hi, lo; const byteArray = []; for (let i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) - break; + if ((units -= 2) < 0) break; c = str.charCodeAt(i); hi = c >> 8; lo = c % 256; @@ -1893,8 +1787,7 @@ var require_buffer = __commonJS({ function blitBuffer(src, dst, offset, length) { let i; for (i = 0; i < length; ++i) { - if (i + offset >= dst.length || i >= src.length) - break; + if (i + offset >= dst.length || i >= src.length) break; dst[i + offset] = src[i]; } return i; @@ -1939,9 +1832,9 @@ var init_polyfill_buffer = __esm({ } }); -// node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/lib/index.js +// node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/lib/index.js var require_lib = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/lib/index.js"(exports2, module2) { + "node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/lib/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var AsyncLock2 = function(opts) { @@ -1983,8 +1876,8 @@ var require_lib = __commonJS({ if (typeof cb !== "function") { opts = cb; cb = null; - deferred2 = new this.Promise(function(resolve, reject) { - deferredResolve = resolve; + deferred2 = new this.Promise(function(resolve2, reject) { + deferredResolve = resolve2; deferredReject = reject; }); } @@ -2078,12 +1971,13 @@ var require_lib = __commonJS({ if (self2.domainReentrant && !!process.domain) { exec = process.domain.bind(exec); } + var maxPending = opts.maxPending || self2.maxPending; if (!self2.queues[key2]) { self2.queues[key2] = []; exec(true); } else if (self2.domainReentrant && !!process.domain && process.domain === self2.domains[key2]) { exec(false); - } else if (self2.queues[key2].length >= self2.maxPending) { + } else if (self2.queues[key2].length >= maxPending) { done(false, new Error("Too many pending tasks in queue " + key2)); } else { var taskFn = function() { @@ -2131,17 +2025,17 @@ var require_lib = __commonJS({ if (typeof cb === "function") { fnx(cb); } else { - return new this.Promise(function(resolve, reject) { + return new this.Promise(function(resolve2, reject) { if (fnx.length === 1) { fnx(function(err, ret) { if (err) { reject(err); } else { - resolve(ret); + resolve2(ret); } }); } else { - resolve(fnx()); + resolve2(fnx()); } }); } @@ -2164,9 +2058,9 @@ var require_lib = __commonJS({ } }); -// node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/index.js +// node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/index.js var require_async_lock = __commonJS({ - "node_modules/.pnpm/async-lock@1.4.0/node_modules/async-lock/index.js"(exports2, module2) { + "node_modules/.pnpm/async-lock@1.4.1/node_modules/async-lock/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); module2.exports = require_lib(); @@ -2366,10 +2260,8 @@ var require_sha1 = __commonJS({ return num2 << 30 | num2 >>> 2; } function ft(s, b, c, d) { - if (s === 0) - return b & c | ~b & d; - if (s === 2) - return b & c | b & d | c & d; + if (s === 0) return b & c | ~b & d; + if (s === 2) return b & c | b & d | c & d; return b ^ c ^ d; } Sha1.prototype._update = function(M) { @@ -2379,10 +2271,8 @@ var require_sha1 = __commonJS({ var c = this._c | 0; var d = this._d | 0; var e = this._e | 0; - for (var i = 0; i < 16; ++i) - W2[i] = M.readInt32BE(i * 4); - for (; i < 80; ++i) - W2[i] = rotl1(W2[i - 3] ^ W2[i - 8] ^ W2[i - 14] ^ W2[i - 16]); + for (var i = 0; i < 16; ++i) W2[i] = M.readInt32BE(i * 4); + for (; i < 80; ++i) W2[i] = rotl1(W2[i - 3] ^ W2[i - 8] ^ W2[i - 14] ^ W2[i - 16]); for (var j = 0; j < 80; ++j) { var s = ~~(j / 20); var t = rotl5(a) + ft(s, b, c, d) + e + W2[j] + K2[s] | 0; @@ -2453,16 +2343,13 @@ var require_crc32 = __commonJS({ var T0 = signed_crc_table(); function slice_by_16_tables(T) { var c = 0, v = 0, n = 0, table = typeof Int32Array !== "undefined" ? new Int32Array(4096) : new Array(4096); - for (n = 0; n != 256; ++n) - table[n] = T[n]; + for (n = 0; n != 256; ++n) table[n] = T[n]; for (n = 0; n != 256; ++n) { v = T[n]; - for (c = 256 + n; c < 4096; c += 256) - v = table[c] = v >>> 8 ^ T[v & 255]; + for (c = 256 + n; c < 4096; c += 256) v = table[c] = v >>> 8 ^ T[v & 255]; } var out = []; - for (n = 1; n != 16; ++n) - out[n - 1] = typeof Int32Array !== "undefined" ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + for (n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== "undefined" ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); return out; } var TT = slice_by_16_tables(T0); @@ -2471,17 +2358,14 @@ var require_crc32 = __commonJS({ var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; function crc32_bstr(bstr, seed) { var C = seed ^ -1; - for (var i = 0, L = bstr.length; i < L; ) - C = C >>> 8 ^ T0[(C ^ bstr.charCodeAt(i++)) & 255]; + for (var i = 0, L = bstr.length; i < L; ) C = C >>> 8 ^ T0[(C ^ bstr.charCodeAt(i++)) & 255]; return ~C; } function crc32_buf(B, seed) { var C = seed ^ -1, L = B.length - 15, i = 0; - for (; i < L; ) - C = Tf[B[i++] ^ C & 255] ^ Te[B[i++] ^ C >> 8 & 255] ^ Td[B[i++] ^ C >> 16 & 255] ^ Tc[B[i++] ^ C >>> 24] ^ Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + for (; i < L; ) C = Tf[B[i++] ^ C & 255] ^ Te[B[i++] ^ C >> 8 & 255] ^ Td[B[i++] ^ C >> 16 & 255] ^ Tc[B[i++] ^ C >>> 24] ^ Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; L += 15; - while (i < L) - C = C >>> 8 ^ T0[(C ^ B[i++]) & 255]; + while (i < L) C = C >>> 8 ^ T0[(C ^ B[i++]) & 255]; return ~C; } function crc32_str(str, seed) { @@ -4567,8 +4451,7 @@ var require_deflate2 = __commonJS({ var Z_DEFAULT_STRATEGY = 0; var Z_DEFLATED = 8; function Deflate(options) { - if (!(this instanceof Deflate)) - return new Deflate(options); + if (!(this instanceof Deflate)) return new Deflate(options); this.options = utils.assign({ level: Z_DEFAULT_COMPRESSION, method: Z_DEFLATED, @@ -6557,8 +6440,7 @@ var require_inflate2 = __commonJS({ var GZheader = require_gzheader(); var toString = Object.prototype.toString; function Inflate(options) { - if (!(this instanceof Inflate)) - return new Inflate(options); + if (!(this instanceof Inflate)) return new Inflate(options); this.options = utils.assign({ chunkSize: 16384, windowBits: 0, @@ -6741,7 +6623,7 @@ var require_pify = __commonJS({ init_polyfill_buffer(); var processFn = (fn, options) => function(...args) { const P = options.promiseModule; - return new P((resolve, reject) => { + return new P((resolve2, reject) => { if (options.multiArgs) { args.push((...result) => { if (options.errorFirst) { @@ -6749,10 +6631,10 @@ var require_pify = __commonJS({ reject(result); } else { result.shift(); - resolve(result); + resolve2(result); } } else { - resolve(result); + resolve2(result); } }); } else if (options.errorFirst) { @@ -6760,11 +6642,11 @@ var require_pify = __commonJS({ if (error) { reject(error); } else { - resolve(result); + resolve2(result); } }); } else { - args.push(resolve); + args.push(resolve2); } fn.apply(this, args); }); @@ -6800,9 +6682,9 @@ var require_pify = __commonJS({ } }); -// node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js +// node_modules/.pnpm/ignore@5.3.1/node_modules/ignore/index.js var require_ignore = __commonJS({ - "node_modules/.pnpm/ignore@5.2.4/node_modules/ignore/index.js"(exports2, module2) { + "node_modules/.pnpm/ignore@5.3.1/node_modules/ignore/index.js"(exports2, module2) { init_polyfill_buffer(); function makeArray(subject) { return Array.isArray(subject) ? subject : [subject]; @@ -6834,6 +6716,13 @@ var require_ignore = __commonJS({ return slashes.slice(0, length - length % 2); }; var REPLACERS = [ + [ + // remove BOM + // TODO: + // Other similar zero-width characters? + /^\uFEFF/, + () => EMPTY + ], // > Trailing spaces are ignored unless they are quoted with backslash ("\") [ // (a\ ) -> (a ) @@ -7344,14 +7233,14 @@ var require_diff3 = __commonJS({ init_polyfill_buffer(); var onp = require_onp(); function longestCommonSubsequence(file1, file2) { - var diff2 = new onp(file1, file2); - diff2.compose(); - var ses = diff2.getses(); + var diff3 = new onp(file1, file2); + diff3.compose(); + var ses = diff3.getses(); var root2; var prev; var file1RevIdx = file1.length - 1, file2RevIdx = file2.length - 1; for (var i = ses.length - 1; i >= 0; --i) { - if (ses[i].t === diff2.SES_COMMON) { + if (ses[i].t === diff3.SES_COMMON) { if (prev) { prev.chain = { file1index: file1RevIdx, @@ -7369,9 +7258,9 @@ var require_diff3 = __commonJS({ } file1RevIdx--; file2RevIdx--; - } else if (ses[i].t === diff2.SES_DELETE) { + } else if (ses[i].t === diff3.SES_DELETE) { file1RevIdx--; - } else if (ses[i].t === diff2.SES_ADD) { + } else if (ses[i].t === diff3.SES_ADD) { file2RevIdx--; } } @@ -7438,8 +7327,7 @@ var require_diff3 = __commonJS({ while (hunkIndex < hunks.length - 1) { var maybeOverlapping = hunks[hunkIndex + 1]; var maybeLhs = maybeOverlapping[0]; - if (maybeLhs > regionRhs) - break; + if (maybeLhs > regionRhs) break; regionRhs = Math.max(regionRhs, maybeLhs + maybeOverlapping[2]); hunkIndex++; } @@ -7504,13 +7392,11 @@ var require_diff3 = __commonJS({ } } function isTrueConflict(rec) { - if (rec[2] != rec[6]) - return true; + if (rec[2] != rec[6]) return true; var aoff = rec[1]; var boff = rec[5]; for (var j = 0; j < rec[2]; j++) { - if (a[j + aoff] != b[j + boff]) - return true; + if (a[j + aoff] != b[j + boff]) return true; } return false; } @@ -7661,9 +7547,9 @@ var require_ms = __commonJS({ } }); -// node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/common.js +// node_modules/.pnpm/debug@4.3.5_supports-color@9.4.0/node_modules/debug/src/common.js var require_common2 = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/common.js"(exports2, module2) { + "node_modules/.pnpm/debug@4.3.5_supports-color@9.4.0/node_modules/debug/src/common.js"(exports2, module2) { init_polyfill_buffer(); function setup(env) { createDebug.debug = createDebug; @@ -7825,16 +7711,16 @@ var require_common2 = __commonJS({ } }); -// node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/browser.js +// node_modules/.pnpm/debug@4.3.5_supports-color@9.4.0/node_modules/debug/src/browser.js var require_browser = __commonJS({ - "node_modules/.pnpm/debug@4.3.4_supports-color@9.4.0/node_modules/debug/src/browser.js"(exports2, module2) { + "node_modules/.pnpm/debug@4.3.5_supports-color@9.4.0/node_modules/debug/src/browser.js"(exports2, module2) { init_polyfill_buffer(); exports2.formatArgs = formatArgs; exports2.save = save; exports2.load = load; exports2.useColors = useColors; exports2.storage = localstorage(); - exports2.destroy = (() => { + exports2.destroy = /* @__PURE__ */ (() => { let warned = false; return () => { if (!warned) { @@ -8046,9 +7932,7 @@ var require_dist = __commonJS({ "use strict"; init_polyfill_buffer(); function __export3(m) { - for (var p in m) - if (!exports2.hasOwnProperty(p)) - exports2[p] = m[p]; + for (var p in m) if (!exports2.hasOwnProperty(p)) exports2[p] = m[p]; } Object.defineProperty(exports2, "__esModule", { value: true }); __export3(require_src()); @@ -8414,16 +8298,13 @@ var require_lib3 = __commonJS({ var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; - if ("value" in descriptor) - descriptor.writable = 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); + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _slicedToArray(arr, i) { @@ -8433,29 +8314,22 @@ var require_lib3 = __commonJS({ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray2(o, minLen) { - if (!o) - return; - if (typeof o === "string") - return _arrayLikeToArray2(o, minLen); + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) - n = o.constructor.name; - if (n === "Map" || n === "Set") - return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return _arrayLikeToArray2(o, minLen); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray2(o, minLen); } function _arrayLikeToArray2(arr, len) { - if (len == null || len > arr.length) - len = arr.length; + if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { - if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) - return; + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; @@ -8463,26 +8337,22 @@ var require_lib3 = __commonJS({ 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; + if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { - if (!_n && _i["return"] != null) - _i["return"](); + if (!_n && _i["return"] != null) _i["return"](); } finally { - if (_d) - throw _e; + if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { - if (Array.isArray(arr)) - return arr; + if (Array.isArray(arr)) return arr; } var hex = /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?$/; var shortHex = /^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?$/; @@ -8529,16 +8399,11 @@ var require_lib3 = __commonJS({ var x = c * (1 - Math.abs(hprim % 2 - 1)); var m = lprim - c / 2; var _ref = function() { - if (hprim < 1) - return [c, x, 0]; - if (hprim < 2) - return [x, c, 0]; - if (hprim < 3) - return [0, c, x]; - if (hprim < 4) - return [0, x, c]; - if (hprim < 5) - return [x, 0, c]; + if (hprim < 1) return [c, x, 0]; + if (hprim < 2) return [x, c, 0]; + if (hprim < 3) return [0, c, x]; + if (hprim < 4) return [0, x, c]; + if (hprim < 5) return [x, 0, c]; return [c, 0, x]; }(), _ref2 = _slicedToArray(_ref, 3), rprim = _ref2[0], gprim = _ref2[1], bprim = _ref2[2]; return [(rprim + m) * 255, (gprim + m) * 255, (bprim + m) * 255]; @@ -8845,6 +8710,69 @@ var require_object_keys = __commonJS({ } }); +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js +var require_es_errors = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = Error; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js +var require_eval = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = EvalError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js +var require_range = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = RangeError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js +var require_ref = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = ReferenceError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js +var require_syntax = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = SyntaxError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js +var require_type = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = TypeError; + } +}); + +// node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js +var require_uri = __commonJS({ + "node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = URIError; + } +}); + // node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js var require_shams = __commonJS({ "node_modules/.pnpm/has-symbols@1.0.3/node_modules/has-symbols/shams.js"(exports2, module2) { @@ -8923,60 +8851,87 @@ var require_has_symbols = __commonJS({ } }); -// node_modules/.pnpm/has-proto@1.0.1/node_modules/has-proto/index.js +// node_modules/.pnpm/has-proto@1.0.3/node_modules/has-proto/index.js var require_has_proto = __commonJS({ - "node_modules/.pnpm/has-proto@1.0.1/node_modules/has-proto/index.js"(exports2, module2) { + "node_modules/.pnpm/has-proto@1.0.3/node_modules/has-proto/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var test = { + __proto__: null, foo: {} }; var $Object = Object; module2.exports = function hasProto() { - return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object); + return { __proto__: test }.foo === test.foo && !(test instanceof $Object); }; } }); -// node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js +// node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js var require_implementation2 = __commonJS({ - "node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/implementation.js"(exports2, module2) { + "node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; - var slice = Array.prototype.slice; var toStr = Object.prototype.toString; + var max = Math.max; var funcType = "[object Function]"; + var concatty = function concatty2(a, b) { + var arr = []; + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + return arr; + }; + var slicy = function slicy2(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + var joiny = function(arr, joiner) { + var str = ""; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; module2.exports = function bind(that) { var target = this; - if (typeof target !== "function" || toStr.call(target) !== funcType) { + if (typeof target !== "function" || toStr.apply(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } - var args = slice.call(arguments, 1); + var args = slicy(arguments, 1); var bound; var binder = function() { if (this instanceof bound) { var result = target.apply( this, - args.concat(slice.call(arguments)) + concatty(args, arguments) ); if (Object(result) === result) { return result; } return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); } + return target.apply( + that, + concatty(args, arguments) + ); }; - var boundLength = Math.max(0, target.length - args.length); + var boundLength = max(0, target.length - args.length); var boundArgs = []; for (var i = 0; i < boundLength; i++) { - boundArgs.push("$" + i); + boundArgs[i] = "$" + i; } - bound = Function("binder", "return function (" + boundArgs.join(",") + "){ return binder.apply(this,arguments); }")(binder); + bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); if (target.prototype) { var Empty = function Empty2() { }; @@ -8989,9 +8944,9 @@ var require_implementation2 = __commonJS({ } }); -// node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js +// node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js var require_function_bind = __commonJS({ - "node_modules/.pnpm/function-bind@1.1.1/node_modules/function-bind/index.js"(exports2, module2) { + "node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var implementation = require_implementation2(); @@ -8999,25 +8954,32 @@ var require_function_bind = __commonJS({ } }); -// node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js -var require_src2 = __commonJS({ - "node_modules/.pnpm/has@1.0.3/node_modules/has/src/index.js"(exports2, module2) { +// node_modules/.pnpm/hasown@2.0.2/node_modules/hasown/index.js +var require_hasown = __commonJS({ + "node_modules/.pnpm/hasown@2.0.2/node_modules/hasown/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); + var call = Function.prototype.call; + var $hasOwn = Object.prototype.hasOwnProperty; var bind = require_function_bind(); - module2.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); + module2.exports = bind.call(call, $hasOwn); } }); -// node_modules/.pnpm/get-intrinsic@1.2.1/node_modules/get-intrinsic/index.js +// node_modules/.pnpm/get-intrinsic@1.2.4/node_modules/get-intrinsic/index.js var require_get_intrinsic = __commonJS({ - "node_modules/.pnpm/get-intrinsic@1.2.1/node_modules/get-intrinsic/index.js"(exports2, module2) { + "node_modules/.pnpm/get-intrinsic@1.2.4/node_modules/get-intrinsic/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var undefined2; - var $SyntaxError = SyntaxError; + var $Error = require_es_errors(); + var $EvalError = require_eval(); + var $RangeError = require_range(); + var $ReferenceError = require_ref(); + var $SyntaxError = require_syntax(); + var $TypeError = require_type(); + var $URIError = require_uri(); var $Function = Function; - var $TypeError = TypeError; var getEvalledConstructor = function(expressionSyntax) { try { return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); @@ -9055,6 +9017,7 @@ var require_get_intrinsic = __commonJS({ var needsEval = {}; var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); var INTRINSICS = { + __proto__: null, "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, "%Array%": Array, "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, @@ -9075,10 +9038,10 @@ var require_get_intrinsic = __commonJS({ "%decodeURIComponent%": decodeURIComponent, "%encodeURI%": encodeURI, "%encodeURIComponent%": encodeURIComponent, - "%Error%": Error, + "%Error%": $Error, "%eval%": eval, // eslint-disable-line no-eval - "%EvalError%": EvalError, + "%EvalError%": $EvalError, "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, @@ -9100,8 +9063,8 @@ var require_get_intrinsic = __commonJS({ "%parseInt%": parseInt, "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, - "%RangeError%": RangeError, - "%ReferenceError%": ReferenceError, + "%RangeError%": $RangeError, + "%ReferenceError%": $ReferenceError, "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, "%RegExp%": RegExp, "%Set%": typeof Set === "undefined" ? undefined2 : Set, @@ -9118,7 +9081,7 @@ var require_get_intrinsic = __commonJS({ "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, - "%URIError%": URIError, + "%URIError%": $URIError, "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet @@ -9155,6 +9118,7 @@ var require_get_intrinsic = __commonJS({ return value; }; var LEGACY_ALIASES = { + __proto__: null, "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], "%ArrayPrototype%": ["Array", "prototype"], "%ArrayProto_entries%": ["Array", "prototype", "entries"], @@ -9208,7 +9172,7 @@ var require_get_intrinsic = __commonJS({ "%WeakSetPrototype%": ["WeakSet", "prototype"] }; var bind = require_function_bind(); - var hasOwn = require_src2(); + var hasOwn = require_hasown(); var $concat = bind.call(Function.call, Array.prototype.concat); var $spliceApply = bind.call(Function.apply, Array.prototype.splice); var $replace = bind.call(Function.call, String.prototype.replace); @@ -9317,26 +9281,102 @@ var require_get_intrinsic = __commonJS({ } }); -// node_modules/.pnpm/has-property-descriptors@1.0.0/node_modules/has-property-descriptors/index.js -var require_has_property_descriptors = __commonJS({ - "node_modules/.pnpm/has-property-descriptors@1.0.0/node_modules/has-property-descriptors/index.js"(exports2, module2) { +// node_modules/.pnpm/es-define-property@1.0.0/node_modules/es-define-property/index.js +var require_es_define_property = __commonJS({ + "node_modules/.pnpm/es-define-property@1.0.0/node_modules/es-define-property/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var GetIntrinsic = require_get_intrinsic(); - var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); - var hasPropertyDescriptors = function hasPropertyDescriptors2() { - if ($defineProperty) { - try { - $defineProperty({}, "a", { value: 1 }); - return true; - } catch (e) { - return false; - } + var $defineProperty = GetIntrinsic("%Object.defineProperty%", true) || false; + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + } catch (e) { + $defineProperty = false; } - return false; + } + module2.exports = $defineProperty; + } +}); + +// node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js +var require_gopd = __commonJS({ + "node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module2.exports = $gOPD; + } +}); + +// node_modules/.pnpm/define-data-property@1.1.4/node_modules/define-data-property/index.js +var require_define_data_property = __commonJS({ + "node_modules/.pnpm/define-data-property@1.1.4/node_modules/define-data-property/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var $defineProperty = require_es_define_property(); + var $SyntaxError = require_syntax(); + var $TypeError = require_type(); + var gopd = require_gopd(); + module2.exports = function defineDataProperty(obj, property, value) { + if (!obj || typeof obj !== "object" && typeof obj !== "function") { + throw new $TypeError("`obj` must be an object or a function`"); + } + if (typeof property !== "string" && typeof property !== "symbol") { + throw new $TypeError("`property` must be a string or a symbol`"); + } + if (arguments.length > 3 && typeof arguments[3] !== "boolean" && arguments[3] !== null) { + throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null"); + } + if (arguments.length > 4 && typeof arguments[4] !== "boolean" && arguments[4] !== null) { + throw new $TypeError("`nonWritable`, if provided, must be a boolean or null"); + } + if (arguments.length > 5 && typeof arguments[5] !== "boolean" && arguments[5] !== null) { + throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null"); + } + if (arguments.length > 6 && typeof arguments[6] !== "boolean") { + throw new $TypeError("`loose`, if provided, must be a boolean"); + } + var nonEnumerable = arguments.length > 3 ? arguments[3] : null; + var nonWritable = arguments.length > 4 ? arguments[4] : null; + var nonConfigurable = arguments.length > 5 ? arguments[5] : null; + var loose = arguments.length > 6 ? arguments[6] : false; + var desc = !!gopd && gopd(obj, property); + if ($defineProperty) { + $defineProperty(obj, property, { + configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable, + enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable, + value, + writable: nonWritable === null && desc ? desc.writable : !nonWritable + }); + } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) { + obj[property] = value; + } else { + throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable."); + } + }; + } +}); + +// node_modules/.pnpm/has-property-descriptors@1.0.2/node_modules/has-property-descriptors/index.js +var require_has_property_descriptors = __commonJS({ + "node_modules/.pnpm/has-property-descriptors@1.0.2/node_modules/has-property-descriptors/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var $defineProperty = require_es_define_property(); + var hasPropertyDescriptors = function hasPropertyDescriptors2() { + return !!$defineProperty; }; hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { - if (!hasPropertyDescriptors()) { + if (!$defineProperty) { return null; } try { @@ -9349,21 +9389,20 @@ var require_has_property_descriptors = __commonJS({ } }); -// node_modules/.pnpm/define-properties@1.2.0/node_modules/define-properties/index.js +// node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js var require_define_properties = __commonJS({ - "node_modules/.pnpm/define-properties@1.2.0/node_modules/define-properties/index.js"(exports2, module2) { + "node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var keys = require_object_keys(); var hasSymbols = typeof Symbol === "function" && typeof Symbol("foo") === "symbol"; var toStr = Object.prototype.toString; var concat = Array.prototype.concat; - var origDefineProperty = Object.defineProperty; + var defineDataProperty = require_define_data_property(); var isFunction2 = function(fn) { return typeof fn === "function" && toStr.call(fn) === "[object Function]"; }; - var hasPropertyDescriptors = require_has_property_descriptors()(); - var supportsDescriptors = origDefineProperty && hasPropertyDescriptors; + var supportsDescriptors = require_has_property_descriptors()(); var defineProperty = function(object, name, value, predicate) { if (name in object) { if (predicate === true) { @@ -9375,14 +9414,9 @@ var require_define_properties = __commonJS({ } } if (supportsDescriptors) { - origDefineProperty(object, name, { - configurable: true, - enumerable: false, - value, - writable: true - }); + defineDataProperty(object, name, value, true); } else { - object[name] = value; + defineDataProperty(object, name, value); } }; var defineProperties = function(object, map) { @@ -9400,39 +9434,84 @@ var require_define_properties = __commonJS({ } }); -// node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/index.js +// node_modules/.pnpm/set-function-length@1.2.2/node_modules/set-function-length/index.js +var require_set_function_length = __commonJS({ + "node_modules/.pnpm/set-function-length@1.2.2/node_modules/set-function-length/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var GetIntrinsic = require_get_intrinsic(); + var define2 = require_define_data_property(); + var hasDescriptors = require_has_property_descriptors()(); + var gOPD = require_gopd(); + var $TypeError = require_type(); + var $floor = GetIntrinsic("%Math.floor%"); + module2.exports = function setFunctionLength(fn, length) { + if (typeof fn !== "function") { + throw new $TypeError("`fn` is not a function"); + } + if (typeof length !== "number" || length < 0 || length > 4294967295 || $floor(length) !== length) { + throw new $TypeError("`length` must be a positive 32-bit integer"); + } + var loose = arguments.length > 2 && !!arguments[2]; + var functionLengthIsConfigurable = true; + var functionLengthIsWritable = true; + if ("length" in fn && gOPD) { + var desc = gOPD(fn, "length"); + if (desc && !desc.configurable) { + functionLengthIsConfigurable = false; + } + if (desc && !desc.writable) { + functionLengthIsWritable = false; + } + } + if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) { + if (hasDescriptors) { + define2( + /** @type {Parameters[0]} */ + fn, + "length", + length, + true, + true + ); + } else { + define2( + /** @type {Parameters[0]} */ + fn, + "length", + length + ); + } + } + return fn; + }; + } +}); + +// node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/index.js var require_call_bind = __commonJS({ - "node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/index.js"(exports2, module2) { + "node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var bind = require_function_bind(); var GetIntrinsic = require_get_intrinsic(); + var setFunctionLength = require_set_function_length(); + var $TypeError = require_type(); var $apply = GetIntrinsic("%Function.prototype.apply%"); var $call = GetIntrinsic("%Function.prototype.call%"); var $reflectApply = GetIntrinsic("%Reflect.apply%", true) || bind.call($call, $apply); - var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); - var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); + var $defineProperty = require_es_define_property(); var $max = GetIntrinsic("%Math.max%"); - if ($defineProperty) { - try { - $defineProperty({}, "a", { value: 1 }); - } catch (e) { - $defineProperty = null; - } - } module2.exports = function callBind(originalFunction) { - var func = $reflectApply(bind, $call, arguments); - if ($gOPD && $defineProperty) { - var desc = $gOPD(func, "length"); - if (desc.configurable) { - $defineProperty( - func, - "length", - { value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) } - ); - } + if (typeof originalFunction !== "function") { + throw new $TypeError("a function is required"); } - return func; + var func = $reflectApply(bind, $call, arguments); + return setFunctionLength( + func, + 1 + $max(0, originalFunction.length - (arguments.length - 1)), + true + ); }; var applyBind = function applyBind2() { return $reflectApply(bind, $apply, arguments); @@ -9445,9 +9524,9 @@ var require_call_bind = __commonJS({ } }); -// node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/callBound.js +// node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/callBound.js var require_callBound = __commonJS({ - "node_modules/.pnpm/call-bind@1.0.2/node_modules/call-bind/callBound.js"(exports2, module2) { + "node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/callBound.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var GetIntrinsic = require_get_intrinsic(); @@ -9463,9 +9542,9 @@ var require_callBound = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/implementation.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/implementation.js var require_implementation3 = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/implementation.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/implementation.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var objectKeys = require_object_keys(); @@ -9509,9 +9588,9 @@ var require_implementation3 = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/polyfill.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/polyfill.js var require_polyfill = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/polyfill.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/polyfill.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var implementation = require_implementation3(); @@ -9559,9 +9638,9 @@ var require_polyfill = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/shim.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/shim.js var require_shim = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/shim.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/shim.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var define2 = require_define_properties(); @@ -9580,9 +9659,9 @@ var require_shim = __commonJS({ } }); -// node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/index.js +// node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/index.js var require_object = __commonJS({ - "node_modules/.pnpm/object.assign@4.1.4/node_modules/object.assign/index.js"(exports2, module2) { + "node_modules/.pnpm/object.assign@4.1.5/node_modules/object.assign/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var defineProperties = require_define_properties(); @@ -9637,16 +9716,54 @@ var require_functions_have_names = __commonJS({ } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/implementation.js -var require_implementation4 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/implementation.js"(exports2, module2) { +// node_modules/.pnpm/set-function-name@2.0.2/node_modules/set-function-name/index.js +var require_set_function_name = __commonJS({ + "node_modules/.pnpm/set-function-name@2.0.2/node_modules/set-function-name/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); + var define2 = require_define_data_property(); + var hasDescriptors = require_has_property_descriptors()(); var functionsHaveConfigurableNames = require_functions_have_names().functionsHaveConfigurableNames(); + var $TypeError = require_type(); + module2.exports = function setFunctionName(fn, name) { + if (typeof fn !== "function") { + throw new $TypeError("`fn` is not a function"); + } + var loose = arguments.length > 2 && !!arguments[2]; + if (!loose || functionsHaveConfigurableNames) { + if (hasDescriptors) { + define2( + /** @type {Parameters[0]} */ + fn, + "name", + name, + true, + true + ); + } else { + define2( + /** @type {Parameters[0]} */ + fn, + "name", + name + ); + } + } + return fn; + }; + } +}); + +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/implementation.js +var require_implementation4 = __commonJS({ + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/implementation.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var setFunctionName = require_set_function_name(); + var $TypeError = require_type(); var $Object = Object; - var $TypeError = TypeError; - module2.exports = function flags() { - if (this != null && this !== $Object(this)) { + module2.exports = setFunctionName(function flags() { + if (this == null || this !== $Object(this)) { throw new $TypeError("RegExp.prototype.flags getter called on non-object"); } var result = ""; @@ -9675,16 +9792,13 @@ var require_implementation4 = __commonJS({ result += "y"; } return result; - }; - if (functionsHaveConfigurableNames && Object.defineProperty) { - Object.defineProperty(module2.exports, "name", { value: "get flags" }); - } + }, "get flags", true); } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/polyfill.js +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/polyfill.js var require_polyfill2 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/polyfill.js"(exports2, module2) { + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/polyfill.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var implementation = require_implementation4(); @@ -9716,9 +9830,9 @@ var require_polyfill2 = __commonJS({ } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/shim.js +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/shim.js var require_shim2 = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/shim.js"(exports2, module2) { + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/shim.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var supportsDescriptors = require_define_properties().supportsDescriptors; @@ -9747,9 +9861,9 @@ var require_shim2 = __commonJS({ } }); -// node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/index.js +// node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/index.js var require_regexp_prototype = __commonJS({ - "node_modules/.pnpm/regexp.prototype.flags@1.5.0/node_modules/regexp.prototype.flags/index.js"(exports2, module2) { + "node_modules/.pnpm/regexp.prototype.flags@1.5.2/node_modules/regexp.prototype.flags/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var define2 = require_define_properties(); @@ -9767,9 +9881,9 @@ var require_regexp_prototype = __commonJS({ } }); -// node_modules/.pnpm/has-tostringtag@1.0.0/node_modules/has-tostringtag/shams.js +// node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js var require_shams2 = __commonJS({ - "node_modules/.pnpm/has-tostringtag@1.0.0/node_modules/has-tostringtag/shams.js"(exports2, module2) { + "node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var hasSymbols = require_shams(); @@ -9807,16 +9921,16 @@ var require_is_arguments = __commonJS({ } }); -// (disabled):node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/util.inspect +// (disabled):node_modules/.pnpm/object-inspect@1.13.2/node_modules/object-inspect/util.inspect var require_util = __commonJS({ - "(disabled):node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/util.inspect"() { + "(disabled):node_modules/.pnpm/object-inspect@1.13.2/node_modules/object-inspect/util.inspect"() { init_polyfill_buffer(); } }); -// node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/index.js +// node_modules/.pnpm/object-inspect@1.13.2/node_modules/object-inspect/index.js var require_object_inspect = __commonJS({ - "node_modules/.pnpm/object-inspect@1.12.3/node_modules/object-inspect/index.js"(exports2, module2) { + "node_modules/.pnpm/object-inspect@1.13.2/node_modules/object-inspect/index.js"(exports2, module2) { init_polyfill_buffer(); var hasMap = typeof Map === "function" && Map.prototype; var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; @@ -10031,6 +10145,12 @@ var require_object_inspect = __commonJS({ if (isString(obj)) { return markBoxed(inspect(String(obj))); } + if (typeof window !== "undefined" && obj === window) { + return "{ [object Window] }"; + } + if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) { + return "{ [object globalThis] }"; + } if (!isDate(obj) && !isRegExp(obj)) { var ys = arrObjKeys(obj, inspect); var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; @@ -10324,15 +10444,15 @@ var require_object_inspect = __commonJS({ } }); -// node_modules/.pnpm/side-channel@1.0.4/node_modules/side-channel/index.js +// node_modules/.pnpm/side-channel@1.0.6/node_modules/side-channel/index.js var require_side_channel = __commonJS({ - "node_modules/.pnpm/side-channel@1.0.4/node_modules/side-channel/index.js"(exports2, module2) { + "node_modules/.pnpm/side-channel@1.0.6/node_modules/side-channel/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var GetIntrinsic = require_get_intrinsic(); var callBound = require_callBound(); var inspect = require_object_inspect(); - var $TypeError = GetIntrinsic("%TypeError%"); + var $TypeError = require_type(); var $WeakMap = GetIntrinsic("%WeakMap%", true); var $Map = GetIntrinsic("%Map%", true); var $weakMapGet = callBound("WeakMap.prototype.get", true); @@ -10342,10 +10462,13 @@ var require_side_channel = __commonJS({ var $mapSet = callBound("Map.prototype.set", true); var $mapHas = callBound("Map.prototype.has", true); var listGetNode = function(list, key2) { - for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { + var prev = list; + var curr; + for (; (curr = prev.next) !== null; prev = curr) { if (curr.key === key2) { prev.next = curr.next; - curr.next = list.next; + curr.next = /** @type {NonNullable} */ + list.next; list.next = curr; return curr; } @@ -10360,8 +10483,9 @@ var require_side_channel = __commonJS({ if (node) { node.value = value; } else { - objects.next = { - // eslint-disable-line no-param-reassign + objects.next = /** @type {import('.').ListNode} */ + { + // eslint-disable-line no-param-reassign, no-extra-parens key: key2, next: objects.next, value @@ -10436,15 +10560,14 @@ var require_side_channel = __commonJS({ } }); -// node_modules/.pnpm/internal-slot@1.0.5/node_modules/internal-slot/index.js +// node_modules/.pnpm/internal-slot@1.0.7/node_modules/internal-slot/index.js var require_internal_slot = __commonJS({ - "node_modules/.pnpm/internal-slot@1.0.5/node_modules/internal-slot/index.js"(exports2, module2) { + "node_modules/.pnpm/internal-slot@1.0.7/node_modules/internal-slot/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var has = require_src2(); + var hasOwn = require_hasown(); var channel = require_side_channel()(); - var $TypeError = GetIntrinsic("%TypeError%"); + var $TypeError = require_type(); var SLOT = { assert: function(O, slot) { if (!O || typeof O !== "object" && typeof O !== "function") { @@ -10476,7 +10599,7 @@ var require_internal_slot = __commonJS({ throw new $TypeError("`slot` must be a string"); } var slots = channel.get(O); - return !!slots && has(slots, "$" + slot); + return !!slots && hasOwn(slots, "$" + slot); }, set: function(O, slot, V) { if (!O || typeof O !== "object" && typeof O !== "function") { @@ -10580,9 +10703,9 @@ var require_is_string = __commonJS({ } }); -// node_modules/.pnpm/is-map@2.0.2/node_modules/is-map/index.js +// node_modules/.pnpm/is-map@2.0.3/node_modules/is-map/index.js var require_is_map = __commonJS({ - "node_modules/.pnpm/is-map@2.0.2/node_modules/is-map/index.js"(exports2, module2) { + "node_modules/.pnpm/is-map@2.0.3/node_modules/is-map/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var $Map = typeof Map === "function" && Map.prototype ? Map : null; @@ -10621,9 +10744,9 @@ var require_is_map = __commonJS({ } }); -// node_modules/.pnpm/is-set@2.0.2/node_modules/is-set/index.js +// node_modules/.pnpm/is-set@2.0.3/node_modules/is-set/index.js var require_is_set = __commonJS({ - "node_modules/.pnpm/is-set@2.0.2/node_modules/is-set/index.js"(exports2, module2) { + "node_modules/.pnpm/is-set@2.0.3/node_modules/is-set/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var $Map = typeof Map === "function" && Map.prototype ? Map : null; @@ -10822,9 +10945,9 @@ var require_es_get_iterator = __commonJS({ } }); -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/implementation.js +// node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/implementation.js var require_implementation5 = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/implementation.js"(exports2, module2) { + "node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/implementation.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var numberIsNaN = function(value) { @@ -10845,9 +10968,9 @@ var require_implementation5 = __commonJS({ } }); -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/polyfill.js +// node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/polyfill.js var require_polyfill3 = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/polyfill.js"(exports2, module2) { + "node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/polyfill.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var implementation = require_implementation5(); @@ -10857,9 +10980,9 @@ var require_polyfill3 = __commonJS({ } }); -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/shim.js +// node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/shim.js var require_shim3 = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/shim.js"(exports2, module2) { + "node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/shim.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var getPolyfill = require_polyfill3(); @@ -10876,9 +10999,9 @@ var require_shim3 = __commonJS({ } }); -// node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/index.js +// node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/index.js var require_object_is = __commonJS({ - "node_modules/.pnpm/object-is@1.1.5/node_modules/object-is/index.js"(exports2, module2) { + "node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var define2 = require_define_properties(); @@ -10896,352 +11019,19 @@ var require_object_is = __commonJS({ } }); -// node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js -var require_is_callable = __commonJS({ - "node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var fnToStr = Function.prototype.toString; - var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; - var badArrayLike; - var isCallableMarker; - if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { - try { - badArrayLike = Object.defineProperty({}, "length", { - get: function() { - throw isCallableMarker; - } - }); - isCallableMarker = {}; - reflectApply(function() { - throw 42; - }, null, badArrayLike); - } catch (_) { - if (_ !== isCallableMarker) { - reflectApply = null; - } - } - } else { - reflectApply = null; - } - var constructorRegex = /^\s*class\b/; - var isES6ClassFn = function isES6ClassFunction(value) { - try { - var fnStr = fnToStr.call(value); - return constructorRegex.test(fnStr); - } catch (e) { - return false; - } - }; - var tryFunctionObject = function tryFunctionToStr(value) { - try { - if (isES6ClassFn(value)) { - return false; - } - fnToStr.call(value); - return true; - } catch (e) { - return false; - } - }; - var toStr = Object.prototype.toString; - var objectClass = "[object Object]"; - var fnClass = "[object Function]"; - var genClass = "[object GeneratorFunction]"; - var ddaClass = "[object HTMLAllCollection]"; - var ddaClass2 = "[object HTML document.all class]"; - var ddaClass3 = "[object HTMLCollection]"; - var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; - var isIE68 = !(0 in [,]); - var isDDA = function isDocumentDotAll() { - return false; - }; - if (typeof document === "object") { - all = document.all; - if (toStr.call(all) === toStr.call(document.all)) { - isDDA = function isDocumentDotAll(value) { - if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) { - try { - var str = toStr.call(value); - return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null; - } catch (e) { - } - } - return false; - }; - } - } - var all; - module2.exports = reflectApply ? function isCallable(value) { - if (isDDA(value)) { - return true; - } - if (!value) { - return false; - } - if (typeof value !== "function" && typeof value !== "object") { - return false; - } - try { - reflectApply(value, null, badArrayLike); - } catch (e) { - if (e !== isCallableMarker) { - return false; - } - } - return !isES6ClassFn(value) && tryFunctionObject(value); - } : function isCallable(value) { - if (isDDA(value)) { - return true; - } - if (!value) { - return false; - } - if (typeof value !== "function" && typeof value !== "object") { - return false; - } - if (hasToStringTag) { - return tryFunctionObject(value); - } - if (isES6ClassFn(value)) { - return false; - } - var strClass = toStr.call(value); - if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) { - return false; - } - return tryFunctionObject(value); - }; - } -}); - -// node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js -var require_for_each = __commonJS({ - "node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var isCallable = require_is_callable(); - var toStr = Object.prototype.toString; - var hasOwnProperty = Object.prototype.hasOwnProperty; - var forEachArray = function forEachArray2(array, iterator, receiver) { - for (var i = 0, len = array.length; i < len; i++) { - if (hasOwnProperty.call(array, i)) { - if (receiver == null) { - iterator(array[i], i, array); - } else { - iterator.call(receiver, array[i], i, array); - } - } - } - }; - var forEachString = function forEachString2(string, iterator, receiver) { - for (var i = 0, len = string.length; i < len; i++) { - if (receiver == null) { - iterator(string.charAt(i), i, string); - } else { - iterator.call(receiver, string.charAt(i), i, string); - } - } - }; - var forEachObject = function forEachObject2(object, iterator, receiver) { - for (var k in object) { - if (hasOwnProperty.call(object, k)) { - if (receiver == null) { - iterator(object[k], k, object); - } else { - iterator.call(receiver, object[k], k, object); - } - } - } - }; - var forEach2 = function forEach3(list, iterator, thisArg) { - if (!isCallable(iterator)) { - throw new TypeError("iterator must be a function"); - } - var receiver; - if (arguments.length >= 3) { - receiver = thisArg; - } - if (toStr.call(list) === "[object Array]") { - forEachArray(list, iterator, receiver); - } else if (typeof list === "string") { - forEachString(list, iterator, receiver); - } else { - forEachObject(list, iterator, receiver); - } - }; - module2.exports = forEach2; - } -}); - -// node_modules/.pnpm/available-typed-arrays@1.0.5/node_modules/available-typed-arrays/index.js -var require_available_typed_arrays = __commonJS({ - "node_modules/.pnpm/available-typed-arrays@1.0.5/node_modules/available-typed-arrays/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var possibleNames = [ - "BigInt64Array", - "BigUint64Array", - "Float32Array", - "Float64Array", - "Int16Array", - "Int32Array", - "Int8Array", - "Uint16Array", - "Uint32Array", - "Uint8Array", - "Uint8ClampedArray" - ]; - var g = typeof globalThis === "undefined" ? global : globalThis; - module2.exports = function availableTypedArrays() { - var out = []; - for (var i = 0; i < possibleNames.length; i++) { - if (typeof g[possibleNames[i]] === "function") { - out[out.length] = possibleNames[i]; - } - } - return out; - }; - } -}); - -// node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js -var require_gopd = __commonJS({ - "node_modules/.pnpm/gopd@1.0.1/node_modules/gopd/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var GetIntrinsic = require_get_intrinsic(); - var $gOPD = GetIntrinsic("%Object.getOwnPropertyDescriptor%", true); - if ($gOPD) { - try { - $gOPD([], "length"); - } catch (e) { - $gOPD = null; - } - } - module2.exports = $gOPD; - } -}); - -// node_modules/.pnpm/which-typed-array@1.1.11/node_modules/which-typed-array/index.js -var require_which_typed_array = __commonJS({ - "node_modules/.pnpm/which-typed-array@1.1.11/node_modules/which-typed-array/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var forEach2 = require_for_each(); - var availableTypedArrays = require_available_typed_arrays(); - var callBind = require_call_bind(); - var callBound = require_callBound(); - var gOPD = require_gopd(); - var $toString = callBound("Object.prototype.toString"); - var hasToStringTag = require_shams2()(); - var g = typeof globalThis === "undefined" ? global : globalThis; - var typedArrays = availableTypedArrays(); - var $slice = callBound("String.prototype.slice"); - var getPrototypeOf = Object.getPrototypeOf; - var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { - for (var i = 0; i < array.length; i += 1) { - if (array[i] === value) { - return i; - } - } - return -1; - }; - var cache = { __proto__: null }; - if (hasToStringTag && gOPD && getPrototypeOf) { - forEach2(typedArrays, function(typedArray) { - var arr = new g[typedArray](); - if (Symbol.toStringTag in arr) { - var proto = getPrototypeOf(arr); - var descriptor = gOPD(proto, Symbol.toStringTag); - if (!descriptor) { - var superProto = getPrototypeOf(proto); - descriptor = gOPD(superProto, Symbol.toStringTag); - } - cache["$" + typedArray] = callBind(descriptor.get); - } - }); - } else { - forEach2(typedArrays, function(typedArray) { - var arr = new g[typedArray](); - cache["$" + typedArray] = callBind(arr.slice); - }); - } - var tryTypedArrays = function tryAllTypedArrays(value) { - var found = false; - forEach2(cache, function(getter, typedArray) { - if (!found) { - try { - if ("$" + getter(value) === typedArray) { - found = $slice(typedArray, 1); - } - } catch (e) { - } - } - }); - return found; - }; - var trySlices = function tryAllSlices(value) { - var found = false; - forEach2(cache, function(getter, name) { - if (!found) { - try { - getter(value); - found = $slice(name, 1); - } catch (e) { - } - } - }); - return found; - }; - module2.exports = function whichTypedArray(value) { - if (!value || typeof value !== "object") { - return false; - } - if (!hasToStringTag) { - var tag2 = $slice($toString(value), 8, -1); - if ($indexOf(typedArrays, tag2) > -1) { - return tag2; - } - if (tag2 !== "Object") { - return false; - } - return trySlices(value); - } - if (!gOPD) { - return null; - } - return tryTypedArrays(value); - }; - } -}); - -// node_modules/.pnpm/is-typed-array@1.1.12/node_modules/is-typed-array/index.js -var require_is_typed_array = __commonJS({ - "node_modules/.pnpm/is-typed-array@1.1.12/node_modules/is-typed-array/index.js"(exports2, module2) { - "use strict"; - init_polyfill_buffer(); - var whichTypedArray = require_which_typed_array(); - module2.exports = function isTypedArray(value) { - return !!whichTypedArray(value); - }; - } -}); - -// node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js +// node_modules/.pnpm/is-array-buffer@3.0.4/node_modules/is-array-buffer/index.js var require_is_array_buffer = __commonJS({ - "node_modules/.pnpm/is-array-buffer@3.0.2/node_modules/is-array-buffer/index.js"(exports2, module2) { + "node_modules/.pnpm/is-array-buffer@3.0.4/node_modules/is-array-buffer/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var callBind = require_call_bind(); var callBound = require_callBound(); var GetIntrinsic = require_get_intrinsic(); - var isTypedArray = require_is_typed_array(); - var $ArrayBuffer = GetIntrinsic("ArrayBuffer", true); - var $Float32Array = GetIntrinsic("Float32Array", true); + var $ArrayBuffer = GetIntrinsic("%ArrayBuffer%", true); var $byteLength = callBound("ArrayBuffer.prototype.byteLength", true); - var abSlice = $ArrayBuffer && !$byteLength && new $ArrayBuffer().slice; - var $abSlice = abSlice && callBind(abSlice); + var $toString = callBound("Object.prototype.toString"); + var abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice; + var $abSlice = !!abSlice && callBind(abSlice); module2.exports = $byteLength || $abSlice ? function isArrayBuffer(obj) { if (!obj || typeof obj !== "object") { return false; @@ -11256,12 +11046,8 @@ var require_is_array_buffer = __commonJS({ } catch (e) { return false; } - } : $Float32Array ? function IsArrayBuffer(obj) { - try { - return new $Float32Array(obj).buffer === obj && !isTypedArray(obj); - } catch (e) { - return typeof obj === "object" && e.name === "RangeError"; - } + } : $ArrayBuffer ? function isArrayBuffer(obj) { + return $toString(obj) === "[object ArrayBuffer]"; } : function isArrayBuffer(obj) { return false; }; @@ -11347,9 +11133,9 @@ var require_is_regex = __commonJS({ } }); -// node_modules/.pnpm/is-shared-array-buffer@1.0.2/node_modules/is-shared-array-buffer/index.js +// node_modules/.pnpm/is-shared-array-buffer@1.0.3/node_modules/is-shared-array-buffer/index.js var require_is_shared_array_buffer = __commonJS({ - "node_modules/.pnpm/is-shared-array-buffer@1.0.2/node_modules/is-shared-array-buffer/index.js"(exports2, module2) { + "node_modules/.pnpm/is-shared-array-buffer@1.0.3/node_modules/is-shared-array-buffer/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var callBound = require_callBound(); @@ -11549,9 +11335,9 @@ var require_which_boxed_primitive = __commonJS({ } }); -// node_modules/.pnpm/is-weakmap@2.0.1/node_modules/is-weakmap/index.js +// node_modules/.pnpm/is-weakmap@2.0.2/node_modules/is-weakmap/index.js var require_is_weakmap = __commonJS({ - "node_modules/.pnpm/is-weakmap@2.0.1/node_modules/is-weakmap/index.js"(exports2, module2) { + "node_modules/.pnpm/is-weakmap@2.0.2/node_modules/is-weakmap/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var $WeakMap = typeof WeakMap === "function" && WeakMap.prototype ? WeakMap : null; @@ -11590,9 +11376,9 @@ var require_is_weakmap = __commonJS({ } }); -// node_modules/.pnpm/is-weakset@2.0.2/node_modules/is-weakset/index.js +// node_modules/.pnpm/is-weakset@2.0.3/node_modules/is-weakset/index.js var require_is_weakset = __commonJS({ - "node_modules/.pnpm/is-weakset@2.0.2/node_modules/is-weakset/index.js"(exports2, module2) { + "node_modules/.pnpm/is-weakset@2.0.3/node_modules/is-weakset/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var GetIntrinsic = require_get_intrinsic(); @@ -11628,9 +11414,9 @@ var require_is_weakset = __commonJS({ } }); -// node_modules/.pnpm/which-collection@1.0.1/node_modules/which-collection/index.js +// node_modules/.pnpm/which-collection@1.0.2/node_modules/which-collection/index.js var require_which_collection = __commonJS({ - "node_modules/.pnpm/which-collection@1.0.1/node_modules/which-collection/index.js"(exports2, module2) { + "node_modules/.pnpm/which-collection@1.0.2/node_modules/which-collection/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var isMap = require_is_map(); @@ -11657,9 +11443,337 @@ var require_which_collection = __commonJS({ } }); -// node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js +// node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js +var require_is_callable = __commonJS({ + "node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var fnToStr = Function.prototype.toString; + var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; + var badArrayLike; + var isCallableMarker; + if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { + try { + badArrayLike = Object.defineProperty({}, "length", { + get: function() { + throw isCallableMarker; + } + }); + isCallableMarker = {}; + reflectApply(function() { + throw 42; + }, null, badArrayLike); + } catch (_) { + if (_ !== isCallableMarker) { + reflectApply = null; + } + } + } else { + reflectApply = null; + } + var constructorRegex = /^\s*class\b/; + var isES6ClassFn = function isES6ClassFunction(value) { + try { + var fnStr = fnToStr.call(value); + return constructorRegex.test(fnStr); + } catch (e) { + return false; + } + }; + var tryFunctionObject = function tryFunctionToStr(value) { + try { + if (isES6ClassFn(value)) { + return false; + } + fnToStr.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var objectClass = "[object Object]"; + var fnClass = "[object Function]"; + var genClass = "[object GeneratorFunction]"; + var ddaClass = "[object HTMLAllCollection]"; + var ddaClass2 = "[object HTML document.all class]"; + var ddaClass3 = "[object HTMLCollection]"; + var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; + var isIE68 = !(0 in [,]); + var isDDA = function isDocumentDotAll() { + return false; + }; + if (typeof document === "object") { + all = document.all; + if (toStr.call(all) === toStr.call(document.all)) { + isDDA = function isDocumentDotAll(value) { + if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) { + try { + var str = toStr.call(value); + return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null; + } catch (e) { + } + } + return false; + }; + } + } + var all; + module2.exports = reflectApply ? function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + try { + reflectApply(value, null, badArrayLike); + } catch (e) { + if (e !== isCallableMarker) { + return false; + } + } + return !isES6ClassFn(value) && tryFunctionObject(value); + } : function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + if (hasToStringTag) { + return tryFunctionObject(value); + } + if (isES6ClassFn(value)) { + return false; + } + var strClass = toStr.call(value); + if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) { + return false; + } + return tryFunctionObject(value); + }; + } +}); + +// node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js +var require_for_each = __commonJS({ + "node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var isCallable = require_is_callable(); + var toStr = Object.prototype.toString; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var forEachArray = function forEachArray2(array, iterator, receiver) { + for (var i = 0, len = array.length; i < len; i++) { + if (hasOwnProperty.call(array, i)) { + if (receiver == null) { + iterator(array[i], i, array); + } else { + iterator.call(receiver, array[i], i, array); + } + } + } + }; + var forEachString = function forEachString2(string, iterator, receiver) { + for (var i = 0, len = string.length; i < len; i++) { + if (receiver == null) { + iterator(string.charAt(i), i, string); + } else { + iterator.call(receiver, string.charAt(i), i, string); + } + } + }; + var forEachObject = function forEachObject2(object, iterator, receiver) { + for (var k in object) { + if (hasOwnProperty.call(object, k)) { + if (receiver == null) { + iterator(object[k], k, object); + } else { + iterator.call(receiver, object[k], k, object); + } + } + } + }; + var forEach2 = function forEach3(list, iterator, thisArg) { + if (!isCallable(iterator)) { + throw new TypeError("iterator must be a function"); + } + var receiver; + if (arguments.length >= 3) { + receiver = thisArg; + } + if (toStr.call(list) === "[object Array]") { + forEachArray(list, iterator, receiver); + } else if (typeof list === "string") { + forEachString(list, iterator, receiver); + } else { + forEachObject(list, iterator, receiver); + } + }; + module2.exports = forEach2; + } +}); + +// node_modules/.pnpm/possible-typed-array-names@1.0.0/node_modules/possible-typed-array-names/index.js +var require_possible_typed_array_names = __commonJS({ + "node_modules/.pnpm/possible-typed-array-names@1.0.0/node_modules/possible-typed-array-names/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + module2.exports = [ + "Float32Array", + "Float64Array", + "Int8Array", + "Int16Array", + "Int32Array", + "Uint8Array", + "Uint8ClampedArray", + "Uint16Array", + "Uint32Array", + "BigInt64Array", + "BigUint64Array" + ]; + } +}); + +// node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js +var require_available_typed_arrays = __commonJS({ + "node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var possibleNames = require_possible_typed_array_names(); + var g = typeof globalThis === "undefined" ? global : globalThis; + module2.exports = function availableTypedArrays() { + var out = []; + for (var i = 0; i < possibleNames.length; i++) { + if (typeof g[possibleNames[i]] === "function") { + out[out.length] = possibleNames[i]; + } + } + return out; + }; + } +}); + +// node_modules/.pnpm/which-typed-array@1.1.15/node_modules/which-typed-array/index.js +var require_which_typed_array = __commonJS({ + "node_modules/.pnpm/which-typed-array@1.1.15/node_modules/which-typed-array/index.js"(exports2, module2) { + "use strict"; + init_polyfill_buffer(); + var forEach2 = require_for_each(); + var availableTypedArrays = require_available_typed_arrays(); + var callBind = require_call_bind(); + var callBound = require_callBound(); + var gOPD = require_gopd(); + var $toString = callBound("Object.prototype.toString"); + var hasToStringTag = require_shams2()(); + var g = typeof globalThis === "undefined" ? global : globalThis; + var typedArrays = availableTypedArrays(); + var $slice = callBound("String.prototype.slice"); + var getPrototypeOf = Object.getPrototypeOf; + var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { + for (var i = 0; i < array.length; i += 1) { + if (array[i] === value) { + return i; + } + } + return -1; + }; + var cache = { __proto__: null }; + if (hasToStringTag && gOPD && getPrototypeOf) { + forEach2(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr) { + var proto = getPrototypeOf(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor) { + var superProto = getPrototypeOf(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + cache["$" + typedArray] = callBind(descriptor.get); + } + }); + } else { + forEach2(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + var fn = arr.slice || arr.set; + if (fn) { + cache["$" + typedArray] = callBind(fn); + } + }); + } + var tryTypedArrays = function tryAllTypedArrays(value) { + var found = false; + forEach2( + // eslint-disable-next-line no-extra-parens + /** @type {Record<`\$${TypedArrayName}`, Getter>} */ + /** @type {any} */ + cache, + /** @type {(getter: Getter, name: `\$${import('.').TypedArrayName}`) => void} */ + function(getter, typedArray) { + if (!found) { + try { + if ("$" + getter(value) === typedArray) { + found = $slice(typedArray, 1); + } + } catch (e) { + } + } + } + ); + return found; + }; + var trySlices = function tryAllSlices(value) { + var found = false; + forEach2( + // eslint-disable-next-line no-extra-parens + /** @type {Record<`\$${TypedArrayName}`, Getter>} */ + /** @type {any} */ + cache, + /** @type {(getter: typeof cache, name: `\$${import('.').TypedArrayName}`) => void} */ + function(getter, name) { + if (!found) { + try { + getter(value); + found = $slice(name, 1); + } catch (e) { + } + } + } + ); + return found; + }; + module2.exports = function whichTypedArray(value) { + if (!value || typeof value !== "object") { + return false; + } + if (!hasToStringTag) { + var tag2 = $slice($toString(value), 8, -1); + if ($indexOf(typedArrays, tag2) > -1) { + return tag2; + } + if (tag2 !== "Object") { + return false; + } + return trySlices(value); + } + if (!gOPD) { + return null; + } + return tryTypedArrays(value); + }; + } +}); + +// node_modules/.pnpm/array-buffer-byte-length@1.0.1/node_modules/array-buffer-byte-length/index.js var require_array_buffer_byte_length = __commonJS({ - "node_modules/.pnpm/array-buffer-byte-length@1.0.0/node_modules/array-buffer-byte-length/index.js"(exports2, module2) { + "node_modules/.pnpm/array-buffer-byte-length@1.0.1/node_modules/array-buffer-byte-length/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var callBound = require_callBound(); @@ -11674,9 +11788,9 @@ var require_array_buffer_byte_length = __commonJS({ } }); -// node_modules/.pnpm/deep-equal@2.2.2/node_modules/deep-equal/index.js +// node_modules/.pnpm/deep-equal@2.2.3/node_modules/deep-equal/index.js var require_deep_equal = __commonJS({ - "node_modules/.pnpm/deep-equal@2.2.2/node_modules/deep-equal/index.js"(exports2, module2) { + "node_modules/.pnpm/deep-equal@2.2.3/node_modules/deep-equal/index.js"(exports2, module2) { "use strict"; init_polyfill_buffer(); var assign2 = require_object(); @@ -12915,7 +13029,7 @@ var require_template = __commonJS({ v: hoganEscape, // triple stache t: coerceToString, - render: function render2(context, partials, indent2) { + render: function render(context, partials, indent2) { return this.ri([context], partials || {}, indent2); }, // render internal -- a hook for overrides that catches partials too @@ -12940,8 +13054,7 @@ var require_template = __commonJS({ } this.partials[symbol].base = template; if (partial.subs) { - if (!partials.stackText) - partials.stackText = {}; + if (!partials.stackText) partials.stackText = {}; for (key in partial.subs) { if (!partials.stackText[key]) { partials.stackText[key] = this.activeSub !== void 0 && partials.stackText[this.activeSub] ? partials.stackText[this.activeSub] : this.text; @@ -13124,8 +13237,7 @@ var require_template = __commonJS({ partial.stackSubs = stackSubs; partial.subsText = stackText; for (key2 in subs) { - if (!stackSubs[key2]) - stackSubs[key2] = subs[key2]; + if (!stackSubs[key2]) stackSubs[key2] = subs[key2]; } for (key2 in stackSubs) { partial.subs[key2] = stackSubs[key2]; @@ -13133,8 +13245,7 @@ var require_template = __commonJS({ stackPartials = stackPartials || {}; partial.stackPartials = stackPartials; for (key2 in partials) { - if (!stackPartials[key2]) - stackPartials[key2] = partials[key2]; + if (!stackPartials[key2]) stackPartials[key2] = partials[key2]; } for (key2 in stackPartials) { partial.partials[key2] = stackPartials[key2]; @@ -13167,9 +13278,9 @@ var require_hogan = __commonJS({ } }); -// node_modules/.pnpm/feather-icons@4.29.1/node_modules/feather-icons/dist/feather.js +// node_modules/.pnpm/feather-icons@4.29.2/node_modules/feather-icons/dist/feather.js var require_feather = __commonJS({ - "node_modules/.pnpm/feather-icons@4.29.1/node_modules/feather-icons/dist/feather.js"(exports2, module2) { + "node_modules/.pnpm/feather-icons@4.29.2/node_modules/feather-icons/dist/feather.js"(exports2, module2) { init_polyfill_buffer(); (function webpackUniversalModuleDefinition(root2, factory) { if (typeof exports2 === "object" && typeof module2 === "object") @@ -13249,7 +13360,7 @@ var require_feather = __commonJS({ /*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, table, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */ /***/ function(module3) { - module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; + module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "table": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; } ), /***/ @@ -13293,8 +13404,7 @@ var require_feather = __commonJS({ } } function _parse(resultSet, arg) { - if (!arg) - return; + if (!arg) return; var argType = typeof arg; if (argType === "string") { _parseString(resultSet, arg); @@ -13440,8 +13550,7 @@ var require_feather = __commonJS({ var index2 = 0; var iteratorMethod = getIteratorMethod(O); var length, result, step, iterator; - if (mapping) - mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2); + if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2); if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { iterator = iteratorMethod.call(O); result = new C(); @@ -13490,18 +13599,13 @@ var require_feather = __commonJS({ var length = toLength(O.length); var index2 = toAbsoluteIndex(fromIndex, length); var value; - if (IS_INCLUDES && el != el) - while (length > index2) { - value = O[index2++]; - if (value != value) - return true; - } - else - for (; length > index2; index2++) - if (IS_INCLUDES || index2 in O) { - if (O[index2] === el) - return IS_INCLUDES || index2 || 0; - } + if (IS_INCLUDES && el != el) while (length > index2) { + value = O[index2++]; + if (value != value) return true; + } + else for (; length > index2; index2++) if (IS_INCLUDES || index2 in O) { + if (O[index2] === el) return IS_INCLUDES || index2 || 0; + } return !IS_INCLUDES && -1; }; }; @@ -13521,8 +13625,7 @@ var require_feather = __commonJS({ ); module3.exports = function(fn, that, length) { aFunction(fn); - if (that === void 0) - return fn; + if (that === void 0) return fn; switch (length) { case 0: return function() { @@ -13564,8 +13667,7 @@ var require_feather = __commonJS({ return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); } catch (error) { var returnMethod = iterator["return"]; - if (returnMethod !== void 0) - anObject(returnMethod.call(iterator)); + if (returnMethod !== void 0) anObject(returnMethod.call(iterator)); throw error; } }; @@ -13604,8 +13706,7 @@ var require_feather = __commonJS({ } catch (error) { } module3.exports = function(exec, SKIP_CLOSING) { - if (!SKIP_CLOSING && !SAFE_CLOSING) - return false; + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; var ITERATION_SUPPORT = false; try { var object = {}; @@ -13654,7 +13755,7 @@ var require_feather = __commonJS({ "./node_modules/core-js/internals/well-known-symbol.js" ); var TO_STRING_TAG = wellKnownSymbol("toStringTag"); - var CORRECT_ARGUMENTS = classofRaw(function() { + var CORRECT_ARGUMENTS = classofRaw(/* @__PURE__ */ function() { return arguments; }()) == "Arguments"; var tryGet = function(it, key2) { @@ -13699,8 +13800,7 @@ var require_feather = __commonJS({ var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; for (var i = 0; i < keys.length; i++) { var key2 = keys[i]; - if (!has(target, key2)) - defineProperty(target, key2, getOwnPropertyDescriptor(source, key2)); + if (!has(target, key2)) defineProperty(target, key2, getOwnPropertyDescriptor(source, key2)); } }; } @@ -13807,10 +13907,8 @@ var require_feather = __commonJS({ ); module3.exports = function(object, key2, value) { var propertyKey = toPrimitive(key2); - if (propertyKey in object) - definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); - else - object[propertyKey] = value; + if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else object[propertyKey] = value; }; } ), @@ -13879,10 +13977,8 @@ var require_feather = __commonJS({ module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { createIteratorConstructor(IteratorConstructor, NAME, next); var getIterationMethod = function(KIND) { - if (KIND === DEFAULT && defaultIterator) - return defaultIterator; - if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) - return IterablePrototype[KIND]; + if (KIND === DEFAULT && defaultIterator) return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; switch (KIND) { case KEYS: return function keys() { @@ -13919,8 +14015,7 @@ var require_feather = __commonJS({ } } setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); - if (IS_PURE) - Iterators[TO_STRING_TAG] = returnThis; + if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; } } if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { @@ -13939,14 +14034,12 @@ var require_feather = __commonJS({ keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), entries: getIterationMethod(ENTRIES) }; - if (FORCED) - for (KEY in methods) { - if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { - redefine(IterablePrototype, KEY, methods[KEY]); - } + if (FORCED) for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); } - else - $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); } return methods; }; @@ -14061,25 +14154,22 @@ var require_feather = __commonJS({ } else { target = (global2[TARGET] || {}).prototype; } - if (target) - for (key2 in source) { - sourceProperty = source[key2]; - if (options.noTargetGet) { - descriptor = getOwnPropertyDescriptor(target, key2); - targetProperty = descriptor && descriptor.value; - } else - targetProperty = target[key2]; - FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced); - if (!FORCED && targetProperty !== void 0) { - if (typeof sourceProperty === typeof targetProperty) - continue; - copyConstructorProperties(sourceProperty, targetProperty); - } - if (options.sham || targetProperty && targetProperty.sham) { - hide(sourceProperty, "sham", true); - } - redefine(target, key2, sourceProperty, options); + if (target) for (key2 in source) { + sourceProperty = source[key2]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key2); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key2]; + FORCED = isForced(GLOBAL ? key2 : TARGET + (STATIC ? "." : "#") + key2, options.forced); + if (!FORCED && targetProperty !== void 0) { + if (typeof sourceProperty === typeof targetProperty) continue; + copyConstructorProperties(sourceProperty, targetProperty); } + if (options.sham || targetProperty && targetProperty.sham) { + hide(sourceProperty, "sham", true); + } + redefine(target, key2, sourceProperty, options); + } }; } ), @@ -14137,8 +14227,7 @@ var require_feather = __commonJS({ ); var ITERATOR = wellKnownSymbol("iterator"); module3.exports = function(it) { - if (it != void 0) - return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)]; + if (it != void 0) return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)]; }; } ), @@ -14484,18 +14573,14 @@ var require_feather = __commonJS({ var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; if ([].keys) { arrayIterator = [].keys(); - if (!("next" in arrayIterator)) - BUGGY_SAFARI_ITERATORS = true; + if (!("next" in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; else { PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); - if (PrototypeOfArrayIteratorPrototype !== Object.prototype) - IteratorPrototype = PrototypeOfArrayIteratorPrototype; + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; } } - if (IteratorPrototype == void 0) - IteratorPrototype = {}; - if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) - hide(IteratorPrototype, ITERATOR, returnThis); + if (IteratorPrototype == void 0) IteratorPrototype = {}; + if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis); module3.exports = { IteratorPrototype, BUGGY_SAFARI_ITERATORS @@ -14606,8 +14691,7 @@ var require_feather = __commonJS({ iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt); iframeDocument.close(); createDict = iframeDocument.F; - while (length--) - delete createDict[PROTOTYPE][enumBugKeys[length]]; + while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; return createDict(); }; module3.exports = Object.create || function create(O, Properties) { @@ -14617,8 +14701,7 @@ var require_feather = __commonJS({ result = new Empty(); Empty[PROTOTYPE] = null; result[IE_PROTO] = O; - } else - result = createDict(); + } else result = createDict(); return Properties === void 0 ? result : defineProperties(result, Properties); }; hiddenKeys[IE_PROTO] = true; @@ -14654,8 +14737,7 @@ var require_feather = __commonJS({ var length = keys.length; var i = 0; var key2; - while (length > i) - definePropertyModule.f(O, key2 = keys[i++], Properties[key2]); + while (length > i) definePropertyModule.f(O, key2 = keys[i++], Properties[key2]); return O; }; } @@ -14689,15 +14771,12 @@ var require_feather = __commonJS({ anObject(O); P = toPrimitive(P, true); anObject(Attributes); - if (IE8_DOM_DEFINE) - try { - return nativeDefineProperty(O, P, Attributes); - } catch (error) { - } - if ("get" in Attributes || "set" in Attributes) - throw TypeError("Accessors not supported"); - if ("value" in Attributes) - O[P] = Attributes.value; + if (IE8_DOM_DEFINE) try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { + } + if ("get" in Attributes || "set" in Attributes) throw TypeError("Accessors not supported"); + if ("value" in Attributes) O[P] = Attributes.value; return O; }; } @@ -14742,13 +14821,11 @@ var require_feather = __commonJS({ exports3.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) - try { - return nativeGetOwnPropertyDescriptor(O, P); - } catch (error) { - } - if (has(O, P)) - return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); + if (IE8_DOM_DEFINE) try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { + } + if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); }; } ), @@ -14813,8 +14890,7 @@ var require_feather = __commonJS({ var ObjectPrototype = Object.prototype; module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) { O = toObject(O); - if (has(O, IE_PROTO)) - return O[IE_PROTO]; + if (has(O, IE_PROTO)) return O[IE_PROTO]; if (typeof O.constructor == "function" && O instanceof O.constructor) { return O.constructor.prototype; } @@ -14852,12 +14928,10 @@ var require_feather = __commonJS({ var i = 0; var result = []; var key2; - for (key2 in O) - !has(hiddenKeys, key2) && has(O, key2) && result.push(key2); - while (names.length > i) - if (has(O, key2 = names[i++])) { - ~arrayIndexOf(result, key2) || result.push(key2); - } + for (key2 in O) !has(hiddenKeys, key2) && has(O, key2) && result.push(key2); + while (names.length > i) if (has(O, key2 = names[i++])) { + ~arrayIndexOf(result, key2) || result.push(key2); + } return result; }; } @@ -14925,10 +14999,8 @@ var require_feather = __commonJS({ } return function setPrototypeOf(O, proto) { validateSetPrototypeOfArguments(O, proto); - if (correctSetter) - setter.call(O, proto); - else - O.__proto__ = proto; + if (correctSetter) setter.call(O, proto); + else O.__proto__ = proto; return O; }; }() : void 0); @@ -15024,28 +15096,23 @@ var require_feather = __commonJS({ }); (module3.exports = function(O, key2, value, options) { var unsafe = options ? !!options.unsafe : false; - var simple2 = options ? !!options.enumerable : false; + var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == "function") { - if (typeof key2 == "string" && !has(value, "name")) - hide(value, "name", key2); + if (typeof key2 == "string" && !has(value, "name")) hide(value, "name", key2); enforceInternalState(value).source = TEMPLATE.join(typeof key2 == "string" ? key2 : ""); } if (O === global2) { - if (simple2) - O[key2] = value; - else - setGlobal(key2, value); + if (simple) O[key2] = value; + else setGlobal(key2, value); return; } else if (!unsafe) { delete O[key2]; } else if (!noTargetGet && O[key2]) { - simple2 = true; + simple = true; } - if (simple2) - O[key2] = value; - else - hide(O, key2, value); + if (simple) O[key2] = value; + else hide(O, key2, value); })(Function.prototype, "toString", function toString() { return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this); }); @@ -15060,8 +15127,7 @@ var require_feather = __commonJS({ /***/ function(module3, exports3) { module3.exports = function(it) { - if (it == void 0) - throw TypeError("Can't call method on " + it); + if (it == void 0) throw TypeError("Can't call method on " + it); return it; }; } @@ -15194,8 +15260,7 @@ var require_feather = __commonJS({ var position = toInteger(pos); var size = S.length; var first2, second; - if (position < 0 || position >= size) - return CONVERT_TO_STRING ? "" : void 0; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? "" : void 0; first2 = S.charCodeAt(position); return first2 < 55296 || first2 > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first2 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first2 - 55296 << 10) + (second - 56320) + 65536; }; @@ -15305,15 +15370,11 @@ var require_feather = __commonJS({ "./node_modules/core-js/internals/is-object.js" ); module3.exports = function(it, S) { - if (!isObject2(it)) - return it; + if (!isObject2(it)) return it; var fn, val; - if (S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) - return val; - if (typeof (fn = it.valueOf) == "function" && !isObject2(val = fn.call(it))) - return val; - if (!S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) - return val; + if (S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == "function" && !isObject2(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == "function" && !isObject2(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; } @@ -15451,8 +15512,7 @@ var require_feather = __commonJS({ var string = state.string; var index2 = state.index; var point; - if (index2 >= string.length) - return { value: void 0, done: true }; + if (index2 >= string.length) return { value: void 0, done: true }; point = codePointAt(string, index2, true); state.index += point.length; return { value: point, done: false }; @@ -15468,14 +15528,13 @@ var require_feather = __commonJS({ /***/ function(module3, exports3) { var g; - g = function() { + g = /* @__PURE__ */ function() { return this; }(); try { g = g || Function("return this")() || (1, eval)("this"); } catch (e) { - if (typeof window === "object") - g = window; + if (typeof window === "object") g = window; } module3.exports = g; } @@ -15514,22 +15573,19 @@ var require_feather = __commonJS({ } return target; }; - var _createClass = function() { + var _createClass = /* @__PURE__ */ 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; + 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); + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); @@ -15710,6 +15766,10 @@ var require_feather = __commonJS({ var elementAttrs = getAttrs(element2); var name = elementAttrs["data-feather"]; delete elementAttrs["data-feather"]; + if (_icons2.default[name] === void 0) { + console.warn("feather: '" + name + "' is not a valid icon"); + return; + } var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml"); var svgElement = svgDocument.querySelector("svg"); @@ -15802,7 +15862,7 @@ __export(main_exports, { module.exports = __toCommonJS(main_exports); init_polyfill_buffer(); -// node_modules/.pnpm/isomorphic-git@1.24.5/node_modules/isomorphic-git/index.js +// node_modules/.pnpm/isomorphic-git@1.27.1/node_modules/isomorphic-git/index.js init_polyfill_buffer(); var import_async_lock = __toESM(require_async_lock(), 1); var import_sha1 = __toESM(require_sha1(), 1); @@ -15957,8 +16017,7 @@ function normalizeMode(mode) { } else { permissions = 420; } - if (type !== 8) - permissions = 0; + if (type !== 8) permissions = 0; return (type << 12) + permissions; } var MAX_UINT32 = 2 ** 32; @@ -16004,8 +16063,7 @@ function normalizeStats(e) { function toHex(buffer2) { let hex = ""; for (const byte of new Uint8Array(buffer2)) { - if (byte < 16) - hex += "0"; + if (byte < 16) hex += "0"; hex += byte.toString(16); } return hex; @@ -16027,8 +16085,7 @@ async function subtleSHA1(buffer2) { async function testSubtleSHA1() { try { const hash2 = await subtleSHA1(new Uint8Array([])); - if (hash2 === "da39a3ee5e6b4b0d3255bfef95601890afd80709") - return true; + if (hash2 === "da39a3ee5e6b4b0d3255bfef95601890afd80709") return true; } catch (_) { } return false; @@ -16128,8 +16185,7 @@ var GitIndex = class _GitIndex { throw new UnsafeFilepathError(entry.path); } let padding = 8 - (reader.tell() - 12) % 8; - if (padding === 0) - padding = 8; + if (padding === 0) padding = 8; while (padding--) { const tmp = reader.readUInt8(); if (tmp !== 0) { @@ -16279,10 +16335,10 @@ var GitIndex = class _GitIndex { return Buffer.concat([main, Buffer.from(sum, "hex")]); } }; -function compareStats(entry, stats) { +function compareStats(entry, stats, filemode = true, trustino = true) { const e = normalizeStats(entry); const s = normalizeStats(stats); - const staleness = e.mode !== s.mode || e.mtimeSeconds !== s.mtimeSeconds || e.ctimeSeconds !== s.ctimeSeconds || e.uid !== s.uid || e.gid !== s.gid || e.ino !== s.ino || e.size !== s.size; + const staleness = filemode && e.mode !== s.mode || e.mtimeSeconds !== s.mtimeSeconds || e.ctimeSeconds !== s.ctimeSeconds || e.uid !== s.uid || e.gid !== s.gid || trustino && e.ino !== s.ino || e.size !== s.size; return staleness; } var lock = null; @@ -16302,13 +16358,10 @@ async function updateCachedIndexFile(fs, filepath, cache) { } async function isIndexStale(fs, filepath, cache) { const savedStats = cache.stats.get(filepath); - if (savedStats === void 0) - return true; + if (savedStats === void 0) return true; const currStats = await fs.lstat(filepath); - if (savedStats === null) - return false; - if (currStats === null) - return false; + if (savedStats === null) return false; + if (currStats === null) return false; return compareStats(savedStats, currStats); } var GitIndexManager = class { @@ -16322,11 +16375,9 @@ var GitIndexManager = class { * @param {function(GitIndex): any} closure */ static async acquire({ fs, gitdir, cache, allowUnmerged = true }, closure) { - if (!cache[IndexCache]) - cache[IndexCache] = createCache(); + if (!cache[IndexCache]) cache[IndexCache] = createCache(); const filepath = `${gitdir}/index`; - if (lock === null) - lock = new import_async_lock.default({ maxPending: Infinity }); + if (lock === null) lock = new import_async_lock.default({ maxPending: Infinity }); let result; let unmergedPaths = []; await lock.acquire(filepath, async () => { @@ -16357,10 +16408,8 @@ function basename(path2) { } function dirname(path2) { const last2 = Math.max(path2.lastIndexOf("/"), path2.lastIndexOf("\\")); - if (last2 === -1) - return "."; - if (last2 === 0) - return "/"; + if (last2 === -1) return "."; + if (last2 === 0) return "/"; return path2.slice(0, last2); } function flatFileListToDirectoryStructure(files) { @@ -16376,8 +16425,7 @@ function flatFileListToDirectoryStructure(files) { }; inodes.set(name, dir); dir.parent = mkdir(dirname(name)); - if (dir.parent && dir.parent !== dir) - dir.parent.children.push(dir); + if (dir.parent && dir.parent !== dir) dir.parent.children.push(dir); } return inodes.get(name); }; @@ -16392,8 +16440,7 @@ function flatFileListToDirectoryStructure(files) { parent: mkdir(dirname(name)), children: [] }; - if (file.parent) - file.parent.children.push(file); + if (file.parent) file.parent.children.push(file); inodes.set(name, file); } return inodes.get(name); @@ -16457,10 +16504,8 @@ var GitWalkerIndex = class { const filepath = entry._fullpath; const tree = await this.treePromise; const inode = tree.get(filepath); - if (!inode) - return null; - if (inode.type === "blob") - return null; + if (!inode) return null; + if (inode.type === "blob") return null; if (inode.type !== "tree") { throw new Error(`ENOTDIR: not a directory, scandir '${filepath}'`); } @@ -16646,8 +16691,7 @@ var GitRefSpec = class _GitRefSpec { return this.localPath + remoteBranch.replace(this.remotePath, ""); } } else { - if (remoteBranch === this.remotePath) - return this.localPath; + if (remoteBranch === this.remotePath) return this.localPath; } return null; } @@ -16657,8 +16701,7 @@ var GitRefSpec = class _GitRefSpec { return this.remotePath + localBranch.replace(this.localPath, ""); } } else { - if (localBranch === this.localPath) - return this.remotePath; + if (localBranch === this.localPath) return this.remotePath; } return null; } @@ -16713,8 +16756,24 @@ function compareRefNames(a, b) { } return tmp; } +var memo = /* @__PURE__ */ new Map(); function normalizePath(path2) { - return path2.replace(/\/\.\//g, "/").replace(/\/{2,}/g, "/").replace(/^\/\.$/, "/").replace(/^\.\/$/, ".").replace(/^\.\//, "").replace(/\/\.$/, "").replace(/(.+)\/$/, "$1").replace(/^$/, "."); + let normalizedPath = memo.get(path2); + if (!normalizedPath) { + normalizedPath = normalizePathInternal(path2); + memo.set(path2, normalizedPath); + } + return normalizedPath; +} +function normalizePathInternal(path2) { + path2 = path2.split("/./").join("/").replace(/\/{2,}/g, "/"); + if (path2 === "/.") return "/"; + if (path2 === "./") return "."; + if (path2.startsWith("./")) path2 = path2.slice(2); + if (path2.endsWith("/.")) path2 = path2.slice(0, -2); + if (path2.length > 1 && path2.endsWith("/")) path2 = path2.slice(0, -1); + if (path2 === "") return "."; + return path2; } function join(...parts) { return normalizePath(parts.map(normalizePath).join("/")); @@ -16722,20 +16781,15 @@ function join(...parts) { var num = (val) => { val = val.toLowerCase(); let n = parseInt(val); - if (val.endsWith("k")) - n *= 1024; - if (val.endsWith("m")) - n *= 1024 * 1024; - if (val.endsWith("g")) - n *= 1024 * 1024 * 1024; + if (val.endsWith("k")) n *= 1024; + if (val.endsWith("m")) n *= 1024 * 1024; + if (val.endsWith("g")) n *= 1024 * 1024 * 1024; return n; }; var bool = (val) => { val = val.trim().toLowerCase(); - if (val === "true" || val === "yes" || val === "on") - return true; - if (val === "false" || val === "no" || val === "off") - return false; + if (val === "true" || val === "yes" || val === "on") return true; + if (val === "false" || val === "no" || val === "off") return false; throw Error( `Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${val}` ); @@ -16826,7 +16880,7 @@ var GitConfig = class _GitConfig { constructor(text2) { let section = null; let subsection = null; - this.parsedConfig = text2.split("\n").map((line) => { + this.parsedConfig = text2 ? text2.split("\n").map((line) => { let name = null; let value = null; const trimmedLine = line.trim(); @@ -16845,7 +16899,7 @@ var GitConfig = class _GitConfig { } const path2 = getPath(section, subsection, name); return { line, isSection, section, subsection, name, value, path: path2 }; - }); + }) : []; } static from(text2) { return new _GitConfig(text2); @@ -16967,6 +17021,11 @@ var refpaths = (ref) => [ `refs/remotes/${ref}/HEAD` ]; var GIT_FILES = ["config", "description", "index", "shallow", "commondir"]; +var lock$1; +async function acquireLock(ref, callback) { + if (lock$1 === void 0) lock$1 = new import_async_lock.default(); + return lock$1.acquire(ref, callback); +} var GitRefManager = class _GitRefManager { static async updateRemoteRefs({ fs, @@ -17048,8 +17107,11 @@ var GitRefManager = class _GitRefManager { } } for (const [key2, value] of actualRefsToWrite) { - await fs.write(join(gitdir, key2), `${value.trim()} -`, "utf8"); + await acquireLock( + key2, + async () => fs.write(join(gitdir, key2), `${value.trim()} +`, "utf8") + ); } return { pruned }; } @@ -17058,19 +17120,28 @@ var GitRefManager = class _GitRefManager { if (!value.match(/[0-9a-f]{40}/)) { throw new InvalidOidError(value); } - await fs.write(join(gitdir, ref), `${value.trim()} -`, "utf8"); + await acquireLock( + ref, + async () => fs.write(join(gitdir, ref), `${value.trim()} +`, "utf8") + ); } static async writeSymbolicRef({ fs, gitdir, ref, value }) { - await fs.write(join(gitdir, ref), `ref: ${value.trim()} -`, "utf8"); + await acquireLock( + ref, + async () => fs.write(join(gitdir, ref), `ref: ${value.trim()} +`, "utf8") + ); } static async deleteRef({ fs, gitdir, ref }) { return _GitRefManager.deleteRefs({ fs, gitdir, refs: [ref] }); } static async deleteRefs({ fs, gitdir, refs }) { await Promise.all(refs.map((ref) => fs.rm(join(gitdir, ref)))); - let text2 = await fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" }); + let text2 = await acquireLock( + "packed-refs", + async () => fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" }) + ); const packed = GitPackedRefs.from(text2); const beforeSize = packed.refs.size; for (const ref of refs) { @@ -17080,7 +17151,10 @@ var GitRefManager = class _GitRefManager { } if (packed.refs.size < beforeSize) { text2 = packed.toString(); - await fs.write(`${gitdir}/packed-refs`, text2, { encoding: "utf8" }); + await acquireLock( + "packed-refs", + async () => fs.write(`${gitdir}/packed-refs`, text2, { encoding: "utf8" }) + ); } } /** @@ -17098,7 +17172,6 @@ var GitRefManager = class _GitRefManager { return ref; } } - let sha; if (ref.startsWith("ref: ")) { ref = ref.slice("ref: ".length); return _GitRefManager.resolve({ fs, gitdir, ref, depth }); @@ -17109,7 +17182,10 @@ var GitRefManager = class _GitRefManager { const packedMap = await _GitRefManager.packedRefs({ fs, gitdir }); const allpaths = refpaths(ref).filter((p) => !GIT_FILES.includes(p)); for (const ref2 of allpaths) { - sha = await fs.read(`${gitdir}/${ref2}`, { encoding: "utf8" }) || packedMap.get(ref2); + const sha = await acquireLock( + ref2, + async () => await fs.read(`${gitdir}/${ref2}`, { encoding: "utf8" }) || packedMap.get(ref2) + ); if (sha) { return _GitRefManager.resolve({ fs, gitdir, ref: sha.trim(), depth }); } @@ -17131,18 +17207,19 @@ var GitRefManager = class _GitRefManager { const packedMap = await _GitRefManager.packedRefs({ fs, gitdir }); const allpaths = refpaths(ref); for (const ref2 of allpaths) { - if (await fs.exists(`${gitdir}/${ref2}`)) - return ref2; - if (packedMap.has(ref2)) - return ref2; + const refExists = await acquireLock( + ref2, + async () => fs.exists(`${gitdir}/${ref2}`) + ); + if (refExists) return ref2; + if (packedMap.has(ref2)) return ref2; } throw new NotFoundError(ref); } static async expandAgainstMap({ ref, map }) { const allpaths = refpaths(ref); for (const ref2 of allpaths) { - if (await map.has(ref2)) - return ref2; + if (await map.has(ref2)) return ref2; } throw new NotFoundError(ref); } @@ -17175,7 +17252,10 @@ var GitRefManager = class _GitRefManager { throw new NotFoundError(ref); } static async packedRefs({ fs, gitdir }) { - const text2 = await fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" }); + const text2 = await acquireLock( + "packed-refs", + async () => fs.read(`${gitdir}/packed-refs`, { encoding: "utf8" }) + ); const packed = GitPackedRefs.from(text2); return packed.refs; } @@ -17258,8 +17338,7 @@ function parseBuffer(buffer2) { ); } let mode = buffer2.slice(cursor, space2).toString("utf8"); - if (mode === "40000") - mode = "040000"; + if (mode === "40000") mode = "040000"; const type = mode2type$1(mode); const path2 = buffer2.slice(space2 + 1, nullchar).toString("utf8"); if (path2.includes("\\") || path2.includes("/")) { @@ -17275,16 +17354,11 @@ function limitModeToAllowed(mode) { if (typeof mode === "number") { mode = mode.toString(8); } - if (mode.match(/^0?4.*/)) - return "040000"; - if (mode.match(/^1006.*/)) - return "100644"; - if (mode.match(/^1007.*/)) - return "100755"; - if (mode.match(/^120.*/)) - return "120000"; - if (mode.match(/^160.*/)) - return "160000"; + if (mode.match(/^0?4.*/)) return "040000"; + if (mode.match(/^1006.*/)) return "100644"; + if (mode.match(/^1007.*/)) return "100755"; + if (mode.match(/^120.*/)) return "120000"; + if (mode.match(/^160.*/)) return "160000"; throw new InternalError(`Could not understand file mode: ${mode}`); } function nudgeIntoShape(entry) { @@ -17432,8 +17506,7 @@ function readOp(reader, source) { if (byte & COPY) { const offset = readCompactLE(reader, byte & OFFS, 4); let size = readCompactLE(reader, (byte & SIZE) >> 4, 3); - if (size === 0) - size = 65536; + if (size === 0) size = 65536; return source.slice(offset, offset + size); } else { return reader.slice(byte); @@ -17468,6 +17541,9 @@ function getIterator(iterable) { } var StreamReader = class { constructor(stream) { + if (typeof Buffer === "undefined") { + throw new Error("Missing Buffer dependency"); + } this.stream = getIterator(stream); this.buffer = null; this.cursor = 0; @@ -17483,36 +17559,28 @@ var StreamReader = class { return this._discardedBytes + this.cursor; } async byte() { - if (this.eof()) - return; - if (!this.started) - await this._init(); + if (this.eof()) return; + if (!this.started) await this._init(); if (this.cursor === this.buffer.length) { await this._loadnext(); - if (this._ended) - return; + if (this._ended) return; } this._moveCursor(1); return this.buffer[this.undoCursor]; } async chunk() { - if (this.eof()) - return; - if (!this.started) - await this._init(); + if (this.eof()) return; + if (!this.started) await this._init(); if (this.cursor === this.buffer.length) { await this._loadnext(); - if (this._ended) - return; + if (this._ended) return; } this._moveCursor(this.buffer.length); return this.buffer.slice(this.undoCursor, this.cursor); } async read(n) { - if (this.eof()) - return; - if (!this.started) - await this._init(); + if (this.eof()) return; + if (!this.started) await this._init(); if (this.cursor + n > this.buffer.length) { this._trim(); await this._accumulate(n); @@ -17521,10 +17589,8 @@ var StreamReader = class { return this.buffer.slice(this.undoCursor, this.cursor); } async skip(n) { - if (this.eof()) - return; - if (!this.started) - await this._init(); + if (this.eof()) return; + if (!this.started) await this._init(); if (this.cursor + n > this.buffer.length) { this._trim(); await this._accumulate(n); @@ -17539,6 +17605,7 @@ var StreamReader = class { let { done, value } = await this.stream.next(); if (done) { this._ended = true; + if (!value) return Buffer.alloc(0); } if (value) { value = Buffer.from(value); @@ -17559,13 +17626,11 @@ var StreamReader = class { } } async _accumulate(n) { - if (this._ended) - return; + if (this._ended) return; const buffers = [this.buffer]; while (this.cursor + n > lengthBuffers(buffers)) { const nextbuffer = await this._next(); - if (this._ended) - break; + if (this._ended) break; buffers.push(nextbuffer); } this.buffer = Buffer.concat(buffers); @@ -17597,16 +17662,14 @@ async function listpack(stream, onData) { } let numObjects = await reader.read(4); numObjects = numObjects.readUInt32BE(0); - if (numObjects < 1) - return; + if (numObjects < 1) return; while (!reader.eof() && numObjects--) { const offset = reader.tell(); const { type, length, ofs, reference } = await parseHeader(reader); const inflator = new import_pako.default.Inflate(); while (!inflator.result) { const chunk = await reader.chunk(); - if (!chunk) - break; + if (!chunk) break; inflator.push(chunk, false); if (inflator.err) { throw new InternalError(`Pako error: ${inflator.msg}`); @@ -17680,8 +17743,7 @@ async function browserInflate(buffer2) { function testDecompressionStream() { try { const ds = new DecompressionStream("deflate"); - if (ds) - return true; + if (ds) return true; } catch (_) { } return false; @@ -17769,8 +17831,7 @@ var GitPackIndex = class _GitPackIndex { let totalObjectCount = null; let lastPercent = null; await listpack([pack], async ({ data, type, reference, offset, num: num2 }) => { - if (totalObjectCount === null) - totalObjectCount = num2; + if (totalObjectCount === null) totalObjectCount = num2; const percent = Math.floor( (totalObjectCount - num2) * 100 / totalObjectCount ); @@ -17836,8 +17897,7 @@ var GitPackIndex = class _GitPackIndex { count++; lastPercent = percent; const o = offsetToObject[offset]; - if (o.oid) - continue; + if (o.oid) continue; try { p.readDepth = 0; p.externalReadDepth = 0; @@ -17866,8 +17926,7 @@ var GitPackIndex = class _GitPackIndex { for (let i = 0; i < 256; i++) { let count = 0; for (const hash2 of this.hashes) { - if (parseInt(hash2.slice(0, 2), 16) <= i) - count++; + if (parseInt(hash2.slice(0, 2), 16) <= i) count++; } fanoutBuffer.writeUInt32BE(count); } @@ -17988,8 +18047,7 @@ function readPackIndex({ emitter, emitterPrefix }) { - if (!cache[PackfileCache]) - cache[PackfileCache] = /* @__PURE__ */ new Map(); + if (!cache[PackfileCache]) cache[PackfileCache] = /* @__PURE__ */ new Map(); let p = cache[PackfileCache].get(filename); if (!p) { p = loadPackIndex({ @@ -18021,8 +18079,7 @@ async function readObjectPacked({ filename: indexFile, getExternalRefDelta }); - if (p.error) - throw new InternalError(p.error); + if (p.error) throw new InternalError(p.error); if (p.offsets.has(oid)) { if (!p.pack) { const packFile = indexFile.replace(/idx$/, "pack"); @@ -18059,9 +18116,10 @@ async function _readObject({ oid, getExternalRefDelta }); - } - if (!result) { - throw new NotFoundError(oid); + if (!result) { + throw new NotFoundError(oid); + } + return result; } if (format === "deflated") { return result; @@ -18070,27 +18128,23 @@ async function _readObject({ result.object = Buffer.from(await inflate(result.object)); result.format = "wrapped"; } - if (result.format === "wrapped") { - if (format === "wrapped" && result.format === "wrapped") { - return result; - } - const sha = await shasum(result.object); - if (sha !== oid) { - throw new InternalError( - `SHA check failed! Expected ${oid}, computed ${sha}` - ); - } - const { object, type } = GitObject.unwrap(result.object); - result.type = type; - result.object = object; - result.format = "content"; + if (format === "wrapped") { + return result; } - if (result.format === "content") { - if (format === "content") - return result; - return; + const sha = await shasum(result.object); + if (sha !== oid) { + throw new InternalError( + `SHA check failed! Expected ${oid}, computed ${sha}` + ); } - throw new InternalError(`invalid format "${result.format}"`); + const { object, type } = GitObject.unwrap(result.object); + result.type = type; + result.object = object; + result.format = "content"; + if (format === "content") { + return result; + } + throw new InternalError(`invalid requested format "${format}"`); } var AlreadyExistsError = class _AlreadyExistsError extends BaseError { /** @@ -18248,13 +18302,16 @@ MergeNotSupportedError.code = "MergeNotSupportedError"; var MergeConflictError = class _MergeConflictError extends BaseError { /** * @param {Array} filepaths + * @param {Array} bothModified + * @param {Array} deleteByUs + * @param {Array} deleteByTheirs */ - constructor(filepaths) { + constructor(filepaths, bothModified, deleteByUs, deleteByTheirs) { super( `Automatic merge failed with one or more merge conflicts in the following files: ${filepaths.toString()}. Fix conflicts then commit the result.` ); this.code = this.name = _MergeConflictError.code; - this.data = { filepaths }; + this.data = { filepaths, bothModified, deleteByUs, deleteByTheirs }; } }; MergeConflictError.code = "MergeConflictError"; @@ -18396,13 +18453,26 @@ var IndexResetError = class _IndexResetError extends BaseError { */ constructor(filepath) { super( - `Could not merge index: Entry for '${filepath}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged chages.` + `Could not merge index: Entry for '${filepath}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged changes.` ); this.code = this.name = _IndexResetError.code; this.data = { filepath }; } }; IndexResetError.code = "IndexResetError"; +var NoCommitError = class _NoCommitError extends BaseError { + /** + * @param {string} ref + */ + constructor(ref) { + super( + `"${ref}" does not point to any commit. You're maybe working on a repository with no commits yet. ` + ); + this.code = this.name = _NoCommitError.code; + this.data = { ref }; + } +}; +NoCommitError.code = "NoCommitError"; var Errors = /* @__PURE__ */ Object.freeze({ __proto__: null, AlreadyExistsError, @@ -18435,7 +18505,8 @@ var Errors = /* @__PURE__ */ Object.freeze({ UrlParseError, UserCanceledError, UnmergedPathsError, - IndexResetError + IndexResetError, + NoCommitError }); function formatAuthor({ name, email, timestamp, timezoneOffset }) { timezoneOffset = formatTimezoneOffset(timezoneOffset); @@ -18448,10 +18519,8 @@ function formatTimezoneOffset(minutes) { minutes -= hours * 60; let strHours = String(hours); let strMinutes = String(minutes); - if (strHours.length < 2) - strHours = "0" + strHours; - if (strMinutes.length < 2) - strMinutes = "0" + strMinutes; + if (strHours.length < 2) strHours = "0" + strHours; + if (strMinutes.length < 2) strMinutes = "0" + strMinutes; return (sign === -1 ? "-" : "+") + strHours + strMinutes; } function simpleSign(n) { @@ -18557,13 +18626,11 @@ ${obj.gpgsig ? obj.gpgsig : ""}`; } withoutSignature() { const tag2 = normalizeNewlines(this._tag); - if (tag2.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1) - return tag2; + if (tag2.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1) return tag2; return tag2.slice(0, tag2.lastIndexOf("\n-----BEGIN PGP SIGNATURE-----")); } gpgsig() { - if (this._tag.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1) - return; + if (this._tag.indexOf("\n-----BEGIN PGP SIGNATURE-----") === -1) return; const signature = this._tag.slice( this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"), this._tag.indexOf("-----END PGP SIGNATURE-----") + "-----END PGP SIGNATURE-----".length @@ -18700,8 +18767,7 @@ var GitCommit = class _GitCommit { } withoutSignature() { const commit2 = normalizeNewlines(this._commit); - if (commit2.indexOf("\ngpgsig") === -1) - return commit2; + if (commit2.indexOf("\ngpgsig") === -1) return commit2; const headers = commit2.slice(0, commit2.indexOf("\ngpgsig")); const message = commit2.slice( commit2.indexOf("-----END PGP SIGNATURE-----\n") + "-----END PGP SIGNATURE-----\n".length @@ -18796,11 +18862,9 @@ var GitWalkerRepo = class { const { fs, cache, gitdir } = this; const map = await this.mapPromise; const obj = map.get(filepath); - if (!obj) - throw new Error(`No obj for ${filepath}`); + if (!obj) throw new Error(`No obj for ${filepath}`); const oid = obj.oid; - if (!oid) - throw new Error(`No oid for obj ${JSON.stringify(obj)}`); + if (!oid) throw new Error(`No oid for obj ${JSON.stringify(obj)}`); if (obj.type !== "tree") { return null; } @@ -18903,8 +18967,7 @@ var GitWalkerFs = class { const filepath = entry._fullpath; const { fs, dir } = this; const names = await fs.readdir(join(dir, filepath)); - if (names === null) - return null; + if (names === null) return null; return names.map((name) => join(filepath, name)); } async type(entry) { @@ -18944,11 +19007,13 @@ var GitWalkerFs = class { } async content(entry) { if (entry._content === false) { - const { fs, dir } = this; + const { fs, dir, gitdir } = this; if (await entry.type() === "tree") { entry._content = void 0; } else { - const content = await fs.read(`${dir}/${entry._fullpath}`); + const config = await GitConfigManager.get({ fs, gitdir }); + const autocrlf = await config.get("core.autocrlf"); + const content = await fs.read(`${dir}/${entry._fullpath}`, { autocrlf }); entry._actualSize = content.length; if (entry._stat && entry._stat.size === -1) { entry._stat.size = entry._actualSize; @@ -18965,7 +19030,10 @@ var GitWalkerFs = class { await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { const stage = index2.entriesMap.get(entry._fullpath); const stats = await entry.stat(); - if (!stage || compareStats(stats, stage)) { + const config = await GitConfigManager.get({ fs, gitdir }); + const filemode = await config.get("core.filemode"); + const trustino = typeof process !== "undefined" ? !(process.platform === "win32") : true; + if (!stage || compareStats(stats, stage, filemode, trustino)) { const content = await entry.content(); if (content === void 0) { oid = void 0; @@ -18973,7 +19041,7 @@ var GitWalkerFs = class { oid = await shasum( GitObject.wrap({ type: "blob", object: await entry.content() }) ); - if (stage && oid === stage.oid && stats.mode === stage.mode && compareStats(stats, stage)) { + if (stage && oid === stage.oid && (!filemode || stats.mode === stage.mode) && compareStats(stats, stage, filemode, trustino)) { index2.insert({ filepath: entry._fullpath, stats, @@ -19010,8 +19078,7 @@ var RunningMinimum = class { this.value = null; } consider(value) { - if (value === null || value === void 0) - return; + if (value === null || value === void 0) return; if (this.value === null) { this.value = value; } else if (value < this.value) { @@ -19033,8 +19100,7 @@ function* unionOfIterators(sets) { min.consider(heads[i]); } } - if (min.value === null) - return; + if (min.value === null) return; while (true) { const result = []; minimum = min.value; @@ -19051,8 +19117,7 @@ function* unionOfIterators(sets) { } } yield result; - if (min.value === null) - return; + if (min.value === null) return; } } async function _walk({ @@ -19066,8 +19131,7 @@ async function _walk({ // The default reducer is a flatmap that filters out undefineds. reduce = async (parent, children2) => { const flatten = flat(children2); - if (parent !== void 0) - flatten.unshift(parent); + if (parent !== void 0) flatten.unshift(parent); return flatten; }, // The default iterate function walks all children concurrently @@ -19112,8 +19176,7 @@ async function rmRecursive(fs, filepath) { entries.map((entry) => { const subpath = join(filepath, entry); return fs.lstat(subpath).then((stat) => { - if (!stat) - return; + if (!stat) return; return stat.isDirectory() ? rmRecursive(fs, subpath) : fs.rm(subpath); }); }) @@ -19164,25 +19227,18 @@ function bindFs(target, fs) { } } if (isPromiseFs(fs)) { - if (fs.rm) - target._rm = fs.rm.bind(fs); - else if (fs.rmdir.length > 1) - target._rm = fs.rmdir.bind(fs); - else - target._rm = rmRecursive.bind(null, target); + if (fs.rm) target._rm = fs.rm.bind(fs); + else if (fs.rmdir.length > 1) target._rm = fs.rmdir.bind(fs); + else target._rm = rmRecursive.bind(null, target); } else { - if (fs.rm) - target._rm = (0, import_pify.default)(fs.rm.bind(fs)); - else if (fs.rmdir.length > 2) - target._rm = (0, import_pify.default)(fs.rmdir.bind(fs)); - else - target._rm = rmRecursive.bind(null, target); + if (fs.rm) target._rm = (0, import_pify.default)(fs.rm.bind(fs)); + else if (fs.rmdir.length > 2) target._rm = (0, import_pify.default)(fs.rmdir.bind(fs)); + else target._rm = rmRecursive.bind(null, target); } } var FileSystem = class { constructor(fs) { - if (typeof fs._original_unwrapped_fs !== "undefined") - return fs; + if (typeof fs._original_unwrapped_fs !== "undefined") return fs; const promises = Object.getOwnPropertyDescriptor(fs, "promises"); if (promises && promises.enumerable) { bindFs(this, fs.promises); @@ -19193,7 +19249,7 @@ var FileSystem = class { } /** * Return true if a file exists, false if it doesn't exist. - * Rethrows errors that aren't related to file existance. + * Rethrows errors that aren't related to file existence. */ async exists(filepath, options = {}) { try { @@ -19219,6 +19275,14 @@ var FileSystem = class { async read(filepath, options = {}) { try { let buffer2 = await this._readFile(filepath, options); + if (options.autocrlf === "true") { + try { + buffer2 = new TextDecoder("utf8", { fatal: true }).decode(buffer2); + buffer2 = buffer2.replace(/\r\n/g, "\n"); + buffer2 = new TextEncoder().encode(buffer2); + } catch (error) { + } + } if (typeof buffer2 !== "string") { buffer2 = Buffer.from(buffer2); } @@ -19251,16 +19315,12 @@ var FileSystem = class { await this._mkdir(filepath); return; } catch (err) { - if (err === null) - return; - if (err.code === "EEXIST") - return; - if (_selfCall) - throw err; + if (err === null) return; + if (err.code === "EEXIST") return; + if (_selfCall) throw err; if (err.code === "ENOENT") { const parent = dirname(filepath); - if (parent === "." || parent === "/" || parent === filepath) - throw err; + if (parent === "." || parent === "/" || parent === filepath) throw err; await this.mkdir(parent); await this.mkdir(filepath, true); } @@ -19273,8 +19333,7 @@ var FileSystem = class { try { await this._unlink(filepath); } catch (err) { - if (err.code !== "ENOENT") - throw err; + if (err.code !== "ENOENT") throw err; } } /** @@ -19288,8 +19347,7 @@ var FileSystem = class { await this._rmdir(filepath); } } catch (err) { - if (err.code !== "ENOENT") - throw err; + if (err.code !== "ENOENT") throw err; } } /** @@ -19301,8 +19359,7 @@ var FileSystem = class { names.sort(compareStrings); return names; } catch (err) { - if (err.code === "ENOTDIR") - return null; + if (err.code === "ENOTDIR") return null; return []; } } @@ -19324,7 +19381,7 @@ var FileSystem = class { } /** * Return the Stats of a file/symlink if it exists, otherwise returns null. - * Rethrows errors that aren't related to file existance. + * Rethrows errors that aren't related to file existence. */ async lstat(filename) { try { @@ -19339,7 +19396,7 @@ var FileSystem = class { } /** * Reads the contents of a symlink if it exists, otherwise returns null. - * Rethrows errors that aren't related to file existance. + * Rethrows errors that aren't related to file existence. */ async readlink(filename, opts = { encoding: "buffer" }) { try { @@ -19365,12 +19422,9 @@ function assertParameter(name, value) { } } async function modified(entry, base) { - if (!entry && !base) - return false; - if (entry && !base) - return true; - if (!entry && base) - return true; + if (!entry && !base) return false; + if (entry && !base) return true; + if (!entry && base) return true; if (await entry.type() === "tree" && await base.type() === "tree") { return false; } @@ -19415,16 +19469,13 @@ async function abortMerge({ content: await head.content() } : void 0; } - if (unmodified) - return false; - else - throw new IndexResetError(path2); + if (unmodified) return false; + else throw new IndexResetError(path2); } }); await GitIndexManager.acquire({ fs, gitdir, cache }, async function(index2) { for (const entry of results) { - if (entry === false) - continue; + if (entry === false) continue; if (!entry) { await fs.rmdir(`${dir}/${entry.path}`, { recursive: true }); index2.delete({ filepath: entry.path }); @@ -19448,10 +19499,8 @@ async function abortMerge({ } var GitIgnoreManager = class { static async isIgnored({ fs, dir, gitdir = join(dir, ".git"), filepath }) { - if (basename(filepath) === ".git") - return true; - if (filepath === ".") - return false; + if (basename(filepath) === ".git") return true; + if (filepath === ".") return false; let excludes = ""; const excludesFile = join(gitdir, "info", "exclude"); if (await fs.exists(excludesFile)) { @@ -19478,14 +19527,12 @@ var GitIgnoreManager = class { try { file = await fs.read(p.gitignore, "utf8"); } catch (err) { - if (err.code === "NOENT") - continue; + if (err.code === "NOENT") continue; } const ign = (0, import_ignore.default)().add(excludes); ign.add(file); const parentdir = dirname(p.filepath); - if (parentdir !== "." && ign.ignores(parentdir)) - return true; + if (parentdir !== "." && ign.ignores(parentdir)) return true; if (ignoredStatus) { ignoredStatus = !ign.test(p.filepath).unignored; } else { @@ -19503,8 +19550,7 @@ async function writeObjectLoose({ fs, gitdir, object, format, oid }) { } const source = `objects/${oid.slice(0, 2)}/${oid.slice(2)}`; const filepath = `${gitdir}/${source}`; - if (!await fs.exists(filepath)) - await fs.write(filepath, object); + if (!await fs.exists(filepath)) await fs.write(filepath, object); } var supportsCompressionStream = null; async function deflate(buffer2) { @@ -19521,12 +19567,13 @@ async function browserDeflate(buffer2) { function testCompressionStream() { try { const cs = new CompressionStream("deflate"); - new Blob([]).stream(); - if (cs) - return true; + cs.writable.close(); + const stream = new Blob([]).stream(); + stream.cancel(); + return true; } catch (_) { + return false; } - return false; } async function _writeObject({ fs, @@ -19551,8 +19598,7 @@ async function _writeObject({ } function posixifyPathBuffer(buffer2) { let idx; - while (~(idx = buffer2.indexOf(92))) - buffer2[idx] = 47; + while (~(idx = buffer2.indexOf(92))) buffer2[idx] = 47; return buffer2; } async function add({ @@ -19604,12 +19650,10 @@ async function addToIndex({ gitdir, filepath: currentFilepath }); - if (ignored) - return; + if (ignored) return; } const stats = await fs.lstat(join(dir, currentFilepath)); - if (!stats) - throw new NotFoundError(currentFilepath); + if (!stats) throw new NotFoundError(currentFilepath); if (stats.isDirectory()) { const children2 = await fs.readdir(join(dir, currentFilepath)); if (parallel) { @@ -19639,9 +19683,10 @@ async function addToIndex({ } } } else { - const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, currentFilepath)).then(posixifyPathBuffer) : await fs.read(join(dir, currentFilepath)); - if (object === null) - throw new NotFoundError(currentFilepath); + const config = await GitConfigManager.get({ fs, gitdir }); + const autocrlf = await config.get("core.autocrlf"); + const object = stats.isSymbolicLink() ? await fs.readlink(join(dir, currentFilepath)).then(posixifyPathBuffer) : await fs.read(join(dir, currentFilepath), { autocrlf }); + if (object === null) throw new NotFoundError(currentFilepath); const oid = await _writeObject({ fs, gitdir, type: "blob", object }); index2.insert({ filepath: currentFilepath, stats, oid }); } @@ -19657,21 +19702,112 @@ async function addToIndex({ const fulfilledPromises = settledPromises.filter((settle) => settle.status === "fulfilled" && settle.value).map((settle) => settle.value); return fulfilledPromises; } +async function _getConfig({ fs, gitdir, path: path2 }) { + const config = await GitConfigManager.get({ fs, gitdir }); + return config.get(path2); +} +function assignDefined(target, ...sources) { + for (const source of sources) { + if (source) { + for (const key2 of Object.keys(source)) { + const val = source[key2]; + if (val !== void 0) { + target[key2] = val; + } + } + } + } + return target; +} +async function normalizeAuthorObject({ fs, gitdir, author, commit: commit2 }) { + const timestamp = Math.floor(Date.now() / 1e3); + const defaultAuthor = { + name: await _getConfig({ fs, gitdir, path: "user.name" }), + email: await _getConfig({ fs, gitdir, path: "user.email" }) || "", + // author.email is allowed to be empty string + timestamp, + timezoneOffset: new Date(timestamp * 1e3).getTimezoneOffset() + }; + const normalizedAuthor = assignDefined( + {}, + defaultAuthor, + commit2 ? commit2.author : void 0, + author + ); + if (normalizedAuthor.name === void 0) { + return void 0; + } + return normalizedAuthor; +} +async function normalizeCommitterObject({ + fs, + gitdir, + author, + committer, + commit: commit2 +}) { + const timestamp = Math.floor(Date.now() / 1e3); + const defaultCommitter = { + name: await _getConfig({ fs, gitdir, path: "user.name" }), + email: await _getConfig({ fs, gitdir, path: "user.email" }) || "", + // committer.email is allowed to be empty string + timestamp, + timezoneOffset: new Date(timestamp * 1e3).getTimezoneOffset() + }; + const normalizedCommitter = assignDefined( + {}, + defaultCommitter, + commit2 ? commit2.committer : void 0, + author, + committer + ); + if (normalizedCommitter.name === void 0) { + return void 0; + } + return normalizedCommitter; +} +async function resolveCommit({ fs, cache, gitdir, oid }) { + const { type, object } = await _readObject({ fs, cache, gitdir, oid }); + if (type === "tag") { + oid = GitAnnotatedTag.from(object).parse().object; + return resolveCommit({ fs, cache, gitdir, oid }); + } + if (type !== "commit") { + throw new ObjectTypeError(oid, type, "commit"); + } + return { commit: GitCommit.from(object), oid }; +} +async function _readCommit({ fs, cache, gitdir, oid }) { + const { commit: commit2, oid: commitOid } = await resolveCommit({ + fs, + cache, + gitdir, + oid + }); + const result = { + oid: commitOid, + commit: commit2.parse(), + payload: commit2.withoutSignature() + }; + return result; +} async function _commit({ fs, cache, onSign, gitdir, message, - author, - committer, + author: _author, + committer: _committer, signingKey, + amend = false, dryRun = false, noUpdateBranch = false, ref, parent, tree }) { + let initialCommit = false; if (!ref) { ref = await GitRefManager.resolve({ fs, @@ -19680,6 +19816,40 @@ async function _commit({ depth: 2 }); } + let refOid, refCommit; + try { + refOid = await GitRefManager.resolve({ + fs, + gitdir, + ref + }); + refCommit = await _readCommit({ fs, gitdir, oid: refOid, cache: {} }); + } catch (e) { + initialCommit = true; + } + if (amend && initialCommit) { + throw new NoCommitError(ref); + } + const author = !amend ? await normalizeAuthorObject({ fs, gitdir, author: _author }) : await normalizeAuthorObject({ + fs, + gitdir, + author: _author, + commit: refCommit.commit + }); + if (!author) throw new MissingNameError("author"); + const committer = !amend ? await normalizeCommitterObject({ + fs, + gitdir, + author, + committer: _committer + }) : await normalizeCommitterObject({ + fs, + gitdir, + author, + committer: _committer, + commit: refCommit.commit + }); + if (!committer) throw new MissingNameError("committer"); return GitIndexManager.acquire( { fs, gitdir, cache, allowUnmerged: false }, async function(index2) { @@ -19689,16 +19859,10 @@ async function _commit({ tree = await constructTree({ fs, gitdir, inode, dryRun }); } if (!parent) { - try { - parent = [ - await GitRefManager.resolve({ - fs, - gitdir, - ref - }) - ]; - } catch (err) { - parent = []; + if (!amend) { + parent = refOid ? [refOid] : []; + } else { + parent = refCommit.commit.parent; } } else { parent = await Promise.all( @@ -19707,6 +19871,13 @@ async function _commit({ }) ); } + if (!message) { + if (!amend) { + throw new MissingParameterError("message"); + } else { + message = refCommit.commit.message; + } + } let comm = GitCommit.from({ tree, parent, @@ -19921,35 +20092,6 @@ async function _addNote({ }); return commitOid; } -async function _getConfig({ fs, gitdir, path: path2 }) { - const config = await GitConfigManager.get({ fs, gitdir }); - return config.get(path2); -} -async function normalizeAuthorObject({ fs, gitdir, author = {} }) { - let { name, email, timestamp, timezoneOffset } = author; - name = name || await _getConfig({ fs, gitdir, path: "user.name" }); - email = email || await _getConfig({ fs, gitdir, path: "user.email" }) || ""; - if (name === void 0) { - return void 0; - } - timestamp = timestamp != null ? timestamp : Math.floor(Date.now() / 1e3); - timezoneOffset = timezoneOffset != null ? timezoneOffset : new Date(timestamp * 1e3).getTimezoneOffset(); - return { name, email, timestamp, timezoneOffset }; -} -async function normalizeCommitterObject({ - fs, - gitdir, - author, - committer -}) { - committer = Object.assign({}, committer || author); - if (author) { - committer.timestamp = committer.timestamp || author.timestamp; - committer.timezoneOffset = committer.timezoneOffset || author.timezoneOffset; - } - committer = await normalizeAuthorObject({ fs, gitdir, author: committer }); - return committer; -} async function addNote({ fs: _fs, onSign, @@ -19974,16 +20116,14 @@ async function addNote({ } const fs = new FileSystem(_fs); const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); + if (!author) throw new MissingNameError("author"); const committer = await normalizeCommitterObject({ fs, gitdir, author, committer: _committer }); - if (!committer) - throw new MissingNameError("committer"); + if (!committer) throw new MissingNameError("committer"); return await _addNote({ fs: new FileSystem(fs), cache, @@ -20112,8 +20252,7 @@ async function annotatedTag({ } const fs = new FileSystem(_fs); const tagger = await normalizeAuthorObject({ fs, gitdir, author: _tagger }); - if (!tagger) - throw new MissingNameError("tagger"); + if (!tagger) throw new MissingNameError("tagger"); return await _annotatedTag({ fs, cache, @@ -20207,6 +20346,7 @@ async function _checkout({ fs, cache, onProgress, + onPostCheckout, dir, gitdir, remote, @@ -20218,12 +20358,19 @@ async function _checkout({ force, track = true }) { + let oldOid; + if (onPostCheckout) { + try { + oldOid = await GitRefManager.resolve({ fs, gitdir, ref: "HEAD" }); + } catch (err) { + oldOid = "0000000000000000000000000000000000000000"; + } + } let oid; try { oid = await GitRefManager.resolve({ fs, gitdir, ref }); } catch (err) { - if (ref === "HEAD") - throw err; + if (ref === "HEAD") throw err; const remoteRef = `${remote}/${ref}`; oid = await GitRefManager.resolve({ fs, @@ -20272,6 +20419,13 @@ async function _checkout({ throw new InternalError(errors.join(", ")); } if (dryRun) { + if (onPostCheckout) { + await onPostCheckout({ + previousHead: oldOid, + newHead: oid, + type: filepaths != null && filepaths.length > 0 ? "file" : "branch" + }); + } return; } let count = 0; @@ -20386,6 +20540,13 @@ async function _checkout({ }) ); }); + if (onPostCheckout) { + await onPostCheckout({ + previousHead: oldOid, + newHead: oid, + type: filepaths != null && filepaths.length > 0 ? "file" : "branch" + }); + } } if (!noUpdateHead) { const fullRef = await GitRefManager.expand({ fs, gitdir, ref }); @@ -20419,8 +20580,7 @@ async function analyze({ gitdir, trees: [TREE({ ref }), WORKDIR(), STAGE()], map: async function(fullpath, [commit2, workdir, stage]) { - if (fullpath === ".") - return; + if (fullpath === ".") return; if (filepaths && !filepaths.some((base) => worthWalking(fullpath, base))) { return null; } @@ -20647,6 +20807,7 @@ async function analyze({ async function checkout({ fs, onProgress, + onPostCheckout, dir, gitdir = join(dir, ".git"), remote = "origin", @@ -20668,6 +20829,7 @@ async function checkout({ fs: new FileSystem(fs), cache, onProgress, + onPostCheckout, dir, gitdir, remote, @@ -20715,8 +20877,7 @@ async function _currentBranch({ return; } } - if (!ref.startsWith("refs/")) - return; + if (!ref.startsWith("refs/")) return; return fullname ? ref : abbreviateRef(ref); } function translateSSHtoHTTP(url) { @@ -20731,13 +20892,10 @@ async function forAwait(iterable, cb) { const iter = getIterator(iterable); while (true) { const { value, done } = await iter.next(); - if (value) - await cb(value); - if (done) - break; + if (value) await cb(value); + if (done) break; } - if (iter.return) - iter.return(); + if (iter.return) iter.return(); } async function collect(iterable) { let size = 0; @@ -20756,8 +20914,7 @@ async function collect(iterable) { } function extractAuthFromUrl(url) { let userpass = url.match(/^https?:\/\/([^/]+)@/); - if (userpass == null) - return { url, auth: {} }; + if (userpass == null) return { url, auth: {} }; userpass = userpass[1]; const [username, password] = userpass.split(":"); url = url.replace(`${userpass}@`, ""); @@ -20787,19 +20944,15 @@ var GitPktLine = class { return async function read() { try { let length = await reader.read(4); - if (length == null) - return true; + if (length == null) return true; length = parseInt(length.toString("utf8"), 16); - if (length === 0) - return null; - if (length === 1) - return null; + if (length === 0) return null; + if (length === 1) return null; const buffer2 = await reader.read(length - 4); - if (buffer2 == null) - return true; + if (buffer2 == null) return true; return buffer2; } catch (err) { - console.log("error", err); + stream.error = err; return true; } }; @@ -20810,10 +20963,8 @@ async function parseCapabilitiesV2(read) { let line; while (true) { line = await read(); - if (line === true) - break; - if (line === null) - continue; + if (line === true) break; + if (line === null) continue; line = line.toString("utf8").replace(/\n$/, ""); const i = line.indexOf("="); if (i > -1) { @@ -20832,10 +20983,8 @@ async function parseRefsAdResponse(stream, { service }) { const symrefs = /* @__PURE__ */ new Map(); const read = GitPktLine.streamReader(stream); let lineOne = await read(); - while (lineOne === null) - lineOne = await read(); - if (lineOne === true) - throw new EmptyServerResponseError(); + while (lineOne === null) lineOne = await read(); + if (lineOne === true) throw new EmptyServerResponseError(); if (lineOne.includes("version 2")) { return parseCapabilitiesV2(read); } @@ -20843,25 +20992,24 @@ async function parseRefsAdResponse(stream, { service }) { throw new ParseError(`# service=${service}\\n`, lineOne.toString("utf8")); } let lineTwo = await read(); - while (lineTwo === null) - lineTwo = await read(); - if (lineTwo === true) - return { capabilities, refs, symrefs }; + while (lineTwo === null) lineTwo = await read(); + if (lineTwo === true) return { capabilities, refs, symrefs }; lineTwo = lineTwo.toString("utf8"); if (lineTwo.includes("version 2")) { return parseCapabilitiesV2(read); } const [firstRef, capabilitiesLine] = splitAndAssert(lineTwo, "\0", "\\x00"); capabilitiesLine.split(" ").map((x) => capabilities.add(x)); - const [ref, name] = splitAndAssert(firstRef, " ", " "); - refs.set(name, ref); - while (true) { - const line = await read(); - if (line === true) - break; - if (line !== null) { - const [ref2, name2] = splitAndAssert(line.toString("utf8"), " ", " "); - refs.set(name2, ref2); + if (firstRef !== "0000000000000000000000000000000000000000 capabilities^{}") { + const [ref, name] = splitAndAssert(firstRef, " ", " "); + refs.set(name, ref); + while (true) { + const line = await read(); + if (line === true) break; + if (line !== null) { + const [ref2, name2] = splitAndAssert(line.toString("utf8"), " ", " "); + refs.set(name2, ref2); + } } } for (const cap of capabilities) { @@ -21011,10 +21159,8 @@ var GitRemoteHTTP = class { headers }) { const urlAuth = extractAuthFromUrl(url); - if (urlAuth) - url = urlAuth.url; - if (corsProxy) - url = corsProxify(corsProxy, url); + if (urlAuth) url = urlAuth.url; + if (corsProxy) url = corsProxify(corsProxy, url); headers["content-type"] = `application/x-${service}-request`; headers.accept = `application/x-${service}-result`; updateHeaders(headers, auth); @@ -21040,8 +21186,7 @@ function parseRemoteUrl({ url }) { }; } const matches = url.match(/(\w+)(:\/\/|::)(.*)/); - if (matches === null) - return; + if (matches === null) return; if (matches[2] === "://") { return { transport: matches[1], @@ -21074,36 +21219,32 @@ var GitRemoteManager = class { ); } }; -var lock$1 = null; +var lock$2 = null; var GitShallowManager = class { static async read({ fs, gitdir }) { - if (lock$1 === null) - lock$1 = new import_async_lock.default(); + if (lock$2 === null) lock$2 = new import_async_lock.default(); const filepath = join(gitdir, "shallow"); const oids = /* @__PURE__ */ new Set(); - await lock$1.acquire(filepath, async function() { + await lock$2.acquire(filepath, async function() { const text2 = await fs.read(filepath, { encoding: "utf8" }); - if (text2 === null) - return oids; - if (text2.trim() === "") - return oids; + if (text2 === null) return oids; + if (text2.trim() === "") return oids; text2.trim().split("\n").map((oid) => oids.add(oid)); }); return oids; } static async write({ fs, gitdir, oids }) { - if (lock$1 === null) - lock$1 = new import_async_lock.default(); + if (lock$2 === null) lock$2 = new import_async_lock.default(); const filepath = join(gitdir, "shallow"); if (oids.size > 0) { const text2 = [...oids].join("\n") + "\n"; - await lock$1.acquire(filepath, async function() { + await lock$2.acquire(filepath, async function() { await fs.write(filepath, text2, { encoding: "utf8" }); }); } else { - await lock$1.acquire(filepath, async function() { + await lock$2.acquire(filepath, async function() { await fs.rm(filepath); }); } @@ -21130,8 +21271,7 @@ async function hasObjectPacked({ filename: indexFile, getExternalRefDelta }); - if (p.error) - throw new InternalError(p.error); + if (p.error) throw new InternalError(p.error); if (p.offsets.has(oid)) { return true; } @@ -21174,8 +21314,8 @@ function filterCapabilities(server, client) { } var pkg = { name: "isomorphic-git", - version: "1.24.5", - agent: "git/isomorphic-git@1.24.5" + version: "1.27.1", + agent: "git/isomorphic-git@1.27.1" }; var FIFO = class { constructor() { @@ -21186,9 +21326,9 @@ var FIFO = class { throw Error("You cannot write to a FIFO that has already been ended!"); } if (this._waiting) { - const resolve = this._waiting; + const resolve2 = this._waiting; this._waiting = null; - resolve({ value: chunk }); + resolve2({ value: chunk }); } else { this._queue.push(chunk); } @@ -21196,14 +21336,14 @@ var FIFO = class { end() { this._ended = true; if (this._waiting) { - const resolve = this._waiting; + const resolve2 = this._waiting; this._waiting = null; - resolve({ done: true }); + resolve2({ done: true }); } } destroy(err) { - this._ended = true; this.error = err; + this.end(); } async next() { if (this._queue.length > 0) { @@ -21217,22 +21357,18 @@ var FIFO = class { "You cannot call read until the previous call to read has returned!" ); } - return new Promise((resolve) => { - this._waiting = resolve; + return new Promise((resolve2) => { + this._waiting = resolve2; }); } }; function findSplit(str) { const r = str.indexOf("\r"); const n = str.indexOf("\n"); - if (r === -1 && n === -1) - return -1; - if (r === -1) - return n + 1; - if (n === -1) - return r + 1; - if (n === r + 1) - return n + 1; + if (r === -1 && n === -1) return -1; + if (r === -1) return n + 1; + if (n === -1) return r + 1; + if (n === r + 1) return n + 1; return Math.min(r, n) + 1; } function splitLines(input) { @@ -21244,8 +21380,7 @@ function splitLines(input) { tmp += chunk; while (true) { const i = findSplit(tmp); - if (i === -1) - break; + if (i === -1) break; output.write(tmp.slice(0, i)); tmp = tmp.slice(i); } @@ -21265,12 +21400,11 @@ var GitSideBand = class { const progress = new FIFO(); const nextBit = async function() { const line = await read(); - if (line === null) - return nextBit(); + if (line === null) return nextBit(); if (line === true) { packetlines.end(); progress.end(); - packfile.end(); + input.error ? packfile.destroy(input.error) : packfile.end(); return; } switch (line[0]) { @@ -21285,11 +21419,13 @@ var GitSideBand = class { case 3: { const error = line.slice(1); progress.write(error); + packetlines.end(); + progress.end(); packfile.destroy(new Error(error.toString("utf8"))); return; } default: { - packetlines.write(line.slice(0)); + packetlines.write(line); } } nextBit(); @@ -21376,7 +21512,7 @@ async function parseUploadPackResponse(stream) { const acks = []; let nak = false; let done = false; - return new Promise((resolve, reject) => { + return new Promise((resolve2, reject) => { forAwait(packetlines, (data) => { const line = data.toString("utf8").trim(); if (line.startsWith("shallow")) { @@ -21394,14 +21530,20 @@ async function parseUploadPackResponse(stream) { } else if (line.startsWith("ACK")) { const [, oid, status2] = line.split(" "); acks.push({ oid, status: status2 }); - if (!status2) - done = true; + if (!status2) done = true; } else if (line.startsWith("NAK")) { nak = true; done = true; + } else { + done = true; + nak = true; } if (done) { - resolve({ shallows, unshallows, acks, nak, packfile, progress }); + stream.error ? reject(stream.error) : resolve2({ shallows, unshallows, acks, nak, packfile, progress }); + } + }).finally(() => { + if (!done) { + stream.error ? reject(stream.error) : resolve2({ shallows, unshallows, acks, nak, packfile, progress }); } }); }); @@ -21544,8 +21686,7 @@ async function _fetch({ `agent=${pkg.agent}` ] ); - if (relative2) - capabilities.push("deepen-relative"); + if (relative2) capabilities.push("deepen-relative"); const wants = singleBranch ? [oid] : remoteRefs.values(); const haveRefs = singleBranch ? [ref] : await GitRefManager.listRefs({ fs, @@ -21618,8 +21759,7 @@ async function _fetch({ let key2 = fullref; while (bail--) { const value = remoteHTTP.symrefs.get(key2); - if (value === void 0) - break; + if (value === void 0) break; symrefs.set(key2, value); key2 = value; } @@ -21675,8 +21815,7 @@ async function _fetch({ if (onProgress || onMessage) { const lines = splitLines(response.progress); forAwait(lines, async (line) => { - if (onMessage) - await onMessage(line); + if (onMessage) await onMessage(line); if (onProgress) { const matches = line.match(/([^:]*).*\((\d+?)\/(\d+?)\)/); if (matches) { @@ -21690,6 +21829,7 @@ async function _fetch({ }); } const packfile = Buffer.from(await collect(response.packfile)); + if (raw.body.error) throw raw.body.error; const packfileSha = packfile.slice(-20).toString("hex"); const res = { defaultBranch: response.HEAD, @@ -21723,8 +21863,7 @@ async function _init({ gitdir = bare ? dir : join(dir, ".git"), defaultBranch = "master" }) { - if (await fs.exists(gitdir + "/config")) - return; + if (await fs.exists(gitdir + "/config")) return; let folders = [ "hooks", "info", @@ -21757,6 +21896,7 @@ async function _clone({ onAuth, onAuthSuccess, onAuthFailure, + onPostCheckout, dir, gitdir, url, @@ -21801,14 +21941,14 @@ async function _clone({ headers, tags: !noTags }); - if (fetchHead === null) - return; + if (fetchHead === null) return; ref = ref || defaultBranch; ref = ref.replace("refs/heads/", ""); await _checkout({ fs, cache, onProgress, + onPostCheckout, dir, gitdir, ref, @@ -21828,6 +21968,7 @@ async function clone({ onAuth, onAuthSuccess, onAuthFailure, + onPostCheckout, dir, gitdir = join(dir, ".git"), url, @@ -21861,6 +22002,7 @@ async function clone({ onAuth, onAuthSuccess, onAuthFailure, + onPostCheckout, dir, gitdir, url, @@ -21887,9 +22029,10 @@ async function commit({ dir, gitdir = join(dir, ".git"), message, - author: _author, - committer: _committer, + author, + committer, signingKey, + amend = false, dryRun = false, noUpdateBranch = false, ref, @@ -21899,22 +22042,13 @@ async function commit({ }) { try { assertParameter("fs", _fs); - assertParameter("message", message); + if (!amend) { + assertParameter("message", message); + } if (signingKey) { assertParameter("onSign", onSign); } const fs = new FileSystem(_fs); - const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); - const committer = await normalizeCommitterObject({ - fs, - gitdir, - author, - committer: _committer - }); - if (!committer) - throw new MissingNameError("committer"); return await _commit({ fs, cache, @@ -21924,6 +22058,7 @@ async function commit({ author, committer, signingKey, + amend, dryRun, noUpdateBranch, ref, @@ -21969,6 +22104,10 @@ async function _deleteBranch({ fs, gitdir, ref }) { await GitRefManager.writeRef({ fs, gitdir, ref: "HEAD", value }); } await GitRefManager.deleteRef({ fs, gitdir, ref: fullRef }); + const abbrevRef = abbreviateRef(ref); + const config = await GitConfigManager.get({ fs, gitdir }); + await config.deleteSection("branch", abbrevRef); + await GitConfigManager.save({ fs, gitdir, config }); } async function deleteBranch({ fs, @@ -22064,11 +22203,9 @@ async function expandOidPacked({ filename: indexFile, getExternalRefDelta }); - if (p.error) - throw new InternalError(p.error); + if (p.error) throw new InternalError(p.error); for (const oid of p.offsets.keys()) { - if (oid.startsWith(short)) - results.push(oid); + if (oid.startsWith(short)) results.push(oid); } } return results; @@ -22140,8 +22277,7 @@ async function _findMergeBase({ fs, cache, gitdir, oids }) { while (heads.length) { const result = /* @__PURE__ */ new Set(); for (const { oid, index: index2 } of heads) { - if (!visits[oid]) - visits[oid] = /* @__PURE__ */ new Set(); + if (!visits[oid]) visits[oid] = /* @__PURE__ */ new Set(); visits[oid].add(index2); if (visits[oid].size === passes) { result.add(oid); @@ -22220,6 +22356,9 @@ async function mergeTree({ const baseTree = TREE({ ref: baseOid }); const theirTree = TREE({ ref: theirOid }); const unmergedFiles = []; + const bothModified = []; + const deleteByUs = []; + const deleteByTheirs = []; const results = await _walk({ fs, cache, @@ -22271,6 +22410,7 @@ async function mergeTree({ }).then(async (r) => { if (!r.cleanMerge) { unmergedFiles.push(filepath); + bothModified.push(filepath); if (!abortOnConflict) { const baseOid2 = await base.oid(); const ourOid2 = await ours.oid(); @@ -22286,6 +22426,43 @@ async function mergeTree({ return r.mergeResult; }); } + if (base && !ours && theirs && await base.type() === "blob" && await theirs.type() === "blob") { + unmergedFiles.push(filepath); + deleteByUs.push(filepath); + if (!abortOnConflict) { + const baseOid2 = await base.oid(); + const theirOid2 = await theirs.oid(); + index2.delete({ filepath }); + index2.insert({ filepath, oid: baseOid2, stage: 1 }); + index2.insert({ filepath, oid: theirOid2, stage: 3 }); + } + return { + mode: await theirs.mode(), + oid: await theirs.oid(), + type: "blob", + path: path2 + }; + } + if (base && ours && !theirs && await base.type() === "blob" && await ours.type() === "blob") { + unmergedFiles.push(filepath); + deleteByTheirs.push(filepath); + if (!abortOnConflict) { + const baseOid2 = await base.oid(); + const ourOid2 = await ours.oid(); + index2.delete({ filepath }); + index2.insert({ filepath, oid: baseOid2, stage: 1 }); + index2.insert({ filepath, oid: ourOid2, stage: 2 }); + } + return { + mode: await ours.mode(), + oid: await ours.oid(), + type: "blob", + path: path2 + }; + } + if (base && !ours && !theirs && await base.type() === "blob") { + return void 0; + } throw new MergeNotSupportedError(); } } @@ -22296,10 +22473,8 @@ async function mergeTree({ */ reduce: unmergedFiles.length !== 0 && (!dir || abortOnConflict) ? void 0 : async (parent, children2) => { const entries = children2.filter(Boolean); - if (!parent) - return; - if (parent && parent.type === "tree" && entries.length === 0) - return; + if (!parent) return; + if (parent && parent.type === "tree" && entries.length === 0) return; if (entries.length > 0) { const tree = new GitTree(entries); const object = tree.toObject(); @@ -22334,7 +22509,12 @@ async function mergeTree({ } }); } - return new MergeConflictError(unmergedFiles); + return new MergeConflictError( + unmergedFiles, + bothModified, + deleteByUs, + deleteByTheirs + ); } return results.oid; } @@ -22479,8 +22659,7 @@ async function _merge({ }); } ); - if (tree instanceof MergeConflictError) - throw tree; + if (tree instanceof MergeConflictError) throw tree; if (!message) { message = `Merge branch '${abbreviateRef(theirs)}' into ${abbreviateRef( ours @@ -22847,8 +23026,7 @@ async function getRemoteInfo({ function formatInfoRefs(remote, prefix, symrefs, peelTags) { const refs = []; for (const [key2, value] of remote.refs) { - if (prefix && !key2.startsWith(prefix)) - continue; + if (prefix && !key2.startsWith(prefix)) continue; if (key2.endsWith("^{}")) { if (peelTags) { const _key = key2.replace("^{}", ""); @@ -23048,8 +23226,7 @@ async function _isDescendent({ if (!ancestor) { throw new MissingParameterError("ancestor"); } - if (oid === ancestor) - return false; + if (oid === ancestor) return false; const queue = [oid]; const visited = /* @__PURE__ */ new Set(); let searchdepth = 0; @@ -23069,8 +23246,7 @@ async function _isDescendent({ } const commit2 = GitCommit.from(object).parse(); for (const parent of commit2.parent) { - if (parent === ancestor) - return true; + if (parent === ancestor) return true; } if (!shallows.has(oid2)) { for (const parent of commit2.parent) { @@ -23288,10 +23464,8 @@ async function parseListRefsResponse(stream) { let line; while (true) { line = await read(); - if (line === true) - break; - if (line === null) - continue; + if (line === true) break; + if (line === null) continue; line = line.toString("utf8").replace(/\n$/, ""); const [oid, ref, ...attrs] = line.split(" "); const r = { ref, oid }; @@ -23315,12 +23489,9 @@ async function writeListRefsRequest({ prefix, symrefs, peelTags }) { if (peelTags || symrefs || prefix) { packstream.push(GitPktLine.delim()); } - if (peelTags) - packstream.push(GitPktLine.encode("peel")); - if (symrefs) - packstream.push(GitPktLine.encode("symrefs")); - if (prefix) - packstream.push(GitPktLine.encode(`ref-prefix ${prefix}`)); + if (peelTags) packstream.push(GitPktLine.encode("peel")); + if (symrefs) packstream.push(GitPktLine.encode("symrefs")); + if (prefix) packstream.push(GitPktLine.encode(`ref-prefix ${prefix}`)); packstream.push(GitPktLine.flush()); return packstream; } @@ -23381,38 +23552,12 @@ async function listTags({ fs, dir, gitdir = join(dir, ".git") }) { throw err; } } -async function resolveCommit({ fs, cache, gitdir, oid }) { - const { type, object } = await _readObject({ fs, cache, gitdir, oid }); - if (type === "tag") { - oid = GitAnnotatedTag.from(object).parse().object; - return resolveCommit({ fs, cache, gitdir, oid }); - } - if (type !== "commit") { - throw new ObjectTypeError(oid, type, "commit"); - } - return { commit: GitCommit.from(object), oid }; -} -async function _readCommit({ fs, cache, gitdir, oid }) { - const { commit: commit2, oid: commitOid } = await resolveCommit({ - fs, - cache, - gitdir, - oid - }); - const result = { - oid: commitOid, - commit: commit2.parse(), - payload: commit2.withoutSignature() - }; - return result; -} function compareAge(a, b) { return a.committer.timestamp - b.committer.timestamp; } var EMPTY_OID = "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"; async function resolveFileIdInTree({ fs, cache, gitdir, oid, fileId }) { - if (fileId === EMPTY_OID) - return; + if (fileId === EMPTY_OID) return; const _oid = oid; let filepath; const result = await resolveTree({ fs, cache, gitdir, oid }); @@ -23429,10 +23574,8 @@ async function resolveFileIdInTree({ fs, cache, gitdir, oid, fileId }) { oid: _oid }); if (Array.isArray(filepath)) { - if (filepath.length === 0) - filepath = void 0; - else if (filepath.length === 1) - filepath = filepath[0]; + if (filepath.length === 0) filepath = void 0; + else if (filepath.length === 1) filepath = filepath[0]; } } return filepath; @@ -23496,8 +23639,7 @@ async function _log({ let lastCommit; let isOk; function endCommit(commit2) { - if (isOk && filepath) - commits.push(commit2); + if (isOk && filepath) commits.push(commit2); } while (tips.length > 0) { const commit2 = tips.pop(); @@ -23546,36 +23688,30 @@ async function _log({ if (found.length === 1) { found = found[0]; filepath = found; - if (lastCommit) - commits.push(lastCommit); + if (lastCommit) commits.push(lastCommit); } else { found = false; - if (lastCommit) - commits.push(lastCommit); + if (lastCommit) commits.push(lastCommit); break; } } } } else { filepath = found; - if (lastCommit) - commits.push(lastCommit); + if (lastCommit) commits.push(lastCommit); } } } if (!found) { if (isOk && lastFileOid) { commits.push(lastCommit); - if (!force) - break; + if (!force) break; } - if (!force && !follow) - throw e; + if (!force && !follow) throw e; } lastCommit = commit2; isOk = false; - } else - throw e; + } else throw e; } } else { commits.push(commit2); @@ -23812,16 +23948,14 @@ async function pull({ assertParameter("gitdir", gitdir); const fs = new FileSystem(_fs); const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); + if (!author) throw new MissingNameError("author"); const committer = await normalizeCommitterObject({ fs, gitdir, author, committer: _committer }); - if (!committer) - throw new MissingNameError("committer"); + if (!committer) throw new MissingNameError("committer"); return await _pull({ fs, cache, @@ -23910,8 +24044,7 @@ async function listObjects({ }) { const visited = /* @__PURE__ */ new Set(); async function walk2(oid) { - if (visited.has(oid)) - return; + if (visited.has(oid)) return; visited.add(oid); const { type, object } = await _readObject({ fs, cache, gitdir, oid }); if (type === "tag") { @@ -23945,8 +24078,7 @@ async function parseReceivePackResponse(packfile) { const read = GitPktLine.streamReader(packfile); let line = await read(); while (line !== true) { - if (line !== null) - response += line.toString("utf8") + "\n"; + if (line !== null) response += line.toString("utf8") + "\n"; line = await read(); } const lines = response.toString("utf8").split("\n"); @@ -23960,13 +24092,11 @@ async function parseReceivePackResponse(packfile) { } result.refs = {}; for (const line2 of lines) { - if (line2.trim() === "") - continue; + if (line2.trim() === "") continue; const status2 = line2.slice(0, 2); const refAndMessage = line2.slice(3); let space2 = refAndMessage.indexOf(" "); - if (space2 === -1) - space2 = refAndMessage.length; + if (space2 === -1) space2 = refAndMessage.length; const ref = refAndMessage.slice(0, space2); const error = refAndMessage.slice(space2 + 1); result.refs[ref] = { @@ -24003,6 +24133,7 @@ async function _push({ onAuth, onAuthSuccess, onAuthFailure, + onPrePush, gitdir, ref: _ref, remoteRef: _remoteRef, @@ -24063,6 +24194,15 @@ async function _push({ } } const oldoid = httpRemote.refs.get(fullRemoteRef) || "0000000000000000000000000000000000000000"; + if (onPrePush) { + const hookCancel = await onPrePush({ + remote, + url, + localRef: { ref: _delete ? "(delete)" : fullRef, oid }, + remoteRef: { ref: fullRemoteRef, oid: oldoid } + }); + if (!hookCancel) throw new UserCanceledError(); + } const thinPack = !httpRemote.capabilities.has("no-thin"); let objects = /* @__PURE__ */ new Set(); if (!_delete) { @@ -24075,8 +24215,7 @@ async function _push({ gitdir, oids: [oid, oldoid] }); - for (const oid2 of mergebase) - finish.push(oid2); + for (const oid2 of mergebase) finish.push(oid2); if (thinPack) { skipObjects = await listObjects({ fs, cache, gitdir, oids: mergebase }); } @@ -24114,8 +24253,7 @@ async function _push({ objects.delete(oid2); } } - if (oid === oldoid) - force = true; + if (oid === oldoid) force = true; if (!force) { if (fullRef.startsWith("refs/tags") && oldoid !== "0000000000000000000000000000000000000000") { throw new PushRejectedError("tag-exists"); @@ -24167,7 +24305,7 @@ async function _push({ if (res.headers) { result.headers = res.headers; } - if (remote && result.ok && result.refs[fullRemoteRef].ok) { + if (remote && result.ok && result.refs[fullRemoteRef].ok && !fullRef.startsWith("refs/tags")) { const ref2 = `refs/remotes/${remote}/${fullRemoteRef.replace( "refs/heads", "" @@ -24194,6 +24332,7 @@ async function push({ onAuth, onAuthSuccess, onAuthFailure, + onPrePush, dir, gitdir = join(dir, ".git"), ref, @@ -24219,6 +24358,7 @@ async function push({ onAuth, onAuthSuccess, onAuthFailure, + onPrePush, gitdir, ref, remoteRef, @@ -24572,16 +24712,14 @@ async function removeNote({ assertParameter("oid", oid); const fs = new FileSystem(_fs); const author = await normalizeAuthorObject({ fs, gitdir, author: _author }); - if (!author) - throw new MissingNameError("author"); + if (!author) throw new MissingNameError("author"); const committer = await normalizeCommitterObject({ fs, gitdir, author, committer: _committer }); - if (!committer) - throw new MissingNameError("committer"); + if (!committer) throw new MissingNameError("committer"); return await _removeNote({ fs, cache, @@ -24816,8 +24954,7 @@ async function status({ { fs, gitdir, cache }, async function(index2) { for (const entry of index2) { - if (entry.path === filepath) - return entry; + if (entry.path === filepath) return entry; } return null; } @@ -24846,18 +24983,14 @@ async function status({ return workdirOid; } }; - if (!H && !W && !I) - return "absent"; - if (!H && !W && I) - return "*absent"; - if (!H && W && !I) - return "*added"; + if (!H && !W && !I) return "absent"; + if (!H && !W && I) return "*absent"; + if (!H && W && !I) return "*added"; if (!H && W && I) { const workdirOid = await getWorkdirOid(); return workdirOid === indexEntry.oid ? "added" : "*added"; } - if (H && !W && !I) - return "deleted"; + if (H && !W && !I) return "deleted"; if (H && !W && I) { return treeOid === indexEntry.oid ? "*deleted" : "*deleted"; } @@ -24879,8 +25012,7 @@ async function status({ } } async function getOidAtPath({ fs, cache, gitdir, tree, path: path2 }) { - if (typeof path2 === "string") - path2 = path2.split("/"); + if (typeof path2 === "string") path2 = path2.split("/"); const dirname3 = path2.shift(); for (const entry of tree) { if (entry.path === dirname3) { @@ -24954,8 +25086,7 @@ async function statusMatrix({ return null; } if (filter) { - if (!filter(filepath)) - return; + if (!filter(filepath)) return; } const [headType, workdirType, stageType] = await Promise.all([ head && head.type(), @@ -24963,16 +25094,12 @@ async function statusMatrix({ stage && stage.type() ]); const isBlob = [headType, workdirType, stageType].includes("blob"); - if ((headType === "tree" || headType === "special") && !isBlob) - return; - if (headType === "commit") - return null; + if ((headType === "tree" || headType === "special") && !isBlob) return; + if (headType === "commit") return null; if ((workdirType === "tree" || workdirType === "special") && !isBlob) return; - if (stageType === "commit") - return null; - if ((stageType === "tree" || stageType === "special") && !isBlob) - return; + if (stageType === "commit") return null; + if ((stageType === "tree" || stageType === "special") && !isBlob) return; const headOid = headType === "blob" ? await head.oid() : void 0; const stageOid = stageType === "blob" ? await stage.oid() : void 0; let workdirOid; @@ -25403,7 +25530,7 @@ var index = { var isomorphic_git_default = index; // src/main.ts -var import_obsidian30 = require("obsidian"); +var import_obsidian31 = require("obsidian"); // src/lineAuthor/lineAuthorIntegration.ts init_polyfill_buffer(); @@ -25417,7 +25544,7 @@ var import_obsidian4 = require("obsidian"); var path = __toESM(require("path")); var import_path = require("path"); -// node_modules/.pnpm/github.com+Vinzent03+git-js@6b9a2d899bc8256e38a1d6f0b8a88116ba2bf56a_supports-color@9.4.0_rdkutdaeyye3o67thmklazfzta/node_modules/simple-git/dist/esm/index.js +// node_modules/.pnpm/simple-git@https+++codeload.github.com+Vinzent03+git-js+tar.gz+6b9a2d899bc8256e38a1d6f0b8a881_rku6lxlylrt42756swupwur2wa/node_modules/simple-git/dist/esm/index.js init_polyfill_buffer(); var import_file_exists = __toESM(require_dist(), 1); var import_debug = __toESM(require_browser(), 1); @@ -25470,7 +25597,7 @@ var __toCommonJS2 = /* @__PURE__ */ ((cache) => { }; })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0); var __async = (__this, __arguments, generator) => { - return new Promise((resolve, reject) => { + return new Promise((resolve2, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); @@ -25485,7 +25612,7 @@ var __async = (__this, __arguments, generator) => { reject(e); } }; - var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + var step = (x) => x.done ? resolve2(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; @@ -28014,7 +28141,7 @@ var init_scheduler = __esm2({ "src/lib/runners/scheduler.ts"() { init_utils(); init_git_logger(); - createScheduledTask = (() => { + createScheduledTask = /* @__PURE__ */ (() => { let id = 0; return () => { id++; @@ -28607,9 +28734,9 @@ var init_TagList = __esm2({ return singleSorted(toNumber(partsA[0]), toNumber(partsB[0])); } for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) { - const diff2 = sorted(toNumber(partsA[i]), toNumber(partsB[i])); - if (diff2) { - return diff2; + const diff3 = sorted(toNumber(partsA[i]), toNumber(partsB[i])); + if (diff3) { + return diff3; } } return 0; @@ -29274,6 +29401,7 @@ var DEFAULT_SETTINGS = { disablePush: false, pullBeforePush: true, disablePopups: false, + disablePopupsForNoChanges: false, listChangedFilesInMessageBody: false, showStatusBar: true, updateSubmodules: false, @@ -29292,6 +29420,8 @@ var DEFAULT_SETTINGS = { submoduleRecurseCheckout: false, gitDir: "", showFileMenu: true, + authorInHistoryView: "hide", + dateInHistoryView: false, lineAuthor: { show: false, followMovement: "inactive", @@ -29361,6 +29491,16 @@ function getNewLeaf(event) { } return leaf; } +function mayTriggerFileMenu(app2, event, filePath, view, source) { + if (event.button == 2) { + const file = app2.vault.getAbstractFileByPath(filePath); + if (file != null) { + const fileMenu = new import_obsidian3.Menu(); + app2.workspace.trigger("file-menu", fileMenu, file, source, view); + fileMenu.showAtPosition({ x: event.pageX, y: event.pageY }); + } + } +} function impossibleBranch(x) { throw new Error("Impossible branch: " + x); } @@ -29380,8 +29520,7 @@ function momentToEpochSeconds(instant) { return instant.diff(import_obsidian3.moment.unix(0), "seconds"); } function median(array) { - if (array.length === 0) - return void 0; + if (array.length === 0) return void 0; return array.slice().sort()[Math.floor(array.length / 2)]; } function strictDeepEqual(a, b) { @@ -29396,8 +29535,7 @@ function resizeToLength(original, desiredLength, fillChar) { } } function prefixOfLengthAsWhitespace(toBeRenderedText, whitespacePrefixLength) { - if (whitespacePrefixLength <= 0) - return toBeRenderedText; + if (whitespacePrefixLength <= 0) return toBeRenderedText; const whitespacePrefix = new Array(whitespacePrefixLength).fill(" ").join(""); const originalSuffix = toBeRenderedText.substring( whitespacePrefixLength, @@ -29413,10 +29551,13 @@ function splitRemoteBranch(remoteBranch) { return [remote, branch2.length === 0 ? void 0 : branch2.join("/")]; } function getDisplayPath(path2) { - if (path2.endsWith("/")) - return path2; + if (path2.endsWith("/")) return path2; return path2.split("/").last().replace(".md", ""); } +function formatMinutes(minutes) { + if (minutes === 1) return "1 minute"; + return `${minutes} minutes`; +} // src/gitManager/gitManager.ts init_polyfill_buffer(); @@ -29425,15 +29566,26 @@ var GitManager = class { this.plugin = plugin; this.app = plugin.app; } - getVaultPath(path2) { + // Constructs a path relative to the vault from a path relative to the git repository + getRelativeVaultPath(path2) { if (this.plugin.settings.basePath) { return this.plugin.settings.basePath + "/" + path2; } else { return path2; } } - asRepositoryRelativePath(path2, relativeToVault) { - return relativeToVault && this.plugin.settings.basePath.length > 0 ? path2.substring(this.plugin.settings.basePath.length + 1) : path2; + // Constructs a path relative to the git repository from a path relative to the vault + // + // @param doConversion - If false, the path is returned as is. This is added because that parameter is often passed on to functions where this method is called. + getRelativeRepoPath(filePath, doConversion = true) { + if (doConversion) { + if (this.plugin.settings.basePath.length > 0) { + return filePath.substring( + this.plugin.settings.basePath.length + 1 + ); + } + } + return filePath; } _getTreeStructure(children2, beginLength = 0) { const list = []; @@ -29454,7 +29606,7 @@ var GitManager = class { list.push({ title, path: path2, - vaultPath: this.getVaultPath(path2), + vaultPath: this.getRelativeVaultPath(path2), children: this._getTreeStructure( childrenWithSameTitle, (beginLength > 0 ? beginLength + title.length : title.length) + 1 @@ -29465,7 +29617,7 @@ var GitManager = class { title: restPath, data: first2, path: first2.path, - vaultPath: this.getVaultPath(first2.path) + vaultPath: this.getRelativeVaultPath(first2.path) }); children2.remove(first2); } @@ -29531,27 +29683,39 @@ var GitManager = class { if (template.includes("{{files}}")) { status2 = status2 != null ? status2 : await this.status(); const changeset = {}; - status2.staged.forEach((value) => { - if (value.index in changeset) { - changeset[value.index].push(value.path); - } else { - changeset[value.index] = [value.path]; + let files = ""; + if (status2.staged.length < 100) { + status2.staged.forEach((value) => { + if (value.index in changeset) { + changeset[value.index].push(value.path); + } else { + changeset[value.index] = [value.path]; + } + }); + const chunks = []; + for (const [action, files2] of Object.entries(changeset)) { + chunks.push(action + " " + files2.join(" ")); } - }); - const chunks = []; - for (const [action, files2] of Object.entries(changeset)) { - chunks.push(action + " " + files2.join(" ")); + files = chunks.join(", "); + } else { + files = "Too many files to list"; } - const files = chunks.join(", "); template = template.replace("{{files}}", files); } - const moment5 = window.moment; + const moment6 = window.moment; template = template.replace( "{{date}}", - moment5().format(this.plugin.settings.commitDateFormat) + moment6().format(this.plugin.settings.commitDateFormat) ); if (this.plugin.settings.listChangedFilesInMessageBody) { - template = template + "\n\nAffected files:\n" + (status2 != null ? status2 : await this.status()).staged.map((e) => e.path).join("\n"); + const status22 = status2 != null ? status2 : await this.status(); + let files = ""; + if (status22.staged.length < 100) { + files = status22.staged.map((e) => e.path).join("\n"); + } else { + files = "Too many files to list"; + } + template = template + "\n\nAffected files:\n" + files; } return template; } @@ -29565,18 +29729,22 @@ var SimpleGit = class extends GitManager { async setGitInstance(ignoreError = false) { if (this.isGitInstalled()) { const adapter = this.app.vault.adapter; - const path2 = adapter.getBasePath(); - let basePath = path2; + const vaultBasePath = adapter.getBasePath(); + let basePath = vaultBasePath; if (this.plugin.settings.basePath) { const exists2 = await adapter.exists( (0, import_obsidian4.normalizePath)(this.plugin.settings.basePath) ); if (exists2) { - basePath = path2 + import_path.sep + this.plugin.settings.basePath; + basePath = path.join( + vaultBasePath, + this.plugin.settings.basePath + ); } else if (!ignoreError) { new import_obsidian4.Notice("ObsidianGit: Base path does not exist"); } } + this.absoluteRepoPath = basePath; this.git = esm_default({ baseDir: basePath, binary: this.plugin.localStorage.getGitPath() || void 0, @@ -29586,8 +29754,8 @@ var SimpleGit = class extends GitManager { const envVars = this.plugin.localStorage.getEnvVars(); const gitDir = this.plugin.settings.gitDir; if (pathPaths.length > 0) { - const path3 = process.env["PATH"] + ":" + pathPaths.join(":"); - process.env["PATH"] = path3; + const path2 = process.env["PATH"] + ":" + pathPaths.join(":"); + process.env["PATH"] = path2; } if (gitDir) { process.env["GIT_DIR"] = gitDir; @@ -29598,40 +29766,68 @@ var SimpleGit = class extends GitManager { } import_debug2.default.enable("simple-git"); if (await this.git.checkIsRepo()) { - await this.git.cwd(await this.git.revparse("--show-toplevel")); + const relativeRoot = await this.git.revparse("--show-cdup"); + const absoluteRoot = (0, import_path.resolve)(basePath + import_path.sep + relativeRoot); + this.absoluteRepoPath = absoluteRoot; + await this.git.cwd(absoluteRoot); } } } + // Constructs a path relative to the vault from a path relative to the git repository + getRelativeVaultPath(filePath) { + const adapter = this.app.vault.adapter; + const from = adapter.getBasePath(); + const to = path.join(this.absoluteRepoPath, filePath); + let res = path.relative(from, to); + if (import_obsidian4.Platform.isWin) { + res = res.replace(/\\/g, "/"); + } + return res; + } + // Constructs a path relative to the git repository from a path relative to the vault + // + // @param doConversion - If false, the path is returned as is. This is added because that parameter is often passed on to functions where this method is called. + getRelativeRepoPath(filePath, doConversion = true) { + if (doConversion) { + const adapter = this.plugin.app.vault.adapter; + const vaultPath = adapter.getBasePath(); + const from = this.absoluteRepoPath; + const to = path.join(vaultPath, filePath); + let res = path.relative(from, to); + if (import_obsidian4.Platform.isWin) { + res = res.replace(/\\/g, "/"); + } + return res; + } + return filePath; + } async status() { this.plugin.setState(1 /* status */); const status2 = await this.git.status((err) => this.onError(err)); this.plugin.setState(0 /* idle */); + const allFilesFormatted = status2.files.map((e) => { + const res = this.formatPath(e); + return { + path: res.path, + from: res.from, + index: e.index === "?" ? "U" : e.index, + working_dir: e.working_dir === "?" ? "U" : e.working_dir, + vault_path: this.getRelativeVaultPath(res.path) + }; + }); return { - changed: status2.files.filter((e) => e.working_dir !== " ").map((e) => { - const res = this.formatPath(e); - return { - path: res.path, - from: res.from, - working_dir: e.working_dir === "?" ? "U" : e.working_dir, - vault_path: this.getVaultPath(res.path) - }; - }), - staged: status2.files.filter((e) => e.index !== " " && e.index != "?").map((e) => { - const res = this.formatPath(e, e.index === "R"); - return { - path: res.path, - from: res.from, - index: e.index, - vault_path: this.getVaultPath(res.path) - }; - }), + all: allFilesFormatted, + changed: allFilesFormatted.filter((e) => e.working_dir !== " "), + staged: allFilesFormatted.filter( + (e) => e.index !== " " && e.index != "U" + ), conflicted: status2.conflicted.map( (path2) => this.formatPath({ path: path2 }).path ) }; } async submoduleAwareHeadRevisonInContainingDirectory(filepath) { - const repoPath = this.asRepositoryRelativePath(filepath, true); + const repoPath = this.getRelativeRepoPath(filepath); const containingDirectory = path.dirname(repoPath); const args = ["-C", containingDirectory, "rev-parse", "HEAD"]; const result = this.git.raw(args); @@ -29641,7 +29837,7 @@ var SimpleGit = class extends GitManager { return result; } async getSubmodulePaths() { - return new Promise(async (resolve) => { + return new Promise(async (resolve2) => { this.git.outputHandler(async (cmd, stdout, stderr, args) => { if (!(args.contains("submodule") && args.contains("foreach"))) { return; @@ -29660,7 +29856,7 @@ var SimpleGit = class extends GitManager { } }).filter((i) => !!i); strippedSubmods.reverse(); - resolve(strippedSubmods); + resolve2(strippedSubmods); }); }); await this.git.subModule(["foreach", "--recursive", ""]); @@ -29671,8 +29867,7 @@ var SimpleGit = class extends GitManager { //Remove wrong `"` like "My file.md" formatPath(path2, renamed = false) { function format(path3) { - if (path3 == void 0) - return void 0; + if (path3 == void 0) return void 0; if (path3.startsWith('"') && path3.endsWith('"')) { return path3.substring(1, path3.length - 1); } else { @@ -29691,15 +29886,13 @@ var SimpleGit = class extends GitManager { } } async blame(path2, trackMovement, ignoreWhitespace) { - path2 = this.asRepositoryRelativePath(path2, true); - if (!await this.isTracked(path2)) - return "untracked"; + path2 = this.getRelativeRepoPath(path2); + if (!await this.isTracked(path2)) return "untracked"; const inSubmodule = await this.getSubmoduleOfFile(path2); const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; const relativePath = inSubmodule ? inSubmodule.relativeFilepath : path2; args.push("blame", "--porcelain"); - if (ignoreWhitespace) - args.push("-w"); + if (ignoreWhitespace) args.push("-w"); const trackCArg = `-C${GIT_LINE_AUTHORING_MOVEMENT_DETECTION_MINIMAL_LENGTH}`; switch (trackMovement) { case "inactive": @@ -29749,10 +29942,14 @@ var SimpleGit = class extends GitManager { dispatchEvent(new CustomEvent("git-head-update")); return res.summary.changes; } - async commit(message) { + async commit({ + message, + amend + }) { this.plugin.setState(4 /* commit */); const res = (await this.git.commit( await this.formatCommitMessage(message), + amend ? ["--amend"] : [], (err) => this.onError(err) )).summary.changes; dispatchEvent(new CustomEvent("git-head-update")); @@ -29761,7 +29958,7 @@ var SimpleGit = class extends GitManager { } async stage(path2, relativeToVault) { this.plugin.setState(3 /* add */); - path2 = this.asRepositoryRelativePath(path2, relativeToVault); + path2 = this.getRelativeRepoPath(path2, relativeToVault); await this.git.add(["--", path2], (err) => this.onError(err)); this.plugin.setState(0 /* idle */); } @@ -29780,7 +29977,7 @@ var SimpleGit = class extends GitManager { } async unstage(path2, relativeToVault) { this.plugin.setState(3 /* add */); - path2 = this.asRepositoryRelativePath(path2, relativeToVault); + path2 = this.getRelativeRepoPath(path2, relativeToVault); await this.git.reset(["--", path2], (err) => this.onError(err)); this.plugin.setState(0 /* idle */); } @@ -29790,7 +29987,7 @@ var SimpleGit = class extends GitManager { this.plugin.setState(0 /* idle */); } async hashObject(filepath) { - filepath = this.asRepositoryRelativePath(filepath, true); + filepath = this.getRelativeRepoPath(filepath); const inSubmodule = await this.getSubmoduleOfFile(filepath); const args = inSubmodule ? ["-C", inSubmodule.submodule] : []; const relativeFilepath = inSubmodule ? inSubmodule.relativeFilepath : filepath; @@ -29816,6 +30013,12 @@ var SimpleGit = class extends GitManager { [branchInfo.current], (err) => this.onError(err) ); + if (!branchInfo.tracking && this.plugin.settings.updateSubmodules) { + this.plugin.log( + "No tracking branch found. Ignoring pull of main repo and updating submodules only." + ); + return; + } await this.git.fetch((err) => this.onError(err)); const upstreamCommit = await this.git.revparse( [branchInfo.tracking], @@ -29867,7 +30070,7 @@ var SimpleGit = class extends GitManager { return { path: e, working_dir: "P", - vault_path: this.getVaultPath(e) + vault_path: this.getRelativeVaultPath(e) }; }); } else { @@ -29875,17 +30078,9 @@ var SimpleGit = class extends GitManager { } } async push() { - this.plugin.setState(1 /* status */); - const status2 = await this.git.status(); - const trackingBranch = status2.tracking; - const currentBranch2 = status2.current; - const remoteChangedFiles = (await this.git.diffSummary( - [currentBranch2, trackingBranch, "--"], - (err) => this.onError(err) - )).changed; this.plugin.setState(5 /* push */); if (this.plugin.settings.updateSubmodules) { - await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).subModule( + const res = await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).subModule( [ "foreach", "--recursive", @@ -29893,7 +30088,21 @@ var SimpleGit = class extends GitManager { ], (err) => this.onError(err) ); + console.log(res); } + const status2 = await this.git.status(); + const trackingBranch = status2.tracking; + const currentBranch2 = status2.current; + if (!trackingBranch && this.plugin.settings.updateSubmodules) { + this.plugin.log( + "No tracking branch found. Ignoring push of main repo and updating submodules only." + ); + return void 0; + } + const remoteChangedFiles = (await this.git.diffSummary( + [currentBranch2, trackingBranch, "--"], + (err) => this.onError(err) + )).changed; await this.git.env({ ...process.env, OBSIDIAN_GIT: 1 }).push((err) => this.onError(err)); return remoteChangedFiles; } @@ -29917,6 +30126,9 @@ var SimpleGit = class extends GitManager { const status2 = await this.git.status((err) => this.onError(err)); const trackingBranch = status2.tracking; const currentBranch2 = status2.current; + if (!trackingBranch) { + return false; + } const remoteChangedFiles = (await this.git.diffSummary([currentBranch2, trackingBranch, "--"])).changed; return remoteChangedFiles !== 0; } @@ -29942,16 +30154,21 @@ var SimpleGit = class extends GitManager { }; } async getRemoteUrl(remote) { - return await this.git.remote( - ["get-url", remote], - (err, url) => this.onError(err) - ) || void 0; + try { + return await this.git.remote(["get-url", remote]) || void 0; + } catch (error) { + if (error.toString().contains(remote)) { + return void 0; + } else { + this.onError(error); + } + } } // https://github.com/kometenstaub/obsidian-version-history-diff/issues/3 async log(file, relativeToVault = true, limit) { let path2; if (file) { - path2 = this.asRepositoryRelativePath(file, relativeToVault); + path2 = this.getRelativeRepoPath(file, relativeToVault); } const res = await this.git.log( { @@ -29966,7 +30183,11 @@ var SimpleGit = class extends GitManager { var _a2, _b, _c, _d; return { ...e, - refs: e.refs.split(", "), + author: { + name: e.author_name, + email: e.author_email + }, + refs: e.refs.split(", ").filter((e2) => e2.length > 0), diff: { ...e.diff, files: (_b = (_a2 = e.diff) == null ? void 0 : _a2.files.map((f) => ({ @@ -29974,7 +30195,7 @@ var SimpleGit = class extends GitManager { status: f.status, path: f.file, hash: e.hash, - vault_path: this.getVaultPath(f.file) + vault_path: this.getRelativeVaultPath(f.file) }))) != null ? _b : [] }, fileName: (_d = (_c = e.diff) == null ? void 0 : _c.files.first()) == null ? void 0 : _d.file @@ -29982,7 +30203,7 @@ var SimpleGit = class extends GitManager { }); } async show(commitHash, file, relativeToVault = true) { - const path2 = this.asRepositoryRelativePath(file, relativeToVault); + const path2 = this.getRelativeRepoPath(file, relativeToVault); return this.git.show( [commitHash + ":" + path2], (err) => this.onError(err) @@ -30071,8 +30292,6 @@ var SimpleGit = class extends GitManager { ["-r", "--list", `${remote}*`], (err) => this.onError(err) ); - console.log(remote); - console.log(res); const list = []; for (const item in res.branches) { list.push(res.branches[item].name); @@ -30110,19 +30329,17 @@ var SimpleGit = class extends GitManager { } } } - updateGitPath(gitPath) { + updateGitPath(_) { this.setGitInstance(); } - updateBasePath(basePath) { + updateBasePath(_) { this.setGitInstance(true); } async getDiffString(filePath, stagedChanges = false, hash2) { if (stagedChanges) return await this.git.diff(["--cached", "--", filePath]); - if (hash2) - return await this.git.show([`${hash2}`, "--", filePath]); - else - return await this.git.diff(["--", filePath]); + if (hash2) return await this.git.show([`${hash2}`, "--", filePath]); + else return await this.git.diff(["--", filePath]); } async diff(file, commit1, commit2) { return await this.git.diff([`${commit1}..${commit2}`, "--", file]); @@ -30346,8 +30563,7 @@ var EventsPerFilePath = class { * Run the {@link handler} on the subscribers to {@link filepath}. */ ifFilepathDefinedTransformSubscribers(filepath, handler) { - if (!filepath) - return; + if (!filepath) return; this.ensureInitialized(filepath); return handler(this.eventsPerFilepath.get(filepath)); } @@ -30383,12 +30599,13 @@ var import_obsidian8 = require("obsidian"); // src/gitManager/isomorphicGit.ts init_polyfill_buffer(); -// node_modules/.pnpm/diff@5.1.0/node_modules/diff/lib/index.mjs +// node_modules/.pnpm/diff@5.2.0/node_modules/diff/lib/index.mjs init_polyfill_buffer(); function Diff() { } Diff.prototype = { diff: function diff(oldString, newString) { + var _options$timeout; var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; var callback = options.callback; if (typeof options === "function") { @@ -30417,42 +30634,53 @@ Diff.prototype = { if (options.maxEditLength) { maxEditLength = Math.min(maxEditLength, options.maxEditLength); } + var maxExecutionTime = (_options$timeout = options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity; + var abortAfterTimestamp = Date.now() + maxExecutionTime; var bestPath = [{ - newPos: -1, - components: [] + oldPos: -1, + lastComponent: void 0 }]; - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + var newPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) { return done([{ value: this.join(newString), count: newString.length }]); } + var minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity; function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) { var basePath = void 0; - var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { + var removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1]; + if (removePath) { bestPath[diagonalPath - 1] = void 0; } - var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + var canAdd = false; + if (addPath) { + var addPathNewPos = addPath.oldPos - diagonalPath; + canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen; + } + var canRemove = removePath && removePath.oldPos + 1 < oldLen; if (!canAdd && !canRemove) { bestPath[diagonalPath] = void 0; continue; } - if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { - basePath = clonePath(removePath); - self2.pushComponent(basePath.components, void 0, true); + if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) { + basePath = self2.addToPath(addPath, true, void 0, 0); } else { - basePath = addPath; - basePath.newPos++; - self2.pushComponent(basePath.components, true, void 0); + basePath = self2.addToPath(removePath, void 0, true, 1); } - _oldPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); - if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { - return done(buildValues(self2, basePath.components, newString, oldString, self2.useLongestToken)); + newPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); + if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) { + return done(buildValues(self2, basePath.lastComponent, newString, oldString, self2.useLongestToken)); } else { bestPath[diagonalPath] = basePath; + if (basePath.oldPos + 1 >= oldLen) { + maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1); + } + if (newPos + 1 >= newLen) { + minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1); + } } } editLength++; @@ -30460,7 +30688,7 @@ Diff.prototype = { if (callback) { (function exec() { setTimeout(function() { - if (editLength > maxEditLength) { + if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) { return callback(); } if (!execEditLength()) { @@ -30469,7 +30697,7 @@ Diff.prototype = { }, 0); })(); } else { - while (editLength <= maxEditLength) { + while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) { var ret = execEditLength(); if (ret) { return ret; @@ -30477,36 +30705,45 @@ Diff.prototype = { } } }, - pushComponent: function pushComponent(components, added, removed) { - var last2 = components[components.length - 1]; + addToPath: function addToPath(path2, added, removed, oldPosInc) { + var last2 = path2.lastComponent; if (last2 && last2.added === added && last2.removed === removed) { - components[components.length - 1] = { - count: last2.count + 1, - added, - removed + return { + oldPos: path2.oldPos + oldPosInc, + lastComponent: { + count: last2.count + 1, + added, + removed, + previousComponent: last2.previousComponent + } }; } else { - components.push({ - count: 1, - added, - removed - }); + return { + oldPos: path2.oldPos + oldPosInc, + lastComponent: { + count: 1, + added, + removed, + previousComponent: last2 + } + }; } }, extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; + var newLen = newString.length, oldLen = oldString.length, oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0; while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { newPos++; oldPos++; commonCount++; } if (commonCount) { - basePath.components.push({ - count: commonCount - }); + basePath.lastComponent = { + count: commonCount, + previousComponent: basePath.lastComponent + }; } - basePath.newPos = newPos; - return oldPos; + basePath.oldPos = oldPos; + return newPos; }, equals: function equals(left, right) { if (this.options.comparator) { @@ -30534,7 +30771,16 @@ Diff.prototype = { return chars.join(""); } }; -function buildValues(diff2, components, newString, oldString, useLongestToken) { +function buildValues(diff3, lastComponent, newString, oldString, useLongestToken) { + var components = []; + var nextComponent; + while (lastComponent) { + components.push(lastComponent); + nextComponent = lastComponent.previousComponent; + delete lastComponent.previousComponent; + lastComponent = nextComponent; + } + components.reverse(); var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; for (; componentPos < componentLen; componentPos++) { var component = components[componentPos]; @@ -30545,16 +30791,16 @@ function buildValues(diff2, components, newString, oldString, useLongestToken) { var oldValue = oldString[oldPos + i]; return oldValue.length > value2.length ? oldValue : value2; }); - component.value = diff2.join(value); + component.value = diff3.join(value); } else { - component.value = diff2.join(newString.slice(newPos, newPos + component.count)); + component.value = diff3.join(newString.slice(newPos, newPos + component.count)); } newPos += component.count; if (!component.added) { oldPos += component.count; } } else { - component.value = diff2.join(oldString.slice(oldPos, oldPos + component.count)); + component.value = diff3.join(oldString.slice(oldPos, oldPos + component.count)); oldPos += component.count; if (componentPos && components[componentPos - 1].added) { var tmp = components[componentPos - 1]; @@ -30563,23 +30809,14 @@ function buildValues(diff2, components, newString, oldString, useLongestToken) { } } } - var lastComponent = components[componentLen - 1]; - if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff2.equals("", lastComponent.value)) { - components[componentLen - 2].value += lastComponent.value; + var finalComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof finalComponent.value === "string" && (finalComponent.added || finalComponent.removed) && diff3.equals("", finalComponent.value)) { + components[componentLen - 2].value += finalComponent.value; components.pop(); } return components; } -function clonePath(path2) { - return { - newPos: path2.newPos, - components: path2.components.slice(0) - }; -} var characterDiff = new Diff(); -function diffChars(oldStr, newStr, options) { - return characterDiff.diff(oldStr, newStr, options); -} var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; var reWhitespace = /\S/; var wordDiff = new Diff(); @@ -30601,11 +30838,11 @@ wordDiff.tokenize = function(value) { } return tokens; }; -function diffWordsWithSpace(oldStr, newStr, options) { - return wordDiff.diff(oldStr, newStr, options); -} var lineDiff = new Diff(); lineDiff.tokenize = function(value) { + if (this.options.stripTrailingCr) { + value = value.replace(/\r\n/g, "\n"); + } var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); if (!linesAndNewlines[linesAndNewlines.length - 1]) { linesAndNewlines.pop(); @@ -30651,31 +30888,22 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) - return _arrayLikeToArray(arr); + if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) - return Array.from(iter); + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _unsupportedIterableToArray(o, minLen) { - if (!o) - return; - if (typeof o === "string") - return _arrayLikeToArray(o, minLen); + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) - n = o.constructor.name; - if (n === "Map" || n === "Set") - return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) - return _arrayLikeToArray(o, minLen); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) - len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) - arr2[i] = arr[i]; + if (len == null || len > arr.length) len = arr.length; + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _nonIterableSpread() { @@ -30757,11 +30985,11 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne if (typeof options.context === "undefined") { options.context = 4; } - var diff2 = diffLines(oldStr, newStr, options); - if (!diff2) { + var diff3 = diffLines(oldStr, newStr, options); + if (!diff3) { return; } - diff2.push({ + diff3.push({ value: "", lines: [] }); @@ -30773,12 +31001,12 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne var hunks = []; var oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1; var _loop = function _loop2(i2) { - var current = diff2[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); + var current = diff3[i2], lines = current.lines || current.value.replace(/\n$/, "").split("\n"); current.lines = lines; if (current.added || current.removed) { var _curRange; if (!oldRangeStart) { - var prev = diff2[i2 - 1]; + var prev = diff3[i2 - 1]; oldRangeStart = oldLine; newRangeStart = newLine; if (prev) { @@ -30797,7 +31025,7 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne } } else { if (oldRangeStart) { - if (lines.length <= options.context * 2 && i2 < diff2.length - 2) { + if (lines.length <= options.context * 2 && i2 < diff3.length - 2) { var _curRange2; (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); } else { @@ -30811,7 +31039,7 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne newLines: newLine - newRangeStart + contextSize, lines: curRange }; - if (i2 >= diff2.length - 2 && lines.length <= options.context) { + if (i2 >= diff3.length - 2 && lines.length <= options.context) { var oldEOFNewline = /\n$/.test(oldStr); var newEOFNewline = /\n$/.test(newStr); var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; @@ -30832,7 +31060,7 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne newLine += lines.length; } }; - for (var i = 0; i < diff2.length; i++) { + for (var i = 0; i < diff3.length; i++) { _loop(i); } return { @@ -30843,16 +31071,19 @@ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, ne hunks }; } -function formatPatch(diff2) { +function formatPatch(diff3) { + if (Array.isArray(diff3)) { + return diff3.map(formatPatch).join("\n"); + } var ret = []; - if (diff2.oldFileName == diff2.newFileName) { - ret.push("Index: " + diff2.oldFileName); + if (diff3.oldFileName == diff3.newFileName) { + ret.push("Index: " + diff3.oldFileName); } ret.push("==================================================================="); - ret.push("--- " + diff2.oldFileName + (typeof diff2.oldHeader === "undefined" ? "" : " " + diff2.oldHeader)); - ret.push("+++ " + diff2.newFileName + (typeof diff2.newHeader === "undefined" ? "" : " " + diff2.newHeader)); - for (var i = 0; i < diff2.hunks.length; i++) { - var hunk = diff2.hunks[i]; + ret.push("--- " + diff3.oldFileName + (typeof diff3.oldHeader === "undefined" ? "" : " " + diff3.oldHeader)); + ret.push("+++ " + diff3.newFileName + (typeof diff3.newHeader === "undefined" ? "" : " " + diff3.newHeader)); + for (var i = 0; i < diff3.hunks.length; i++) { + var hunk = diff3.hunks[i]; if (hunk.oldLines === 0) { hunk.oldStart -= 1; } @@ -30896,26 +31127,22 @@ var GeneralModal = class extends import_obsidian5.SuggestModal { this.inputEl.value = this.config.initialValue; this.inputEl.dispatchEvent(new Event("input")); } - return new Promise((resolve) => { - this.resolve = resolve; + return new Promise((resolve2) => { + this.resolve = resolve2; }); } selectSuggestion(value, evt) { if (this.resolve) { let res; - if (this.config.allowEmpty && value === " ") - res = ""; - else if (value === "...") - res = void 0; - else - res = value; + if (this.config.allowEmpty && value === " ") res = ""; + else if (value === "...") res = void 0; + else res = value; this.resolve(res); } super.selectSuggestion(value, evt); } onClose() { - if (this.resolve) - this.resolve(void 0); + if (this.resolve) this.resolve(void 0); } getSuggestions(query) { if (this.config.onlySelection) { @@ -31007,8 +31234,7 @@ var MyAdapter = class { } } async readdir(path2) { - if (path2 === ".") - path2 = "/"; + if (path2 === ".") path2 = "/"; const res = await this.adapter.list(path2); const all = [...res.files, ...res.folders]; let formattedAll; @@ -31058,8 +31284,7 @@ var MyAdapter = class { }; } } - if (path2 === ".") - path2 = "/"; + if (path2 === ".") path2 = "/"; const file = this.vault.getAbstractFileByPath(path2); this.maybeLog("Stat: " + path2); if (file instanceof import_obsidian6.TFile) { @@ -31105,7 +31330,9 @@ var MyAdapter = class { async saveAndClear() { if (this.index !== void 0) { await this.adapter.writeBinary( - this.plugin.gitManager.getVaultPath(this.gitDir + "/index"), + this.plugin.gitManager.getRelativeVaultPath( + this.gitDir + "/index" + ), this.index, { ctime: this.indexctime, @@ -31253,7 +31480,7 @@ var IsomorphicGit = class extends GitManager { const conflicted = []; window.clearTimeout(timeout); notice == null ? void 0 : notice.hide(); - return { changed, staged, conflicted }; + return { all: status2, changed, staged, conflicted }; } catch (error) { window.clearTimeout(timeout); notice == null ? void 0 : notice.hide(); @@ -31269,18 +31496,20 @@ var IsomorphicGit = class extends GitManager { try { await this.checkAuthorInfo(); await this.stageAll({ status: status2, unstagedFiles }); - return this.commit(message); + return this.commit({ message }); } catch (error) { this.plugin.displayError(error); throw error; } } - async commit(message) { + async commit({ + message + }) { try { await this.checkAuthorInfo(); this.plugin.setState(4 /* commit */); const formatMessage = await this.formatCommitMessage(message); - const hadConflict = this.plugin.localStorage.getConflict() === "true"; + const hadConflict = this.plugin.localStorage.getConflict(); let parent = void 0; if (hadConflict) { const branchInfo = await this.branchInfo(); @@ -31293,7 +31522,7 @@ var IsomorphicGit = class extends GitManager { parent }) ); - this.plugin.localStorage.setConflict("false"); + this.plugin.localStorage.setConflict(false); return; } catch (error) { this.plugin.displayError(error); @@ -31301,15 +31530,12 @@ var IsomorphicGit = class extends GitManager { } } async stage(filepath, relativeToVault) { - const gitPath = this.asRepositoryRelativePath( - filepath, - relativeToVault - ); + const gitPath = this.getRelativeRepoPath(filepath, relativeToVault); let vaultPath; if (relativeToVault) { vaultPath = filepath; } else { - vaultPath = this.getVaultPath(filepath); + vaultPath = this.getRelativeVaultPath(filepath); } try { this.plugin.setState(3 /* add */); @@ -31365,7 +31591,7 @@ var IsomorphicGit = class extends GitManager { async unstage(filepath, relativeToVault) { try { this.plugin.setState(3 /* add */); - filepath = this.asRepositoryRelativePath(filepath, relativeToVault); + filepath = this.getRelativeRepoPath(filepath, relativeToVault); await this.wrapFS( isomorphic_git_default.resetIndex({ ...this.getRepo(), filepath }) ); @@ -31499,13 +31725,15 @@ var IsomorphicGit = class extends GitManager { path: file.path, working_dir: "P", index: "P", - vault_path: this.getVaultPath(file.path) + vault_path: this.getRelativeVaultPath(file.path) })); } catch (error) { progressNotice == null ? void 0 : progressNotice.hide(); if (error instanceof Errors.MergeConflictError) { this.plugin.handleConflict( - error.data.filepaths.map((file) => this.getVaultPath(file)) + error.data.filepaths.map( + (file) => this.getRelativeVaultPath(file) + ) ); } this.plugin.displayError(error); @@ -31631,7 +31859,7 @@ var IsomorphicGit = class extends GitManager { throw error; } } - async branchIsMerged(branch2) { + async branchIsMerged(_) { return true; } async init() { @@ -31761,6 +31989,10 @@ var IsomorphicGit = class extends GitManager { const completeMessage = log2.commit.message.split("\n\n"); return { message: completeMessage[0], + author: { + name: log2.commit.author.name, + email: log2.commit.author.email + }, body: completeMessage.slice(1).join("\n\n"), date: new Date( log2.commit.committer.timestamp @@ -31774,7 +32006,9 @@ var IsomorphicGit = class extends GitManager { return { path: item.path, status: item.type, - vault_path: this.getVaultPath(item.path), + vault_path: this.getRelativeVaultPath( + item.path + ), hash: log2.oid, binary: void 0 }; @@ -31798,7 +32032,7 @@ var IsomorphicGit = class extends GitManager { ); await this.setConfig(`branch.${branch2}.remote`, remote); } - updateGitPath(gitPath) { + updateGitPath(_) { return; } async getFileChangesCount(commitHash1, commitHash2) { @@ -31860,7 +32094,7 @@ var IsomorphicGit = class extends GitManager { }); return res.map((file) => { return { - vault_path: this.getVaultPath(file.path), + vault_path: this.getRelativeVaultPath(file.path), filepath: file.path }; }); @@ -31902,8 +32136,7 @@ var IsomorphicGit = class extends GitManager { ); if ((workdirType === "tree" || workdirType === "special") && !isBlob) return; - if (stageType === "commit") - return null; + if (stageType === "commit") return null; if ((stageType === "tree" || stageType === "special") && !isBlob) return; const stageOid = stageType === "blob" ? await stage.oid() : void 0; @@ -31940,7 +32173,7 @@ var IsomorphicGit = class extends GitManager { } } async getDiffString(filePath, stagedChanges = false, hash2) { - const vaultPath = this.getVaultPath(filePath); + const vaultPath = this.getRelativeVaultPath(filePath); const map = async (file, [A]) => { if (filePath == file) { const oid = await A.oid(); @@ -31974,12 +32207,12 @@ var IsomorphicGit = class extends GitManager { return void 0; throw err; }); - const diff2 = createPatch( + const diff3 = createPatch( vaultPath, previousContent != null ? previousContent : "", commitContent != null ? commitContent : "" ); - return diff2; + return diff3; } const stagedBlob = (await isomorphic_git_default.walk({ ...this.getRepo(), @@ -31999,21 +32232,21 @@ var IsomorphicGit = class extends GitManager { return void 0; throw err; }); - const diff2 = createPatch( + const diff3 = createPatch( vaultPath, headContent != null ? headContent : "", stagedContent ); - return diff2; + return diff3; } else { let workdirContent; - if (await app.vault.adapter.exists(vaultPath)) { - workdirContent = await app.vault.adapter.read(vaultPath); + if (await this.app.vault.adapter.exists(vaultPath)) { + workdirContent = await this.app.vault.adapter.read(vaultPath); } else { workdirContent = ""; } - const diff2 = createPatch(vaultPath, stagedContent, workdirContent); - return diff2; + const diff3 = createPatch(vaultPath, stagedContent, workdirContent); + return diff3; } } async getLastCommitTime() { @@ -32029,7 +32262,7 @@ var IsomorphicGit = class extends GitManager { index: status2[0] == "?" ? "U" : status2[0], working_dir: status2[1] == "?" ? "U" : status2[1], path: row[this.FILE], - vault_path: this.getVaultPath(row[this.FILE]) + vault_path: this.getRelativeVaultPath(row[this.FILE]) }; } async checkAuthorInfo() { @@ -32082,13 +32315,10 @@ async function forAwait2(iterable, cb) { const iter = getIterator2(iterable); while (true) { const { value, done } = await iter.next(); - if (value) - await cb(value); - if (done) - break; + if (value) await cb(value); + if (done) break; } - if (iter.return) - iter.return(); + if (iter.return) iter.return(); } async function collect2(iterable) { let size = 0; @@ -32110,11 +32340,11 @@ async function collect2(iterable) { var FORMAT_STRING_REFERENCE_URL = "https://momentjs.com/docs/#/parsing/string-format/"; var LINE_AUTHOR_FEATURE_WIKI_LINK = "https://publish.obsidian.md/git-doc/Line+Authoring"; var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { - constructor() { - super(...arguments); + constructor(app2, plugin) { + super(app2, plugin); + this.plugin = plugin; this.lineAuthorColorSettings = /* @__PURE__ */ new Map(); } - // narrow type from PluginSettingTab.plugin get settings() { return this.plugin.settings; } @@ -32124,15 +32354,14 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { const commitOrBackup = plugin.settings.differentIntervalCommitAndPush ? "commit" : "backup"; const gitReady = plugin.gitReady; containerEl.empty(); - containerEl.createEl("h2", { text: "Git Backup settings" }); if (!gitReady) { containerEl.createEl("p", { text: "Git is not ready. When all settings are correct you can configure auto backup, etc." }); + containerEl.createEl("br"); } if (gitReady) { - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Automatic" }); + new import_obsidian8.Setting(containerEl).setName("Automatic").setHeading(); new import_obsidian8.Setting(containerEl).setName("Split automatic commit and push").setDesc("Enable to use separate timer for commit and push").addToggle( (toggle) => toggle.setValue( plugin.settings.differentIntervalCommitAndPush @@ -32167,7 +32396,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.settings.autoSaveInterval ); new import_obsidian8.Notice( - `Automatic ${commitOrBackup} enabled! Every ${plugin.settings.autoSaveInterval} minutes.` + `Automatic ${commitOrBackup} enabled! Every ${formatMinutes( + plugin.settings.autoSaveInterval + )}.` ); } else if (plugin.settings.autoSaveInterval <= 0) { plugin.clearAutoBackup() && new import_obsidian8.Notice( @@ -32180,8 +32411,12 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { }) ); if (!plugin.settings.setLastSaveToLastCommit) - new import_obsidian8.Setting(containerEl).setName(`Auto Backup after stop editing any file`).setDesc( - `Requires the ${commitOrBackup} interval not to be 0. If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after stop editing any file. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` + new import_obsidian8.Setting(containerEl).setName(`Auto Backup after stopping file edits`).setDesc( + `Requires the ${commitOrBackup} interval not to be 0. + If turned on, do auto ${commitOrBackup} every ${formatMinutes( + plugin.settings.autoSaveInterval + )} after stopping file edits. + This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from the last change.` ).addToggle( (toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => { plugin.settings.autoBackupAfterFileChange = value; @@ -32221,7 +32456,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.settings.autoPushInterval ); new import_obsidian8.Notice( - `Automatic push enabled! Every ${plugin.settings.autoPushInterval} minutes.` + `Automatic push enabled! Every ${formatMinutes( + plugin.settings.autoPushInterval + )}.` ); } else if (plugin.settings.autoPushInterval <= 0) { plugin.clearAutoPush() && new import_obsidian8.Notice( @@ -32249,7 +32486,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.settings.autoPullInterval ); new import_obsidian8.Notice( - `Automatic pull enabled! Every ${plugin.settings.autoPullInterval} minutes.` + `Automatic pull enabled! Every ${formatMinutes( + plugin.settings.autoPullInterval + )}.` ); } else if (plugin.settings.autoPullInterval <= 0) { plugin.clearAutoPull() && new import_obsidian8.Notice("Automatic pull disabled!"); @@ -32273,8 +32512,7 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }) ); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Commit message" }); + new import_obsidian8.Setting(containerEl).setName("Commit message").setHeading(); new import_obsidian8.Setting(containerEl).setName("Commit message on manual backup/commit").setDesc( "Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message)" ).addTextArea( @@ -32285,14 +32523,14 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }) ); - new import_obsidian8.Setting(containerEl).setName("{{date}} placeholder format").setDesc( - `Specify custom date format. E.g. "${DATE_TIME_FORMAT_SECONDS}"` - ).addText( + const datePlaceholderSetting = new import_obsidian8.Setting(containerEl).setName("{{date}} placeholder format").addText( (text2) => text2.setPlaceholder(plugin.settings.commitDateFormat).setValue(plugin.settings.commitDateFormat).onChange(async (value) => { plugin.settings.commitDateFormat = value; await plugin.saveSettings(); }) ); + datePlaceholderSetting.descEl.innerHTML = ` + Specify custom date format. E.g. "${DATE_TIME_FORMAT_SECONDS}. See Moment.js for more formats.`; new import_obsidian8.Setting(containerEl).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device.").addText( (text2) => { var _a2; @@ -32315,8 +32553,7 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }) ); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Backup" }); + new import_obsidian8.Setting(containerEl).setName("Backup").setHeading(); if (plugin.gitManager instanceof SimpleGit) new import_obsidian8.Setting(containerEl).setName("Sync Method").setDesc( "Selects the method used for handling new changes found in your remote git repository." @@ -32352,15 +32589,37 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { }) ); if (plugin.gitManager instanceof SimpleGit) { - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Line author information" }); + new import_obsidian8.Setting(containerEl).setName("Line author information").setHeading(); this.addLineAuthorInfoSettings(); } } - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Miscellaneous" }); + new import_obsidian8.Setting(containerEl).setName("History view").setHeading(); + new import_obsidian8.Setting(containerEl).setName("Show Author").setDesc("Show the author of the commit in the history view").addDropdown((dropdown) => { + const options = { + hide: "Hide", + full: "Full", + initials: "Initials" + }; + dropdown.addOptions(options); + dropdown.setValue(plugin.settings.authorInHistoryView); + dropdown.onChange(async (option) => { + plugin.settings.authorInHistoryView = option; + plugin.saveSettings(); + plugin.refresh(); + }); + }); + new import_obsidian8.Setting(containerEl).setName("Show Date").setDesc( + "Show the date of the commit in the history view. The {{date}} placeholder format is used to display the date." + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.dateInHistoryView).onChange((value) => { + plugin.settings.dateInHistoryView = value; + plugin.saveSettings(); + plugin.refresh(); + }) + ); + new import_obsidian8.Setting(containerEl).setName("Source control view").setHeading(); new import_obsidian8.Setting(containerEl).setName( - "Automatically refresh Source Control View on file changes" + "Automatically refresh source control view on file changes" ).setDesc( "On slower machines this may cause lags. If so, just disable this option" ).addToggle( @@ -32369,7 +32628,7 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }) ); - new import_obsidian8.Setting(containerEl).setName("Source Control View refresh interval").setDesc( + new import_obsidian8.Setting(containerEl).setName("Source control view refresh interval").setDesc( "Milliseconds to wait after file change before refreshing the Source Control View" ).addText( (toggle) => toggle.setValue( @@ -32383,14 +32642,25 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.setRefreshDebouncer(); }) ); + new import_obsidian8.Setting(containerEl).setName("Miscellaneous").setHeading(); new import_obsidian8.Setting(containerEl).setName("Disable notifications").setDesc( "Disable notifications for git operations to minimize distraction (refer to status bar for updates). Errors are still shown as notifications even if you enable this setting" ).addToggle( (toggle) => toggle.setValue(plugin.settings.disablePopups).onChange((value) => { plugin.settings.disablePopups = value; + this.display(); plugin.saveSettings(); }) ); + if (!plugin.settings.disablePopups) + new import_obsidian8.Setting(containerEl).setName("Hide notifications for no changes").setDesc( + "Don't show notifications when there are no changes to commit/push" + ).addToggle( + (toggle) => toggle.setValue(plugin.settings.disablePopupsForNoChanges).onChange((value) => { + plugin.settings.disablePopupsForNoChanges = value; + plugin.saveSettings(); + }) + ); new import_obsidian8.Setting(containerEl).setName("Show status bar").setDesc( "Obsidian must be restarted for the changes to take affect" ).addToggle( @@ -32413,19 +32683,16 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }) ); - new import_obsidian8.Setting(containerEl).setName("Show changes files count in status bar").addToggle( + new import_obsidian8.Setting(containerEl).setName("Show the count of modified files in the status bar").addToggle( (toggle) => toggle.setValue(plugin.settings.changedFilesInStatusBar).onChange((value) => { plugin.settings.changedFilesInStatusBar = value; plugin.saveSettings(); }) ); - containerEl.createEl("br"); if (plugin.gitManager instanceof IsomorphicGit) { - containerEl.createEl("h3", { - text: "Authentication/Commit Author" - }); + new import_obsidian8.Setting(containerEl).setName("Authentication/commit author").setHeading(); } else { - containerEl.createEl("h3", { text: "Commit Author" }); + new import_obsidian8.Setting(containerEl).setName("Commit author").setHeading(); } if (plugin.gitManager instanceof IsomorphicGit) new import_obsidian8.Setting(containerEl).setName( @@ -32470,8 +32737,7 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { ); }); }); - containerEl.createEl("br"); - containerEl.createEl("h3", { text: "Advanced" }); + new import_obsidian8.Setting(containerEl).setName("Advanced").setHeading(); if (plugin.gitManager instanceof SimpleGit) { new import_obsidian8.Setting(containerEl).setName("Update submodules").setDesc( '"Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule' @@ -32553,7 +32819,9 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { plugin.saveSettings(); }); }); - new import_obsidian8.Setting(containerEl).setName("Disable on this device").addToggle( + new import_obsidian8.Setting(containerEl).setName("Disable on this device").setDesc( + "Disables the plugin on this device. This setting is not synced." + ).addToggle( (toggle) => toggle.setValue(plugin.localStorage.getPluginDisabled()).onChange((value) => { plugin.localStorage.setPluginDisabled(value); if (value) { @@ -32566,32 +32834,53 @@ var ObsidianGitSettingsTab = class extends import_obsidian8.PluginSettingTab { ); }) ); + new import_obsidian8.Setting(containerEl).setName("Support").setHeading(); new import_obsidian8.Setting(containerEl).setName("Donate").setDesc( "If you like this Plugin, consider donating to support continued development." ).addButton((bt) => { bt.buttonEl.outerHTML = "Buy Me a Coffee at ko-fi.com"; }); - const info = containerEl.createDiv(); - info.setAttr("align", "center"); - info.setText( - "Debugging and logging:\nYou can always see the logs of this and every other plugin by opening the console with" - ); - const keys = containerEl.createDiv(); - keys.setAttr("align", "center"); - keys.addClass("obsidian-git-shortcuts"); - if (import_obsidian8.Platform.isMacOS === true) { - keys.createEl("kbd", { text: "CMD (\u2318) + OPTION (\u2325) + I" }); - } else { - keys.createEl("kbd", { text: "CTRL + SHIFT + I" }); + const debugDiv = containerEl.createDiv(); + debugDiv.setAttr("align", "center"); + debugDiv.setAttr("style", "margin: var(--size-4-2)"); + const debugButton = debugDiv.createEl("button"); + debugButton.setText("Copy Debug Information"); + debugButton.onclick = () => { + window.navigator.clipboard.writeText( + JSON.stringify( + { + settings: this.plugin.settings, + pluginVersion: this.plugin.manifest.version + }, + null, + 4 + ) + ); + new import_obsidian8.Notice( + "Debug information copied to clipboard. May contain sensitive information!" + ); + }; + if (import_obsidian8.Platform.isDesktopApp) { + const info = containerEl.createDiv(); + info.setAttr("align", "center"); + info.setText( + "Debugging and logging:\nYou can always see the logs of this and every other plugin by opening the console with" + ); + const keys = containerEl.createDiv(); + keys.setAttr("align", "center"); + keys.addClass("obsidian-git-shortcuts"); + if (import_obsidian8.Platform.isMacOS === true) { + keys.createEl("kbd", { text: "CMD (\u2318) + OPTION (\u2325) + I" }); + } else { + keys.createEl("kbd", { text: "CTRL + SHIFT + I" }); + } } } configureLineAuthorShowStatus(show) { this.settings.lineAuthor.show = show; this.plugin.saveSettings(); - if (show) - this.plugin.lineAuthoringFeature.activateFeature(); - else - this.plugin.lineAuthoringFeature.deactivateFeature(); + if (show) this.plugin.lineAuthoringFeature.activateFeature(); + else this.plugin.lineAuthoringFeature.deactivateFeature(); } /** * Persists the setting {@link key} with value {@link value} and @@ -32917,8 +33206,7 @@ var lineAuthorState = import_state.StateField.define({ function laStateDigest(laState) { var _a2; const digest = import_js_sha256.sha256.create(); - if (!laState) - return digest; + if (!laState) return digest; const { la, key: key2, lineOffsetsFromUnsavedChanges } = laState; digest.update(la === "untracked" ? "t" : "f"); digest.update(key2); @@ -32941,8 +33229,7 @@ function maxAgeInDaysFromSettings(settings) { ).asDays(); } function enrichUnsavedChanges(tr, prev) { - if (!prev) - return void 0; + if (!prev) return void 0; if (!tr.changes.empty) { tr.changes.iterChanges((fromA, toA, fromB, toB) => { var _a2; @@ -32958,8 +33245,7 @@ function enrichUnsavedChanges(tr, prev) { let offset = (_a2 = prev.lineOffsetsFromUnsavedChanges.get(afterI)) != null ? _a2 : 0; const isLastLine = afterTo === afterI; const changeInNumberOfLines = afterLen - beforeLen; - if (isLastLine) - offset += changeInNumberOfLines; + if (isLastLine) offset += changeInNumberOfLines; prev.lineOffsetsFromUnsavedChanges.set(afterI, offset); } }); @@ -32977,7 +33263,7 @@ var LineAuthoringSubscriber = class { async notifyLineAuthoring(id, la) { if (this.view === void 0) { console.warn( - `Obsidian Git: View is not defined for editor cache key. Unforeseen situation. id: ${id}` + `Git: View is not defined for editor cache key. Unforeseen situation. id: ${id}` ); return; } @@ -33000,8 +33286,7 @@ var LineAuthoringSubscriber = class { } } subscribeMe() { - if (this.filepath === void 0) - return; + if (this.filepath === void 0) return; eventsPerFilePathSingleton.ifFilepathDefinedTransformSubscribers( this.filepath, (subs) => subs.add(this) @@ -33043,8 +33328,7 @@ var getLongestRenderedGutter = () => longestRenderedGutter; function conditionallyUpdateLongestRenderedGutter(gutter2, text2) { var _a2; const length = text2.length; - if (length < ((_a2 = longestRenderedGutter == null ? void 0 : longestRenderedGutter.length) != null ? _a2 : 0)) - return; + if (length < ((_a2 = longestRenderedGutter == null ? void 0 : longestRenderedGutter.length) != null ? _a2 : 0)) return; longestRenderedGutter = { gutter: gutter2, length, text: text2 }; const settings = latestSettings.get(); if (length !== settings.gutterSpacingFallbackLength) { @@ -33093,8 +33377,7 @@ function prepareGutterSearchForContextMenuHandling() { } function findGutterElementUnderMouse() { for (const elt of attachedGutterElements) { - if (contains(elt, mouseXY)) - return elt; + if (contains(elt, mouseXY)) return elt; } } function contains(elt, pt) { @@ -33109,14 +33392,11 @@ var pluginRef = {}; // src/lineAuthor/view/contextMenu.ts var COMMIT_ATTR = "data-commit"; function handleContextMenu(menu, editor, _mdv) { - if (editor.hasFocus()) - return; + if (editor.hasFocus()) return; const gutterElement = findGutterElementUnderMouse(); - if (!gutterElement) - return; + if (!gutterElement) return; const info = getCommitInfo(gutterElement); - if (!info) - return; + if (!info) return; if (!info.isZeroCommit && !info.isWaitingGutter) { addCopyHashMenuItem(info, menu); } @@ -33257,8 +33537,7 @@ var TextGutter = class extends import_view.GutterMarker { return document.createTextNode(this.text); } destroy(dom) { - if (!document.body.contains(dom)) - dom.remove(); + if (!document.body.contains(dom)) dom.remove(); } }; var LineAuthoringGutter = class extends import_view.GutterMarker { @@ -33348,8 +33627,7 @@ var LineAuthoringGutter = class extends import_view.GutterMarker { function prepareForDomAttachment() { const elt = templateElt.cloneNode(true); attachedGutterElements.add(elt); - if (!isWaitingGutter) - recordRenderedAgeInDays(daysSinceCommit); + if (!isWaitingGutter) recordRenderedAgeInDays(daysSinceCommit); return elt; } return prepareForDomAttachment; @@ -33420,9 +33698,9 @@ var LineAuthoringGutter = class extends import_view.GutterMarker { break; case "natural language": dateTimeFormatting = (time) => { - const diff2 = time.diff((0, import_obsidian10.moment)()); + const diff3 = time.diff((0, import_obsidian10.moment)()); const addFluentSuffix = true; - return import_obsidian10.moment.duration(diff2).humanize(addFluentSuffix); + return import_obsidian10.moment.duration(diff3).humanize(addFluentSuffix); }; break; default: @@ -33486,8 +33764,7 @@ function lineAuthoringGutterMarker(la, startLine, endLine, key2, settings, optio digest.update(`s${startLine}-e${endLine}-k${key2}-o${options}`); const cacheKey = digest.hex(); const cached = gutterInstances.get(cacheKey); - if (cached) - return cached; + if (cached) return cached; const result = new LineAuthoringGutter( la, startLine, @@ -33599,16 +33876,14 @@ function lineAuthoringGutterMarkersRangeSet(view, optLA) { digest.update("s" + Object.values(latestSettings).join(",")); const cacheKey = digest.hex(); const cached = gutterMarkersRangeSet.get(cacheKey); - if (cached) - return cached; + if (cached) return cached; const { result, allowCache } = computeLineAuthoringGutterMarkersRangeSet( doc, lineBlockEndPos, laSettings, optLA ); - if (allowCache) - gutterMarkersRangeSet.set(cacheKey, result); + if (allowCache) gutterMarkersRangeSet.set(cacheKey, result); return result; } function computeLineAuthoringGutterMarkersRangeSet(doc, blocksPerLine, settings, optLA) { @@ -33706,8 +33981,7 @@ function temporaryWorkaroundGutterSpacingForRenderedLineAuthoring(view) { ".cm-gutters" ); guttersContainers.forEach((cont) => { - if (!(cont == null ? void 0 : cont.style)) - return; + if (!(cont == null ? void 0 : cont.style)) return; if (!cont.style.marginLeft) { cont.style.marginLeft = "unset"; } @@ -33727,16 +34001,15 @@ var LineAuthorProvider = class { } async trackChanged(file) { this.trackChangedHelper(file).catch((reason) => { - console.warn("Obsidian Git: Error in trackChanged." + reason); + console.warn("Git: Error in trackChanged." + reason); return Promise.reject(reason); }); } async trackChangedHelper(file) { - if (!file) - return; + if (!file) return; if (file.path === void 0) { console.warn( - "Obsidian Git: Attempted to track change of undefined filepath. Unforeseen situation." + "Git: Attempted to track change of undefined filepath. Unforeseen situation." ); return; } @@ -33793,12 +34066,11 @@ var LineAuthoringFeature = class { const file = obsView == null ? void 0 : obsView.file; if (!this.lineAuthorInfoProvider) { console.warn( - "Obsidian Git: undefined lineAuthorInfoProvider. Unexpected situation." + "Git: undefined lineAuthorInfoProvider. Unexpected situation." ); return; } - if (file === void 0 || (obsView == null ? void 0 : obsView.allowNoFile) === true) - return; + if (file === void 0 || (obsView == null ? void 0 : obsView.allowNoFile) === true) return; this.lineAuthorInfoProvider.trackChanged(file); }; } @@ -33820,18 +34092,14 @@ var LineAuthoringFeature = class { } activateFeature() { try { - if (!this.isAvailableOnCurrentPlatform()) - return; + if (!this.isAvailableOnCurrentPlatform().available) return; setTextColorCssBasedOnSetting(this.plg.settings.lineAuthor); this.lineAuthorInfoProvider = new LineAuthorProvider(this.plg); this.createEventHandlers(); this.activateCodeMirrorExtensions(); console.log(this.plg.manifest.name + ": Enabled line authoring."); } catch (e) { - console.warn( - "Obsidian Git: Error while loading line authoring feature.", - e - ); + console.warn("Git: Error while loading line authoring feature.", e); this.deactivateFeature(); } } @@ -33971,7 +34239,7 @@ var StatusBar = class { this.plugin = plugin; this.messages = []; this.base = "obsidian-git-statusbar-"; - this.statusBarEl.setAttribute("aria-label-position", "top"); + this.statusBarEl.setAttribute("data-tooltip-position", "top"); addEventListener("git-refresh", this.refreshCommitTimestamp.bind(this)); } displayMessage(message, timeout) { @@ -34052,8 +34320,8 @@ var StatusBar = class { var _a2; const timestamp = this.lastCommitTimestamp; if (timestamp) { - const moment5 = window.moment; - const fromNow = moment5(timestamp).fromNow(); + const moment6 = window.moment; + const fromNow = moment6(timestamp).fromNow(); this.statusBarEl.ariaLabel = `${this.plugin.offlineMode ? "Offline: " : ""}Last Commit: ${fromNow}`; if ((_a2 = this.unPushedCommits) != null ? _a2 : 0 > 0) { this.statusBarEl.ariaLabel += ` @@ -34102,9 +34370,8 @@ var ChangedFilesModal = class extends import_obsidian14.FuzzySuggestModal { let working_dir = ""; let index2 = ""; if (item.working_dir != " ") - working_dir = `Working dir: ${item.working_dir} `; - if (item.index != " ") - index2 = `Index: ${item.index}`; + working_dir = `Working Dir: ${item.working_dir} `; + if (item.index != " ") index2 = `Index: ${item.index}`; return `${working_dir}${index2} | ${item.vault_path}`; } onChooseItem(item, _) { @@ -34134,23 +34401,20 @@ var CustomMessageModal = class extends import_obsidian15.SuggestModal { } open() { super.open(); - return new Promise((resolve) => { - this.resolve = resolve; + return new Promise((resolve2) => { + this.resolve = resolve2; }); } onClose() { - if (this.resolve) - this.resolve(void 0); + if (this.resolve) this.resolve(void 0); } selectSuggestion(value, evt) { - if (this.resolve) - this.resolve(value); + if (this.resolve) this.resolve(value); super.selectSuggestion(value, evt); } getSuggestions(query) { const date = window.moment().format(this.plugin.settings.commitDateFormat); - if (query == "") - query = "..."; + if (query == "") query = "..."; return [query, `${date}: ${query}`, `${query}: ${date}`]; } renderSuggestion(value, el) { @@ -34164,23 +34428,22 @@ var CustomMessageModal = class extends import_obsidian15.SuggestModal { init_polyfill_buffer(); var import_obsidian16 = require("obsidian"); async function openLineInGitHub(editor, file, manager) { - const data = await getData(manager); + const data = await getData(file, manager); if (data.result === "failure") { new import_obsidian16.Notice(data.reason); return; } - const { isGitHub, branch: branch2, repo, user } = data; + const { isGitHub, branch: branch2, repo, user, filePath } = data; if (isGitHub) { - const path2 = manager.asRepositoryRelativePath(file.path, true); const from = editor.getCursor("from").line + 1; const to = editor.getCursor("to").line + 1; if (from === to) { window.open( - `https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}` + `https://github.com/${user}/${repo}/blob/${branch2}/${filePath}?plain=1#L${from}` ); } else { window.open( - `https://github.com/${user}/${repo}/blob/${branch2}/${path2}?plain=1#L${from}-L${to}` + `https://github.com/${user}/${repo}/blob/${branch2}/${filePath}?plain=1#L${from}-L${to}` ); } } else { @@ -34188,25 +34451,58 @@ async function openLineInGitHub(editor, file, manager) { } } async function openHistoryInGitHub(file, manager) { - const data = await getData(manager); + const data = await getData(file, manager); if (data.result === "failure") { new import_obsidian16.Notice(data.reason); return; } - const { isGitHub, branch: branch2, repo, user } = data; - const path2 = manager.asRepositoryRelativePath(file.path, true); + const { isGitHub, branch: branch2, repo, user, filePath } = data; if (isGitHub) { window.open( - `https://github.com/${user}/${repo}/commits/${branch2}/${path2}` + `https://github.com/${user}/${repo}/commits/${branch2}/${filePath}` ); } else { new import_obsidian16.Notice("It seems like you are not using GitHub"); } } -async function getData(manager) { +async function getData(file, manager) { const branchInfo = await manager.branchInfo(); - const remoteBranch = branchInfo.tracking; - const branch2 = branchInfo.current; + let remoteBranch = branchInfo.tracking; + let branch2 = branchInfo.current; + let remoteUrl = void 0; + let filePath = manager.getRelativeRepoPath(file.path); + if (manager instanceof SimpleGit) { + const submodule = await manager.getSubmoduleOfFile( + manager.getRelativeRepoPath(file.path) + ); + if (submodule) { + filePath = submodule.relativeFilepath; + const status2 = await manager.git.cwd({ + path: submodule.submodule, + root: false + }).status(); + remoteBranch = status2.tracking || void 0; + branch2 = status2.current || void 0; + if (remoteBranch) { + const remote = remoteBranch.substring( + 0, + remoteBranch.indexOf("/") + ); + const config = await manager.git.cwd({ + path: submodule.submodule, + root: false + }).getConfig(`remote.${remote}.url`, "local"); + if (config.value != null) { + remoteUrl = config.value; + } else { + return { + result: "failure", + reason: "Failed to get remote url of submodule" + }; + } + } + } + } if (remoteBranch == null) { return { result: "failure", @@ -34219,20 +34515,35 @@ async function getData(manager) { reason: "Failed to get current branch name" }; } - const remote = remoteBranch.substring(0, remoteBranch.indexOf("/")); - const remoteUrl = await manager.getConfig( - `remote.${remote}.url` + if (remoteUrl == null) { + const remote = remoteBranch.substring(0, remoteBranch.indexOf("/")); + remoteUrl = await manager.getConfig(`remote.${remote}.url`); + if (remoteUrl == null) { + return { + result: "failure", + reason: "Failed to get remote url" + }; + } + } + const res = remoteUrl.match( + /(?:^https:\/\/github\.com\/(.+)\/(.+?)(?:\.git)?$)|(?:^[a-zA-Z]+@github\.com:(.+)\/(.+?)(?:\.git)?$)/ ); - const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = remoteUrl.match( - /(?:^https:\/\/github\.com\/(.*)\/(.*)\.git$)|(?:^git@github\.com:(.*)\/(.*)\.git$)/ - ); - return { - result: "success", - isGitHub: !!isGitHub, - repo: httpsRepo || sshRepo, - user: httpsUser || sshUser, - branch: branch2 - }; + if (res == null) { + return { + result: "failure", + reason: "Could not parse remote url" + }; + } else { + const [isGitHub, httpsUser, httpsRepo, sshUser, sshRepo] = res; + return { + result: "success", + isGitHub: !!isGitHub, + repo: httpsRepo || sshRepo, + user: httpsUser || sshUser, + branch: branch2, + filePath + }; + } } // src/setting/localStorageSettings.ts @@ -34282,10 +34593,10 @@ var LocalStorageSettings = class { return app.saveLocalStorage(this.prefix + "hostname", value); } getConflict() { - return app.loadLocalStorage(this.prefix + "conflict"); + return app.loadLocalStorage(this.prefix + "conflict") == "true"; } setConflict(value) { - return app.saveLocalStorage(this.prefix + "conflict", value); + return app.saveLocalStorage(this.prefix + "conflict", `${value}`); } getLastAutoPull() { return app.loadLocalStorage(this.prefix + "lastAutoPull"); @@ -34341,13 +34652,13 @@ var LocalStorageSettings = class { // src/ui/diff/diffView.ts init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/diff2html.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff-parser.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/diff-parser.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/types.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/types.js init_polyfill_buffer(); var LineType; (function(LineType2) { @@ -34368,8 +34679,14 @@ var DiffStyleType = { WORD: "word", CHAR: "char" }; +var ColorSchemeType; +(function(ColorSchemeType2) { + ColorSchemeType2["AUTO"] = "auto"; + ColorSchemeType2["DARK"] = "dark"; + ColorSchemeType2["LIGHT"] = "light"; +})(ColorSchemeType || (ColorSchemeType = {})); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/utils.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/utils.js init_polyfill_buffer(); var specials = [ "-", @@ -34407,7 +34724,7 @@ function hashCode(text2) { return hash2; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff-parser.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/diff-parser.js function getExtension(filename, language) { const filenameParts = filename.split("."); return filenameParts.length > 1 ? filenameParts[filenameParts.length - 1] : language; @@ -34698,13 +35015,344 @@ function parse(diffInput, config = {}) { return files; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/file-list-renderer.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/render-utils.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/render-utils.js init_polyfill_buffer(); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/rematch.js +// node_modules/.pnpm/diff@5.1.0/node_modules/diff/lib/index.mjs +init_polyfill_buffer(); +function Diff2() { +} +Diff2.prototype = { + diff: function diff2(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + var callback = options.callback; + if (typeof options === "function") { + callback = options; + options = {}; + } + this.options = options; + var self2 = this; + function done(value) { + if (callback) { + setTimeout(function() { + callback(void 0, value); + }, 0); + return true; + } else { + return value; + } + } + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + if (options.maxEditLength) { + maxEditLength = Math.min(maxEditLength, options.maxEditLength); + } + var bestPath = [{ + newPos: -1, + components: [] + }]; + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + return done([{ + value: this.join(newString), + count: newString.length + }]); + } + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + bestPath[diagonalPath - 1] = void 0; + } + var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + if (!canAdd && !canRemove) { + bestPath[diagonalPath] = void 0; + continue; + } + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self2.pushComponent(basePath.components, void 0, true); + } else { + basePath = addPath; + basePath.newPos++; + self2.pushComponent(basePath.components, true, void 0); + } + _oldPos = self2.extractCommon(basePath, newString, oldString, diagonalPath); + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues2(self2, basePath.components, newString, oldString, self2.useLongestToken)); + } else { + bestPath[diagonalPath] = basePath; + } + } + editLength++; + } + if (callback) { + (function exec() { + setTimeout(function() { + if (editLength > maxEditLength) { + return callback(); + } + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last2 = components[components.length - 1]; + if (last2 && last2.added === added && last2.removed === removed) { + components[components.length - 1] = { + count: last2.count + 1, + added, + removed + }; + } else { + components.push({ + count: 1, + added, + removed + }); + } + }, + extractCommon: function extractCommon2(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals2(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty2(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + }, + castInput: function castInput2(value) { + return value; + }, + tokenize: function tokenize2(value) { + return value.split(""); + }, + join: function join4(chars) { + return chars.join(""); + } +}; +function buildValues2(diff3, components, newString, oldString, useLongestToken) { + var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function(value2, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value2.length ? oldValue : value2; + }); + component.value = diff3.join(value); + } else { + component.value = diff3.join(newString.slice(newPos, newPos + component.count)); + } + newPos += component.count; + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff3.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + var lastComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff3.equals("", lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + return components; +} +function clonePath(path2) { + return { + newPos: path2.newPos, + components: path2.components.slice(0) + }; +} +var characterDiff2 = new Diff2(); +function diffChars(oldStr, newStr, options) { + return characterDiff2.diff(oldStr, newStr, options); +} +var extendedWordChars2 = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; +var reWhitespace2 = /\S/; +var wordDiff2 = new Diff2(); +wordDiff2.equals = function(left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + return left === right || this.options.ignoreWhitespace && !reWhitespace2.test(left) && !reWhitespace2.test(right); +}; +wordDiff2.tokenize = function(value) { + var tokens = value.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/); + for (var i = 0; i < tokens.length - 1; i++) { + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars2.test(tokens[i]) && extendedWordChars2.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + return tokens; +}; +function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff2.diff(oldStr, newStr, options); +} +var lineDiff2 = new Diff2(); +lineDiff2.tokenize = function(value) { + var retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + retLines.push(line); + } + } + return retLines; +}; +var sentenceDiff2 = new Diff2(); +sentenceDiff2.tokenize = function(value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); +}; +var cssDiff2 = new Diff2(); +cssDiff2.tokenize = function(value) { + return value.split(/([{}:;,]|\s+)/); +}; +function _typeof2(obj) { + "@babel/helpers - typeof"; + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof2 = function(obj2) { + return typeof obj2; + }; + } else { + _typeof2 = function(obj2) { + return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; + }; + } + return _typeof2(obj); +} +var objectPrototypeToString2 = Object.prototype.toString; +var jsonDiff2 = new Diff2(); +jsonDiff2.useLongestToken = true; +jsonDiff2.tokenize = lineDiff2.tokenize; +jsonDiff2.castInput = function(value) { + var _this$options = this.options, undefinedReplacement = _this$options.undefinedReplacement, _this$options$stringi = _this$options.stringifyReplacer, stringifyReplacer = _this$options$stringi === void 0 ? function(k, v) { + return typeof v === "undefined" ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === "string" ? value : JSON.stringify(canonicalize2(value, null, null, stringifyReplacer), stringifyReplacer, " "); +}; +jsonDiff2.equals = function(left, right) { + return Diff2.prototype.equals.call(jsonDiff2, left.replace(/,([\r\n])/g, "$1"), right.replace(/,([\r\n])/g, "$1")); +}; +function canonicalize2(obj, stack, replacementStack, replacer, key2) { + stack = stack || []; + replacementStack = replacementStack || []; + if (replacer) { + obj = replacer(key2, obj); + } + var i; + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + var canonicalizedObj; + if ("[object Array]" === objectPrototypeToString2.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize2(obj[i], stack, replacementStack, replacer, key2); + } + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + if (_typeof2(obj) === "object" && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + var sortedKeys = [], _key; + for (_key in obj) { + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + sortedKeys.sort(); + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize2(obj[_key], stack, replacementStack, replacer, _key); + } + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + return canonicalizedObj; +} +var arrayDiff2 = new Diff2(); +arrayDiff2.tokenize = function(value) { + return value.slice(); +}; +arrayDiff2.join = arrayDiff2.removeEmpty = function(value) { + return value; +}; + +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/rematch.js init_polyfill_buffer(); function levenshtein(a, b) { if (a.length === 0) { @@ -34789,7 +35437,7 @@ function newMatcherFn(distance2) { return group; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/render-utils.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/render-utils.js var CSSLineClass = { INSERTS: "d2h-ins", DELETES: "d2h-del", @@ -34802,7 +35450,8 @@ var defaultRenderConfig = { matching: LineMatchingType.NONE, matchWordsThreshold: 0.25, maxLineLengthHighlight: 1e4, - diffStyle: DiffStyleType.WORD + diffStyle: DiffStyleType.WORD, + colorScheme: ColorSchemeType.LIGHT }; var separator = "/"; var distance = newDistanceFn((change) => change.value); @@ -34826,6 +35475,17 @@ function toCSSClass(lineType) { return CSSLineClass.DELETES; } } +function colorSchemeToCss(colorScheme) { + switch (colorScheme) { + case ColorSchemeType.DARK: + return "d2h-dark-color-scheme"; + case ColorSchemeType.AUTO: + return "d2h-auto-color-scheme"; + case ColorSchemeType.LIGHT: + default: + return "d2h-light-color-scheme"; + } +} function prefixLength(isCombined) { return isCombined ? 2 : 1; } @@ -34921,11 +35581,11 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { } }; } - const diff2 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content); + const diff3 = diffStyle === "char" ? diffChars(line1.content, line2.content) : diffWordsWithSpace(line1.content, line2.content); const changedWords = []; if (diffStyle === "word" && matching === "words") { - const removed = diff2.filter((element2) => element2.removed); - const added = diff2.filter((element2) => element2.added); + const removed = diff3.filter((element2) => element2.removed); + const added = diff3.filter((element2) => element2.added); const chunks = matcher(added, removed); chunks.forEach((chunk) => { if (chunk[0].length === 1 && chunk[1].length === 1) { @@ -34937,7 +35597,7 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { } }); } - const highlightedLine = diff2.reduce((highlightedLine2, part) => { + const highlightedLine = diff3.reduce((highlightedLine2, part) => { const elemType = part.added ? "ins" : part.removed ? "del" : null; const addClass = changedWords.indexOf(part) > -1 ? ' class="d2h-change"' : ""; const escapedValue = escapeForHtml(part.value); @@ -34955,27 +35615,37 @@ function diffHighlight(diffLine1, diffLine2, isCombined, config = {}) { }; } -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/file-list-renderer.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/file-list-renderer.js var baseTemplatesPath = "file-summary"; var iconsBaseTemplatesPath = "icon"; -function render(diffFiles, hoganUtils) { - const files = diffFiles.map((file) => hoganUtils.render(baseTemplatesPath, "line", { - fileHtmlId: getHtmlId(file), - oldName: file.oldName, - newName: file.newName, - fileName: filenameDiff(file), - deletedLines: "-" + file.deletedLines, - addedLines: "+" + file.addedLines - }, { - fileIcon: hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file)) - })).join("\n"); - return hoganUtils.render(baseTemplatesPath, "wrapper", { - filesNumber: diffFiles.length, - files - }); -} +var defaultFileListRendererConfig = { + colorScheme: defaultRenderConfig.colorScheme +}; +var FileListRenderer = class { + constructor(hoganUtils, config = {}) { + this.hoganUtils = hoganUtils; + this.config = Object.assign(Object.assign({}, defaultFileListRendererConfig), config); + } + render(diffFiles) { + const files = diffFiles.map((file) => this.hoganUtils.render(baseTemplatesPath, "line", { + fileHtmlId: getHtmlId(file), + oldName: file.oldName, + newName: file.newName, + fileName: filenameDiff(file), + deletedLines: "-" + file.deletedLines, + addedLines: "+" + file.addedLines + }, { + fileIcon: this.hoganUtils.template(iconsBaseTemplatesPath, getFileIcon(file)) + })).join("\n"); + return this.hoganUtils.render(baseTemplatesPath, "wrapper", { + colorScheme: colorSchemeToCss(this.config.colorScheme), + filesNumber: diffFiles.length, + files + }); + } +}; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/line-by-line-renderer.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/line-by-line-renderer.js init_polyfill_buffer(); var defaultLineByLineRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); var genericTemplatesPath = "generic"; @@ -34997,7 +35667,10 @@ var LineByLineRenderer = class { } return this.makeFileDiffHtml(file, diffs); }).join("\n"); - return this.hoganUtils.render(genericTemplatesPath, "wrapper", { content: diffsHtml }); + return this.hoganUtils.render(genericTemplatesPath, "wrapper", { + colorScheme: colorSchemeToCss(this.config.colorScheme), + content: diffsHtml + }); } makeFileDiffHtml(file, diffs) { if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) @@ -35105,15 +35778,15 @@ var LineByLineRenderer = class { for (let i = 0; i < maxLinesNumber; i++) { const oldLine = oldLines[i]; const newLine = newLines[i]; - const diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.oldLine.prefix, - content: diff2.oldLine.content, + const diff3 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; + const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.oldLine.prefix, + content: diff3.oldLine.content, type: CSSLineClass.DELETE_CHANGES } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { oldNumber: oldLine.oldNumber, newNumber: oldLine.newNumber }) : void 0; - const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.newLine.prefix, - content: diff2.newLine.content, + const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.newLine.prefix, + content: diff3.newLine.content, type: CSSLineClass.INSERT_CHANGES } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { oldNumber: newLine.oldNumber, newNumber: newLine.newNumber }) : void 0; const { left, right } = this.generateLineHtml(file, preparedOldLine, preparedNewLine); @@ -35148,7 +35821,7 @@ var LineByLineRenderer = class { } }; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/side-by-side-renderer.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/side-by-side-renderer.js init_polyfill_buffer(); var defaultSideBySideRendererConfig = Object.assign(Object.assign({}, defaultRenderConfig), { renderNothingWhenEmpty: false, matchingMaxComparisons: 2500, maxLineSizeInBlockForComparison: 200 }); var genericTemplatesPath2 = "generic"; @@ -35170,7 +35843,10 @@ var SideBySideRenderer = class { } return this.makeFileDiffHtml(file, diffs); }).join("\n"); - return this.hoganUtils.render(genericTemplatesPath2, "wrapper", { content: diffsHtml }); + return this.hoganUtils.render(genericTemplatesPath2, "wrapper", { + colorScheme: colorSchemeToCss(this.config.colorScheme), + content: diffsHtml + }); } makeFileDiffHtml(file, diffs) { if (this.config.renderNothingWhenEmpty && Array.isArray(file.blocks) && file.blocks.length === 0) @@ -35295,15 +35971,15 @@ var SideBySideRenderer = class { for (let i = 0; i < maxLinesNumber; i++) { const oldLine = oldLines[i]; const newLine = newLines[i]; - const diff2 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; - const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.oldLine.prefix, - content: diff2.oldLine.content, + const diff3 = oldLine !== void 0 && newLine !== void 0 ? diffHighlight(oldLine.content, newLine.content, isCombined, this.config) : void 0; + const preparedOldLine = oldLine !== void 0 && oldLine.oldNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.oldLine.prefix, + content: diff3.oldLine.content, type: CSSLineClass.DELETE_CHANGES } : Object.assign(Object.assign({}, deconstructLine(oldLine.content, isCombined)), { type: toCSSClass(oldLine.type) })), { number: oldLine.oldNumber }) : void 0; - const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff2 !== void 0 ? { - prefix: diff2.newLine.prefix, - content: diff2.newLine.content, + const preparedNewLine = newLine !== void 0 && newLine.newNumber !== void 0 ? Object.assign(Object.assign({}, diff3 !== void 0 ? { + prefix: diff3.newLine.prefix, + content: diff3.newLine.content, type: CSSLineClass.INSERT_CHANGES } : Object.assign(Object.assign({}, deconstructLine(newLine.content, isCombined)), { type: toCSSClass(newLine.type) })), { number: newLine.newNumber }) : void 0; const { left, right } = this.generateLineHtml(preparedOldLine, preparedNewLine); @@ -35332,11 +36008,11 @@ var SideBySideRenderer = class { } }; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/hoganjs-utils.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/hoganjs-utils.js init_polyfill_buffer(); var Hogan3 = __toESM(require_hogan()); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html-templates.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/diff2html-templates.js init_polyfill_buffer(); var Hogan2 = __toESM(require_hogan()); var defaultTemplates = {}; @@ -35374,7 +36050,9 @@ defaultTemplates["file-summary-line"] = new Hogan2.Template({ code: function(c, defaultTemplates["file-summary-wrapper"] = new Hogan2.Template({ code: function(c, p, i) { var t = this; t.b(i = i || ""); - t.b('
'); + t.b('
'); t.b("\n" + i); t.b('
'); t.b("\n" + i); @@ -35539,7 +36217,9 @@ defaultTemplates["generic-line"] = new Hogan2.Template({ code: function(c, p, i) defaultTemplates["generic-wrapper"] = new Hogan2.Template({ code: function(c, p, i) { var t = this; t.b(i = i || ""); - t.b('
'); + t.b('
'); t.b("\n" + i); t.b(" "); t.b(t.t(t.f("content", c, p, 0))); @@ -35741,7 +36421,7 @@ defaultTemplates["tag-file-renamed"] = new Hogan2.Template({ code: function(c, p return t.fl(); }, partials: {}, subs: {} }); -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/hoganjs-utils.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/hoganjs-utils.js var HoganJsUtils = class { constructor({ compiledTemplates = {}, rawTemplates = {} }) { const compiledRawTemplates = Object.entries(rawTemplates).reduce((previousTemplates, [name, templateString]) => { @@ -35770,13 +36450,15 @@ var HoganJsUtils = class { } }; -// node_modules/.pnpm/diff2html@3.4.41/node_modules/diff2html/lib-esm/diff2html.js +// node_modules/.pnpm/diff2html@3.4.48/node_modules/diff2html/lib-esm/diff2html.js var defaultDiff2HtmlConfig = Object.assign(Object.assign(Object.assign({}, defaultLineByLineRendererConfig), defaultSideBySideRendererConfig), { outputFormat: OutputFormatType.LINE_BY_LINE, drawFileList: true }); function html(diffInput, configuration = {}) { const config = Object.assign(Object.assign({}, defaultDiff2HtmlConfig), configuration); const diffJson = typeof diffInput === "string" ? parse(diffInput, config) : diffInput; const hoganUtils = new HoganJsUtils(config); - const fileList = config.drawFileList ? render(diffJson, hoganUtils) : ""; + const { colorScheme } = config; + const fileListRendererConfig = { colorScheme }; + const fileList = config.drawFileList ? new FileListRenderer(hoganUtils, fileListRendererConfig).render(diffJson) : ""; const diffOutput = config.outputFormat === "side-by-side" ? new SideBySideRenderer(hoganUtils, config).render(diffJson) : new LineByLineRenderer(hoganUtils, config).render(diffJson); return fileList + diffOutput; } @@ -35802,8 +36484,7 @@ var DiffView = class extends import_obsidian17.ItemView { var _a2; if (((_a2 = this.state) == null ? void 0 : _a2.file) != null) { let fileName = this.state.file.split("/").last(); - if (fileName == null ? void 0 : fileName.endsWith(".md")) - fileName = fileName.slice(0, -3); + if (fileName == null ? void 0 : fileName.endsWith(".md")) fileName = fileName.slice(0, -3); return DIFF_VIEW_CONFIG.name + ` (${fileName})`; } return DIFF_VIEW_CONFIG.name; @@ -35835,35 +36516,37 @@ var DiffView = class extends import_obsidian17.ItemView { if (((_a2 = this.state) == null ? void 0 : _a2.file) && !this.gettingDiff && this.plugin.gitManager) { this.gettingDiff = true; try { - let diff2 = await this.plugin.gitManager.getDiffString( + let diff3 = await this.plugin.gitManager.getDiffString( this.state.file, this.state.staged, this.state.hash ); this.contentEl.empty(); - if (!diff2) { + if (!diff3) { if (this.plugin.gitManager instanceof SimpleGit && await this.plugin.gitManager.isTracked( this.state.file )) { - diff2 = [ + diff3 = [ `--- ${this.state.file}`, `+++ ${this.state.file}`, "" ].join("\n"); } else { const content = await this.app.vault.adapter.read( - this.plugin.gitManager.getVaultPath(this.state.file) + this.plugin.gitManager.getRelativeVaultPath( + this.state.file + ) ); const header = `--- /dev/null +++ ${this.state.file} @@ -0,0 +1,${content.split("\n").length} @@`; - diff2 = [ + diff3 = [ ...header.split("\n"), ...content.split("\n").map((line) => `+${line}`) ].join("\n"); } } - const diffEl = this.parser.parseFromString(html(diff2), "text/html").querySelector(".d2h-file-diff"); + const diffEl = this.parser.parseFromString(html(diff3), "text/html").querySelector(".d2h-file-diff"); this.contentEl.append(diffEl); } finally { this.gettingDiff = false; @@ -35874,18 +36557,18 @@ var DiffView = class extends import_obsidian17.ItemView { // src/ui/history/historyView.ts init_polyfill_buffer(); -var import_obsidian20 = require("obsidian"); +var import_obsidian21 = require("obsidian"); // src/ui/history/historyView.svelte init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/index.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/index.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/animations.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/animations.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/utils.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/utils.js init_polyfill_buffer(); function noop() { } @@ -35909,13 +36592,13 @@ function is_empty(obj) { return Object.keys(obj).length === 0; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/environment.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/environment.js init_polyfill_buffer(); var is_client = typeof window !== "undefined"; var now = is_client ? () => window.performance.now() : () => Date.now(); var raf = is_client ? (cb) => requestAnimationFrame(cb) : noop; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/loop.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/loop.js init_polyfill_buffer(); var tasks = /* @__PURE__ */ new Set(); function run_tasks(now2) { @@ -35925,13 +36608,11 @@ function run_tasks(now2) { task.f(); } }); - if (tasks.size !== 0) - raf(run_tasks); + if (tasks.size !== 0) raf(run_tasks); } function loop(callback) { let task; - if (tasks.size === 0) - raf(run_tasks); + if (tasks.size === 0) raf(run_tasks); return { promise: new Promise((fulfill) => { tasks.add(task = { c: callback, f: fulfill }); @@ -35942,23 +36623,23 @@ function loop(callback) { }; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/style_manager.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/style_manager.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dom.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/dom.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/globals.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/globals.js init_polyfill_buffer(); var globals = typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : ( // @ts-ignore Node typings have this global ); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/ResizeObserverSingleton.js var ResizeObserverSingleton = class _ResizeObserverSingleton { /** @param {ResizeObserverOptions} options */ constructor(options) { @@ -36006,7 +36687,7 @@ var ResizeObserverSingleton = class _ResizeObserverSingleton { }; ResizeObserverSingleton.entries = "WeakMap" in globals ? /* @__PURE__ */ new WeakMap() : void 0; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dom.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/dom.js var is_hydrating = false; function start_hydrating() { is_hydrating = true; @@ -36027,8 +36708,7 @@ function append_styles(target, style_sheet_id, styles) { } } function get_root_for_style(node) { - if (!node) - return document; + if (!node) return document; const root2 = node.getRootNode ? node.getRootNode() : node.ownerDocument; if (root2 && /** @type {ShadowRoot} */ root2.host) { @@ -36063,8 +36743,7 @@ function detach(node) { } function destroy_each(iterations, detaching) { for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); + if (iterations[i]) iterations[i].d(detaching); } } function element(name) { @@ -36090,18 +36769,15 @@ function stop_propagation(fn) { }; } function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); + if (value == null) node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value); } function children(element2) { return Array.from(element2.childNodes); } function set_data(text2, data) { data = "" + data; - if (text2.data === data) - return; + if (text2.data === data) return; text2.data = /** @type {string} */ data; } @@ -36132,14 +36808,13 @@ function get_custom_elements_slots(element2) { return result; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/style_manager.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/style_manager.js var managed_styles = /* @__PURE__ */ new Map(); var active = 0; function hash(str) { let hash2 = 5381; let i = str.length; - while (i--) - hash2 = (hash2 << 5) - hash2 ^ str.charCodeAt(i); + while (i--) hash2 = (hash2 << 5) - hash2 ^ str.charCodeAt(i); return hash2 >>> 0; } function create_style_information(doc, node) { @@ -36179,41 +36854,37 @@ function delete_rule(node, name) { if (deleted) { node.style.animation = next.join(", "); active -= deleted; - if (!active) - clear_rules(); + if (!active) clear_rules(); } } function clear_rules() { raf(() => { - if (active) - return; + if (active) return; managed_styles.forEach((info) => { const { ownerNode } = info.stylesheet; - if (ownerNode) - detach(ownerNode); + if (ownerNode) detach(ownerNode); }); managed_styles.clear(); }); } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/await_block.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/await_block.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/transitions.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/transitions.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/scheduler.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/scheduler.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/lifecycle.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/lifecycle.js init_polyfill_buffer(); var current_component; function set_current_component(component) { current_component = component; } function get_current_component() { - if (!current_component) - throw new Error("Function called outside component initialization"); + if (!current_component) throw new Error("Function called outside component initialization"); return current_component; } function onDestroy(fn) { @@ -36226,7 +36897,7 @@ function bubble(component, event) { } } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/scheduler.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/scheduler.js var dirty_components = []; var binding_callbacks = []; var render_callbacks = []; @@ -36265,8 +36936,7 @@ function flush() { set_current_component(null); dirty_components.length = 0; flushidx = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); + while (binding_callbacks.length) binding_callbacks.pop()(); for (let i = 0; i < render_callbacks.length; i += 1) { const callback = render_callbacks[i]; if (!seen_callbacks.has(callback)) { @@ -36301,7 +36971,7 @@ function flush_render_callbacks(fns) { render_callbacks = filtered; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/transitions.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/transitions.js var promise; function wait() { if (!promise) { @@ -36339,14 +37009,12 @@ function transition_in(block, local) { } function transition_out(block, local, detach2, callback) { if (block && block.o) { - if (outroing.has(block)) - return; + if (outroing.has(block)) return; outroing.add(block); outros.c.push(() => { outroing.delete(block); if (callback) { - if (detach2) - block.d(1); + if (detach2) block.d(1); callback(); } }); @@ -36365,8 +37033,7 @@ function create_bidirectional_transition(node, fn, params, intro) { let animation_name = null; let original_inert_value; function clear_animation() { - if (animation_name) - delete_rule(node, animation_name); + if (animation_name) delete_rule(node, animation_name); } function init3(program, duration) { const d = ( @@ -36418,8 +37085,7 @@ function create_bidirectional_transition(node, fn, params, intro) { clear_animation(); animation_name = create_rule(node, t, b, duration, delay2, easing, css); } - if (b) - tick2(0, 1); + if (b) tick2(0, 1); running_program = init3(program, duration); add_render_callback(() => dispatch(node, b, "start")); loop((now2) => { @@ -36448,8 +37114,7 @@ function create_bidirectional_transition(node, fn, params, intro) { if (running_program.b) { clear_animation(); } else { - if (!--running_program.group.r) - run_all(running_program.group.c); + if (!--running_program.group.r) run_all(running_program.group.c); } } running_program = null; @@ -36482,19 +37147,19 @@ function create_bidirectional_transition(node, fn, params, intro) { }; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/each.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/each.js init_polyfill_buffer(); function ensure_array_like(array_like_or_iterator) { return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator); } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/spread.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/spread.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/ssr.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/ssr.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/boolean_attributes.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/shared/boolean_attributes.js init_polyfill_buffer(); var _boolean_attributes = ( /** @type {const} */ @@ -36528,10 +37193,10 @@ var _boolean_attributes = ( ); var boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/utils/names.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/shared/utils/names.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/Component.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/Component.js init_polyfill_buffer(); function create_component(block) { block && block.c(); @@ -36568,7 +37233,7 @@ function make_dirty(component, i) { } component.$$.dirty[i / 31 | 0] |= 1 << i % 31; } -function init2(component, options, instance10, create_fragment10, not_equal, props, append_styles2, dirty = [-1]) { +function init2(component, options, instance10, create_fragment10, not_equal, props, append_styles2 = null, dirty = [-1]) { const parent_component = current_component; set_current_component(component); const $$ = component.$$ = { @@ -36597,10 +37262,8 @@ function init2(component, options, instance10, create_fragment10, not_equal, pro $$.ctx = instance10 ? instance10(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); + if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value); + if (ready) make_dirty(component, i); } return ret; }) : []; @@ -36617,8 +37280,7 @@ function init2(component, options, instance10, create_fragment10, not_equal, pro } else { $$.fragment && $$.fragment.c(); } - if (options.intro) - transition_in(component.$$.fragment); + if (options.intro) transition_in(component.$$.fragment); mount_component(component, options.target, options.anchor); end_hydrating(); flush(); @@ -36703,7 +37365,7 @@ if (typeof HTMLElement === "function") { }; }; await Promise.resolve(); - if (!this.$$cn) { + if (!this.$$cn || this.$$c) { return; } const $$slots = {}; @@ -36719,6 +37381,12 @@ if (typeof HTMLElement === "function") { this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp"); } } + for (const key2 in this.$$p_d) { + if (!(key2 in this.$$d) && this[key2] !== void 0) { + this.$$d[key2] = this[key2]; + delete this[key2]; + } + } this.$$c = new this.$$ctor({ target: this.shadowRoot || this, props: { @@ -36741,7 +37409,7 @@ if (typeof HTMLElement === "function") { "toAttribute" ); if (attribute_value == null) { - this.removeAttribute(key2); + this.removeAttribute(this.$$p_d[key2].attribute || key2); } else { this.setAttribute(this.$$p_d[key2].attribute || key2, attribute_value); } @@ -36764,8 +37432,7 @@ if (typeof HTMLElement === "function") { // and setting attributes through setAttribute etc, this is helpful attributeChangedCallback(attr2, _oldValue, newValue) { var _a2; - if (this.$$r) - return; + if (this.$$r) return; attr2 = this.$$g_p(attr2); this.$$d[attr2] = get_custom_element_value(attr2, newValue, this.$$p_d, "toProp"); (_a2 = this.$$c) == null ? void 0 : _a2.$set({ [attr2]: this.$$d[attr2] }); @@ -36773,7 +37440,7 @@ if (typeof HTMLElement === "function") { disconnectedCallback() { this.$$cn = false; Promise.resolve().then(() => { - if (!this.$$cn) { + if (!this.$$cn && this.$$c) { this.$$c.$destroy(); this.$$c = void 0; } @@ -36856,8 +37523,7 @@ var SvelteComponent = class { callbacks.push(callback); return () => { const index2 = callbacks.indexOf(callback); - if (index2 !== -1) - callbacks.splice(index2, 1); + if (index2 !== -1) callbacks.splice(index2, 1); }; } /** @@ -36873,27 +37539,27 @@ var SvelteComponent = class { } }; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/dev.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/dev.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/shared/version.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/shared/version.js init_polyfill_buffer(); var PUBLIC_VERSION = "4"; -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/internal/disclose-version/index.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/internal/disclose-version/index.js init_polyfill_buffer(); if (typeof window !== "undefined") (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION); -// node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs +// node_modules/.pnpm/tslib@2.6.3/node_modules/tslib/tslib.es6.mjs init_polyfill_buffer(); function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); + return value instanceof P ? value : new P(function(resolve2) { + resolve2(value); }); } - return new (P || (P = Promise))(function(resolve, reject) { + return new (P || (P = Promise))(function(resolve2, reject) { function fulfilled(value) { try { step(generator.next(value)); @@ -36909,32 +37575,33 @@ function __awaiter(thisArg, _arguments, P, generator) { } } function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + result.done ? resolve2(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } // src/ui/history/historyView.svelte -var import_obsidian19 = require("obsidian"); +var import_obsidian20 = require("obsidian"); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/index.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/index.js init_polyfill_buffer(); // src/ui/history/components/logComponent.svelte init_polyfill_buffer(); +var import_obsidian19 = require("obsidian"); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/transition/index.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/transition/index.js init_polyfill_buffer(); -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/easing/index.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/easing/index.js init_polyfill_buffer(); function cubicOut(t) { const f = t - 1; return f * f * f + 1; } -// node_modules/.pnpm/svelte@4.2.0/node_modules/svelte/src/runtime/transition/index.js +// node_modules/.pnpm/svelte@4.2.18/node_modules/svelte/src/runtime/transition/index.js function slide(node, { delay: delay2 = 0, duration = 400, easing = cubicOut, axis = "y" } = {}) { const style = getComputedStyle(node); const opacity = +style.opacity; @@ -37024,7 +37691,7 @@ function create_fragment(ctx) { ctx[1].app.vault.getAbstractFileByPath( /*diff*/ ctx[0].vault_path - ) + ) instanceof import_obsidian18.TFile ); let t2; let span; @@ -37049,8 +37716,7 @@ function create_fragment(ctx) { t1 = space(); div2 = element("div"); div1 = element("div"); - if (if_block) - if_block.c(); + if (if_block) if_block.c(); t2 = space(); span = element("span"); t3 = text(t3_value); @@ -37065,7 +37731,7 @@ function create_fragment(ctx) { ctx[0].vault_path); attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[3] ); @@ -37089,8 +37755,7 @@ function create_fragment(ctx) { append2(div3, t1); append2(div3, div2); append2(div2, div1); - if (if_block) - if_block.m(div1, null); + if (if_block) if_block.m(div1, null); append2(div2, t2); append2(div2, span); append2(span, t3); @@ -37101,8 +37766,8 @@ function create_fragment(ctx) { ctx[5] )), listen(main, "auxclick", stop_propagation( - /*showDiff*/ - ctx[5] + /*auxclick_handler*/ + ctx[8] )), listen( main, @@ -37120,15 +37785,13 @@ function create_fragment(ctx) { 1 && t0_value !== (t0_value = getDisplayPath( /*diff*/ ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); + ) + "")) set_data(t0, t0_value); if (dirty & /*view, diff*/ - 3) - show_if = /*view*/ - ctx2[1].app.vault.getAbstractFileByPath( - /*diff*/ - ctx2[0].vault_path - ); + 3) show_if = /*view*/ + ctx2[1].app.vault.getAbstractFileByPath( + /*diff*/ + ctx2[0].vault_path + ) instanceof import_obsidian18.TFile; if (show_if) { if (if_block) { if_block.p(ctx2, dirty); @@ -37143,8 +37806,7 @@ function create_fragment(ctx) { } if (dirty & /*diff*/ 1 && t3_value !== (t3_value = /*diff*/ - ctx2[0].status + "")) - set_data(t3, t3_value); + ctx2[0].status + "")) set_data(t3, t3_value); if (dirty & /*diff*/ 1 && span_data_type_value !== (span_data_type_value = /*diff*/ ctx2[0].status)) { @@ -37159,7 +37821,7 @@ function create_fragment(ctx) { 8) { attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx2[3] ); @@ -37187,8 +37849,7 @@ function create_fragment(ctx) { if (detaching) { detach(main); } - if (if_block) - if_block.d(); + if (if_block) if_block.d(); mounted = false; run_all(dispose); } @@ -37196,13 +37857,13 @@ function create_fragment(ctx) { } function instance($$self, $$props, $$invalidate) { let side; - let { diff: diff2 } = $$props; + let { diff: diff3 } = $$props; let { view } = $$props; let buttons = []; window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian18.setIcon)(b, b.getAttr("data-icon"))), 0); function open(event) { var _a2; - const file = view.app.vault.getAbstractFileByPath(diff2.vault_path); + const file = view.app.vault.getAbstractFileByPath(diff3.vault_path); if (file instanceof import_obsidian18.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } @@ -37213,9 +37874,9 @@ function instance($$self, $$props, $$invalidate) { type: DIFF_VIEW_CONFIG.type, active: true, state: { - file: diff2.path, + file: diff3.path, staged: false, - hash: diff2.hash + hash: diff3.hash } }); } @@ -37228,20 +37889,31 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(2, buttons); }); } + const auxclick_handler = (event) => { + if (event.button == 2) mayTriggerFileMenu(view.app, event, diff3.vault_path, view.leaf, "git-history"); + else showDiff(event); + }; $$self.$$set = ($$props2) => { - if ("diff" in $$props2) - $$invalidate(0, diff2 = $$props2.diff); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); + if ("diff" in $$props2) $$invalidate(0, diff3 = $$props2.diff); + if ("view" in $$props2) $$invalidate(1, view = $$props2.view); }; $$self.$$.update = () => { if ($$self.$$.dirty & /*view*/ 2) { - $: - $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + $: $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; - return [diff2, view, buttons, side, open, showDiff, focus_handler, div_binding]; + return [ + diff3, + view, + buttons, + side, + open, + showDiff, + focus_handler, + div_binding, + auxclick_handler + ]; } var LogFileComponent = class extends SvelteComponent { constructor(options) { @@ -37306,8 +37978,7 @@ function create_else_block(ctx) { div2 = element("div"); t2 = text(t2_value); t3 = space(); - if (if_block) - if_block.c(); + if (if_block) if_block.c(); t4 = space(); attr(div0, "data-icon", "folder"); set_style(div0, "padding-right", "5px"); @@ -37326,7 +37997,7 @@ function create_else_block(ctx) { attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[5] ); @@ -37353,8 +38024,7 @@ function create_else_block(ctx) { append2(div3, div2); append2(div2, t2); append2(div4, t3); - if (if_block) - if_block.m(div4, null); + if (if_block) if_block.m(div4, null); append2(div4, t4); current = true; if (!mounted) { @@ -37378,13 +38048,12 @@ function create_else_block(ctx) { } if ((!current || dirty & /*hierarchy*/ 1) && t2_value !== (t2_value = /*entity*/ - ctx[8].title + "")) - set_data(t2, t2_value); + ctx[8].title + "")) set_data(t2, t2_value); if (!current || dirty & /*side*/ 32) { attr( div3, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[5] ); @@ -37432,8 +38101,7 @@ function create_else_block(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); current = true; }, @@ -37445,8 +38113,7 @@ function create_else_block(ctx) { if (detaching) { detach(div4); } - if (if_block) - if_block.d(); + if (if_block) if_block.d(); mounted = false; dispose(); } @@ -37484,18 +38151,15 @@ function create_if_block2(ctx) { p(ctx2, dirty) { const logfilecomponent_changes = {}; if (dirty & /*hierarchy*/ - 1) - logfilecomponent_changes.diff = /*entity*/ - ctx2[8].data; + 1) logfilecomponent_changes.diff = /*entity*/ + ctx2[8].data; if (dirty & /*view*/ - 4) - logfilecomponent_changes.view = /*view*/ - ctx2[2]; + 4) logfilecomponent_changes.view = /*view*/ + ctx2[2]; logfilecomponent.$set(logfilecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(logfilecomponent.$$.fragment, local); current = true; }, @@ -37546,29 +38210,23 @@ function create_if_block_1(ctx) { p(ctx2, dirty) { const logtreecomponent_changes = {}; if (dirty & /*hierarchy*/ - 1) - logtreecomponent_changes.hierarchy = /*entity*/ - ctx2[8]; + 1) logtreecomponent_changes.hierarchy = /*entity*/ + ctx2[8]; if (dirty & /*plugin*/ - 2) - logtreecomponent_changes.plugin = /*plugin*/ - ctx2[1]; + 2) logtreecomponent_changes.plugin = /*plugin*/ + ctx2[1]; if (dirty & /*view*/ - 4) - logtreecomponent_changes.view = /*view*/ - ctx2[2]; + 4) logtreecomponent_changes.view = /*view*/ + ctx2[2]; logtreecomponent.$set(logtreecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(logtreecomponent.$$.fragment, local); if (local) { add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + if (!current) return; + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); }); } @@ -37577,8 +38235,7 @@ function create_if_block_1(ctx) { o(local) { transition_out(logtreecomponent.$$.fragment, local); if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); div_transition.run(0); } current = false; @@ -37588,8 +38245,7 @@ function create_if_block_1(ctx) { detach(div); } destroy_component(logtreecomponent); - if (detaching && div_transition) - div_transition.end(); + if (detaching && div_transition) div_transition.end(); } }; } @@ -37604,8 +38260,7 @@ function create_each_block(ctx) { if ( /*entity*/ ctx2[8].data - ) - return 0; + ) return 0; return 1; } current_block_type_index = select_block_type(ctx, -1); @@ -37643,8 +38298,7 @@ function create_each_block(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); current = true; }, @@ -37734,8 +38388,7 @@ function create_fragment2(ctx) { } }, i(local) { - if (current) - return; + if (current) return; for (let i = 0; i < each_value.length; i += 1) { transition_in(each_blocks[i]); } @@ -37768,20 +38421,15 @@ function instance2($$self, $$props, $$invalidate) { } const click_handler = (entity) => fold(entity); $$self.$$set = ($$props2) => { - if ("hierarchy" in $$props2) - $$invalidate(0, hierarchy = $$props2.hierarchy); - if ("plugin" in $$props2) - $$invalidate(1, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(2, view = $$props2.view); - if ("topLevel" in $$props2) - $$invalidate(3, topLevel = $$props2.topLevel); + if ("hierarchy" in $$props2) $$invalidate(0, hierarchy = $$props2.hierarchy); + if ("plugin" in $$props2) $$invalidate(1, plugin = $$props2.plugin); + if ("view" in $$props2) $$invalidate(2, view = $$props2.view); + if ("topLevel" in $$props2) $$invalidate(3, topLevel = $$props2.topLevel); }; $$self.$$.update = () => { if ($$self.$$.dirty & /*view*/ 4) { - $: - $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + $: $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; return [hierarchy, plugin, view, topLevel, closed, side, fold, click_handler]; @@ -37808,15 +38456,12 @@ var LogTreeComponent = class extends SvelteComponent { var logTreeComponent_default = LogTreeComponent; // src/ui/history/components/logComponent.svelte -function add_css3(target) { - append_styles(target, "svelte-1t6egnt", ".git-ref.svelte-1t6egnt{color:var(--text-accent)}"); -} function get_each_context2(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[8] = list[i]; + child_ctx[9] = list[i]; return child_ctx; } -function create_if_block_2(ctx) { +function create_if_block_4(ctx) { let div; let t_value = ( /*log*/ @@ -37827,7 +38472,7 @@ function create_if_block_2(ctx) { c() { div = element("div"); t = text(t_value); - attr(div, "class", "git-ref svelte-1t6egnt"); + attr(div, "class", "git-ref"); }, m(target, anchor) { insert(target, div, anchor); @@ -37836,8 +38481,79 @@ function create_if_block_2(ctx) { p(ctx2, dirty) { if (dirty & /*log*/ 1 && t_value !== (t_value = /*log*/ - ctx2[0].refs.join(", ") + "")) - set_data(t, t_value); + ctx2[0].refs.join(", ") + "")) set_data(t, t_value); + }, + d(detaching) { + if (detaching) { + detach(div); + } + } + }; +} +function create_if_block_3(ctx) { + let div; + let t_value = ( + /*authorToString*/ + ctx[7]( + /*log*/ + ctx[0] + ) + "" + ); + let t; + return { + c() { + div = element("div"); + t = text(t_value); + attr(div, "class", "git-author"); + }, + m(target, anchor) { + insert(target, div, anchor); + append2(div, t); + }, + p(ctx2, dirty) { + if (dirty & /*log*/ + 1 && t_value !== (t_value = /*authorToString*/ + ctx2[7]( + /*log*/ + ctx2[0] + ) + "")) set_data(t, t_value); + }, + d(detaching) { + if (detaching) { + detach(div); + } + } + }; +} +function create_if_block_2(ctx) { + let div; + let t_value = (0, import_obsidian19.moment)( + /*log*/ + ctx[0].date + ).format( + /*plugin*/ + ctx[3].settings.commitDateFormat + ) + ""; + let t; + return { + c() { + div = element("div"); + t = text(t_value); + attr(div, "class", "git-date"); + }, + m(target, anchor) { + insert(target, div, anchor); + append2(div, t); + }, + p(ctx2, dirty) { + if (dirty & /*log, plugin*/ + 9 && t_value !== (t_value = (0, import_obsidian19.moment)( + /*log*/ + ctx2[0].date + ).format( + /*plugin*/ + ctx2[3].settings.commitDateFormat + ) + "")) set_data(t, t_value); }, d(detaching) { if (detaching) { @@ -37858,8 +38574,7 @@ function create_if_block3(ctx) { if ( /*showTree*/ ctx2[2] - ) - return 0; + ) return 0; return 1; } current_block_type_index = select_block_type(ctx, -1); @@ -37898,15 +38613,12 @@ function create_if_block3(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); if (local) { add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + if (!current) return; + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); }); } @@ -37915,8 +38627,7 @@ function create_if_block3(ctx) { o(local) { transition_out(if_block); if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); div_transition.run(0); } current = false; @@ -37926,8 +38637,7 @@ function create_if_block3(ctx) { detach(div); } if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); + if (detaching && div_transition) div_transition.end(); } }; } @@ -37989,8 +38699,7 @@ function create_else_block2(ctx) { } }, i(local) { - if (current) - return; + if (current) return; for (let i = 0; i < each_value.length; i += 1) { transition_in(each_blocks[i]); } @@ -38042,22 +38751,18 @@ function create_if_block_12(ctx) { p(ctx2, dirty) { const logtreecomponent_changes = {}; if (dirty & /*logsHierarchy*/ - 64) - logtreecomponent_changes.hierarchy = /*logsHierarchy*/ - ctx2[6]; + 64) logtreecomponent_changes.hierarchy = /*logsHierarchy*/ + ctx2[6]; if (dirty & /*plugin*/ - 8) - logtreecomponent_changes.plugin = /*plugin*/ - ctx2[3]; + 8) logtreecomponent_changes.plugin = /*plugin*/ + ctx2[3]; if (dirty & /*view*/ - 2) - logtreecomponent_changes.view = /*view*/ - ctx2[1]; + 2) logtreecomponent_changes.view = /*view*/ + ctx2[1]; logtreecomponent.$set(logtreecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(logtreecomponent.$$.fragment, local); current = true; }, @@ -38081,7 +38786,7 @@ function create_each_block2(ctx) { ), diff: ( /*file*/ - ctx[8] + ctx[9] ) } }); @@ -38096,18 +38801,15 @@ function create_each_block2(ctx) { p(ctx2, dirty) { const logfilecomponent_changes = {}; if (dirty & /*view*/ - 2) - logfilecomponent_changes.view = /*view*/ - ctx2[1]; + 2) logfilecomponent_changes.view = /*view*/ + ctx2[1]; if (dirty & /*log*/ - 1) - logfilecomponent_changes.diff = /*file*/ - ctx2[8]; + 1) logfilecomponent_changes.diff = /*file*/ + ctx2[9]; logfilecomponent.$set(logfilecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(logfilecomponent.$$.fragment, local); current = true; }, @@ -38121,6 +38823,7 @@ function create_each_block2(ctx) { }; } function create_fragment3(ctx) { + var _a2; let main; let div4; let div3; @@ -38128,25 +38831,37 @@ function create_fragment3(ctx) { let t0; let div2; let t1; + let t2; + let t3; let div1; - let t2_value = ( + let t4_value = ( /*log*/ ctx[0].message + "" ); - let t2; - let div1_aria_label_value; - let t3; + let t4; + let div3_aria_label_value; + let t5; let current; let mounted; let dispose; let if_block0 = ( /*log*/ - ctx[0].refs.length > 0 && create_if_block_2(ctx) + ctx[0].refs.length > 0 && create_if_block_4(ctx) ); - let if_block1 = !/*isCollapsed*/ + let if_block1 = ( + /*plugin*/ + ctx[3].settings.authorInHistoryView != "hide" && /*log*/ + ((_a2 = ctx[0].author) == null ? void 0 : _a2.name) && create_if_block_3(ctx) + ); + let if_block2 = ( + /*plugin*/ + ctx[3].settings.dateInHistoryView && create_if_block_2(ctx) + ); + let if_block3 = !/*isCollapsed*/ ctx[4] && create_if_block3(ctx); return { c() { + var _a3; main = element("main"); div4 = element("div"); div3 = element("div"); @@ -38154,14 +38869,16 @@ function create_fragment3(ctx) { div0.innerHTML = ``; t0 = space(); div2 = element("div"); - if (if_block0) - if_block0.c(); + if (if_block0) if_block0.c(); t1 = space(); - div1 = element("div"); - t2 = text(t2_value); + if (if_block1) if_block1.c(); + t2 = space(); + if (if_block2) if_block2.c(); t3 = space(); - if (if_block1) - if_block1.c(); + div1 = element("div"); + t4 = text(t4_value); + t5 = space(); + if (if_block3) if_block3.c(); attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); toggle_class( div0, @@ -38170,15 +38887,28 @@ function create_fragment3(ctx) { ctx[4] ); attr(div1, "class", "tree-item-inner nav-folder-title-content"); - attr(div1, "aria-label", div1_aria_label_value = /*log*/ - ctx[0].message); + attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); + attr(div3, "aria-label", div3_aria_label_value = `${/*log*/ + ctx[0].refs.length > 0 ? ( + /*log*/ + ctx[0].refs.join(", ") + "\n" + ) : ""}${/*log*/ + (_a3 = ctx[0].author) == null ? void 0 : _a3.name} +${(0, import_obsidian19.moment)( + /*log*/ + ctx[0].date + ).format( + /*plugin*/ + ctx[3].settings.commitDateFormat + )} +${/*log*/ + ctx[0].message}`); attr( - div1, - "aria-label-position", + div3, + "data-tooltip-position", /*side*/ ctx[5] ); - attr(div3, "class", "tree-item-self is-clickable nav-folder-title"); attr(div4, "class", "tree-item nav-folder"); toggle_class( div4, @@ -38194,26 +38924,29 @@ function create_fragment3(ctx) { append2(div3, div0); append2(div3, t0); append2(div3, div2); - if (if_block0) - if_block0.m(div2, null); + if (if_block0) if_block0.m(div2, null); append2(div2, t1); + if (if_block1) if_block1.m(div2, null); + append2(div2, t2); + if (if_block2) if_block2.m(div2, null); + append2(div2, t3); append2(div2, div1); - append2(div1, t2); - append2(div4, t3); - if (if_block1) - if_block1.m(div4, null); + append2(div1, t4); + append2(div4, t5); + if (if_block3) if_block3.m(div4, null); current = true; if (!mounted) { dispose = listen( div3, "click", /*click_handler*/ - ctx[7] + ctx[8] ); mounted = true; } }, p(ctx2, [dirty]) { + var _a3, _b; if (!current || dirty & /*isCollapsed*/ 16) { toggle_class( @@ -38230,7 +38963,7 @@ function create_fragment3(ctx) { if (if_block0) { if_block0.p(ctx2, dirty); } else { - if_block0 = create_if_block_2(ctx2); + if_block0 = create_if_block_4(ctx2); if_block0.c(); if_block0.m(div2, t1); } @@ -38238,42 +38971,85 @@ function create_fragment3(ctx) { if_block0.d(1); if_block0 = null; } + if ( + /*plugin*/ + ctx2[3].settings.authorInHistoryView != "hide" && /*log*/ + ((_a3 = ctx2[0].author) == null ? void 0 : _a3.name) + ) { + if (if_block1) { + if_block1.p(ctx2, dirty); + } else { + if_block1 = create_if_block_3(ctx2); + if_block1.c(); + if_block1.m(div2, t2); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + if ( + /*plugin*/ + ctx2[3].settings.dateInHistoryView + ) { + if (if_block2) { + if_block2.p(ctx2, dirty); + } else { + if_block2 = create_if_block_2(ctx2); + if_block2.c(); + if_block2.m(div2, t3); + } + } else if (if_block2) { + if_block2.d(1); + if_block2 = null; + } if ((!current || dirty & /*log*/ - 1) && t2_value !== (t2_value = /*log*/ - ctx2[0].message + "")) - set_data(t2, t2_value); - if (!current || dirty & /*log*/ - 1 && div1_aria_label_value !== (div1_aria_label_value = /*log*/ - ctx2[0].message)) { - attr(div1, "aria-label", div1_aria_label_value); + 1) && t4_value !== (t4_value = /*log*/ + ctx2[0].message + "")) set_data(t4, t4_value); + if (!current || dirty & /*log, plugin*/ + 9 && div3_aria_label_value !== (div3_aria_label_value = `${/*log*/ + ctx2[0].refs.length > 0 ? ( + /*log*/ + ctx2[0].refs.join(", ") + "\n" + ) : ""}${/*log*/ + (_b = ctx2[0].author) == null ? void 0 : _b.name} +${(0, import_obsidian19.moment)( + /*log*/ + ctx2[0].date + ).format( + /*plugin*/ + ctx2[3].settings.commitDateFormat + )} +${/*log*/ + ctx2[0].message}`)) { + attr(div3, "aria-label", div3_aria_label_value); } if (!current || dirty & /*side*/ 32) { attr( - div1, - "aria-label-position", + div3, + "data-tooltip-position", /*side*/ ctx2[5] ); } if (!/*isCollapsed*/ ctx2[4]) { - if (if_block1) { - if_block1.p(ctx2, dirty); + if (if_block3) { + if_block3.p(ctx2, dirty); if (dirty & /*isCollapsed*/ 16) { - transition_in(if_block1, 1); + transition_in(if_block3, 1); } } else { - if_block1 = create_if_block3(ctx2); - if_block1.c(); - transition_in(if_block1, 1); - if_block1.m(div4, null); + if_block3 = create_if_block3(ctx2); + if_block3.c(); + transition_in(if_block3, 1); + if_block3.m(div4, null); } - } else if (if_block1) { + } else if (if_block3) { group_outros(); - transition_out(if_block1, 1, 1, () => { - if_block1 = null; + transition_out(if_block3, 1, 1, () => { + if_block3 = null; }); check_outros(); } @@ -38288,23 +39064,22 @@ function create_fragment3(ctx) { } }, i(local) { - if (current) - return; - transition_in(if_block1); + if (current) return; + transition_in(if_block3); current = true; }, o(local) { - transition_out(if_block1); + transition_out(if_block3); current = false; }, d(detaching) { if (detaching) { detach(main); } - if (if_block0) - if_block0.d(); - if (if_block1) - if_block1.d(); + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); + if (if_block2) if_block2.d(); + if (if_block3) if_block3.d(); mounted = false; dispose(); } @@ -38318,40 +39093,53 @@ function instance3($$self, $$props, $$invalidate) { let { showTree } = $$props; let { plugin } = $$props; let isCollapsed = true; + function authorToString(log3) { + const name = log3.author.name; + if (plugin.settings.authorInHistoryView == "full") { + return name; + } else if (plugin.settings.authorInHistoryView == "initials") { + const words = name.split(" ").filter((word) => word.length > 0); + return words.map((word) => word[0].toUpperCase()).join(""); + } + } const click_handler = () => $$invalidate(4, isCollapsed = !isCollapsed); $$self.$$set = ($$props2) => { - if ("log" in $$props2) - $$invalidate(0, log2 = $$props2.log); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - if ("showTree" in $$props2) - $$invalidate(2, showTree = $$props2.showTree); - if ("plugin" in $$props2) - $$invalidate(3, plugin = $$props2.plugin); + if ("log" in $$props2) $$invalidate(0, log2 = $$props2.log); + if ("view" in $$props2) $$invalidate(1, view = $$props2.view); + if ("showTree" in $$props2) $$invalidate(2, showTree = $$props2.showTree); + if ("plugin" in $$props2) $$invalidate(3, plugin = $$props2.plugin); }; $$self.$$.update = () => { if ($$self.$$.dirty & /*plugin, log*/ 9) { - $: - $$invalidate(6, logsHierarchy = { - title: "", - path: "", - vaultPath: "", - children: plugin.gitManager.getTreeStructure(log2.diff.files) - }); + $: $$invalidate(6, logsHierarchy = { + title: "", + path: "", + vaultPath: "", + children: plugin.gitManager.getTreeStructure(log2.diff.files) + }); } if ($$self.$$.dirty & /*view*/ 2) { - $: - $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + $: $$invalidate(5, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; - return [log2, view, showTree, plugin, isCollapsed, side, logsHierarchy, click_handler]; + return [ + log2, + view, + showTree, + plugin, + isCollapsed, + side, + logsHierarchy, + authorToString, + click_handler + ]; } var LogComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance3, create_fragment3, safe_not_equal, { log: 0, view: 1, showTree: 2, plugin: 3 }, add_css3); + init2(this, options, instance3, create_fragment3, safe_not_equal, { log: 0, view: 1, showTree: 2, plugin: 3 }); } }; var logComponent_default = LogComponent; @@ -38363,8 +39151,7 @@ function get_each_context3(ctx, list, i) { return child_ctx; } function create_if_block4(ctx) { - let div1; - let div0; + let div; let current; let each_value = ensure_array_like( /*logs*/ @@ -38379,20 +39166,17 @@ function create_if_block4(ctx) { }); return { c() { - div1 = element("div"); - div0 = element("div"); + div = element("div"); for (let i = 0; i < each_blocks.length; i += 1) { each_blocks[i].c(); } - attr(div0, "class", "tree-item-children nav-folder-children"); - attr(div1, "class", "tree-item nav-folder mod-root"); + attr(div, "class", "tree-item nav-folder mod-root"); }, m(target, anchor) { - insert(target, div1, anchor); - append2(div1, div0); + insert(target, div, anchor); for (let i = 0; i < each_blocks.length; i += 1) { if (each_blocks[i]) { - each_blocks[i].m(div0, null); + each_blocks[i].m(div, null); } } current = true; @@ -38414,7 +39198,7 @@ function create_if_block4(ctx) { each_blocks[i] = create_each_block3(child_ctx); each_blocks[i].c(); transition_in(each_blocks[i], 1); - each_blocks[i].m(div0, null); + each_blocks[i].m(div, null); } } group_outros(); @@ -38425,8 +39209,7 @@ function create_if_block4(ctx) { } }, i(local) { - if (current) - return; + if (current) return; for (let i = 0; i < each_value.length; i += 1) { transition_in(each_blocks[i]); } @@ -38441,7 +39224,7 @@ function create_if_block4(ctx) { }, d(detaching) { if (detaching) { - detach(div1); + detach(div); } destroy_each(each_blocks, detaching); } @@ -38481,26 +39264,21 @@ function create_each_block3(ctx) { p(ctx2, dirty) { const logcomponent_changes = {}; if (dirty & /*view*/ - 2) - logcomponent_changes.view = /*view*/ - ctx2[1]; + 2) logcomponent_changes.view = /*view*/ + ctx2[1]; if (dirty & /*showTree*/ - 4) - logcomponent_changes.showTree = /*showTree*/ - ctx2[2]; + 4) logcomponent_changes.showTree = /*showTree*/ + ctx2[2]; if (dirty & /*logs*/ - 64) - logcomponent_changes.log = /*log*/ - ctx2[11]; + 64) logcomponent_changes.log = /*log*/ + ctx2[11]; if (dirty & /*plugin*/ - 1) - logcomponent_changes.plugin = /*plugin*/ - ctx2[0]; + 1) logcomponent_changes.plugin = /*plugin*/ + ctx2[0]; logcomponent.$set(logcomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(logcomponent.$$.fragment, local); current = true; }, @@ -38539,8 +39317,7 @@ function create_fragment4(ctx) { div1 = element("div"); t1 = space(); div4 = element("div"); - if (if_block) - if_block.c(); + if (if_block) if_block.c(); attr(div0, "id", "layoutChange"); attr(div0, "class", "clickable-icon nav-action-button"); attr(div0, "aria-label", "Change Layout"); @@ -38571,8 +39348,7 @@ function create_fragment4(ctx) { ctx[9](div1); append2(main, t1); append2(main, div4); - if (if_block) - if_block.m(div4, null); + if (if_block) if_block.m(div4, null); current = true; if (!mounted) { dispose = [ @@ -38622,8 +39398,7 @@ function create_fragment4(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); current = true; }, @@ -38637,8 +39412,7 @@ function create_fragment4(ctx) { } ctx[7](null); ctx[9](null); - if (if_block) - if_block.d(); + if (if_block) if_block.d(); mounted = false; run_all(dispose); } @@ -38659,8 +39433,8 @@ function instance4($$self, $$props, $$invalidate) { plugin.app.workspace.onLayoutReady(() => { window.setTimeout( () => { - buttons.forEach((btn) => (0, import_obsidian19.setIcon)(btn, btn.getAttr("data-icon"), 16)); - (0, import_obsidian19.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + buttons.forEach((btn) => (0, import_obsidian20.setIcon)(btn, btn.getAttr("data-icon"))); + (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder"); }, 0 ); @@ -38694,10 +39468,8 @@ function instance4($$self, $$props, $$invalidate) { }); } $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(0, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); + if ("plugin" in $$props2) $$invalidate(0, plugin = $$props2.plugin); + if ("view" in $$props2) $$invalidate(1, view = $$props2.view); }; $$self.$$.update = () => { if ($$self.$$.dirty & /*layoutBtn, showTree*/ @@ -38705,7 +39477,7 @@ function instance4($$self, $$props, $$invalidate) { $: { if (layoutBtn) { layoutBtn.empty(); - (0, import_obsidian19.setIcon)(layoutBtn, showTree ? "list" : "folder", 16); + (0, import_obsidian20.setIcon)(layoutBtn, showTree ? "list" : "folder"); } } } @@ -38732,7 +39504,7 @@ var HistoryView = class extends SvelteComponent { var historyView_default = HistoryView; // src/ui/history/historyView.ts -var HistoryView2 = class extends import_obsidian20.ItemView { +var HistoryView2 = class extends import_obsidian21.ItemView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; @@ -38764,8 +39536,8 @@ var HistoryView2 = class extends import_obsidian20.ItemView { // src/ui/modals/branchModal.ts init_polyfill_buffer(); -var import_obsidian21 = require("obsidian"); -var BranchModal = class extends import_obsidian21.FuzzySuggestModal { +var import_obsidian22 = require("obsidian"); +var BranchModal = class extends import_obsidian22.FuzzySuggestModal { constructor(branches) { super(app); this.branches = branches; @@ -38782,21 +39554,20 @@ var BranchModal = class extends import_obsidian21.FuzzySuggestModal { } open() { super.open(); - return new Promise((resolve) => { - this.resolve = resolve; + return new Promise((resolve2) => { + this.resolve = resolve2; }); } async onClose() { - await new Promise((resolve) => setTimeout(resolve, 10)); - if (this.resolve) - this.resolve(void 0); + await new Promise((resolve2) => setTimeout(resolve2, 10)); + if (this.resolve) this.resolve(void 0); } }; // src/ui/modals/ignoreModal.ts init_polyfill_buffer(); -var import_obsidian22 = require("obsidian"); -var IgnoreModal = class extends import_obsidian22.Modal { +var import_obsidian23 = require("obsidian"); +var IgnoreModal = class extends import_obsidian23.Modal { constructor(app2, content) { super(app2); this.content = content; @@ -38804,8 +39575,8 @@ var IgnoreModal = class extends import_obsidian22.Modal { } open() { super.open(); - return new Promise((resolve) => { - this.resolve = resolve; + return new Promise((resolve2) => { + this.resolve = resolve2; }); } onOpen() { @@ -38834,16 +39605,16 @@ var IgnoreModal = class extends import_obsidian22.Modal { // src/ui/sourceControl/sourceControl.ts init_polyfill_buffer(); -var import_obsidian29 = require("obsidian"); +var import_obsidian30 = require("obsidian"); // src/ui/sourceControl/sourceControl.svelte init_polyfill_buffer(); -var import_obsidian28 = require("obsidian"); +var import_obsidian29 = require("obsidian"); // src/ui/modals/discardModal.ts init_polyfill_buffer(); -var import_obsidian23 = require("obsidian"); -var DiscardModal = class extends import_obsidian23.Modal { +var import_obsidian24 = require("obsidian"); +var DiscardModal = class extends import_obsidian24.Modal { constructor(app2, deletion, filename) { super(app2); this.deletion = deletion; @@ -38852,8 +39623,8 @@ var DiscardModal = class extends import_obsidian23.Modal { } myOpen() { this.open(); - return new Promise((resolve) => { - this.resolve = resolve; + return new Promise((resolve2) => { + this.resolve = resolve2; }); } onOpen() { @@ -38868,26 +39639,22 @@ var DiscardModal = class extends import_obsidian23.Modal { text: this.deletion ? "Delete" : "Discard" }); discard.addEventListener("click", async () => { - if (this.resolve) - this.resolve(true); + if (this.resolve) this.resolve(true); this.close(); }); discard.addEventListener("keypress", async () => { - if (this.resolve) - this.resolve(true); + if (this.resolve) this.resolve(true); this.close(); }); const close = div.createEl("button", { text: "Cancel" }); close.addEventListener("click", () => { - if (this.resolve) - this.resolve(false); + if (this.resolve) this.resolve(false); return this.close(); }); close.addEventListener("keypress", () => { - if (this.resolve) - this.resolve(false); + if (this.resolve) this.resolve(false); return this.close(); }); } @@ -38899,15 +39666,15 @@ var DiscardModal = class extends import_obsidian23.Modal { // src/ui/sourceControl/components/fileComponent.svelte init_polyfill_buffer(); -var import_obsidian25 = require("obsidian"); +var import_obsidian26 = require("obsidian"); -// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_kbfcpig3uak7df3ohthcqq53p4/node_modules/obsidian-community-lib/dist/index.js +// node_modules/.pnpm/obsidian-community-lib@https+++codeload.github.com+Vinzent03+obsidian-community-lib+tar.gz+e6_gis2so5ruhuavxzhyb52fw447e/node_modules/obsidian-community-lib/dist/index.js init_polyfill_buffer(); -// node_modules/.pnpm/github.com+Vinzent03+obsidian-community-lib@e663de4f95c879b40613090da78ea599ff621d24_@codemir_kbfcpig3uak7df3ohthcqq53p4/node_modules/obsidian-community-lib/dist/utils.js +// node_modules/.pnpm/obsidian-community-lib@https+++codeload.github.com+Vinzent03+obsidian-community-lib+tar.gz+e6_gis2so5ruhuavxzhyb52fw447e/node_modules/obsidian-community-lib/dist/utils.js init_polyfill_buffer(); var feather = __toESM(require_feather()); -var import_obsidian24 = require("obsidian"); +var import_obsidian25 = require("obsidian"); function hoverPreview(event, view, to) { const targetEl = event.target; app.workspace.trigger("hover-link", { @@ -38920,7 +39687,7 @@ function hoverPreview(event, view, to) { } // src/ui/sourceControl/components/fileComponent.svelte -function add_css4(target) { +function add_css3(target) { append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_if_block5(ctx) { @@ -38979,7 +39746,7 @@ function create_fragment5(ctx) { ctx[1].app.vault.getAbstractFileByPath( /*change*/ ctx[0].vault_path - ) + ) instanceof import_obsidian26.TFile ); let t2; let div1; @@ -39008,8 +39775,7 @@ function create_fragment5(ctx) { t1 = space(); div5 = element("div"); div3 = element("div"); - if (if_block) - if_block.c(); + if (if_block) if_block.c(); t2 = space(); div1 = element("div"); t3 = space(); @@ -39034,7 +39800,7 @@ function create_fragment5(ctx) { ctx[0].vault_path); attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[3] ); @@ -39059,8 +39825,7 @@ function create_fragment5(ctx) { append2(div6, t1); append2(div6, div5); append2(div5, div3); - if (if_block) - if_block.m(div3, null); + if (if_block) if_block.m(div3, null); append2(div3, t2); append2(div3, div1); ctx[12](div1); @@ -39091,8 +39856,8 @@ function create_fragment5(ctx) { ctx[7] )), listen(main, "auxclick", stop_propagation( - /*showDiff*/ - ctx[7] + /*auxclick_handler*/ + ctx[14] )), listen( main, @@ -39110,15 +39875,13 @@ function create_fragment5(ctx) { 1 && t0_value !== (t0_value = getDisplayPath( /*change*/ ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); + ) + "")) set_data(t0, t0_value); if (dirty & /*view, change*/ - 3) - show_if = /*view*/ - ctx2[1].app.vault.getAbstractFileByPath( - /*change*/ - ctx2[0].vault_path - ); + 3) show_if = /*view*/ + ctx2[1].app.vault.getAbstractFileByPath( + /*change*/ + ctx2[0].vault_path + ) instanceof import_obsidian26.TFile; if (show_if) { if (if_block) { if_block.p(ctx2, dirty); @@ -39133,8 +39896,7 @@ function create_fragment5(ctx) { } if (dirty & /*change*/ 1 && t5_value !== (t5_value = /*change*/ - ctx2[0].working_dir + "")) - set_data(t5, t5_value); + ctx2[0].working_dir + "")) set_data(t5, t5_value); if (dirty & /*change*/ 1 && div4_data_type_value !== (div4_data_type_value = /*change*/ ctx2[0].working_dir)) { @@ -39149,7 +39911,7 @@ function create_fragment5(ctx) { 8) { attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx2[3] ); @@ -39178,8 +39940,7 @@ function create_fragment5(ctx) { if (detaching) { detach(main); } - if (if_block) - if_block.d(); + if (if_block) if_block.d(); ctx[12](null); ctx[13](null); mounted = false; @@ -39193,7 +39954,7 @@ function instance5($$self, $$props, $$invalidate) { let { view } = $$props; let { manager } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian25.setIcon)(b, b.getAttr("data-icon"))), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian26.setIcon)(b, b.getAttr("data-icon"))), 0); function hover(event) { if (app.vault.getAbstractFileByPath(change.vault_path)) { hoverPreview(event, view, change.vault_path); @@ -39202,8 +39963,7 @@ function instance5($$self, $$props, $$invalidate) { function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); - console.log(event); - if (file instanceof import_obsidian25.TFile) { + if (file instanceof import_obsidian26.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -39257,19 +40017,19 @@ function instance5($$self, $$props, $$invalidate) { $$invalidate(2, buttons); }); } + const auxclick_handler = (event) => { + if (event.button == 2) mayTriggerFileMenu(view.app, event, change.vault_path, view.leaf, "git-source-control"); + else showDiff(event); + }; $$self.$$set = ($$props2) => { - if ("change" in $$props2) - $$invalidate(0, change = $$props2.change); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - if ("manager" in $$props2) - $$invalidate(9, manager = $$props2.manager); + if ("change" in $$props2) $$invalidate(0, change = $$props2.change); + if ("view" in $$props2) $$invalidate(1, view = $$props2.view); + if ("manager" in $$props2) $$invalidate(9, manager = $$props2.manager); }; $$self.$$.update = () => { if ($$self.$$.dirty & /*view*/ 2) { - $: - $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + $: $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; return [ @@ -39286,21 +40046,22 @@ function instance5($$self, $$props, $$invalidate) { focus_handler, div_binding, div1_binding, - div2_binding + div2_binding, + auxclick_handler ]; } var FileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance5, create_fragment5, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css4); + init2(this, options, instance5, create_fragment5, safe_not_equal, { change: 0, view: 1, manager: 9 }, add_css3); } }; var fileComponent_default = FileComponent; // src/ui/sourceControl/components/pulledFileComponent.svelte init_polyfill_buffer(); -var import_obsidian26 = require("obsidian"); -function add_css5(target) { +var import_obsidian27 = require("obsidian"); +function add_css4(target) { append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_fragment6(ctx) { @@ -39345,9 +40106,9 @@ function create_fragment6(ctx) { ctx[0].vault_path); attr( div2, - "aria-label-position", + "data-tooltip-position", /*side*/ - ctx[1] + ctx[2] ); attr(div2, "aria-label", div2_aria_label_value = /*change*/ ctx[0].vault_path); @@ -39368,15 +40129,15 @@ function create_fragment6(ctx) { main, "mouseover", /*hover*/ - ctx[2] + ctx[3] ), listen(main, "click", stop_propagation( /*open*/ - ctx[3] + ctx[4] )), listen(main, "auxclick", stop_propagation( - /*open*/ - ctx[3] + /*auxclick_handler*/ + ctx[6] )), listen( main, @@ -39393,12 +40154,10 @@ function create_fragment6(ctx) { 1 && t0_value !== (t0_value = getDisplayPath( /*change*/ ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); + ) + "")) set_data(t0, t0_value); if (dirty & /*change*/ 1 && t2_value !== (t2_value = /*change*/ - ctx2[0].working_dir + "")) - set_data(t2, t2_value); + ctx2[0].working_dir + "")) set_data(t2, t2_value); if (dirty & /*change*/ 1 && span_data_type_value !== (span_data_type_value = /*change*/ ctx2[0].working_dir)) { @@ -39410,12 +40169,12 @@ function create_fragment6(ctx) { attr(div2, "data-path", div2_data_path_value); } if (dirty & /*side*/ - 2) { + 4) { attr( div2, - "aria-label-position", + "data-tooltip-position", /*side*/ - ctx2[1] + ctx2[2] ); } if (dirty & /*change*/ @@ -39447,40 +40206,41 @@ function instance6($$self, $$props, $$invalidate) { function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian26.TFile) { + if (file instanceof import_obsidian27.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } function focus_handler(event) { bubble.call(this, $$self, event); } + const auxclick_handler = (event) => { + if (event.button == 2) mayTriggerFileMenu(view.app, event, change.vault_path, view.leaf, "git-source-control"); + else open(event); + }; $$self.$$set = ($$props2) => { - if ("change" in $$props2) - $$invalidate(0, change = $$props2.change); - if ("view" in $$props2) - $$invalidate(4, view = $$props2.view); + if ("change" in $$props2) $$invalidate(0, change = $$props2.change); + if ("view" in $$props2) $$invalidate(1, view = $$props2.view); }; $$self.$$.update = () => { if ($$self.$$.dirty & /*view*/ - 16) { - $: - $$invalidate(1, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + 2) { + $: $$invalidate(2, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; - return [change, side, hover, open, view, focus_handler]; + return [change, view, side, hover, open, focus_handler, auxclick_handler]; } var PulledFileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance6, create_fragment6, safe_not_equal, { change: 0, view: 4 }, add_css5); + init2(this, options, instance6, create_fragment6, safe_not_equal, { change: 0, view: 1 }, add_css4); } }; var pulledFileComponent_default = PulledFileComponent; // src/ui/sourceControl/components/stagedFileComponent.svelte init_polyfill_buffer(); -var import_obsidian27 = require("obsidian"); -function add_css6(target) { +var import_obsidian28 = require("obsidian"); +function add_css5(target) { append_styles(target, "svelte-1wbh8tp", "main.svelte-1wbh8tp .nav-file-title.svelte-1wbh8tp{align-items:center}"); } function create_if_block6(ctx) { @@ -39533,7 +40293,7 @@ function create_fragment7(ctx) { ctx[1].app.vault.getAbstractFileByPath( /*change*/ ctx[0].vault_path - ) + ) instanceof import_obsidian28.TFile ); let t2; let div1; @@ -39560,8 +40320,7 @@ function create_fragment7(ctx) { t1 = space(); div4 = element("div"); div2 = element("div"); - if (if_block) - if_block.c(); + if (if_block) if_block.c(); t2 = space(); div1 = element("div"); t3 = space(); @@ -39581,7 +40340,7 @@ function create_fragment7(ctx) { ctx[0].vault_path); attr( div5, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[3] ); @@ -39606,8 +40365,7 @@ function create_fragment7(ctx) { append2(div5, t1); append2(div5, div4); append2(div4, div2); - if (if_block) - if_block.m(div2, null); + if (if_block) if_block.m(div2, null); append2(div2, t2); append2(div2, div1); ctx[11](div1); @@ -39637,8 +40395,8 @@ function create_fragment7(ctx) { ctx[6] )), listen(main, "auxclick", stop_propagation( - /*showDiff*/ - ctx[6] + /*auxclick_handler*/ + ctx[12] )) ]; mounted = true; @@ -39650,15 +40408,13 @@ function create_fragment7(ctx) { 1 && t0_value !== (t0_value = getDisplayPath( /*change*/ ctx2[0].vault_path - ) + "")) - set_data(t0, t0_value); + ) + "")) set_data(t0, t0_value); if (dirty & /*view, change*/ - 3) - show_if = /*view*/ - ctx2[1].app.vault.getAbstractFileByPath( - /*change*/ - ctx2[0].vault_path - ); + 3) show_if = /*view*/ + ctx2[1].app.vault.getAbstractFileByPath( + /*change*/ + ctx2[0].vault_path + ) instanceof import_obsidian28.TFile; if (show_if) { if (if_block) { if_block.p(ctx2, dirty); @@ -39673,8 +40429,7 @@ function create_fragment7(ctx) { } if (dirty & /*change*/ 1 && t4_value !== (t4_value = /*change*/ - ctx2[0].index + "")) - set_data(t4, t4_value); + ctx2[0].index + "")) set_data(t4, t4_value); if (dirty & /*change*/ 1 && div3_data_type_value !== (div3_data_type_value = /*change*/ ctx2[0].index)) { @@ -39689,7 +40444,7 @@ function create_fragment7(ctx) { 8) { attr( div5, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx2[3] ); @@ -39718,8 +40473,7 @@ function create_fragment7(ctx) { if (detaching) { detach(main); } - if (if_block) - if_block.d(); + if (if_block) if_block.d(); ctx[11](null); mounted = false; run_all(dispose); @@ -39727,22 +40481,21 @@ function create_fragment7(ctx) { }; } function instance7($$self, $$props, $$invalidate) { - let formattedPath; let side; let { change } = $$props; let { view } = $$props; let { manager } = $$props; let buttons = []; - window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian27.setIcon)(b, b.getAttr("data-icon"), 16)), 0); + window.setTimeout(() => buttons.forEach((b) => (0, import_obsidian28.setIcon)(b, b.getAttr("data-icon"))), 0); function hover(event) { - if (app.vault.getAbstractFileByPath(change.vault_path)) { + if (view.app.vault.getFileByPath(change.vault_path)) { hoverPreview(event, view, change.vault_path); } } function open(event) { var _a2; const file = view.app.vault.getAbstractFileByPath(change.vault_path); - if (file instanceof import_obsidian27.TFile) { + if (file instanceof import_obsidian28.TFile) { (_a2 = getNewLeaf(event)) === null || _a2 === void 0 ? void 0 : _a2.openFile(file); } } @@ -39774,24 +40527,19 @@ function instance7($$self, $$props, $$invalidate) { $$invalidate(2, buttons); }); } + const auxclick_handler = (event) => { + if (event.button == 2) mayTriggerFileMenu(view.app, event, change.vault_path, view.leaf, "git-source-control"); + else showDiff(event); + }; $$self.$$set = ($$props2) => { - if ("change" in $$props2) - $$invalidate(0, change = $$props2.change); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); - if ("manager" in $$props2) - $$invalidate(8, manager = $$props2.manager); + if ("change" in $$props2) $$invalidate(0, change = $$props2.change); + if ("view" in $$props2) $$invalidate(1, view = $$props2.view); + if ("manager" in $$props2) $$invalidate(8, manager = $$props2.manager); }; $$self.$$.update = () => { - if ($$self.$$.dirty & /*change*/ - 1) { - $: - formattedPath = change.vault_path; - } if ($$self.$$.dirty & /*view*/ 2) { - $: - $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + $: $$invalidate(3, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; return [ @@ -39806,25 +40554,26 @@ function instance7($$self, $$props, $$invalidate) { manager, focus_handler, div_binding, - div1_binding + div1_binding, + auxclick_handler ]; } var StagedFileComponent = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance7, create_fragment7, safe_not_equal, { change: 0, view: 1, manager: 8 }, add_css6); + init2(this, options, instance7, create_fragment7, safe_not_equal, { change: 0, view: 1, manager: 8 }, add_css5); } }; var stagedFileComponent_default = StagedFileComponent; // src/ui/sourceControl/components/treeComponent.svelte init_polyfill_buffer(); -function add_css7(target) { +function add_css6(target) { append_styles(target, "svelte-hup5mn", "main.svelte-hup5mn .nav-folder-title.svelte-hup5mn{align-items:center}"); } function get_each_context4(ctx, list, i) { const child_ctx = ctx.slice(); - child_ctx[15] = list[i]; + child_ctx[16] = list[i]; return child_ctx; } function create_else_block3(ctx) { @@ -39837,7 +40586,7 @@ function create_else_block3(ctx) { let div2; let t2_value = ( /*entity*/ - ctx[15].title + "" + ctx[16].title + "" ); let t2; let t3; @@ -39855,8 +40604,7 @@ function create_else_block3(ctx) { if ( /*fileType*/ ctx2[3] == 0 /* staged */ - ) - return create_if_block_5; + ) return create_if_block_5; return create_else_block_1; } let current_block_type = select_block_type_2(ctx, -1); @@ -39864,14 +40612,24 @@ function create_else_block3(ctx) { let if_block1 = !/*closed*/ ctx[5][ /*entity*/ - ctx[15].title - ] && create_if_block_4(ctx); + ctx[16].title + ] && create_if_block_42(ctx); function click_handler_3() { return ( /*click_handler_3*/ ctx[14]( /*entity*/ - ctx[15] + ctx[16] + ) + ); + } + function auxclick_handler(...args) { + return ( + /*auxclick_handler*/ + ctx[15]( + /*entity*/ + ctx[16], + ...args ) ); } @@ -39893,8 +40651,7 @@ function create_else_block3(ctx) { t4 = space(); div3 = element("div"); t5 = space(); - if (if_block1) - if_block1.c(); + if (if_block1) if_block1.c(); t6 = space(); attr(div0, "data-icon", "folder"); set_style(div0, "padding-right", "5px"); @@ -39906,7 +40663,7 @@ function create_else_block3(ctx) { /*closed*/ ctx[5][ /*entity*/ - ctx[15].title + ctx[16].title ] ); attr(div2, "class", "tree-item-inner nav-folder-title-content"); @@ -39916,12 +40673,12 @@ function create_else_block3(ctx) { attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-hup5mn"); attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[6] ); attr(div6, "aria-label", div6_aria_label_value = /*entity*/ - ctx[15].vaultPath); + ctx[16].vaultPath); attr(div7, "class", "tree-item nav-folder"); toggle_class( div7, @@ -39929,7 +40686,7 @@ function create_else_block3(ctx) { /*closed*/ ctx[5][ /*entity*/ - ctx[15].title + ctx[16].title ] ); }, @@ -39949,12 +40706,14 @@ function create_else_block3(ctx) { append2(div4, t4); append2(div4, div3); append2(div7, t5); - if (if_block1) - if_block1.m(div7, null); + if (if_block1) if_block1.m(div7, null); append2(div7, t6); current = true; if (!mounted) { - dispose = listen(div7, "click", click_handler_3); + dispose = [ + listen(div7, "click", stop_propagation(click_handler_3)), + listen(div7, "auxclick", stop_propagation(auxclick_handler)) + ]; mounted = true; } }, @@ -39968,14 +40727,13 @@ function create_else_block3(ctx) { /*closed*/ ctx[5][ /*entity*/ - ctx[15].title + ctx[16].title ] ); } if ((!current || dirty & /*hierarchy*/ 1) && t2_value !== (t2_value = /*entity*/ - ctx[15].title + "")) - set_data(t2, t2_value); + ctx[16].title + "")) set_data(t2, t2_value); if (current_block_type === (current_block_type = select_block_type_2(ctx, dirty)) && if_block0) { if_block0.p(ctx, dirty); } else { @@ -39990,20 +40748,20 @@ function create_else_block3(ctx) { 64) { attr( div6, - "aria-label-position", + "data-tooltip-position", /*side*/ ctx[6] ); } if (!current || dirty & /*hierarchy*/ 1 && div6_aria_label_value !== (div6_aria_label_value = /*entity*/ - ctx[15].vaultPath)) { + ctx[16].vaultPath)) { attr(div6, "aria-label", div6_aria_label_value); } if (!/*closed*/ ctx[5][ /*entity*/ - ctx[15].title + ctx[16].title ]) { if (if_block1) { if_block1.p(ctx, dirty); @@ -40012,7 +40770,7 @@ function create_else_block3(ctx) { transition_in(if_block1, 1); } } else { - if_block1 = create_if_block_4(ctx); + if_block1 = create_if_block_42(ctx); if_block1.c(); transition_in(if_block1, 1); if_block1.m(div7, t6); @@ -40032,14 +40790,13 @@ function create_else_block3(ctx) { /*closed*/ ctx[5][ /*entity*/ - ctx[15].title + ctx[16].title ] ); } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block1); current = true; }, @@ -40052,10 +40809,9 @@ function create_else_block3(ctx) { detach(div7); } if_block0.d(); - if (if_block1) - if_block1.d(); + if (if_block1) if_block1.d(); mounted = false; - dispose(); + run_all(dispose); } }; } @@ -40065,24 +40821,21 @@ function create_if_block7(ctx) { let if_block; let t; let current; - const if_block_creators = [create_if_block_13, create_if_block_22, create_if_block_3]; + const if_block_creators = [create_if_block_13, create_if_block_22, create_if_block_32]; const if_blocks = []; function select_block_type_1(ctx2, dirty) { if ( /*fileType*/ ctx2[3] == 0 /* staged */ - ) - return 0; + ) return 0; if ( /*fileType*/ ctx2[3] == 1 /* changed */ - ) - return 1; + ) return 1; if ( /*fileType*/ ctx2[3] == 2 /* pulled */ - ) - return 2; + ) return 2; return -1; } if (~(current_block_type_index = select_block_type_1(ctx, -1))) { @@ -40091,8 +40844,7 @@ function create_if_block7(ctx) { return { c() { div = element("div"); - if (if_block) - if_block.c(); + if (if_block) if_block.c(); t = space(); }, m(target, anchor) { @@ -40134,8 +40886,7 @@ function create_if_block7(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); current = true; }, @@ -40164,7 +40915,7 @@ function create_else_block_1(ctx) { /*click_handler_1*/ ctx[12]( /*entity*/ - ctx[15] + ctx[16] ) ); } @@ -40173,7 +40924,7 @@ function create_else_block_1(ctx) { /*click_handler_2*/ ctx[13]( /*entity*/ - ctx[15] + ctx[16] ) ); } @@ -40226,7 +40977,7 @@ function create_if_block_5(ctx) { /*click_handler*/ ctx[11]( /*entity*/ - ctx[15] + ctx[16] ) ); } @@ -40257,7 +41008,7 @@ function create_if_block_5(ctx) { } }; } -function create_if_block_4(ctx) { +function create_if_block_42(ctx) { let div; let treecomponent; let div_transition; @@ -40266,7 +41017,7 @@ function create_if_block_4(ctx) { props: { hierarchy: ( /*entity*/ - ctx[15] + ctx[16] ), plugin: ( /*plugin*/ @@ -40296,33 +41047,26 @@ function create_if_block_4(ctx) { p(ctx2, dirty) { const treecomponent_changes = {}; if (dirty & /*hierarchy*/ - 1) - treecomponent_changes.hierarchy = /*entity*/ - ctx2[15]; + 1) treecomponent_changes.hierarchy = /*entity*/ + ctx2[16]; if (dirty & /*plugin*/ - 2) - treecomponent_changes.plugin = /*plugin*/ - ctx2[1]; + 2) treecomponent_changes.plugin = /*plugin*/ + ctx2[1]; if (dirty & /*view*/ - 4) - treecomponent_changes.view = /*view*/ - ctx2[2]; + 4) treecomponent_changes.view = /*view*/ + ctx2[2]; if (dirty & /*fileType*/ - 8) - treecomponent_changes.fileType = /*fileType*/ - ctx2[3]; + 8) treecomponent_changes.fileType = /*fileType*/ + ctx2[3]; treecomponent.$set(treecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(treecomponent.$$.fragment, local); if (local) { add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + if (!current) return; + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); }); } @@ -40331,8 +41075,7 @@ function create_if_block_4(ctx) { o(local) { transition_out(treecomponent.$$.fragment, local); if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); div_transition.run(0); } current = false; @@ -40342,19 +41085,18 @@ function create_if_block_4(ctx) { detach(div); } destroy_component(treecomponent); - if (detaching && div_transition) - div_transition.end(); + if (detaching && div_transition) div_transition.end(); } }; } -function create_if_block_3(ctx) { +function create_if_block_32(ctx) { let pulledfilecomponent; let current; pulledfilecomponent = new pulledFileComponent_default({ props: { change: ( /*entity*/ - ctx[15].data + ctx[16].data ), view: ( /*view*/ @@ -40373,18 +41115,15 @@ function create_if_block_3(ctx) { p(ctx2, dirty) { const pulledfilecomponent_changes = {}; if (dirty & /*hierarchy*/ - 1) - pulledfilecomponent_changes.change = /*entity*/ - ctx2[15].data; + 1) pulledfilecomponent_changes.change = /*entity*/ + ctx2[16].data; if (dirty & /*view*/ - 4) - pulledfilecomponent_changes.view = /*view*/ - ctx2[2]; + 4) pulledfilecomponent_changes.view = /*view*/ + ctx2[2]; pulledfilecomponent.$set(pulledfilecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(pulledfilecomponent.$$.fragment, local); current = true; }, @@ -40404,7 +41143,7 @@ function create_if_block_22(ctx) { props: { change: ( /*entity*/ - ctx[15].data + ctx[16].data ), manager: ( /*plugin*/ @@ -40427,22 +41166,18 @@ function create_if_block_22(ctx) { p(ctx2, dirty) { const filecomponent_changes = {}; if (dirty & /*hierarchy*/ - 1) - filecomponent_changes.change = /*entity*/ - ctx2[15].data; + 1) filecomponent_changes.change = /*entity*/ + ctx2[16].data; if (dirty & /*plugin*/ - 2) - filecomponent_changes.manager = /*plugin*/ - ctx2[1].gitManager; + 2) filecomponent_changes.manager = /*plugin*/ + ctx2[1].gitManager; if (dirty & /*view*/ - 4) - filecomponent_changes.view = /*view*/ - ctx2[2]; + 4) filecomponent_changes.view = /*view*/ + ctx2[2]; filecomponent.$set(filecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(filecomponent.$$.fragment, local); current = true; }, @@ -40462,7 +41197,7 @@ function create_if_block_13(ctx) { props: { change: ( /*entity*/ - ctx[15].data + ctx[16].data ), manager: ( /*plugin*/ @@ -40485,22 +41220,18 @@ function create_if_block_13(ctx) { p(ctx2, dirty) { const stagedfilecomponent_changes = {}; if (dirty & /*hierarchy*/ - 1) - stagedfilecomponent_changes.change = /*entity*/ - ctx2[15].data; + 1) stagedfilecomponent_changes.change = /*entity*/ + ctx2[16].data; if (dirty & /*plugin*/ - 2) - stagedfilecomponent_changes.manager = /*plugin*/ - ctx2[1].gitManager; + 2) stagedfilecomponent_changes.manager = /*plugin*/ + ctx2[1].gitManager; if (dirty & /*view*/ - 4) - stagedfilecomponent_changes.view = /*view*/ - ctx2[2]; + 4) stagedfilecomponent_changes.view = /*view*/ + ctx2[2]; stagedfilecomponent.$set(stagedfilecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(stagedfilecomponent.$$.fragment, local); current = true; }, @@ -40523,9 +41254,8 @@ function create_each_block4(ctx) { function select_block_type(ctx2, dirty) { if ( /*entity*/ - ctx2[15].data - ) - return 0; + ctx2[16].data + ) return 0; return 1; } current_block_type_index = select_block_type(ctx, -1); @@ -40563,8 +41293,7 @@ function create_each_block4(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); current = true; }, @@ -40654,8 +41383,7 @@ function create_fragment8(ctx) { } }, i(local) { - if (current) - return; + if (current) return; for (let i = 0; i < each_value.length; i += 1) { transition_in(each_blocks[i]); } @@ -40713,23 +41441,18 @@ function instance8($$self, $$props, $$invalidate) { const click_handler_1 = (entity) => discard(entity); const click_handler_2 = (entity) => stage(entity.path); const click_handler_3 = (entity) => fold(entity); + const auxclick_handler = (entity, event) => mayTriggerFileMenu(view.app, event, entity.vaultPath, view.leaf, "git-source-control"); $$self.$$set = ($$props2) => { - if ("hierarchy" in $$props2) - $$invalidate(0, hierarchy = $$props2.hierarchy); - if ("plugin" in $$props2) - $$invalidate(1, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(2, view = $$props2.view); - if ("fileType" in $$props2) - $$invalidate(3, fileType = $$props2.fileType); - if ("topLevel" in $$props2) - $$invalidate(4, topLevel = $$props2.topLevel); + if ("hierarchy" in $$props2) $$invalidate(0, hierarchy = $$props2.hierarchy); + if ("plugin" in $$props2) $$invalidate(1, plugin = $$props2.plugin); + if ("view" in $$props2) $$invalidate(2, view = $$props2.view); + if ("fileType" in $$props2) $$invalidate(3, fileType = $$props2.fileType); + if ("topLevel" in $$props2) $$invalidate(4, topLevel = $$props2.topLevel); }; $$self.$$.update = () => { if ($$self.$$.dirty & /*view*/ 4) { - $: - $$invalidate(6, side = view.leaf.getRoot().side == "left" ? "right" : "left"); + $: $$invalidate(6, side = view.leaf.getRoot().side == "left" ? "right" : "left"); } }; return [ @@ -40747,7 +41470,8 @@ function instance8($$self, $$props, $$invalidate) { click_handler, click_handler_1, click_handler_2, - click_handler_3 + click_handler_3, + auxclick_handler ]; } var TreeComponent = class extends SvelteComponent { @@ -40766,15 +41490,15 @@ var TreeComponent = class extends SvelteComponent { fileType: 3, topLevel: 4 }, - add_css7 + add_css6 ); } }; var treeComponent_default = TreeComponent; // src/ui/sourceControl/sourceControl.svelte -function add_css8(target) { - append_styles(target, "svelte-1bvmxec", `.commit-msg-input.svelte-1bvmxec.svelte-1bvmxec{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-1bvmxec.svelte-1bvmxec{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-1bvmxec .git-tools .files-count.svelte-1bvmxec{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.nav-folder-title.svelte-1bvmxec.svelte-1bvmxec{align-items:center}.git-commit-msg-clear-button.svelte-1bvmxec.svelte-1bvmxec{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-1bvmxec.svelte-1bvmxec:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}`); +function add_css7(target) { + append_styles(target, "svelte-11adhly", `.commit-msg-input.svelte-11adhly.svelte-11adhly{width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field)}.git-commit-msg.svelte-11adhly.svelte-11adhly{position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto}main.svelte-11adhly .git-tools .files-count.svelte-11adhly{padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center}.nav-folder-title.svelte-11adhly.svelte-11adhly{align-items:center}.git-commit-msg-clear-button.svelte-11adhly.svelte-11adhly{position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out}.git-commit-msg-clear-button.svelte-11adhly.svelte-11adhly:after{content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;mask-image:url("data:image/svg+xml,");mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,");-webkit-mask-repeat:no-repeat}`); } function get_each_context5(ctx, list, i) { const child_ctx = ctx.slice(); @@ -40799,7 +41523,7 @@ function create_if_block_8(ctx) { return { c() { div = element("div"); - attr(div, "class", "git-commit-msg-clear-button svelte-1bvmxec"); + attr(div, "class", "git-commit-msg-clear-button svelte-11adhly"); attr(div, "aria-label", div_aria_label_value = "Clear"); }, m(target, anchor) { @@ -40825,7 +41549,6 @@ function create_if_block_8(ctx) { }; } function create_if_block8(ctx) { - let div18; let div17; let div7; let div6; @@ -40874,7 +41597,7 @@ function create_if_block8(ctx) { ); let if_block1 = ( /*changesOpen*/ - ctx[12] && create_if_block_42(ctx) + ctx[12] && create_if_block_43(ctx) ); let if_block2 = ( /*lastPulledFiles*/ @@ -40882,7 +41605,6 @@ function create_if_block8(ctx) { ); return { c() { - div18 = element("div"); div17 = element("div"); div7 = element("div"); div6 = element("div"); @@ -40900,8 +41622,7 @@ function create_if_block8(ctx) { div4 = element("div"); t4 = text(t4_value); t5 = space(); - if (if_block0) - if_block0.c(); + if (if_block0) if_block0.c(); t6 = space(); div16 = element("div"); div15 = element("div"); @@ -40922,11 +41643,9 @@ function create_if_block8(ctx) { div13 = element("div"); t12 = text(t12_value); t13 = space(); - if (if_block1) - if_block1.c(); + if (if_block1) if_block1.c(); t14 = space(); - if (if_block2) - if_block2.c(); + if (if_block2) if_block2.c(); attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); toggle_class(div0, "is-collapsed", !/*stagedOpen*/ ctx[13]); @@ -40935,9 +41654,9 @@ function create_if_block8(ctx) { attr(div2, "aria-label", "Unstage"); attr(div2, "class", "clickable-icon"); attr(div3, "class", "buttons"); - attr(div4, "class", "files-count svelte-1bvmxec"); + attr(div4, "class", "files-count svelte-11adhly"); attr(div5, "class", "git-tools"); - attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); + attr(div6, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); attr(div7, "class", "staged tree-item nav-folder"); toggle_class(div7, "is-collapsed", !/*stagedOpen*/ ctx[13]); @@ -40952,18 +41671,16 @@ function create_if_block8(ctx) { attr(div11, "aria-label", "Stage"); attr(div11, "class", "clickable-icon"); attr(div12, "class", "buttons"); - attr(div13, "class", "files-count svelte-1bvmxec"); + attr(div13, "class", "files-count svelte-11adhly"); attr(div14, "class", "git-tools"); - attr(div15, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); + attr(div15, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); attr(div16, "class", "changes tree-item nav-folder"); toggle_class(div16, "is-collapsed", !/*changesOpen*/ ctx[12]); - attr(div17, "class", "tree-item-children nav-folder-children"); - attr(div18, "class", "tree-item nav-folder mod-root"); + attr(div17, "class", "tree-item nav-folder mod-root"); }, m(target, anchor) { - insert(target, div18, anchor); - append2(div18, div17); + insert(target, div17, anchor); append2(div17, div7); append2(div7, div6); append2(div6, div0); @@ -40978,8 +41695,7 @@ function create_if_block8(ctx) { append2(div5, div4); append2(div4, t4); append2(div7, t5); - if (if_block0) - if_block0.m(div7, null); + if (if_block0) if_block0.m(div7, null); append2(div17, t6); append2(div17, div16); append2(div16, div15); @@ -40997,11 +41713,9 @@ function create_if_block8(ctx) { append2(div14, div13); append2(div13, t12); append2(div16, t13); - if (if_block1) - if_block1.m(div16, null); + if (if_block1) if_block1.m(div16, null); append2(div17, t14); - if (if_block2) - if_block2.m(div17, null); + if (if_block2) if_block2.m(div17, null); current = true; if (!mounted) { dispose = [ @@ -41041,8 +41755,7 @@ function create_if_block8(ctx) { } if ((!current || dirty[0] & /*status*/ 64) && t4_value !== (t4_value = /*status*/ - ctx2[6].staged.length + "")) - set_data(t4, t4_value); + ctx2[6].staged.length + "")) set_data(t4, t4_value); if ( /*stagedOpen*/ ctx2[13] @@ -41078,8 +41791,7 @@ function create_if_block8(ctx) { } if ((!current || dirty[0] & /*status*/ 64) && t12_value !== (t12_value = /*status*/ - ctx2[6].changed.length + "")) - set_data(t12, t12_value); + ctx2[6].changed.length + "")) set_data(t12, t12_value); if ( /*changesOpen*/ ctx2[12] @@ -41091,7 +41803,7 @@ function create_if_block8(ctx) { transition_in(if_block1, 1); } } else { - if_block1 = create_if_block_42(ctx2); + if_block1 = create_if_block_43(ctx2); if_block1.c(); transition_in(if_block1, 1); if_block1.m(div16, null); @@ -41133,8 +41845,7 @@ function create_if_block8(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block0); transition_in(if_block1); transition_in(if_block2); @@ -41148,16 +41859,13 @@ function create_if_block8(ctx) { }, d(detaching) { if (detaching) { - detach(div18); + detach(div17); } ctx[34](null); - if (if_block0) - if_block0.d(); + if (if_block0) if_block0.d(); ctx[36](null); - if (if_block1) - if_block1.d(); - if (if_block2) - if_block2.d(); + if (if_block1) if_block1.d(); + if (if_block2) if_block2.d(); mounted = false; run_all(dispose); } @@ -41175,8 +41883,7 @@ function create_if_block_6(ctx) { if ( /*showTree*/ ctx2[3] - ) - return 0; + ) return 0; return 1; } current_block_type_index = select_block_type(ctx, [-1, -1]); @@ -41215,15 +41922,12 @@ function create_if_block_6(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); if (local) { add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + if (!current) return; + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); }); } @@ -41232,8 +41936,7 @@ function create_if_block_6(ctx) { o(local) { transition_out(if_block); if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); div_transition.run(0); } current = false; @@ -41243,8 +41946,7 @@ function create_if_block_6(ctx) { detach(div); } if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); + if (detaching && div_transition) div_transition.end(); } }; } @@ -41306,8 +42008,7 @@ function create_else_block_2(ctx) { } }, i(local) { - if (current) - return; + if (current) return; for (let i = 0; i < each_value_2.length; i += 1) { transition_in(each_blocks[i]); } @@ -41360,22 +42061,18 @@ function create_if_block_7(ctx) { p(ctx2, dirty) { const treecomponent_changes = {}; if (dirty[0] & /*stagedHierarchy*/ - 1024) - treecomponent_changes.hierarchy = /*stagedHierarchy*/ - ctx2[10]; + 1024) treecomponent_changes.hierarchy = /*stagedHierarchy*/ + ctx2[10]; if (dirty[0] & /*plugin*/ - 1) - treecomponent_changes.plugin = /*plugin*/ - ctx2[0]; + 1) treecomponent_changes.plugin = /*plugin*/ + ctx2[0]; if (dirty[0] & /*view*/ - 2) - treecomponent_changes.view = /*view*/ - ctx2[1]; + 2) treecomponent_changes.view = /*view*/ + ctx2[1]; treecomponent.$set(treecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(treecomponent.$$.fragment, local); current = true; }, @@ -41418,22 +42115,18 @@ function create_each_block_2(ctx) { p(ctx2, dirty) { const stagedfilecomponent_changes = {}; if (dirty[0] & /*status*/ - 64) - stagedfilecomponent_changes.change = /*stagedFile*/ - ctx2[45]; + 64) stagedfilecomponent_changes.change = /*stagedFile*/ + ctx2[45]; if (dirty[0] & /*view*/ - 2) - stagedfilecomponent_changes.view = /*view*/ - ctx2[1]; + 2) stagedfilecomponent_changes.view = /*view*/ + ctx2[1]; if (dirty[0] & /*plugin*/ - 1) - stagedfilecomponent_changes.manager = /*plugin*/ - ctx2[0].gitManager; + 1) stagedfilecomponent_changes.manager = /*plugin*/ + ctx2[0].gitManager; stagedfilecomponent.$set(stagedfilecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(stagedfilecomponent.$$.fragment, local); current = true; }, @@ -41446,7 +42139,7 @@ function create_each_block_2(ctx) { } }; } -function create_if_block_42(ctx) { +function create_if_block_43(ctx) { let div; let current_block_type_index; let if_block; @@ -41458,8 +42151,7 @@ function create_if_block_42(ctx) { if ( /*showTree*/ ctx2[3] - ) - return 0; + ) return 0; return 1; } current_block_type_index = select_block_type_1(ctx, [-1, -1]); @@ -41498,15 +42190,12 @@ function create_if_block_42(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); if (local) { add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + if (!current) return; + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); }); } @@ -41515,8 +42204,7 @@ function create_if_block_42(ctx) { o(local) { transition_out(if_block); if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); div_transition.run(0); } current = false; @@ -41526,8 +42214,7 @@ function create_if_block_42(ctx) { detach(div); } if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); + if (detaching && div_transition) div_transition.end(); } }; } @@ -41589,8 +42276,7 @@ function create_else_block_12(ctx) { } }, i(local) { - if (current) - return; + if (current) return; for (let i = 0; i < each_value_1.length; i += 1) { transition_in(each_blocks[i]); } @@ -41643,22 +42329,18 @@ function create_if_block_52(ctx) { p(ctx2, dirty) { const treecomponent_changes = {}; if (dirty[0] & /*changeHierarchy*/ - 512) - treecomponent_changes.hierarchy = /*changeHierarchy*/ - ctx2[9]; + 512) treecomponent_changes.hierarchy = /*changeHierarchy*/ + ctx2[9]; if (dirty[0] & /*plugin*/ - 1) - treecomponent_changes.plugin = /*plugin*/ - ctx2[0]; + 1) treecomponent_changes.plugin = /*plugin*/ + ctx2[0]; if (dirty[0] & /*view*/ - 2) - treecomponent_changes.view = /*view*/ - ctx2[1]; + 2) treecomponent_changes.view = /*view*/ + ctx2[1]; treecomponent.$set(treecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(treecomponent.$$.fragment, local); current = true; }, @@ -41702,22 +42384,18 @@ function create_each_block_1(ctx) { p(ctx2, dirty) { const filecomponent_changes = {}; if (dirty[0] & /*status*/ - 64) - filecomponent_changes.change = /*change*/ - ctx2[40]; + 64) filecomponent_changes.change = /*change*/ + ctx2[40]; if (dirty[0] & /*view*/ - 2) - filecomponent_changes.view = /*view*/ - ctx2[1]; + 2) filecomponent_changes.view = /*view*/ + ctx2[1]; if (dirty[0] & /*plugin*/ - 1) - filecomponent_changes.manager = /*plugin*/ - ctx2[0].gitManager; + 1) filecomponent_changes.manager = /*plugin*/ + ctx2[0].gitManager; filecomponent.$set(filecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(filecomponent.$$.fragment, local); current = true; }, @@ -41764,12 +42442,11 @@ function create_if_block_14(ctx) { span = element("span"); t3 = text(t3_value); t4 = space(); - if (if_block) - if_block.c(); + if (if_block) if_block.c(); attr(div0, "class", "tree-item-icon nav-folder-collapse-indicator collapse-icon"); attr(div1, "class", "tree-item-inner nav-folder-title-content"); attr(span, "class", "tree-item-flair"); - attr(div2, "class", "tree-item-self is-clickable nav-folder-title svelte-1bvmxec"); + attr(div2, "class", "tree-item-self is-clickable nav-folder-title svelte-11adhly"); attr(div3, "class", "pulled nav-folder"); toggle_class(div3, "is-collapsed", !/*lastPulledFilesOpen*/ ctx[14]); @@ -41784,8 +42461,7 @@ function create_if_block_14(ctx) { append2(div2, span); append2(span, t3); append2(div3, t4); - if (if_block) - if_block.m(div3, null); + if (if_block) if_block.m(div3, null); current = true; if (!mounted) { dispose = listen( @@ -41800,8 +42476,7 @@ function create_if_block_14(ctx) { p(ctx2, dirty) { if ((!current || dirty[0] & /*lastPulledFiles*/ 128) && t3_value !== (t3_value = /*lastPulledFiles*/ - ctx2[7].length + "")) - set_data(t3, t3_value); + ctx2[7].length + "")) set_data(t3, t3_value); if ( /*lastPulledFilesOpen*/ ctx2[14] @@ -41832,8 +42507,7 @@ function create_if_block_14(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); current = true; }, @@ -41845,8 +42519,7 @@ function create_if_block_14(ctx) { if (detaching) { detach(div3); } - if (if_block) - if_block.d(); + if (if_block) if_block.d(); mounted = false; dispose(); } @@ -41858,14 +42531,13 @@ function create_if_block_23(ctx) { let if_block; let div_transition; let current; - const if_block_creators = [create_if_block_32, create_else_block4]; + const if_block_creators = [create_if_block_33, create_else_block4]; const if_blocks = []; function select_block_type_2(ctx2, dirty) { if ( /*showTree*/ ctx2[3] - ) - return 0; + ) return 0; return 1; } current_block_type_index = select_block_type_2(ctx, [-1, -1]); @@ -41904,15 +42576,12 @@ function create_if_block_23(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block); if (local) { add_render_callback(() => { - if (!current) - return; - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); + if (!current) return; + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, true); div_transition.run(1); }); } @@ -41921,8 +42590,7 @@ function create_if_block_23(ctx) { o(local) { transition_out(if_block); if (local) { - if (!div_transition) - div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); + if (!div_transition) div_transition = create_bidirectional_transition(div, slide, { duration: 150 }, false); div_transition.run(0); } current = false; @@ -41932,8 +42600,7 @@ function create_if_block_23(ctx) { detach(div); } if_blocks[current_block_type_index].d(); - if (detaching && div_transition) - div_transition.end(); + if (detaching && div_transition) div_transition.end(); } }; } @@ -41995,8 +42662,7 @@ function create_else_block4(ctx) { } }, i(local) { - if (current) - return; + if (current) return; for (let i = 0; i < each_value.length; i += 1) { transition_in(each_blocks[i]); } @@ -42017,7 +42683,7 @@ function create_else_block4(ctx) { } }; } -function create_if_block_32(ctx) { +function create_if_block_33(ctx) { let treecomponent; let current; treecomponent = new treeComponent_default({ @@ -42049,22 +42715,18 @@ function create_if_block_32(ctx) { p(ctx2, dirty) { const treecomponent_changes = {}; if (dirty[0] & /*lastPulledFilesHierarchy*/ - 2048) - treecomponent_changes.hierarchy = /*lastPulledFilesHierarchy*/ - ctx2[11]; + 2048) treecomponent_changes.hierarchy = /*lastPulledFilesHierarchy*/ + ctx2[11]; if (dirty[0] & /*plugin*/ - 1) - treecomponent_changes.plugin = /*plugin*/ - ctx2[0]; + 1) treecomponent_changes.plugin = /*plugin*/ + ctx2[0]; if (dirty[0] & /*view*/ - 2) - treecomponent_changes.view = /*view*/ - ctx2[1]; + 2) treecomponent_changes.view = /*view*/ + ctx2[1]; treecomponent.$set(treecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(treecomponent.$$.fragment, local); current = true; }, @@ -42104,18 +42766,15 @@ function create_each_block5(ctx) { p(ctx2, dirty) { const pulledfilecomponent_changes = {}; if (dirty[0] & /*lastPulledFiles*/ - 128) - pulledfilecomponent_changes.change = /*change*/ - ctx2[40]; + 128) pulledfilecomponent_changes.change = /*change*/ + ctx2[40]; if (dirty[0] & /*view*/ - 2) - pulledfilecomponent_changes.view = /*view*/ - ctx2[1]; + 2) pulledfilecomponent_changes.view = /*view*/ + ctx2[1]; pulledfilecomponent.$set(pulledfilecomponent_changes); }, i(local) { - if (current) - return; + if (current) return; transition_in(pulledfilecomponent.$$.fragment, local); current = true; }, @@ -42191,12 +42850,10 @@ function create_fragment9(ctx) { div10 = element("div"); textarea = element("textarea"); t8 = space(); - if (if_block0) - if_block0.c(); + if (if_block0) if_block0.c(); t9 = space(); div11 = element("div"); - if (if_block1) - if_block1.c(); + if (if_block1) if_block1.c(); attr(div0, "id", "backup-btn"); attr(div0, "data-icon", "arrow-up-circle"); attr(div0, "class", "clickable-icon nav-action-button"); @@ -42243,14 +42900,14 @@ function create_fragment9(ctx) { /*rows*/ ctx[15] ); - attr(textarea, "class", "commit-msg-input svelte-1bvmxec"); + attr(textarea, "class", "commit-msg-input svelte-11adhly"); attr(textarea, "spellcheck", "true"); attr(textarea, "placeholder", "Commit Message"); - attr(div10, "class", "git-commit-msg svelte-1bvmxec"); + attr(div10, "class", "git-commit-msg svelte-11adhly"); attr(div11, "class", "nav-files-container"); set_style(div11, "position", "relative"); attr(main, "data-type", main_data_type_value = SOURCE_CONTROL_VIEW_CONFIG.type); - attr(main, "class", "svelte-1bvmxec"); + attr(main, "class", "svelte-11adhly"); }, m(target, anchor) { insert(target, main, anchor); @@ -42288,12 +42945,10 @@ function create_fragment9(ctx) { ctx[2] ); append2(div10, t8); - if (if_block0) - if_block0.m(div10, null); + if (if_block0) if_block0.m(div10, null); append2(main, t9); append2(main, div11); - if (if_block1) - if_block1.m(div11, null); + if (if_block1) if_block1.m(div11, null); current = true; if (!mounted) { dispose = [ @@ -42419,8 +43074,7 @@ function create_fragment9(ctx) { } }, i(local) { - if (current) - return; + if (current) return; transition_in(if_block1); current = true; }, @@ -42440,10 +43094,8 @@ function create_fragment9(ctx) { ctx[28](null); ctx[29](null); ctx[31](null); - if (if_block0) - if_block0.d(); - if (if_block1) - if_block1.d(); + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); mounted = false; run_all(dispose); } @@ -42473,8 +43125,8 @@ function instance9($$self, $$props, $$invalidate) { plugin.app.workspace.onLayoutReady(() => { window.setTimeout( () => { - buttons.forEach((btn) => (0, import_obsidian28.setIcon)(btn, btn.getAttr("data-icon"))); - (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder"); + buttons.forEach((btn) => (0, import_obsidian29.setIcon)(btn, btn.getAttr("data-icon"))); + (0, import_obsidian29.setIcon)(layoutBtn, showTree ? "list" : "folder"); }, 0 ); @@ -42490,7 +43142,7 @@ function instance9($$self, $$props, $$invalidate) { plugin.setState(0 /* idle */); return false; } - plugin.promiseQueue.addTask(() => plugin.gitManager.commit(commitMessage).then(() => { + plugin.promiseQueue.addTask(() => plugin.gitManager.commit({ message: commitMessage }).then(() => { if (commitMessage !== plugin.settings.commitMessage) { $$invalidate(2, commitMessage = ""); } @@ -42520,7 +43172,7 @@ function instance9($$self, $$props, $$invalidate) { const unPushedCommits = yield plugin.gitManager.getUnpushedCommits(); buttons.forEach((btn) => { var _a2, _b; - if (import_obsidian28.Platform.isMobile) { + if (import_obsidian29.Platform.isMobile) { btn.removeClass("button-border"); if (btn.id == "push" && unPushedCommits > 0) { btn.addClass("button-border"); @@ -42591,7 +43243,7 @@ function instance9($$self, $$props, $$invalidate) { plugin.promiseQueue.addTask(() => plugin.pullChangesFromRemote().finally(triggerRefresh2)); } function discard() { - new DiscardModal(view.app, false, plugin.gitManager.getVaultPath("/")).myOpen().then((shouldDiscard) => { + new DiscardModal(view.app, false, plugin.gitManager.getRelativeVaultPath("/")).myOpen().then((shouldDiscard) => { if (shouldDiscard === true) { plugin.promiseQueue.addTask(() => plugin.gitManager.discardAll({ status: plugin.cachedStatus }).finally(() => { dispatchEvent(new CustomEvent("git-refresh")); @@ -42673,10 +43325,8 @@ function instance9($$self, $$props, $$invalidate) { const click_handler_3 = () => $$invalidate(12, changesOpen = !changesOpen); const click_handler_4 = () => $$invalidate(14, lastPulledFilesOpen = !lastPulledFilesOpen); $$self.$$set = ($$props2) => { - if ("plugin" in $$props2) - $$invalidate(0, plugin = $$props2.plugin); - if ("view" in $$props2) - $$invalidate(1, view = $$props2.view); + if ("plugin" in $$props2) $$invalidate(0, plugin = $$props2.plugin); + if ("view" in $$props2) $$invalidate(1, view = $$props2.view); }; $$self.$$.update = () => { if ($$self.$$.dirty[0] & /*layoutBtn, showTree*/ @@ -42684,14 +43334,13 @@ function instance9($$self, $$props, $$invalidate) { $: { if (layoutBtn) { layoutBtn.empty(); - (0, import_obsidian28.setIcon)(layoutBtn, showTree ? "list" : "folder"); + (0, import_obsidian29.setIcon)(layoutBtn, showTree ? "list" : "folder"); } } } if ($$self.$$.dirty[0] & /*commitMessage*/ 4) { - $: - $$invalidate(15, rows = (commitMessage.match(/\n/g) || []).length + 1 || 1); + $: $$invalidate(15, rows = (commitMessage.match(/\n/g) || []).length + 1 || 1); } }; return [ @@ -42739,13 +43388,13 @@ function instance9($$self, $$props, $$invalidate) { var SourceControl = class extends SvelteComponent { constructor(options) { super(); - init2(this, options, instance9, create_fragment9, safe_not_equal, { plugin: 0, view: 1 }, add_css8, [-1, -1]); + init2(this, options, instance9, create_fragment9, safe_not_equal, { plugin: 0, view: 1 }, add_css7, [-1, -1]); } }; var sourceControl_default = SourceControl; // src/ui/sourceControl/sourceControl.ts -var GitView = class extends import_obsidian29.ItemView { +var GitView = class extends import_obsidian30.ItemView { constructor(leaf, plugin) { super(leaf); this.plugin = plugin; @@ -42801,7 +43450,7 @@ var BranchStatusBar = class { }; // src/main.ts -var ObsidianGit = class extends import_obsidian30.Plugin { +var ObsidianGit = class extends import_obsidian31.Plugin { constructor() { super(...arguments); this.gitReady = false; @@ -42839,7 +43488,9 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.lineAuthoringFeature.refreshLineAuthorViews(); } async onload() { - console.log("loading " + this.manifest.name + " plugin"); + console.log( + "loading " + this.manifest.name + " plugin: v" + this.manifest.version + ); pluginRef.plugin = this; this.localStorage = new LocalStorageSettings(this); this.localStorage.migrate(); @@ -42863,6 +43514,27 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.registerView(DIFF_VIEW_CONFIG.type, (leaf) => { return new DiffView(leaf, this); }); + this.addRibbonIcon( + "git-pull-request", + "Open Git source control", + async () => { + var _a2; + const leafs = this.app.workspace.getLeavesOfType( + SOURCE_CONTROL_VIEW_CONFIG.type + ); + let leaf; + if (leafs.length === 0) { + leaf = (_a2 = this.app.workspace.getRightLeaf(false)) != null ? _a2 : this.app.workspace.getLeaf(); + await leaf.setViewState({ + type: SOURCE_CONTROL_VIEW_CONFIG.type + }); + } else { + leaf = leafs.first(); + } + this.app.workspace.revealLeaf(leaf); + dispatchEvent(new CustomEvent("git-refresh")); + } + ); this.lineAuthoringFeature.onLoadPlugin(); this.app.workspace.registerHoverLinkSource( SOURCE_CONTROL_VIEW_CONFIG.type, @@ -42876,7 +43548,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "edit-gitignore", name: "Edit .gitignore", callback: async () => { - const path2 = this.gitManager.getVaultPath(".gitignore"); + const path2 = this.gitManager.getRelativeVaultPath(".gitignore"); if (!await this.app.vault.adapter.exists(path2)) { this.app.vault.adapter.write(path2, ""); } @@ -42893,12 +43565,13 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "open-git-view", name: "Open source control view", callback: async () => { + var _a2; const leafs = this.app.workspace.getLeavesOfType( SOURCE_CONTROL_VIEW_CONFIG.type ); let leaf; if (leafs.length === 0) { - leaf = this.app.workspace.getRightLeaf(false); + leaf = (_a2 = this.app.workspace.getRightLeaf(false)) != null ? _a2 : this.app.workspace.getLeaf(); await leaf.setViewState({ type: SOURCE_CONTROL_VIEW_CONFIG.type }); @@ -42913,12 +43586,13 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "open-history-view", name: "Open history view", callback: async () => { + var _a2; const leafs = this.app.workspace.getLeavesOfType( HISTORY_VIEW_CONFIG.type ); let leaf; if (leafs.length === 0) { - leaf = this.app.workspace.getRightLeaf(false); + leaf = (_a2 = this.app.workspace.getRightLeaf(false)) != null ? _a2 : this.app.workspace.getLeaf(); await leaf.setViewState({ type: HISTORY_VIEW_CONFIG.type }); @@ -42943,7 +43617,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { active: true, state: { staged: false, - file: this.gitManager.asRepositoryRelativePath( + file: this.gitManager.getRelativeRepoPath( file.path, true ) @@ -42964,8 +43638,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "view-history-on-github", name: "Open file history on GitHub", editorCallback: (_, { file }) => { - if (file) - return openHistoryInGitHub(file, this.gitManager); + if (file) return openHistoryInGitHub(file, this.gitManager); } }); this.addCommand({ @@ -42987,19 +43660,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "add-to-gitignore", name: "Add file to gitignore", checkCallback: (checking) => { - const file = app.workspace.getActiveFile(); + const file = this.app.workspace.getActiveFile(); if (checking) { return file !== null; } else { - app.vault.adapter.append( - this.gitManager.getVaultPath(".gitignore"), - "\n" + this.gitManager.asRepositoryRelativePath( - file.path, - true - ) - ).then(() => { - this.refresh(); - }); + this.addFileToGitignore(file); } } }); @@ -43049,6 +43714,20 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }) ) }); + if (import_obsidian31.Platform.isDesktopApp) { + this.addCommand({ + id: "commit-amend-staged-specified-message", + name: "Commit Amend", + callback: () => this.promiseQueue.addTask( + () => this.commit({ + fromAutoBackup: false, + requestCustomMessage: true, + onlyStaged: true, + amend: true + }) + ) + }); + } this.addCommand({ id: "commit-staged-specified-message", name: "Commit staged with specific message", @@ -43099,6 +43778,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { name: "Remove remote", callback: async () => this.removeRemote() }); + this.addCommand({ + id: "set-upstream-branch", + name: "Set upstream branch", + callback: async () => this.setUpstreamBranch() + }); this.addCommand({ id: "delete-repo", name: "CAUTION: Delete repository", @@ -43118,14 +43802,14 @@ var ObsidianGit = class extends import_obsidian30.Plugin { `${this.settings.basePath}/.git`, true ); - new import_obsidian30.Notice( + new import_obsidian31.Notice( "Successfully deleted repository. Reloading plugin..." ); this.unloadPlugin(); this.init(); } } else { - new import_obsidian30.Notice("No repository found"); + new import_obsidian31.Notice("No repository found"); } } }); @@ -43143,15 +43827,15 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "list-changed-files", name: "List changed files", callback: async () => { - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const status2 = await this.gitManager.status(); + console.log(status2); this.setState(0 /* idle */); if (status2.changed.length + status2.staged.length > 500) { this.displayError("Too many changes to display"); return; } - new ChangedFilesModal(this, status2.changed).open(); + new ChangedFilesModal(this, status2.all).open(); } }); this.addCommand({ @@ -43179,8 +43863,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { id: "discard-all", name: "CAUTION: Discard all changes", callback: async () => { - if (!await this.isAllInitialized()) - return false; + if (!await this.isAllInitialized()) return false; const modal = new GeneralModal({ options: ["NO", "YES"], placeholder: "Do you want to discard all changes to tracked files? This action cannot be undone.", @@ -43217,7 +43900,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }, 1e3) ); } - if (import_obsidian30.Platform.isDesktop && this.settings.showBranchStatusBar) { + if (import_obsidian31.Platform.isDesktop && this.settings.showBranchStatusBar) { const branchStatusBarEl = this.addStatusBarItem(); this.branchBar = new BranchStatusBar(branchStatusBarEl, this); this.registerInterval( @@ -43232,7 +43915,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { setRefreshDebouncer() { var _a2; (_a2 = this.debRefresh) == null ? void 0 : _a2.cancel(); - this.debRefresh = (0, import_obsidian30.debounce)( + this.debRefresh = (0, import_obsidian31.debounce)( () => { if (this.settings.refreshSourceControl) { this.refresh(); @@ -43244,66 +43927,80 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async showNotices() { const length = 1e4; - if (this.manifest.id === "obsidian-git" && import_obsidian30.Platform.isDesktopApp && !this.settings.showedMobileNotice) { - new import_obsidian30.Notice( - "Obsidian Git is now available on mobile! Please read the plugin's README for more information.", + if (this.manifest.id === "obsidian-git" && import_obsidian31.Platform.isDesktopApp && !this.settings.showedMobileNotice) { + new import_obsidian31.Notice( + "Git is now available on mobile! Please read the plugin's README for more information.", length ); this.settings.showedMobileNotice = true; await this.saveSettings(); } if (this.manifest.id === "obsidian-git-isomorphic") { - new import_obsidian30.Notice( - "Obsidian Git Mobile is now deprecated. Please uninstall it and install Obsidian Git instead.", + new import_obsidian31.Notice( + "Git Mobile is now deprecated. Please uninstall it and install Git instead.", length ); } } + async addFileToGitignore(file) { + await this.app.vault.adapter.append( + this.gitManager.getRelativeVaultPath(".gitignore"), + "\n" + this.gitManager.getRelativeRepoPath(file.path, true) + ); + this.refresh(); + } handleFileMenu(menu, file, source) { - if (!this.settings.showFileMenu) - return; - if (source !== "file-explorer-context-menu") { - return; - } - if (!file) { - return; - } - if (!this.gitReady) - return; - menu.addItem((item) => { - item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => { - this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian30.TFile) { - await this.gitManager.stage(file.path, true); - } else { - await this.gitManager.stageAll({ - dir: this.gitManager.asRepositoryRelativePath( - file.path, - true - ) - }); - } - this.displayMessage(`Staged ${file.path}`); + if (!this.gitReady) return; + if (!this.settings.showFileMenu) return; + if (!file) return; + if (this.settings.showFileMenu && source == "file-explorer-context-menu") { + menu.addItem((item) => { + item.setTitle(`Git: Stage`).setIcon("plus-circle").setSection("action").onClick((_) => { + this.promiseQueue.addTask(async () => { + if (file instanceof import_obsidian31.TFile) { + await this.gitManager.stage(file.path, true); + } else { + await this.gitManager.stageAll({ + dir: this.gitManager.getRelativeRepoPath( + file.path, + true + ) + }); + } + this.displayMessage(`Staged ${file.path}`); + }); }); }); - }); - menu.addItem((item) => { - item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => { - this.promiseQueue.addTask(async () => { - if (file instanceof import_obsidian30.TFile) { - await this.gitManager.unstage(file.path, true); - } else { - await this.gitManager.unstageAll({ - dir: this.gitManager.asRepositoryRelativePath( - file.path, - true - ) - }); - } - this.displayMessage(`Unstaged ${file.path}`); + menu.addItem((item) => { + item.setTitle(`Git: Unstage`).setIcon("minus-circle").setSection("action").onClick((_) => { + this.promiseQueue.addTask(async () => { + if (file instanceof import_obsidian31.TFile) { + await this.gitManager.unstage(file.path, true); + } else { + await this.gitManager.unstageAll({ + dir: this.gitManager.getRelativeRepoPath( + file.path, + true + ) + }); + } + this.displayMessage(`Unstaged ${file.path}`); + }); }); }); - }); + menu.addItem((item) => { + item.setTitle(`Git: Add to .gitignore`).setIcon("file-x").setSection("action").onClick((_) => { + this.addFileToGitignore(file); + }); + }); + } + if (source == "git-source-control") { + menu.addItem((item) => { + item.setTitle(`Git: Add to .gitignore`).setIcon("file-x").setSection("action").onClick((_) => { + this.addFileToGitignore(file); + }); + }); + } } async migrateSettings() { if (this.settings.mergeOnPull != void 0) { @@ -43382,7 +44079,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }; } get useSimpleGit() { - return import_obsidian30.Platform.isDesktopApp; + return import_obsidian31.Platform.isDesktopApp; } async init() { var _a2; @@ -43400,7 +44097,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.displayError("Cannot run git command"); break; case "missing-repo": - new import_obsidian30.Notice( + new import_obsidian31.Notice( "Can't find a valid git repository. Please create one via the given command or clone an existing repo.", 1e4 ); @@ -43450,7 +44147,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async createNewRepo() { await this.gitManager.init(); - new import_obsidian30.Notice("Initialized new repo"); + new import_obsidian31.Notice("Initialized new repo"); await this.init(); } async cloneNewRepo() { @@ -43467,7 +44164,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { if (dir === confirmOption) { dir = "."; } - dir = (0, import_obsidian30.normalizePath)(dir); + dir = (0, import_obsidian31.normalizePath)(dir); if (dir === "/") { dir = "."; } @@ -43479,7 +44176,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { }); const containsConflictDir = await modal2.open(); if (containsConflictDir === void 0) { - new import_obsidian30.Notice("Aborted clone"); + new import_obsidian31.Notice("Aborted clone"); return; } else if (containsConflictDir === "YES") { const confirmOption2 = "DELETE ALL YOUR LOCAL CONFIG AND PLUGINS"; @@ -43495,7 +44192,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { true ); } else { - new import_obsidian30.Notice("Aborted clone"); + new import_obsidian31.Notice("Aborted clone"); return; } } @@ -43508,11 +44205,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { if (depth !== "") { depthInt = parseInt(depth); if (isNaN(depthInt)) { - new import_obsidian30.Notice("Invalid depth. Aborting clone."); + new import_obsidian31.Notice("Invalid depth. Aborting clone."); return; } } - new import_obsidian30.Notice(`Cloning new repo into "${dir}"`); + new import_obsidian31.Notice(`Cloning new repo into "${dir}"`); const oldBase = this.settings.basePath; const customDir = dir && dir !== "."; if (customDir) { @@ -43525,8 +44222,8 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.saveSettings(); throw error; } - new import_obsidian30.Notice("Cloned new repo."); - new import_obsidian30.Notice("Please restart Obsidian"); + new import_obsidian31.Notice("Cloned new repo."); + new import_obsidian31.Notice("Please restart Obsidian"); if (customDir) { this.saveSettings(); } @@ -43545,10 +44242,12 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } ///Used for command async pullChangesFromRemote() { - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const filesUpdated = await this.pull(); this.setUpAutoBackup(); + if (filesUpdated === false) { + return; + } if (!filesUpdated) { this.displayMessage("Everything is up-to-date"); } @@ -43565,8 +44264,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.setState(0 /* idle */); } async createBackup(fromAutoBackup, requestCustomMessage = false, commitMessage) { - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; if (this.settings.syncMethod == "reset" && this.settings.pullBeforePush) { await this.pull(); } @@ -43574,10 +44272,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { fromAutoBackup, requestCustomMessage, commitMessage - })) + })) { return; + } if (!this.settings.disablePush) { - if (await this.gitManager.canPush()) { + if (await this.remotesAreSet() && await this.gitManager.canPush()) { if (this.settings.syncMethod != "reset" && this.settings.pullBeforePush) { await this.pull(); } @@ -43593,11 +44292,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { fromAutoBackup, requestCustomMessage = false, onlyStaged = false, - commitMessage + commitMessage, + amend = false }) { - if (!await this.isAllInitialized()) - return false; - let hadConflict = this.localStorage.getConflict() === "true"; + if (!await this.isAllInitialized()) return false; + let hadConflict = this.localStorage.getConflict(); let changedFiles; let status2; let unstagedFiles; @@ -43605,7 +44304,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.mayDeleteConflictFile(); status2 = await this.updateCachedStatus(); if (status2.conflicted.length == 0) { - this.localStorage.setConflict("false"); + this.localStorage.setConflict(false); hadConflict = false; } if (fromAutoBackup && status2.conflicted.length > 0) { @@ -43632,7 +44331,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } else { unstagedFiles = await this.gitManager.getUnstagedFiles(); changedFiles = unstagedFiles.map(({ filepath }) => ({ - vault_path: this.gitManager.getVaultPath(filepath) + vault_path: this.gitManager.getRelativeVaultPath(filepath) })); } } @@ -43644,7 +44343,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { let cmtMessage = commitMessage != null ? commitMessage : commitMessage = fromAutoBackup ? this.settings.autoCommitMessage : this.settings.commitMessage; if (fromAutoBackup && this.settings.customMessageOnAutoBackup || requestCustomMessage) { if (!this.settings.disablePopups && fromAutoBackup) { - new import_obsidian30.Notice( + new import_obsidian31.Notice( "Auto backup: Please enter a custom commit message. Leave empty to abort" ); } @@ -43661,17 +44360,21 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } let committedFiles; if (onlyStaged) { - committedFiles = await this.gitManager.commit(cmtMessage); + committedFiles = await this.gitManager.commit({ + message: cmtMessage, + amend + }); } else { committedFiles = await this.gitManager.commitAll({ message: cmtMessage, status: status2, - unstagedFiles + unstagedFiles, + amend }); } if (this.gitManager instanceof SimpleGit) { if ((await this.updateCachedStatus()).conflicted.length == 0) { - this.localStorage.setConflict("false"); + this.localStorage.setConflict(false); } } let roughly = false; @@ -43700,7 +44403,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { const file = this.app.vault.getAbstractFileByPath( f.vault_path ); - if (file instanceof import_obsidian30.TFile) { + if (file instanceof import_obsidian31.TFile) { return file.stat.size >= 1e8; } return false; @@ -43718,12 +44421,11 @@ var ObsidianGit = class extends import_obsidian30.Plugin { return false; } async push() { - if (!await this.isAllInitialized()) - return false; + if (!await this.isAllInitialized()) return false; if (!await this.remotesAreSet()) { return false; } - const hadConflict = this.localStorage.getConflict() === "true"; + const hadConflict = this.localStorage.getConflict(); if (this.gitManager instanceof SimpleGit) await this.mayDeleteConflictFile(); let status2; @@ -43738,9 +44440,9 @@ var ObsidianGit = class extends import_obsidian30.Plugin { this.setState(6 /* conflicted */); return false; } - { - console.log("Pushing...."); - const pushedFiles = await this.gitManager.push(); + console.log("Pushing...."); + const pushedFiles = await this.gitManager.push(); + if (pushedFiles !== void 0) { console.log("Pushed!", pushedFiles); if (pushedFiles > 0) { this.displayMessage( @@ -43749,14 +44451,16 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } else { this.displayMessage(`No changes to push`); } - this.offlineMode = false; - this.setState(0 /* idle */); - dispatchEvent(new CustomEvent("git-refresh")); - return true; } + this.offlineMode = false; + this.setState(0 /* idle */); + dispatchEvent(new CustomEvent("git-refresh")); + return true; } - /// Used for internals - /// Returns whether the pull added a commit or not. + /** Used for internals + Returns whether the pull added a commit or not. + + See {@link pullChangesFromRemote} for the command version. */ async pull() { if (!await this.remotesAreSet()) { return false; @@ -43769,7 +44473,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { ); this.lastPulledFiles = pulledFiles; } - return pulledFiles.length != 0; + return pulledFiles.length; } async fetch() { if (!await this.remotesAreSet()) { @@ -43786,7 +44490,8 @@ var ObsidianGit = class extends import_obsidian30.Plugin { ); if (file) { this.app.workspace.iterateAllLeaves((leaf) => { - if (leaf.view instanceof import_obsidian30.MarkdownView && leaf.view.file.path == file.path) { + var _a2; + if (leaf.view instanceof import_obsidian31.MarkdownView && ((_a2 = leaf.view.file) == null ? void 0 : _a2.path) == file.path) { leaf.detach(); } }); @@ -43794,8 +44499,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } } async stageFile(file) { - if (!await this.isAllInitialized()) - return false; + if (!await this.isAllInitialized()) return false; await this.gitManager.stage(file.path, true); this.displayMessage(`Staged ${file.path}`); dispatchEvent(new CustomEvent("git-refresh")); @@ -43803,8 +44507,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { return true; } async unstageFile(file) { - if (!await this.isAllInitialized()) - return false; + if (!await this.isAllInitialized()) return false; await this.gitManager.unstage(file.path, true); this.displayMessage(`Unstaged ${file.path}`); dispatchEvent(new CustomEvent("git-refresh")); @@ -43813,8 +44516,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async switchBranch() { var _a2; - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const branchInfo = await this.gitManager.branchInfo(); const selectedBranch = await new BranchModal( branchInfo.branches @@ -43828,8 +44530,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async switchRemoteBranch() { var _a2; - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const selectedBranch = await this.selectRemoteBranch() || ""; const [remote, branch2] = splitRemoteBranch(selectedBranch); if (branch2 != void 0 && remote != void 0) { @@ -43841,8 +44542,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async createBranch() { var _a2; - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const newBranch = await new GeneralModal({ placeholder: "Create new branch" }).open(); @@ -43855,11 +44555,9 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async deleteBranch() { var _a2; - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const branchInfo = await this.gitManager.branchInfo(); - if (branchInfo.current) - branchInfo.branches.remove(branchInfo.current); + if (branchInfo.current) branchInfo.branches.remove(branchInfo.current); const branch2 = await new GeneralModal({ options: branchInfo.branches, placeholder: "Delete branch", @@ -43885,21 +44583,35 @@ var ObsidianGit = class extends import_obsidian30.Plugin { return branch2; } } + // Ensures that the upstream branch is set. + // If not, it will prompt the user to set it. + // + // An exception is when the user has submodules enabled. + // In this case, the upstream branch is not required, + // to allow pulling/pushing only the submodules and not the outer repo. async remotesAreSet() { + if (this.settings.updateSubmodules) { + return true; + } if (!(await this.gitManager.branchInfo()).tracking) { - new import_obsidian30.Notice("No upstream branch is set. Please select one."); - const remoteBranch = await this.selectRemoteBranch(); - if (remoteBranch == void 0) { - this.displayError("Aborted. No upstream-branch is set!", 1e4); - this.setState(0 /* idle */); - return false; - } else { - await this.gitManager.updateUpstreamBranch(remoteBranch); - return true; - } + new import_obsidian31.Notice("No upstream branch is set. Please select one."); + return await this.setUpstreamBranch(); } return true; } + async setUpstreamBranch() { + const remoteBranch = await this.selectRemoteBranch(); + if (remoteBranch == void 0) { + this.displayError("Aborted. No upstream-branch is set!", 1e4); + this.setState(0 /* idle */); + return false; + } else { + await this.gitManager.updateUpstreamBranch(remoteBranch); + this.displayMessage(`Set upstream branch to ${remoteBranch}`); + this.setState(0 /* idle */); + return true; + } + } async setUpAutoBackup() { if (this.settings.setLastSaveToLastCommit) { this.clearAutoBackup(); @@ -43909,39 +44621,39 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } } if (!this.timeoutIDBackup && !this.onFileModifyEventRef) { - const lastAutos = await this.loadLastAuto(); + const lastAutos = this.loadLastAuto(); if (this.settings.autoSaveInterval > 0) { const now2 = /* @__PURE__ */ new Date(); - const diff2 = this.settings.autoSaveInterval - Math.round( + const diff3 = this.settings.autoSaveInterval - Math.round( (now2.getTime() - lastAutos.backup.getTime()) / 1e3 / 60 ); - this.startAutoBackup(diff2 <= 0 ? 0 : diff2); + this.startAutoBackup(diff3 <= 0 ? 0 : diff3); } } } async setUpAutos() { this.setUpAutoBackup(); - const lastAutos = await this.loadLastAuto(); + const lastAutos = this.loadLastAuto(); if (this.settings.differentIntervalCommitAndPush && this.settings.autoPushInterval > 0) { const now2 = /* @__PURE__ */ new Date(); - const diff2 = this.settings.autoPushInterval - Math.round( + const diff3 = this.settings.autoPushInterval - Math.round( (now2.getTime() - lastAutos.push.getTime()) / 1e3 / 60 ); - this.startAutoPush(diff2 <= 0 ? 0 : diff2); + this.startAutoPush(diff3 <= 0 ? 0 : diff3); } if (this.settings.autoPullInterval > 0) { const now2 = /* @__PURE__ */ new Date(); - const diff2 = this.settings.autoPullInterval - Math.round( + const diff3 = this.settings.autoPullInterval - Math.round( (now2.getTime() - lastAutos.pull.getTime()) / 1e3 / 60 ); - this.startAutoPull(diff2 <= 0 ? 0 : diff2); + this.startAutoPull(diff3 <= 0 ? 0 : diff3); } } async discardAll() { await this.gitManager.discardAll({ status: this.cachedStatus }); - new import_obsidian30.Notice( + new import_obsidian31.Notice( "All local changes have been discarded. New files remain untouched." ); } @@ -43960,15 +44672,14 @@ var ObsidianGit = class extends import_obsidian30.Plugin { "modify", () => this.autoBackupDebouncer() ); - this.autoBackupDebouncer = (0, import_obsidian30.debounce)( + this.autoBackupDebouncer = (0, import_obsidian31.debounce)( () => this.doAutoBackup(), time, true ); } } else { - if (time > 2147483647) - time = 2147483647; + if (time > 2147483647) time = 2147483647; this.timeoutIDBackup = window.setTimeout( () => this.doAutoBackup(), time @@ -43990,8 +44701,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } startAutoPull(minutes) { let time = (minutes != null ? minutes : this.settings.autoPullInterval) * 6e4; - if (time > 2147483647) - time = 2147483647; + if (time > 2147483647) time = 2147483647; this.timeoutIDPull = window.setTimeout(() => { this.promiseQueue.addTask(() => this.pullChangesFromRemote()); this.saveLastAuto(/* @__PURE__ */ new Date(), "pull"); @@ -44001,8 +44711,7 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } startAutoPush(minutes) { let time = (minutes != null ? minutes : this.settings.autoPushInterval) * 6e4; - if (time > 2147483647) - time = 2147483647; + if (time > 2147483647) time = 2147483647; this.timeoutIDPush = window.setTimeout(() => { this.promiseQueue.addTask(() => this.push()); this.saveLastAuto(/* @__PURE__ */ new Date(), "push"); @@ -44044,18 +44753,18 @@ var ObsidianGit = class extends import_obsidian30.Plugin { } async handleConflict(conflicted) { this.setState(6 /* conflicted */); - this.localStorage.setConflict("true"); + this.localStorage.setConflict(true); let lines; if (conflicted !== void 0) { lines = [ "# Conflicts", - "Please resolve them and commit them using the commands `Obsidian Git: Commit all changes` followed by `Obsidian Git: Push`", + "Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push`", "(This file will automatically be deleted before commit)", "[[#Additional Instructions]] available below file list", "", ...conflicted.map((e) => { const file = this.app.vault.getAbstractFileByPath(e); - if (file instanceof import_obsidian30.TFile) { + if (file instanceof import_obsidian31.TFile) { const link = this.app.metadataCache.fileToLinktext( file, "/" @@ -44081,8 +44790,7 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For this.writeAndOpenFile(lines == null ? void 0 : lines.join("\n")); } async editRemotes() { - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const remotes = await this.gitManager.getRemotes(); const nameModal = new GeneralModal({ options: remotes, @@ -44116,9 +44824,7 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For if (remoteName) { this.displayMessage("Fetching remote branches"); await this.gitManager.fetch(remoteName); - const branches = await this.gitManager.getRemoteBranches( - remoteName - ); + const branches = await this.gitManager.getRemoteBranches(remoteName); const branchModal = new GeneralModal({ options: branches, placeholder: "Select or create a new remote branch by typing its name and selecting it" @@ -44127,8 +44833,7 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For } } async removeRemote() { - if (!await this.isAllInitialized()) - return; + if (!await this.isAllInitialized()) return; const remotes = await this.gitManager.getRemotes(); const nameModal = new GeneralModal({ options: remotes, @@ -44155,8 +44860,7 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For } handleViewActiveState(leaf) { var _a2, _b; - if (!(leaf == null ? void 0 : leaf.view.getState().file)) - return; + if (!(leaf == null ? void 0 : leaf.view.getState().file)) return; const sourceControlLeaf = this.app.workspace.getLeavesOfType(SOURCE_CONTROL_VIEW_CONFIG.type).first(); const historyLeaf = this.app.workspace.getLeavesOfType(HISTORY_VIEW_CONFIG.type).first(); (_a2 = sourceControlLeaf == null ? void 0 : sourceControlLeaf.view.containerEl.querySelector(`div.nav-file-title.is-active`)) == null ? void 0 : _a2.removeClass("is-active"); @@ -44188,21 +44892,26 @@ I strongly recommend to use "Source mode" for viewing the conflicted files. For var _a2; (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); if (!this.settings.disablePopups) { - new import_obsidian30.Notice(message, 5 * 1e3); + if (!this.settings.disablePopupsForNoChanges || !message.startsWith("No changes")) { + new import_obsidian31.Notice(message, 5 * 1e3); + } } - console.log(`git obsidian message: ${message}`); + this.log(message); } displayError(message, timeout = 10 * 1e3) { var _a2; if (message instanceof Errors.UserCanceledError) { - new import_obsidian30.Notice("Aborted"); + new import_obsidian31.Notice("Aborted"); return; } message = message.toString(); - new import_obsidian30.Notice(message, timeout); + new import_obsidian31.Notice(message, timeout); console.log(`git obsidian error: ${message}`); (_a2 = this.statusBar) == null ? void 0 : _a2.displayMessage(message.toLowerCase(), timeout); } + log(message) { + console.log(`${this.manifest.id}: ` + message); + } }; /*! Bundled license information: diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json index a771a54..fa9ea24 100644 --- a/.obsidian/plugins/obsidian-git/manifest.json +++ b/.obsidian/plugins/obsidian-git/manifest.json @@ -1,9 +1,10 @@ { + "author": "Vinzent", + "authorUrl": "https://github.com/Vinzent03", "id": "obsidian-git", - "name": "Obsidian Git", - "description": "Backup your vault with Git.", + "name": "Git", + "description": "Integrate Git version control with automatic backup and other advanced features.", "isDesktopOnly": false, "fundingUrl": "https://ko-fi.com/vinzent", - "js": "main.js", - "version": "2.22.0" + "version": "2.26.0" } diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css index c1d5065..d5ad0cc 100644 --- a/.obsidian/plugins/obsidian-git/styles.css +++ b/.obsidian/plugins/obsidian-git/styles.css @@ -8,20 +8,20 @@ } } -.workspace-leaf-content[data-type='git-view'] .button-border { +.workspace-leaf-content[data-type="git-view"] .button-border { border: 2px solid var(--interactive-accent); border-radius: var(--radius-s); } -.workspace-leaf-content[data-type='git-view'] .view-content { +.workspace-leaf-content[data-type="git-view"] .view-content { padding: 0; } -.workspace-leaf-content[data-type='git-history-view'] .view-content { +.workspace-leaf-content[data-type="git-history-view"] .view-content { padding: 0; } -.loading>svg { +.loading > svg { animation: 2s linear infinite loading; transform-origin: 50% 50%; display: inline-block; @@ -77,6 +77,22 @@ height: auto; } +.is-active .git-tools .buttons > * { + color: var(--nav-item-color-active); +} + +.git-author { + color: var(--text-accent); +} + +.git-date { + color: var(--text-accent); +} + +.git-ref { + color: var(--text-accent); +} + .workspace-leaf-content[data-type="diff-view"] .d2h-d-none { display: none; } @@ -228,12 +244,18 @@ } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { background-color: #ffb6ba; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del, -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + del { background-color: #8d232881; } @@ -249,13 +271,19 @@ } .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { background-color: #97f295; text-align: left; } .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins, -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-code-side-line + ins { background-color: #1d921996; text-align: left; } @@ -376,19 +404,31 @@ color: var(--text-normal); } -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { background-color: #fdf2d0; } -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-del.d2h-change { background-color: #55492480; } -.theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change { +.theme-light + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { background-color: #ded; } -.theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change { +.theme-dark + .workspace-leaf-content[data-type="diff-view"] + .d2h-file-diff + .d2h-ins.d2h-change { background-color: rgba(37, 78, 37, 0.418); } @@ -401,7 +441,9 @@ text-decoration: none; } -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a:visited { +.workspace-leaf-content[data-type="diff-view"] + .d2h-file-list-wrapper + a:visited { color: #3572b0; } @@ -427,13 +469,13 @@ padding: 0; } -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li { +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li { border-bottom: 1px solid var(--background-modifier-border); margin: 0; padding: 5px 10px; } -.workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li:last-child { +.workspace-leaf-content[data-type="diff-view"] .d2h-file-list > li:last-child { border-bottom: none; } @@ -501,12 +543,20 @@ background-color: var(--background-secondary); } -.cm-gutterElement.obs-git-blame-gutter > div, .line-author-settings-preview { +.cm-gutterElement.obs-git-blame-gutter > div, +.line-author-settings-preview { /* delegate text color to settings */ - color: var(--obs-git-gutter-text); + color: var(--obs-git-gutter-text); font-family: monospace; height: 100%; /* ensure, that age-based background color occupies entire parent */ text-align: right; padding: 0px 6px 0px 6px; white-space: pre; /* Keep spaces and do not collapse them. */ } + +@media (max-width: 800px) { + /* hide git blame gutter not to superpose text */ + .cm-gutterElement.obs-git-blame-gutter { + display: none; + } +} diff --git a/.obsidian/plugins/obsidian-linter/main.js b/.obsidian/plugins/obsidian-linter/main.js index 1a42d38..18eae19 100644 --- a/.obsidian/plugins/obsidian-linter/main.js +++ b/.obsidian/plugins/obsidian-linter/main.js @@ -3,1016 +3,149 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ -var Vp=Object.create;var zn=Object.defineProperty;var Xl=Object.getOwnPropertyDescriptor;var Up=Object.getOwnPropertyNames;var Gp=Object.getPrototypeOf,Qp=Object.prototype.hasOwnProperty;var ca=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ec=(e,t)=>{for(var i in t)zn(e,i,{get:t[i],enumerable:!0})},ic=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Up(t))!Qp.call(e,r)&&r!==i&&zn(e,r,{get:()=>t[r],enumerable:!(n=Xl(t,r))||n.enumerable});return e};var da=(e,t,i)=>(i=e!=null?Vp(Gp(e)):{},ic(t||!e||!e.__esModule?zn(i,"default",{value:e,enumerable:!0}):i,e)),Zp=e=>ic(zn({},"__esModule",{value:!0}),e),A=(e,t,i,n)=>{for(var r=n>1?void 0:n?Xl(t,i):t,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(t,i,r):s(r))||r);return n&&r&&zn(t,i,r),r};var tc=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)};var Ve=(e,t,i)=>(tc(e,t,"read from private field"),i?i.call(e):t.get(e)),Yt=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},nc=(e,t,i,n)=>(tc(e,t,"write to private field"),n?n.call(e,i):t.set(e,i),i);var wo=ca((Vc,ya)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof ya=="object"&&ya.exports?ya.exports=t():e.log=t()})(Vc,function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(h,v){var x=h[v];if(typeof x.bind=="function")return x.bind(h);try{return Function.prototype.bind.call(x,h)}catch{return function(){return Function.prototype.apply.apply(x,[h,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function s(h){return h==="debug"&&(h="log"),typeof console===t?!1:h==="trace"&&i?a:console[h]!==void 0?r(console,h):console.log!==void 0?r(console,"log"):e}function o(h,v){for(var x=0;x=0&&q<=w.levels.SILENT){if(S=q,D!==!1&&M(q),o.call(w,q,h),typeof console===t&&q{var C=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},ee=-1,te=1,W=0;C.Diff=function(e,t){return[e,t]};C.prototype.diff_main=function(e,t,i,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new C.Diff(W,e)]:[];typeof i>"u"&&(i=!0);var a=i,s=this.diff_commonPrefix(e,t),o=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var d=this.diff_compute_(e,t,a,r);return o&&d.unshift(new C.Diff(W,o)),l&&d.push(new C.Diff(W,l)),this.diff_cleanupMerge(d),d};C.prototype.diff_compute_=function(e,t,i,n){var r;if(!e)return[new C.Diff(te,t)];if(!t)return[new C.Diff(ee,e)];var a=e.length>t.length?e:t,s=e.length>t.length?t:e,o=a.indexOf(s);if(o!=-1)return r=[new C.Diff(te,a.substring(0,o)),new C.Diff(W,s),new C.Diff(te,a.substring(o+s.length))],e.length>t.length&&(r[0][0]=r[2][0]=ee),r;if(s.length==1)return[new C.Diff(ee,e),new C.Diff(te,t)];var l=this.diff_halfMatch_(e,t);if(l){var d=l[0],c=l[1],u=l[2],m=l[3],g=l[4],h=this.diff_main(d,u,i,n),v=this.diff_main(c,m,i,n);return h.concat([new C.Diff(W,g)],v)}return i&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,n):this.diff_bisect_(e,t,n)};C.prototype.diff_lineMode_=function(e,t,i){var n=this.diff_linesToChars_(e,t);e=n.chars1,t=n.chars2;var r=n.lineArray,a=this.diff_main(e,t,!1,i);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new C.Diff(W,""));for(var s=0,o=0,l=0,d="",c="";s=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(d,c,!1,i),m=u.length-1;m>=0;m--)a.splice(s,0,u[m]);s=s+u.length}l=0,o=0,d="",c="";break}s++}return a.pop(),a};C.prototype.diff_bisect_=function(e,t,i){for(var n=e.length,r=t.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),d=new Array(o),c=0;ci);w++){for(var S=-w+g;S<=w-h;S+=2){var E=s+S,M;S==-w||S!=w&&l[E-1]n)h+=2;else if(B>r)g+=2;else if(m){var L=s+u-S;if(L>=0&&L=_)return this.diff_bisectSplit_(e,t,M,B,i)}}}for(var q=-w+v;q<=w-x;q+=2){var L=s+q,_;q==-w||q!=w&&d[L-1]n)x+=2;else if(D>r)v+=2;else if(!m){var E=s+u-q;if(E>=0&&E=_)return this.diff_bisectSplit_(e,t,M,B,i)}}}}return[new C.Diff(ee,e),new C.Diff(te,t)]};C.prototype.diff_bisectSplit_=function(e,t,i,n,r){var a=e.substring(0,i),s=t.substring(0,n),o=e.substring(i),l=t.substring(n),d=this.diff_main(a,s,!1,r),c=this.diff_main(o,l,!1,r);return d.concat(c)};C.prototype.diff_linesToChars_=function(e,t){var i=[],n={};i[0]="";function r(l){for(var d="",c=0,u=-1,m=i.length;un?e=e.substring(i-n):it.length?e:t,n=e.length>t.length?t:e;if(i.length<4||n.length*2=h.length?[M,B,L,_,E]:null}var s=a(i,n,Math.ceil(i.length/4)),o=a(i,n,Math.ceil(i.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var d,c,u,m;e.length>t.length?(d=l[0],c=l[1],u=l[2],m=l[3]):(u=l[0],m=l[1],d=l[2],c=l[3]);var g=l[4];return[d,c,u,m,g]};C.prototype.diff_cleanupSemantic=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=0,o=0,l=0,d=0;a0?i[n-1]:-1,s=0,o=0,l=0,d=0,r=null,t=!0)),a++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a=g?(m>=c.length/2||m>=u.length/2)&&(e.splice(a,0,new C.Diff(W,u.substring(0,m))),e[a-1][1]=c.substring(0,c.length-m),e[a+1][1]=u.substring(m),a++):(g>=c.length/2||g>=u.length/2)&&(e.splice(a,0,new C.Diff(W,c.substring(0,g))),e[a-1][0]=te,e[a-1][1]=u.substring(0,u.length-g),e[a+1][0]=ee,e[a+1][1]=c.substring(g),a++),a++}a++}};C.prototype.diff_cleanupSemanticLossless=function(e){function t(g,h){if(!g||!h)return 6;var v=g.charAt(g.length-1),x=h.charAt(0),w=v.match(C.nonAlphaNumericRegex_),S=x.match(C.nonAlphaNumericRegex_),E=w&&v.match(C.whitespaceRegex_),M=S&&x.match(C.whitespaceRegex_),B=E&&v.match(C.linebreakRegex_),L=M&&x.match(C.linebreakRegex_),_=B&&g.match(C.blanklineEndRegex_),q=L&&h.match(C.blanklineStartRegex_);return _||q?5:B||L?4:w&&!E&&M?3:E||M?2:w||S?1:0}for(var i=1;i=u&&(u=m,l=n,d=r,c=a)}e[i-1][1]!=l&&(l?e[i-1][1]=l:(e.splice(i-1,1),i--),e[i][1]=d,c?e[i+1][1]=c:(e.splice(i+1,1),i--))}i++}};C.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;C.whitespaceRegex_=/\s/;C.linebreakRegex_=/[\r\n]/;C.blanklineEndRegex_=/\n\r?\n$/;C.blanklineStartRegex_=/^\r?\n\r?\n/;C.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,d=!1;a0?i[n-1]:-1,l=d=!1),t=!0)),a++;t&&this.diff_cleanupMerge(e)};C.prototype.diff_cleanupMerge=function(e){e.push(new C.Diff(W,""));for(var t=0,i=0,n=0,r="",a="",s;t1?(i!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(t-i-n>0&&e[t-i-n-1][0]==W?e[t-i-n-1][1]+=a.substring(0,s):(e.splice(0,0,new C.Diff(W,a.substring(0,s))),t++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[t][1]=a.substring(a.length-s)+e[t][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),t-=i+n,e.splice(t,i+n),r.length&&(e.splice(t,0,new C.Diff(ee,r)),t++),a.length&&(e.splice(t,0,new C.Diff(te,a)),t++),t++):t!==0&&e[t-1][0]==W?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,n=0,i=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(t=1;tt));s++)r=i,a=n;return e.length!=s&&e[s][0]===ee?a:a+(t-r)};C.prototype.diff_prettyHtml=function(e){for(var t=[],i=/&/g,n=//g,a=/\n/g,s=0;s");switch(o){case te:t[s]=''+d+"";break;case ee:t[s]=''+d+"";break;case W:t[s]=""+d+"";break}}return t.join("")};C.prototype.diff_text1=function(e){for(var t=[],i=0;ithis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(t),r=this;function a(M,B){var L=M/t.length,_=Math.abs(i-B);return r.Match_Distance?L+_/r.Match_Distance:_?1:L}var s=this.Match_Threshold,o=e.indexOf(t,i);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(t,i+t.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<=h;w--){var S=n[e.charAt(w-1)];if(g===0?x[w]=(x[w+1]<<1|1)&S:x[w]=(x[w+1]<<1|1)&S|((m[w+1]|m[w])<<1|1)|m[w+1],x[w]&l){var E=a(g,w-1);if(E<=s)if(s=E,o=w-1,o>i)h=Math.max(1,2*i-o);else break}}if(a(g+1,i)>s)break;m=x}return o};C.prototype.match_alphabet_=function(e){for(var t={},i=0;i"u")n=e,r=this.diff_main(n,t,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof i>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof i>"u")n=e,r=t;else if(typeof e=="string"&&typeof t=="string"&&i&&typeof i=="object")n=e,r=i;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new C.patch_obj,o=0,l=0,d=0,c=n,u=n,m=0;m=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,c),a.push(s),s=new C.patch_obj,o=0,c=u,l=d);break}g!==te&&(l+=h.length),g!==ee&&(d+=h.length)}return o&&(this.patch_addContext_(s,c),a.push(s)),a};C.prototype.patch_deepCopy=function(e){for(var t=[],i=0;ithis.Match_MaxBits?(l=this.match_main(t,o.substring(0,this.Match_MaxBits),s),l!=-1&&(d=this.match_main(t,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(d==-1||l>=d)&&(l=-1))):l=this.match_main(t,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var c;if(d==-1?c=t.substring(l,l+o.length):c=t.substring(l,d+this.Match_MaxBits),o==c)t=t.substring(0,l)+this.diff_text2(e[a].diffs)+t.substring(l+o.length);else{var u=this.diff_main(o,c,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var m=0,g,h=0;ha[0][1].length){var s=t-a[0][1].length;a[0][1]=i.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=W)a.push(new C.Diff(W,i)),r.length1+=t,r.length2+=t;else if(t>a[a.length-1][1].length){var s=t-a[a.length-1][1].length;a[a.length-1][1]+=i.substring(0,s),r.length1+=s,r.length2+=s}return i};C.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,i=0;i2*t?(o.length1+=c.length,r+=c.length,l=!1,o.diffs.push(new C.Diff(d,c)),n.diffs.shift()):(c=c.substring(0,t-o.length1-this.Patch_Margin),o.length1+=c.length,r+=c.length,d===W?(o.length2+=c.length,a+=c.length):l=!1,o.diffs.push(new C.Diff(d,c)),c==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(c.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===W?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new C.Diff(W,u))),l||e.splice(++i,0,o)}}};C.prototype.patch_toText=function(e){for(var t=[],i=0;i{sp.exports=ix;var Zb=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Jb=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Xb=["Su","Mo","Tu","We","Th","Fr","Sa"],Ms=["January","February","March","April","May","June","July","August","September","October","November","December"],ev=["ACDT","ACST","ACWT","ADT","ACT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMT","AMST","ANAT","ANAST","AQTT","ART","AST","AWDT","AWST","AZOT","AZOST","AZT","AZST","BNT","BDT","BOT","BRT","BRST","BST","BTT","B","CAST","CAT","CCT","CDT","CEDT","CEST","CET","CHADT","CHAST","CHOT","CHOST","CHsT","CHUT","CIT","CKT","CLST","CLT","COT","CST","CVT","CWST","CXT","C","DAVT","DDUT","DST","EASST","EAST","EAT","ECT","EDT","EEDT","EEST","EET","EGT","EGST","EST","E","EIT","FET","FJT","FJST","FKST","FKT","FNT","F","GALT","GAMT","GET","GFT","GILT","GMT","GST","GYT","G","HADT","HAST","HKT","HOVT","HOVST","HST","ICT","IDT","IOT","IRDT","IRKT","IRKST","IRST","IST","JST","KGT","KOST","KRAT","KRAST","KST","KUYT","LHDT","LHST","LINT","L","MAGT","MAGST","MART","MAWT","MDT","MeST","MHT","MIST","MMT","MSD","MSK","MST","MUT","MVT","MYT","NCT","NDT","NFT","N","NOVT","NOVST","NPT","NRT","NST","NT","NUT","NZDT","NZST","OMST","OMSST","ORAT","O","PDT","PET","PETT","PETST","PGT","PHT","PHOT","PKT","PMDT","PMST","PONT","PST","PWT","PYT","PYST","P","QYZT","RET","ROTT","R","SAKT","SAMT","SAST","SBT","SCT","SGT","SRT","SLT","SLST","SRET","SST","SYOT","TAHT","TFT","TJT","TKT","TLT","TMT","TOT","TRUT","TVT","T","ULAT","ULAST","UTC","UYST","UYT","UZT","U","VET","VLAT","VLAST","VOLT","VUT","V","WAKT","WAT","WAST","WDT","WEDT","WEST","WET","WFT","WGT","WGST","WIB","WIT","WITA","WST","WT","YAKT","YAKST","YAP","YEK","YEKS"],qs=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],iv=new RegExp(Zb.join("|"),"i"),tv=new RegExp(Jb.join("|"),"i"),nv=new RegExp("\\b("+Xb.join("|")+")\\b","i"),rv=new RegExp(Ms.join("|"),"i"),av=new RegExp(qs.join("|"),"i"),sv=new RegExp("\\b("+ev.join("|")+")\\b","i"),ov=/(\d+)(st|nd|rd|th)\b/i,lv=/(\d{1,4})([/.-])(\d{1,2})[/.-](\d{1,4})/,cv=/((\+|-)(12:00|11:00|10:00|09:30|09:00|08:00|07:00|06:00|05:00|04:00|03:30|03:00|02:00|01:00|00:00|01:00|02:00|03:00|03:30|04:00|04:30|05:00|05:30|05:45|06:00|06:30|07:00|08:00|08:45|09:00|09:30|10:00|10:30|11:00|12:00|12:45|13:00|14:00))$/,dv=/((\+|-)(1200|1100|1000|0930|0900|0800|0700|0600|0500|0400|0330|0300|0200|0100|0000|0100|0200|0300|0330|0400|0430|0500|0530|0545|0600|0630|0700|0800|0845|0900|0930|1000|1030|1100|1200|1245|1300|1400))$/,ln="("+["AM?","PM?"].join("|")+")",uv=new RegExp("0\\d\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+ln,"i"),pv=new RegExp("0\\d\\:\\d{1,2}(\\s*)"+ln,"i"),mv=new RegExp("0\\d(\\s*)"+ln,"i"),gv=new RegExp("\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+ln,"i"),hv=new RegExp("\\d{1,2}\\:\\d{1,2}(\\s*)"+ln,"i"),fv=new RegExp("\\d{1,2}(\\s*)"+ln,"i"),yv=new RegExp("\\d{1,2}"),bv=new RegExp(Ms.join("|")+"-\\d{2}","i"),vv=new RegExp(qs.join("|")+"-\\d{2}","i"),Bl=new RegExp("(\\d{1,2})(\\D+)("+Ms.join("|")+"|"+qs.join("|")+")(\\2)('?\\d{2,4})"),xv=/\d{2}:\d{2}:\d{2}\.\d{3}/,wv=/\d{2}:\d{2}:\d{2}\.\d{2}/,kv=/\d{2}:\d{2}:\d{2}\.\d{1}/,zv=/T\d{2}:\d{2}:\d{2}/,Sv=/0\d:\d{2}:\d{2}/,Av=/0\d:\d{2}/,Lv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}/,Tv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{3}/,Ev=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{2}/,Ov=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{1}/,Cv=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]/,Mv=/24:00:\d{2}/,qv=/24:00:\d{2}\.\d{3}/,Iv=/24:00:\d{2}\.\d{2}/,Bv=/24:00:\d{2}\.\d{1}/,Fv=/24:00/,_v=/\d{4}/,Rv=/\d{2}/,Dv=/'\d{2}/,ip=/0\d/,tp=/\d{1,2}/,Nv=/0\d/,jv=/\d{1,2}/,Kv=/^([1-9])\/([1-9]|0[1-9])$/,Yv=/^([1-9])\/(1[012])$/,Pv=/^(0[1-9]|[12][0-9]|3[01])\/([1-9])$/,Hv=/^(0[1-9]|[12][0-9]|3[01])\/(1[012]|0[1-9])$/,$v=/^([1-9])(\D)([1-9][0-9])$/,Wv=/^([1-9])(\D)([0][0-9])$/,Vv=/^(0[1-9]|1[012])(\D)([1-9][0-9])$/,Uv=/^(0[1-9]|1[012])(\D)([0][0-9])$/,Fl=/([/][M]|[M][/]|[MM]|[MMMM])/,np=/(D)/,_l=/(Y)/,rp=/\d+\D.+$/,ap=/\D+(\d+)($|Z)/,Gv=/M\s*\d{1,2}\b.+$/,Qv=/M\D+(0[1-9])\b.+$/,Cs=/\d+\s+(H|h|k)/,Zv=/\b(at)\b/i,Jv=/\d{13}/,Xv=/\d{10}/,ex={"/":"MDY",".":"DMY","-":"YMD"};function ix(e,t){var i=e.toString();if(t=t||{},t.preferredOrder=t.preferredOrder||ex,i=i.replace(Jv,"x"),i=i.replace(Xv,"X"),i=i.replace(Zv,"[$1]"),i.match(Bl)){let[,d,c,u,m,g]=i.match(Bl),h=[];d.length===2&&d[0]==="0"||t.preferLongFormat?h.push("DD"):h.push("D"),h.push(c),u.match(Ms)?h.push("MMMM"):u.match(qs)?h.push("MMM"):h.push(u),h.push(m),g[0]==="'"?h.push("'YY"):g.length===2?h.push("YY"):(g.length,h.push("YYYY"));var n=h.join("");i=i.replace(Bl,n)}i=i.replace(iv,"dddd"),i=i.replace(tv,"ddd"),i=i.replace(nv,"dd"),i=i.replace(ov,"Do"),i=i.replace(rv,"MMMM"),i=i.replace(av,"MMM"),i=i.replace(lv,tx.bind(null,t)),i=i.replace(sv,d=>"["+d+"]"),i=i.replace(cv,"Z"),i=i.replace(dv,"ZZ"),i=i.replace(xv,"HH:mm:ss.SSS"),i=i.replace(wv,"HH:mm:ss.SS"),i=i.replace(kv,"HH:mm:ss.S"),i=i.replace(zv,"THH:mm:ss");function r(d){return function(c,u,m){return d+u+(m[0].toUpperCase()===m[0]?"A":"a")}}if(i=i.replace(uv,r("hh:mm:ss")),i=i.replace(gv,r("h:mm:ss")),i=i.replace(pv,r("hh:mm")),i=i.replace(hv,r("h:mm")),i=i.replace(mv,r("hh")),i=i.replace(fv,r("h")),i=i.replace(Sv,"HH:mm:ss"),i=i.replace(Tv,"H:mm:ss.SSS"),i=i.replace(qv,(t.preferLongFormat?"kk":"k")+":mm:ss.SSS"),i=i.replace(Ev,"H:mm:ss.SS"),i=i.replace(Iv,(t.preferLongFormat?"kk":"k")+":mm:ss.SS"),i=i.replace(Ov,"H:mm:ss.S"),i=i.replace(Bv,(t.preferLongFormat?"kk":"k")+":mm:ss.S"),i=i.replace(Lv,"H:mm:ss"),i=i.replace(Mv,(t.preferLongFormat?"kk":"k")+":mm:ss"),i=i.replace(Av,"HH:mm"),i=i.replace(Cv,"H:mm"),i=i.replace(Fv,(t.preferLongFormat?"kk":"k")+":mm"),i=i.replace(_v,"YYYY"),i=i.replace(Dv,"'YY"),i=i.replace(bv,"MMMM-YY"),i=i.replace(vv,"MMM-YY"),i=i.replace(Kv,"D/M"),i=i.replace(Yv,"D/MM"),i=i.replace(Pv,"DD/M"),i=i.replace(Hv,"DD/MM"),i=i.replace($v,"M$2YY"),i=i.replace(Vv,"MM$2YY"),i=i.replace(Wv,"M$2DD"),i=i.replace(Uv,"MM$2DD"),i.match(Fl)){var a=/0\d\.\d{2}|\d{2}\.\d{2}/,s=/\d{1}\.\d{2}/;i=i.replace(a,"H.mm"),i=i.replace(s,"h.mm")}if(!i.match(Fl)&&i.match(_l)&&(i=i.replace(Nv,"MM")),!i.match(Fl)&&i.match(_l)&&(i=i.replace(jv,t.preferLongFormat?"MM":"M")),i.match(Qv)&&!i.match(Cs)&&(i=i.replace(ip,"DD")),i.match(Gv)&&!i.match(Cs)&&(i=i.replace(tp,t.preferLongFormat?"DD":"D")),!i.match(np)&&i.match(rp)&&!i.match(Cs)&&(i=i.replace(ip,"DD")),!i.match(np)&&i.match(rp)&&!i.match(Cs)&&(i=i.replace(tp,t.preferLongFormat?"DD":"D")),i.match(_l)||(i=i.replace(Rv,"YY")),i.match(ap)){var o=i.match(ap)[1],l;o==="00"?l="HH":o==="24"?l=t.preferLongFormat?"kk":"k":o>12?l=t.preferLongFormat?"HH":"H":o[0]==="0"?l=t.preferLongFormat?"hh":"h":l=t.preferLongFormat?"hh":"k",i=i.replace(yv,l)}return i.length<1&&(i=void 0),i}function tx(e,t,i,n,r,a){var s,o=0,l=1,d=2,c=[i.length===1,r.length===1,a.length===1],u=[i[0]==="0",r[0]==="0",a[0]==="0"],m=i.length===4,g=r.length===4,h=a.length===4,v=typeof e.preferredOrder=="string"?e.preferredOrder:e.preferredOrder[n];i=parseInt(i,10),r=parseInt(r,10),a=parseInt(a,10),s=[i,r,a],v=v.toUpperCase();var x=function(S,E){c[S]!==c[E]&&!u[S]&&!u[E]&&(c[S]=!0,c[E]=!0)};if(i>31)return x(l,d),s[0]=m?"YYYY":"YY",s[1]=c[l]?"M":"MM",s[2]=c[d]?"D":"DD",s.join(n);if(i>12)return x(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s[2]=h?"YYYY":"YY",s.join(n);if(r>12)return x(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s[2]=h?"YYYY":"YY",s.join(n);if(a>31)return s[2]=h?"YYYY":"YY",v[0]==="M"&&i<13?(x(o,l),s[0]=c[o]?"M":"MM",s[1]=c[l]?"D":"DD",s.join(n)):(x(o,l),s[0]=c[o]?"D":"DD",s[1]=c[l]?"M":"MM",s.join(n));let w=[m,g,h];return x(v.indexOf("D"),v.indexOf("M")),s[v.indexOf("D")]=c[v.indexOf("D")]?"D":"DD",s[v.indexOf("M")]=c[v.indexOf("M")]?"M":"MM",s[v.indexOf("Y")]=w[v.indexOf("Y")]?"YYYY":"YY",s.join(n)}});var dp=ca((Gq,cp)=>{var lp=op();cp.exports=lp;typeof window<"u"&&window.moment&&(window.moment.parseFormat=lp)});var lw={};ec(lw,{default:()=>Xs});module.exports=Zp(lw);var oe=require("obsidian");function vc(e){return typeof e>"u"||e===null}function Jp(e){return typeof e=="object"&&e!==null}function Xp(e){return Array.isArray(e)?e:vc(e)?[]:[e]}function em(e,t){var i,n,r,a;if(t)for(a=Object.keys(t),i=0,n=a.length;i()=>(t||e((t={exports:{}}).exports,t),t.exports),Pc=(e,t)=>{for(var i in t)$n(e,i,{get:t[i],enumerable:!0})},Hc=(e,t,i,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of jm(t))!Pm.call(e,r)&&r!==i&&$n(e,r,{get:()=>t[r],enumerable:!(n=Yc(t,r))||n.enumerable});return e};var gn=(e,t,i)=>(i=e!=null?Nm(Ym(e)):{},Hc(t||!e||!e.__esModule?$n(i,"default",{value:e,enumerable:!0}):i,e)),Hm=e=>Hc($n({},"__esModule",{value:!0}),e),z=(e,t,i,n)=>{for(var r=n>1?void 0:n?Yc(t,i):t,a=e.length-1,s;a>=0;a--)(s=e[a])&&(r=(n?s(t,i,r):s(r))||r);return n&&r&&$n(t,i,r),r};var Ko=(e,t,i)=>{if(!t.has(e))throw TypeError("Cannot "+i)};var _=(e,t,i)=>(Ko(e,t,"read from private field"),i?i.call(e):t.get(e)),ke=(e,t,i)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,i)},Me=(e,t,i,n)=>(Ko(e,t,"write to private field"),n?n.call(e,i):t.set(e,i),i);var _o=(e,t,i,n)=>({set _(r){Me(e,t,r,i)},get _(){return _(e,t,n)}}),me=(e,t,i)=>(Ko(e,t,"access private method"),i);var Za=mn((Bd,Qa)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define(t):typeof Qa=="object"&&Qa.exports?Qa.exports=t():e.log=t()})(Bd,function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"],r={},a=null;function s(g,b){var f=g[b];if(typeof f.bind=="function")return f.bind(g);try{return Function.prototype.bind.call(f,g)}catch{return function(){return Function.prototype.apply.apply(f,[g,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function l(g){return g==="debug"&&(g="log"),typeof console===t?!1:g==="trace"&&i?o:console[g]!==void 0?s(console,g):console.log!==void 0?s(console,"log"):e}function c(){for(var g=this.getLevel(),b=0;b=0&&U<=f.levels.SILENT)return U;throw new TypeError("log.setLevel() called with invalid level: "+D)}f.name=g,f.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},f.methodFactory=b||u,f.getLevel=function(){return L??k??x},f.setLevel=function(D,U){return L=K(D),U!==!1&&O(L),c.call(f)},f.setDefaultLevel=function(D){k=K(D),S()||f.setLevel(D,!1)},f.resetLevel=function(){L=null,I(),c.call(f)},f.enableAll=function(D){f.setLevel(f.levels.TRACE,D)},f.disableAll=function(D){f.setLevel(f.levels.SILENT,D)},f.rebuild=function(){if(a!==f&&(x=K(a.getLevel())),c.call(f),a===f)for(var D in r)r[D].rebuild()},x=K(a?a.getLevel():"WARN");var B=S();B!=null&&(L=K(B)),c.call(f)}a=new m,a.getLogger=function(b){if(typeof b!="symbol"&&typeof b!="string"||b==="")throw new TypeError("You must supply a name when creating a logger.");var f=r[b];return f||(f=r[b]=new m(b,a.methodFactory)),f};var p=typeof window!==t?window.log:void 0;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=p),a},a.getLoggers=function(){return r},a.default=a,a})});var cm=mn((H1,Dn)=>{var C=function(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32},ne=-1,se=1,G=0;C.Diff=function(e,t){return[e,t]};C.prototype.diff_main=function(e,t,i,n){typeof n>"u"&&(this.Diff_Timeout<=0?n=Number.MAX_VALUE:n=new Date().getTime()+this.Diff_Timeout*1e3);var r=n;if(e==null||t==null)throw new Error("Null input. (diff_main)");if(e==t)return e?[new C.Diff(G,e)]:[];typeof i>"u"&&(i=!0);var a=i,s=this.diff_commonPrefix(e,t),o=e.substring(0,s);e=e.substring(s),t=t.substring(s),s=this.diff_commonSuffix(e,t);var l=e.substring(e.length-s);e=e.substring(0,e.length-s),t=t.substring(0,t.length-s);var c=this.diff_compute_(e,t,a,r);return o&&c.unshift(new C.Diff(G,o)),l&&c.push(new C.Diff(G,l)),this.diff_cleanupMerge(c),c};C.prototype.diff_compute_=function(e,t,i,n){var r;if(!e)return[new C.Diff(se,t)];if(!t)return[new C.Diff(ne,e)];var a=e.length>t.length?e:t,s=e.length>t.length?t:e,o=a.indexOf(s);if(o!=-1)return r=[new C.Diff(se,a.substring(0,o)),new C.Diff(G,s),new C.Diff(se,a.substring(o+s.length))],e.length>t.length&&(r[0][0]=r[2][0]=ne),r;if(s.length==1)return[new C.Diff(ne,e),new C.Diff(se,t)];var l=this.diff_halfMatch_(e,t);if(l){var c=l[0],d=l[1],u=l[2],m=l[3],p=l[4],g=this.diff_main(c,u,i,n),b=this.diff_main(d,m,i,n);return g.concat([new C.Diff(G,p)],b)}return i&&e.length>100&&t.length>100?this.diff_lineMode_(e,t,n):this.diff_bisect_(e,t,n)};C.prototype.diff_lineMode_=function(e,t,i){var n=this.diff_linesToChars_(e,t);e=n.chars1,t=n.chars2;var r=n.lineArray,a=this.diff_main(e,t,!1,i);this.diff_charsToLines_(a,r),this.diff_cleanupSemantic(a),a.push(new C.Diff(G,""));for(var s=0,o=0,l=0,c="",d="";s=1&&l>=1){a.splice(s-o-l,o+l),s=s-o-l;for(var u=this.diff_main(c,d,!1,i),m=u.length-1;m>=0;m--)a.splice(s,0,u[m]);s=s+u.length}l=0,o=0,c="",d="";break}s++}return a.pop(),a};C.prototype.diff_bisect_=function(e,t,i){for(var n=e.length,r=t.length,a=Math.ceil((n+r)/2),s=a,o=2*a,l=new Array(o),c=new Array(o),d=0;di);x++){for(var k=-x+p;k<=x-g;k+=2){var L=s+k,E;k==-x||k!=x&&l[L-1]n)g+=2;else if(O>r)p+=2;else if(m){var S=s+u-k;if(S>=0&&S=I)return this.diff_bisectSplit_(e,t,E,O,i)}}}for(var K=-x+b;K<=x-f;K+=2){var S=s+K,I;K==-x||K!=x&&c[S-1]n)f+=2;else if(B>r)b+=2;else if(!m){var L=s+u-K;if(L>=0&&L=I)return this.diff_bisectSplit_(e,t,E,O,i)}}}}return[new C.Diff(ne,e),new C.Diff(se,t)]};C.prototype.diff_bisectSplit_=function(e,t,i,n,r){var a=e.substring(0,i),s=t.substring(0,n),o=e.substring(i),l=t.substring(n),c=this.diff_main(a,s,!1,r),d=this.diff_main(o,l,!1,r);return c.concat(d)};C.prototype.diff_linesToChars_=function(e,t){var i=[],n={};i[0]="";function r(l){for(var c="",d=0,u=-1,m=i.length;un?e=e.substring(i-n):it.length?e:t,n=e.length>t.length?t:e;if(i.length<4||n.length*2=g.length?[E,O,S,I,L]:null}var s=a(i,n,Math.ceil(i.length/4)),o=a(i,n,Math.ceil(i.length/2)),l;if(!s&&!o)return null;o?s?l=s[4].length>o[4].length?s:o:l=o:l=s;var c,d,u,m;e.length>t.length?(c=l[0],d=l[1],u=l[2],m=l[3]):(u=l[0],m=l[1],c=l[2],d=l[3]);var p=l[4];return[c,d,u,m,p]};C.prototype.diff_cleanupSemantic=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=0,o=0,l=0,c=0;a0?i[n-1]:-1,s=0,o=0,l=0,c=0,r=null,t=!0)),a++;for(t&&this.diff_cleanupMerge(e),this.diff_cleanupSemanticLossless(e),a=1;a=p?(m>=d.length/2||m>=u.length/2)&&(e.splice(a,0,new C.Diff(G,u.substring(0,m))),e[a-1][1]=d.substring(0,d.length-m),e[a+1][1]=u.substring(m),a++):(p>=d.length/2||p>=u.length/2)&&(e.splice(a,0,new C.Diff(G,d.substring(0,p))),e[a-1][0]=se,e[a-1][1]=u.substring(0,u.length-p),e[a+1][0]=ne,e[a+1][1]=d.substring(p),a++),a++}a++}};C.prototype.diff_cleanupSemanticLossless=function(e){function t(p,g){if(!p||!g)return 6;var b=p.charAt(p.length-1),f=g.charAt(0),x=b.match(C.nonAlphaNumericRegex_),k=f.match(C.nonAlphaNumericRegex_),L=x&&b.match(C.whitespaceRegex_),E=k&&f.match(C.whitespaceRegex_),O=L&&b.match(C.linebreakRegex_),S=E&&f.match(C.linebreakRegex_),I=O&&p.match(C.blanklineEndRegex_),K=S&&g.match(C.blanklineStartRegex_);return I||K?5:O||S?4:x&&!L&&E?3:L||E?2:x||k?1:0}for(var i=1;i=u&&(u=m,l=n,c=r,d=a)}e[i-1][1]!=l&&(l?e[i-1][1]=l:(e.splice(i-1,1),i--),e[i][1]=c,d?e[i+1][1]=d:(e.splice(i+1,1),i--))}i++}};C.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;C.whitespaceRegex_=/\s/;C.linebreakRegex_=/[\r\n]/;C.blanklineEndRegex_=/\n\r?\n$/;C.blanklineStartRegex_=/^\r?\n\r?\n/;C.prototype.diff_cleanupEfficiency=function(e){for(var t=!1,i=[],n=0,r=null,a=0,s=!1,o=!1,l=!1,c=!1;a0?i[n-1]:-1,l=c=!1),t=!0)),a++;t&&this.diff_cleanupMerge(e)};C.prototype.diff_cleanupMerge=function(e){e.push(new C.Diff(G,""));for(var t=0,i=0,n=0,r="",a="",s;t1?(i!==0&&n!==0&&(s=this.diff_commonPrefix(a,r),s!==0&&(t-i-n>0&&e[t-i-n-1][0]==G?e[t-i-n-1][1]+=a.substring(0,s):(e.splice(0,0,new C.Diff(G,a.substring(0,s))),t++),a=a.substring(s),r=r.substring(s)),s=this.diff_commonSuffix(a,r),s!==0&&(e[t][1]=a.substring(a.length-s)+e[t][1],a=a.substring(0,a.length-s),r=r.substring(0,r.length-s))),t-=i+n,e.splice(t,i+n),r.length&&(e.splice(t,0,new C.Diff(ne,r)),t++),a.length&&(e.splice(t,0,new C.Diff(se,a)),t++),t++):t!==0&&e[t-1][0]==G?(e[t-1][1]+=e[t][1],e.splice(t,1)):t++,n=0,i=0,r="",a="";break}e[e.length-1][1]===""&&e.pop();var o=!1;for(t=1;tt));s++)r=i,a=n;return e.length!=s&&e[s][0]===ne?a:a+(t-r)};C.prototype.diff_prettyHtml=function(e){for(var t=[],i=/&/g,n=//g,a=/\n/g,s=0;s");switch(o){case se:t[s]=''+c+"";break;case ne:t[s]=''+c+"";break;case G:t[s]=""+c+"";break}}return t.join("")};C.prototype.diff_text1=function(e){for(var t=[],i=0;ithis.Match_MaxBits)throw new Error("Pattern too long for this browser.");var n=this.match_alphabet_(t),r=this;function a(E,O){var S=E/t.length,I=Math.abs(i-O);return r.Match_Distance?S+I/r.Match_Distance:I?1:S}var s=this.Match_Threshold,o=e.indexOf(t,i);o!=-1&&(s=Math.min(a(0,o),s),o=e.lastIndexOf(t,i+t.length),o!=-1&&(s=Math.min(a(0,o),s)));var l=1<=g;x--){var k=n[e.charAt(x-1)];if(p===0?f[x]=(f[x+1]<<1|1)&k:f[x]=(f[x+1]<<1|1)&k|((m[x+1]|m[x])<<1|1)|m[x+1],f[x]&l){var L=a(p,x-1);if(L<=s)if(s=L,o=x-1,o>i)g=Math.max(1,2*i-o);else break}}if(a(p+1,i)>s)break;m=f}return o};C.prototype.match_alphabet_=function(e){for(var t={},i=0;i"u")n=e,r=this.diff_main(n,t,!0),r.length>2&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(e&&typeof e=="object"&&typeof t>"u"&&typeof i>"u")r=e,n=this.diff_text1(r);else if(typeof e=="string"&&t&&typeof t=="object"&&typeof i>"u")n=e,r=t;else if(typeof e=="string"&&typeof t=="string"&&i&&typeof i=="object")n=e,r=i;else throw new Error("Unknown call format to patch_make.");if(r.length===0)return[];for(var a=[],s=new C.patch_obj,o=0,l=0,c=0,d=n,u=n,m=0;m=2*this.Patch_Margin&&o&&(this.patch_addContext_(s,d),a.push(s),s=new C.patch_obj,o=0,d=u,l=c);break}p!==se&&(l+=g.length),p!==ne&&(c+=g.length)}return o&&(this.patch_addContext_(s,d),a.push(s)),a};C.prototype.patch_deepCopy=function(e){for(var t=[],i=0;ithis.Match_MaxBits?(l=this.match_main(t,o.substring(0,this.Match_MaxBits),s),l!=-1&&(c=this.match_main(t,o.substring(o.length-this.Match_MaxBits),s+o.length-this.Match_MaxBits),(c==-1||l>=c)&&(l=-1))):l=this.match_main(t,o,s),l==-1)r[a]=!1,n-=e[a].length2-e[a].length1;else{r[a]=!0,n=l-s;var d;if(c==-1?d=t.substring(l,l+o.length):d=t.substring(l,c+this.Match_MaxBits),o==d)t=t.substring(0,l)+this.diff_text2(e[a].diffs)+t.substring(l+o.length);else{var u=this.diff_main(o,d,!1);if(o.length>this.Match_MaxBits&&this.diff_levenshtein(u)/o.length>this.Patch_DeleteThreshold)r[a]=!1;else{this.diff_cleanupSemanticLossless(u);for(var m=0,p,g=0;ga[0][1].length){var s=t-a[0][1].length;a[0][1]=i.substring(a[0][1].length)+a[0][1],r.start1-=s,r.start2-=s,r.length1+=s,r.length2+=s}if(r=e[e.length-1],a=r.diffs,a.length==0||a[a.length-1][0]!=G)a.push(new C.Diff(G,i)),r.length1+=t,r.length2+=t;else if(t>a[a.length-1][1].length){var s=t-a[a.length-1][1].length;a[a.length-1][1]+=i.substring(0,s),r.length1+=s,r.length2+=s}return i};C.prototype.patch_splitMax=function(e){for(var t=this.Match_MaxBits,i=0;i2*t?(o.length1+=d.length,r+=d.length,l=!1,o.diffs.push(new C.Diff(c,d)),n.diffs.shift()):(d=d.substring(0,t-o.length1-this.Patch_Margin),o.length1+=d.length,r+=d.length,c===G?(o.length2+=d.length,a+=d.length):l=!1,o.diffs.push(new C.Diff(c,d)),d==n.diffs[0][1]?n.diffs.shift():n.diffs[0][1]=n.diffs[0][1].substring(d.length))}s=this.diff_text2(o.diffs),s=s.substring(s.length-this.Patch_Margin);var u=this.diff_text1(n.diffs).substring(0,this.Patch_Margin);u!==""&&(o.length1+=u.length,o.length2+=u.length,o.diffs.length!==0&&o.diffs[o.diffs.length-1][0]===G?o.diffs[o.diffs.length-1][1]+=u:o.diffs.push(new C.Diff(G,u))),l||e.splice(++i,0,o)}}};C.prototype.patch_toText=function(e){for(var t=[],i=0;i{fm.exports=_w;var Fx=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Rx=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Dx=["Su","Mo","Tu","We","Th","Fr","Sa"],xo=["January","February","March","April","May","June","July","August","September","October","November","December"],Kx=["ACDT","ACST","ACWT","ADT","ACT","AEDT","AEST","AFT","AKDT","AKST","ALMT","AMT","AMST","ANAT","ANAST","AQTT","ART","AST","AWDT","AWST","AZOT","AZOST","AZT","AZST","BNT","BDT","BOT","BRT","BRST","BST","BTT","B","CAST","CAT","CCT","CDT","CEDT","CEST","CET","CHADT","CHAST","CHOT","CHOST","CHsT","CHUT","CIT","CKT","CLST","CLT","COT","CST","CVT","CWST","CXT","C","DAVT","DDUT","DST","EASST","EAST","EAT","ECT","EDT","EEDT","EEST","EET","EGT","EGST","EST","E","EIT","FET","FJT","FJST","FKST","FKT","FNT","F","GALT","GAMT","GET","GFT","GILT","GMT","GST","GYT","G","HADT","HAST","HKT","HOVT","HOVST","HST","ICT","IDT","IOT","IRDT","IRKT","IRKST","IRST","IST","JST","KGT","KOST","KRAT","KRAST","KST","KUYT","LHDT","LHST","LINT","L","MAGT","MAGST","MART","MAWT","MDT","MeST","MHT","MIST","MMT","MSD","MSK","MST","MUT","MVT","MYT","NCT","NDT","NFT","N","NOVT","NOVST","NPT","NRT","NST","NT","NUT","NZDT","NZST","OMST","OMSST","ORAT","O","PDT","PET","PETT","PETST","PGT","PHT","PHOT","PKT","PMDT","PMST","PONT","PST","PWT","PYT","PYST","P","QYZT","RET","ROTT","R","SAKT","SAMT","SAST","SBT","SCT","SGT","SRT","SLT","SLST","SRET","SST","SYOT","TAHT","TFT","TJT","TKT","TLT","TMT","TOT","TRUT","TVT","T","ULAT","ULAST","UTC","UYST","UYT","UZT","U","VET","VLAT","VLAST","VOLT","VUT","V","WAKT","WAT","WAST","WDT","WEDT","WEST","WET","WFT","WGT","WGST","WIB","WIT","WITA","WST","WT","YAKT","YAKST","YAP","YEK","YEKS"],wo=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_x=new RegExp(Fx.join("|"),"i"),Nx=new RegExp(Rx.join("|"),"i"),jx=new RegExp("\\b("+Dx.join("|")+")\\b","i"),Yx=new RegExp(xo.join("|"),"i"),Px=new RegExp(wo.join("|"),"i"),Hx=new RegExp("\\b("+Kx.join("|")+")\\b","i"),Ux=/(\d+)(st|nd|rd|th)\b/i,Wx=/(\d{1,4})([/.-])(\d{1,2})[/.-](\d{1,4})/,Vx=/((\+|-)(12:00|11:00|10:00|09:30|09:00|08:00|07:00|06:00|05:00|04:00|03:30|03:00|02:00|01:00|00:00|01:00|02:00|03:00|03:30|04:00|04:30|05:00|05:30|05:45|06:00|06:30|07:00|08:00|08:45|09:00|09:30|10:00|10:30|11:00|12:00|12:45|13:00|14:00))$/,$x=/((\+|-)(1200|1100|1000|0930|0900|0800|0700|0600|0500|0400|0330|0300|0200|0100|0000|0100|0200|0300|0330|0400|0430|0500|0530|0545|0600|0630|0700|0800|0845|0900|0930|1000|1030|1100|1200|1245|1300|1400))$/,jn="("+["AM?","PM?"].join("|")+")",Gx=new RegExp("0\\d\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+jn,"i"),Qx=new RegExp("0\\d\\:\\d{1,2}(\\s*)"+jn,"i"),Zx=new RegExp("0\\d(\\s*)"+jn,"i"),Jx=new RegExp("\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}(\\s*)"+jn,"i"),Xx=new RegExp("\\d{1,2}\\:\\d{1,2}(\\s*)"+jn,"i"),ew=new RegExp("\\d{1,2}(\\s*)"+jn,"i"),iw=new RegExp("\\d{1,2}"),tw=new RegExp(xo.join("|")+"-\\d{2}","i"),nw=new RegExp(wo.join("|")+"-\\d{2}","i"),Dc=new RegExp("(\\d{1,2})(\\D+)("+xo.join("|")+"|"+wo.join("|")+")(\\2)('?\\d{2,4})"),rw=/\d{2}:\d{2}:\d{2}\.\d{3}/,aw=/\d{2}:\d{2}:\d{2}\.\d{2}/,sw=/\d{2}:\d{2}:\d{2}\.\d{1}/,ow=/T\d{2}:\d{2}:\d{2}/,lw=/0\d:\d{2}:\d{2}/,cw=/0\d:\d{2}/,dw=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}/,uw=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{3}/,pw=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{2}/,mw=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]:\d{2}\.\d{1}/,gw=/\b([01]?[0-9]|2[0-3]):[0-5][0-9]/,hw=/24:00:\d{2}/,fw=/24:00:\d{2}\.\d{3}/,yw=/24:00:\d{2}\.\d{2}/,bw=/24:00:\d{2}\.\d{1}/,vw=/24:00/,xw=/\d{4}/,ww=/\d{2}/,kw=/'\d{2}/,um=/0\d/,pm=/\d{1,2}/,zw=/0\d/,Aw=/\d{1,2}/,Sw=/^([1-9])\/([1-9]|0[1-9])$/,Lw=/^([1-9])\/(1[012])$/,Tw=/^(0[1-9]|[12][0-9]|3[01])\/([1-9])$/,Ew=/^(0[1-9]|[12][0-9]|3[01])\/(1[012]|0[1-9])$/,Cw=/^([1-9])(\D)([1-9][0-9])$/,Ow=/^([1-9])(\D)([0][0-9])$/,Mw=/^(0[1-9]|1[012])(\D)([1-9][0-9])$/,qw=/^(0[1-9]|1[012])(\D)([0][0-9])$/,Kc=/([/][M]|[M][/]|[MM]|[MMMM])/,mm=/(D)/,_c=/(Y)/,gm=/\d+\D.+$/,hm=/\D+(\d+)($|Z)/,Iw=/M\s*\d{1,2}\b.+$/,Bw=/M\D+(0[1-9])\b.+$/,vo=/\d+\s+(H|h|k)/,Fw=/\b(at)\b/i,Rw=/\d{13}/,Dw=/\d{10}/,Kw={"/":"MDY",".":"DMY","-":"YMD"};function _w(e,t){var i=e.toString();if(t=t||{},t.preferredOrder=t.preferredOrder||Kw,i=i.replace(Rw,"x"),i=i.replace(Dw,"X"),i=i.replace(Fw,"[$1]"),i.match(Dc)){let[,c,d,u,m,p]=i.match(Dc),g=[];c.length===2&&c[0]==="0"||t.preferLongFormat?g.push("DD"):g.push("D"),g.push(d),u.match(xo)?g.push("MMMM"):u.match(wo)?g.push("MMM"):g.push(u),g.push(m),p[0]==="'"?g.push("'YY"):p.length===2?g.push("YY"):(p.length,g.push("YYYY"));var n=g.join("");i=i.replace(Dc,n)}i=i.replace(_x,"dddd"),i=i.replace(Nx,"ddd"),i=i.replace(jx,"dd"),i=i.replace(Ux,"Do"),i=i.replace(Yx,"MMMM"),i=i.replace(Px,"MMM"),i=i.replace(Wx,Nw.bind(null,t)),i=i.replace(Hx,c=>"["+c+"]"),i=i.replace(Vx,"Z"),i=i.replace($x,"ZZ"),i=i.replace(rw,"HH:mm:ss.SSS"),i=i.replace(aw,"HH:mm:ss.SS"),i=i.replace(sw,"HH:mm:ss.S"),i=i.replace(ow,"THH:mm:ss");function r(c){return function(d,u,m){return c+u+(m[0].toUpperCase()===m[0]?"A":"a")}}if(i=i.replace(Gx,r("hh:mm:ss")),i=i.replace(Jx,r("h:mm:ss")),i=i.replace(Qx,r("hh:mm")),i=i.replace(Xx,r("h:mm")),i=i.replace(Zx,r("hh")),i=i.replace(ew,r("h")),i=i.replace(lw,"HH:mm:ss"),i=i.replace(uw,"H:mm:ss.SSS"),i=i.replace(fw,(t.preferLongFormat?"kk":"k")+":mm:ss.SSS"),i=i.replace(pw,"H:mm:ss.SS"),i=i.replace(yw,(t.preferLongFormat?"kk":"k")+":mm:ss.SS"),i=i.replace(mw,"H:mm:ss.S"),i=i.replace(bw,(t.preferLongFormat?"kk":"k")+":mm:ss.S"),i=i.replace(dw,"H:mm:ss"),i=i.replace(hw,(t.preferLongFormat?"kk":"k")+":mm:ss"),i=i.replace(cw,"HH:mm"),i=i.replace(gw,"H:mm"),i=i.replace(vw,(t.preferLongFormat?"kk":"k")+":mm"),i=i.replace(xw,"YYYY"),i=i.replace(kw,"'YY"),i=i.replace(tw,"MMMM-YY"),i=i.replace(nw,"MMM-YY"),i=i.replace(Sw,"D/M"),i=i.replace(Lw,"D/MM"),i=i.replace(Tw,"DD/M"),i=i.replace(Ew,"DD/MM"),i=i.replace(Cw,"M$2YY"),i=i.replace(Mw,"MM$2YY"),i=i.replace(Ow,"M$2DD"),i=i.replace(qw,"MM$2DD"),i.match(Kc)){var a=/0\d\.\d{2}|\d{2}\.\d{2}/,s=/\d{1}\.\d{2}/;i=i.replace(a,"H.mm"),i=i.replace(s,"h.mm")}if(!i.match(Kc)&&i.match(_c)&&(i=i.replace(zw,"MM")),!i.match(Kc)&&i.match(_c)&&(i=i.replace(Aw,t.preferLongFormat?"MM":"M")),i.match(Bw)&&!i.match(vo)&&(i=i.replace(um,"DD")),i.match(Iw)&&!i.match(vo)&&(i=i.replace(pm,t.preferLongFormat?"DD":"D")),!i.match(mm)&&i.match(gm)&&!i.match(vo)&&(i=i.replace(um,"DD")),!i.match(mm)&&i.match(gm)&&!i.match(vo)&&(i=i.replace(pm,t.preferLongFormat?"DD":"D")),i.match(_c)||(i=i.replace(ww,"YY")),i.match(hm)){var o=i.match(hm)[1],l;o==="00"?l="HH":o==="24"?l=t.preferLongFormat?"kk":"k":o>12?l=t.preferLongFormat?"HH":"H":o[0]==="0"?l=t.preferLongFormat?"hh":"h":l=t.preferLongFormat?"hh":"k",i=i.replace(iw,l)}return i.length<1&&(i=void 0),i}function Nw(e,t,i,n,r,a){var s,o=0,l=1,c=2,d=[i.length===1,r.length===1,a.length===1],u=[i[0]==="0",r[0]==="0",a[0]==="0"],m=i.length===4,p=r.length===4,g=a.length===4,b=typeof e.preferredOrder=="string"?e.preferredOrder:e.preferredOrder[n];i=parseInt(i,10),r=parseInt(r,10),a=parseInt(a,10),s=[i,r,a],b=b.toUpperCase();var f=function(k,L){d[k]!==d[L]&&!u[k]&&!u[L]&&(d[k]=!0,d[L]=!0)};if(i>31)return f(l,c),s[0]=m?"YYYY":"YY",s[1]=d[l]?"M":"MM",s[2]=d[c]?"D":"DD",s.join(n);if(i>12)return f(o,l),s[0]=d[o]?"D":"DD",s[1]=d[l]?"M":"MM",s[2]=g?"YYYY":"YY",s.join(n);if(r>12)return f(o,l),s[0]=d[o]?"M":"MM",s[1]=d[l]?"D":"DD",s[2]=g?"YYYY":"YY",s.join(n);if(a>31)return s[2]=g?"YYYY":"YY",b[0]==="M"&&i<13?(f(o,l),s[0]=d[o]?"M":"MM",s[1]=d[l]?"D":"DD",s.join(n)):(f(o,l),s[0]=d[o]?"D":"DD",s[1]=d[l]?"M":"MM",s.join(n));let x=[m,p,g];return f(b.indexOf("D"),b.indexOf("M")),s[b.indexOf("D")]=d[b.indexOf("D")]?"D":"DD",s[b.indexOf("M")]=d[b.indexOf("M")]?"M":"MM",s[b.indexOf("Y")]=x[b.indexOf("Y")]?"YYYY":"YY",s.join(n)}});var xm=mn((e_,vm)=>{var bm=ym();vm.exports=bm;typeof window<"u"&&window.moment&&(window.moment.parseFormat=bm)});var Fm=mn((dY,Bm)=>{"use strict";var si=function(e){if(e=e||{},this.Promise=e.Promise||Promise,this.queues=Object.create(null),this.domainReentrant=e.domainReentrant||!1,this.domainReentrant){if(typeof process>"u"||typeof process.domain>"u")throw new Error("Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill.");this.domains=Object.create(null)}this.timeout=e.timeout||si.DEFAULT_TIMEOUT,this.maxOccupationTime=e.maxOccupationTime||si.DEFAULT_MAX_OCCUPATION_TIME,this.maxExecutionTime=e.maxExecutionTime||si.DEFAULT_MAX_EXECUTION_TIME,e.maxPending===1/0||Number.isInteger(e.maxPending)&&e.maxPending>=0?this.maxPending=e.maxPending:this.maxPending=si.DEFAULT_MAX_PENDING};si.DEFAULT_TIMEOUT=0;si.DEFAULT_MAX_OCCUPATION_TIME=0;si.DEFAULT_MAX_EXECUTION_TIME=0;si.DEFAULT_MAX_PENDING=1e3;si.prototype.acquire=function(e,t,i,n){if(Array.isArray(e))return this._acquireBatch(e,t,i,n);if(typeof t!="function")throw new Error("You must pass a function to execute");var r=null,a=null,s=null;typeof i!="function"&&(n=i,i=null,s=new this.Promise(function(k,L){r=k,a=L})),n=n||{};var o=!1,l=null,c=null,d=null,u=this,m=function(k,L,E){c&&(clearTimeout(c),c=null),d&&(clearTimeout(d),d=null),k&&(u.queues[e]&&u.queues[e].length===0&&delete u.queues[e],u.domainReentrant&&delete u.domains[e]),o||(s?L?a(L):r(E):typeof i=="function"&&i(L,E),o=!0),k&&u.queues[e]&&u.queues[e].length>0&&u.queues[e].shift()()},p=function(k){if(o)return m(k);l&&(clearTimeout(l),l=null),u.domainReentrant&&k&&(u.domains[e]=process.domain);var L=n.maxExecutionTime||u.maxExecutionTime;if(L&&(d=setTimeout(function(){u.queues[e]&&m(k,new Error("Maximum execution time is exceeded "+e))},L)),t.length===1){var E=!1;try{t(function(O,S){E||(E=!0,m(k,O,S))})}catch(O){E||(E=!0,m(k,O))}}else u._promiseTry(function(){return t()}).then(function(O){m(k,void 0,O)},function(O){m(k,O)})};u.domainReentrant&&process.domain&&(p=process.domain.bind(p));var g=n.maxPending||u.maxPending;if(!u.queues[e])u.queues[e]=[],p(!0);else if(u.domainReentrant&&process.domain&&process.domain===u.domains[e])p(!1);else if(u.queues[e].length>=g)m(!1,new Error("Too many pending tasks in queue "+e));else{var b=function(){p(!0)};n.skipQueue?u.queues[e].unshift(b):u.queues[e].push(b);var f=n.timeout||u.timeout;f&&(l=setTimeout(function(){l=null,m(!1,new Error("async-lock timed out in queue "+e))},f))}var x=n.maxOccupationTime||u.maxOccupationTime;if(x&&(c=setTimeout(function(){u.queues[e]&&m(!1,new Error("Maximum occupation time is exceeded in queue "+e))},x)),s)return s};si.prototype._acquireBatch=function(e,t,i,n){typeof i!="function"&&(n=i,i=null);var r=this,a=function(o,l){return function(c){r.acquire(o,l,c,n)}},s=e.reduceRight(function(o,l){return a(l,o)},t);if(typeof i=="function")s(i);else return new this.Promise(function(o,l){s.length===1?s(function(c,d){c?l(c):o(d)}):o(s())})};si.prototype.isBusy=function(e){return e?!!this.queues[e]:Object.keys(this.queues).length>0};si.prototype._promiseTry=function(e){try{return this.Promise.resolve(e())}catch(t){return this.Promise.reject(t)}};Bm.exports=si});var Dm=mn((uY,Rm)=>{"use strict";Rm.exports=Fm()});var mk={};Pc(mk,{default:()=>Do});module.exports=Hm(mk);var X=require("obsidian");function sd(e){return typeof e>"u"||e===null}function Um(e){return typeof e=="object"&&e!==null}function Wm(e){return Array.isArray(e)?e:sd(e)?[]:[e]}function Vm(e,t){var i,n,r,a;if(t)for(a=Object.keys(t),i=0,n=a.length;io&&(a=" ... ",t=n-o+a.length),i-n>o&&(s=" ...",i=n+o-s.length),{str:a+e.slice(t,i).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function ao(e,t){return xe.repeat(" ",t-e.length)+e}function cm(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var i=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=i.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,d,c=Math.min(e.line+t.linesAfter,r.length).toString().length,u=t.maxLength-(t.indent+c+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)d=ro(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=xe.repeat(" ",t.indent)+ao((e.line-l+1).toString(),c)+" | "+d.str+` -`+o;for(d=ro(e.buffer,n[s],r[s],e.position,u),o+=xe.repeat(" ",t.indent)+ao((e.line+1).toString(),c)+" | "+d.str+` -`,o+=xe.repeat("-",t.indent+c+3+d.pos)+`^ -`,l=1;l<=t.linesAfter&&!(s+l>=r.length);l++)d=ro(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=xe.repeat(" ",t.indent)+ao((e.line+l+1).toString(),c)+" | "+d.str+` -`;return o.replace(/\n$/,"")}var dm=cm,um=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],pm=["scalar","sequence","mapping"];function mm(e){var t={};return e!==null&&Object.keys(e).forEach(function(i){e[i].forEach(function(n){t[String(n)]=i})}),t}function gm(e,t){if(t=t||{},Object.keys(t).forEach(function(i){if(um.indexOf(i)===-1)throw new De('Unknown option "'+i+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(i){return i},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=mm(t.styleAliases||null),pm.indexOf(this.kind)===-1)throw new De('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var qe=gm;function rc(e,t){var i=[];return e[t].forEach(function(n){var r=i.length;i.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),i[r]=n}),i}function hm(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,i;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,i=arguments.length;t=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),_m=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Rm(e){return!(e===null||!_m.test(e)||e[e.length-1]==="_")}function Dm(e){var t,i;return t=e.replace(/_/g,"").toLowerCase(),i=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:i*parseFloat(t,10)}var Nm=/^[-+]?[0-9]+e/;function jm(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xe.isNegativeZero(e))return"-0.0";return i=e.toString(10),Nm.test(i)?i.replace("e",".e"):i}function Km(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||xe.isNegativeZero(e))}var Ym=new qe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Rm,construct:Dm,predicate:Km,represent:jm,defaultStyle:"lowercase"}),Pm=xm.extend({implicit:[Sm,Em,Fm,Ym]}),Hm=Pm,wc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),kc=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function $m(e){return e===null?!1:wc.exec(e)!==null||kc.exec(e)!==null}function Wm(e){var t,i,n,r,a,s,o,l=0,d=null,c,u,m;if(t=wc.exec(e),t===null&&(t=kc.exec(e)),t===null)throw new Error("Date resolve error");if(i=+t[1],n=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(i,n,r));if(a=+t[4],s=+t[5],o=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(c=+t[10],u=+(t[11]||0),d=(c*60+u)*6e4,t[9]==="-"&&(d=-d)),m=new Date(Date.UTC(i,n,r,a,s,o,l)),d&&m.setTime(m.getTime()-d),m}function Vm(e){return e.toISOString()}var Um=new qe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:$m,construct:Wm,instanceOf:Date,represent:Vm});function Gm(e){return e==="<<"||e===null}var Qm=new qe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Gm}),mo=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function Zm(e){if(e===null)return!1;var t,i,n=0,r=e.length,a=mo;for(i=0;i64)){if(t<0)return!1;n+=6}return n%8===0}function Jm(e){var t,i,n=e.replace(/[\r\n=]/g,""),r=n.length,a=mo,s=0,o=[];for(t=0;t>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return i=r%4*6,i===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):i===18?(o.push(s>>10&255),o.push(s>>2&255)):i===12&&o.push(s>>4&255),new Uint8Array(o)}function Xm(e){var t="",i=0,n,r,a=e.length,s=mo;for(n=0;n>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]),i=(i<<8)+e[n];return r=a%3,r===0?(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]):r===2?(t+=s[i>>10&63],t+=s[i>>4&63],t+=s[i<<2&63],t+=s[64]):r===1&&(t+=s[i>>2&63],t+=s[i<<4&63],t+=s[64],t+=s[64]),t}function eg(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var ig=new qe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Zm,construct:Jm,predicate:eg,represent:Xm}),tg=Object.prototype.hasOwnProperty,ng=Object.prototype.toString;function rg(e){if(e===null)return!0;var t=[],i,n,r,a,s,o=e;for(i=0,n=o.length;i>10)+55296,(e-65536&1023)+56320)}var Ec=new Array(256),Oc=new Array(256);for(tt=0;tt<256;tt++)Ec[tt]=oc(tt)?1:0,Oc[tt]=oc(tt);var tt;function zg(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||zc,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Cc(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=dm(i),new De(t,i)}function K(e,t){throw Cc(e,t)}function ma(e,t){e.onWarning&&e.onWarning.call(null,Cc(e,t))}var lc={YAML:function(t,i,n){var r,a,s;t.version!==null&&K(t,"duplication of %YAML directive"),n.length!==1&&K(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&K(t,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&K(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&ma(t,"unsupported YAML version of the document")},TAG:function(t,i,n){var r,a;n.length!==2&&K(t,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],Lc.test(r)||K(t,"ill-formed tag handle (first argument) of the TAG directive"),Ni.call(t.tagMap,r)&&K(t,'there is a previously declared suffix for "'+r+'" tag handle'),Tc.test(a)||K(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{K(t,"tag prefix is malformed: "+a)}t.tagMap[r]=a}};function Di(e,t,i,n){var r,a,s,o;if(t1&&(e.result+=xe.repeat(` -`,t-1))}function Sg(e,t,i){var n,r,a,s,o,l,d,c,u=e.kind,m=e.result,g;if(g=e.input.charCodeAt(e.position),$e(g)||Ht(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96||(g===63||g===45)&&(r=e.input.charCodeAt(e.position+1),$e(r)||i&&Ht(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;g!==0;){if(g===58){if(r=e.input.charCodeAt(e.position+1),$e(r)||i&&Ht(r))break}else if(g===35){if(n=e.input.charCodeAt(e.position-1),$e(n))break}else{if(e.position===e.lineStart&&fa(e)||i&&Ht(g))break;if(fi(g))if(l=e.line,d=e.lineStart,c=e.lineIndent,he(e,!1,-1),e.lineIndent>=t){o=!0,g=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=d,e.lineIndent=c;break}}o&&(Di(e,a,s,!1),ho(e,e.line-l),a=s=e.position,o=!1),nt(g)||(s=e.position+1),g=e.input.charCodeAt(++e.position)}return Di(e,a,s,!1),e.result?!0:(e.kind=u,e.result=m,!1)}function Ag(e,t){var i,n,r;if(i=e.input.charCodeAt(e.position),i!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39)if(Di(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0;else fi(i)?(Di(e,n,r,!0),ho(e,he(e,!1,t)),n=r=e.position):e.position===e.lineStart&&fa(e)?K(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);K(e,"unexpected end of the stream within a single quoted scalar")}function Lg(e,t){var i,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Di(e,i,e.position,!0),e.position++,!0;if(o===92){if(Di(e,i,e.position,!0),o=e.input.charCodeAt(++e.position),fi(o))he(e,!1,t);else if(o<256&&Ec[o])e.result+=Oc[o],e.position++;else if((s=xg(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=vg(o))>=0?a=(a<<4)+s:K(e,"expected hexadecimal character");e.result+=kg(a),e.position++}else K(e,"unknown escape sequence");i=n=e.position}else fi(o)?(Di(e,i,n,!0),ho(e,he(e,!1,t)),i=n=e.position):e.position===e.lineStart&&fa(e)?K(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}K(e,"unexpected end of the stream within a double quoted scalar")}function Tg(e,t){var i=!0,n,r,a,s=e.tag,o,l=e.anchor,d,c,u,m,g,h=Object.create(null),v,x,w,S;if(S=e.input.charCodeAt(e.position),S===91)c=93,g=!1,o=[];else if(S===123)c=125,g=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),S=e.input.charCodeAt(++e.position);S!==0;){if(he(e,!0,t),S=e.input.charCodeAt(e.position),S===c)return e.position++,e.tag=s,e.anchor=l,e.kind=g?"mapping":"sequence",e.result=o,!0;i?S===44&&K(e,"expected the node content, but found ','"):K(e,"missed comma between flow collection entries"),x=v=w=null,u=m=!1,S===63&&(d=e.input.charCodeAt(e.position+1),$e(d)&&(u=m=!0,e.position++,he(e,!0,t))),n=e.line,r=e.lineStart,a=e.position,Wt(e,t,ua,!1,!0),x=e.tag,v=e.result,he(e,!0,t),S=e.input.charCodeAt(e.position),(m||e.line===n)&&S===58&&(u=!0,S=e.input.charCodeAt(++e.position),he(e,!0,t),Wt(e,t,ua,!1,!0),w=e.result),g?$t(e,o,h,x,v,w,n,r,a):u?o.push($t(e,null,h,x,v,w,n,r,a)):o.push(v),he(e,!0,t),S=e.input.charCodeAt(e.position),S===44?(i=!0,S=e.input.charCodeAt(++e.position)):i=!1}K(e,"unexpected end of the stream within a flow collection")}function Eg(e,t){var i,n,r=so,a=!1,s=!1,o=t,l=0,d=!1,c,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)so===r?r=u===43?ac:hg:K(e,"repeat of a chomping mode identifier");else if((c=wg(u))>=0)c===0?K(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?K(e,"repeat of an indentation width identifier"):(o=t+c-1,s=!0);else break;if(nt(u)){do u=e.input.charCodeAt(++e.position);while(nt(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!fi(u)&&u!==0)}for(;u!==0;){for(go(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndento&&(o=e.lineIndent),fi(u)){l++;continue}if(e.lineIndentt)&&l!==0)K(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(x&&(s=e.line,o=e.lineStart,l=e.position),Wt(e,t,pa,!0,r)&&(x?h=e.result:v=e.result),x||($t(e,u,m,g,h,v,s,o,l),g=h=v=null),he(e,!0,-1),S=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&S!==0)K(e,"bad indentation of a mapping entry");else if(e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),u=0,m=e.implicitTypes.length;u"),e.result!==null&&h.kind!==e.kind&&K(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+h.kind+'", not "'+e.kind+'"'),h.resolve(e.result,e.tag)?(e.result=h.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):K(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||c}function Ig(e){var t=e.position,i,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(he(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),i=e.position;s!==0&&!$e(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(i,e.position),r=[],n.length<1&&K(e,"directive name must not be less than one character in length");s!==0;){for(;nt(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!fi(s));break}if(fi(s))break;for(i=e.position;s!==0&&!$e(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}s!==0&&go(e),Ni.call(lc,n)?lc[n](e,n,r):ma(e,'unknown document directive "'+n+'"')}if(he(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,he(e,!0,-1)):a&&K(e,"directives end mark is expected"),Wt(e,e.lineIndent-1,pa,!1,!0),he(e,!0,-1),e.checkLineBreaks&&yg.test(e.input.slice(t,e.position))&&ma(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&fa(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,he(e,!0,-1));return}if(e.position"u"&&(i=t,t=null);var n=Mc(e,i);if(typeof t!="function")return n;for(var r=0,a=n.length;ro&&(a=" ... ",t=n-o+a.length),i-n>o&&(s=" ...",i=n+o-s.length),{str:a+e.slice(t,i).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function jo(e,t){return Se.repeat(" ",t-e.length)+e}function tg(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var i=/\r?\n|\r|\0/g,n=[0],r=[],a,s=-1;a=i.exec(e.buffer);)r.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,c,d=Math.min(e.line+t.linesAfter,r.length).toString().length,u=t.maxLength-(t.indent+d+3);for(l=1;l<=t.linesBefore&&!(s-l<0);l++)c=No(e.buffer,n[s-l],r[s-l],e.position-(n[s]-n[s-l]),u),o=Se.repeat(" ",t.indent)+jo((e.line-l+1).toString(),d)+" | "+c.str+` +`+o;for(c=No(e.buffer,n[s],r[s],e.position,u),o+=Se.repeat(" ",t.indent)+jo((e.line+1).toString(),d)+" | "+c.str+` +`,o+=Se.repeat("-",t.indent+d+3+c.pos)+`^ +`,l=1;l<=t.linesAfter&&!(s+l>=r.length);l++)c=No(e.buffer,n[s+l],r[s+l],e.position-(n[s]-n[s+l]),u),o+=Se.repeat(" ",t.indent)+jo((e.line+l+1).toString(),d)+" | "+c.str+` +`;return o.replace(/\n$/,"")}var ng=tg,rg=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],ag=["scalar","sequence","mapping"];function sg(e){var t={};return e!==null&&Object.keys(e).forEach(function(i){e[i].forEach(function(n){t[String(n)]=i})}),t}function og(e,t){if(t=t||{},Object.keys(t).forEach(function(i){if(rg.indexOf(i)===-1)throw new We('Unknown option "'+i+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(i){return i},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=sg(t.styleAliases||null),ag.indexOf(this.kind)===-1)throw new We('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var Ne=og;function Uc(e,t){var i=[];return e[t].forEach(function(n){var r=i.length;i.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(r=s)}),i[r]=n}),i}function lg(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,i;function n(r){r.multi?(e.multi[r.kind].push(r),e.multi.fallback.push(r)):e[r.kind][r.tag]=e.fallback[r.tag]=r}for(t=0,i=arguments.length;t=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Cg=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Og(e){return!(e===null||!Cg.test(e)||e[e.length-1]==="_")}function Mg(e){var t,i;return t=e.replace(/_/g,"").toLowerCase(),i=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:i*parseFloat(t,10)}var qg=/^[-+]?[0-9]+e/;function Ig(e,t){var i;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Se.isNegativeZero(e))return"-0.0";return i=e.toString(10),qg.test(i)?i.replace("e",".e"):i}function Bg(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||Se.isNegativeZero(e))}var Fg=new Ne("tag:yaml.org,2002:float",{kind:"scalar",resolve:Og,construct:Mg,predicate:Bg,represent:Ig,defaultStyle:"lowercase"}),Rg=mg.extend({implicit:[yg,wg,Eg,Fg]}),Dg=Rg,ld=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),cd=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function Kg(e){return e===null?!1:ld.exec(e)!==null||cd.exec(e)!==null}function _g(e){var t,i,n,r,a,s,o,l=0,c=null,d,u,m;if(t=ld.exec(e),t===null&&(t=cd.exec(e)),t===null)throw new Error("Date resolve error");if(i=+t[1],n=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(i,n,r));if(a=+t[4],s=+t[5],o=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(d=+t[10],u=+(t[11]||0),c=(d*60+u)*6e4,t[9]==="-"&&(c=-c)),m=new Date(Date.UTC(i,n,r,a,s,o,l)),c&&m.setTime(m.getTime()-c),m}function Ng(e){return e.toISOString()}var jg=new Ne("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:Kg,construct:_g,instanceOf:Date,represent:Ng});function Yg(e){return e==="<<"||e===null}var Pg=new Ne("tag:yaml.org,2002:merge",{kind:"scalar",resolve:Yg}),$o=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function Hg(e){if(e===null)return!1;var t,i,n=0,r=e.length,a=$o;for(i=0;i64)){if(t<0)return!1;n+=6}return n%8===0}function Ug(e){var t,i,n=e.replace(/[\r\n=]/g,""),r=n.length,a=$o,s=0,o=[];for(t=0;t>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return i=r%4*6,i===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):i===18?(o.push(s>>10&255),o.push(s>>2&255)):i===12&&o.push(s>>4&255),new Uint8Array(o)}function Wg(e){var t="",i=0,n,r,a=e.length,s=$o;for(n=0;n>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]),i=(i<<8)+e[n];return r=a%3,r===0?(t+=s[i>>18&63],t+=s[i>>12&63],t+=s[i>>6&63],t+=s[i&63]):r===2?(t+=s[i>>10&63],t+=s[i>>4&63],t+=s[i<<2&63],t+=s[64]):r===1&&(t+=s[i>>2&63],t+=s[i<<4&63],t+=s[64],t+=s[64]),t}function Vg(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var $g=new Ne("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Hg,construct:Ug,predicate:Vg,represent:Wg}),Gg=Object.prototype.hasOwnProperty,Qg=Object.prototype.toString;function Zg(e){if(e===null)return!0;var t=[],i,n,r,a,s,o=e;for(i=0,n=o.length;i>10)+55296,(e-65536&1023)+56320)}var hd=new Array(256),fd=new Array(256);for(wt=0;wt<256;wt++)hd[wt]=$c(wt)?1:0,fd[wt]=$c(wt);var wt;function fh(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||dd,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function yd(e,t){var i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=ng(i),new We(t,i)}function N(e,t){throw yd(e,t)}function Wa(e,t){e.onWarning&&e.onWarning.call(null,yd(e,t))}var Gc={YAML:function(t,i,n){var r,a,s;t.version!==null&&N(t,"duplication of %YAML directive"),n.length!==1&&N(t,"YAML directive accepts exactly one argument"),r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),r===null&&N(t,"ill-formed argument of the YAML directive"),a=parseInt(r[1],10),s=parseInt(r[2],10),a!==1&&N(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&Wa(t,"unsupported YAML version of the document")},TAG:function(t,i,n){var r,a;n.length!==2&&N(t,"TAG directive accepts exactly two arguments"),r=n[0],a=n[1],md.test(r)||N(t,"ill-formed tag handle (first argument) of the TAG directive"),Zi.call(t.tagMap,r)&&N(t,'there is a previously declared suffix for "'+r+'" tag handle'),gd.test(a)||N(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{N(t,"tag prefix is malformed: "+a)}t.tagMap[r]=a}};function Qi(e,t,i,n){var r,a,s,o;if(t1&&(e.result+=Se.repeat(` +`,t-1))}function yh(e,t,i){var n,r,a,s,o,l,c,d,u=e.kind,m=e.result,p;if(p=e.input.charCodeAt(e.position),Xe(p)||fn(p)||p===35||p===38||p===42||p===33||p===124||p===62||p===39||p===34||p===37||p===64||p===96||(p===63||p===45)&&(r=e.input.charCodeAt(e.position+1),Xe(r)||i&&fn(r)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,o=!1;p!==0;){if(p===58){if(r=e.input.charCodeAt(e.position+1),Xe(r)||i&&fn(r))break}else if(p===35){if(n=e.input.charCodeAt(e.position-1),Xe(n))break}else{if(e.position===e.lineStart&&Ga(e)||i&&fn(p))break;if(Ti(p))if(l=e.line,c=e.lineStart,d=e.lineIndent,ze(e,!1,-1),e.lineIndent>=t){o=!0,p=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=l,e.lineStart=c,e.lineIndent=d;break}}o&&(Qi(e,a,s,!1),Qo(e,e.line-l),a=s=e.position,o=!1),kt(p)||(s=e.position+1),p=e.input.charCodeAt(++e.position)}return Qi(e,a,s,!1),e.result?!0:(e.kind=u,e.result=m,!1)}function bh(e,t){var i,n,r;if(i=e.input.charCodeAt(e.position),i!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39)if(Qi(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0;else Ti(i)?(Qi(e,n,r,!0),Qo(e,ze(e,!1,t)),n=r=e.position):e.position===e.lineStart&&Ga(e)?N(e,"unexpected end of the document within a single quoted scalar"):(e.position++,r=e.position);N(e,"unexpected end of the stream within a single quoted scalar")}function vh(e,t){var i,n,r,a,s,o;if(o=e.input.charCodeAt(e.position),o!==34)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(o=e.input.charCodeAt(e.position))!==0;){if(o===34)return Qi(e,i,e.position,!0),e.position++,!0;if(o===92){if(Qi(e,i,e.position,!0),o=e.input.charCodeAt(++e.position),Ti(o))ze(e,!1,t);else if(o<256&&hd[o])e.result+=fd[o],e.position++;else if((s=mh(o))>0){for(r=s,a=0;r>0;r--)o=e.input.charCodeAt(++e.position),(s=ph(o))>=0?a=(a<<4)+s:N(e,"expected hexadecimal character");e.result+=hh(a),e.position++}else N(e,"unknown escape sequence");i=n=e.position}else Ti(o)?(Qi(e,i,n,!0),Qo(e,ze(e,!1,t)),i=n=e.position):e.position===e.lineStart&&Ga(e)?N(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}N(e,"unexpected end of the stream within a double quoted scalar")}function xh(e,t){var i=!0,n,r,a,s=e.tag,o,l=e.anchor,c,d,u,m,p,g=Object.create(null),b,f,x,k;if(k=e.input.charCodeAt(e.position),k===91)d=93,p=!1,o=[];else if(k===123)d=125,p=!0,o={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=o),k=e.input.charCodeAt(++e.position);k!==0;){if(ze(e,!0,t),k=e.input.charCodeAt(e.position),k===d)return e.position++,e.tag=s,e.anchor=l,e.kind=p?"mapping":"sequence",e.result=o,!0;i?k===44&&N(e,"expected the node content, but found ','"):N(e,"missed comma between flow collection entries"),f=b=x=null,u=m=!1,k===63&&(c=e.input.charCodeAt(e.position+1),Xe(c)&&(u=m=!0,e.position++,ze(e,!0,t))),n=e.line,r=e.lineStart,a=e.position,bn(e,t,Ha,!1,!0),f=e.tag,b=e.result,ze(e,!0,t),k=e.input.charCodeAt(e.position),(m||e.line===n)&&k===58&&(u=!0,k=e.input.charCodeAt(++e.position),ze(e,!0,t),bn(e,t,Ha,!1,!0),x=e.result),p?yn(e,o,g,f,b,x,n,r,a):u?o.push(yn(e,null,g,f,b,x,n,r,a)):o.push(b),ze(e,!0,t),k=e.input.charCodeAt(e.position),k===44?(i=!0,k=e.input.charCodeAt(++e.position)):i=!1}N(e,"unexpected end of the stream within a flow collection")}function wh(e,t){var i,n,r=Yo,a=!1,s=!1,o=t,l=0,c=!1,d,u;if(u=e.input.charCodeAt(e.position),u===124)n=!1;else if(u===62)n=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)Yo===r?r=u===43?Wc:lh:N(e,"repeat of a chomping mode identifier");else if((d=gh(u))>=0)d===0?N(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?N(e,"repeat of an indentation width identifier"):(o=t+d-1,s=!0);else break;if(kt(u)){do u=e.input.charCodeAt(++e.position);while(kt(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!Ti(u)&&u!==0)}for(;u!==0;){for(Go(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!s||e.lineIndento&&(o=e.lineIndent),Ti(u)){l++;continue}if(e.lineIndentt)&&l!==0)N(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(f&&(s=e.line,o=e.lineStart,l=e.position),bn(e,t,Ua,!0,r)&&(f?g=e.result:b=e.result),f||(yn(e,u,m,p,g,b,s,o,l),p=g=b=null),ze(e,!0,-1),k=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&k!==0)N(e,"bad indentation of a mapping entry");else if(e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),u=0,m=e.implicitTypes.length;u"),e.result!==null&&g.kind!==e.kind&&N(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+g.kind+'", not "'+e.kind+'"'),g.resolve(e.result,e.tag)?(e.result=g.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):N(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||d}function Lh(e){var t=e.position,i,n,r,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(ze(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),i=e.position;s!==0&&!Xe(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(i,e.position),r=[],n.length<1&&N(e,"directive name must not be less than one character in length");s!==0;){for(;kt(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!Ti(s));break}if(Ti(s))break;for(i=e.position;s!==0&&!Xe(s);)s=e.input.charCodeAt(++e.position);r.push(e.input.slice(i,e.position))}s!==0&&Go(e),Zi.call(Gc,n)?Gc[n](e,n,r):Wa(e,'unknown document directive "'+n+'"')}if(ze(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,ze(e,!0,-1)):a&&N(e,"directives end mark is expected"),bn(e,e.lineIndent-1,Ua,!1,!0),ze(e,!0,-1),e.checkLineBreaks&&dh.test(e.input.slice(t,e.position))&&Wa(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Ga(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,ze(e,!0,-1));return}if(e.position"u"&&(i=t,t=null);var n=bd(e,i);if(typeof t!="function")return n;for(var r=0,a=n.length;r=55296&&i<=56319&&t+1=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function jc(e){var t=/^\n* /;return t.test(e)}var Kc=1,uo=2,Yc=3,Pc=4,Pt=5;function ch(e,t,i,n,r,a,s,o){var l,d=0,c=null,u=!1,m=!1,g=n!==-1,h=-1,v=oh(Sn(e,0))&&lh(Sn(e,e.length-1));if(t||s)for(l=0;l=65536?l+=2:l++){if(d=Sn(e,l),!En(d))return Pt;v=v&&mc(d,c,o),c=d}else{for(l=0;l=65536?l+=2:l++){if(d=Sn(e,l),d===Ln)u=!0,g&&(m=m||l-h-1>n&&e[h+1]!==" ",h=l);else if(!En(d))return Pt;v=v&&mc(d,c,o),c=d}m=m||g&&l-h-1>n&&e[h+1]!==" "}return!u&&!m?v&&!s&&!r(e)?Kc:a===Tn?Pt:uo:i>9&&jc(e)?Pt:s?a===Tn?Pt:uo:m?Pc:Yc}function dh(e,t,i,n,r){e.dump=function(){if(t.length===0)return e.quotingType===Tn?'""':"''";if(!e.noCompatMode&&(eh.indexOf(t)!==-1||ih.test(t)))return e.quotingType===Tn?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,i),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&i>=e.flowLevel;function l(d){return sh(e,d)}switch(ch(t,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case Kc:return t;case uo:return"'"+t.replace(/'/g,"''")+"'";case Yc:return"|"+gc(t,e.indent)+hc(uc(t,a));case Pc:return">"+gc(t,e.indent)+hc(uc(uh(t,s),a));case Pt:return'"'+ph(t)+'"';default:throw new De("impossible error: invalid scalar style")}}()}function gc(e,t){var i=jc(e)?String(t):"",n=e[e.length-1]===` +`&&(a+=i),a+=s;return a}function Uo(e,t){return` +`+Se.repeat(" ",e.indent*t)}function Xh(e,t){var i,n,r;for(i=0,n=e.implicitTypes.length;i=55296&&i<=56319&&t+1=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function Td(e){var t=/^\n* /;return t.test(e)}var Ed=1,Wo=2,Cd=3,Od=4,hn=5;function nf(e,t,i,n,r,a,s,o){var l,c=0,d=null,u=!1,m=!1,p=n!==-1,g=-1,b=ef(Gn(e,0))&&tf(Gn(e,e.length-1));if(t||s)for(l=0;l=65536?l+=2:l++){if(c=Gn(e,l),!Xn(c))return hn;b=b&&ed(c,d,o),d=c}else{for(l=0;l=65536?l+=2:l++){if(c=Gn(e,l),c===Zn)u=!0,p&&(m=m||l-g-1>n&&e[g+1]!==" ",g=l);else if(!Xn(c))return hn;b=b&&ed(c,d,o),d=c}m=m||p&&l-g-1>n&&e[g+1]!==" "}return!u&&!m?b&&!s&&!r(e)?Ed:a===Jn?hn:Wo:i>9&&Td(e)?hn:s?a===Jn?hn:Wo:m?Od:Cd}function rf(e,t,i,n,r){e.dump=function(){if(t.length===0)return e.quotingType===Jn?'""':"''";if(!e.noCompatMode&&(Vh.indexOf(t)!==-1||$h.test(t)))return e.quotingType===Jn?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,i),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),o=n||e.flowLevel>-1&&i>=e.flowLevel;function l(c){return Xh(e,c)}switch(nf(t,o,e.indent,s,l,e.quotingType,e.forceQuotes&&!n,r)){case Ed:return t;case Wo:return"'"+t.replace(/'/g,"''")+"'";case Cd:return"|"+id(t,e.indent)+td(Jc(t,a));case Od:return">"+id(t,e.indent)+td(Jc(af(t,s),a));case hn:return'"'+sf(t)+'"';default:throw new We("impossible error: invalid scalar style")}}()}function id(e,t){var i=Td(e)?String(t):"",n=e[e.length-1]===` `,r=n&&(e[e.length-2]===` `||e===` `),a=r?"+":n?"":"-";return i+a+` -`}function hc(e){return e[e.length-1]===` -`?e.slice(0,-1):e}function uh(e,t){for(var i=/(\n+)([^\n]*)/g,n=function(){var d=e.indexOf(` -`);return d=d!==-1?d:e.length,i.lastIndex=d,fc(e.slice(0,d),t)}(),r=e[0]===` +`}function td(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function af(e,t){for(var i=/(\n+)([^\n]*)/g,n=function(){var c=e.indexOf(` +`);return c=c!==-1?c:e.length,i.lastIndex=c,nd(e.slice(0,c),t)}(),r=e[0]===` `||e[0]===" ",a,s;s=i.exec(e);){var o=s[1],l=s[2];a=l[0]===" ",n+=o+(!r&&!a&&l!==""?` -`:"")+fc(l,t),r=a}return n}function fc(e,t){if(e===""||e[0]===" ")return e;for(var i=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=i.exec(e);)o=n.index,o-r>t&&(a=s>r?s:o,l+=` +`:"")+nd(l,t),r=a}return n}function nd(e,t){if(e===""||e[0]===" ")return e;for(var i=/ [^ ]/g,n,r=0,a,s=0,o=0,l="";n=i.exec(e);)o=n.index,o-r>t&&(a=s>r?s:o,l+=` `+e.slice(r,a),r=a+1),s=o;return l+=` `,e.length-r>t&&s>r?l+=e.slice(r,s)+` -`+e.slice(s+1):l+=e.slice(r),l.slice(1)}function ph(e){for(var t="",i=0,n,r=0;r=65536?r+=2:r++)i=Sn(e,r),n=Ie[i],!n&&En(i)?(t+=e[r],i>=65536&&(t+=e[r+1])):t+=n||nh(i);return t}function mh(e,t,i){var n="",r=e.tag,a,s,o;for(a=0,s=i.length;a"u"&&Ci(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function yc(e,t,i,n){var r="",a=e.tag,s,o,l;for(s=0,o=i.length;s"u"&&Ci(e,t+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=co(e,t)),e.dump&&Ln===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function gh(e,t,i){var n="",r=e.tag,a=Object.keys(i),s,o,l,d,c;for(s=0,o=a.length;s1024&&(c+="? "),c+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ci(e,t,d,!1,!1)&&(c+=e.dump,n+=c));e.tag=r,e.dump="{"+n+"}"}function hh(e,t,i,n){var r="",a=e.tag,s=Object.keys(i),o,l,d,c,u,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new De("sortKeys must be a boolean or a function");for(o=0,l=s.length;o1024,u&&(e.dump&&Ln===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,u&&(m+=co(e,t)),Ci(e,t+1,c,!0,u)&&(e.dump&&Ln===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,r+=m));e.tag=a,e.dump=r||"{}"}function bc(e,t,i){var n,r,a,s,o,l;for(r=i?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function Ci(e,t,i,n,r,a,s){e.tag=null,e.dump=i,bc(e,i,!1)||bc(e,i,!0);var o=Ic.call(e.dump),l=n,d;n&&(n=e.flowLevel<0||e.flowLevel>t);var c=o==="[object Object]"||o==="[object Array]",u,m;if(c&&(u=e.duplicates.indexOf(i),m=u!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&t>0)&&(r=!1),m&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(c&&m&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(hh(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(gh(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?yc(e,t-1,e.dump,r):yc(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(mh(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&dh(e,e.dump,t,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new De("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(d=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?d="!"+d:d.slice(0,18)==="tag:yaml.org,2002:"?d="!!"+d.slice(18):d="!<"+d+">",e.dump=d+" "+e.dump)}return!0}function fh(e,t){var i=[],n=[],r,a;for(po(e,i,n),r=0,a=n.length;r=65536?r+=2:r++)i=Gn(e,r),n=je[i],!n&&Xn(i)?(t+=e[r],i>=65536&&(t+=e[r+1])):t+=n||Qh(i);return t}function of(e,t,i){var n="",r=e.tag,a,s,o;for(a=0,s=i.length;a"u"&&ji(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=r,e.dump="["+n+"]"}function rd(e,t,i,n){var r="",a=e.tag,s,o,l;for(s=0,o=i.length;s"u"&&ji(e,t+1,null,!0,!0,!1,!0))&&((!n||r!=="")&&(r+=Uo(e,t)),e.dump&&Zn===e.dump.charCodeAt(0)?r+="-":r+="- ",r+=e.dump);e.tag=a,e.dump=r||"[]"}function lf(e,t,i){var n="",r=e.tag,a=Object.keys(i),s,o,l,c,d;for(s=0,o=a.length;s1024&&(d+="? "),d+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),ji(e,t,c,!1,!1)&&(d+=e.dump,n+=d));e.tag=r,e.dump="{"+n+"}"}function cf(e,t,i,n){var r="",a=e.tag,s=Object.keys(i),o,l,c,d,u,m;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new We("sortKeys must be a boolean or a function");for(o=0,l=s.length;o1024,u&&(e.dump&&Zn===e.dump.charCodeAt(0)?m+="?":m+="? "),m+=e.dump,u&&(m+=Uo(e,t)),ji(e,t+1,d,!0,u)&&(e.dump&&Zn===e.dump.charCodeAt(0)?m+=":":m+=": ",m+=e.dump,r+=m));e.tag=a,e.dump=r||"{}"}function ad(e,t,i){var n,r,a,s,o,l;for(r=i?e.explicitTypes:e.implicitTypes,a=0,s=r.length;a tag resolver accepts not "'+l+'" style');e.dump=n}return!0}return!1}function ji(e,t,i,n,r,a,s){e.tag=null,e.dump=i,ad(e,i,!1)||ad(e,i,!0);var o=xd.call(e.dump),l=n,c;n&&(n=e.flowLevel<0||e.flowLevel>t);var d=o==="[object Object]"||o==="[object Array]",u,m;if(d&&(u=e.duplicates.indexOf(i),m=u!==-1),(e.tag!==null&&e.tag!=="?"||m||e.indent!==2&&t>0)&&(r=!1),m&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(d&&m&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),o==="[object Object]")n&&Object.keys(e.dump).length!==0?(cf(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(lf(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?rd(e,t-1,e.dump,r):rd(e,t,e.dump,r),m&&(e.dump="&ref_"+u+e.dump)):(of(e,t,e.dump),m&&(e.dump="&ref_"+u+" "+e.dump));else if(o==="[object String]")e.tag!=="?"&&rf(e,e.dump,t,a,l);else{if(o==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new We("unacceptable kind of an object to dump "+o)}e.tag!==null&&e.tag!=="?"&&(c=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?c="!"+c:c.slice(0,18)==="tag:yaml.org,2002:"?c="!!"+c.slice(18):c="!<"+c+">",e.dump=c+" "+e.dump)}return!0}function df(e,t){var i=[],n=[],r,a;for(Vo(e,i,n),r=0,a=n.length;rie.default.levels.DEBUG||ko.set(e,performance.now())}function ji(e){if(ie.default.getLevel()>ie.default.levels.DEBUG)return;ko.has(e)||rt(T("logs.timing-key-not-found").replace("{TIMING_KEY}",e));let t=performance.now()-ko.get(e);oi(`${e}: ${t} `+T("logs.milliseconds-abbreviation"))}function xa(e,t){ie.default.getLevel()<=t&&va.push(e)}function Gc(){va=[]}function zo(e){Cn=e}function wa(e){switch(e){case"INFO":{ie.default.setLevel("info");break}case"TRACE":{ie.default.setLevel("trace");break}case"DEBUG":{ie.default.setLevel("debug");break}case"SILENT":{ie.default.setLevel("silent");break}case"ERROR":{ie.default.setLevel("error");break}case"WARN":{ie.default.setLevel("warn");break}}}function Qc(e){switch(e){case ie.default.levels.INFO:return"INFO";case ie.default.levels.TRACE:return"TRACE";case ie.default.levels.DEBUG:return"DEBUG";case ie.default.levels.SILENT:return"SILENT";case ie.default.levels.ERROR:return"ERROR";case ie.default.levels.WARN:return"WARN"}}var Zc={};var Jc={};var Xc={};var ed={commands:{"lint-file":{name:"Linten Sie die aktuelle Datei","error-message":"Lint-Datei-Fehler in der Datei"},"lint-file-unless-ignored":{name:"Linten Sie die aktuelle Datei, es sei denn, sie wird ignoriert"},"lint-all-files":{name:"Linten Sie alle Dateien im Vault","error-message":"Beim Linten aller Dateien Fehler in der Datei","success-message":"Alle Dateien gelinted","errors-message-singular":"Beim Linten aller Dateien gab es einen Fehler.","errors-message-plural":"Beim Linten aller Dateien gab es {NUM} Fehler.","start-message":"Dadurch werden alle Ihre Dateien ver\xE4ndert und es k\xF6nnen Fehler entstehen.","submit-button-text":"Linte alle","submit-button-notice-text":"Linte alle Dateien..."},"lint-all-files-in-folder":{name:"Linte alle Dateien im aktuellen Ordner","start-message":"Dadurch werden alle Ihre Dateien in {FOLDER_NAME} bearbeitet, einschlie\xDFlich der Dateien in den Unterordnern, was zu Fehlern f\xFChren kann.","submit-button-text":"Linte alle Dateien in {FOLDER_NAME}","submit-button-notice-text":"Linten aller Dateien in {FOLDER_NAME}...","error-message":"Beim Linten aller Dateien im Ordner gab es Fehler in der Datei","success-message":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted.","message-singular":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted und es trat ein Fehler auf.","message-plural":"Alle {FILE_COUNT}-Dateien in {FOLDER_NAME} wurden gelinted und es gab {ERROR_COUNT} Fehler."},"paste-as-plain-text":{name:"Einf\xFCgen als reiner Text und ohne \xC4nderungen"},"lint-file-pop-up-menu-text":{name:"Linte Datei"},"lint-folder-pop-up-menu-text":{name:"Linte Ordner"}},logs:{"plugin-load":"Plugin wird geladen","plugin-unload":"Plugin entladen","folder-lint":"Linting-Ordner ","linter-run":"Laufender Linter","paste-link-warning":"Abgebrochenes Einf\xFCgen des Lints, da der Inhalt der Zwischenablage ein Link ist, wodurch Konflikte mit anderen Plugins vermieden werden, die das Einf\xFCgen \xE4ndern.","see-console":"Weitere Informationen finden Sie in der Konsole.","unknown-error":"Beim Linten ist ein unbekannter Fehler aufgetreten.","moment-locale-not-found":"Beim Versuch, Moment.js locale auf {MOMENT_LOCALE} umzustellen, wurde {CURRENT_LOCALE} angezeigt","file-change-lint-message-start":"Linted","pre-rules":"Regeln vor regul\xE4ren Regeln","post-rules":"Regeln nach regul\xE4ren Regeln","rule-running":"Laufende Regeln","custom-regex":"Benutzerdefinierte Regex-Regeln","running-custom-regex":"Ausf\xFChren von benutzerdefinierten Regex","running-custom-lint-command":"Ausf\xFChren von benutzerdefinierten Lint-Befehlen","custom-lint-duplicate-warning":'Sie k\xF6nnen denselben Befehl ("{COMMAND_NAME}") nicht zweimal als benutzerdefinierte Lint-Regel ausf\xFChren.',"custom-lint-error-message":"Benutzerdefinierter Lint-Befehl","disabled-text":"ist deaktiviert","run-rule-text":"L\xE4uft","timing-key-not-found":"Der Timing-Schl\xFCssel '{TIMING_KEY}' ist in der Timing-Info-Liste nicht vorhanden, daher wurde er ignoriert","milliseconds-abbreviation":"ms","invalid-date-format-error":"Das Format des Erstellungsdatums '{DATE}' konnte nicht analysiert oder bestimmt werden, sodass das Erstellungsdatum in '{FILE_NAME}","invalid-delimiter-error-message":"Trennzeichen darf nur ein einzelnes Zeichen sein","missing-footnote-error-message":"Die Fu\xDFnote '{FOOTNOTE}' hat keinen entsprechenden Fu\xDFnotenverweis vor dem Fu\xDFnoteninhalt und kann nicht verarbeitet werden. Bitte achten Sie darauf, dass alle Fu\xDFnoten vor dem Inhalt der Fu\xDFnote einen entsprechenden Verweis haben.","too-many-footnotes-error-message":"Der Fu\xDFnotenschl\xFCssel '{FOOTNOTE_KEY}' hat mehr als 1 Fu\xDFnote, die darauf verweist. Bitte aktualisieren Sie die Fu\xDFnoten so, dass es nur noch eine Fu\xDFnote pro Fu\xDFnotenschl\xFCssel gibt.","wrapper-yaml-error":"Fehler in der YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"Unbekannter Fehler: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Die Vorkommen des Anf\xFChrungszeichens `{QUOTE}` in der Datei sind nicht gerade, daher k\xF6nnen wir gerade Anf\xFChrungszeichen nicht in intelligente Anf\xFChrungszeichen umwandeln"},"notice-text":{"empty-clipboard":"Es gibt keinen Inhalt in der Zwischenablage.","characters-added":"Zeichen hinzugef\xFCgt","characters-removed":"Zeichen entfernt","copy-to-clipboard-failed":"Kopieren des Textes in die Zwischenablage fehlgeschlagen: "},"all-rules-option":"Alle","linter-title":"Linter","empty-search-results-text":"Keine Einstellungen stimmen mit der Suche \xFCberein","warning-text":"Warnung","file-backup-text":"Stellen Sie sicher, dass Sie Ihre Dateien gesichert haben.",tabs:{names:{general:"Allgemein",custom:"Individuell",yaml:"YAML",heading:"\xDCberschrift",content:"Inhalt",footnote:"Fu\xDFnote",spacing:"Abstand",paste:"Einf\xFCgen",debug:"Debuggen"},"default-search-bar-text":"Alle Einstellungen durchsuchen",general:{"lint-on-save":{name:"Linten beim Speichern",description:"Linten der Datei beim manuellen Speichern (wenn `Strg + S` gedr\xFCckt wird oder wenn `:w` ausgef\xFChrt wird, w\xE4hrend vim-Tastenkombinationen verwendet werden)"},"display-message":{name:"Meldung beim Linten anzeigen",description:"Zeigen Sie die Anzahl der Zeichen an, die sich nach dem Linten ge\xE4ndert haben"},"lint-on-file-change":{name:"Linten bei Datei\xE4nderungen",description:"Wenn eine Datei geschlossen oder zu einer neuen Datei gewechselt wird, wird die vorherige Datei gelinted."},"display-lint-on-file-change-message":{name:"Nachricht beim Linten nach einer Datei\xE4nderung anzeigen",description:"Zeigt eine Meldung an, wenn `Linten bei Datei\xE4nderungen` ausgel\xF6st wurde"},"folders-to-ignore":{name:"Ordner, die ignoriert werden sollen",description:"Ordner, die ignoriert werden sollen, wenn alle Dateien gelinted oder beim Speichern gelinted werden. Geben Sie Ordnerpfade ein, die durch Zeilenumbr\xFCche getrennt sind","folder-search-placeholder-text":"Ordner-Name","add-input-button-text":"Einen anderen zu ignorierenden Ordner hinzuf\xFCgen","delete-tooltip":"L\xF6schen"},"override-locale":{name:"Gebietsschema \xFCberschreiben",description:"Legen Sie diese Option fest, wenn Sie ein anderes Gebietsschema als das Standardgebietsschema verwenden m\xF6chten"},"same-as-system-locale":"Identisch mit System ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML-Aliase-Abschnittsstil",description:"Der Stil des YAML-Aliasabschnitts"},"yaml-tags-section-style":{name:"Abschnittsstil f\xFCr YAML-Tags",description:"Der Stil des YAML-Tags-Abschnitts"},"default-escape-character":{name:"Standard-Escape-Zeichen",description:"Das Standardzeichen, das zum Maskieren von YAML-Werten verwendet werden soll, wenn ein einfaches Anf\xFChrungszeichen und kein doppeltes Anf\xFChrungszeichen vorhanden sind."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Entfernen Sie unn\xF6tige Escape-Zeichen im mehrzeiligen Array-Format",description:"Escape-Zeichen f\xFCr mehrzeilige YAML-Arrays ben\xF6tigen nicht die gleiche Escape-Funktion wie einzeilige Arrays. Entfernen Sie also im mehrzeiligen Format zus\xE4tzliche Escapezeichen, die nicht erforderlich sind"},"number-of-dollar-signs-to-indicate-math-block":{name:"Anzahl der Dollarzeichen, die den Matheblock anzeigen",description:"Die Anzahl der Dollarzeichen, um den mathematischen Inhalt als mathematischen Block anstelle von Inline-Mathematik zu betrachten"}},debug:{"log-level":{name:"Log-Ebene",description:"Die Arten von Logmeldungen, die vom Dienst protokolliert werden d\xFCrfen. Der Standardwert ist Fehler."},"linter-config":{name:"Linter-Konfiguration",description:"Der Inhalt der data.json f\xFCr den Linter zum Zeitpunkt des Ladens der Einstellungsseite"},"log-collection":{name:"Sammeln Sie Protokolle bei aktiviertem `Linten beim Speichern` und dem Linten der aktuellen Datei",description:"Sammelt die Log-Meldungen, wenn Sie `Linten beim Speichern` aktiviert haben und die aktuelle Datei linten. Diese Protokolle k\xF6nnen beim Debuggen und Erstellen von Fehlerberichten hilfreich sein."},"linter-logs":{name:"Linter-Protokolle",description:"Die Protokolle des letzten `Linten beim Speichern`-Durchlaufes oder dem letzten Linten der aktuellen Datei werden gesammelt, wenn die Option aktiviert ist."}}},options:{"custom-command":{name:"Benutzerdefinierte Befehle",description:"Benutzerdefinierte Befehle sind Obsidian-Befehle, die ausgef\xFChrt werden, nachdem der Linter seine regul\xE4ren Regeln ausgef\xFChrt hat. Dies bedeutet, dass sie nicht ausgef\xFChrt werden, bevor die YAML-Zeitstempellogik ausgef\xFChrt wird, sodass sie dazu f\xFChren k\xF6nnen, dass der YAML-Zeitstempel bei der n\xE4chsten Ausf\xFChrung des Linters ausgel\xF6st wird. Sie k\xF6nnen einen Obsidian-Befehl nur einmal ausw\xE4hlen. **_Beachten Sie, dass dies derzeit nur beim Linten der aktuellen Datei funktioniert._**",warning:"Wenn Sie eine Option ausw\xE4hlen, stellen Sie sicher, dass Sie die Option entweder mit der Maus oder durch Dr\xFCcken der Eingabetaste ausw\xE4hlen. Andere Auswahlmethoden funktionieren m\xF6glicherweise nicht und es werden nur Auswahlen eines tats\xE4chlichen Obsidian-Befehls oder einer leeren Zeichenfolge gespeichert.","add-input-button-text":"Neuen Befehl hinzuf\xFCgen","command-search-placeholder-text":"Obsidian-Befehl","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"},"custom-replace":{name:"Benutzerdefinierter Regex-Ersatz",description:"Der benutzerdefinierte Regex-Ersatz kann verwendet werden, um alles zu ersetzen, was mit dem Such-Regex mit dem Ersatzwert \xFCbereinstimmt. Bei den Werten replace und find muss es sich um g\xFCltige Regex-Werte handeln.",warning:"Verwenden Sie dies mit Vorsicht, wenn Sie Regex nicht kennen. Stellen Sie au\xDFerdem sicher, dass Sie keine Lookbehinds in Ihrem regul\xE4ren Ausdruck auf iOS-Mobilger\xE4ten verwenden, da dies dazu f\xFChrt, dass Lints fehlschlagen, da dies auf dieser Plattform nicht unterst\xFCtzt wird.","add-input-button-text":"Neuen Regex-Ersatz hinzuf\xFCgen","regex-to-find-placeholder-text":"Regex zu finden","flags-placeholder-text":"Flaggen","regex-to-replace-placeholder-text":"Regex zu ersetzen","label-placeholder-text":"Etikett","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"}},rules:{"auto-correct-common-misspellings":{name:"H\xE4ufige Rechtschreibfehler automatisch korrigieren",description:"Verwendet ein W\xF6rterbuch mit h\xE4ufigen Rechtschreibfehlern, um sie automatisch in die richtige Schreibweise umzuwandeln. Siehe [Autokorrekturkarte](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) f\xFCr die vollst\xE4ndige Liste der automatisch korrigierten W\xF6rter.","ignore-words":{name:"Ignorieren Sie W\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern in Kleinbuchstaben, die bei der automatischen Korrektur ignoriert werden sollen"}},"add-blockquote-indentation-on-paste":{name:"Blockquote-Einr\xFCckung beim Einf\xFCgen hinzuf\xFCgen",description:"F\xFCgt Blockzitate zu allen au\xDFer der ersten Zeile hinzu, wenn sich der Cursor w\xE4hrend des Einf\xFCgens in einer Blockquote/Callout-Zeile befindet"},"blockquote-style":{name:"Blockquote-Stil",description:"Stellt sicher, dass der Blockquote-Stil konsistent ist.",style:{name:"Stil",description:"Der f\xFCr Blockquote-Indikatoren verwendete Stil"}},"capitalize-headings":{name:"\xDCberschriften gro\xDF schreiben",description:"\xDCberschriften sollten mit Gro\xDF- und Kleinschreibung formatiert werden",style:{name:"Stil",description:"Die Art der zu verwendenden Gro\xDFschreibung"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignorieren Sie Gro\xDF-/Kleinschreibungsw\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, die bei der Gro\xDFschreibung ignoriert werden sollen"},"lowercase-words":{name:"W\xF6rter in Kleinbuchstaben",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, um Kleinbuchstaben zu behalten"}},"compact-yaml":{name:"YAML komprimieren",description:"Entfernt f\xFChrende und nachfolgende Leerzeilen im YAML-Frontmatter.","inner-new-lines":{name:"Innere neue Zeilen",description:"Entfernen Sie neue Zeilen, die sich nicht am Anfang oder am Ende der YAML befinden"}},"consecutive-blank-lines":{name:"aufeinanderfolgende Leerzeilen zusammenfassen",description:"Es sollte h\xF6chstens eine aufeinanderfolgende Leerzeile geben."},"convert-bullet-list-markers":{name:"Konvertiere Aufz\xE4hlungszeichen",description:"Konvertiert g\xE4ngige Symbole f\xFCr Aufz\xE4hlungslisten in Markdown-Listenmarkierungen."},"convert-spaces-to-tabs":{name:"Leerzeichen in Tabulatoren konvertieren",description:"Konvertiert f\xFChrende Leerzeichen in Tabulatoren.",tabsize:{name:"Tabgr\xF6\xDFe",description:"Anzahl der Leerzeichen, die in einen Tabulator umgewandelt werden"}},"emphasis-style":{name:"Hervorhebungsstil",description:"Stellt sicher, dass der Hervorhebungsstil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um hervorgehobene Inhalte zu kennzeichnen"}},"empty-line-around-blockquotes":{name:"Leere Zeile um Blockquotes",description:"Stellt sicher, dass Blockzitate in einer leeren Zeile stehen, es sei denn, sie beginnen oder beenden ein Dokument. **Beachten Sie, dass eine leere Zeile entweder eine Verschachtelungsebene weniger f\xFCr Blockzitate oder ein Zeilenumbruchzeichen ist.**"},"empty-line-around-code-fences":{name:"Leere Zeile um Code-Bereiche",description:"Stellt sicher, dass Codebereiche mit einer leeren Zeile versehen sind, es sei denn, sie beginnen oder beenden ein Dokument."},"empty-line-around-math-blocks":{name:"Leere Zeile um mathematische Bl\xF6cke",description:"Stellt sicher, dass es eine leere Zeile um mathematische Bl\xF6cke gibt, indem `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwendet wird, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"empty-line-around-tables":{name:"Leere Zeile um Tabellen",description:"Stellt sicher, dass es eine leere Zeile um Github-formatierte Tabellen gibt, es sei denn, sie beginnen oder beenden ein Dokument."},"escape-yaml-special-characters":{name:"Escape-YAML-Sonderzeichen",description:`Maskiert Doppelpunkte mit einem Leerzeichen nach ihnen (: ), einfache Anf\xFChrungszeichen (') und doppelte Anf\xFChrungszeichen (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Versucht, Single-Line-Arrays zu vermeiden",description:'Versucht, Arraywerte zu maskieren, wobei davon ausgegangen wird, dass ein Array mit "[" beginnt, mit "]" endet und Elemente enth\xE4lt, die durch "," getrennt sind.'}},"file-name-heading":{name:"\xDCberschrift des Dateinamens",description:"F\xFCgt den Dateinamen als H1-\xDCberschrift ein, wenn keine H1-\xDCberschrift vorhanden ist."},"footnote-after-punctuation":{name:"Fu\xDFnote nach Interpunktion",description:"Stellt sicher, dass Fu\xDFnotenverweise nach der Interpunktion und nicht davor platziert werden."},"force-yaml-escape":{name:"YAML-Escape erzwingen",description:"Maskiert die Werte f\xFCr die angegebenen YAML-Schl\xFCssel.","force-yaml-escape-keys":{name:"Erzwingen Sie die YAML-Escape-Klausel f\xFCr Schl\xFCssel",description:"Verwendet das YAML-Escapezeichen f\xFCr die angegebenen YAML-Schl\xFCssel, die durch ein Zeilenumbruchzeichen getrennt sind, wenn es nicht bereits mit Escapezeichen versehen ist. Nicht auf YAML-Arrays verwenden."}},"format-tags-in-yaml":{name:"Formatieren von Tags in YAML",description:"Entfernen Sie Hashtags aus Tags im YAML-Frontmatter, da sie die Tags dort ung\xFCltig machen."},"format-yaml-array":{name:"Formatieren des YAML-Arrays",description:"Erm\xF6glicht die Formatierung von regul\xE4ren YAML-Arrays als mehrzeilig oder einzeilig und `tags` und `aliases` d\xFCrfen einige Obsidian-spezifische YAML-Formate haben. Beachten Sie, dass eine einzelne Zeichenfolge zu einer einzelnen Zeile von einem einzelnen Zeichenfolgeneintrag zu einem einzeiligen Array wechselt, wenn mehr als 1 Eintrag vorhanden ist. Das Gleiche gilt f\xFCr eine einzelne Zeichenfolge bis zu einer mehrzeiligen Zeichenfolge, mit der Ausnahme, dass sie zu einem mehrzeiligen Array wird.","alias-key":{name:'Abschnitt "YAML-Aliase" formatieren',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Aliase. Sie sollten diese Option nicht zusammen mit der Regel `YAML-Titel-Alias` aktivieren, da sie m\xF6glicherweise nicht gut zusammenarbeiten oder unterschiedliche Formatstile ausgew\xE4hlt haben, was zu unerwarteten Ergebnissen f\xFChrt."},"tag-key":{name:'Abschnitt "YAML-Tags formatieren"',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Tags."},"default-array-style":{name:"Standardm\xE4\xDFiger YAML-Array-Abschnittsstil",description:"Der Stil anderer YAML-Arrays, die nicht `tags` oder `aliases` sind oder bei `Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays` und `Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays`"},"default-array-keys":{name:"Formatieren von YAML-Array-Abschnitten",description:"Aktiviert die Formatierung f\xFCr regul\xE4re YAML-Arrays"},"force-single-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im einzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"},"force-multi-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im mehrzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"}},"header-increment":{name:"Header-Inkrement",description:"\xDCberschriftenebenen sollten jeweils nur um eine Ebene erh\xF6ht werden","start-at-h2":{name:"Start-Header-Inkrement auf \xDCberschriftenebene 2",description:"Legt die \xDCberschriftenebene 2 als minimale \xDCberschriftenebene in einer Datei f\xFCr das Kopfzeileninkrement fest und verschiebt alle \xDCberschriften entsprechend, sodass sie beginnend mit einer \xDCberschrift der Ebene 2 inkrementiert werden."}},"heading-blank-lines":{name:"\xDCberschriften mit Leerzeilen",description:"Alle \xDCberschriften haben sowohl davor als auch danach eine Leerzeile (au\xDFer wenn sich die \xDCberschrift am Anfang oder Ende des Dokuments befindet).",bottom:{name:"Darunter",description:"Einf\xFCgen einer Leerzeile unter \xDCberschriften"},"empty-line-after-yaml":{name:"Leere Zeile zwischen YAML und Header",description:"Behalten Sie die leere Zeile zwischen dem YAML-Frontmatter und dem Header bei"}},"headings-start-line":{name:"\xDCberschriften am Zeilenbeginn",description:"Bei \xDCberschriften, die keine Zeile beginnen, wird der vorangehende Leerraum entfernt, um sicherzustellen, dass sie als \xDCberschriften erkannt werden."},"insert-yaml-attributes":{name:"Einf\xFCgen von YAML-Attributen",description:"F\xFCgt die angegebenen YAML-Attribute in den YAML-Frontmatter ein. Setzen Sie jedes Attribut in eine einzelne Zeile.","text-to-insert":{name:"Text zum Einf\xFCgen",description:"Text, der in den YAML-Frontmatter eingef\xFCgt werden soll"}},"line-break-at-document-end":{name:"Zeilenumbruch am Dokumentende",description:"Stellt sicher, dass am Ende eines Dokuments genau ein Zeilenumbruch steht."},"move-footnotes-to-the-bottom":{name:"Fu\xDFnoten nach unten verschieben",description:"Verschieben Sie alle Fu\xDFnoten an das Ende des Dokuments."},"move-math-block-indicators-to-their-own-line":{name:"Verschieben Sie mathematische Blockindikatoren in eine eigene Zeile",description:"Verschieben Sie alle Anfangs- und Endindikatoren f\xFCr mathematische Bl\xF6cke in ihre eigenen Zeilen, indem Sie `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwenden, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"move-tags-to-yaml":{name:"Tags nach YAML verschieben",description:"Verschieben Sie alle Tags in den YAML-Frontmatter des Dokuments.","how-to-handle-existing-tags":{name:"Body-Tag-Operation",description:"Die Aktion, die mit nicht ignorierten Tags im Hauptteil der Datei ausgef\xFChrt werden soll, nachdem sie in den Frontmatter verschoben wurden"},"tags-to-ignore":{name:"ignorierte Tags",description:"Die Tags, die nicht in das Tags-Array verschoben oder aus dem Textinhalt entfernt werden, wenn `Entfernen Sie den Hashtag aus Tags im Inhaltstext` aktiviert ist. Jedes Tag sollte in einer neuen Zeile und ohne das `#`` stehen. **Stellen Sie sicher, dass Sie den Hashtag nicht in den Tag-Namen aufnehmen.**"}},"no-bare-urls":{name:"Keine blo\xDFen URLs",description:"Umschlie\xDFt blo\xDFe URLs mit spitzen Klammern, es sei denn, sie sind in Back-Ticks, eckige Klammern oder einfache oder doppelte Anf\xFChrungszeichen eingeschlossen."},"ordered-list-style":{name:"Geordneter Listenstil",description:"Stellt sicher, dass geordnete Listen dem angegebenen Stil entsprechen. Beachten Sie, dass 2 Leerzeichen oder 1 Tabulator als Einr\xFCckungsebene betrachtet werden.","number-style":{name:"Zahlen-Stil",description:"Der Zahlenstil, der in geordneten Listenindikatoren verwendet wird"},"list-end-style":{name:"Endestil des Indikators f\xFCr eine geordnete Liste",description:"Das Endezeichen eines geordneten Listenkennzeichens"}},"paragraph-blank-lines":{name:"Leere Absatzzeilen",description:"Alle Abs\xE4tze sollten sowohl davor als auch danach genau eine Leerzeile haben."},"prevent-double-checklist-indicator-on-paste":{name:"Verhindern Sie eine doppelte Checklistenanzeige beim Einf\xFCgen",description:"Entfernt die Start-Checklisten-Anzeige aus dem Text, um sie einzuf\xFCgen, wenn die Zeile, auf der sich der Cursor in der Datei befindet, \xFCber eine Checklistenanzeige verf\xFCgt"},"prevent-double-list-item-indicator-on-paste":{name:"Verhindern Sie die Anzeige f\xFCr doppelte Listenelemente beim Einf\xFCgen",description:"Entfernt den Startlistenindikator aus dem Text, der eingef\xFCgt werden soll, wenn die Zeile, auf der sich der Cursor in der Datei befindet, einen Listenindikator hat"},"proper-ellipsis-on-paste":{name:"Richtige Auslassungspunkte auf Paste",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte, auch wenn sie im Text ein Leerzeichen zum Einf\xFCgen haben"},"proper-ellipsis":{name:"Richtige Auslassungspunkte",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte."},"quote-style":{name:"Zitatstil",description:"Aktualisiert die Anf\xFChrungszeichen im Textk\xF6rperinhalt, sodass sie auf die angegebenen einfachen und doppelten Anf\xFChrungszeichenstile aktualisiert werden.","single-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr einfache Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte einfache Anf\xFChrungszeichenstil verwendet werden soll."},"single-quote-style":{name:"Stil f\xFCr einfache Anf\xFChrungszeichen",description:"Der Stil der zu verwendenden einfachen Anf\xFChrungszeichen."},"double-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr doppelte Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte doppelte Anf\xFChrungszeichenstil verwendet werden soll."},"double-quote-style":{name:"Stil f\xFCr doppelte Anf\xFChrungszeichen",description:"Der zu verwendende Stil der doppelten Anf\xFChrungszeichen."}},"re-index-footnotes":{name:"Fu\xDFnoten neu indizieren",description:"Indiziert Fu\xDFnotenschl\xFCssel und Fu\xDFnoten basierend auf der Reihenfolge des Auftretens neu (HINWEIS: Diese Regel funktioniert *nicht*, wenn es mehr als eine Fu\xDFnote f\xFCr einen Schl\xFCssel gibt.)"},"remove-consecutive-list-markers":{name:"Entfernen Sie aufeinanderfolgende Listenmarkierungen",description:"Entfernt aufeinanderfolgende Listenmarkierungen. N\xFCtzlich beim Kopieren und Einf\xFCgen von Listenelementen."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Entfernen Sie leere Zeilen zwischen Listenmarkierungen und Checklisten",description:"Es sollten keine leeren Zeilen zwischen Listenmarkierungen und Checklisten stehen."},"remove-empty-list-markers":{name:"Entfernen Sie leere Listenmarkierungen",description:"Entfernt leere Listenmarkierungen, d.h. Listenelemente ohne Inhalt."},"remove-hyphenated-line-breaks":{name:"Entfernen Sie Zeilenumbr\xFCche mit Bindestrich",description:"Entfernt Zeilenumbr\xFCche mit Bindestrich. N\xFCtzlich beim Einf\xFCgen von Text aus Lehrb\xFCchern."},"remove-hyphens-on-paste":{name:"Entfernen Sie Bindestriche auf Paste",description:"Entfernt Bindestriche aus dem Text zum Einf\xFCgen"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Entfernen Sie f\xFChrende oder nachgestellte Leerzeichen beim Einf\xFCgen",description:"Entfernt alle f\xFChrenden Leerzeichen ohne Tabulatoren und alle nachgestellten Leerzeichen, die der Text einf\xFCgen kann"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Entfernen Sie \xFCbrig gebliebene Fu\xDFnoten aus dem Zitat beim Einf\xFCgen",description:"Entfernt alle \xFCbrig gebliebenen Fu\xDFnotenverweise, die der Text einf\xFCgen kann"},"remove-link-spacing":{name:"Linkabstand entfernen",description:"Entfernt den Abstand um den Linktext."},"remove-multiple-blank-lines-on-paste":{name:"Entfernen Sie mehrfache Leerzeilen beim Einf\xFCgen",description:"Verdichtet mehrere Leerzeilen zu einer Leerzeile, damit der Text eingef\xFCgt werden kann"},"remove-multiple-spaces":{name:"Entfernen Sie mehrfache Leerzeichen",description:"Entfernt zwei oder mehr aufeinanderfolgende Leerzeichen. Ignoriert Leerzeichen am Anfang und am Ende der Zeile."},"remove-space-around-characters":{name:"Entfernen Sie den Abstand um die Zeichen",description:"Stellt sicher, dass bestimmte Zeichen nicht von Leerzeichen umgeben sind (entweder einzelne Leerzeichen oder ein Tabulator). Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","include-fullwidth-forms":{name:"Einf\xFCgen von Formularen in voller Breite",description:'Einschlie\xDFen Unicode-Block "Formulare" in voller Breite'},"include-cjk-symbols-and-punctuation":{name:"CJK-Symbole und Satzzeichen einschlie\xDFen",description:'Einschlie\xDFen CJK-Symbole und Satzzeichen Unicode-Block'},"include-dashes":{name:"Bindestriche einschlie\xDFen",description:"F\xFCgen Sie den Gedankenstrich (\u2013) und den Gedankenstrich (\u2014) ein"},"other-symbols":{name:"Andere Symbole",description:"Andere Symbole, die enthalten sind"}},"remove-space-before-or-after-characters":{name:"Entfernen Sie Leerzeichen vor oder nach Zeichen",description:"Entfernt Leerzeichen vor und nach den angegebenen Zeichen. Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","characters-to-remove-space-before":{name:"Leerzeichen vor Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"},"characters-to-remove-space-after":{name:"Leerzeichen nach Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"}},"remove-trailing-punctuation-in-heading":{name:"Entfernen Sie nachgestellte Satzzeichen in der \xDCberschrift",description:"Entfernt die angegebene Interpunktion am Ende von \xDCberschriften, wobei darauf zu achten ist, dass das Semikolon am Ende von [HTML-Entit\xE4tsreferenzen](https://de.wikipedia.org/wiki/Typografische_Zeichen_in_XML_und_HTML) ignoriert wird.","punctuation-to-remove":{name:"Nachfolgende Interpunktion",description:"Das nachfolgende Satzzeichen, das aus den \xDCberschriften in der Datei entfernt werden soll."}},"remove-yaml-keys":{name:"Entfernen von YAML-Schl\xFCsseln",description:"Entfernt die angegebenen YAML-Schl\xFCssel","yaml-keys-to-remove":{name:"Zu entfernende YAML-Schl\xFCssel",description:"Die zu entfernenden YAML-Schl\xFCssel aus dem YAML-Frontmatter mit oder ohne Doppelpunkt"}},"space-after-list-markers":{name:"Leerzeichen nach Listenmarkierungen",description:"Es sollte ein einzelnes Leerzeichen nach Listenmarkierungen und Kontrollk\xE4stchen geben."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Leerzeichen zwischen Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen",description:"Stellt sicher, dass Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen durch ein einziges Leerzeichen getrennt werden. Folgt diesen [Richtlinien](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Starker Stil",description:"Stellt sicher, dass der starke Stil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um starke/fettgedruckte Inhalte zu kennzeichnen"}},"trailing-spaces":{name:"Nachgestellte Leerzeichen",description:"Entfernt zus\xE4tzliche Leerzeichen nach jeder Zeile.","twp-space-line-break":{name:"Zwei Leerzeichen Zeilenumbruch",description:'Ignorieren Sie zwei Leerzeichen, gefolgt von einem Zeilenumbruch ("Zwei-Leerzeichen-Regel").'}},"two-spaces-between-lines-with-content":{name:"Zwei Leerzeichen zwischen Zeilen mit Inhalt",description:"Stellt sicher, dass zwei Leerzeichen an den Zeilenenden hinzugef\xFCgt werden, wobei der Inhalt in der n\xE4chsten Zeile f\xFCr Abs\xE4tze, Blockzitate und Listenelemente fortgesetzt wird"},"unordered-list-style":{name:"Ungeordneter Listenstil",description:"Stellt sicher, dass ungeordnete Listen dem angegebenen Stil folgen.","list-style":{name:"Stil des Listenelements",description:"Das Listenelementformat, das in ungeordneten Listen verwendet werden soll"}},"yaml-key-sort":{name:"Sortierung von YAML-Schl\xFCsseln",description:"Sortiert die YAML-Schl\xFCssel basierend auf der angegebenen Reihenfolge und Priorit\xE4t. Hinweis: Kann auch Leerzeilen entfernen.","yaml-key-priority-sort-order":{name:"Priorit\xE4tssortierreihenfolge der YAML-Schl\xFCssel",description:"Die Reihenfolge, in der die Schl\xFCssel sortiert werden sollen, wobei in jeder Zeile ein Schl\xFCssel in der Reihenfolge der Liste sortiert wird"},"priority-keys-at-start-of-yaml":{name:"Priorit\xE4tsschl\xFCssel am Anfang von YAML",description:"Die priorisierte Sortierreihenfolge der YAML-Schl\xFCssel wird am Anfang des YAML-Frontmatters platziert"},"yaml-sort-order-for-other-keys":{name:"YAML-Sortierreihenfolge f\xFCr andere Schl\xFCssel",description:"Die Art und Weise, wie die Schl\xFCssel sortiert werden, die nicht im Textbereich der priorisierten Sortierreihenfolge von YAML-Keys vorhanden sind"}},"yaml-timestamp":{name:"YAML-Zeitstempel",description:"Verfolgen Sie das Datum, an dem die Datei zuletzt bearbeitet wurde, im YAML-Frontmatter. Ruft Datumsangaben aus Dateimetadaten ab.","date-created":{name:"Erstellungsdatum",description:"Geben Sie das Datum ein, an dem die Datei erstellt wurde"},"date-created-key":{name:"Schl\xFCssel f\xFCr das Erstellungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das Erstellungsdatum verwendet werden soll"},"force-retention-of-create-value":{name:"Erzwinge die Beibehaltung des Schl\xFCsselwertes f\xFCr das Erstellungsdatum",description:"Verwendet den Wert im YAML-Frontmatter f\xFCr das Erstellungsdatum anstelle den Dateimetadaten, was n\xFCtzlich ist, um zu verhindern, dass \xC4nderungen an Dateimetadaten dazu f\xFChren, dass der Wert in einen anderen Wert ge\xE4ndert wird."},"date-modified":{name:"\xC4nderungsdatum",description:"Geben Sie das Datum ein, an dem die Datei zuletzt ge\xE4ndert wurde"},"date-modified-key":{name:"Schl\xFCssel f\xFCr das \xC4nderungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das \xC4nderungsdatum verwendet werden soll"},format:{name:"Format",description:"Zu verwendendes Datumsformat f\xFCr Moment.js (siehe [Momentformatoptionen](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML-Titel-Alias",description:"F\xFCgt den Titel der Datei in den Aliasabschnitt des YAML-Frontmatters ein. Ruft den Titel aus dem ersten H1- oder Dateinamen ab.","preserve-existing-alias-section-style":{name:"Vorhandenes Alias-Abschnittsformat beibehalten",description:"Wenn diese Option festgelegt ist, gilt die Einstellung `YAML-Aliase-Abschnittsstil` nur f\xFCr die neu erstellten Abschnitte"},"keep-alias-that-matches-the-filename":{name:"Behalten Sie einen Alias bei, der mit dem Dateinamen \xFCbereinstimmt",description:"Solche Aliase sind in der Regel redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Verwenden Sie den YAML-Schl\xFCssel `linter-yaml-title-alias`, um bei \xC4nderungen von Dateinamen und \xDCberschriften zu helfen",description:"Wenn sich die erste H1-\xDCberschrift \xE4ndert oder der Dateiname ge\xE4ndert wird, wenn der erste H1 nicht vorhanden ist, wird der alte Alias, der in diesem Schl\xFCssel gespeichert ist, durch den neuen Wert ersetzt, anstatt nur einen neuen Eintrag in das Alias-Array einzuf\xFCgen"}},"yaml-title":{name:"YAML-Titel",description:"F\xFCgt den Titel der Datei in das YAML-Frontmatter ein. Ruft den Titel basierend auf dem ausgew\xE4hlten Modus ab.","title-key":{name:"Titel-Schl\xFCssel",description:"Der YAML-Schl\xFCssel, der f\xFCr den Titel verwendet werden soll"},mode:{name:"Modus",description:"Die zum Abrufen des Titels zu verwendende Methode"}}},enums:{"Title Case":"Titel Gro\xDF- und Kleinschreibung","ALL CAPS":"GROSSBUCHSTABEN","First letter":"Anfangsbuchstabe",".":".",")":")",ERROR:"Fehler",TRACE:"Spur",DEBUG:"Debuggen",INFO:"Info",WARN:"Warnen",SILENT:"Leise",ascending:"aufsteigend",lazy:"lazy",Nothing:"Faul","Remove hashtag":"Hashtag entfernen","Remove whole tag":"Ganzes Tag entfernen",asterisk:"Sternchen",underscore:"unterstreichen",consistent:"folgerichtig","-":"-","*":"*","+":"+",space:"Raum","no space":"kein Platz",None:"Nichts","Ascending Alphabetical":"Aufsteigend Alphabetisch","Descending Alphabetical":"Absteigend Alphabetisch","multi-line":"mehrzeilig","single-line":"einzeilig","single string to single-line":"Single String zu Single-Line","single string to multi-line":"Single String zu Multi-Line","single string comma delimited":"Komma mit Trennzeichen f\xFCr eine Zeichenfolge","single string space delimited":"Einzelzeichenfolgenabstand durch Trennzeichen","single-line space delimited":"einzeiliger Abstand durch Trennzeichen","first-h1":"erste \xDCberschrift der Ebene 1","first-h1-or-filename-if-h1-missing":"Erste \xDCberschrift der Ebene 1 oder Dateiname, wenn die \xDCberschrift der Ebene 1 fehlt",filename:"Dateinamen","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var So={commands:{"lint-file":{name:"Lint the current file","error-message":"Lint File Error in File"},"lint-file-unless-ignored":{name:"Lint the current file unless ignored"},"lint-all-files":{name:"Lint all files in the vault","error-message":"Lint All Files Error in File","success-message":"Linted all files","errors-message-singular":"Linted all files and there was 1 error.","errors-message-plural":"Linted all files and there were {NUM} errors.","start-message":"This will edit all of your files and may introduce errors.","submit-button-text":"Lint All","submit-button-notice-text":"Linting all files..."},"lint-all-files-in-folder":{name:"Lint all files in the current folder","start-message":"This will edit all of your files in {FOLDER_NAME} including files in its subfolders which may introduce errors.","submit-button-text":"Lint All Files in {FOLDER_NAME}","submit-button-notice-text":"Linting all files in {FOLDER_NAME}...","error-message":"Lint All Files in Folder Error in File","success-message":"Linted all {NUM} files in {FOLDER_NAME}.","message-singular":"Linted all {NUM} files in {FOLDER_NAME} and there was 1 error.","message-plural":"Linted all {FILE_COUNT} files in {FOLDER_NAME} and there were {ERROR_COUNT} error."},"paste-as-plain-text":{name:"Paste as Plain Text & without Modifications"},"lint-file-pop-up-menu-text":{name:"Lint file"},"lint-folder-pop-up-menu-text":{name:"Lint folder"}},logs:{"plugin-load":"Loading plugin","plugin-unload":"Unloading plugin","folder-lint":"Linting folder ","linter-run":"Running linter","paste-link-warning":"aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.","see-console":"See console for more details.","unknown-error":"An unknown error occurred during linting.","moment-locale-not-found":"Trying to switch Moment.js locale to {MOMENT_LOCALE}, got {CURRENT_LOCALE}","file-change-lint-message-start":"Linted","pre-rules":"rules before regular rules","post-rules":"rules after regular rules","rule-running":"rules running","custom-regex":"custom regex rules","running-custom-regex":"Running Custom Regex","running-custom-lint-command":"Running Custom Lint Commands","custom-lint-duplicate-warning":'You cannot run the same command ("{COMMAND_NAME}") as a custom lint rule twice.',"custom-lint-error-message":"Custom Lint Command","disabled-text":"is disabled","run-rule-text":"Running","timing-key-not-found":"timing key '{TIMING_KEY}' does not exist in the timing info list, so it was ignored","milliseconds-abbreviation":"ms","invalid-date-format-error":"The format of the created date '{DATE}' could not be parsed or determined so the created date was left alone in '{FILE_NAME}'","invalid-delimiter-error-message":"delimiter is only allowed to be a single character","missing-footnote-error-message":"Footnote '{FOOTNOTE}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.","too-many-footnotes-error-message":"Footnote key '{FOOTNOTE_KEY}' has more than 1 footnote referencing it. Please update the footnotes so that there is only one footnote per footnote key.","wrapper-yaml-error":"error in the YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"unknown error: {ERROR_MESSAGE}","uneven-amount-of-quotes":"The instances of the `{QUOTE}` quote in the file is not even, so we cannot convert straight quotes to smart quotes"},"notice-text":{"empty-clipboard":"There is no clipboard content.","characters-added":"characters added","characters-removed":"characters removed","copy-to-clipboard-failed":"Failed to copy text to clipboard: "},"all-rules-option":"All","linter-title":"Linter","empty-search-results-text":"No settings match search","warning-text":"Warning","file-backup-text":"Make sure you have backed up your files.","copy-aria-label":"Copy",tabs:{names:{general:"General",custom:"Custom",yaml:"YAML",heading:"Heading",content:"Content",footnote:"Footnote",spacing:"Spacing",paste:"Paste",debug:"Debug"},"default-search-bar-text":"Search all settings",general:{"lint-on-save":{name:"Lint on save",description:"Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)"},"display-message":{name:"Display message on lint",description:"Display the number of characters changed after linting"},"lint-on-file-change":{name:"Lint on File Change",description:"When the a file is closed or a new file is swapped to, the previous file is linted."},"display-lint-on-file-change-message":{name:"Display Lint on File Change Message",description:"Displays a message when `Lint on File Change` occurs"},"folders-to-ignore":{name:"Folders to ignore",description:"Folders to ignore when linting all files or linting on save.","folder-search-placeholder-text":"Folder name","add-input-button-text":"Add another folder to ignore","delete-tooltip":"Delete"},"override-locale":{name:"Override locale",description:"Set this if you want to use a locale different from the default"},"same-as-system-locale":"Same as system ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML aliases section style",description:"The style of the YAML aliases section"},"yaml-tags-section-style":{name:"YAML tags section style",description:"The style of the YAML tags section"},"default-escape-character":{name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Remove Unnecessary Escape Characters when in Multi-Line Array Format",description:"Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary"},"number-of-dollar-signs-to-indicate-math-block":{name:"Number of Dollar Signs to Indicate Math Block",description:"The amount of dollar signs to consider the math content to be a math block instead of inline math"}},debug:{"log-level":{name:"Log Level",description:"The types of logs that will be allowed to be logged by the service. The default is ERROR."},"linter-config":{name:"Linter Config",description:"The contents of the data.json for the Linter as of the setting page loading"},"log-collection":{name:"Collect logs when linting on save and linting the current file",description:"Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports."},"linter-logs":{name:"Linter Logs",description:"The logs from the last `Lint on save` or the last lint current file run if enabled."}}},options:{"custom-command":{name:"Custom Commands",description:"Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**",warning:"When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","add-input-button-text":"Add new command","command-search-placeholder-text":"Obsidian command","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-replace":{name:"Custom Regex Replacement",description:"Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.",warning:"Use this with caution if you do not know regex. Also, please make sure that you do not use lookbehinds in your regex on iOS mobile as that will cause linting to fail since that is not supported on that platform.","add-input-button-text":"Add new regex replacement","regex-to-find-placeholder-text":"regex to find","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"regex to replace","label-placeholder-text":"label","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"}},rules:{"auto-correct-common-misspellings":{name:"Auto-correct Common Misspellings",description:"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words.","ignore-words":{name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting"}},"add-blockquote-indentation-on-paste":{name:"Add Blockquote Indentation on Paste",description:"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"},"blockquote-style":{name:"Blockquote Style",description:"Makes sure the blockquote style is consistent.",style:{name:"Style",description:"The style used on blockquote indicators"}},"capitalize-headings":{name:"Capitalize Headings",description:"Headings should be formatted with capitalization",style:{name:"Style",description:"The style of capitalization to use"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing"},"lowercase-words":{name:"Lowercase Words",description:"A comma separated list of words to keep lowercase"}},"compact-yaml":{name:"Compact YAML",description:"Removes leading and trailing blank lines in the YAML front matter.","inner-new-lines":{name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML"}},"consecutive-blank-lines":{name:"Consecutive blank lines",description:"There should be at most one consecutive blank line."},"convert-bullet-list-markers":{name:"Convert Bullet List Markers",description:"Converts common bullet list marker symbols to markdown list markers."},"convert-spaces-to-tabs":{name:"Convert Spaces to Tabs",description:"Converts leading spaces to tabs.",tabsize:{name:"Tabsize",description:"Number of spaces that will be converted to a tab"}},"emphasis-style":{name:"Emphasis Style",description:"Makes sure the emphasis style is consistent.",style:{name:"Style",description:"The style used to denote emphasized content"}},"empty-line-around-blockquotes":{name:"Empty Line Around Blockquotes",description:"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note: an empty line is either one less level of nesting for blockquotes or a newline character.**"},"empty-line-around-code-fences":{name:"Empty Line Around Code Fences",description:"Ensures that there is an empty line around code fences unless they start or end a document."},"empty-line-around-math-blocks":{name:"Empty Line Around Math Blocks",description:"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"empty-line-around-tables":{name:"Empty Line Around Tables",description:"Ensures that there is an empty line around github flavored tables unless they start or end a document."},"escape-yaml-special-characters":{name:"Escape YAML Special Characters",description:`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".'}},"file-name-heading":{name:"File Name Heading",description:"Inserts the file name as a H1 heading if no H1 heading exists."},"footnote-after-punctuation":{name:"Footnote after Punctuation",description:"Ensures that footnote references are placed after punctuation, not before."},"force-yaml-escape":{name:"Force YAML Escape",description:"Escapes the values for the specified YAML keys.","force-yaml-escape-keys":{name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays."}},"format-tags-in-yaml":{name:"Format Tags in YAML",description:"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."},"format-yaml-array":{name:"Format YAML Array",description:"Allows for the formatting of regular YAML arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific YAML formats. **Note: that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.**","alias-key":{name:"Format YAML aliases section",description:"Turns on formatting for the YAML aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results."},"tag-key":{name:"Format YAML tags section",description:"Turns on formatting for the YAML tags section."},"default-array-style":{name:"Default YAML array section style",description:"The style of other YAML arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`"},"default-array-keys":{name:"Format YAML array sections",description:"Turns on formatting for regular YAML arrays"},"force-single-line-array-style":{name:"Force key values to be single-line arrays",description:"Forces the YAML array for the new line separated keys to be in single-line format (leave empty to disable this option)"},"force-multi-line-array-style":{name:"Force key values to be multi-line arrays",description:"Forces the YAML array for the new line separated keys to be in multi-line format (leave empty to disable this option)"}},"header-increment":{name:"Header Increment",description:"Heading levels should only increment by one level at a time","start-at-h2":{name:"Start Header Increment at Heading Level 2",description:"Makes heading level 2 the minimum heading level in a file for header increment and shifts all headings accordingly so they increment starting with a level 2 heading."}},"heading-blank-lines":{name:"Heading blank lines",description:"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).",bottom:{name:"Bottom",description:"Insert a blank line after headings"},"empty-line-after-yaml":{name:"Empty Line Between YAML and Header",description:"Keep the empty line between the YAML frontmatter and header"}},"headings-start-line":{name:"Headings Start Line",description:"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."},"insert-yaml-attributes":{name:"Insert YAML attributes",description:"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.","text-to-insert":{name:"Text to insert",description:"Text to insert into the YAML frontmatter"}},"line-break-at-document-end":{name:"Line Break at Document End",description:"Ensures that there is exactly one line break at the end of a document."},"move-footnotes-to-the-bottom":{name:"Move Footnotes to the bottom",description:"Move all footnotes to the bottom of the document."},"move-math-block-indicators-to-their-own-line":{name:"Move Math Block Indicators to Their Own Line",description:"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"move-tags-to-yaml":{name:"Move Tags to YAML",description:"Move all tags to YAML frontmatter of the document.","how-to-handle-existing-tags":{name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter"},"tags-to-ignore":{name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**"}},"no-bare-urls":{name:"No Bare URLs",description:"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.","no-bare-uris":{name:"No Bare URIs",description:"Attempts to enclose bare URIs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}},"ordered-list-style":{name:"Ordered List Style",description:"Makes sure that ordered lists follow the style specified. **Note: that 2 spaces or 1 tab is considered to be an indentation level.**","number-style":{name:"Number Style",description:"The number style used in ordered list indicators"},"list-end-style":{name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator"}},"paragraph-blank-lines":{name:"Paragraph blank lines",description:"All paragraphs should have exactly one blank line both before and after."},"prevent-double-checklist-indicator-on-paste":{name:"Prevent Double Checklist Indicator on Paste",description:"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"},"prevent-double-list-item-indicator-on-paste":{name:"Prevent Double List Item Indicator on Paste",description:"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"},"proper-ellipsis-on-paste":{name:"Proper Ellipsis on Paste",description:"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"},"proper-ellipsis":{name:"Proper Ellipsis",description:"Replaces three consecutive dots with an ellipsis."},"quote-style":{name:"Quote Style",description:"Updates the quotes in the body content to be updated to the specified single and double quote styles.","single-quote-enabled":{name:"Enable `Single Quote Style`",description:"Specifies that the selected single quote style should be used."},"single-quote-style":{name:"Single Quote Style",description:"The style of single quotes to use."},"double-quote-enabled":{name:"Enable `Double Quote Style`",description:"Specifies that the selected double quote style should be used."},"double-quote-style":{name:"Double Quote Style",description:"The style of double quotes to use."}},"re-index-footnotes":{name:"Re-Index Footnotes",description:"Re-indexes footnote keys and footnote, based on the order of occurrence. **Note: This rule does _not_ work if there is more than one footnote for a key.**"},"remove-consecutive-list-markers":{name:"Remove Consecutive List Markers",description:"Removes consecutive list markers. Useful when copy-pasting list items."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Remove Empty Lines Between List Markers and Checklists",description:"There should not be any empty lines between list markers and checklists."},"remove-empty-list-markers":{name:"Remove Empty List Markers",description:"Removes empty list markers, i.e. list items without content."},"remove-hyphenated-line-breaks":{name:"Remove Hyphenated Line Breaks",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Remove Hyphens on Paste",description:"Removes hyphens from the text to paste"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Remove Leading or Trailing Whitespace on Paste",description:"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Remove Leftover Footnotes from Quote on Paste",description:"Removes any leftover footnote references for the text to paste"},"remove-link-spacing":{name:"Remove link spacing",description:"Removes spacing around link text."},"remove-multiple-blank-lines-on-paste":{name:"Remove Multiple Blank Lines on Paste",description:"Condenses multiple blank lines down into one blank line for the text to paste"},"remove-multiple-spaces":{name:"Remove Multiple Spaces",description:"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "},"remove-space-around-characters":{name:"Remove Space around Characters",description:"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). **Note: this may causes issues with markdown format in some cases.**","include-fullwidth-forms":{name:"Include Fullwidth Forms",description:'Include Fullwidth Forms Unicode block'},"include-cjk-symbols-and-punctuation":{name:"Include CJK Symbols and Punctuation",description:'Include CJK Symbols and Punctuation Unicode block'},"include-dashes":{name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)"},"other-symbols":{name:"Other symbols",description:"Other symbols to include"}},"remove-space-before-or-after-characters":{name:"Remove Space Before or After Characters",description:"Removes space before the specified characters and after the specified characters. **Note: this may causes issues with markdown format in some cases.**","characters-to-remove-space-before":{name:"Remove Space Before Characters",description:"Removes space before the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"},"characters-to-remove-space-after":{name:"Remove Space After Characters",description:"Removes space after the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"}},"remove-trailing-punctuation-in-heading":{name:"Remove Trailing Punctuation in Heading",description:"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).","punctuation-to-remove":{name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file."}},"remove-yaml-keys":{name:"Remove YAML Keys",description:"Removes the YAML keys specified","yaml-keys-to-remove":{name:"YAML Keys to Remove",description:"The YAML keys to remove from the YAML frontmatter with or without colons"}},"space-after-list-markers":{name:"Space after list markers",description:"There should be a single space after list markers and checkboxes."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Space between Chinese Japanese or Korean and English or numbers",description:"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Strong Style",description:"Makes sure the strong style is consistent.",style:{name:"Style",description:"The style used to denote strong/bolded content"}},"trailing-spaces":{name:"Trailing spaces",description:"Removes extra spaces after every line.","twp-space-line-break":{name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").'}},"two-spaces-between-lines-with-content":{name:"Two Spaces Between Lines with Content",description:"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items"},"unordered-list-style":{name:"Unordered List Style",description:"Makes sure that unordered lists follow the style specified.","list-style":{name:"List item style",description:"The list item style to use in unordered lists"}},"yaml-key-sort":{name:"YAML Key Sort",description:"Sorts the YAML keys based on the order and priority specified. **Note: may remove blank lines as well.**","yaml-key-priority-sort-order":{name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list"},"priority-keys-at-start-of-yaml":{name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter"},"yaml-sort-order-for-other-keys":{name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area"}},"yaml-timestamp":{name:"YAML Timestamp",description:"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.","date-created":{name:"Date Created",description:"Insert the file creation date"},"date-created-key":{name:"Date Created Key",description:"Which YAML key to use for creation date"},"force-retention-of-create-value":{name:"Force Date Created Key Value Retention",description:"Reuses the value in the YAML frontmatter for date created instead of the file metadata which is useful for preventing file metadata changes from causing the value to change to a different value."},"date-modified":{name:"Date Modified",description:"Insert the date the file was last modified"},"date-modified-key":{name:"Date Modified Key",description:"Which YAML key to use for modification date"},format:{name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Title Alias",description:"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.","preserve-existing-alias-section-style":{name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections"},"keep-alias-that-matches-the-filename":{name:"Keep alias that matches the filename",description:"Such aliases are usually redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array"}},"yaml-title":{name:"YAML Title",description:"Inserts the title of the file into the YAML frontmatter. Gets the title based on the selected mode.","title-key":{name:"Title Key",description:"Which YAML key to use for title"},mode:{name:"Mode",description:"The method to use to get the title"}}},enums:{"Title Case":"Title Case","ALL CAPS":"ALL CAPS","First letter":"First letter",".":".",")":")",ERROR:"error",TRACE:"trace",DEBUG:"debug",INFO:"info",WARN:"warn",SILENT:"silent",ascending:"ascending",lazy:"lazy",Nothing:"Nothing","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisk",underscore:"underscore",consistent:"consistent","-":"-","*":"*","+":"+",space:"space","no space":"no space",None:"None","Ascending Alphabetical":"Ascending Alphabetical","Descending Alphabetical":"Descending Alphabetical","multi-line":"multi-line","single-line":"single-line","single string to single-line":"single string to single-line","single string to multi-line":"single string to multi-line","single string comma delimited":"single string comma delimited","single string space delimited":"single string space delimited","single-line space delimited":"single-line space delimited","first-h1":"First H1","first-h1-or-filename-if-h1-missing":"First H1 or Filename if H1 is Missing",filename:"Filename","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var id={commands:{"lint-file":{name:"Analizar este archivo","error-message":"Error Analizando un Archivooccuri\xF3 en el Archivo"},"lint-file-unless-ignored":{name:"Analizar este archivo si no es ignorado"},"lint-all-files":{name:"Analizar todos los archivos en la b\xF3veda","error-message":"Error Analizando Todos los Archivos en Archivo","success-message":"Analiz\xF3 todos los archivos","errors-message-singular":"Analiz\xF3 todos los archivos y un error ocurri\xF3.","errors-message-plural":"Analiz\xF3 todos los archivos y {NUM} errores ocurrieron","start-message":"Esto editar\xE1 todos de sus archivos y es possible que introduzca errores","submit-button-text":"Analizar Todo","submit-button-notice-text":"Analizando todos los archivos..."},"lint-all-files-in-folder":{name:"Analizar todos los archivos en esta carpeta","start-message":"Esto editar\xE1 todos de sus archivos en {FOLDER_NAME} incluyendo los archivos que existen en las subcarpetas y es possible que introduzca errores.","submit-button-text":"Analizar Todos los Archivos en {FOLDER_NAME}","submit-button-notice-text":"Analizando todos los archivos en {FOLDER_NAME}...","error-message":"Error Analizando Todos los Archivos en Carpeta en Archivo","success-message":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME}.","message-singular":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME} y un error ocurri\xF3.","message-plural":"Analiz\xF3 los {FILE_COUNT} archivos en {FOLDER_NAME} y {ERROR_COUNT} errores ocurrieron."},"paste-as-plain-text":{name:"Pegar como texto sin formato y sin modificaciones"},"lint-file-pop-up-menu-text":{name:"Analizar el archivo"},"lint-folder-pop-up-menu-text":{name:"Analizar la carpeta"}},logs:{"plugin-load":"Cargando el programa adicional","plugin-unload":"Descargando el programa adicional","folder-lint":"Analizando la carpeta ","linter-run":"Usando linter","paste-link-warning":"abort\xF3 lint de pagar porque el contento del portapapeles es un enlace y no lo hizo para evitar conflictos con otros programas adicionales que modifican lo que hace el pegar.","see-console":"Consulte la consola para obtener m\xE1s detalles.","unknown-error":"Se ha producido un error desconocido durante el linting.","moment-locale-not-found":"Intentando cambiar la zona de Moment.js a {MOMENT_LOCALE}, el resulto fue {CURRENT_LOCALE}","file-change-lint-message-start":"Analiz\xF3","pre-rules":"Las reglas antes de las reglas normales","post-rules":"las reglas despu\xE9s de las reglas normales","rule-running":"usando las reglas","custom-regex":"las reglas regex personalizadas","running-custom-regex":"Usando regex personalizada","running-custom-lint-command":"Usando comandos de lint personalizados","custom-lint-duplicate-warning":'No se puede usar el mismo comando ("{COMMAND_NAME}") dos veces como un comando de lint.',"custom-lint-error-message":"El commando de lint personalizado","disabled-text":"es inhabilitado","run-rule-text":"Usando","timing-key-not-found":"clave de ritmo '{TIMING_KEY}' no ya existe en la lista de claves de ritmo y fue ignorado por eso","milliseconds-abbreviation":"ms","invalid-date-format-error":"No se pudo analizar ni identificar el formato de la fech de creaci\xF3n `{DATE}` entonces la fecha de creaci\xF3n se dej\xF3 sola en `{FILE_NAME}`","invalid-delimiter-error-message":"El delimitador solo puede ser de un solo car\xE1cter","missing-footnote-error-message":"La nota al pie `{FOOTNOTE}` no tiene ninguna referencia de nota al pie correspondiente antes del contenido de la nota al pie y no se puede procesar. Aseg\xFArese de que todas las notas a pie de p\xE1gina tengan una referencia correspondiente antes del contenido de la nota al pie de p\xE1gina.","too-many-footnotes-error-message":"La clave de nota al pie '{FOOTNOTE_KEY}' tiene m\xE1s de 1 nota al pie que hace referencia a ella. Actualice las notas al pie para que solo haya una nota al pie por clave de nota al pie.","wrapper-yaml-error":"hubo un error en el YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"huno un error desconocido: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Las instancias de la cita `{QUOTE}` en el archivo no son pares, por lo que no podemos convertir las comillas rectas en comillas tipogr\xE1ficas."},"notice-text":{"empty-clipboard":"No hay contenido del portapapeles.","characters-added":"Caracteres a\xF1adidos","characters-removed":"Caracteres eliminados"},"all-rules-option":"Todo","linter-title":"Linter","empty-search-results-text":"No hay configuraci\xF3n que coincida con la b\xFAsqueda","warning-text":"Advertencia","file-backup-text":"Aseg\xFArese de haber realizado una copia de seguridad de sus archivos.","copy-aria-label":"Copiar",tabs:{names:{general:"General",custom:"Personalizado",yaml:"YAML",heading:"Encabezado",content:"Contenido",footnote:"Notas al pie",spacing:"Espacio en blanco",paste:"Pegar",debug:"Depurar"},"default-search-bar-text":"Buscar en todos los ajustes",general:{"lint-on-save":{name:"Analizar en guardar",description:"Analizar el archivo en el guardado manual (cuando se presiona `Ctrl + S` o cuando se ejecuta `:w` mientras se usan combinaciones de claves de vim)"},"display-message":{name:"Mostrar mensaje en analizar",description:"Mostrar el n\xFAmero de caracteres modificados despu\xE9s de analizar"},"folders-to-ignore":{name:"Carpetas para omitir",description:"Carpetas que se deben omitir al analizar todos los archivos o al guardar en l\xEDnea.","folder-search-placeholder-text":"El nombre de la carpeta","add-input-button-text":"Agregar otra carpeta para ignorar","delete-tooltip":"Borrar"},"lint-on-file-change":{name:"Analizar archivo en cambiar",description:"Cuando se cierra un archivo o se cambia a un nuevo archivo, el archivo anterior se analiza."},"display-lint-on-file-change-message":{name:"Mostrar mensaje en cambiar el archivo",description:"Muestra un mensaje cuando se produce `Analizar archivo en cambiar`"},"override-locale":{name:"Anular configuraci\xF3n regional",description:"Establezca esta opci\xF3n si desea utilizar una configuraci\xF3n regional diferente de la predeterminada"},"same-as-system-locale":"Igual que el sistema ({SYS_LOCALE})","yaml-aliases-section-style":{name:"Estilo de secci\xF3n de alias de YAML",description:"El estilo de la secci\xF3n de alias de YAML"},"yaml-tags-section-style":{name:"Estilo de secci\xF3n de etiquetas de YAML",description:"El estilo de la secci\xF3n de etiquetas de YAML"},"default-escape-character":{name:"Car\xE1cter de escape predeterminado",description:"El car\xE1cter predeterminado que se va a usar para escapar de los valores YAML cuando no hay comillas simples y comillas dobles."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Eliminaci\xF3n de caracteres de escape innecesarios cuando est\xE1 en formato de matriz multil\xEDnea",description:"Los caracteres de escape para matrices de YAML multil\xEDnea no necesitan el mismo escape que las matrices de una sola l\xEDnea, por lo que cuando est\xE1n en formato multil\xEDnea, elimine los escapes adicionales que no son necesarios"},"number-of-dollar-signs-to-indicate-math-block":{name:"N\xFAmero de signos de d\xF3lar para indicar el bloque matem\xE1tico",description:"La cantidad de signos de d\xF3lar para considerar el contenido matem\xE1tico como un bloque matem\xE1tico en lugar de matem\xE1ticas en l\xEDnea"}},debug:{"log-level":{name:"Nivel de registro",description:"Los tipos de registros que el servicio permitir\xE1 registrar. El valor predeterminado es error."},"linter-config":{name:"Configuraci\xF3n de Linter",description:"El contenido del archivo data.json para Linter a partir de la carga de la p\xE1gina de configuraci\xF3n"},"log-collection":{name:"Recopilar registros al activar y desactivar el archivo actual",description:"Contin\xFAa y recopila registros cuando `Analizar en guardar` y analizar el archivo actual. Estos registros pueden ser \xFAtiles para depurar y crear informes de errores."},"linter-logs":{name:"Registros de Linter",description:"Los registros del \xFAltimo `Analizar en guardar` o del \xFAltimo archivo actual de analizar se ejecutan si est\xE1n habilitados."}}},options:{"custom-command":{name:"Comandos personalizados",description:"Los comandos personalizados son comandos de Obsidian que se ejecutan despu\xE9s de que Linter termina de ejecutar sus reglas regulares. Esto significa que no se ejecutan antes de que se ejecute la l\xF3gica de marca de tiempo YAML, por lo que pueden hacer que la marca de tiempo de YAML se active en la siguiente ejecuci\xF3n del Linter. Solo puede seleccionar un comando de Obsidian una vez. **_Note que esto actualmente solo funciona para analizar el archivo actual._**",warning:"Al seleccionar una opci\xF3n, aseg\xFArese de seleccionar la opci\xF3n usando el rat\xF3n o presionando la clave Intro. Es posible que otros m\xE9todos de selecci\xF3n no funcionen y solo se guardar\xE1n las selecciones de un comando de Obsidian real o una cadena vac\xEDa.","add-input-button-text":"Agregar nuevo comando","command-search-placeholder-text":"Comando de Obsidian","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"},"custom-replace":{name:"Reemplazo regex personalizado",description:"El reemplazo de regex personalizado se puede usar para reemplazar cualquier cosa que coincida con el valor de b\xFAsqueda de regex con el valor de reemplazo. Los valores de reemplazo y b\xFAsqueda deber\xE1n ser valores regex v\xE1lidos.",warning:"Use esto con precauci\xF3n si no conoce regex. Adem\xE1s, aseg\xFArese de no usar lookbehinds en su regex en dispositivos m\xF3viles iOS, ya que eso har\xE1 que falle analizar ya que no es compatible con esa plataforma.","add-input-button-text":"Agregar nuevo reemplazo de regex","regex-to-find-placeholder-text":"Regex para encontrar","flags-placeholder-text":"Marcas","regex-to-replace-placeholder-text":"Regex para reemplazar","label-placeholder-text":"etiqueta","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"}},rules:{"auto-correct-common-misspellings":{name:"Correcci\xF3n autom\xE1tica de errores ortogr\xE1ficos comunes",description:"Utiliza un diccionario de errores ortogr\xE1ficos comunes para convertirlos autom\xE1ticamente a su ortograf\xEDa correcta. Consulte [mapa de autocorrecci\xF3n](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) para obtener la lista completa de palabras corregidas autom\xE1ticamente.","ignore-words":{name:"Ignorar palabras",description:"Una lista separada por comas de palabras en min\xFAsculas para ignorar al corregir autom\xE1ticamente"}},"add-blockquote-indentation-on-paste":{name:"Agregar sangr\xEDa de blockquote en pegar",description:"Agrega blockquotes a todas menos a la primera l\xEDnea, cuando el cursor est\xE1 en una l\xEDnea blockquote/callout durante el pegado"},"blockquote-style":{name:"Estilo de cotizaci\xF3n en bloque",description:"Se asegura de que el estilo de la cita en bloque sea consistente.",style:{name:"Estilo",description:"El estilo utilizado en los indicadores de cotizaci\xF3n en bloque"}},"capitalize-headings":{name:"Poner may\xFAsculas en los encabezados",description:"Los encabezados deben estar formateados con may\xFAsculas",style:{name:"Estilo",description:"El estilo de may\xFAsculas que se va a utilizar"},"ignore-case-words":{name:"Ignorar palabras en may\xFAsculas y min\xFAsculas",description:"Solo aplique el estilo de may\xFAsculas y min\xFAsculas a las palabras que est\xE9n todas en min\xFAsculas"},"ignore-words":{name:"Ignorar palabras",description:"Una lista de palabras separadas por comas para ignorar al poner en may\xFAsculas"},"lowercase-words":{name:"Palabras en min\xFAsculas",description:"Una lista de palabras separadas por comas para mantener min\xFAsculas"}},"compact-yaml":{name:"YAML compacto",description:"Elimina las l\xEDneas en blanco iniciales y finales en la materia frontal de YAML.","inner-new-lines":{name:"Nuevas l\xEDneas internas",description:"Quitar nuevas l\xEDneas que no est\xE9n al principio o al final del YAML"}},"consecutive-blank-lines":{name:"L\xEDneas en blanco consecutivas",description:"Debe haber como m\xE1ximo una l\xEDnea en blanco consecutiva."},"convert-bullet-list-markers":{name:"Convertir marcadores de lista de vi\xF1etas",description:"Convierte s\xEDmbolos de marcador de lista de vi\xF1etas comunes en marcadores de lista de rebajas."},"convert-spaces-to-tabs":{name:"Convertir espacios en pesta\xF1as",description:"Convierte los espacios iniciales en pesta\xF1as.",tabsize:{name:"Tama\xF1o de la pesta\xF1a",description:"N\xFAmero de espacios que se convertir\xE1n en una pesta\xF1a"}},"emphasis-style":{name:"Estilo de \xE9nfasis",description:"Se asegura de que el estilo de \xE9nfasis sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar el contenido enfatizado"}},"empty-line-around-blockquotes":{name:"L\xEDnea vac\xEDa alrededor de blockquotes",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de blockquotes a menos que inicien o finalicen un documento. **Tenga en cuenta que una l\xEDnea vac\xEDa es un nivel menos de anidamiento para blockquotes o un car\xE1cter de nueva l\xEDnea.**"},"empty-line-around-code-fences":{name:"L\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo",description:"Garantiza que haya una l\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo a menos que inicien o finalicen un documento."},"empty-line-around-math-blocks":{name:"L\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"empty-line-around-tables":{name:"L\xEDnea vac\xEDa alrededor de las tablas",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de las tablas con sabor a github a menos que inicien o finalicen un documento."},"escape-yaml-special-characters":{name:"Evitar los caracteres especiales de YAML",description:`Escapa dos puntos con un espacio despu\xE9s de ellos (:), comillas simples (') y comillas dobles (") en YAML.`,"try-to-escape-single-line-arrays":{name:"Intente escapar las matrices de una sola l\xEDnea",description:'Intenta escapar de los valores de matriz suponiendo que una matriz comienza con "[", termina con "]" y tiene elementos que est\xE1n delimitados por ",".'}},"file-name-heading":{name:"Encabezado de nombre de archivo",description:"Inserta el nombre de archivo como un encabezado H1 si no existe ning\xFAn encabezado H1."},"footnote-after-punctuation":{name:"Nota al pie despu\xE9s de la puntuaci\xF3n",description:"Asegura que las referencias de notas al pie se coloquen despu\xE9s de la puntuaci\xF3n, no antes."},"force-yaml-escape":{name:"Forzar escape de YAML",description:"Escapa los valores de las claves YAML especificadas.","force-yaml-escape-keys":{name:"Forzar escape de YAML en las claves",description:"Utiliza el car\xE1cter de escape de YAML en las claves de YAML especificadas separadas por un nuevo car\xE1cter de l\xEDnea si a\xFAn no est\xE1 escapado. No lo use en matrices de YAML."}},"format-tags-in-yaml":{name:"Dar formato a las etiquetas de formato en YAML",description:"Elimine los hashtags de las etiquetas en el frontmatter del YAML, ya que hacen que las etiquetas no sean v\xE1lidas."},"format-yaml-array":{name:"Dar formato a las matrices de YAML",description:"Permite el formato de matrices regulares de YAML como multil\xEDnea o de una sola l\xEDnea y las `etiquetas` y `alias` pueden tener algunos formatos espec\xEDficos de YAML de Obsidian. Tenga en cuenta que una sola cadena a una sola l\xEDnea pasa de una sola entrada de cadena a una matriz de una sola l\xEDnea si hay m\xE1s de 1 entrada presente. Lo mismo es cierto para una sola cadena a multil\xEDnea, excepto que se convierte en una matriz multil\xEDnea.","alias-key":{name:"Dar formato a la secci\xF3n de alias de YAML",description:"Activa el formato para la secci\xF3n de alias YAML. No debe habilitar esta opci\xF3n junto con la regla `Alias de t\xEDtulo YAML`, ya que es posible que no funcionen bien juntos o que tengan diferentes estilos de formato seleccionados que causen resultados inesperados."},"tag-key":{name:"Dar formato a la secci\xF3n de etiquetas de YAML",description:"Activa el formato para la secci\xF3n de etiquetas de YAML."},"default-array-style":{name:"Estilo de secci\xF3n de matriz predeterminado de YAML",description:"El estilo de otras matrices de YAML que no son `etiquetas`, `alias` o en `Forzar valores de clave para que sean matrices de una sola l\xEDnea` y `Forzar valores de clave para que sean matrices multil\xEDnea`"},"default-array-keys":{name:"Dar formato a las secciones de matrices de YAML",description:"Activa el formato para matrices normales de YAML"},"force-single-line-array-style":{name:"Forzar que los valores de clave sean matrices de una sola l\xEDnea",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato de una sola l\xEDnea (deje vac\xEDo para deshabilitar esta opci\xF3n)"},"force-multi-line-array-style":{name:"Forzar que los valores de las claves sean matrices multil\xEDneas",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato multil\xEDnea (deje vac\xEDa para deshabilitar esta opci\xF3n)"}},"header-increment":{name:"Incremento de encabezado",description:"Los niveles de encabezado solo deben aumentar en un nivel a la vez","start-at-h2":{name:"Iniciar el incremento de encabezado en el nivel de encabezado 2",description:"Hace que el nivel de encabezado 2 sea el nivel de t\xEDtulo m\xEDnimo en un archivo para el incremento de encabezado y desplaza todos los encabezados en consecuencia para que se incrementen a partir de un encabezado de nivel 2."}},"heading-blank-lines":{name:"L\xEDneas en blanco de encabezado",description:"Todos los encabezados tienen una l\xEDnea en blanco antes y despu\xE9s (excepto cuando el encabezado est\xE1 al principio o al final del documento).",bottom:{name:"Abajo",description:"Insertar una l\xEDnea en blanco despu\xE9s de los encabezados"},"empty-line-after-yaml":{name:"L\xEDnea vac\xEDa entre el YAML y el encabezado",description:"Mantenga la l\xEDnea vac\xEDa entre el frontmatter del YAML y el encabezado"}},"headings-start-line":{name:"Comenzar los encabezados al principio de la l\xEDnea",description:"Los encabezados que no inician una l\xEDnea tendr\xE1n su espacio en blanco anterior eliminado para asegurarse de que se reconozcan como encabezados."},"insert-yaml-attributes":{name:"Insertar atributos de YAML",description:"Inserta los atributos especificados de YAML en el frontmatter del YAML. Coloque cada atributo en una sola l\xEDnea.","text-to-insert":{name:"Texto a insertar",description:"Texto para insertar en el frontmatter del YAML"}},"line-break-at-document-end":{name:"Salto de l\xEDnea al final del documento",description:"Asegura que haya exactamente un salto de l\xEDnea al final de un documento."},"move-footnotes-to-the-bottom":{name:"Mover las notas al pie a la parte inferior",description:"Mueva todas las notas al pie de p\xE1gina a la parte inferior del documento."},"move-math-block-indicators-to-their-own-line":{name:"Mover los indicadores de bloques matem\xE1ticos a su propia l\xEDnea",description:"Mueva todos los indicadores de bloques matem\xE1ticos iniciales y finales a sus propias l\xEDneas usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"move-tags-to-yaml":{name:"Mover etiquetas a YAML",description:"Mueva todas las etiquetas al frontmatter del YAML del documento.","how-to-handle-existing-tags":{name:"Operaci\xF3n de etiqueta corporal",description:"Lo qur se debe hacer con las etiquetas no ignoradas en el cuerpo del archivo una vez que se han movido al frontmatter"},"tags-to-ignore":{name:"Etiquetas para omitir",description:"Las etiquetas que no se mover\xE1n a la matriz de etiquetas ni se eliminar\xE1n del contenido del cuerpo si est\xE1 habilitado `Eliminar el hashtag de las etiquetas en el cuerpo del contenido`. Cada etiqueta debe estar en una nueva l\xEDnea y sin el `#`. **Aseg\xFArese de no incluir el hashtag en el nombre de la etiqueta.**"}},"no-bare-urls":{name:"Sin URL desnuda",description:"Encierra las direcciones URL desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles.","no-bare-uris":{name:"Sin URI desnuda",description:"Encierra las direcciones URI desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles."}},"ordered-list-style":{name:"Estilo de lista ordenada",description:"Se asegura de que las listas ordenadas siguen el estilo especificado. Tenga en cuenta que 2 espacios o 1 tabulaci\xF3n se considera un nivel de sangr\xEDa.","number-style":{name:"Estilo num\xE9rico",description:"El estilo num\xE9rico utilizado en los indicadores de lista ordenada"},"list-end-style":{name:"Estilo final del indicador de lista ordenada",description:"El car\xE1cter final de un indicador de lista ordenada"}},"paragraph-blank-lines":{name:"L\xEDneas en blanco del p\xE1rrafo",description:"Todos los p\xE1rrafos deben tener exactamente una l\xEDnea en blanco antes y despu\xE9s."},"prevent-double-checklist-indicator-on-paste":{name:"Evitar el indicador de doble lista de verificaci\xF3n en pegar",description:"Elimina el indicador de lista de verificaci\xF3n inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista de verificaci\xF3n"},"prevent-double-list-item-indicator-on-paste":{name:"Prevenir el indicador de elemento de lista doble al pegar",description:"Elimina el indicador de lista inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista"},"proper-ellipsis-on-paste":{name:"Puntos suspensivos adecuados al pegar",description:"Reemplaza tres puntos consecutivos por puntos suspensivos aunque tengan un espacio entre ellos en el texto a pegar"},"proper-ellipsis":{name:"Puntos suspensivos propios",description:"Reemplaza tres puntos consecutivos con puntos suspensivos."},"quote-style":{name:"Estilo de cotizaci\xF3n",description:"Actualiza las comillas en el contenido del cuerpo para que se actualicen a los estilos de comillas simples y dobles especificados.","single-quote-enabled":{name:"Habilitar `Estilo de comillas simples`",description:"Especifica que se debe utilizar el estilo de comillas simples seleccionado."},"single-quote-style":{name:"Estilo de comillas simples",description:"El estilo de las comillas simples a utilizar."},"double-quote-enabled":{name:"Habilitar `Estilo de comillas dobles`",description:"Especifica que se debe utilizar el estilo de comillas dobles seleccionado."},"double-quote-style":{name:"Estilo de comillas dobles",description:"El estilo de comillas dobles a utilizar."}},"re-index-footnotes":{name:"Volver a indexar notas al pie",description:"Vuelve a indexar las notas al pie de p\xE1gina y las notas al pie, seg\xFAn el orden de aparici\xF3n (NOTA: esta regla *no* funciona si hay m\xE1s de una nota al pie para una clave)."},"remove-consecutive-list-markers":{name:"Eliminar marcadores de lista consecutiva",description:"Elimina marcadores de lista consecutivos. \xDAtil al copiar y pegar elementos de la lista."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Eliminar l\xEDneas vac\xEDas entre marcadores de lista y listas de verificaci\xF3n",description:"No debe haber l\xEDneas vac\xEDas entre los marcadores de lista y las listas de verificaci\xF3n."},"remove-empty-list-markers":{name:"Eliminar marcadores de lista vac\xEDa",description:"Elimina marcadores de listas vac\xEDas, es decir, lista de elementos sin contenido."},"remove-hyphenated-line-breaks":{name:"Eliminar saltos de l\xEDnea con gui\xF3n",description:"Elimina los saltos de l\xEDnea con gui\xF3n. \xDAtil al pegar texto de libros de texto."},"remove-hyphens-on-paste":{name:"Eliminar guiones al pegar",description:"Elimina guiones del texto al pegar"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Eliminar espacios en blanco iniciales o finales al pegar",description:"Elimina cualquier espacio en blanco inicial que no sea una pesta\xF1a y todos los espacios en blanco finales para que el texto se pegue"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Eliminar las notas al pie sobrantes de la cita al pegar",description:"Elimina las referencias de notas al pie sobrantes para que el texto se pegue"},"remove-link-spacing":{name:"Quitar el espacio entre enlaces",description:"Elimina el espacio alrededor del texto del enlace."},"remove-multiple-blank-lines-on-paste":{name:"Eliminar varias l\xEDneas en blanco al pegar",description:"Condensa varias l\xEDneas en blanco en una l\xEDnea en blanco para que el texto se pegue"},"remove-multiple-spaces":{name:"Quitar varios espacios",description:"Elimina dos o m\xE1s espacios consecutivos. Ignora los espacios al principio y al final de la l\xEDnea."},"remove-space-around-characters":{name:"Quitar el espacio alrededor de los caracteres",description:"Garantiza que determinados caracteres no est\xE9n rodeados de espacios en blanco (ya sean espacios individuales o tabulaciones). Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","include-fullwidth-forms":{name:"Incluir formularios de ancho completo",description:'Incluir bloque Unicode de formularios de ancho completo'},"include-cjk-symbols-and-punctuation":{name:"Incluir s\xEDmbolos de CJK y puntuaci\xF3n",description:'Incluir Bloque Unicode de s\xEDmbolos y puntuaci\xF3n de CJK'},"include-dashes":{name:"Incluir guiones",description:"Incluir gui\xF3n corto (\u2013) y gui\xF3n largo (\u2014)"},"other-symbols":{name:"Otros s\xEDmbolos",description:"Otros s\xEDmbolos para incluir"}},"remove-space-before-or-after-characters":{name:"Quitar el espacio antes o despu\xE9s de los caracteres",description:"Elimina el espacio antes de los caracteres especificados y despu\xE9s de los caracteres especificados. Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","characters-to-remove-space-before":{name:"Eliminar espacio antes de los caracteres",description:"Elimina el espacio antes de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"},"characters-to-remove-space-after":{name:"Eliminar espacio despu\xE9s de los caracteres",description:"Elimina el espacio despu\xE9s de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"}},"remove-trailing-punctuation-in-heading":{name:"Eliminar la puntuaci\xF3n final en el encabezado",description:"Elimina la puntuaci\xF3n especificada al final de los encabezados, asegur\xE1ndose de ignorar el punto y coma al final de [referencias de entidades de HTML](https://es.wikipedia.org/wiki/Anexo:Referencias_a_entidades_de_caracteres_XML_y_HTML).","punctuation-to-remove":{name:"Puntuaci\xF3n final",description:"La puntuaci\xF3n final que se eliminar\xE1 de los encabezados del archivo."}},"remove-yaml-keys":{name:"Eliminar claves de YAML",description:"Elimina las claves especificadas de YAML","yaml-keys-to-remove":{name:"Claves de YAML para eliminar",description:"Las claves de YAML para eliminar del frontmatter del YAML con o sin dos puntos"}},"space-after-list-markers":{name:"Espacio despu\xE9s de los marcadores de lista",description:"Debe haber un solo espacio despu\xE9s de los marcadores de lista y las casillas de verificaci\xF3n."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Espacio entre chino japon\xE9s o coreano e ingl\xE9s o n\xFAmeros",description:"Garantiza que el chino, el japon\xE9s o el coreano y el ingl\xE9s o los n\xFAmeros est\xE9n separados por un solo espacio. Sigue estas [directrices](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Estilo fuerte",description:"Se asegura de que el estilo fuerte sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar contenido fuerte/en negrita"}},"trailing-spaces":{name:"Espacios finales",description:"Elimina espacios adicionales despu\xE9s de cada l\xEDnea.","twp-space-line-break":{name:"Salto de l\xEDnea de dos espacios",description:'Ignore dos espacios seguidos de un salto de l\xEDnea ("Regla de dos espacios").'}},"two-spaces-between-lines-with-content":{name:"Dos espacios entre l\xEDneas con contenido",description:"Se asegura de que se agreguen dos espacios al final de las l\xEDneas con contenido que contin\xFAa en la siguiente l\xEDnea para p\xE1rrafos, comillas y elementos de lista"},"unordered-list-style":{name:"Estilo de lista desordenada",description:"Se asegura de que las listas desordenadas sigan el estilo especificado.","list-style":{name:"Estilo de elemento de lista",description:"El estilo de elemento de lista para usar en listas desordenadas"}},"yaml-key-sort":{name:"Clasificaci\xF3n de clave de YAML",description:"Ordena las claves de YAML seg\xFAn el orden y la prioridad especificados. Nota: tambi\xE9n puede eliminar las l\xEDneas en blanco.","yaml-key-priority-sort-order":{name:"Orden de clasificaci\xF3n de prioridad de clave de YAML",description:"El orden en el que se ordenan las claves con una en cada l\xEDnea donde se ordena en el orden que se encuentra en la lista"},"priority-keys-at-start-of-yaml":{name:"Claves de prioridad al inicio del YAML",description:"El orden de clasificaci\xF3n de prioridad clave de YAML se coloca al comienzo del frontmatter del YAML"},"yaml-sort-order-for-other-keys":{name:"Orden de clasificaci\xF3n de YAML para otras claves",description:"La forma en que ordenar las claves que no se encuentran en el \xE1rea de texto `Orden de clasificaci\xF3n de prioridad de clave de YAML`"}},"yaml-timestamp":{name:"Marca de tiempo de YAML",description:"Lleve un registro de la fecha en que se edit\xF3 el archivo por \xFAltima vez en el frente del YAML. Obtiene las fechas de los metadatos del archivo.","date-created":{name:"Fecha de creaci\xF3n",description:"Inserte la fecha de creaci\xF3n del archivo"},"date-created-key":{name:"Clave de fecha de creaci\xF3n",description:"La clave de YAML para usar para la fecha de creaci\xF3n"},"force-retention-of-create-value":{name:"Forzar la fecha de creaci\xF3n de la retenci\xF3n del valor clave",description:"Reutiliza el valor en el frontmatter del YAML para la fecha de creaci\xF3n en lugar de los metadatos del archivo, lo que es \xFAtil para evitar que los cambios en los metadatos del archivo provoquen que el valor cambie a un valor diferente."},"date-modified":{name:"Fecha modificada",description:"Inserte la fecha en que se modific\xF3 el archivo por \xFAltima vez"},"date-modified-key":{name:"Clave de fecha modificada",description:"La clave de YAML para usar para la fecha de modificaci\xF3n"},format:{name:"Formato",description:"Formato de fecha de Moment a usar (ver [Opciones de formato de Moment](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"Alias de t\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en la secci\xF3n de alias de YAML frontmatter. Obtiene el t\xEDtulo del primer H1 o nombre de archivo.","preserve-existing-alias-section-style":{name:"Conservar el estilo de secci\xF3n de alias existente",description:"Si se establece, la configuraci\xF3n `Estilo de secci\xF3n de alias de YAML` se aplica solo a las secciones reci\xE9n creadas"},"keep-alias-that-matches-the-filename":{name:"Mantenga el alias que coincida con el nombre del archivo",description:"Estos alias suelen ser redundantes."},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use la clave de YAML `linter-yaml-title-alias` para ayudar con los cambios de nombre de archivo y encabezado",description:"Si se establece, cuando cambia el primer encabezado H1 o cambia el nombre de archivo si el primer H1 no est\xE1 presente, el alias anterior almacenado en esta clave se reemplazar\xE1 con el nuevo valor en lugar de simplemente insertar una nueva entrada en la matriz de alias."}},"yaml-title":{name:"T\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en el frontmatter de YAML. Obtiene el t\xEDtulo seg\xFAn el modo seleccionado.","title-key":{name:"Clave de t\xEDtulo",description:"La clave de YAML para usar para el t\xEDtulo"},mode:{name:"Modo",description:"El m\xE9todo a utilizar para obtener el t\xEDtulo"}}},enums:{"Title Case":"Titulo del Caso","ALL CAPS":"TODO MAY\xDASCULAS","First letter":"Primera letra",".":".",")":")",ERROR:"error",TRACE:"trazar",DEBUG:"depurar",INFO:"informaci\xF3n",WARN:"advertencia",SILENT:"silencio",ascending:"ascendente",lazy:"perezoso",Nothing:"nada","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisco",underscore:"guion bajo",consistent:"congruente","-":"-","*":"*","+":"+",space:"espacio","no space":"sin espacio",None:"nada","Ascending Alphabetical":"Ascendente alfab\xE9tico","Descending Alphabetical":"Descendiente alfab\xE9tico","multi-line":"multil\xEDnea","single-line":"linea sola","single string to single-line":"una sola cadena a una sola l\xEDnea","single string to multi-line":"cadena \xFAnica a multil\xEDnea","single string comma delimited":"cadena \xFAnica delimitada por comas","single string space delimited":"espacio de una sola cadena delimitado","single-line space delimited":"espacio de una sola l\xEDnea delimitado","first-h1":"primer encabezado de nivel 1","first-h1-or-filename-if-h1-missing":"primer encabezado de nivel 1 o nombre de archivo si falta el encabezado de primer nivel 1",filename:"nombre del archivo","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var td={};var nd={};var rd={};var ad={};var sd={};var od={};var ld={};var cd={};var dd={};var ud={};var pd={};var md={};var gd={};var hd={};var ka={commands:{"lint-file":{name:"Ge\xE7erli dosyay\u0131 lintle","error-message":"Dosyada Lintleme Hatas\u0131"},"lint-file-unless-ignored":{name:"Yoksay\u0131lmad\u0131k\xE7a ge\xE7erli dosyay\u0131 lintle"},"lint-all-files":{name:"Kasadaki t\xFCm dosyalar\u0131 lintle","error-message":"Dosyada T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131","success-message":"T\xFCm dosyalar lintlendi","errors-message-singular":"T\xFCm dosyalar lintlendi ve 1 hata vard\u0131.","errors-message-plural":"T\xFCm dosyalar lintlendi ve {NUM} hata vard\u0131.","start-message":"Bu, t\xFCm dosyalar\u0131n\u0131z\u0131 d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"T\xFCm\xFCn\xFC Lintle","submit-button-notice-text":"T\xFCm dosyalar lintleniyor..."},"lint-all-files-in-folder":{name:"Ge\xE7erli klas\xF6rdeki t\xFCm dosyalar\u0131 lintle","start-message":"Bu, {FOLDER_NAME} dahilindeki t\xFCm dosyalar\u0131n\u0131z\u0131 ve alt klas\xF6rlerini d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"{FOLDER_NAME} i\xE7indeki T\xFCm Dosyalar\u0131 Lintle","submit-button-notice-text":"{FOLDER_NAME} i\xE7indeki t\xFCm dosyalar lintleniyor...","error-message":"Klas\xF6rdeki T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131 Dosyada","success-message":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi.","message-singular":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi ve 1 hata vard\u0131.","message-plural":"{FOLDER_NAME} i\xE7indeki t\xFCm {FILE_COUNT} dosya lintlendi ve {ERROR_COUNT} hata vard\u0131."},"paste-as-plain-text":{name:"D\xFCz Metin Olarak & Modifikasyonsuz Yap\u0131\u015Ft\u0131r"},"lint-file-pop-up-menu-text":{name:"Dosyay\u0131 lintle"},"lint-folder-pop-up-menu-text":{name:"Klas\xF6r\xFC lintle"}},logs:{"plugin-load":"Eklenti y\xFCkleniyor","plugin-unload":"Eklenti kald\u0131r\u0131l\u0131yor","folder-lint":"Klas\xF6r lintleniyor ","linter-run":"Lintleme \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","paste-link-warning":"pano i\xE7eri\u011Fi bir link oldu\u011Fu ve yap\u0131\u015Ft\u0131rmay\u0131 de\u011Fi\u015Ftiren di\u011Fer eklentilerle \xE7ak\u0131\u015Fmay\u0131 \xF6nlemek i\xE7in lintleme yap\u0131\u015Ft\u0131rmas\u0131 iptal edildi.","see-console":"Daha fazla detay i\xE7in konsolu kontrol edin.","unknown-error":"Lintleme s\u0131ras\u0131nda bilinmeyen bir hata olu\u015Ftu.","moment-locale-not-found":"Moment.js yerelini {MOMENT_LOCALE} olarak de\u011Fi\u015Ftirmeye \xE7al\u0131\u015F\u0131yor, elde edilen {CURRENT_LOCALE}","file-change-lint-message-start":"Lintlendi","pre-rules":"normal kurallardan \xF6nceki kurallar","post-rules":"normal kurallardan sonraki kurallar","rule-running":"kurallar \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-regex":"\xF6zel regex kurallar\u0131","running-custom-regex":"\xD6zel Regex \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","running-custom-lint-command":"\xD6zel Lint Komutlar\u0131 \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-lint-duplicate-warning":'Ayn\u0131 komutu ("{COMMAND_NAME}") \xF6zel bir lint kural\u0131 olarak iki kez \xE7al\u0131\u015Ft\u0131ramazs\u0131n\u0131z.',"custom-lint-error-message":"\xD6zel Lint Komutu Hatas\u0131","disabled-text":"devre d\u0131\u015F\u0131","run-rule-text":"\xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","timing-key-not-found":"'{TIMING_KEY}' zamanlama anahtar\u0131 zamanlama bilgisi listesinde bulunamad\u0131, bu y\xFCzden yoksay\u0131ld\u0131","milliseconds-abbreviation":"ms","invalid-date-format-error":"Olu\u015Fturulan tarih format\u0131 '{DATE}' ayr\u0131\u015Ft\u0131r\u0131lamad\u0131 veya belirlenemedi, bu y\xFCzden '{FILE_NAME}' dosyas\u0131ndaki olu\u015Fturulan tarih ayn\u0131 b\u0131rak\u0131ld\u0131","invalid-delimiter-error-message":"ayra\xE7 sadece tek bir karakter olabilir","missing-footnote-error-message":"'{FOOTNOTE}' dipnotunun i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir dipnot referans\u0131 yok ve i\u015Flenemez. L\xFCtfen t\xFCm dipnotlar\u0131n, dipnot i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir referans\u0131 oldu\u011Fundan emin olun.","too-many-footnotes-error-message":"'{FOOTNOTE_KEY}' dipnot anahtar\u0131 birden fazla dipnota at\u0131fta bulunuyor. L\xFCtfen dipnotlar\u0131 g\xFCncelleyin, b\xF6ylece her dipnot anahtar\u0131 i\xE7in yaln\u0131zca bir dipnot olur.","wrapper-yaml-error":"YAML'da hata: {ERROR_MESSAGE}","wrapper-unknown-error":"bilinmeyen hata: {ERROR_MESSAGE}","uneven-amount-of-quotes":"Dosyadaki `{QUOTE}` al\u0131nt\u0131s\u0131n\u0131n say\u0131s\u0131 \xE7ift de\u011Fil, bu y\xFCzden d\xFCz al\u0131nt\u0131lar\u0131 ak\u0131ll\u0131 al\u0131nt\u0131lara d\xF6n\xFC\u015Ft\xFCremeyiz"},"notice-text":{"empty-clipboard":"Panoda i\xE7erik yok.","characters-added":"karakterler eklendi","characters-removed":"karakterler kald\u0131r\u0131ld\u0131"},"all-rules-option":"T\xFCm\xFC","linter-title":"Linter","empty-search-results-text":"Arama ile e\u015Fle\u015Fen ayar bulunamad\u0131","warning-text":"Uyar\u0131","file-backup-text":"Dosyalar\u0131n\u0131z\u0131n yede\u011Fini ald\u0131\u011F\u0131n\u0131zdan emin olun.",tabs:{names:{general:"Genel",custom:"\xD6zel",yaml:"YAML",heading:"Ba\u015Fl\u0131k",content:"\u0130\xE7erik",footnote:"Dipnot",spacing:"Bo\u015Fluk",paste:"Yap\u0131\u015Ft\u0131r",debug:"Hata ay\u0131kla"},"default-search-bar-text":"T\xFCm ayarlar\u0131 ara",general:{"lint-on-save":{name:"Kaydederken d\xFCzelt",description:"Manuel kaydetme (Ctrl + S tu\u015Funa bas\u0131ld\u0131\u011F\u0131nda veya vim tu\u015F ba\u011Flamalar\u0131n\u0131 kullan\u0131rken :w komutu \xE7al\u0131\u015Ft\u0131r\u0131ld\u0131\u011F\u0131nda) dosyay\u0131 d\xFCzeltir"},"display-message":{name:"D\xFCzeltme sonras\u0131 mesaj\u0131 g\xF6ster",description:"D\xFCzeltme sonras\u0131 de\u011Fi\u015Fen karakter say\u0131s\u0131n\u0131 g\xF6sterir"},"lint-on-file-change":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme",description:"Bir dosya kapat\u0131ld\u0131\u011F\u0131nda veya yeni bir dosya a\xE7\u0131ld\u0131\u011F\u0131nda, \xF6nceki dosya d\xFCzeltilir."},"display-lint-on-file-change-message":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme Mesaj\u0131n\u0131 G\xF6ster",description:"`Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme` oldu\u011Funda bir mesaj g\xF6sterir"},"folders-to-ignore":{name:"Yoksay\u0131lacak klas\xF6rler",description:"T\xFCm dosyalar\u0131 d\xFCzeltirken veya kaydederken d\xFCzeltme i\u015Fleminin yoksay\u0131laca\u011F\u0131 klas\xF6rler. Klas\xF6r yollar\u0131n\u0131 yeni sat\u0131rlarla ay\u0131rarak girin"},"override-locale":{name:"Yerel ayarlar\u0131n \xFCzerine yaz",description:"Varsay\u0131lan\u0131n d\u0131\u015F\u0131nda bir yerel ayar kullanmak istiyorsan\u0131z bunu ayarlay\u0131n"},"same-as-system-locale":"Sistemle ayn\u0131 ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC stili",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFCn stili"},"yaml-tags-section-style":{name:"YAML etiketleri b\xF6l\xFCm\xFC stili",description:"YAML etiketleri b\xF6l\xFCm\xFCn\xFCn stili"},"default-escape-character":{name:"Varsay\u0131lan Ka\xE7\u0131\u015F Karakteri",description:"Tek t\u0131rnak ve \xE7ift t\u0131rnak bulunmayan YAML de\u011Ferlerinden ka\xE7mak i\xE7in kullan\u0131lacak varsay\u0131lan karakter."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\xC7ok Sat\u0131rl\u0131 Dizi Format\u0131ndayken Gereksiz Ka\xE7\u0131\u015F Karakterlerini Kald\u0131r",description:"\xC7ok sat\u0131rl\u0131 YAML dizileri i\xE7in ka\xE7\u0131\u015F karakterleri tek sat\u0131rl\u0131 dizilere g\xF6re ayn\u0131 ka\xE7\u0131\u015Fa ihtiya\xE7 duymaz, bu y\xFCzden \xE7ok sat\u0131rl\u0131 format i\xE7erisinde gerekli olmayan ekstra ka\xE7\u0131\u015Flar\u0131 kald\u0131r\u0131r"},"number-of-dollar-signs-to-indicate-math-block":{name:"Matematiksel Blo\u011Fu Belirtmek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131",description:"Matematik i\xE7eri\u011Finin bir matematiksel blok yerine inline matematik olup olmad\u0131\u011F\u0131n\u0131 belirlemek i\xE7in kullan\u0131lacak dolar i\u015Fareti say\u0131s\u0131"}},debug:{"log-level":{name:"Log D\xFCzeyi",description:"Hizmetin loglamaya izin verdi\u011Fi log t\xFCrleri. Varsay\u0131lan ERROR'dur."},"linter-config":{name:"Linter Yap\u0131land\u0131rmas\u0131",description:"Ayar sayfas\u0131n\u0131n y\xFCklenmesi s\u0131ras\u0131nda Linter i\xE7in data.json i\xE7eri\u011Fi"},"log-collection":{name:"Kaydetme d\xFCzeltmesi ve mevcut dosyan\u0131n d\xFCzeltilmesi s\u0131ras\u0131nda loglar\u0131 topla",description:"`Kaydetme d\xFCzeltmesi` yapt\u0131\u011F\u0131n\u0131zda ve mevcut dosyay\u0131 d\xFCzeltirken loglar\u0131 toplar. Bu loglar hata ay\u0131klama ve hata raporlar\u0131 olu\u015Fturma i\xE7in yard\u0131mc\u0131 olabilir."},"linter-logs":{name:"Linter Loglar\u0131",description:"Son `Kaydetme d\xFCzeltmesi` veya son mevcut dosya \xE7al\u0131\u015Ft\u0131rmas\u0131ndan elde edilen loglar (e\u011Fer etkinle\u015Ftirilmi\u015Fse)."}}},options:{"custom-command":{name:"\xD6zel Komutlar",description:"\xD6zel komutlar, linter normal kurallar\u0131n\u0131 \xE7al\u0131\u015Ft\u0131rmay\u0131 bitirdikten sonra \xE7al\u0131\u015Ft\u0131r\u0131lan Obsidyen komutlard\u0131r. Bu, YAML zaman damgas\u0131 mant\u0131\u011F\u0131 \xE7al\u0131\u015Fmadan \xF6nce \xE7al\u0131\u015Fmad\u0131klar\u0131 anlam\u0131na gelir, dolay\u0131s\u0131yla linterin bir sonraki \xE7al\u0131\u015Fmas\u0131nda YAML zaman damgas\u0131n\u0131n tetiklenmesine neden olabilirler. Bir Obsidyen komutunu yaln\u0131zca bir kez se\xE7ebilirsiniz. **_Bunun \u015Fu anda yaln\u0131zca ge\xE7erli dosyaya sat\u0131r dizilirken \xE7al\u0131\u015Ft\u0131\u011F\u0131n\u0131 unutmay\u0131n._**",warning:"Bir se\xE7ene\u011Fi se\xE7erken, se\xE7ene\u011Fi fareyi kullanarak veya enter tu\u015Funa basarak se\xE7ti\u011Finizden emin olun. Di\u011Fer se\xE7im y\xF6ntemleri \xE7al\u0131\u015Fmayabilir ve yaln\u0131zca ger\xE7ek bir Obsidian komutunun veya bo\u015F bir dizinin se\xE7imleri kaydedilir.","add-input-button-text":"Yeni komut ekle","command-search-placeholder-text":"Obsidian komutu","move-up-tooltip":"Yukar\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131","delete-tooltip":"Sil"},"custom-replace":{name:"\xD6zel Regex De\u011Fi\u015Ftirme",description:"\xD6zel regex de\u011Fi\u015Ftirme, bulunan regex ile e\u015Fle\u015Fen her \u015Feyi de\u011Fi\u015Ftirme de\u011Feri ile de\u011Fi\u015Ftirmek i\xE7in kullan\u0131labilir. De\u011Fi\u015Ftirme ve bulma de\u011Ferleri ge\xE7erli regex de\u011Ferleri olmal\u0131d\u0131r.",warning:"Regex hakk\u0131nda bilginiz yoksa dikkatli kullan\u0131n. Ayr\u0131ca, l\xFCtle iOS mobil platformunda regexinizde geriye d\xF6n\xFCk aramalar\u0131 kullanmay\u0131n \xE7\xFCnk\xFC bu, o platformda desteklenmedi\u011Fi i\xE7in lint i\u015Fleminin ba\u015Far\u0131s\u0131z olmas\u0131na neden olur.","add-input-button-text":"Yeni regex de\u011Fi\u015Ftirme ekle","regex-to-find-placeholder-text":"bulunacak regex","flags-placeholder-text":"bayraklar","regex-to-replace-placeholder-text":"de\u011Fi\u015Ftirilecek regex","label-placeholder-text":"etiket","move-up-tooltip":"Yukar\u0131 ta\u015F\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131 ta\u015F\u0131","delete-tooltip":"Sil"}},rules:{"auto-correct-common-misspellings":{name:"Yayg\u0131n Yanl\u0131\u015F Yaz\u0131mlar\u0131 Otomatik D\xFCzelt",description:"Yayg\u0131n yanl\u0131\u015F yaz\u0131mlar\u0131n s\xF6zl\xFC\u011F\xFCn\xFC kullanarak bunlar\u0131 do\u011Fru yaz\u0131mlar\u0131na otomatik olarak d\xF6n\xFC\u015Ft\xFCr\xFCr. Otomatik d\xFCzeltilen kelimelerin tam listesi i\xE7in [otomatik-d\xFCzeltme haritas\u0131na](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) bak\u0131n.","ignore-words":{name:"Kelimeleri Yoksay",description:"Otomatik d\xFCzeltme s\u0131ras\u0131nda yoksay\u0131lacak k\xFC\xE7\xFCk harfli kelimelerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"add-blockquote-indentation-on-paste":{name:"Yap\u0131\u015Ft\u0131rma S\u0131ras\u0131nda Blok Al\u0131nt\u0131 Girintisini Ekle",description:"\u0130mle\xE7 bir blok al\u0131nt\u0131/callout sat\u0131r\u0131nda oldu\u011Funda, t\xFCm sat\u0131rlara, ilk sat\u0131r hari\xE7, blok al\u0131nt\u0131lar ekler"},"blockquote-style":{name:"Blok Al\u0131nt\u0131 Stili",description:"Blok al\u0131nt\u0131 stili tutarl\u0131 olmal\u0131d\u0131r.",style:{name:"Stil",description:"Blok al\u0131nt\u0131 g\xF6stergelerinde kullan\u0131lan stil"}},"capitalize-headings":{name:"B\xFCy\xFCk Harfli Ba\u015Fl\u0131klar",description:"Ba\u015Fl\u0131klar b\xFCy\xFCk harfle bi\xE7imlendirilmelidir",style:{name:"Stil",description:"Kullan\u0131lacak b\xFCy\xFCk harfle ba\u015Flatma stili"},"ignore-case-words":{name:"Durum S\xF6zc\xFCklerini Yoksay",description:"Ba\u015Fl\u0131k durum stilini sadece t\xFCm k\xFC\xE7\xFCk harfli s\xF6zc\xFCklere uygula"},"ignore-words":{name:"S\xF6zc\xFCkleri Yoksay",description:"B\xFCy\xFCk harfle ba\u015Flat\u0131rken yoksay\u0131lacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"},"lowercase-words":{name:"K\xFC\xE7\xFCk Harfli S\xF6zc\xFCkler",description:"K\xFC\xE7\xFCk harfli tutulacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"compact-yaml":{name:"S\u0131k\u0131\u015Ft\u0131r\u0131lm\u0131\u015F YAML",description:"YAML \xF6n bilgisindeki ba\u015Ftaki ve sondaki bo\u015F sat\u0131rlar\u0131 kald\u0131r\u0131r.","inner-new-lines":{name:"\u0130\xE7 Yeni Sat\u0131rlar",description:"YAML'\u0131n ba\u015F\u0131nda veya sonunda olmayan yeni sat\u0131rlar\u0131 kald\u0131r\u0131r."}},"consecutive-blank-lines":{name:"Ard\u0131\u015F\u0131k bo\u015F sat\u0131rlar",description:"En fazla bir ard\u0131\u015F\u0131k bo\u015F sat\u0131r olmal\u0131d\u0131r."},"convert-bullet-list-markers":{name:"Bullet List Markerlar\u0131n\u0131 D\xF6n\xFC\u015Ft\xFCr",description:"Bullet list marker sembollerini markdown list markerlar\u0131na d\xF6n\xFC\u015Ft\xFCr\xFCr."},"convert-spaces-to-tabs":{name:"Bo\u015Fluklar\u0131 Sekmeye D\xF6n\xFC\u015Ft\xFCr",description:"Ba\u015Ftaki bo\u015Fluklar\u0131 sekmeye d\xF6n\xFC\u015Ft\xFCr\xFCr.",tabsize:{name:"Sekme Boyutu",description:"Bir sekme haline d\xF6n\xFC\u015Ft\xFCr\xFClecek bo\u015Fluk say\u0131s\u0131"}},"emphasis-style":{name:"Vurgu Stili",description:"Vurgu stilinin tutarl\u0131 olmas\u0131n\u0131 sa\u011Flar.",style:{name:"Stil",description:"Vurgulanan i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"empty-line-around-blockquotes":{name:"Al\u0131nt\u0131 Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan al\u0131nt\u0131 bloklar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r. **Not: bo\u015F bir sat\u0131r ya al\u0131nt\u0131 bloklar i\xE7in bir seviye daha az girinti veya yeni bir sat\u0131r karakteri demektir.**"},"empty-line-around-code-fences":{name:"Kod \xC7itlerinin Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan kod \xE7itlerinin etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-math-blocks":{name:"Matematik Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Tek sat\u0131rl\u0131k matematik i\xE7in bir matematik blo\u011Funu belirtmek i\xE7in ka\xE7 dolar i\u015Fareti oldu\u011Funu belirleyen `Dolar \u0130\u015Faretlerinin Say\u0131s\u0131yla Matematik Blo\u011Funu Belirt` kullan\u0131larak matematik bloklar\u0131n\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-tables":{name:"Tablolar\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan github flavored tablolar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"escape-yaml-special-characters":{name:"YAML \xD6zel Karakterlerine Ka\xE7\u0131\u015F \u0130\u015Flemi Yap",description:`YAML i\xE7indeki bo\u015Flukla beraber gelen iki nokta \xFCst \xFCste (:), tek t\u0131rnak (') ve \xE7ift t\u0131rnak (") karakterlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutar.`,"try-to-escape-single-line-arrays":{name:"Tek Sat\u0131rl\u0131k Listeleri Ka\xE7\u0131\u015F Denemesi",description:'Bir dizinin "[" ile ba\u015Flad\u0131\u011F\u0131n\u0131, "]" ile bitti\u011Fini ve \xF6\u011Felerin "," ile ayr\u0131ld\u0131\u011F\u0131n\u0131 varsayarak dizi de\u011Ferlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutmaya \xE7al\u0131\u015F\u0131r.'}},"file-name-heading":{name:"Dosya Ad\u0131 Ba\u015Fl\u0131\u011F\u0131",description:"E\u011Fer hi\xE7 H1 ba\u015Fl\u0131\u011F\u0131 yoksa dosya ad\u0131n\u0131 H1 ba\u015Fl\u0131\u011F\u0131 olarak ekler."},"footnote-after-punctuation":{name:"Noktalama \u0130\u015Faretinden Sonra Dipnot",description:"Dipnot referanslar\u0131n\u0131n noktalama i\u015Faretinden \xF6nce de\u011Fil, sonra yerle\u015Ftirildi\u011Finden emin olur."},"force-yaml-escape":{name:"YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Belirtilen YAML anahtarlar\u0131 i\xE7in ka\xE7\u0131\u015F de\u011Ferleri.","force-yaml-escape-keys":{name:"Anahtarlarda YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Yeni bir sat\u0131r karakteri ile ayr\u0131lm\u0131\u015F belirtilen YAML anahtarlar\u0131nda YAML ka\xE7\u0131\u015F karakterini kullan\u0131r, e\u011Fer zaten ka\xE7\u0131\u015F yap\u0131lmam\u0131\u015Fsa. YAML dizilerinde kullanmay\u0131n"}},"format-tags-in-yaml":{name:"YAML Etiketlerini Bi\xE7imlendir",description:"YAML \xF6n madde i\xE7indeki etiketlerden hashtagleri kald\u0131r\u0131r, \xE7\xFCnk\xFC bunlar etiketleri ge\xE7ersiz k\u0131lar."},"format-yaml-array":{name:"YAML Dizisini Bi\xE7imlendir",description:"Normal YAML dizilerinin \xE7ok sat\u0131rl\u0131 veya tek sat\u0131rl\u0131 olarak bi\xE7imlendirilmesine izin verir ve `tags` ve `aliases` baz\u0131 Obsidian \xF6zg\xFC \xF6zelliklerine sahip YAML formatlar\u0131nda bulunabilir. **Not: Tek giri\u015Fli bir diziden birden fazla giri\u015Fi olan tek sat\u0131rl\u0131 bir diziye ge\xE7mek ayn\u0131d\u0131r, tek fark \xE7ok sat\u0131rl\u0131 bir dizi olmas\u0131d\u0131r.**","alias-key":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar. Bu se\xE7ene\u011Fi `YAML Title Alias` kural\u0131yla birlikte kullanmaman\u0131z \xF6nerilir \xE7\xFCnk\xFC birlikte d\xFCzg\xFCn \xE7al\u0131\u015Fmayabilir veya farkl\u0131 bi\xE7imlendirme stilleri se\xE7ilmi\u015F olabilir, bu beklenmeyen sonu\xE7lara yol a\xE7abilir."},"tag-key":{name:"YAML etiketleri b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML etiketleri b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar."},"default-array-style":{name:"Varsay\u0131lan YAML dizi b\xF6l\xFCm\xFC stili",description:"`tags`, `aliases` veya `Force key values to be single-line arrays` ve `Force key values to be multi-line arrays` olmayan di\u011Fer YAML dizilerinin stili"},"default-array-keys":{name:"YAML dizi b\xF6l\xFCmlerini bi\xE7imlendir",description:"Normal YAML dizileri i\xE7in bi\xE7imlendirmeyi a\xE7ar"},"force-single-line-array-style":{name:"Anahtar de\u011Ferlerini tek sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini tek sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"},"force-multi-line-array-style":{name:"Anahtar de\u011Ferlerini \xE7ok sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini \xE7ok sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"}},"header-increment":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131",description:"Ba\u015Fl\u0131k seviyeleri bir seferde sadece bir seviye artmal\u0131d\u0131r","start-at-h2":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131n\u0131 Ba\u015Fl\u0131k Seviyesi 2\u2019de Ba\u015Flat",description:"Bir dosyadaki minimum ba\u015Fl\u0131k seviyesini ba\u015Fl\u0131k seviyesi 2 yapar ve buna g\xF6re t\xFCm ba\u015Fl\u0131klar\u0131 kayd\u0131r\u0131r, b\xF6ylece ba\u015Fl\u0131k art\u0131\u015F\u0131 seviye 2 ba\u015Fl\u0131\u011F\u0131 ile ba\u015Flar."}},"heading-blank-lines":{name:"Ba\u015Fl\u0131k Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm ba\u015Fl\u0131klar\u0131n hem \xF6ncesinde hem de sonras\u0131nda birer bo\u015F sat\u0131r olmal\u0131d\u0131r (ba\u015Fl\u0131k belgenin ba\u015F\u0131nda veya sonunda oldu\u011Funda bu durum ge\xE7erli de\u011Fildir).",bottom:{name:"Alt",description:"Ba\u015Fl\u0131klar\u0131n sonras\u0131na bo\u015F sat\u0131r ekler"},"empty-line-after-yaml":{name:"YAML ve Ba\u015Fl\u0131k Aras\u0131nda Bo\u015F Sat\u0131r",description:"YAML \xF6n madde ve ba\u015Fl\u0131k aras\u0131ndaki bo\u015F sat\u0131r\u0131 korur"}},"headings-start-line":{name:"Ba\u015Fl\u0131klar Sat\u0131r\u0131 Ba\u015Flat\u0131r",description:"Bir sat\u0131r\u0131 ba\u015Flatmayan ba\u015Fl\u0131klar\u0131n \xF6ncesi bo\u015Fluklar\u0131 kald\u0131r\u0131l\u0131r ki ba\u015Fl\u0131klar ba\u015Fl\u0131k olarak tan\u0131nabilsin."},"insert-yaml-attributes":{name:"YAML \xD6zniteliklerini Ekle",description:"Verilen YAML \xF6zniteliklerini YAML \xF6n maddesine ekler. Her \xF6zniteli\u011Fi tek bir sat\u0131ra koyun.","text-to-insert":{name:"Eklenecek metin",description:"YAML \xF6n maddesine eklenen metin"}},"line-break-at-document-end":{name:"Belge Sonunda Sat\u0131r Sonu",description:"Bir belgenin sonunda tam olarak bir sat\u0131r sonu oldu\u011Funu garanti eder."},"move-footnotes-to-the-bottom":{name:"Dipnotlar\u0131 Altbilgiye Ta\u015F\u0131",description:"T\xFCm dipnotlar\u0131 belgenin alt\u0131na ta\u015F\u0131r."},"move-math-block-indicators-to-their-own-line":{name:"Matematik Blok G\xF6stergelerini Kendi Sat\u0131rlar\u0131na Ta\u015F\u0131",description:'Tek sat\u0131rl\u0131 matematik i\xE7in ka\xE7 dolar i\u015Faretinin bir matematik blo\u011Funu g\xF6sterdi\u011Fini belirlemek i\xE7in "Bir Matematik Blo\u011Fu G\xF6stermek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131"n\u0131 kullanarak t\xFCm ba\u015Flang\u0131\xE7 ve biti\u015F matematik blo\u011Fu g\xF6stergelerini kendi sat\u0131rlar\u0131na ta\u015F\u0131y\u0131n.'},"move-tags-to-yaml":{name:"Etiketleri YAML'a Ta\u015F\u0131",description:"T\xFCm etiketleri belgenin YAML \xF6n maddesine ta\u015F\u0131r.","how-to-handle-existing-tags":{name:"Metin i\xE7indeki etiket i\u015Flemi",description:"\xD6n maddeye ta\u015F\u0131nd\u0131ktan sonra dosyan\u0131n i\xE7eri\u011Finde bulunan ve yoksay\u0131lmayan etiketlerle ne yap\u0131laca\u011F\u0131"},"tags-to-ignore":{name:"Yoksay\u0131lacak etiketler",description:"\u0130\xE7erik g\xF6vdesindeki hashtag'lerden kald\u0131rma etkinle\u015Ftirilmi\u015Fse, etiketler dizisine ta\u015F\u0131nmayacak veya i\xE7erik g\xF6vdesinden kald\u0131r\u0131lmayacak etiketler. Her etiket yeni bir sat\u0131rda ve `#` olmadan olmal\u0131d\u0131r. **Etiket ad\u0131nda hashtag i\xE7ermedi\u011Finizden emin olun.**"}},"no-bare-urls":{name:"Yal\u0131n URL'ler Olmas\u0131n",description:"Yal\u0131n URL'leri a\xE7\u0131l\u0131 ayra\xE7lar ile ku\u015Fat\u0131r, tek veya \xE7ift t\u0131rnak, k\xF6\u015Feli parantez veya e\u011Fik kesme i\u015Fareti i\xE7inde de\u011Filse."},"ordered-list-style":{name:"S\u0131ral\u0131 Liste Stili",description:"S\u0131ral\u0131 listelerin belirtilen stili izlemesini sa\u011Flar. **Not: 2 bo\u015Fluk veya 1 sekme bir girinti seviyesi olarak kabul edilir.**","number-style":{name:"Numara Stili",description:"S\u0131ral\u0131 liste g\xF6stergelerinde kullan\u0131lan numara stili"},"list-end-style":{name:"S\u0131ral\u0131 Liste G\xF6sterge Sonu Stili",description:"Bir s\u0131ral\u0131 liste g\xF6stergesinin biti\u015F karakteri"}},"paragraph-blank-lines":{name:"Paragraf Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm paragraflar\u0131n hem \xF6nce hem sonra tam olarak bir bo\u015F sat\u0131r\u0131 olmal\u0131d\u0131r."},"prevent-double-checklist-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Kontrol Listesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir kontrol listesi g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 kontrol listesi g\xF6stergesini kald\u0131r\u0131r"},"prevent-double-list-item-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Liste \xD6\u011Fesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir liste g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 listesi g\xF6stergesini kald\u0131r\u0131r"},"proper-ellipsis-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Uygun \xDC\xE7 Nokta",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinde aralar\u0131nda bo\u015Fluk olsa bile ard\u0131\u015F\u0131k \xFC\xE7 noktay\u0131, \xFC\xE7 nokta karakteriyle ile de\u011Fi\u015Ftirir"},"proper-ellipsis":{name:"Uygun \xDC\xE7 Nokta",description:"Ard\u0131\u015F\u0131k \xFC\xE7 tane noktay\u0131, \xFC\xE7 nokta karakteriyle de\u011Fi\u015Ftirir."},"quote-style":{name:"\xFC\xE7 nokta karakteriyle",description:"G\xF6vde i\xE7eri\u011Findeki al\u0131nt\u0131lar\u0131 belirtilen tek ve \xE7ift al\u0131nt\u0131 stillerine g\xFCnceller.","single-quote-enabled":{name:"`Tek Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen tek al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"single-quote-style":{name:"Tek Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak tek al\u0131nt\u0131 stilidir."},"double-quote-enabled":{name:"`\xC7ift Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen \xE7ift al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"double-quote-style":{name:"\xC7ift Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak \xE7ift al\u0131nt\u0131 stilidir."}},"re-index-footnotes":{name:"Dipnotlar\u0131 Yeniden \u0130ndeksle",description:"Dipnot anahtarlar\u0131n\u0131 ve dipnotlar\u0131, olu\u015Fum s\u0131ras\u0131na g\xF6re yeniden indeksler. **Not: Bir anahtar i\xE7in birden fazla dipnot varsa, bu kural \xE7al\u0131\u015Fmaz.**"},"remove-consecutive-list-markers":{name:"Ard\u0131\u015F\u0131k Liste \u0130\u015Faretlerini Kald\u0131r",description:"Ard\u0131\u015F\u0131k liste i\u015Faretlerini kald\u0131r\u0131r. Liste \xF6\u011Felerini kopyala-yap\u0131\u015Ft\u0131r yaparken kullan\u0131\u015Fl\u0131d\u0131r."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Liste \u0130\u015Faretleri ve Kontrol Listeleri Aras\u0131ndaki Bo\u015F Sat\u0131rlar\u0131 Kald\u0131r",description:"Liste i\u015Faretleri ve kontrol listeleri aras\u0131nda bo\u015F sat\u0131r olmamal\u0131d\u0131r."},"remove-empty-list-markers":{name:"Bo\u015F Liste \u0130\u015Faret\xE7ilerini Kald\u0131r",description:"Bo\u015F liste i\u015Faret\xE7ilerini, yani i\xE7eriksiz liste \xF6\u011Felerini kald\u0131r\u0131r."},"remove-hyphenated-line-breaks":{name:"Tireli Sat\u0131r Sonlar\u0131n\u0131 Kald\u0131r",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Tireleri Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metindeki tireleri kald\u0131r\u0131r"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Yap\u0131\u015Ft\u0131rda \xD6ndeki veya Sondaki Bo\u015Fluklar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metnin ba\u015F\u0131ndaki sekme olmayan bo\u015Fluklar\u0131 ve sonundaki t\xFCm bo\u015Fluklar\u0131 kald\u0131r\u0131r"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Al\u0131nt\u0131dan Kalan Dipnotlar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinden herhangi bir kal\u0131nt\u0131 dipnot referanslar\u0131n\u0131 kald\u0131r\u0131r"},"remove-link-spacing":{name:"Link Aral\u0131\u011F\u0131n\u0131 Kald\u0131r",description:"Link metninin etraf\u0131ndaki bo\u015Fluklar\u0131 kald\u0131r\u0131r."},"remove-multiple-blank-lines-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Birden Fazla Bo\u015F Sat\u0131r\u0131 Kald\u0131r",description:"Metnin yap\u0131\u015Ft\u0131r\u0131lmas\u0131 i\xE7in birden \xE7ok bo\u015F sat\u0131r\u0131 tek bir bo\u015F sat\u0131ra s\u0131k\u0131\u015Ft\u0131r\u0131r"},"remove-multiple-spaces":{name:"Birden Fazla Bo\u015Flu\u011Fu Kald\u0131r",description:"\u0130ki veya daha fazla ard\u0131\u015F\u0131k bo\u015Flu\u011Fu kald\u0131r\u0131r. Sat\u0131r\u0131n ba\u015F\u0131ndaki ve sonundaki bo\u015Fluklar\u0131 g\xF6rmezden gelir. "},"remove-space-around-characters":{name:"Karakterler Etraf\u0131ndaki Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirli karakterlerin bo\u015Fluklarla (tek bo\u015Fluk veya sekme) \xE7evrelenmemesini sa\u011Flar. **Not: Bu, baz\u0131 durumlarda indirim bi\xE7imiyle ilgili sorunlara neden olabilir.**","include-fullwidth-forms":{name:"Tam Geni\u015Flikte Formlar\u0131 Dahil Et",description:'Tam Geni\u015Flikte Formlar Unicode blo\u011Funu dahil eder'},"include-cjk-symbols-and-punctuation":{name:"CJK Sembol ve Noktalama \u0130\u015Faretlerini Dahil Et",description:'CJK Sembol ve Noktalama Unicode blo\u011Funu dahil eder'},"include-dashes":{name:"Tireleri Dahil Et",description:"En tire (\u2013) ve em tireyi (\u2014) dahil eder"},"other-symbols":{name:"Di\u011Fer Semboller",description:"Dahil edilecek di\u011Fer semboller"}},"remove-space-before-or-after-characters":{name:"Karakterlerden \xD6nce veya Sonra Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirtilen karakterlerden \xF6nceki ve sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: bu durum baz\u0131 durumlarda markdown format\u0131nda sorunlara neden olabilir.**","characters-to-remove-space-before":{name:"\xD6nceki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden \xF6nceki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"},"characters-to-remove-space-after":{name:"Sonraki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"}},"remove-trailing-punctuation-in-heading":{name:"Ba\u015Fl\u0131klardaki Son Noktalama \u0130\u015Faretlerini Kald\u0131r",description:"Belirtilen noktalama i\u015Faretlerini ba\u015Fl\u0131klar\u0131n sonundan kald\u0131r\u0131r ve [HTML varl\u0131k referanslar\u0131n\u0131n](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references) sonundaki noktal\u0131 virg\xFCl\xFC yoksayar.","punctuation-to-remove":{name:"Sondaki Noktalama",description:"Dosyadaki ba\u015Fl\u0131klardan kald\u0131r\u0131lacak noktalama i\u015Faretleri."}},"remove-yaml-keys":{name:"YAML Anahtarlar\u0131n\u0131 Kald\u0131r",description:"Belirtilen YAML anahtarlar\u0131n\u0131 kald\u0131r\u0131r","yaml-keys-to-remove":{name:"Kald\u0131r\u0131lacak YAML Anahtarlar\u0131",description:"YAML \xF6n maddesinden iki nokta \xFCst \xFCste ile veya olmadan kald\u0131r\u0131lacak YAML anahtarlar\u0131"}},"space-after-list-markers":{name:"Liste \u0130\u015Faretlerinden Sonra Bo\u015Fluk",description:"Liste i\u015Faretleri ve onay kutular\u0131ndan sonra tek bir bo\u015Fluk olmal\u0131d\u0131r"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya Say\u0131lar Aras\u0131nda Bo\u015Fluk",description:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya say\u0131lar aras\u0131nda tek bir bo\u015Fluk olmas\u0131 gerekti\u011Fini sa\u011Flar. Bu [kurallar\u0131](https://github.com/sparanoid/chinese-copywriting-guidelines) takip eder"},"strong-style":{name:"Kal\u0131n Stil",description:"Kal\u0131n stilin tutarl\u0131 oldu\u011Funu garanti eder.",style:{name:"Stil",description:"Kal\u0131n/yo\u011Fun i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"trailing-spaces":{name:"Sondaki bo\u015Fluklar",description:"Her sat\u0131r\u0131n sonundaki fazladan bo\u015Fluklar\u0131 kald\u0131r\u0131r.","twp-space-line-break":{name:"\u0130ki Bo\u015Fluklu Sat\u0131r Sonu",description:'Bir sat\u0131r sonunu takiben iki bo\u015Flu\u011Fu g\xF6z ard\u0131 et ("\u0130ki Bo\u015Fluk Kural\u0131").'}},"two-spaces-between-lines-with-content":{name:"\u0130\xE7eri\u011Fi Olan Sat\u0131rlar Aras\u0131nda \u0130ki Bo\u015Fluk",description:"\u0130\xE7eri\u011Fi devam eden sat\u0131rlar\u0131n sonuna paragraflar, blok al\u0131nt\u0131lar\u0131 ve liste \xF6\u011Feleri i\xE7in iki bo\u015Fluk eklenmesini sa\u011Flar"},"unordered-list-style":{name:"S\u0131ras\u0131z Liste Stili",description:"S\u0131ras\u0131z listelerin belirtilen stili takip etti\u011Finden emin olur.","list-style":{name:"Liste \xF6\u011Fesi stili",description:"S\u0131ras\u0131z listelerde kullan\u0131lacak liste \xF6\u011Fesi stili"}},"yaml-key-sort":{name:"YAML Anahtar S\u0131ralamas\u0131",description:"YAML anahtarlar\u0131n\u0131 belirtilen s\u0131ra ve \xF6nceli\u011Fe g\xF6re s\u0131ralar. **Not: bo\u015F sat\u0131rlar\u0131 da kald\u0131rabilir.**","yaml-key-priority-sort-order":{name:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni",description:"Her sat\u0131rda bir tane olacak \u015Fekilde anahtarlar\u0131n hangi s\u0131rayla s\u0131ralanaca\u011F\u0131"},"priority-keys-at-start-of-yaml":{name:"\xD6ncelikli Anahtarlar YAML'\u0131n Ba\u015F\u0131nda",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni, YAML \xF6n maddesinin ba\u015F\u0131nda yer al\u0131r"},"yaml-sort-order-for-other-keys":{name:"Di\u011Fer Anahtarlar \u0130\xE7in YAML S\u0131ralama D\xFCzeni",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni metin alan\u0131nda bulunmayan anahtarlar\u0131 nas\u0131l s\u0131ralayaca\u011F\u0131"}},"yaml-timestamp":{name:"YAML Zaman Damgas\u0131",description:"Dosyan\u0131n son d\xFCzenlendi\u011Fi tarihi YAML \xF6n maddesinde takip eder. Tarihler dosya metadatas\u0131ndan al\u0131n\u0131r.","date-created":{name:"Olu\u015Fturma Tarihi",description:"Dosyan\u0131n olu\u015Fturma tarihini ekler"},"date-created-key":{name:"Olu\u015Fturma Tarihi Anahtar\u0131",description:"Olu\u015Fturma tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},"force-retention-of-create-value":{name:"Olu\u015Fturma Tarihi Anahtar De\u011Ferinin Korunmas\u0131n\u0131 Zorla",description:"Dosya metadatas\u0131 yerine YAML \xF6n maddesindeki tarihi yeniden kullan\u0131r, bu da dosya metadatas\u0131ndaki de\u011Fi\u015Fikliklerin de\u011Ferin farkl\u0131 bir de\u011Fere de\u011Fi\u015Fmesine neden olmas\u0131n\u0131 \xF6nler."},"date-modified":{name:"De\u011Fi\u015Ftirme Tarihi",description:"Dosyan\u0131n son de\u011Fi\u015Ftirildi\u011Fi tarihi ekler"},"date-modified-key":{name:"De\u011Fi\u015Ftirme Tarihi Anahtar\u0131",description:"De\u011Fi\u015Ftirme tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},format:{name:"Format",description:"Kullan\u0131lacak Zaman format\u0131 (bak\u0131n\u0131z [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Ba\u015Fl\u0131k Takma Ad\u0131",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesinin takma adlar\u0131 b\xF6l\xFCm\xFCne ekler. Ba\u015Fl\u0131\u011F\u0131 ilk H1 veya dosya ad\u0131ndan al\u0131r.","preserve-existing-alias-section-style":{name:"Mevcut takma adlar b\xF6l\xFCm stilini koru",description:"Ayarlan\u0131rsa, `YAML takma adlar b\xF6l\xFCm\xFC stili` ayar\u0131 yaln\u0131zca yeni olu\u015Fturulan b\xF6l\xFCmlere uygulan\u0131r"},"keep-alias-that-matches-the-filename":{name:"Dosya ad\u0131na uyan takma ad\u0131 koru",description:"Bu t\xFCr takma adlar genellikle gereksizdir"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"`linter-yaml-title-alias` YAML anahtar\u0131n\u0131 kullanarak eski dosya ad\u0131 ve ba\u015Fl\u0131k de\u011Fi\u015Fikliklerini takip et",description:"Ayarlan\u0131rsa, ilk H1 ba\u015Fl\u0131\u011F\u0131 de\u011Fi\u015Fti\u011Finde veya ilk H1 yoksa dosya ad\u0131 de\u011Fi\u015Fti\u011Finde, bu anahtarda saklanan eski takma ad, takma adlar dizisine yeni bir giri\u015F eklemek yerine yeni de\u011Ferle de\u011Fi\u015Ftirilir"}},"yaml-title":{name:"YAML Ba\u015Fl\u0131k",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesine ekler. Ba\u015Fl\u0131k se\xE7ilen moda g\xF6re al\u0131n\u0131r.","title-key":{name:"Ba\u015Fl\u0131k Anahtar\u0131",description:"Ba\u015Fl\u0131k i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},mode:{name:"Mod",description:"Ba\u015Fl\u0131\u011F\u0131 almak i\xE7in kullan\u0131lacak y\xF6ntem"}}},enums:{"Title Case":"Ba\u015F Harfleri B\xFCy\xFCk","ALL CAPS":"T\xDCM\xDC B\xDCY\xDCK HARF","First letter":"\u0130lk Harf",".":".",")":")",ERROR:"hata",TRACE:"i\u015Faret",DEBUG:"hata ay\u0131klama",INFO:"bilgi",WARN:"uyar\u0131",SILENT:"sessiz",ascending:"artan",lazy:"tembel",Nothing:"Hi\xE7biri","Remove hashtag":"Hashtagi Kald\u0131r","Remove whole tag":"T\xFCm Etiketi Kald\u0131r",asterisk:"y\u0131ld\u0131z",underscore:"alt \xE7izgi",consistent:"tutarl\u0131","-":"-","*":"*","+":"+",space:"bo\u015Fluk","no space":"bo\u015Fluk yok",None:"Yok","Ascending Alphabetical":"Artan Alfabetik","Descending Alphabetical":"Azalan Alfabetik","multi-line":"\xE7oklu-sat\u0131r","single-line":"tek-sat\u0131r","single string to single-line":"tek dizeden tek sat\u0131ra","single string to multi-line":"tek dizeden \xE7ok sat\u0131ra","single string comma delimited":"virg\xFClle ayr\u0131lm\u0131\u015F tek dize","single string space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek dize","single-line space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek sat\u0131r","first-h1":"\u0130lk H1","first-h1-or-filename-if-h1-missing":"\u0130lk H1 veya H1 Eksikse Dosya Ad\u0131",filename:"Dosya Ad\u0131","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var fd={commands:{"lint-file":{name:"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u51FA\u9519"},"lint-file-unless-ignored":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF08\u9664\u4E86\u88AB\u5FFD\u7565\u7684\u6587\u4EF6\uFF09"},"lint-all-files":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","errors-message-singular":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","errors-message-plural":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {NUM} \u4E2A\u9519\u8BEF","start-message":"\u8FD9\u5C06\u6539\u52A8\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6..."},"lint-all-files-in-folder":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","start-message":"\u8FD9\u5C06\u6539\u52A8\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6...","error-message":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6","message-singular":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","message-plural":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684 {FILE_COUNT} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {ERROR_COUNT} \u4E2A\u9519\u8BEF."},"paste-as-plain-text":{name:"\u7C98\u8D34\u4E3A\u7EAF\u6587\u672C\u4E14\u4E0D\u63D0\u9192"},"lint-file-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6"},"lint-folder-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939"}},logs:{"plugin-load":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6","plugin-unload":"\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6","folder-lint":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939","linter-run":"\u6B63\u5728\u8FD0\u884C Linter","paste-link-warning":"\u4E2D\u6B62\u7C98\u8D34\u683C\u5F0F\u5316 \uFF0C\u56E0\u4E3A\u526A\u8D34\u677F\u5185\u5BB9\u662F\u4E00\u4E2A\u94FE\u63A5\uFF0C\u8FD9\u6837\u505A\u5C06\u907F\u514D\u4E0E\u5176\u4ED6\u4FEE\u6539\u7C98\u8D34\u884C\u4E3A\u7684\u63D2\u4EF6\u53D1\u751F\u51B2\u7A81","see-console":"\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F","unknown-error":"\u683C\u5F0F\u5316\u8FC7\u7A0B\u53D1\u751F\u672A\u77E5\u9519\u8BEF","moment-locale-not-found":"\u5C1D\u8BD5\u5C06 Moment.js \u7684\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u5207\u6362\u5230 {MOMENT_LOCALE}, \u5B9E\u9645\u5207\u6362\u5230 {CURRENT_LOCALE}","file-change-lint-message-start":"\u683C\u5F0F\u5316\u5DF2\u5B8C\u6210","pre-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219","post-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u4F4E\u7684\u89C4\u5219","rule-running":"\u6B63\u5728\u8FD0\u884C\u89C4\u5219","custom-regex":"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-regex":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-lint-command":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","custom-lint-duplicate-warning":'\u4F60\u4E0D\u80FD\u8FD0\u884C\u540C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89C4\u5219 ("{COMMAND_NAME}") \u4E24\u6B21',"custom-lint-error-message":"\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","disabled-text":"\u5DF2\u7981\u7528","run-rule-text":"\u8FD0\u884C\u4E2D","timing-key-not-found":"\u8BA1\u65F6\u952E '{TIMING_KEY}' \u5728\u8BA1\u65F6\u4FE1\u606F\u5217\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u5FFD\u7565","milliseconds-abbreviation":"\u6BEB\u79D2","invalid-date-format-error":"\u65E0\u6CD5\u89E3\u6790\u6216\u786E\u5B9A'{FILE_NAME}'\u4E2D\u7684\u521B\u5EFA\u65E5\u671F'{DATE}'\u7684\u683C\u5F0F\uFF0C\u521B\u5EFA\u65E5\u671F\u672A\u8FDB\u884C\u4FEE\u6539","invalid-delimiter-error-message":"\u5206\u9694\u7B26\u53EA\u80FD\u4E3A\u5355\u4E2A\u5B57\u7B26","missing-footnote-error-message":"\u811A\u6CE8 '{FOOTNOTE}' \u6CA1\u6709\u5BF9\u5E94\u7684\u5F15\u7528\uFF0C\u65E0\u6CD5\u5904\u7406\u3002\u8BF7\u786E\u4FDD\u6240\u6709\u811A\u6CE8\u90FD\u6709\u76F8\u5E94\u7684\u5F15\u7528\u3002","too-many-footnotes-error-message":"\u811A\u6CE8\u7F16\u53F7 '{FOOTNOTE_KEY}' \u6709\u8D85\u8FC71\u4E2A\u811A\u6CE8\u5728\u4F7F\u7528\uFF0C\u8BF7\u4FEE\u6539\u811A\u6CE8\u4F7F\u5F97\u4E00\u4E2A\u811A\u6CE8\u7F16\u53F7\u5BF9\u5E94\u4E00\u4E2A\u811A\u6CE8","wrapper-yaml-error":"yaml\u51FA\u73B0\u9519\u8BEF: {ERROR_MESSAGE}","wrapper-unknown-error":"\u672A\u77E5\u9519\u8BEF: {ERROR_MESSAGE}","uneven-amount-of-quotes":"`{QUOTE}` \u5F15\u53F7\u5728\u6587\u4EF6\u4E2D\u7684\u6570\u91CF\u4E0D\u662F\u5076\u6570\uFF0C\u6240\u4EE5\u6211\u4EEC\u65E0\u6CD5\u5C06\u76F4\u5F15\u53F7\u8F6C\u6362\u4E3A\u5F2F\u5F15\u53F7"},"notice-text":{"empty-clipboard":"\u526A\u8D34\u677F\u4E3A\u7A7A","characters-added":"\u4E2A\u5B57\u7B26\u88AB\u6DFB\u52A0","characters-removed":"\u4E2A\u5B57\u7B26\u88AB\u79FB\u9664"},"all-rules-option":"\u5168\u90E8","linter-title":"Linter","empty-search-results-text":"\u6CA1\u6709\u5339\u914D\u7684\u8BBE\u7F6E\u9879","warning-text":"\u8B66\u544A","file-backup-text":"\u8BF7\u786E\u4FDD\u4F60\u5DF2\u5907\u4EFD\u6587\u4EF6",tabs:{names:{general:"\u57FA\u7840",custom:"\u81EA\u5B9A\u4E49",yaml:"YAML",heading:"\u6807\u9898",content:"\u5185\u5BB9",footnote:"\u811A\u6CE8",spacing:"\u7A7A\u884C",paste:"\u7C98\u8D34",debug:"Debug"},"default-search-bar-text":"\u641C\u7D22\u8BBE\u7F6E\u9879",general:{"lint-on-save":{name:"\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6",description:"\u624B\u52A8\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6\uFF08\u5F53\u6309 `Ctrl + S` \u65F6\u6216\u5728 vim \u6A21\u5F0F\u4E2D\u4F7F\u7528 `:w` \u65F6\uFF09"},"display-message":{name:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u6D88\u606F",description:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u4FEE\u6539\u4E86\u591A\u5C11\u5B57\u7B26"},"lint-on-file-change":{name:"\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53\u6587\u4EF6\u5173\u95ED\u6216\u662F\u5207\u6362\u5230\u65B0\u6587\u4EF6\u65F6\uFF0C\u683C\u5F0F\u5316\u4E4B\u524D\u7684\u6587\u4EF6"},"display-lint-on-file-change-message":{name:"\u63D0\u9192\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53`\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316`\u89E6\u53D1\u65F6\uFF0C\u5F39\u51FA\u4E00\u6761\u63D0\u793A\u4FE1\u606F"},"folders-to-ignore":{name:"\u5FFD\u7565\u6587\u4EF6\u5939",description:"\u9700\u8981\u5FFD\u7565\u7684\u6587\u4EF6\u5939\uFF08\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u6216\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u65F6\u751F\u6548\uFF09\uFF0C\u6BCF\u884C\u8F93\u5165\u4E00\u4E2A\u6587\u4EF6\u5939\u8DEF\u5F84"},"override-locale":{name:"\u8986\u76D6\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00",description:"\u4F7F\u7528\u4E0D\u540C\u4E8E\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u65F6\u9700\u8981\u8BBE\u7F6E\u6B64\u9879"},"same-as-system-locale":"\u9ED8\u8BA4 ({SYS_LOCALE}) ","yaml-aliases-section-style":{name:"YAML aliases \u6837\u5F0F",description:"YAML aliases \u6837\u5F0F"},"yaml-tags-section-style":{name:"YAML tags \u6837\u5F0F",description:"YAML tags \u6837\u5F0F"},"default-escape-character":{name:"\u9ED8\u8BA4\u8F6C\u4E49\u5B57\u7B26",description:"\u5F53\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7\u4E0D\u5B58\u5728\u65F6\u7528\u4E8E\u8F6C\u4E49 YAML \u503C\u7684\u9ED8\u8BA4\u5B57\u7B26"},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\u5F53\u4F7F\u7528 YAML \u591A\u884C\u6570\u7EC4\u65F6\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26",description:"YAML \u591A\u884C\u6570\u7EC4\u7684\u8F6C\u4E49\u5B57\u7B26\u548C YAML \u5355\u884C\u6570\u7EC4\u4E0D\u540C\uFF0C\u56E0\u6B64\u5728\u4F7F\u7528\u591A\u884C\u6570\u7EC4\u65F6\uFF0C\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26"},"number-of-dollar-signs-to-indicate-math-block":{name:"\u6307\u793A Latex \u5757\u7684 $ \u7B26\u53F7\u6570\u91CF",description:"\u5C06 Latex \u5185\u5BB9\u89C6\u4E3A Latex \u5757\u800C\u4E0D\u662F\u884C\u5185 Latex \u7684 $ \u7B26\u53F7\u7684\u6570\u91CF"}},debug:{"log-level":{name:"\u65E5\u5FD7\u7EA7\u522B",description:"\u5141\u8BB8\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\uFF0C\u9ED8\u8BA4\u662F ERROR"},"linter-config":{name:"\u683C\u5F0F\u5316\u914D\u7F6E",description:"\u5728\u8BBE\u7F6E\u9875\u9762\u52A0\u8F7D\u65F6\uFF0CLinter \u4E2D data.json \u7684\u5185\u5BB9"},"log-collection":{name:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7",description:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7\u3002\u8FD9\u4E9B\u65E5\u5FD7\u6709\u52A9\u4E8E\u8C03\u8BD5\u548C\u521B\u5EFA\u9519\u8BEF\u62A5\u544A"},"linter-logs":{name:"Linter \u65E5\u5FD7",description:"\u5982\u679C\u5F00\u542F\uFF0C\u5219\u663E\u793A\u6700\u540E\u4E00\u6B21\u683C\u5F0F\u5316\u65F6\u4FDD\u5B58\u6216\u8005\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u751F\u6210\u7684\u65E5\u5FD7"}}},options:{"custom-command":{name:"\u81EA\u5B9A\u4E49\u547D\u4EE4",description:"\u81EA\u5B9A\u4E49\u547D\u4EE4\u662F\u5728 Linter \u5B8C\u6210\u683C\u5F0F\u5316\u540E\u8FD0\u884C\u7684 Obsidian \u547D\u4EE4\u3002\u8FD9\u610F\u5473\u7740 Obsidian \u547D\u4EE4\u4F1A\u5728 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u4E4B\u540E\u8FD0\u884C\uFF0C\u56E0\u6B64\u5B83\u4EEC\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5728\u4E0B\u6B21\u8FD0\u884C Linter \u65F6\u89E6\u53D1 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u3002\u4E00\u4E2A Obsidian \u547D\u4EE4\u53EA\u80FD\u9009\u62E9\u4E00\u6B21\u3002**_\u6CE8\u610F\uFF0C\u8FD9\u76EE\u524D\u4EC5\u9002\u7528\u4E8E\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6_**",warning:"\u9009\u62E9\u547D\u4EE4\u65F6\uFF0C\u8BF7\u786E\u4FDD\u4F7F\u7528\u9F20\u6807\u6216\u6309\u56DE\u8F66\u952E\u9009\u62E9\u8BE5\u9009\u9879\uFF0C\u5176\u4ED6\u9009\u62E9\u65B9\u6CD5\u53EF\u80FD\u4E0D\u8D77\u4F5C\u7528\u3002\u53EA\u6709 Obsidian \u547D\u4EE4\u6216\u7A7A\u5B57\u7B26\u4E32\u4F1A\u88AB\u4FDD\u5B58","add-input-button-text":"\u6DFB\u52A0\u65B0\u547D\u4EE4","command-search-placeholder-text":"Obsidian \u547D\u4EE4","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"},"custom-replace":{name:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362",description:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362\u53EF\u5C06\u4EFB\u610F\u7684\u6B63\u5219\u5339\u914D\u5185\u5BB9\u66FF\u6362\u4E3A\u6307\u5B9A\u503C\u3002\u67E5\u627E\u503C\u548C\u66FF\u6362\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F",warning:"\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u6B63\u5219\u8868\u8FBE\u5F0F\u662F\u4EC0\u4E48\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u3002\u53E6\u5916\uFF0C\u8BF7\u786E\u4FDD\u60A8\u4E0D\u8981\u5728 iOS \u79FB\u52A8\u8BBE\u5907\u4E0A\u4F7F\u7528\u540E\u884C\u65AD\u8A00\uFF0C\u7531\u4E8E\u8BE5\u5E73\u53F0\u4E0D\u652F\u6301\uFF0C\u4F1A\u5BFC\u81F4\u683C\u5F0F\u5316\u5931\u8D25","add-input-button-text":"\u6DFB\u52A0\u65B0\u7684\u6B63\u5219\u66FF\u6362\u89C4\u5219","regex-to-find-placeholder-text":"\u67E5\u627E\u6B63\u5219\u5F0F","flags-placeholder-text":"\u53C2\u6570","regex-to-replace-placeholder-text":"\u66FF\u6362\u6B63\u5219\u5F0F","label-placeholder-text":"\u7B80\u79F0","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"}},rules:{"auto-correct-common-misspellings":{name:"\u81EA\u52A8\u66F4\u6B63\u5E38\u89C1\u7684\u62FC\u5199\u9519\u8BEF",description:"\u901A\u8FC7\u5E38\u89C1\u62FC\u5199\u9519\u8BEF\u5B57\u5178\u81EA\u52A8\u5C06\u9519\u8BEF\u62FC\u5199\u66F4\u6B63\u4E3A\u6B63\u786E\u62FC\u5199\u3002\u6709\u5173\u81EA\u52A8\u66F4\u6B63\u5355\u8BCD\u7684\u5B8C\u6574\u5217\u8868\uFF0C\u8BF7\u53C2\u9605 [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts)","ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5C0F\u5199\u5355\u8BCD\u5217\u8868\uFF0C\u5728\u81EA\u52A8\u66F4\u6B63\u65F6\u4F1A\u5FFD\u7565"}},"add-blockquote-indentation-on-paste":{name:"\u6DFB\u52A0\u5F15\u7528\u5757\u7F29\u8FDB",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u4F4D\u4E8E\u5F15\u7528\u884C\u6216\u6807\u6CE8\u884C\uFF0C\u5219\u5C06\u5F15\u7528\u6DFB\u52A0\u5230\u9664\u7B2C\u4E00\u884C\u4EE5\u5916\u7684\u6240\u6709\u884C"},"blockquote-style":{name:"\u5F15\u7528\u5757\u6837\u5F0F",description:"\u786E\u4FDD\u5F15\u7528\u5757\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u5F15\u7528\u5757\u6807\u5FD7\u5B57\u7B26\u7684\u6837\u5F0F"}},"capitalize-headings":{name:"\u5927\u5199\u6807\u9898",description:"\u6807\u9898\u4F1A\u5728\u683C\u5F0F\u5316\u540E\u5927\u5199",style:{name:"\u6837\u5F0F",description:"\u5927\u5199\u7684\u65B9\u5F0F"},"ignore-case-words":{name:"\u5FFD\u7565\u5927\u5199\u5355\u8BCD",description:"\u5728\u6837\u5F0F\u8BBE\u4E3A\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199\u65F6\uFF0C\u4EC5\u683C\u5F0F\u5316\u5168\u5C0F\u5199\u7684\u5355\u8BCD"},"ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4E0D\u683C\u5F0F\u5316\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"},"lowercase-words":{name:"\u5C0F\u5199\u5355\u8BCD",description:"\u4FDD\u6301\u5C0F\u5199\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"}},"compact-yaml":{name:"\u7CBE\u7B80 YAML",description:"\u79FB\u9664 YAML Front-matter \u5F00\u5934\u7ED3\u5C3E\u7684\u7A7A\u884C","inner-new-lines":{name:"\u5185\u90E8\u7A7A\u884C",description:"\u79FB\u9664 YAML Front-matter \u5185\u90E8\u7684\u7A7A\u884C"}},"consecutive-blank-lines":{name:"\u8FDE\u7EED\u7A7A\u884C",description:"\u6700\u591A\u5141\u8BB8\u4E00\u4E2A\u8FDE\u7EED\u7A7A\u884C"},"convert-bullet-list-markers":{name:"\u8F6C\u6362\u65E0\u5E8F\u5217\u8868\u6807\u5FD7",description:"\u5C06\u5176\u4ED6\u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7\u8F6C\u6362\u4E3A Markdown \u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7"},"convert-spaces-to-tabs":{name:"\u8F6C\u6362\u7A7A\u683C\u4E3A\u5236\u8868\u7B26",description:"\u5C06\u524D\u5BFC\u7A7A\u683C\u8F6C\u6362\u4E3A\u5236\u8868\u7B26",tabsize:{name:"\u5236\u8868\u7B26\u5BBD\u5EA6",description:"\u5236\u8868\u7B26\u5BF9\u5E94\u7684\u7A7A\u683C\u5BBD\u5EA6"}},"emphasis-style":{name:"\u7A81\u51FA\u6837\u5F0F",description:"\u4FDD\u6301\u7A81\u51FA\u6837\u5F0F\u4E00\u81F4\u6027",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7A81\u51FA\u5185\u5BB9\u7684\u6837\u5F0F"}},"empty-line-around-blockquotes":{name:"\u5F15\u7528\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u5F15\u7528\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E\u3002**\u6CE8\u610F\uFF0C\u8FD9\u91CC\u5D4C\u5957\u5F15\u7528\u5757\u4E5F\u4F1A\u6709\u5BF9\u5E94\u7684\u7A7A\u884C**"},"empty-line-around-code-fences":{name:"\u4EE3\u7801\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u4EE3\u7801\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"empty-line-around-math-blocks":{name:"Latex \u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDDLatex \u5757\u524D\u540E\u6709\u7A7A\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"empty-line-around-tables":{name:"\u8868\u683C\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u8868\u683C\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"escape-yaml-special-characters":{name:"\u8F6C\u4E49 YAML \u7279\u6B8A\u5B57\u7B26",description:`\u8F6C\u4E49 YAML \u4E2D\u7684\u5192\u53F7(: )\uFF0C\u5355\u5F15\u53F7 (') \u548C\u53CC\u5F15\u53F7 (")`,"try-to-escape-single-line-arrays":{name:"\u5C1D\u8BD5\u8F6C\u4E49\u5355\u884C\u6570\u7EC4",description:"\u5C1D\u8BD5\u8F6C\u4E49\u6570\u7EC4\u503C\uFF0C\u5047\u8BBE\u6570\u7EC4\u4EE5`[`\u5F00\u5934\uFF0C`]`\u7ED3\u5C3E\uFF0C\u5E76\u4E14\u7531`,`\u5206\u9694"}},"file-name-heading":{name:"\u6587\u4EF6\u540D\u4F5C\u4E3A\u6807\u9898",description:"\u5982\u679C\u6CA1\u6709 H1 \u6807\u9898\uFF0C\u5219\u63D2\u5165\u6587\u4EF6\u540D\u4F5C\u4E3A H1 \u6807\u9898"},"footnote-after-punctuation":{name:"\u811A\u6CE8\u5728\u6807\u70B9\u7B26\u53F7\u540E",description:"\u786E\u4FDD\u811A\u6CE8\u5F15\u7528\u7F6E\u4E8E\u6807\u70B9\u7B26\u53F7\u4E4B\u540E\uFF0C\u800C\u4E0D\u662F\u4E4B\u524D"},"force-yaml-escape":{name:"\u5F3A\u5236 YAML \u8F6C\u4E49",description:"\u8F6C\u4E49\u6307\u5B9A YAML \u952E\u7684\u503C","force-yaml-escape-keys":{name:"\u8981\u5F3A\u5236\u8F6C\u79FB\u7684 YAML \u952E",description:"\u5982\u679C\u672A\u8F6C\u4E49\uFF0C\u5219\u4F7F\u7528 YAML \u8F6C\u4E49\u5B57\u7B26\u5BF9\u6307\u5B9A YAML \u952E\u8FDB\u884C\u8F6C\u4E49\uFF0C\u6BCF\u4E2A\u952E\u4E00\u884C\u3002 \u4E0D\u8981\u5BF9 YAML \u6570\u7EC4\u4F7F\u7528"}},"format-tags-in-yaml":{name:"\u683C\u5F0F\u5316 YAML \u4E2D\u7684 tags",description:"\u628A YAML Front-matter \u4E2D tag \u7684\u4E95\u53F7\u5220\u9664\uFF0C\u56E0\u4E3A\u4E95\u53F7\u4F1A\u4F7F tag \u65E0\u6548"},"format-yaml-array":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5141\u8BB8\u5C06\u5E38\u89C4 YAML \u6570\u7EC4\u683C\u5F0F\u5316\u4E3A\u591A\u884C\u6216\u5355\u884C\uFF0C\u5E76\u5141\u8BB8\u90E8\u5206\u6570\u7EC4(`tags`, `aliases`) \u4FDD\u7559 Obsidian \u539F\u6709\u7684 YAML \u683C\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5355\u884C\uFF0C\u5982\u679C\u5B58\u5728\u591A\u4E2A\u6761\u76EE\uFF0C\u5219\u4F1A\u53D8\u4E3A\u5355\u884C\u6570\u7EC4\u3002\u5BF9\u4E8E\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u591A\u884C\uFF0C\u60C5\u51B5\u4E5F\u662F\u5982\u6B64\uFF0C\u53EA\u662F\u5B83\u53D8\u6210\u4E86\u591A\u884C\u6570\u7EC4","alias-key":{name:"\u683C\u5F0F\u5316 YAML aliases",description:"\u6253\u5F00 YAML aliases \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\u4E0D\u5E94\u4E0E\u89C4\u5219`YAML \u6807\u9898\u522B\u540D`\u540C\u65F6\u542F\u7528\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u53EF\u80FD\u4E0D\u4F1A\u5F88\u597D\u5730\u534F\u540C\u5DE5\u4F5C\uFF0C\u6216\u8005\u5B83\u4EEC\u53EF\u80FD\u6709\u4E0D\u540C\u7684\u683C\u5F0F\u6837\u5F0F\u9009\u62E9\uFF0C\u4ECE\u800C\u5BFC\u81F4\u610F\u5916\u7ED3\u679C"},"tag-key":{name:"\u683C\u5F0F\u5316 YAML tags",description:"\u6253\u5F00 YAML tags \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E"},"default-array-style":{name:"\u9ED8\u8BA4\u7684 YAML \u6570\u7EC4\u683C\u5F0F",description:"\u9664\u4E86 tags, aliases \u6216\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4\u548C\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4\u4E4B\u5916\uFF0C\u5176\u4ED6\u4E3A\u5E38\u89C4 YAML \u6570\u7EC4\u7684\u6837\u5F0F"},"default-array-keys":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5BF9 YAML \u6570\u7EC4\u8FDB\u884C\u683C\u5F0F\u5316"},"force-single-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"},"force-multi-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"}},"header-increment":{name:"\u6807\u9898\u7EA7\u522B\u9012\u589E",description:"\u6807\u9898\u4E00\u6B21\u4EC5\u9012\u589E\u4E00\u4E2A\u7EA7\u522B","start-at-h2":{name:"\u4ECE H2 \u6807\u9898\u5F00\u59CB\u9012\u589E",description:"\u4F7F H2 \u6807\u9898\u6210\u4E3A\u6587\u4EF6\u4E2D\u7684\u6700\u5C0F\u6807\u9898\u7EA7\u522B\uFF0C\u5176\u4ED6\u7EA7\u522B\u7684\u6807\u9898\u8FDB\u884C\u76F8\u5E94\u7684\u9012\u63A8"}},"heading-blank-lines":{name:"\u6807\u9898\u7A7A\u884C",description:"\u4FDD\u8BC1\u6240\u6709\u6807\u9898\u524D\u540E\u5747\u6709\u4E00\u4E2A\u7A7A\u884C\uFF08\u9664\u975E\u6807\u9898\u4F4D\u4E8E\u6587\u6863\u5F00\u5934\u6216\u7ED3\u5C3E\u5904\uFF09",bottom:{name:"\u5E95\u90E8",description:"\u5728\u6807\u9898\u540E\u63D2\u5165\u4E00\u4E2A\u7A7A\u884C"},"empty-line-after-yaml":{name:"YAML \u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u4FDD\u7559 YAML Front-matter \u548C\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C"}},"headings-start-line":{name:"\u6807\u9898\u5BF9\u9F50\u884C\u9996",description:"\u5C06\u4E0D\u4EE5\u884C\u9996\u5F00\u59CB\u7684\u6807\u9898\u524D\u9762\u7684\u7A7A\u767D\u5220\u9664\uFF0C\u6807\u9898\u80FD\u88AB\u6B63\u786E\u8BC6\u522B"},"insert-yaml-attributes":{name:"\u63D2\u5165 YAML \u5C5E\u6027",description:"\u628A\u6307\u5B9A\u7684 YAML \u952E\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A\u952E\u5360\u4E00\u884C","text-to-insert":{name:"\u8981\u63D2\u5165\u7684\u952E",description:"\u8981\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u7684\u952E"}},"line-break-at-document-end":{name:"\u6587\u4EF6\u7ED3\u5C3E\u6362\u884C",description:"\u786E\u4FDD\u6587\u6863\u7ED3\u5C3E\u6709\u4E00\u884C\u7A7A\u884C"},"move-footnotes-to-the-bottom":{name:"\u79FB\u52A8\u811A\u6CE8\u81F3\u5E95\u90E8",description:"\u5C06\u6240\u6709\u811A\u6CE8\u79FB\u52A8\u5230\u6587\u6863\u5E95\u90E8"},"move-math-block-indicators-to-their-own-line":{name:"\u683C\u5F0F\u5316 Latex \u5757\u6807\u5FD7",description:"\u5C06 Latex \u5757\u6807\u5FD7\u79FB\u5230\u65B0\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"move-tags-to-yaml":{name:"\u5C06 tags \u79FB\u81F3 YAML",description:"\u5C06\u6587\u6863\u5185\u6240\u6709\u7684 tags \u79FB\u52A8\u5230 YAML Front-matter \u5185","how-to-handle-existing-tags":{name:"\u5982\u4F55\u5904\u7406\u539F\u6709\u7684 tag",description:"\u5BF9\u4E8E\u6587\u6863\u4E2D\u975E\u88AB\u5FFD\u7565\u7684 tag\uFF0C\u79FB\u52A8\u5230 YAML Front-matter \u540E\u5E94\u8BE5\u91C7\u53D6\u4F55\u79CD\u64CD\u4F5C\uFF1F"},"tags-to-ignore":{name:"\u5FFD\u7565\u7684 tag",description:"\u8FD9\u4E9B tags \u4E0D\u4F1A\u88AB\u79FB\u52A8 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A tag \u6309\u884C\u5206\u9694\uFF0C\u4E0D\u8981\u5305\u542B`#`"}},"no-bare-urls":{name:"\u7981\u6B62\u539F\u59CB URL",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u56F4\uFF0C\u5426\u5219\u5C06\u539F\u59CB URL \u7528\u5C16\u62EC\u53F7\u5305\u56F4"},"ordered-list-style":{name:"\u6709\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u6709\u5E8F\u5217\u8868\u9075\u5FAA\u6307\u5B9A\u7684\u6837\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C2\u4E2A\u7A7A\u683C\u62161\u4E2A\u5236\u8868\u7B26\u88AB\u89C6\u4E3A\u4E00\u4E2A\u7F29\u8FDB\u7EA7\u522B","number-style":{name:"\u6392\u5E8F\u65B9\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u5E8F\u53F7\u683C\u5F0F\u5316\u65B9\u5F0F"},"list-end-style":{name:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F"}},"paragraph-blank-lines":{name:"\u6BB5\u843D\u7A7A\u884C",description:"\u6BCF\u4E2A\u6BB5\u843D\u524D\u540E\u4FDD\u8BC1\u6709\u4E14\u4EC5\u6709\u4E00\u884C\u7A7A\u884C"},"prevent-double-checklist-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684 checklist \u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709 checklist \u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664 checklist \u6807\u5FD7"},"prevent-double-list-item-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709\u5217\u8868\u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u5217\u8868\u6807\u5FD7"},"proper-ellipsis-on-paste":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7C98\u8D34\u65F6\uFF0C\u5373\u4F7F\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u6709\u7A7A\u683C\uFF0C\u4E5F\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"proper-ellipsis":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"quote-style":{name:"\u5F15\u53F7\u6837\u5F0F",description:"\u683C\u5F0F\u5316\u6B63\u6587\u5185\u5BB9\u4E2D\u7684\u5F15\u53F7\u6837\u5F0F\u4E3A\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7","single-quote-enabled":{name:"\u542F\u7528\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"single-quote-style":{name:"\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"double-quote-enabled":{name:"\u542F\u7528\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"},"double-quote-style":{name:"\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"}},"re-index-footnotes":{name:"\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8",description:"\u57FA\u4E8E\u51FA\u73B0\u7684\u987A\u5E8F\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8\u3002**\u6CE8\u610F\uFF0C\u5982\u679C\u4E00\u4E2A\u952E\u5BF9\u5E94\u591A\u4E2A\u811A\u6CE8\uFF0C\u5219\u6B64\u89C4\u5219\u4E0D\u9002\u7528**"},"remove-consecutive-list-markers":{name:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7\u3002\u590D\u5236\u7C98\u8D34\u5217\u8868\u9879\u65F6\u5F88\u6709\u7528"},"remove-empty-lines-between-list-markers-and-checklists":{name:"\u79FB\u9664\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u4E0D\u5E94\u6709\u7A7A\u884C"},"remove-empty-list-markers":{name:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7\uFF0C\u6BD4\u5982\u5217\u8868\u540E\u6CA1\u5185\u5BB9"},"remove-hyphenated-line-breaks":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u79FB\u9664\u4E2D\u5212\u7EBF\u8FDE\u5B57\u7B26\u3002\u4ECE\u6587\u7AE0\u4E2D\u7C98\u8D34\u65F6\u5F88\u6709\u7528"},"remove-hyphens-on-paste":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8FDE\u5B57\u7B26"},"remove-leading-or-trailing-whitespace-on-paste":{name:"\u79FB\u9664\u524D\u5BFC\u6216\u5C3E\u968F\u7A7A\u683C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u4EFB\u4F55\u524D\u5BFC\u975E\u5236\u8868\u7B26\u7A7A\u683C\u548C\u6240\u6709\u5C3E\u968F\u7A7A\u683C"},"remove-leftover-footnotes-from-quote-on-paste":{name:"\u79FB\u9664\u591A\u4F59\u811A\u6CE8",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u591A\u4F59\u811A\u6CE8"},"remove-link-spacing":{name:"\u79FB\u9664\u94FE\u63A5\u7A7A\u683C",description:"\u79FB\u9664\u94FE\u63A5\u6587\u672C\u9996\u5C3E\u7684\u7A7A\u683C"},"remove-multiple-blank-lines-on-paste":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u884C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u5C06\u591A\u4E2A\u7A7A\u884C\u538B\u7F29\u4E3A\u4E00\u4E2A\u7A7A\u884C"},"remove-multiple-spaces":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u683C",description:"\u79FB\u9664\u4E24\u4E2A\u6216\u66F4\u591A\u8FDE\u7EED\u7684\u7A7A\u683C\uFF0C\u5FFD\u7565\u884C\u9996\u548C\u884C\u5C3E\u7684\u7A7A\u683C"},"remove-space-around-characters":{name:"\u79FB\u9664\u5B57\u7B26\u5468\u56F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u67D0\u4E9B\u5B57\u7B26\u5468\u56F4\u6CA1\u6709\u7A7A\u683C\uFF08\u5305\u62EC\u5355\u4E2A\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\u3002**\u6CE8\u610F\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u5F71\u54CD markdown \u683C\u5F0F**","include-fullwidth-forms":{name:"\u5305\u62EC\u5168\u89D2\u5F62\u5F0F",description:'\u5305\u62EC\u5168\u89D2\u5F62\u5F0FUnicode\u5757'},"include-cjk-symbols-and-punctuation":{name:"\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9",description:'\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9Unicode\u5757'},"include-dashes":{name:"\u5305\u62EC\u7834\u6298\u53F7",description:"\u5305\u62EC en dash (\u2013) \u548C em dash (\u2014)"},"other-symbols":{name:"\u5176\u4ED6\u7B26\u53F7",description:"\u8981\u5305\u62EC\u7684\u5176\u4ED6\u7B26\u53F7"}},"remove-space-before-or-after-characters":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u4E4B\u524D\u548C\u6307\u5B9A\u5B57\u7B26\u4E4B\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4 markdown \u683C\u5F0F\u51FA\u73B0\u95EE\u9898**","characters-to-remove-space-before":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u524D\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"},"characters-to-remove-space-after":{name:"\u79FB\u9664\u5B57\u7B26\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"}},"remove-trailing-punctuation-in-heading":{name:"\u79FB\u9664\u6807\u9898\u4E2D\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u4ECE\u6807\u9898\u7684\u672B\u5C3E\u5220\u9664\u6307\u5B9A\u7684\u6807\u70B9\u7B26\u53F7\uFF0C\u786E\u4FDD\u5FFD\u7565[HTML \u5B57\u7B26\u5B9E\u4F53](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)\u672B\u5C3E\u7684\u5206\u53F7","punctuation-to-remove":{name:"\u8981\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u8981\u4ECE\u6587\u4EF6\u6807\u9898\u7ED3\u5C3E\u4E2D\u5220\u9664\u7684\u6807\u70B9\u7B26\u53F7"}},"remove-yaml-keys":{name:"\u79FB\u9664 YAML \u952E",description:"\u79FB\u9664\u6307\u5B9A\u7684 YAML \u952E","yaml-keys-to-remove":{name:"\u9700\u8981\u79FB\u9664\u7684 YAML \u952E",description:"\u8981\u4ECE YAML Front-matter \u4E2D\u5220\u9664\u7684 YAML \u952E \uFF08\u53EF\u5E26\u6216\u4E0D\u5E26\u5192\u53F7\uFF09"}},"space-after-list-markers":{name:"\u5217\u8868\u6807\u5FD7\u7A7A\u683C",description:"\u5217\u8868\u6807\u5FD7\u548C checkbox \u540E\u5E94\u6709\u4E00\u4E2A\u7A7A\u683C"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\u4E2D\u65E5\u97E9\u8BED\u4E0E\u82F1\u8BED\u6216\u6570\u5B57\u4E4B\u95F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u4E2D\u6587\u3001\u65E5\u6587\u6216\u97E9\u6587\u548C\u82F1\u6587\u6216\u6570\u5B57\u7531\u5355\u4E2A\u7A7A\u683C\u5206\u9694. [\u53C2\u8003\u94FE\u63A5](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"\u7C97\u4F53\u6837\u5F0F",description:"\u786E\u4FDD\u7C97\u4F53\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7C97\u4F53\u7684\u6837\u5F0F"}},"trailing-spaces":{name:"\u672B\u5C3E\u7A7A\u683C",description:"\u79FB\u9664\u6BCF\u884C\u672B\u5C3E\u591A\u4F59\u7684\u7A7A\u683C","twp-space-line-break":{name:"\u4E24\u7A7A\u683C\u6362\u884C",description:'\u5FFD\u7565\u4E24\u4E2A\u7A7A\u683C\u540E\u63A5\u6362\u884C\u7B26\u7684\u60C5\u51B5\uFF08"\u4E24\u7A7A\u683C\u89C4\u5219"\uFF09'}},"two-spaces-between-lines-with-content":{name:"\u5185\u5BB9\u95F4\u9694\u4E24\u4E2A\u7A7A\u683C",description:"\u786E\u4FDD\u5728\u6BB5\u843D\u3001\u5F15\u7528\u548C\u5217\u8868\u9879\u4E2D\uFF0C\u6700\u540E\u4E00\u884C\u5185\u5BB9\u7684\u884C\u672B\u6DFB\u52A0\u4E24\u4E2A\u7A7A\u683C"},"unordered-list-style":{name:"\u65E0\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u65E0\u5E8F\u5217\u8868\u7B26\u5408\u6307\u5B9A\u7684\u6837\u5F0F","list-style":{name:"\u5217\u8868\u9879\u6837\u5F0F",description:"\u5217\u8868\u9879\u9700\u8981\u6307\u5B9A\u7684\u6837\u5F0F"}},"yaml-key-sort":{name:"YAML \u952E\u6392\u5E8F",description:"\u6839\u636E\u6307\u5B9A\u7684\u987A\u5E8F\u548C\u4F18\u5148\u7EA7\u5BF9 YAML \u952E\u8FDB\u884C\u6392\u5E8F\u3002**\u6CE8\u610F\uFF0C\u4E5F\u8BB8\u4E5F\u4F1A\u5220\u9664\u7A7A\u884C**","yaml-key-priority-sort-order":{name:"YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\u7684\u987A\u5E8F\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E\uFF0C\u6309\u5217\u8868\u4E2D\u7684\u987A\u5E8F\u8FDB\u884C\u6392\u5E8F"},"priority-keys-at-start-of-yaml":{name:"\u6392\u5E8F\u952E\u653E\u5728 YAML \u5F00\u5934",description:"\u6309\u7167 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u5C06\u952E\u653E\u4E8E YAML Front-matter \u5F00\u5934"},"yaml-sort-order-for-other-keys":{name:"YAML \u5176\u5B83\u952E\u7684\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u4E2D\u672A\u627E\u5230\u7684\u952E\u8FDB\u884C\u6392\u5E8F"}},"yaml-timestamp":{name:"YAML \u65F6\u95F4\u6233",description:"\u5728 YAML Front-matter \u4E2D\u8BB0\u5F55\u4E0A\u6B21\u7F16\u8F91\u6587\u6863\u7684\u65E5\u671F\u3002\u4ECE\u6587\u6863\u5143\u6570\u636E\u4E2D\u83B7\u53D6\u65E5\u671F\u6570\u636E","date-created":{name:"\u521B\u5EFA\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u521B\u5EFA\u65E5\u671F"},"date-created-key":{name:"\u521B\u5EFA\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u521B\u5EFA\u65E5\u671F"},"force-retention-of-create-value":{name:"\u5F3A\u5236\u4FDD\u7559\u521B\u5EFA\u65E5\u671F\u503C",description:"\u6CBF\u7528 YAML Front-matter \u4E2D\u5DF2\u6709\u7684\u521B\u5EFA\u65E5\u671F\uFF0C\u5FFD\u7565\u6587\u6863\u5143\u6570\u636E\u3002\u5BF9\u4E8E\u6587\u6863\u5143\u6570\u636E\u66F4\u6539\uFF08\u6BD4\u5982\u590D\u5236\u6587\u4EF6\uFF09\u5BFC\u81F4\u7684\u521B\u5EFA\u65F6\u95F4\u66F4\u6539\u975E\u5E38\u6709\u7528"},"date-modified":{name:"\u4FEE\u6539\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u6700\u8FD1\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F"},"date-modified-key":{name:"\u4FEE\u6539\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u4FEE\u6539\u65E5\u671F"},format:{name:"\u683C\u5F0F",description:"Moment.js \u8BED\u6CD5\u683C\u5F0F\uFF08\u8BE6\u60C5\u8BBE\u7F6E\u89C1[Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/)"}},"yaml-title-alias":{name:"YAML \u6807\u9898\u522B\u540D",description:"\u5C06\u6587\u6863\u7684\u6807\u9898\u63D2\u5165 YAML Front-matter \u7684 aliases \u90E8\u5206\u3002\u4ECE\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u6863\u540D\u4E2D\u83B7\u53D6\u503C","preserve-existing-alias-section-style":{name:"\u4FDD\u7559\u73B0\u6709\u522B\u540D\u90E8\u5206\u6837\u5F0F",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u6B64\u9879\u4EC5\u5728\u65B0\u521B\u5EFA\u7684\u522B\u540D\u90E8\u5206\u751F\u6548"},"keep-alias-that-matches-the-filename":{name:"\u786E\u4FDD\u522B\u540D\u4E0E\u6587\u4EF6\u540D\u5339\u914D",description:"\u8FD9\u6837\u7684\u522B\u540D\u901A\u5E38\u662F\u5197\u4F59\u7684"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"\u4F7F\u7528 YAML \u952E `linter-yaml-title-alias` \u6765\u4FDD\u7559\u6807\u9898\u4FEE\u6539\u8BB0\u5F55",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u5F53\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u66F4\u6539\u6216\u6587\u6863\u540D\u66F4\u6539\u65F6\uFF0C\u6B64\u952E\u4E2D\u5B58\u50A8\u7684\u65E7 aliases \u5C06\u66FF\u6362\u4E3A\u65B0\u503C\uFF0C\u800C\u4E0D\u4EC5\u4EC5\u662F\u5728 aliases \u4E2D\u63D2\u5165\u65B0\u6761\u76EE"}},"yaml-title":{name:"YAML \u6807\u9898",description:"\u5C06\u6587\u4EF6\u7684\u6807\u9898\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002 \u6839\u636E\u6240\u9009\u6A21\u5F0F\u83B7\u53D6\u6807\u9898","title-key":{name:"\u6807\u9898\u952E",description:"\u6807\u9898\u4F7F\u7528\u54EA\u4E00\u4E2A YAML \u952E"},mode:{name:"\u6A21\u5F0F",description:"\u7528\u4E8E\u83B7\u53D6\u6807\u9898\u7684\u65B9\u6CD5"}}},enums:{"Title Case":"\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199","ALL CAPS":"\u5168\u90E8\u5927\u5199","First letter":"\u4EC5\u9996\u5B57\u6BCD\u5927\u5199",".":".",")":")",ERROR:"ERROR",TRACE:"TRACE",DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",SILENT:"SILENT",ascending:"\u5347\u5E8F",lazy:"\u5168\u4E3A1",Nothing:"\u65E0","Remove hashtag":"\u79FB\u9664hashtag","Remove whole tag":"\u79FB\u9664\u6574\u4E2A tag",asterisk:"\u661F\u53F7(*)",underscore:"\u4E0B\u5212\u7EBF(_)",consistent:"\u4FDD\u6301\u4E00\u81F4","-":"-","*":"*","+":"+",space:"\u6709\u7A7A\u683C","no space":"\u65E0\u7A7A\u683C",None:"\u65E0","Ascending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u5347\u5E8F","Descending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u964D\u5E8F","multi-line":"\u591A\u884C\u6570\u7EC4","single-line":"\u5355\u884C\u6570\u7EC4","single string to single-line":"\u5B57\u7B26\u4E32\u8F6C\u5355\u884C\u6570\u7EC4","single string to multi-line":"\u5B57\u7B26\u4E32\u8F6C\u591A\u884C\u6570\u7EC4","single string comma delimited":"\u9017\u53F7\u5206\u9694\u5B57\u7B26\u4E32","single string space delimited":"\u7A7A\u683C\u5206\u9694\u5B57\u7B26\u4E32","single-line space delimited":"\u7A7A\u683C\u5206\u9694\u5355\u884C\u6570\u7EC4","first-h1":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898","first-h1-or-filename-if-h1-missing":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u4EF6\u540D\uFF08\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u4E0D\u5B58\u5728\u65F6\uFF09",filename:"\u6587\u4EF6\u540D","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D"}};var yd={};var bd={ar:Zc,cz:Jc,da:Xc,de:ed,en:So,es:id,fr:td,hi:nd,id:rd,it:ad,ja:sd,ko:od,nl:ld,no:cd,pl:dd,"pt-BR":pd,pt:ud,ro:md,ru:gd,sq:hd,tr:ka,uk:ka,"zh-TW":yd,zh:fd},Sa="en",za=bd[Sa];function Aa(e){Sa=e,za=bd[Sa||"en"]}function T(e){return za||rt(`locale not found for '${Sa}'`),za&&On(za,e)||On(So,e)}var La=function(e){if(e==null)return zh;if(typeof e=="string")return kh(e);if(typeof e=="object")return Array.isArray(e)?xh(e):wh(e);if(typeof e=="function")return Ta(e);throw new Error("Expected function, string, or object as test")};function xh(e){let t=[],i=-1;for(;++i":""))+")"})}return u;function u(){let m=[],g,h,v;if((!t||r(o,l,d[d.length-1]||null))&&(m=Sh(i(o,d)),m[0]===Ea))return m;if(o.children&&m[0]!==Lo)for(h=(n?o.children.length:-1)+a,v=d.concat(o);h>-1&&h=0;){let r=e.charAt(n);if(r===` -`)break;r.trim()===""||r===">"?i=r+i:i="",n--}return[i,n]}function Eo(e=""){let[t]=xd(e,e.length);return` -`+t.trim()}function wd(e="",t=!1,i=1){let n=Eo(e),r=qn(n,">");return(t||Oo.test(e))&&i===r?n.substring(0,n.lastIndexOf(">")):n}function Ah(e,t){if(t===0)return e;let i=t,n=t;for(;i>=0;){let r=e.charAt(i);if(r.trim()!=="")break;r===` +`+t.stack),re.default.error(i),ir&&es(i.substring(i.indexOf("]")+2),re.default.levels.TRACE)}function vn(e){re.default.info(`${Ja} ${e}`),ir&&es(e,re.default.levels.INFO)}function ii(e){re.default.debug(`${Ja} ${e}`),ir&&es(e,re.default.levels.DEBUG)}function Yi(e){re.default.warn(`${Ja} ${e}`),ir&&es(e,re.default.levels.WARN)}function zt(e){re.default.getLevel()>re.default.levels.DEBUG||tl.set(e,performance.now())}function Ji(e){if(re.default.getLevel()>re.default.levels.DEBUG)return;tl.has(e)||Yi(A("logs.timing-key-not-found").replace("{TIMING_KEY}",e));let t=performance.now()-tl.get(e);ii(`${e}: ${t} `+A("logs.milliseconds-abbreviation"))}function es(e,t){re.default.getLevel()<=t&&Xa.push(e)}function Rd(){Xa=[]}function nl(e){ir=e}function is(e){switch(e){case"INFO":{re.default.setLevel("info");break}case"TRACE":{re.default.setLevel("trace");break}case"DEBUG":{re.default.setLevel("debug");break}case"SILENT":{re.default.setLevel("silent");break}case"ERROR":{re.default.setLevel("error");break}case"WARN":{re.default.setLevel("warn");break}}}function Dd(e){switch(e){case re.default.levels.INFO:return"INFO";case re.default.levels.TRACE:return"TRACE";case re.default.levels.DEBUG:return"DEBUG";case re.default.levels.SILENT:return"SILENT";case re.default.levels.ERROR:return"ERROR";case re.default.levels.WARN:return"WARN"}}var Kd={};var _d={};var Nd={};var jd={commands:{"lint-file":{name:"Linten Sie die aktuelle Datei","error-message":"Lint-Datei-Fehler in der Datei"},"lint-file-unless-ignored":{name:"Linten Sie die aktuelle Datei, es sei denn, sie wird ignoriert"},"lint-all-files":{name:"Linten Sie alle Dateien im Vault","error-message":"Beim Linten aller Dateien Fehler in der Datei","success-message":"Alle Dateien gelinted","errors-message-singular":"Beim Linten aller Dateien gab es einen Fehler.","errors-message-plural":"Beim Linten aller Dateien gab es {NUM} Fehler.","start-message":"Dadurch werden alle Ihre Dateien ver\xE4ndert und es k\xF6nnen Fehler entstehen.","submit-button-text":"Linte alle","submit-button-notice-text":"Linte alle Dateien..."},"lint-all-files-in-folder":{name:"Linte alle Dateien im aktuellen Ordner","start-message":"Dadurch werden alle Ihre Dateien in {FOLDER_NAME} bearbeitet, einschlie\xDFlich der Dateien in den Unterordnern, was zu Fehlern f\xFChren kann.","submit-button-text":"Linte alle Dateien in {FOLDER_NAME}","submit-button-notice-text":"Linten aller Dateien in {FOLDER_NAME}...","error-message":"Beim Linten aller Dateien im Ordner gab es Fehler in der Datei","success-message":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted.","message-singular":"Alle {NUM}-Dateien in {FOLDER_NAME} wurden gelinted und es trat ein Fehler auf.","message-plural":"Alle {FILE_COUNT}-Dateien in {FOLDER_NAME} wurden gelinted und es gab {ERROR_COUNT} Fehler."},"paste-as-plain-text":{name:"Einf\xFCgen als reiner Text und ohne \xC4nderungen"},"lint-file-pop-up-menu-text":{name:"Linte Datei"},"lint-folder-pop-up-menu-text":{name:"Linte Ordner"}},logs:{"plugin-load":"Plugin wird geladen","plugin-unload":"Plugin entladen","folder-lint":"Linting-Ordner ","linter-run":"Laufender Linter","paste-link-warning":"Abgebrochenes Einf\xFCgen des Lints, da der Inhalt der Zwischenablage ein Link ist, wodurch Konflikte mit anderen Plugins vermieden werden, die das Einf\xFCgen \xE4ndern.","see-console":"Weitere Informationen finden Sie in der Konsole.","unknown-error":"Beim Linten ist ein unbekannter Fehler aufgetreten.","moment-locale-not-found":"Beim Versuch, Moment.js locale auf {MOMENT_LOCALE} umzustellen, wurde {CURRENT_LOCALE} angezeigt","file-change-lint-message-start":"Linted","pre-rules":"Regeln vor regul\xE4ren Regeln","post-rules":"Regeln nach regul\xE4ren Regeln","rule-running":"Laufende Regeln","custom-regex":"Benutzerdefinierte Regex-Regeln","running-custom-regex":"Ausf\xFChren von benutzerdefinierten Regex","running-custom-lint-command":"Ausf\xFChren von benutzerdefinierten Lint-Befehlen","custom-lint-duplicate-warning":'Sie k\xF6nnen denselben Befehl ("{COMMAND_NAME}") nicht zweimal als benutzerdefinierte Lint-Regel ausf\xFChren.',"custom-lint-error-message":"Benutzerdefinierter Lint-Befehl","disabled-text":"ist deaktiviert","run-rule-text":"L\xE4uft","timing-key-not-found":"Der Timing-Schl\xFCssel '{TIMING_KEY}' ist in der Timing-Info-Liste nicht vorhanden, daher wurde er ignoriert","milliseconds-abbreviation":"ms","invalid-date-format-error":"Das Format des Erstellungsdatums '{DATE}' konnte nicht analysiert oder bestimmt werden, sodass das Erstellungsdatum in '{FILE_NAME}","invalid-delimiter-error-message":"Trennzeichen darf nur ein einzelnes Zeichen sein","missing-footnote-error-message":"Die Fu\xDFnote '{FOOTNOTE}' hat keinen entsprechenden Fu\xDFnotenverweis vor dem Fu\xDFnoteninhalt und kann nicht verarbeitet werden. Bitte achten Sie darauf, dass alle Fu\xDFnoten vor dem Inhalt der Fu\xDFnote einen entsprechenden Verweis haben.","too-many-footnotes-error-message":"Der Fu\xDFnotenschl\xFCssel '{FOOTNOTE_KEY}' hat mehr als 1 Fu\xDFnote, die darauf verweist. Bitte aktualisieren Sie die Fu\xDFnoten so, dass es nur noch eine Fu\xDFnote pro Fu\xDFnotenschl\xFCssel gibt.","wrapper-yaml-error":"Fehler in der YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"Unbekannter Fehler: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"Es gibt keinen Inhalt in der Zwischenablage.","characters-added":"Zeichen hinzugef\xFCgt","characters-removed":"Zeichen entfernt","copy-to-clipboard-failed":"Kopieren des Textes in die Zwischenablage fehlgeschlagen: "},"all-rules-option":"Alle","linter-title":"Linter","empty-search-results-text":"Keine Einstellungen stimmen mit der Suche \xFCberein","warning-text":"Warnung","file-backup-text":"Stellen Sie sicher, dass Sie Ihre Dateien gesichert haben.",tabs:{names:{general:"Allgemein",custom:"Individuell",yaml:"YAML",heading:"\xDCberschrift",content:"Inhalt",footnote:"Fu\xDFnote",spacing:"Abstand",paste:"Einf\xFCgen",debug:"Debuggen"},"default-search-bar-text":"Alle Einstellungen durchsuchen",general:{"lint-on-save":{name:"Linten beim Speichern",description:"Linten der Datei beim manuellen Speichern (wenn `Strg + S` gedr\xFCckt wird oder wenn `:w` ausgef\xFChrt wird, w\xE4hrend vim-Tastenkombinationen verwendet werden)"},"display-message":{name:"Meldung beim Linten anzeigen",description:"Zeigen Sie die Anzahl der Zeichen an, die sich nach dem Linten ge\xE4ndert haben"},"lint-on-file-change":{name:"Linten bei Datei\xE4nderungen",description:"Wenn eine Datei geschlossen oder zu einer neuen Datei gewechselt wird, wird die vorherige Datei gelinted."},"display-lint-on-file-change-message":{name:"Nachricht beim Linten nach einer Datei\xE4nderung anzeigen",description:"Zeigt eine Meldung an, wenn `Linten bei Datei\xE4nderungen` ausgel\xF6st wurde"},"folders-to-ignore":{name:"Ordner, die ignoriert werden sollen",description:"Ordner, die ignoriert werden sollen, wenn alle Dateien gelinted oder beim Speichern gelinted werden. Geben Sie Ordnerpfade ein, die durch Zeilenumbr\xFCche getrennt sind","folder-search-placeholder-text":"Ordner-Name","add-input-button-text":"Einen anderen zu ignorierenden Ordner hinzuf\xFCgen","delete-tooltip":"L\xF6schen"},"override-locale":{name:"Gebietsschema \xFCberschreiben",description:"Legen Sie diese Option fest, wenn Sie ein anderes Gebietsschema als das Standardgebietsschema verwenden m\xF6chten"},"same-as-system-locale":"Identisch mit System ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML-Aliase-Abschnittsstil",description:"Der Stil des YAML-Aliasabschnitts"},"yaml-tags-section-style":{name:"Abschnittsstil f\xFCr YAML-Tags",description:"Der Stil des YAML-Tags-Abschnitts"},"default-escape-character":{name:"Standard-Escape-Zeichen",description:"Das Standardzeichen, das zum Maskieren von YAML-Werten verwendet werden soll, wenn ein einfaches Anf\xFChrungszeichen und kein doppeltes Anf\xFChrungszeichen vorhanden sind."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Entfernen Sie unn\xF6tige Escape-Zeichen im mehrzeiligen Array-Format",description:"Escape-Zeichen f\xFCr mehrzeilige YAML-Arrays ben\xF6tigen nicht die gleiche Escape-Funktion wie einzeilige Arrays. Entfernen Sie also im mehrzeiligen Format zus\xE4tzliche Escapezeichen, die nicht erforderlich sind"},"number-of-dollar-signs-to-indicate-math-block":{name:"Anzahl der Dollarzeichen, die den Matheblock anzeigen",description:"Die Anzahl der Dollarzeichen, um den mathematischen Inhalt als mathematischen Block anstelle von Inline-Mathematik zu betrachten"}},debug:{"log-level":{name:"Log-Ebene",description:"Die Arten von Logmeldungen, die vom Dienst protokolliert werden d\xFCrfen. Der Standardwert ist Fehler."},"linter-config":{name:"Linter-Konfiguration",description:"Der Inhalt der data.json f\xFCr den Linter zum Zeitpunkt des Ladens der Einstellungsseite"},"log-collection":{name:"Sammeln Sie Protokolle bei aktiviertem `Linten beim Speichern` und dem Linten der aktuellen Datei",description:"Sammelt die Log-Meldungen, wenn Sie `Linten beim Speichern` aktiviert haben und die aktuelle Datei linten. Diese Protokolle k\xF6nnen beim Debuggen und Erstellen von Fehlerberichten hilfreich sein."},"linter-logs":{name:"Linter-Protokolle",description:"Die Protokolle des letzten `Linten beim Speichern`-Durchlaufes oder dem letzten Linten der aktuellen Datei werden gesammelt, wenn die Option aktiviert ist."}}},options:{"custom-command":{name:"Benutzerdefinierte Befehle",description:"Benutzerdefinierte Befehle sind Obsidian-Befehle, die ausgef\xFChrt werden, nachdem der Linter seine regul\xE4ren Regeln ausgef\xFChrt hat. Dies bedeutet, dass sie nicht ausgef\xFChrt werden, bevor die YAML-Zeitstempellogik ausgef\xFChrt wird, sodass sie dazu f\xFChren k\xF6nnen, dass der YAML-Zeitstempel bei der n\xE4chsten Ausf\xFChrung des Linters ausgel\xF6st wird. Sie k\xF6nnen einen Obsidian-Befehl nur einmal ausw\xE4hlen. **_Beachten Sie, dass dies derzeit nur beim Linten der aktuellen Datei funktioniert._**",warning:"Wenn Sie eine Option ausw\xE4hlen, stellen Sie sicher, dass Sie die Option entweder mit der Maus oder durch Dr\xFCcken der Eingabetaste ausw\xE4hlen. Andere Auswahlmethoden funktionieren m\xF6glicherweise nicht und es werden nur Auswahlen eines tats\xE4chlichen Obsidian-Befehls oder einer leeren Zeichenfolge gespeichert.","add-input-button-text":"Neuen Befehl hinzuf\xFCgen","command-search-placeholder-text":"Obsidian-Befehl","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"},"custom-replace":{name:"Benutzerdefinierter Regex-Ersatz",description:"Der benutzerdefinierte Regex-Ersatz kann verwendet werden, um alles zu ersetzen, was mit dem Such-Regex mit dem Ersatzwert \xFCbereinstimmt. Bei den Werten replace und find muss es sich um g\xFCltige Regex-Werte handeln.",warning:"Verwenden Sie dies mit Vorsicht, wenn Sie Regex nicht kennen. Stellen Sie au\xDFerdem sicher, dass Sie keine Lookbehinds in Ihrem regul\xE4ren Ausdruck auf iOS-Mobilger\xE4ten verwenden, da dies dazu f\xFChrt, dass Lints fehlschlagen, da dies auf dieser Plattform nicht unterst\xFCtzt wird.","add-input-button-text":"Neuen Regex-Ersatz hinzuf\xFCgen","regex-to-find-placeholder-text":"Regex zu finden","flags-placeholder-text":"Flaggen","regex-to-replace-placeholder-text":"Regex zu ersetzen","label-placeholder-text":"Etikett","move-up-tooltip":"Aufr\xFCcken","move-down-tooltip":"Bewegen Sie sich nach unten","delete-tooltip":"L\xF6schen"}},rules:{"auto-correct-common-misspellings":{name:"H\xE4ufige Rechtschreibfehler automatisch korrigieren",description:"Verwendet ein W\xF6rterbuch mit h\xE4ufigen Rechtschreibfehlern, um sie automatisch in die richtige Schreibweise umzuwandeln. Siehe [Autokorrekturkarte](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) f\xFCr die vollst\xE4ndige Liste der automatisch korrigierten W\xF6rter.","ignore-words":{name:"Ignorieren Sie W\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern in Kleinbuchstaben, die bei der automatischen Korrektur ignoriert werden sollen"}},"add-blockquote-indentation-on-paste":{name:"Blockquote-Einr\xFCckung beim Einf\xFCgen hinzuf\xFCgen",description:"F\xFCgt Blockzitate zu allen au\xDFer der ersten Zeile hinzu, wenn sich der Cursor w\xE4hrend des Einf\xFCgens in einer Blockquote/Callout-Zeile befindet"},"blockquote-style":{name:"Blockquote-Stil",description:"Stellt sicher, dass der Blockquote-Stil konsistent ist.",style:{name:"Stil",description:"Der f\xFCr Blockquote-Indikatoren verwendete Stil"}},"capitalize-headings":{name:"\xDCberschriften gro\xDF schreiben",description:"\xDCberschriften sollten mit Gro\xDF- und Kleinschreibung formatiert werden",style:{name:"Stil",description:"Die Art der zu verwendenden Gro\xDFschreibung"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignorieren Sie Gro\xDF-/Kleinschreibungsw\xF6rter",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, die bei der Gro\xDFschreibung ignoriert werden sollen"},"lowercase-words":{name:"W\xF6rter in Kleinbuchstaben",description:"Eine durch Kommas getrennte Liste von W\xF6rtern, um Kleinbuchstaben zu behalten"}},"compact-yaml":{name:"YAML komprimieren",description:"Entfernt f\xFChrende und nachfolgende Leerzeilen im YAML-Frontmatter.","inner-new-lines":{name:"Innere neue Zeilen",description:"Entfernen Sie neue Zeilen, die sich nicht am Anfang oder am Ende der YAML befinden"}},"consecutive-blank-lines":{name:"aufeinanderfolgende Leerzeilen zusammenfassen",description:"Es sollte h\xF6chstens eine aufeinanderfolgende Leerzeile geben."},"convert-bullet-list-markers":{name:"Konvertiere Aufz\xE4hlungszeichen",description:"Konvertiert g\xE4ngige Symbole f\xFCr Aufz\xE4hlungslisten in Markdown-Listenmarkierungen."},"convert-spaces-to-tabs":{name:"Leerzeichen in Tabulatoren konvertieren",description:"Konvertiert f\xFChrende Leerzeichen in Tabulatoren.",tabsize:{name:"Tabgr\xF6\xDFe",description:"Anzahl der Leerzeichen, die in einen Tabulator umgewandelt werden"}},"emphasis-style":{name:"Hervorhebungsstil",description:"Stellt sicher, dass der Hervorhebungsstil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um hervorgehobene Inhalte zu kennzeichnen"}},"empty-line-around-blockquotes":{name:"Leere Zeile um Blockquotes",description:"Stellt sicher, dass Blockzitate in einer leeren Zeile stehen, es sei denn, sie beginnen oder beenden ein Dokument. **Beachten Sie, dass eine leere Zeile entweder eine Verschachtelungsebene weniger f\xFCr Blockzitate oder ein Zeilenumbruchzeichen ist.**"},"empty-line-around-code-fences":{name:"Leere Zeile um Code-Bereiche",description:"Stellt sicher, dass Codebereiche mit einer leeren Zeile versehen sind, es sei denn, sie beginnen oder beenden ein Dokument."},"empty-line-around-math-blocks":{name:"Leere Zeile um mathematische Bl\xF6cke",description:"Stellt sicher, dass es eine leere Zeile um mathematische Bl\xF6cke gibt, indem `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwendet wird, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"empty-line-around-tables":{name:"Leere Zeile um Tabellen",description:"Stellt sicher, dass es eine leere Zeile um Github-formatierte Tabellen gibt, es sei denn, sie beginnen oder beenden ein Dokument."},"escape-yaml-special-characters":{name:"Escape-YAML-Sonderzeichen",description:`Maskiert Doppelpunkte mit einem Leerzeichen nach ihnen (: ), einfache Anf\xFChrungszeichen (') und doppelte Anf\xFChrungszeichen (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Versucht, Single-Line-Arrays zu vermeiden",description:'Versucht, Arraywerte zu maskieren, wobei davon ausgegangen wird, dass ein Array mit "[" beginnt, mit "]" endet und Elemente enth\xE4lt, die durch "," getrennt sind.'}},"file-name-heading":{name:"\xDCberschrift des Dateinamens",description:"F\xFCgt den Dateinamen als H1-\xDCberschrift ein, wenn keine H1-\xDCberschrift vorhanden ist."},"footnote-after-punctuation":{name:"Fu\xDFnote nach Interpunktion",description:"Stellt sicher, dass Fu\xDFnotenverweise nach der Interpunktion und nicht davor platziert werden."},"force-yaml-escape":{name:"YAML-Escape erzwingen",description:"Maskiert die Werte f\xFCr die angegebenen YAML-Schl\xFCssel.","force-yaml-escape-keys":{name:"Erzwingen Sie die YAML-Escape-Klausel f\xFCr Schl\xFCssel",description:"Verwendet das YAML-Escapezeichen f\xFCr die angegebenen YAML-Schl\xFCssel, die durch ein Zeilenumbruchzeichen getrennt sind, wenn es nicht bereits mit Escapezeichen versehen ist. Nicht auf YAML-Arrays verwenden."}},"format-tags-in-yaml":{name:"Formatieren von Tags in YAML",description:"Entfernen Sie Hashtags aus Tags im YAML-Frontmatter, da sie die Tags dort ung\xFCltig machen."},"format-yaml-array":{name:"Formatieren des YAML-Arrays",description:"Erm\xF6glicht die Formatierung von regul\xE4ren YAML-Arrays als mehrzeilig oder einzeilig und `tags` und `aliases` d\xFCrfen einige Obsidian-spezifische YAML-Formate haben. Beachten Sie, dass eine einzelne Zeichenfolge zu einer einzelnen Zeile von einem einzelnen Zeichenfolgeneintrag zu einem einzeiligen Array wechselt, wenn mehr als 1 Eintrag vorhanden ist. Das Gleiche gilt f\xFCr eine einzelne Zeichenfolge bis zu einer mehrzeiligen Zeichenfolge, mit der Ausnahme, dass sie zu einem mehrzeiligen Array wird.","alias-key":{name:'Abschnitt "YAML-Aliase" formatieren',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Aliase. Sie sollten diese Option nicht zusammen mit der Regel `YAML-Titel-Alias` aktivieren, da sie m\xF6glicherweise nicht gut zusammenarbeiten oder unterschiedliche Formatstile ausgew\xE4hlt haben, was zu unerwarteten Ergebnissen f\xFChrt."},"tag-key":{name:'Abschnitt "YAML-Tags formatieren"',description:"Aktiviert die Formatierung f\xFCr den Abschnitt YAML-Tags."},"default-array-style":{name:"Standardm\xE4\xDFiger YAML-Array-Abschnittsstil",description:"Der Stil anderer YAML-Arrays, die nicht `tags` oder `aliases` sind oder bei `Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays` und `Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays`"},"default-array-keys":{name:"Formatieren von YAML-Array-Abschnitten",description:"Aktiviert die Formatierung f\xFCr regul\xE4re YAML-Arrays"},"force-single-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte einzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im einzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"},"force-multi-line-array-style":{name:"Erzwingt f\xFCr Schl\xFCsselwerte mehrzeilige Arrays",description:"Erzwingt, dass das YAML-Array f\xFCr die neuen zeilengetrennten Schl\xFCssel im mehrzeiligen Format vorliegt (leer lassen, um diese Option zu deaktivieren)"}},"header-increment":{name:"Header-Inkrement",description:"\xDCberschriftenebenen sollten jeweils nur um eine Ebene erh\xF6ht werden","start-at-h2":{name:"Start-Header-Inkrement auf \xDCberschriftenebene 2",description:"Legt die \xDCberschriftenebene 2 als minimale \xDCberschriftenebene in einer Datei f\xFCr das Kopfzeileninkrement fest und verschiebt alle \xDCberschriften entsprechend, sodass sie beginnend mit einer \xDCberschrift der Ebene 2 inkrementiert werden."}},"heading-blank-lines":{name:"\xDCberschriften mit Leerzeilen",description:"Alle \xDCberschriften haben sowohl davor als auch danach eine Leerzeile (au\xDFer wenn sich die \xDCberschrift am Anfang oder Ende des Dokuments befindet).",bottom:{name:"Darunter",description:"Einf\xFCgen einer Leerzeile unter \xDCberschriften"},"empty-line-after-yaml":{name:"Leere Zeile zwischen YAML und Header",description:"Behalten Sie die leere Zeile zwischen dem YAML-Frontmatter und dem Header bei"}},"headings-start-line":{name:"\xDCberschriften am Zeilenbeginn",description:"Bei \xDCberschriften, die keine Zeile beginnen, wird der vorangehende Leerraum entfernt, um sicherzustellen, dass sie als \xDCberschriften erkannt werden."},"insert-yaml-attributes":{name:"Einf\xFCgen von YAML-Attributen",description:"F\xFCgt die angegebenen YAML-Attribute in den YAML-Frontmatter ein. Setzen Sie jedes Attribut in eine einzelne Zeile.","text-to-insert":{name:"Text zum Einf\xFCgen",description:"Text, der in den YAML-Frontmatter eingef\xFCgt werden soll"}},"line-break-at-document-end":{name:"Zeilenumbruch am Dokumentende",description:"Stellt sicher, dass am Ende eines Dokuments genau ein Zeilenumbruch steht."},"move-footnotes-to-the-bottom":{name:"Fu\xDFnoten nach unten verschieben",description:"Verschieben Sie alle Fu\xDFnoten an das Ende des Dokuments."},"move-math-block-indicators-to-their-own-line":{name:"Verschieben Sie mathematische Blockindikatoren in eine eigene Zeile",description:"Verschieben Sie alle Anfangs- und Endindikatoren f\xFCr mathematische Bl\xF6cke in ihre eigenen Zeilen, indem Sie `Anzahl der Dollarzeichen, die einen mathematischen Block anzeigen` verwenden, um zu bestimmen, wie viele Dollarzeichen einen mathematischen Block f\xFCr einzeilige Mathematik anzeigen."},"move-tags-to-yaml":{name:"Tags nach YAML verschieben",description:"Verschieben Sie alle Tags in den YAML-Frontmatter des Dokuments.","how-to-handle-existing-tags":{name:"Body-Tag-Operation",description:"Die Aktion, die mit nicht ignorierten Tags im Hauptteil der Datei ausgef\xFChrt werden soll, nachdem sie in den Frontmatter verschoben wurden"},"tags-to-ignore":{name:"ignorierte Tags",description:"Die Tags, die nicht in das Tags-Array verschoben oder aus dem Textinhalt entfernt werden, wenn `Entfernen Sie den Hashtag aus Tags im Inhaltstext` aktiviert ist. Jedes Tag sollte in einer neuen Zeile und ohne das `#`` stehen. **Stellen Sie sicher, dass Sie den Hashtag nicht in den Tag-Namen aufnehmen.**"}},"no-bare-urls":{name:"Keine blo\xDFen URLs",description:"Umschlie\xDFt blo\xDFe URLs mit spitzen Klammern, es sei denn, sie sind in Back-Ticks, eckige Klammern oder einfache oder doppelte Anf\xFChrungszeichen eingeschlossen."},"ordered-list-style":{name:"Geordneter Listenstil",description:"Stellt sicher, dass geordnete Listen dem angegebenen Stil entsprechen. Beachten Sie, dass 2 Leerzeichen oder 1 Tabulator als Einr\xFCckungsebene betrachtet werden.","number-style":{name:"Zahlen-Stil",description:"Der Zahlenstil, der in geordneten Listenindikatoren verwendet wird"},"list-end-style":{name:"Endestil des Indikators f\xFCr eine geordnete Liste",description:"Das Endezeichen eines geordneten Listenkennzeichens"}},"paragraph-blank-lines":{name:"Leere Absatzzeilen",description:"Alle Abs\xE4tze sollten sowohl davor als auch danach genau eine Leerzeile haben."},"prevent-double-checklist-indicator-on-paste":{name:"Verhindern Sie eine doppelte Checklistenanzeige beim Einf\xFCgen",description:"Entfernt die Start-Checklisten-Anzeige aus dem Text, um sie einzuf\xFCgen, wenn die Zeile, auf der sich der Cursor in der Datei befindet, \xFCber eine Checklistenanzeige verf\xFCgt"},"prevent-double-list-item-indicator-on-paste":{name:"Verhindern Sie die Anzeige f\xFCr doppelte Listenelemente beim Einf\xFCgen",description:"Entfernt den Startlistenindikator aus dem Text, der eingef\xFCgt werden soll, wenn die Zeile, auf der sich der Cursor in der Datei befindet, einen Listenindikator hat"},"proper-ellipsis-on-paste":{name:"Richtige Auslassungspunkte auf Paste",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte, auch wenn sie im Text ein Leerzeichen zum Einf\xFCgen haben"},"proper-ellipsis":{name:"Richtige Auslassungspunkte",description:"Ersetzt drei aufeinanderfolgende Punkte durch Auslassungspunkte."},"quote-style":{name:"Zitatstil",description:"Aktualisiert die Anf\xFChrungszeichen im Textk\xF6rperinhalt, sodass sie auf die angegebenen einfachen und doppelten Anf\xFChrungszeichenstile aktualisiert werden.","single-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr einfache Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte einfache Anf\xFChrungszeichenstil verwendet werden soll."},"single-quote-style":{name:"Stil f\xFCr einfache Anf\xFChrungszeichen",description:"Der Stil der zu verwendenden einfachen Anf\xFChrungszeichen."},"double-quote-enabled":{name:"Aktivieren Sie `Stil f\xFCr doppelte Anf\xFChrungszeichen`",description:"Gibt an, dass der ausgew\xE4hlte doppelte Anf\xFChrungszeichenstil verwendet werden soll."},"double-quote-style":{name:"Stil f\xFCr doppelte Anf\xFChrungszeichen",description:"Der zu verwendende Stil der doppelten Anf\xFChrungszeichen."}},"re-index-footnotes":{name:"Fu\xDFnoten neu indizieren",description:"Indiziert Fu\xDFnotenschl\xFCssel und Fu\xDFnoten basierend auf der Reihenfolge des Auftretens neu (HINWEIS: Diese Regel funktioniert *nicht*, wenn es mehr als eine Fu\xDFnote f\xFCr einen Schl\xFCssel gibt.)"},"remove-consecutive-list-markers":{name:"Entfernen Sie aufeinanderfolgende Listenmarkierungen",description:"Entfernt aufeinanderfolgende Listenmarkierungen. N\xFCtzlich beim Kopieren und Einf\xFCgen von Listenelementen."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Entfernen Sie leere Zeilen zwischen Listenmarkierungen und Checklisten",description:"Es sollten keine leeren Zeilen zwischen Listenmarkierungen und Checklisten stehen."},"remove-empty-list-markers":{name:"Entfernen Sie leere Listenmarkierungen",description:"Entfernt leere Listenmarkierungen, d.h. Listenelemente ohne Inhalt."},"remove-hyphenated-line-breaks":{name:"Entfernen Sie Zeilenumbr\xFCche mit Bindestrich",description:"Entfernt Zeilenumbr\xFCche mit Bindestrich. N\xFCtzlich beim Einf\xFCgen von Text aus Lehrb\xFCchern."},"remove-hyphens-on-paste":{name:"Entfernen Sie Bindestriche auf Paste",description:"Entfernt Bindestriche aus dem Text zum Einf\xFCgen"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Entfernen Sie f\xFChrende oder nachgestellte Leerzeichen beim Einf\xFCgen",description:"Entfernt alle f\xFChrenden Leerzeichen ohne Tabulatoren und alle nachgestellten Leerzeichen, die der Text einf\xFCgen kann"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Entfernen Sie \xFCbrig gebliebene Fu\xDFnoten aus dem Zitat beim Einf\xFCgen",description:"Entfernt alle \xFCbrig gebliebenen Fu\xDFnotenverweise, die der Text einf\xFCgen kann"},"remove-link-spacing":{name:"Linkabstand entfernen",description:"Entfernt den Abstand um den Linktext."},"remove-multiple-blank-lines-on-paste":{name:"Entfernen Sie mehrfache Leerzeilen beim Einf\xFCgen",description:"Verdichtet mehrere Leerzeilen zu einer Leerzeile, damit der Text eingef\xFCgt werden kann"},"remove-multiple-spaces":{name:"Entfernen Sie mehrfache Leerzeichen",description:"Entfernt zwei oder mehr aufeinanderfolgende Leerzeichen. Ignoriert Leerzeichen am Anfang und am Ende der Zeile."},"remove-space-around-characters":{name:"Entfernen Sie den Abstand um die Zeichen",description:"Stellt sicher, dass bestimmte Zeichen nicht von Leerzeichen umgeben sind (entweder einzelne Leerzeichen oder ein Tabulator). Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","include-fullwidth-forms":{name:"Einf\xFCgen von Formularen in voller Breite",description:'Einschlie\xDFen Unicode-Block "Formulare" in voller Breite'},"include-cjk-symbols-and-punctuation":{name:"CJK-Symbole und Satzzeichen einschlie\xDFen",description:'Einschlie\xDFen CJK-Symbole und Satzzeichen Unicode-Block'},"include-dashes":{name:"Bindestriche einschlie\xDFen",description:"F\xFCgen Sie den Gedankenstrich (\u2013) und den Gedankenstrich (\u2014) ein"},"other-symbols":{name:"Andere Symbole",description:"Andere Symbole, die enthalten sind"}},"remove-space-before-or-after-characters":{name:"Entfernen Sie Leerzeichen vor oder nach Zeichen",description:"Entfernt Leerzeichen vor und nach den angegebenen Zeichen. Beachten Sie, dass dies in einigen F\xE4llen zu Problemen mit dem Markdown-Format f\xFChren kann.","characters-to-remove-space-before":{name:"Leerzeichen vor Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"},"characters-to-remove-space-after":{name:"Leerzeichen nach Zeichen entfernen",description:"Entfernt Leerzeichen vor den angegebenen Zeichen. **Hinweis: Die Verwendung von `{` oder `}` in der Zeichenliste wirkt sich unerwartet auf Dateien aus, da es in der Ignoriersyntax hinter den Kulissen verwendet wird.**"}},"remove-trailing-punctuation-in-heading":{name:"Entfernen Sie nachgestellte Satzzeichen in der \xDCberschrift",description:"Entfernt die angegebene Interpunktion am Ende von \xDCberschriften, wobei darauf zu achten ist, dass das Semikolon am Ende von [HTML-Entit\xE4tsreferenzen](https://de.wikipedia.org/wiki/Typografische_Zeichen_in_XML_und_HTML) ignoriert wird.","punctuation-to-remove":{name:"Nachfolgende Interpunktion",description:"Das nachfolgende Satzzeichen, das aus den \xDCberschriften in der Datei entfernt werden soll."}},"remove-yaml-keys":{name:"Entfernen von YAML-Schl\xFCsseln",description:"Entfernt die angegebenen YAML-Schl\xFCssel","yaml-keys-to-remove":{name:"Zu entfernende YAML-Schl\xFCssel",description:"Die zu entfernenden YAML-Schl\xFCssel aus dem YAML-Frontmatter mit oder ohne Doppelpunkt"}},"space-after-list-markers":{name:"Leerzeichen nach Listenmarkierungen",description:"Es sollte ein einzelnes Leerzeichen nach Listenmarkierungen und Kontrollk\xE4stchen geben."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Leerzeichen zwischen Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen",description:"Stellt sicher, dass Chinesisch, Japanisch oder Koreanisch und Englisch oder Zahlen durch ein einziges Leerzeichen getrennt werden. Folgt diesen [Richtlinien](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Starker Stil",description:"Stellt sicher, dass der starke Stil konsistent ist.",style:{name:"Stil",description:"Der Stil, der verwendet wird, um starke/fettgedruckte Inhalte zu kennzeichnen"}},"trailing-spaces":{name:"Nachgestellte Leerzeichen",description:"Entfernt zus\xE4tzliche Leerzeichen nach jeder Zeile.","twp-space-line-break":{name:"Zwei Leerzeichen Zeilenumbruch",description:'Ignorieren Sie zwei Leerzeichen, gefolgt von einem Zeilenumbruch ("Zwei-Leerzeichen-Regel").'}},"two-spaces-between-lines-with-content":{name:"Zwei Leerzeichen zwischen Zeilen mit Inhalt",description:"Stellt sicher, dass zwei Leerzeichen an den Zeilenenden hinzugef\xFCgt werden, wobei der Inhalt in der n\xE4chsten Zeile f\xFCr Abs\xE4tze, Blockzitate und Listenelemente fortgesetzt wird"},"unordered-list-style":{name:"Ungeordneter Listenstil",description:"Stellt sicher, dass ungeordnete Listen dem angegebenen Stil folgen.","list-style":{name:"Stil des Listenelements",description:"Das Listenelementformat, das in ungeordneten Listen verwendet werden soll"}},"yaml-key-sort":{name:"Sortierung von YAML-Schl\xFCsseln",description:"Sortiert die YAML-Schl\xFCssel basierend auf der angegebenen Reihenfolge und Priorit\xE4t. Hinweis: Kann auch Leerzeilen entfernen.","yaml-key-priority-sort-order":{name:"Priorit\xE4tssortierreihenfolge der YAML-Schl\xFCssel",description:"Die Reihenfolge, in der die Schl\xFCssel sortiert werden sollen, wobei in jeder Zeile ein Schl\xFCssel in der Reihenfolge der Liste sortiert wird"},"priority-keys-at-start-of-yaml":{name:"Priorit\xE4tsschl\xFCssel am Anfang von YAML",description:"Die priorisierte Sortierreihenfolge der YAML-Schl\xFCssel wird am Anfang des YAML-Frontmatters platziert"},"yaml-sort-order-for-other-keys":{name:"YAML-Sortierreihenfolge f\xFCr andere Schl\xFCssel",description:"Die Art und Weise, wie die Schl\xFCssel sortiert werden, die nicht im Textbereich der priorisierten Sortierreihenfolge von YAML-Keys vorhanden sind"}},"yaml-timestamp":{name:"YAML-Zeitstempel",description:"Verfolgen Sie das Datum, an dem die Datei zuletzt bearbeitet wurde, im YAML-Frontmatter. Ruft Datumsangaben aus Dateimetadaten ab.","date-created":{name:"Erstellungsdatum",description:"Geben Sie das Datum ein, an dem die Datei erstellt wurde"},"date-created-key":{name:"Schl\xFCssel f\xFCr das Erstellungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das Erstellungsdatum verwendet werden soll"},"force-retention-of-create-value":{name:"Erzwinge die Beibehaltung des Schl\xFCsselwertes f\xFCr das Erstellungsdatum",description:"Verwendet den Wert im YAML-Frontmatter f\xFCr das Erstellungsdatum anstelle den Dateimetadaten, was n\xFCtzlich ist, um zu verhindern, dass \xC4nderungen an Dateimetadaten dazu f\xFChren, dass der Wert in einen anderen Wert ge\xE4ndert wird."},"date-modified":{name:"\xC4nderungsdatum",description:"Geben Sie das Datum ein, an dem die Datei zuletzt ge\xE4ndert wurde"},"date-modified-key":{name:"Schl\xFCssel f\xFCr das \xC4nderungsdatum",description:"Der YAML-Schl\xFCssel, der f\xFCr das \xC4nderungsdatum verwendet werden soll"},format:{name:"Format",description:"Zu verwendendes Datumsformat f\xFCr Moment.js (siehe [Momentformatoptionen](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML-Titel-Alias",description:"F\xFCgt den Titel der Datei in den Aliasabschnitt des YAML-Frontmatters ein. Ruft den Titel aus dem ersten H1- oder Dateinamen ab.","preserve-existing-alias-section-style":{name:"Vorhandenes Alias-Abschnittsformat beibehalten",description:"Wenn diese Option festgelegt ist, gilt die Einstellung `YAML-Aliase-Abschnittsstil` nur f\xFCr die neu erstellten Abschnitte"},"keep-alias-that-matches-the-filename":{name:"Behalten Sie einen Alias bei, der mit dem Dateinamen \xFCbereinstimmt",description:"Solche Aliase sind in der Regel redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Verwenden Sie den YAML-Schl\xFCssel `linter-yaml-title-alias`, um bei \xC4nderungen von Dateinamen und \xDCberschriften zu helfen",description:"Wenn sich die erste H1-\xDCberschrift \xE4ndert oder der Dateiname ge\xE4ndert wird, wenn der erste H1 nicht vorhanden ist, wird der alte Alias, der in diesem Schl\xFCssel gespeichert ist, durch den neuen Wert ersetzt, anstatt nur einen neuen Eintrag in das Alias-Array einzuf\xFCgen"}},"yaml-title":{name:"YAML-Titel",description:"F\xFCgt den Titel der Datei in das YAML-Frontmatter ein. Ruft den Titel basierend auf dem ausgew\xE4hlten Modus ab.","title-key":{name:"Titel-Schl\xFCssel",description:"Der YAML-Schl\xFCssel, der f\xFCr den Titel verwendet werden soll"},mode:{name:"Modus",description:"Die zum Abrufen des Titels zu verwendende Methode"}}},enums:{"Title Case":"Titel Gro\xDF- und Kleinschreibung","ALL CAPS":"GROSSBUCHSTABEN","First letter":"Anfangsbuchstabe",".":".",")":")",ERROR:"Fehler",TRACE:"Spur",DEBUG:"Debuggen",INFO:"Info",WARN:"Warnen",SILENT:"Leise",ascending:"aufsteigend",lazy:"lazy",Nothing:"Faul","Remove hashtag":"Hashtag entfernen","Remove whole tag":"Ganzes Tag entfernen",asterisk:"Sternchen",underscore:"unterstreichen",consistent:"folgerichtig","-":"-","*":"*","+":"+",space:"Raum","no space":"kein Platz",None:"Nichts","Ascending Alphabetical":"Aufsteigend Alphabetisch","Descending Alphabetical":"Absteigend Alphabetisch","multi-line":"mehrzeilig","single-line":"einzeilig","single string to single-line":"Single String zu Single-Line","single string to multi-line":"Single String zu Multi-Line","single string comma delimited":"Komma mit Trennzeichen f\xFCr eine Zeichenfolge","single string space delimited":"Einzelzeichenfolgenabstand durch Trennzeichen","single-line space delimited":"einzeiliger Abstand durch Trennzeichen","first-h1":"erste \xDCberschrift der Ebene 1","first-h1-or-filename-if-h1-missing":"Erste \xDCberschrift der Ebene 1 oder Dateiname, wenn die \xDCberschrift der Ebene 1 fehlt",filename:"Dateinamen","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D","\\":"\\","
":"
"," ":" ","
":"
"}};var rl={commands:{"lint-file":{name:"Lint the current file","error-message":"Lint File Error in File"},"lint-file-unless-ignored":{name:"Lint the current file unless ignored"},"lint-all-files":{name:"Lint all files in the vault","error-message":"Lint All Files Error in File","success-message":"Linted all files","errors-message-singular":"Linted all files and there was 1 error.","errors-message-plural":"Linted all files and there were {NUM} errors.","start-message":"This will edit all of your files and may introduce errors.","submit-button-text":"Lint All","submit-button-notice-text":"Linting all files..."},"lint-all-files-in-folder":{name:"Lint all files in the current folder","start-message":"This will edit all of your files in {FOLDER_NAME} including files in its subfolders which may introduce errors.","submit-button-text":"Lint All Files in {FOLDER_NAME}","submit-button-notice-text":"Linting all files in {FOLDER_NAME}...","error-message":"Lint All Files in Folder Error in File","success-message":"Linted all {NUM} files in {FOLDER_NAME}.","message-singular":"Linted all {NUM} files in {FOLDER_NAME} and there was 1 error.","message-plural":"Linted all {FILE_COUNT} files in {FOLDER_NAME} and there were {ERROR_COUNT} error."},"paste-as-plain-text":{name:"Paste as Plain Text & without Modifications"},"lint-file-pop-up-menu-text":{name:"Lint file"},"lint-folder-pop-up-menu-text":{name:"Lint folder"}},logs:{"plugin-load":"Loading plugin","plugin-unload":"Unloading plugin","folder-lint":"Linting folder ","linter-run":"Running linter","paste-link-warning":"aborted paste lint as the clipboard content is a link and doing so will avoid conflicts with other plugins that modify pasting.","see-console":"See console for more details.","unknown-error":"An unknown error occurred during linting.","moment-locale-not-found":"Trying to switch Moment.js locale to {MOMENT_LOCALE}, got {CURRENT_LOCALE}","file-change-lint-message-start":"Linted","custom-command-callback-warning":"Please only set the custom command callback for integration tests.","pre-rules":"rules before regular rules","post-rules":"rules after regular rules","rule-running":"rules running","custom-regex":"custom regex rules","running-custom-regex":"Running Custom Regex","running-custom-lint-command":"Running Custom Lint Commands","custom-lint-duplicate-warning":'You cannot run the same command ("{COMMAND_NAME}") as a custom lint rule twice.',"custom-lint-error-message":"Custom Lint Command","disabled-text":"is disabled","run-rule-text":"Running","timing-key-not-found":"timing key '{TIMING_KEY}' does not exist in the timing info list, so it was ignored","milliseconds-abbreviation":"ms","invalid-date-format-error":"The format of the created date '{DATE}' could not be parsed or determined so the created date was left alone in '{FILE_NAME}'","invalid-delimiter-error-message":"delimiter is only allowed to be a single character","missing-footnote-error-message":"Footnote '{FOOTNOTE}' has no corresponding footnote reference before the footnote contents and cannot be processed. Please make sure that all footnotes have a corresponding reference before the content of the footnote.","too-many-footnotes-error-message":"Footnote key '{FOOTNOTE_KEY}' has more than 1 footnote referencing it. Please update the footnotes so that there is only one footnote per footnote key.","wrapper-yaml-error":"error in the YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"unknown error: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"There is no clipboard content.","characters-added":"characters added","characters-removed":"characters removed","copy-to-clipboard-failed":"Failed to copy text to clipboard: "},"all-rules-option":"All","linter-title":"Linter","empty-search-results-text":"No settings match search","warning-text":"Warning","file-backup-text":"Make sure you have backed up your files.","custom-command-warning":"Linting multiple files with custom commands enabled is a slow process that requires the ability to open panes in the side panel. It is noticeably slower than running without custom commands enabled. Please proceed with caution.","cancel-button-text":"Cancel","copy-aria-label":"Copy","parse-results-heading-text":"Custom Parse Values","file-parse-description-text":"The following is the list of custom replacements found in {FILE}.","no-parsed-values-found-text":"There were no custom replacements found in {FILE}. Please make sure that all tables with custom replacements in {FILE} only have two columns and all rows start and end with a pipe (i.e. |).","find-header-text":"Word to Find","replace-header-text":"Replacement Word","close-button-text":"Close",tabs:{names:{general:"General",custom:"Custom",yaml:"YAML",heading:"Heading",content:"Content",footnote:"Footnote",spacing:"Spacing",paste:"Paste",debug:"Debug"},"default-search-bar-text":"Search all settings",general:{"lint-on-save":{name:"Lint on save",description:"Lint the file on manual save (when `Ctrl + S` is pressed or when `:w` is executed while using vim keybindings)"},"display-message":{name:"Display message on lint",description:"Display the number of characters changed after linting"},"lint-on-file-change":{name:"Lint on File Change",description:"When the a file is closed or a new file is swapped to, the previous file is linted."},"display-lint-on-file-change-message":{name:"Display Lint on File Change Message",description:"Displays a message when `Lint on File Change` occurs"},"folders-to-ignore":{name:"Folders to ignore",description:"Folders to ignore when linting all files or linting on save.","folder-search-placeholder-text":"Folder name","add-input-button-text":"Add another folder to ignore","delete-tooltip":"Delete"},"files-to-ignore":{name:"Files to ignore",description:"Files to ignore when linting all files or linting on save.","file-search-placeholder-text":"regex for file to ignore","add-input-button-text":"Add another file to ignore regex","delete-tooltip":"Delete","label-placeholder-text":"label","flags-placeholder-text":"flags",warning:"Use this with caution if you do not know regex. Also, please make sure that if you use lookbehinds in your regex on iOS mobile that you are on a version that supports using them."},"override-locale":{name:"Override locale",description:"Set this if you want to use a locale different from the default"},"same-as-system-locale":"Same as system ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML aliases section style",description:"The style of the YAML aliases section"},"yaml-tags-section-style":{name:"YAML tags section style",description:"The style of the YAML tags section"},"default-escape-character":{name:"Default Escape Character",description:"The default character to use to escape YAML values when a single quote and double quote are not present."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Remove Unnecessary Escape Characters when in Multi-Line Array Format",description:"Escape characters for multi-line YAML arrays don't need the same escaping as single-line arrays, so when in multi-line format remove extra escapes that are not necessary"},"number-of-dollar-signs-to-indicate-math-block":{name:"Number of Dollar Signs to Indicate Math Block",description:"The amount of dollar signs to consider the math content to be a math block instead of inline math"}},debug:{"log-level":{name:"Log Level",description:"The types of logs that will be allowed to be logged by the service. The default is ERROR."},"linter-config":{name:"Linter Config",description:"The contents of the data.json for the Linter as of the setting page loading"},"log-collection":{name:"Collect logs when linting on save and linting the current file",description:"Goes ahead and collects logs when you `Lint on save` and linting the current file. These logs can be helpful for debugging and create bug reports."},"linter-logs":{name:"Linter Logs",description:"The logs from the last `Lint on save` or the last lint current file run if enabled."}}},options:{"custom-command":{name:"Custom Commands",description:"Custom commands are Obsidian commands that get run after the linter is finished running its regular rules. This means that they do not run before the YAML timestamp logic runs, so they can cause YAML timestamp to be triggered on the next run of the linter. You may only select an Obsidian command once. **_Note that this currently only works on linting the current file._**",warning:"When selecting an option, make sure to select the option either by using the mouse or by hitting the enter key. Other selection methods may not work and only selections of an actual Obsidian command or an empty string will be saved.","add-input-button-text":"Add new command","command-search-placeholder-text":"Obsidian command","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-replace":{name:"Custom Regex Replacement",description:"Custom regex replacement can be used to replace anything that matches the find regex with the replacement value. The replace and find values will need to be valid regex values.",warning:"Use this with caution if you do not know regex. Also, please make sure that if you use lookbehinds in your regex on iOS mobile that you are on a version that supports using them.","add-input-button-text":"Add new regex replacement","regex-to-find-placeholder-text":"regex to find","flags-placeholder-text":"flags","regex-to-replace-placeholder-text":"regex to replace","label-placeholder-text":"label","move-up-tooltip":"Move up","move-down-tooltip":"Move down","delete-tooltip":"Delete"},"custom-auto-correct":{"delete-tooltip":"Delete","show-parsed-contents-tooltip":"View parsed replacements","custom-row-parse-warning":'"{ROW}" is not a valid row with custom replacements. It must have only 2 columns.',"file-search-placeholder-text":"File name","add-input-button-text":"Add another custom file"}},rules:{"auto-correct-common-misspellings":{name:"Auto-correct Common Misspellings",description:"Uses a dictionary of common misspellings to automatically convert them to their proper spellings. See [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) for the full list of auto-corrected words. **Note: this list can work on text from multiple languages, but this list is the same no matter what language is currently in use.**","ignore-words":{name:"Ignore Words",description:"A comma separated list of lowercased words to ignore when auto-correcting"},"extra-auto-correct-files":{name:"Extra Auto-Correct Source Files",description:"These are files that have a markdown table in them that have the initial word and the word to correct it to (these are case insensitive corrections). **Note: the tables used should have the starting and ending `|` indicators present for each line.**"}},"add-blank-line-after-yaml":{name:"Add Blank Line After YAML",description:"Adds a blank line after the YAML block if it does not end the current file or it is not already followed by at least 1 blank line"},"add-blockquote-indentation-on-paste":{name:"Add Blockquote Indentation on Paste",description:"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting"},"blockquote-style":{name:"Blockquote Style",description:"Makes sure the blockquote style is consistent.",style:{name:"Style",description:"The style used on blockquote indicators"}},"capitalize-headings":{name:"Capitalize Headings",description:"Headings should be formatted with capitalization",style:{name:"Style",description:"The style of capitalization to use"},"ignore-case-words":{name:"Ignore Cased Words",description:"Only apply title case style to words that are all lowercase"},"ignore-words":{name:"Ignore Words",description:"A comma separated list of words to ignore when capitalizing"},"lowercase-words":{name:"Lowercase Words",description:"A comma separated list of words to keep lowercase"}},"compact-yaml":{name:"Compact YAML",description:"Removes leading and trailing blank lines in the YAML front matter.","inner-new-lines":{name:"Inner New Lines",description:"Remove new lines that are not at the start or the end of the YAML"}},"consecutive-blank-lines":{name:"Consecutive blank lines",description:"There should be at most one consecutive blank line."},"convert-bullet-list-markers":{name:"Convert Bullet List Markers",description:"Converts common bullet list marker symbols to markdown list markers."},"convert-spaces-to-tabs":{name:"Convert Spaces to Tabs",description:"Converts leading spaces to tabs.",tabsize:{name:"Tabsize",description:"Number of spaces that will be converted to a tab"}},"dedupe-yaml-array-values":{name:"Dedupe YAML Array Values",description:"Removes duplicate array values in a case sensitive manner.","dedupe-alias-key":{name:"Dedupe YAML aliases section",description:"Turns on removing duplicate aliases."},"dedupe-tag-key":{name:"Dedupe YAML tags section",description:"Turns on removing duplicate tags."},"dedupe-array-keys":{name:"Dedupe YAML array sections",description:"Turns on removing duplicate values for regular YAML arrays"},"ignore-keys":{name:"YAML Keys to Ignore",description:"A list of YAML keys without the ending colon on their own lines that are not meant to have duplicate values removed from them."}},"default-language-for-code-fences":{name:"Default Language For Code Fences",description:"Add a default language to code fences that do not have a language specified.","default-language":{name:"Programming Language",description:"Leave empty to do nothing. Languages tags can be found [here](https://prismjs.com/#supported-languages)."}},"emphasis-style":{name:"Emphasis Style",description:"Makes sure the emphasis style is consistent.",style:{name:"Style",description:"The style used to denote emphasized content"}},"empty-line-around-blockquotes":{name:"Empty Line Around Blockquotes",description:"Ensures that there is an empty line around blockquotes unless they start or end a document. **Note: an empty line is either one less level of nesting for blockquotes or a newline character.**"},"empty-line-around-code-fences":{name:"Empty Line Around Code Fences",description:"Ensures that there is an empty line around code fences unless they start or end a document."},"empty-line-around-math-blocks":{name:"Empty Line Around Math Blocks",description:"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"empty-line-around-tables":{name:"Empty Line Around Tables",description:"Ensures that there is an empty line around github flavored tables unless they start or end a document."},"escape-yaml-special-characters":{name:"Escape YAML Special Characters",description:`Escapes colons with a space after them (: ), single quotes ('), and double quotes (") in YAML.`,"try-to-escape-single-line-arrays":{name:"Try to Escape Single Line Arrays",description:'Tries to escape array values assuming that an array starts with "[", ends with "]", and has items that are delimited by ",".'}},"file-name-heading":{name:"File Name Heading",description:"Inserts the file name as a H1 heading if no H1 heading exists."},"footnote-after-punctuation":{name:"Footnote after Punctuation",description:"Ensures that footnote references are placed after punctuation, not before."},"force-yaml-escape":{name:"Force YAML Escape",description:"Escapes the values for the specified YAML keys.","force-yaml-escape-keys":{name:"Force YAML Escape on Keys",description:"Uses the YAML escape character on the specified YAML keys separated by a new line character if it is not already escaped. Do not use on YAML arrays."}},"format-tags-in-yaml":{name:"Format Tags in YAML",description:"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid."},"format-yaml-array":{name:"Format YAML Array",description:"Allows for the formatting of regular YAML arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific YAML formats. **Note: that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.**","alias-key":{name:"Format YAML aliases section",description:"Turns on formatting for the YAML aliases section. You should not enable this option alongside the rule `YAML Title Alias` as they may not work well together or they may have different format styles selected causing unexpected results."},"tag-key":{name:"Format YAML tags section",description:"Turns on formatting for the YAML tags section."},"default-array-style":{name:"Default YAML array section style",description:"The style of other YAML arrays that are not `tags`, `aliases` or in `Force key values to be single-line arrays` and `Force key values to be multi-line arrays`"},"default-array-keys":{name:"Format YAML array sections",description:"Turns on formatting for regular YAML arrays"},"force-single-line-array-style":{name:"Force key values to be single-line arrays",description:"Forces the YAML array for the new line separated keys to be in single-line format (leave empty to disable this option)"},"force-multi-line-array-style":{name:"Force key values to be multi-line arrays",description:"Forces the YAML array for the new line separated keys to be in multi-line format (leave empty to disable this option)"}},"header-increment":{name:"Header Increment",description:"Heading levels should only increment by one level at a time","start-at-h2":{name:"Start Header Increment at Heading Level 2",description:"Makes heading level 2 the minimum heading level in a file for header increment and shifts all headings accordingly so they increment starting with a level 2 heading."}},"heading-blank-lines":{name:"Heading blank lines",description:"All headings have one blank line both before and after (except where the heading is at the beginning or end of the document).",bottom:{name:"Bottom",description:"Ensures one blank line after headings"},"empty-line-after-yaml":{name:"Empty Line Between YAML and Header",description:"Keep the empty line between the YAML frontmatter and header"}},"headings-start-line":{name:"Headings Start Line",description:"Headings that do not start a line will have their preceding whitespace removed to make sure they get recognized as headers."},"insert-yaml-attributes":{name:"Insert YAML attributes",description:"Inserts the given YAML attributes into the YAML frontmatter. Put each attribute on a single line.","text-to-insert":{name:"Text to insert",description:"Text to insert into the YAML frontmatter"}},"line-break-at-document-end":{name:"Line Break at Document End",description:"Ensures that there is exactly one line break at the end of a document."},"move-footnotes-to-the-bottom":{name:"Move Footnotes to the bottom",description:"Move all footnotes to the bottom of the document and makes sure they are sorted based on the order they are referenced in the file's body."},"move-math-block-indicators-to-their-own-line":{name:"Move Math Block Indicators to Their Own Line",description:"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math."},"move-tags-to-yaml":{name:"Move Tags to YAML",description:"Move all tags to YAML frontmatter of the document.","how-to-handle-existing-tags":{name:"Body tag operation",description:"What to do with non-ignored tags in the body of the file once they have been moved to the frontmatter"},"tags-to-ignore":{name:"Tags to ignore",description:"The tags that will not be moved to the tags array or removed from the body content if `Remove the hashtag from tags in content body` is enabled. Each tag should be on a new line and without the `#`. **Make sure not to include the hashtag in the tag name.**"}},"no-bare-urls":{name:"No Bare URLs",description:"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.","no-bare-uris":{name:"No Bare URIs",description:"Attempts to enclose bare URIs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes."}},"ordered-list-style":{name:"Ordered List Style",description:"Makes sure that ordered lists follow the style specified. **Note: that 2 spaces or 1 tab is considered to be an indentation level.**","number-style":{name:"Number Style",description:"The number style used in ordered list indicators"},"list-end-style":{name:"Ordered List Indicator End Style",description:"The ending character of an ordered list indicator"}},"paragraph-blank-lines":{name:"Paragraph blank lines",description:"All paragraphs should have exactly one blank line both before and after."},"prevent-double-checklist-indicator-on-paste":{name:"Prevent Double Checklist Indicator on Paste",description:"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator"},"prevent-double-list-item-indicator-on-paste":{name:"Prevent Double List Item Indicator on Paste",description:"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator"},"proper-ellipsis-on-paste":{name:"Proper Ellipsis on Paste",description:"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste"},"proper-ellipsis":{name:"Proper Ellipsis",description:"Replaces three consecutive dots with an ellipsis."},"quote-style":{name:"Quote Style",description:"Updates the quotes in the body content to be updated to the specified single and double quote styles.","single-quote-enabled":{name:"Enable `Single Quote Style`",description:"Specifies that the selected single quote style should be used."},"single-quote-style":{name:"Single Quote Style",description:"The style of single quotes to use."},"double-quote-enabled":{name:"Enable `Double Quote Style`",description:"Specifies that the selected double quote style should be used."},"double-quote-style":{name:"Double Quote Style",description:"The style of double quotes to use."}},"re-index-footnotes":{name:"Re-Index Footnotes",description:"Re-indexes footnote keys and footnote, based on the order of occurrence. **Note: This rule does _not_ work if there is more than one footnote for a key.**"},"remove-consecutive-list-markers":{name:"Remove Consecutive List Markers",description:"Removes consecutive list markers. Useful when copy-pasting list items."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Remove Empty Lines Between List Markers and Checklists",description:"There should not be any empty lines between list markers and checklists."},"remove-empty-list-markers":{name:"Remove Empty List Markers",description:"Removes empty list markers, i.e. list items without content."},"remove-hyphenated-line-breaks":{name:"Remove Hyphenated Line Breaks",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Remove Hyphens on Paste",description:"Removes hyphens from the text to paste"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Remove Leading or Trailing Whitespace on Paste",description:"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Remove Leftover Footnotes from Quote on Paste",description:"Removes any leftover footnote references for the text to paste"},"remove-link-spacing":{name:"Remove link spacing",description:"Removes spacing around link text."},"remove-multiple-blank-lines-on-paste":{name:"Remove Multiple Blank Lines on Paste",description:"Condenses multiple blank lines down into one blank line for the text to paste"},"remove-multiple-spaces":{name:"Remove Multiple Spaces",description:"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. "},"remove-space-around-characters":{name:"Remove Space around Characters",description:"Ensures that certain characters are not surrounded by whitespace (either single spaces or a tab). **Note: this may causes issues with markdown format in some cases.**","include-fullwidth-forms":{name:"Include Fullwidth Forms",description:'Include Fullwidth Forms Unicode block'},"include-cjk-symbols-and-punctuation":{name:"Include CJK Symbols and Punctuation",description:'Include CJK Symbols and Punctuation Unicode block'},"include-dashes":{name:"Include Dashes",description:"Include en dash (\u2013) and em dash (\u2014)"},"other-symbols":{name:"Other symbols",description:"Other symbols to include"}},"remove-space-before-or-after-characters":{name:"Remove Space Before or After Characters",description:"Removes space before the specified characters and after the specified characters. **Note: this may causes issues with markdown format in some cases.**","characters-to-remove-space-before":{name:"Remove Space Before Characters",description:"Removes space before the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"},"characters-to-remove-space-after":{name:"Remove Space After Characters",description:"Removes space after the specified characters. **Note: using `{` or `}` in the list of characters will unexpectedly affect files as it is used in the ignore syntax behind the scenes.**"}},"remove-trailing-punctuation-in-heading":{name:"Remove Trailing Punctuation in Heading",description:"Removes the specified punctuation from the end of headings making sure to ignore the semicolon at the end of [HTML entity references](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references).","punctuation-to-remove":{name:"Trailing Punctuation",description:"The trailing punctuation to remove from the headings in the file."}},"remove-yaml-keys":{name:"Remove YAML Keys",description:"Removes the YAML keys specified","yaml-keys-to-remove":{name:"YAML Keys to Remove",description:"The YAML keys to remove from the YAML frontmatter with or without colons"}},"sort-yaml-array-values":{name:"Sort YAML Array Values",description:"Sorts YAML array values based on the specified sort order.","sort-alias-key":{name:"Sort YAML aliases section",description:"Turns on sorting aliases."},"sort-tag-key":{name:"Sort YAML tags section",description:"Turns on sorting tags."},"sort-array-keys":{name:"Sort YAML array sections",description:"Turns on sorting values for regular YAML arrays"},"ignore-keys":{name:"YAML Keys to Ignore",description:"A list of YAML keys without the ending colon on their own lines that are not meant to have their values sorted."},"sort-order":{name:"Sort Order",description:"The way to sort the YAML array values."}},"space-after-list-markers":{name:"Space after list markers",description:"There should be a single space after list markers and checkboxes."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Space between Chinese Japanese or Korean and English or numbers",description:"Ensures that Chinese, Japanese, or Korean and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)","english-symbols-punctuation-before":{name:"English Punctuations and Symbols Before CJK",description:'The list of non-letter punctuation and symbols to consider to be from English when found before Chinese, Japanese, or Korean characters. **Note: "*" is always considered to be English and is necessary for handling some markdown syntaxes properly.**'},"english-symbols-punctuation-after":{name:"English Punctuations and Symbols After CJK",description:'The list of non-letter punctuation and symbols to consider to be from English when found after Chinese, Japanese, or Korean characters. **Note: "*" is always considered to be English and is necessary for handling some markdown syntaxes properly.**'}},"strong-style":{name:"Strong Style",description:"Makes sure the strong style is consistent.",style:{name:"Style",description:"The style used to denote strong/bolded content"}},"trailing-spaces":{name:"Trailing spaces",description:"Removes extra spaces after every line.","twp-space-line-break":{name:"Two Space Linebreak",description:'Ignore two spaces followed by a line break ("Two Space Rule").'}},"two-spaces-between-lines-with-content":{name:"Line Break Between Lines with Content",description:"Makes sure that the specified line break is added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items","line-break-indicator":{name:"Line Break Indicator",description:"The line break indicator to use."}},"unordered-list-style":{name:"Unordered List Style",description:"Makes sure that unordered lists follow the style specified.","list-style":{name:"List item style",description:"The list item style to use in unordered lists"}},"yaml-key-sort":{name:"YAML Key Sort",description:"Sorts the YAML keys based on the order and priority specified. **Note: may remove blank lines as well. Only works on non-nested keys.**","yaml-key-priority-sort-order":{name:"YAML Key Priority Sort Order",description:"The order in which to sort keys with one on each line where it sorts in the order found in the list"},"priority-keys-at-start-of-yaml":{name:"Priority Keys at Start of YAML",description:"YAML Key Priority Sort Order is placed at the start of the YAML frontmatter"},"yaml-sort-order-for-other-keys":{name:"YAML Sort Order for Other Keys",description:"The way in which to sort the keys that are not found in the YAML Key Priority Sort Order text area"}},"yaml-timestamp":{name:"YAML Timestamp",description:"Keep track of the date the file was last edited in the YAML front matter. Gets dates from file metadata.","date-created":{name:"Date Created",description:"Insert the file creation date"},"date-created-key":{name:"Date Created Key",description:"Which YAML key to use for creation date"},"force-retention-of-create-value":{name:"Force Date Created Key Value Retention",description:"Reuses the value in the YAML frontmatter for date created instead of the file metadata which is useful for preventing file metadata changes from causing the value to change to a different value."},"date-modified":{name:"Date Modified",description:"Insert the date the file was last modified"},"date-modified-key":{name:"Date Modified Key",description:"Which YAML key to use for modification date"},format:{name:"Format",description:"Moment date format to use (see [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"},"convert-to-utc":{name:"Convert Local Time to UTC",description:"Uses UTC equivalent for saved dates instead of local time"}},"yaml-title-alias":{name:"YAML Title Alias",description:"Inserts or updates the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.","preserve-existing-alias-section-style":{name:"Preserve existing aliases section style",description:"If set, the `YAML aliases section style` setting applies only to the newly created sections"},"keep-alias-that-matches-the-filename":{name:"Keep alias that matches the filename",description:"Such aliases are usually redundant"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use the YAML key specified by `Alias Helper Key` to help with filename and heading changes",description:"If set, when the first H1 heading changes or filename if first H1 is not present changes, then the old alias stored in this key will be replaced with the new value instead of just inserting a new entry in the aliases array"},"alias-helper-key":{name:"Alias Helper Key",description:"The key to use to help keep track of what the last file name or heading was that was stored in the frontmatter by this rule."}},"yaml-title":{name:"YAML Title",description:"Inserts the title of the file into the YAML frontmatter. Gets the title based on the selected mode.","title-key":{name:"Title Key",description:"Which YAML key to use for title"},mode:{name:"Mode",description:"The method to use to get the title"}}},enums:{"Title Case":"Title Case","ALL CAPS":"ALL CAPS","First letter":"First letter",".":".",")":")",ERROR:"error",TRACE:"trace",DEBUG:"debug",INFO:"info",WARN:"warn",SILENT:"silent",ascending:"ascending",lazy:"lazy",Nothing:"Nothing","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisk",underscore:"underscore",consistent:"consistent","-":"-","*":"*","+":"+",space:"space","no space":"no space",None:"None","Ascending Alphabetical":"Ascending Alphabetical","Descending Alphabetical":"Descending Alphabetical","multi-line":"multi-line","single-line":"single-line","single string to single-line":"single string to single-line","single string to multi-line":"single string to multi-line","single string comma delimited":"single string comma delimited","single string space delimited":"single string space delimited","single-line space delimited":"single-line space delimited","first-h1":"First H1","first-h1-or-filename-if-h1-missing":"First H1 or Filename if H1 is Missing",filename:"Filename","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D","\\":"\\","
":"
"," ":" ","
":"
"}};var Yd={commands:{"lint-file":{name:"Analizar este archivo","error-message":"Error Analizando un Archivooccuri\xF3 en el Archivo"},"lint-file-unless-ignored":{name:"Analizar este archivo si no es ignorado"},"lint-all-files":{name:"Analizar todos los archivos en la b\xF3veda","error-message":"Error Analizando Todos los Archivos en Archivo","success-message":"Analiz\xF3 todos los archivos","errors-message-singular":"Analiz\xF3 todos los archivos y un error ocurri\xF3.","errors-message-plural":"Analiz\xF3 todos los archivos y {NUM} errores ocurrieron","start-message":"Esto editar\xE1 todos de sus archivos y es possible que introduzca errores","submit-button-text":"Analizar Todo","submit-button-notice-text":"Analizando todos los archivos..."},"lint-all-files-in-folder":{name:"Analizar todos los archivos en esta carpeta","start-message":"Esto editar\xE1 todos de sus archivos en {FOLDER_NAME} incluyendo los archivos que existen en las subcarpetas y es possible que introduzca errores.","submit-button-text":"Analizar Todos los Archivos en {FOLDER_NAME}","submit-button-notice-text":"Analizando todos los archivos en {FOLDER_NAME}...","error-message":"Error Analizando Todos los Archivos en Carpeta en Archivo","success-message":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME}.","message-singular":"Analiz\xF3 los {NUM} archivos en {FOLDER_NAME} y un error ocurri\xF3.","message-plural":"Analiz\xF3 los {FILE_COUNT} archivos en {FOLDER_NAME} y {ERROR_COUNT} errores ocurrieron."},"paste-as-plain-text":{name:"Pegar como texto sin formato y sin modificaciones"},"lint-file-pop-up-menu-text":{name:"Analizar el archivo"},"lint-folder-pop-up-menu-text":{name:"Analizar la carpeta"}},logs:{"plugin-load":"Cargando el programa adicional","plugin-unload":"Descargando el programa adicional","folder-lint":"Analizando la carpeta ","linter-run":"Usando linter","paste-link-warning":"abort\xF3 lint de pagar porque el contento del portapapeles es un enlace y no lo hizo para evitar conflictos con otros programas adicionales que modifican lo que hace el pegar.","see-console":"Consulte la consola para obtener m\xE1s detalles.","unknown-error":"Se ha producido un error desconocido durante el linting.","moment-locale-not-found":"Intentando cambiar la zona de Moment.js a {MOMENT_LOCALE}, el resulto fue {CURRENT_LOCALE}","file-change-lint-message-start":"Analiz\xF3","pre-rules":"Las reglas antes de las reglas normales","post-rules":"las reglas despu\xE9s de las reglas normales","rule-running":"usando las reglas","custom-regex":"las reglas regex personalizadas","running-custom-regex":"Usando regex personalizada","running-custom-lint-command":"Usando comandos de lint personalizados","custom-lint-duplicate-warning":'No se puede usar el mismo comando ("{COMMAND_NAME}") dos veces como un comando de lint.',"custom-lint-error-message":"El commando de lint personalizado","disabled-text":"es inhabilitado","run-rule-text":"Usando","timing-key-not-found":"clave de ritmo '{TIMING_KEY}' no ya existe en la lista de claves de ritmo y fue ignorado por eso","milliseconds-abbreviation":"ms","invalid-date-format-error":"No se pudo analizar ni identificar el formato de la fech de creaci\xF3n `{DATE}` entonces la fecha de creaci\xF3n se dej\xF3 sola en `{FILE_NAME}`","invalid-delimiter-error-message":"El delimitador solo puede ser de un solo car\xE1cter","missing-footnote-error-message":"La nota al pie `{FOOTNOTE}` no tiene ninguna referencia de nota al pie correspondiente antes del contenido de la nota al pie y no se puede procesar. Aseg\xFArese de que todas las notas a pie de p\xE1gina tengan una referencia correspondiente antes del contenido de la nota al pie de p\xE1gina.","too-many-footnotes-error-message":"La clave de nota al pie '{FOOTNOTE_KEY}' tiene m\xE1s de 1 nota al pie que hace referencia a ella. Actualice las notas al pie para que solo haya una nota al pie por clave de nota al pie.","wrapper-yaml-error":"hubo un error en el YAML: {ERROR_MESSAGE}","wrapper-unknown-error":"huno un error desconocido: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"No hay contenido del portapapeles.","characters-added":"Caracteres a\xF1adidos","characters-removed":"Caracteres eliminados"},"all-rules-option":"Todo","linter-title":"Linter","empty-search-results-text":"No hay configuraci\xF3n que coincida con la b\xFAsqueda","warning-text":"Advertencia","file-backup-text":"Aseg\xFArese de haber realizado una copia de seguridad de sus archivos.","copy-aria-label":"Copiar",tabs:{names:{general:"General",custom:"Personalizado",yaml:"YAML",heading:"Encabezado",content:"Contenido",footnote:"Notas al pie",spacing:"Espacio en blanco",paste:"Pegar",debug:"Depurar"},"default-search-bar-text":"Buscar en todos los ajustes",general:{"lint-on-save":{name:"Analizar en guardar",description:"Analizar el archivo en el guardado manual (cuando se presiona `Ctrl + S` o cuando se ejecuta `:w` mientras se usan combinaciones de claves de vim)"},"display-message":{name:"Mostrar mensaje en analizar",description:"Mostrar el n\xFAmero de caracteres modificados despu\xE9s de analizar"},"folders-to-ignore":{name:"Carpetas para omitir",description:"Carpetas que se deben omitir al analizar todos los archivos o al guardar en l\xEDnea.","folder-search-placeholder-text":"El nombre de la carpeta","add-input-button-text":"Agregar otra carpeta para ignorar","delete-tooltip":"Borrar"},"lint-on-file-change":{name:"Analizar archivo en cambiar",description:"Cuando se cierra un archivo o se cambia a un nuevo archivo, el archivo anterior se analiza."},"display-lint-on-file-change-message":{name:"Mostrar mensaje en cambiar el archivo",description:"Muestra un mensaje cuando se produce `Analizar archivo en cambiar`"},"override-locale":{name:"Anular configuraci\xF3n regional",description:"Establezca esta opci\xF3n si desea utilizar una configuraci\xF3n regional diferente de la predeterminada"},"same-as-system-locale":"Igual que el sistema ({SYS_LOCALE})","yaml-aliases-section-style":{name:"Estilo de secci\xF3n de alias de YAML",description:"El estilo de la secci\xF3n de alias de YAML"},"yaml-tags-section-style":{name:"Estilo de secci\xF3n de etiquetas de YAML",description:"El estilo de la secci\xF3n de etiquetas de YAML"},"default-escape-character":{name:"Car\xE1cter de escape predeterminado",description:"El car\xE1cter predeterminado que se va a usar para escapar de los valores YAML cuando no hay comillas simples y comillas dobles."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"Eliminaci\xF3n de caracteres de escape innecesarios cuando est\xE1 en formato de matriz multil\xEDnea",description:"Los caracteres de escape para matrices de YAML multil\xEDnea no necesitan el mismo escape que las matrices de una sola l\xEDnea, por lo que cuando est\xE1n en formato multil\xEDnea, elimine los escapes adicionales que no son necesarios"},"number-of-dollar-signs-to-indicate-math-block":{name:"N\xFAmero de signos de d\xF3lar para indicar el bloque matem\xE1tico",description:"La cantidad de signos de d\xF3lar para considerar el contenido matem\xE1tico como un bloque matem\xE1tico en lugar de matem\xE1ticas en l\xEDnea"}},debug:{"log-level":{name:"Nivel de registro",description:"Los tipos de registros que el servicio permitir\xE1 registrar. El valor predeterminado es error."},"linter-config":{name:"Configuraci\xF3n de Linter",description:"El contenido del archivo data.json para Linter a partir de la carga de la p\xE1gina de configuraci\xF3n"},"log-collection":{name:"Recopilar registros al activar y desactivar el archivo actual",description:"Contin\xFAa y recopila registros cuando `Analizar en guardar` y analizar el archivo actual. Estos registros pueden ser \xFAtiles para depurar y crear informes de errores."},"linter-logs":{name:"Registros de Linter",description:"Los registros del \xFAltimo `Analizar en guardar` o del \xFAltimo archivo actual de analizar se ejecutan si est\xE1n habilitados."}}},options:{"custom-command":{name:"Comandos personalizados",description:"Los comandos personalizados son comandos de Obsidian que se ejecutan despu\xE9s de que Linter termina de ejecutar sus reglas regulares. Esto significa que no se ejecutan antes de que se ejecute la l\xF3gica de marca de tiempo YAML, por lo que pueden hacer que la marca de tiempo de YAML se active en la siguiente ejecuci\xF3n del Linter. Solo puede seleccionar un comando de Obsidian una vez. **_Note que esto actualmente solo funciona para analizar el archivo actual._**",warning:"Al seleccionar una opci\xF3n, aseg\xFArese de seleccionar la opci\xF3n usando el rat\xF3n o presionando la clave Intro. Es posible que otros m\xE9todos de selecci\xF3n no funcionen y solo se guardar\xE1n las selecciones de un comando de Obsidian real o una cadena vac\xEDa.","add-input-button-text":"Agregar nuevo comando","command-search-placeholder-text":"Comando de Obsidian","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"},"custom-replace":{name:"Reemplazo regex personalizado",description:"El reemplazo de regex personalizado se puede usar para reemplazar cualquier cosa que coincida con el valor de b\xFAsqueda de regex con el valor de reemplazo. Los valores de reemplazo y b\xFAsqueda deber\xE1n ser valores regex v\xE1lidos.",warning:"Use esto con precauci\xF3n si no conoce regex. Adem\xE1s, aseg\xFArese de no usar lookbehinds en su regex en dispositivos m\xF3viles iOS, ya que eso har\xE1 que falle analizar ya que no es compatible con esa plataforma.","add-input-button-text":"Agregar nuevo reemplazo de regex","regex-to-find-placeholder-text":"Regex para encontrar","flags-placeholder-text":"Marcas","regex-to-replace-placeholder-text":"Regex para reemplazar","label-placeholder-text":"etiqueta","move-up-tooltip":"Desplazar hacia arriba","move-down-tooltip":"Desplazar hacia abajo","delete-tooltip":"Borrar"}},rules:{"auto-correct-common-misspellings":{name:"Correcci\xF3n autom\xE1tica de errores ortogr\xE1ficos comunes",description:"Utiliza un diccionario de errores ortogr\xE1ficos comunes para convertirlos autom\xE1ticamente a su ortograf\xEDa correcta. Consulte [mapa de autocorrecci\xF3n](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) para obtener la lista completa de palabras corregidas autom\xE1ticamente. **Nota: esta lista puede funcionar en texto de varios idiomas, pero esta lista es la misma sin importar qu\xE9 idioma est\xE9 en uso actualmente.**","ignore-words":{name:"Ignorar palabras",description:"Una lista separada por comas de palabras en min\xFAsculas para ignorar al corregir autom\xE1ticamente"}},"add-blockquote-indentation-on-paste":{name:"Agregar sangr\xEDa de blockquote en pegar",description:"Agrega blockquotes a todas menos a la primera l\xEDnea, cuando el cursor est\xE1 en una l\xEDnea blockquote/callout durante el pegado"},"blockquote-style":{name:"Estilo de cotizaci\xF3n en bloque",description:"Se asegura de que el estilo de la cita en bloque sea consistente.",style:{name:"Estilo",description:"El estilo utilizado en los indicadores de cotizaci\xF3n en bloque"}},"capitalize-headings":{name:"Poner may\xFAsculas en los encabezados",description:"Los encabezados deben estar formateados con may\xFAsculas",style:{name:"Estilo",description:"El estilo de may\xFAsculas que se va a utilizar"},"ignore-case-words":{name:"Ignorar palabras en may\xFAsculas y min\xFAsculas",description:"Solo aplique el estilo de may\xFAsculas y min\xFAsculas a las palabras que est\xE9n todas en min\xFAsculas"},"ignore-words":{name:"Ignorar palabras",description:"Una lista de palabras separadas por comas para ignorar al poner en may\xFAsculas"},"lowercase-words":{name:"Palabras en min\xFAsculas",description:"Una lista de palabras separadas por comas para mantener min\xFAsculas"}},"compact-yaml":{name:"YAML compacto",description:"Elimina las l\xEDneas en blanco iniciales y finales en la materia frontal de YAML.","inner-new-lines":{name:"Nuevas l\xEDneas internas",description:"Quitar nuevas l\xEDneas que no est\xE9n al principio o al final del YAML"}},"consecutive-blank-lines":{name:"L\xEDneas en blanco consecutivas",description:"Debe haber como m\xE1ximo una l\xEDnea en blanco consecutiva."},"convert-bullet-list-markers":{name:"Convertir marcadores de lista de vi\xF1etas",description:"Convierte s\xEDmbolos de marcador de lista de vi\xF1etas comunes en marcadores de lista de rebajas."},"convert-spaces-to-tabs":{name:"Convertir espacios en pesta\xF1as",description:"Convierte los espacios iniciales en pesta\xF1as.",tabsize:{name:"Tama\xF1o de la pesta\xF1a",description:"N\xFAmero de espacios que se convertir\xE1n en una pesta\xF1a"}},"emphasis-style":{name:"Estilo de \xE9nfasis",description:"Se asegura de que el estilo de \xE9nfasis sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar el contenido enfatizado"}},"empty-line-around-blockquotes":{name:"L\xEDnea vac\xEDa alrededor de blockquotes",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de blockquotes a menos que inicien o finalicen un documento. **Tenga en cuenta que una l\xEDnea vac\xEDa es un nivel menos de anidamiento para blockquotes o un car\xE1cter de nueva l\xEDnea.**"},"empty-line-around-code-fences":{name:"L\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo",description:"Garantiza que haya una l\xEDnea vac\xEDa alrededor de las vallas de c\xF3digo a menos que inicien o finalicen un documento."},"empty-line-around-math-blocks":{name:"L\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de los bloques matem\xE1ticos usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"empty-line-around-tables":{name:"L\xEDnea vac\xEDa alrededor de las tablas",description:"Asegura que haya una l\xEDnea vac\xEDa alrededor de las tablas con sabor a github a menos que inicien o finalicen un documento."},"escape-yaml-special-characters":{name:"Evitar los caracteres especiales de YAML",description:`Escapa dos puntos con un espacio despu\xE9s de ellos (:), comillas simples (') y comillas dobles (") en YAML.`,"try-to-escape-single-line-arrays":{name:"Intente escapar las matrices de una sola l\xEDnea",description:'Intenta escapar de los valores de matriz suponiendo que una matriz comienza con "[", termina con "]" y tiene elementos que est\xE1n delimitados por ",".'}},"file-name-heading":{name:"Encabezado de nombre de archivo",description:"Inserta el nombre de archivo como un encabezado H1 si no existe ning\xFAn encabezado H1."},"footnote-after-punctuation":{name:"Nota al pie despu\xE9s de la puntuaci\xF3n",description:"Asegura que las referencias de notas al pie se coloquen despu\xE9s de la puntuaci\xF3n, no antes."},"force-yaml-escape":{name:"Forzar escape de YAML",description:"Escapa los valores de las claves YAML especificadas.","force-yaml-escape-keys":{name:"Forzar escape de YAML en las claves",description:"Utiliza el car\xE1cter de escape de YAML en las claves de YAML especificadas separadas por un nuevo car\xE1cter de l\xEDnea si a\xFAn no est\xE1 escapado. No lo use en matrices de YAML."}},"format-tags-in-yaml":{name:"Dar formato a las etiquetas de formato en YAML",description:"Elimine los hashtags de las etiquetas en el frontmatter del YAML, ya que hacen que las etiquetas no sean v\xE1lidas."},"format-yaml-array":{name:"Dar formato a las matrices de YAML",description:"Permite el formato de matrices regulares de YAML como multil\xEDnea o de una sola l\xEDnea y las `etiquetas` y `alias` pueden tener algunos formatos espec\xEDficos de YAML de Obsidian. Tenga en cuenta que una sola cadena a una sola l\xEDnea pasa de una sola entrada de cadena a una matriz de una sola l\xEDnea si hay m\xE1s de 1 entrada presente. Lo mismo es cierto para una sola cadena a multil\xEDnea, excepto que se convierte en una matriz multil\xEDnea.","alias-key":{name:"Dar formato a la secci\xF3n de alias de YAML",description:"Activa el formato para la secci\xF3n de alias YAML. No debe habilitar esta opci\xF3n junto con la regla `Alias de t\xEDtulo YAML`, ya que es posible que no funcionen bien juntos o que tengan diferentes estilos de formato seleccionados que causen resultados inesperados."},"tag-key":{name:"Dar formato a la secci\xF3n de etiquetas de YAML",description:"Activa el formato para la secci\xF3n de etiquetas de YAML."},"default-array-style":{name:"Estilo de secci\xF3n de matriz predeterminado de YAML",description:"El estilo de otras matrices de YAML que no son `etiquetas`, `alias` o en `Forzar valores de clave para que sean matrices de una sola l\xEDnea` y `Forzar valores de clave para que sean matrices multil\xEDnea`"},"default-array-keys":{name:"Dar formato a las secciones de matrices de YAML",description:"Activa el formato para matrices normales de YAML"},"force-single-line-array-style":{name:"Forzar que los valores de clave sean matrices de una sola l\xEDnea",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato de una sola l\xEDnea (deje vac\xEDo para deshabilitar esta opci\xF3n)"},"force-multi-line-array-style":{name:"Forzar que los valores de las claves sean matrices multil\xEDneas",description:"Fuerza la matriz de YAML para que las nuevas claves separadas por l\xEDnea est\xE9n en formato multil\xEDnea (deje vac\xEDa para deshabilitar esta opci\xF3n)"}},"header-increment":{name:"Incremento de encabezado",description:"Los niveles de encabezado solo deben aumentar en un nivel a la vez","start-at-h2":{name:"Iniciar el incremento de encabezado en el nivel de encabezado 2",description:"Hace que el nivel de encabezado 2 sea el nivel de t\xEDtulo m\xEDnimo en un archivo para el incremento de encabezado y desplaza todos los encabezados en consecuencia para que se incrementen a partir de un encabezado de nivel 2."}},"heading-blank-lines":{name:"L\xEDneas en blanco de encabezado",description:"Todos los encabezados tienen una l\xEDnea en blanco antes y despu\xE9s (excepto cuando el encabezado est\xE1 al principio o al final del documento).",bottom:{name:"Abajo",description:"Asegura una l\xEDnea en blanco despu\xE9s de los encabezados"},"empty-line-after-yaml":{name:"L\xEDnea vac\xEDa entre el YAML y el encabezado",description:"Mantenga la l\xEDnea vac\xEDa entre el frontmatter del YAML y el encabezado"}},"headings-start-line":{name:"Comenzar los encabezados al principio de la l\xEDnea",description:"Los encabezados que no inician una l\xEDnea tendr\xE1n su espacio en blanco anterior eliminado para asegurarse de que se reconozcan como encabezados."},"insert-yaml-attributes":{name:"Insertar atributos de YAML",description:"Inserta los atributos especificados de YAML en el frontmatter del YAML. Coloque cada atributo en una sola l\xEDnea.","text-to-insert":{name:"Texto a insertar",description:"Texto para insertar en el frontmatter del YAML"}},"line-break-at-document-end":{name:"Salto de l\xEDnea al final del documento",description:"Asegura que haya exactamente un salto de l\xEDnea al final de un documento."},"move-footnotes-to-the-bottom":{name:"Mover las notas al pie a la parte inferior",description:"Mueva todas las notas al pie de p\xE1gina a la parte inferior del documento."},"move-math-block-indicators-to-their-own-line":{name:"Mover los indicadores de bloques matem\xE1ticos a su propia l\xEDnea",description:"Mueva todos los indicadores de bloques matem\xE1ticos iniciales y finales a sus propias l\xEDneas usando `N\xFAmero de signos de d\xF3lar para indicar un bloque matem\xE1tico` para determinar cu\xE1ntos signos de d\xF3lar indica un bloque matem\xE1tico para matem\xE1ticas de una sola l\xEDnea."},"move-tags-to-yaml":{name:"Mover etiquetas a YAML",description:"Mueva todas las etiquetas al frontmatter del YAML del documento.","how-to-handle-existing-tags":{name:"Operaci\xF3n de etiqueta corporal",description:"Lo qur se debe hacer con las etiquetas no ignoradas en el cuerpo del archivo una vez que se han movido al frontmatter"},"tags-to-ignore":{name:"Etiquetas para omitir",description:"Las etiquetas que no se mover\xE1n a la matriz de etiquetas ni se eliminar\xE1n del contenido del cuerpo si est\xE1 habilitado `Eliminar el hashtag de las etiquetas en el cuerpo del contenido`. Cada etiqueta debe estar en una nueva l\xEDnea y sin el `#`. **Aseg\xFArese de no incluir el hashtag en el nombre de la etiqueta.**"}},"no-bare-urls":{name:"Sin URL desnuda",description:"Encierra las direcciones URL desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles.","no-bare-uris":{name:"Sin URI desnuda",description:"Encierra las direcciones URI desnudas con corchetes angulares, excepto cuando est\xE1n encerradas en marcas traseras, llaves cuadradas o comillas simples o dobles."}},"ordered-list-style":{name:"Estilo de lista ordenada",description:"Se asegura de que las listas ordenadas siguen el estilo especificado. Tenga en cuenta que 2 espacios o 1 tabulaci\xF3n se considera un nivel de sangr\xEDa.","number-style":{name:"Estilo num\xE9rico",description:"El estilo num\xE9rico utilizado en los indicadores de lista ordenada"},"list-end-style":{name:"Estilo final del indicador de lista ordenada",description:"El car\xE1cter final de un indicador de lista ordenada"}},"paragraph-blank-lines":{name:"L\xEDneas en blanco del p\xE1rrafo",description:"Todos los p\xE1rrafos deben tener exactamente una l\xEDnea en blanco antes y despu\xE9s."},"prevent-double-checklist-indicator-on-paste":{name:"Evitar el indicador de doble lista de verificaci\xF3n en pegar",description:"Elimina el indicador de lista de verificaci\xF3n inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista de verificaci\xF3n"},"prevent-double-list-item-indicator-on-paste":{name:"Prevenir el indicador de elemento de lista doble al pegar",description:"Elimina el indicador de lista inicial del texto para pegar si la l\xEDnea en la que se encuentra el cursor en el archivo tiene un indicador de lista"},"proper-ellipsis-on-paste":{name:"Puntos suspensivos adecuados al pegar",description:"Reemplaza tres puntos consecutivos por puntos suspensivos aunque tengan un espacio entre ellos en el texto a pegar"},"proper-ellipsis":{name:"Puntos suspensivos propios",description:"Reemplaza tres puntos consecutivos con puntos suspensivos."},"quote-style":{name:"Estilo de cotizaci\xF3n",description:"Actualiza las comillas en el contenido del cuerpo para que se actualicen a los estilos de comillas simples y dobles especificados.","single-quote-enabled":{name:"Habilitar `Estilo de comillas simples`",description:"Especifica que se debe utilizar el estilo de comillas simples seleccionado."},"single-quote-style":{name:"Estilo de comillas simples",description:"El estilo de las comillas simples a utilizar."},"double-quote-enabled":{name:"Habilitar `Estilo de comillas dobles`",description:"Especifica que se debe utilizar el estilo de comillas dobles seleccionado."},"double-quote-style":{name:"Estilo de comillas dobles",description:"El estilo de comillas dobles a utilizar."}},"re-index-footnotes":{name:"Volver a indexar notas al pie",description:"Vuelve a indexar las notas al pie de p\xE1gina y las notas al pie, seg\xFAn el orden de aparici\xF3n (NOTA: esta regla *no* funciona si hay m\xE1s de una nota al pie para una clave)."},"remove-consecutive-list-markers":{name:"Eliminar marcadores de lista consecutiva",description:"Elimina marcadores de lista consecutivos. \xDAtil al copiar y pegar elementos de la lista."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Eliminar l\xEDneas vac\xEDas entre marcadores de lista y listas de verificaci\xF3n",description:"No debe haber l\xEDneas vac\xEDas entre los marcadores de lista y las listas de verificaci\xF3n."},"remove-empty-list-markers":{name:"Eliminar marcadores de lista vac\xEDa",description:"Elimina marcadores de listas vac\xEDas, es decir, lista de elementos sin contenido."},"remove-hyphenated-line-breaks":{name:"Eliminar saltos de l\xEDnea con gui\xF3n",description:"Elimina los saltos de l\xEDnea con gui\xF3n. \xDAtil al pegar texto de libros de texto."},"remove-hyphens-on-paste":{name:"Eliminar guiones al pegar",description:"Elimina guiones del texto al pegar"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Eliminar espacios en blanco iniciales o finales al pegar",description:"Elimina cualquier espacio en blanco inicial que no sea una pesta\xF1a y todos los espacios en blanco finales para que el texto se pegue"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Eliminar las notas al pie sobrantes de la cita al pegar",description:"Elimina las referencias de notas al pie sobrantes para que el texto se pegue"},"remove-link-spacing":{name:"Quitar el espacio entre enlaces",description:"Elimina el espacio alrededor del texto del enlace."},"remove-multiple-blank-lines-on-paste":{name:"Eliminar varias l\xEDneas en blanco al pegar",description:"Condensa varias l\xEDneas en blanco en una l\xEDnea en blanco para que el texto se pegue"},"remove-multiple-spaces":{name:"Quitar varios espacios",description:"Elimina dos o m\xE1s espacios consecutivos. Ignora los espacios al principio y al final de la l\xEDnea."},"remove-space-around-characters":{name:"Quitar el espacio alrededor de los caracteres",description:"Garantiza que determinados caracteres no est\xE9n rodeados de espacios en blanco (ya sean espacios individuales o tabulaciones). Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","include-fullwidth-forms":{name:"Incluir formularios de ancho completo",description:'Incluir bloque Unicode de formularios de ancho completo'},"include-cjk-symbols-and-punctuation":{name:"Incluir s\xEDmbolos de CJK y puntuaci\xF3n",description:'Incluir Bloque Unicode de s\xEDmbolos y puntuaci\xF3n de CJK'},"include-dashes":{name:"Incluir guiones",description:"Incluir gui\xF3n corto (\u2013) y gui\xF3n largo (\u2014)"},"other-symbols":{name:"Otros s\xEDmbolos",description:"Otros s\xEDmbolos para incluir"}},"remove-space-before-or-after-characters":{name:"Quitar el espacio antes o despu\xE9s de los caracteres",description:"Elimina el espacio antes de los caracteres especificados y despu\xE9s de los caracteres especificados. Tenga en cuenta que esto puede causar problemas con el formato de descuento en algunos casos.","characters-to-remove-space-before":{name:"Eliminar espacio antes de los caracteres",description:"Elimina el espacio antes de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"},"characters-to-remove-space-after":{name:"Eliminar espacio despu\xE9s de los caracteres",description:"Elimina el espacio despu\xE9s de los caracteres especificados. **Nota: el uso de `{` o `}` en la lista de caracteres afectar\xE1 inesperadamente a los archivos, ya que se usa en la sintaxis de ignorar en segundo plano.**"}},"remove-trailing-punctuation-in-heading":{name:"Eliminar la puntuaci\xF3n final en el encabezado",description:"Elimina la puntuaci\xF3n especificada al final de los encabezados, asegur\xE1ndose de ignorar el punto y coma al final de [referencias de entidades de HTML](https://es.wikipedia.org/wiki/Anexo:Referencias_a_entidades_de_caracteres_XML_y_HTML).","punctuation-to-remove":{name:"Puntuaci\xF3n final",description:"La puntuaci\xF3n final que se eliminar\xE1 de los encabezados del archivo."}},"remove-yaml-keys":{name:"Eliminar claves de YAML",description:"Elimina las claves especificadas de YAML","yaml-keys-to-remove":{name:"Claves de YAML para eliminar",description:"Las claves de YAML para eliminar del frontmatter del YAML con o sin dos puntos"}},"space-after-list-markers":{name:"Espacio despu\xE9s de los marcadores de lista",description:"Debe haber un solo espacio despu\xE9s de los marcadores de lista y las casillas de verificaci\xF3n."},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"Espacio entre chino japon\xE9s o coreano e ingl\xE9s o n\xFAmeros",description:"Garantiza que el chino, el japon\xE9s o el coreano y el ingl\xE9s o los n\xFAmeros est\xE9n separados por un solo espacio. Sigue estas [directrices](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"Estilo fuerte",description:"Se asegura de que el estilo fuerte sea consistente.",style:{name:"Estilo",description:"El estilo utilizado para denotar contenido fuerte/en negrita"}},"trailing-spaces":{name:"Espacios finales",description:"Elimina espacios adicionales despu\xE9s de cada l\xEDnea.","twp-space-line-break":{name:"Salto de l\xEDnea de dos espacios",description:'Ignore dos espacios seguidos de un salto de l\xEDnea ("Regla de dos espacios").'}},"two-spaces-between-lines-with-content":{name:"Dos espacios entre l\xEDneas con contenido",description:"Se asegura de que el salto de l\xEDnea especificado se agregue al final de las l\xEDneas y el contenido contin\xFAe en la l\xEDnea siguiente para p\xE1rrafos, citas en bloque y elementos de lista.","line-break-indicator":{name:"Indicador de salto de l\xEDnea",description:"El indicador de salto de l\xEDnea a utilizar."}},"unordered-list-style":{name:"Estilo de lista desordenada",description:"Se asegura de que las listas desordenadas sigan el estilo especificado.","list-style":{name:"Estilo de elemento de lista",description:"El estilo de elemento de lista para usar en listas desordenadas"}},"yaml-key-sort":{name:"Clasificaci\xF3n de clave de YAML",description:"Ordena las claves de YAML seg\xFAn el orden y la prioridad especificados. Nota: tambi\xE9n puede eliminar las l\xEDneas en blanco.","yaml-key-priority-sort-order":{name:"Orden de clasificaci\xF3n de prioridad de clave de YAML",description:"El orden en el que se ordenan las claves con una en cada l\xEDnea donde se ordena en el orden que se encuentra en la lista"},"priority-keys-at-start-of-yaml":{name:"Claves de prioridad al inicio del YAML",description:"El orden de clasificaci\xF3n de prioridad clave de YAML se coloca al comienzo del frontmatter del YAML"},"yaml-sort-order-for-other-keys":{name:"Orden de clasificaci\xF3n de YAML para otras claves",description:"La forma en que ordenar las claves que no se encuentran en el \xE1rea de texto `Orden de clasificaci\xF3n de prioridad de clave de YAML`"}},"yaml-timestamp":{name:"Marca de tiempo de YAML",description:"Lleve un registro de la fecha en que se edit\xF3 el archivo por \xFAltima vez en el frente del YAML. Obtiene las fechas de los metadatos del archivo.","date-created":{name:"Fecha de creaci\xF3n",description:"Inserte la fecha de creaci\xF3n del archivo"},"date-created-key":{name:"Clave de fecha de creaci\xF3n",description:"La clave de YAML para usar para la fecha de creaci\xF3n"},"force-retention-of-create-value":{name:"Forzar la fecha de creaci\xF3n de la retenci\xF3n del valor clave",description:"Reutiliza el valor en el frontmatter del YAML para la fecha de creaci\xF3n en lugar de los metadatos del archivo, lo que es \xFAtil para evitar que los cambios en los metadatos del archivo provoquen que el valor cambie a un valor diferente."},"date-modified":{name:"Fecha modificada",description:"Inserte la fecha en que se modific\xF3 el archivo por \xFAltima vez"},"date-modified-key":{name:"Clave de fecha modificada",description:"La clave de YAML para usar para la fecha de modificaci\xF3n"},format:{name:"Formato",description:"Formato de fecha de Moment a usar (ver [Opciones de formato de Moment](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"Alias de t\xEDtulo de YAML",description:"Inserta o actualiza el t\xEDtulo del archivo en la secci\xF3n de alias de YAML frontmatter. Obtiene el t\xEDtulo del primer H1 o nombre de archivo.","preserve-existing-alias-section-style":{name:"Conservar el estilo de secci\xF3n de alias existente",description:"Si se establece, la configuraci\xF3n `Estilo de secci\xF3n de alias de YAML` se aplica solo a las secciones reci\xE9n creadas"},"keep-alias-that-matches-the-filename":{name:"Mantenga el alias que coincida con el nombre del archivo",description:"Estos alias suelen ser redundantes."},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"Use la clave de YAML especificado por `Clave auxiliar de alias` para ayudar con los cambios de nombre de archivo y encabezado",description:"Si se establece, cuando cambia el primer encabezado H1 o cambia el nombre de archivo si el primer H1 no est\xE1 presente, el alias anterior almacenado en esta clave se reemplazar\xE1 con el nuevo valor en lugar de simplemente insertar una nueva entrada en la matriz de alias."},"alias-helper-key":{name:"Clave auxiliar de alias",description:"La clave que se debe utilizar para ayudar a realizar un seguimiento de cu\xE1l fue el \xFAltimo nombre de archivo o encabezado que esta regla almacen\xF3 en el frontmatter."}},"yaml-title":{name:"T\xEDtulo de YAML",description:"Inserta el t\xEDtulo del archivo en el frontmatter de YAML. Obtiene el t\xEDtulo seg\xFAn el modo seleccionado.","title-key":{name:"Clave de t\xEDtulo",description:"La clave de YAML para usar para el t\xEDtulo"},mode:{name:"Modo",description:"El m\xE9todo a utilizar para obtener el t\xEDtulo"}}},enums:{"Title Case":"Titulo del Caso","ALL CAPS":"TODO MAY\xDASCULAS","First letter":"Primera letra",".":".",")":")",ERROR:"error",TRACE:"trazar",DEBUG:"depurar",INFO:"informaci\xF3n",WARN:"advertencia",SILENT:"silencio",ascending:"ascendente",lazy:"perezoso",Nothing:"nada","Remove hashtag":"Remove hashtag","Remove whole tag":"Remove whole tag",asterisk:"asterisco",underscore:"guion bajo",consistent:"congruente","-":"-","*":"*","+":"+",space:"espacio","no space":"sin espacio",None:"nada","Ascending Alphabetical":"Ascendente alfab\xE9tico","Descending Alphabetical":"Descendiente alfab\xE9tico","multi-line":"multil\xEDnea","single-line":"linea sola","single string to single-line":"una sola cadena a una sola l\xEDnea","single string to multi-line":"cadena \xFAnica a multil\xEDnea","single string comma delimited":"cadena \xFAnica delimitada por comas","single string space delimited":"espacio de una sola cadena delimitado","single-line space delimited":"espacio de una sola l\xEDnea delimitado","first-h1":"primer encabezado de nivel 1","first-h1-or-filename-if-h1-missing":"primer encabezado de nivel 1 o nombre de archivo si falta el encabezado de primer nivel 1",filename:"nombre del archivo","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D","\\":"\\","
":"
"," ":" ","
":"
"}};var Pd={};var Hd={};var Ud={};var Wd={};var Vd={};var $d={};var Gd={};var Qd={};var Zd={};var Jd={};var Xd={};var eu={};var iu={};var tu={};var nu={commands:{"lint-file":{name:"Ge\xE7erli dosyay\u0131 lintle","error-message":"Dosyada Lintleme Hatas\u0131"},"lint-file-unless-ignored":{name:"Yoksay\u0131lmad\u0131k\xE7a ge\xE7erli dosyay\u0131 lintle"},"lint-all-files":{name:"Kasadaki t\xFCm dosyalar\u0131 lintle","error-message":"Dosyada T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131","success-message":"T\xFCm dosyalar lintlendi","errors-message-singular":"T\xFCm dosyalar lintlendi ve 1 hata vard\u0131.","errors-message-plural":"T\xFCm dosyalar lintlendi ve {NUM} hata vard\u0131.","start-message":"Bu, t\xFCm dosyalar\u0131n\u0131z\u0131 d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"T\xFCm\xFCn\xFC Lintle","submit-button-notice-text":"T\xFCm dosyalar lintleniyor..."},"lint-all-files-in-folder":{name:"Ge\xE7erli klas\xF6rdeki t\xFCm dosyalar\u0131 lintle","start-message":"Bu, {FOLDER_NAME} dahilindeki t\xFCm dosyalar\u0131n\u0131z\u0131 ve alt klas\xF6rlerini d\xFCzenler ve hatalara yol a\xE7abilir.","submit-button-text":"{FOLDER_NAME} i\xE7indeki T\xFCm Dosyalar\u0131 Lintle","submit-button-notice-text":"{FOLDER_NAME} i\xE7indeki t\xFCm dosyalar lintleniyor...","error-message":"Klas\xF6rdeki T\xFCm Dosyalar\u0131 Lintleme Hatas\u0131 Dosyada","success-message":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi.","message-singular":"{FOLDER_NAME} i\xE7indeki t\xFCm {NUM} dosya lintlendi ve 1 hata vard\u0131.","message-plural":"{FOLDER_NAME} i\xE7indeki t\xFCm {FILE_COUNT} dosya lintlendi ve {ERROR_COUNT} hata vard\u0131."},"paste-as-plain-text":{name:"D\xFCz Metin Olarak & Modifikasyonsuz Yap\u0131\u015Ft\u0131r"},"lint-file-pop-up-menu-text":{name:"Dosyay\u0131 lintle"},"lint-folder-pop-up-menu-text":{name:"Klas\xF6r\xFC lintle"}},logs:{"plugin-load":"Eklenti y\xFCkleniyor","plugin-unload":"Eklenti kald\u0131r\u0131l\u0131yor","folder-lint":"Klas\xF6r lintleniyor ","linter-run":"Lintleme \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","paste-link-warning":"pano i\xE7eri\u011Fi bir link oldu\u011Fu ve yap\u0131\u015Ft\u0131rmay\u0131 de\u011Fi\u015Ftiren di\u011Fer eklentilerle \xE7ak\u0131\u015Fmay\u0131 \xF6nlemek i\xE7in lintleme yap\u0131\u015Ft\u0131rmas\u0131 iptal edildi.","see-console":"Daha fazla detay i\xE7in konsolu kontrol edin.","unknown-error":"Lintleme s\u0131ras\u0131nda bilinmeyen bir hata olu\u015Ftu.","moment-locale-not-found":"Moment.js yerelini {MOMENT_LOCALE} olarak de\u011Fi\u015Ftirmeye \xE7al\u0131\u015F\u0131yor, elde edilen {CURRENT_LOCALE}","file-change-lint-message-start":"Lintlendi","pre-rules":"normal kurallardan \xF6nceki kurallar","post-rules":"normal kurallardan sonraki kurallar","rule-running":"kurallar \xE7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-regex":"\xF6zel regex kurallar\u0131","running-custom-regex":"\xD6zel Regex \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","running-custom-lint-command":"\xD6zel Lint Komutlar\u0131 \xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","custom-lint-duplicate-warning":'Ayn\u0131 komutu ("{COMMAND_NAME}") \xF6zel bir lint kural\u0131 olarak iki kez \xE7al\u0131\u015Ft\u0131ramazs\u0131n\u0131z.',"custom-lint-error-message":"\xD6zel Lint Komutu Hatas\u0131","disabled-text":"devre d\u0131\u015F\u0131","run-rule-text":"\xC7al\u0131\u015Ft\u0131r\u0131l\u0131yor","timing-key-not-found":"'{TIMING_KEY}' zamanlama anahtar\u0131 zamanlama bilgisi listesinde bulunamad\u0131, bu y\xFCzden yoksay\u0131ld\u0131","milliseconds-abbreviation":"ms","invalid-date-format-error":"Olu\u015Fturulan tarih format\u0131 '{DATE}' ayr\u0131\u015Ft\u0131r\u0131lamad\u0131 veya belirlenemedi, bu y\xFCzden '{FILE_NAME}' dosyas\u0131ndaki olu\u015Fturulan tarih ayn\u0131 b\u0131rak\u0131ld\u0131","invalid-delimiter-error-message":"ayra\xE7 sadece tek bir karakter olabilir","missing-footnote-error-message":"'{FOOTNOTE}' dipnotunun i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir dipnot referans\u0131 yok ve i\u015Flenemez. L\xFCtfen t\xFCm dipnotlar\u0131n, dipnot i\xE7eri\u011Finden \xF6nce kar\u015F\u0131l\u0131k gelen bir referans\u0131 oldu\u011Fundan emin olun.","too-many-footnotes-error-message":"'{FOOTNOTE_KEY}' dipnot anahtar\u0131 birden fazla dipnota at\u0131fta bulunuyor. L\xFCtfen dipnotlar\u0131 g\xFCncelleyin, b\xF6ylece her dipnot anahtar\u0131 i\xE7in yaln\u0131zca bir dipnot olur.","wrapper-yaml-error":"YAML'da hata: {ERROR_MESSAGE}","wrapper-unknown-error":"bilinmeyen hata: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"Panoda i\xE7erik yok.","characters-added":"karakterler eklendi","characters-removed":"karakterler kald\u0131r\u0131ld\u0131"},"all-rules-option":"T\xFCm\xFC","linter-title":"Linter","empty-search-results-text":"Arama ile e\u015Fle\u015Fen ayar bulunamad\u0131","warning-text":"Uyar\u0131","file-backup-text":"Dosyalar\u0131n\u0131z\u0131n yede\u011Fini ald\u0131\u011F\u0131n\u0131zdan emin olun.",tabs:{names:{general:"Genel",custom:"\xD6zel",yaml:"YAML",heading:"Ba\u015Fl\u0131k",content:"\u0130\xE7erik",footnote:"Dipnot",spacing:"Bo\u015Fluk",paste:"Yap\u0131\u015Ft\u0131r",debug:"Hata ay\u0131kla"},"default-search-bar-text":"T\xFCm ayarlar\u0131 ara",general:{"lint-on-save":{name:"Kaydederken d\xFCzelt",description:"Manuel kaydetme (Ctrl + S tu\u015Funa bas\u0131ld\u0131\u011F\u0131nda veya vim tu\u015F ba\u011Flamalar\u0131n\u0131 kullan\u0131rken :w komutu \xE7al\u0131\u015Ft\u0131r\u0131ld\u0131\u011F\u0131nda) dosyay\u0131 d\xFCzeltir"},"display-message":{name:"D\xFCzeltme sonras\u0131 mesaj\u0131 g\xF6ster",description:"D\xFCzeltme sonras\u0131 de\u011Fi\u015Fen karakter say\u0131s\u0131n\u0131 g\xF6sterir"},"lint-on-file-change":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme",description:"Bir dosya kapat\u0131ld\u0131\u011F\u0131nda veya yeni bir dosya a\xE7\u0131ld\u0131\u011F\u0131nda, \xF6nceki dosya d\xFCzeltilir."},"display-lint-on-file-change-message":{name:"Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme Mesaj\u0131n\u0131 G\xF6ster",description:"`Dosya De\u011Fi\u015Fikli\u011Finde D\xFCzeltme` oldu\u011Funda bir mesaj g\xF6sterir"},"folders-to-ignore":{name:"Yoksay\u0131lacak klas\xF6rler",description:"T\xFCm dosyalar\u0131 d\xFCzeltirken veya kaydederken d\xFCzeltme i\u015Fleminin yoksay\u0131laca\u011F\u0131 klas\xF6rler. Klas\xF6r yollar\u0131n\u0131 yeni sat\u0131rlarla ay\u0131rarak girin"},"override-locale":{name:"Yerel ayarlar\u0131n \xFCzerine yaz",description:"Varsay\u0131lan\u0131n d\u0131\u015F\u0131nda bir yerel ayar kullanmak istiyorsan\u0131z bunu ayarlay\u0131n"},"same-as-system-locale":"Sistemle ayn\u0131 ({SYS_LOCALE})","yaml-aliases-section-style":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC stili",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFCn stili"},"yaml-tags-section-style":{name:"YAML etiketleri b\xF6l\xFCm\xFC stili",description:"YAML etiketleri b\xF6l\xFCm\xFCn\xFCn stili"},"default-escape-character":{name:"Varsay\u0131lan Ka\xE7\u0131\u015F Karakteri",description:"Tek t\u0131rnak ve \xE7ift t\u0131rnak bulunmayan YAML de\u011Ferlerinden ka\xE7mak i\xE7in kullan\u0131lacak varsay\u0131lan karakter."},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\xC7ok Sat\u0131rl\u0131 Dizi Format\u0131ndayken Gereksiz Ka\xE7\u0131\u015F Karakterlerini Kald\u0131r",description:"\xC7ok sat\u0131rl\u0131 YAML dizileri i\xE7in ka\xE7\u0131\u015F karakterleri tek sat\u0131rl\u0131 dizilere g\xF6re ayn\u0131 ka\xE7\u0131\u015Fa ihtiya\xE7 duymaz, bu y\xFCzden \xE7ok sat\u0131rl\u0131 format i\xE7erisinde gerekli olmayan ekstra ka\xE7\u0131\u015Flar\u0131 kald\u0131r\u0131r"},"number-of-dollar-signs-to-indicate-math-block":{name:"Matematiksel Blo\u011Fu Belirtmek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131",description:"Matematik i\xE7eri\u011Finin bir matematiksel blok yerine inline matematik olup olmad\u0131\u011F\u0131n\u0131 belirlemek i\xE7in kullan\u0131lacak dolar i\u015Fareti say\u0131s\u0131"}},debug:{"log-level":{name:"Log D\xFCzeyi",description:"Hizmetin loglamaya izin verdi\u011Fi log t\xFCrleri. Varsay\u0131lan ERROR'dur."},"linter-config":{name:"Linter Yap\u0131land\u0131rmas\u0131",description:"Ayar sayfas\u0131n\u0131n y\xFCklenmesi s\u0131ras\u0131nda Linter i\xE7in data.json i\xE7eri\u011Fi"},"log-collection":{name:"Kaydetme d\xFCzeltmesi ve mevcut dosyan\u0131n d\xFCzeltilmesi s\u0131ras\u0131nda loglar\u0131 topla",description:"`Kaydetme d\xFCzeltmesi` yapt\u0131\u011F\u0131n\u0131zda ve mevcut dosyay\u0131 d\xFCzeltirken loglar\u0131 toplar. Bu loglar hata ay\u0131klama ve hata raporlar\u0131 olu\u015Fturma i\xE7in yard\u0131mc\u0131 olabilir."},"linter-logs":{name:"Linter Loglar\u0131",description:"Son `Kaydetme d\xFCzeltmesi` veya son mevcut dosya \xE7al\u0131\u015Ft\u0131rmas\u0131ndan elde edilen loglar (e\u011Fer etkinle\u015Ftirilmi\u015Fse)."}}},options:{"custom-command":{name:"\xD6zel Komutlar",description:"\xD6zel komutlar, linter normal kurallar\u0131n\u0131 \xE7al\u0131\u015Ft\u0131rmay\u0131 bitirdikten sonra \xE7al\u0131\u015Ft\u0131r\u0131lan Obsidyen komutlard\u0131r. Bu, YAML zaman damgas\u0131 mant\u0131\u011F\u0131 \xE7al\u0131\u015Fmadan \xF6nce \xE7al\u0131\u015Fmad\u0131klar\u0131 anlam\u0131na gelir, dolay\u0131s\u0131yla linterin bir sonraki \xE7al\u0131\u015Fmas\u0131nda YAML zaman damgas\u0131n\u0131n tetiklenmesine neden olabilirler. Bir Obsidyen komutunu yaln\u0131zca bir kez se\xE7ebilirsiniz. **_Bunun \u015Fu anda yaln\u0131zca ge\xE7erli dosyaya sat\u0131r dizilirken \xE7al\u0131\u015Ft\u0131\u011F\u0131n\u0131 unutmay\u0131n._**",warning:"Bir se\xE7ene\u011Fi se\xE7erken, se\xE7ene\u011Fi fareyi kullanarak veya enter tu\u015Funa basarak se\xE7ti\u011Finizden emin olun. Di\u011Fer se\xE7im y\xF6ntemleri \xE7al\u0131\u015Fmayabilir ve yaln\u0131zca ger\xE7ek bir Obsidian komutunun veya bo\u015F bir dizinin se\xE7imleri kaydedilir.","add-input-button-text":"Yeni komut ekle","command-search-placeholder-text":"Obsidian komutu","move-up-tooltip":"Yukar\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131","delete-tooltip":"Sil"},"custom-replace":{name:"\xD6zel Regex De\u011Fi\u015Ftirme",description:"\xD6zel regex de\u011Fi\u015Ftirme, bulunan regex ile e\u015Fle\u015Fen her \u015Feyi de\u011Fi\u015Ftirme de\u011Feri ile de\u011Fi\u015Ftirmek i\xE7in kullan\u0131labilir. De\u011Fi\u015Ftirme ve bulma de\u011Ferleri ge\xE7erli regex de\u011Ferleri olmal\u0131d\u0131r.",warning:"Regex hakk\u0131nda bilginiz yoksa dikkatli kullan\u0131n. Ayr\u0131ca, l\xFCtle iOS mobil platformunda regexinizde geriye d\xF6n\xFCk aramalar\u0131 kullanmay\u0131n \xE7\xFCnk\xFC bu, o platformda desteklenmedi\u011Fi i\xE7in lint i\u015Fleminin ba\u015Far\u0131s\u0131z olmas\u0131na neden olur.","add-input-button-text":"Yeni regex de\u011Fi\u015Ftirme ekle","regex-to-find-placeholder-text":"bulunacak regex","flags-placeholder-text":"bayraklar","regex-to-replace-placeholder-text":"de\u011Fi\u015Ftirilecek regex","label-placeholder-text":"etiket","move-up-tooltip":"Yukar\u0131 ta\u015F\u0131","move-down-tooltip":"A\u015Fa\u011F\u0131 ta\u015F\u0131","delete-tooltip":"Sil"}},rules:{"auto-correct-common-misspellings":{name:"Yayg\u0131n Yanl\u0131\u015F Yaz\u0131mlar\u0131 Otomatik D\xFCzelt",description:"Yayg\u0131n yanl\u0131\u015F yaz\u0131mlar\u0131n s\xF6zl\xFC\u011F\xFCn\xFC kullanarak bunlar\u0131 do\u011Fru yaz\u0131mlar\u0131na otomatik olarak d\xF6n\xFC\u015Ft\xFCr\xFCr. Otomatik d\xFCzeltilen kelimelerin tam listesi i\xE7in [otomatik-d\xFCzeltme haritas\u0131na](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts) bak\u0131n.","ignore-words":{name:"Kelimeleri Yoksay",description:"Otomatik d\xFCzeltme s\u0131ras\u0131nda yoksay\u0131lacak k\xFC\xE7\xFCk harfli kelimelerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"add-blockquote-indentation-on-paste":{name:"Yap\u0131\u015Ft\u0131rma S\u0131ras\u0131nda Blok Al\u0131nt\u0131 Girintisini Ekle",description:"\u0130mle\xE7 bir blok al\u0131nt\u0131/callout sat\u0131r\u0131nda oldu\u011Funda, t\xFCm sat\u0131rlara, ilk sat\u0131r hari\xE7, blok al\u0131nt\u0131lar ekler"},"blockquote-style":{name:"Blok Al\u0131nt\u0131 Stili",description:"Blok al\u0131nt\u0131 stili tutarl\u0131 olmal\u0131d\u0131r.",style:{name:"Stil",description:"Blok al\u0131nt\u0131 g\xF6stergelerinde kullan\u0131lan stil"}},"capitalize-headings":{name:"B\xFCy\xFCk Harfli Ba\u015Fl\u0131klar",description:"Ba\u015Fl\u0131klar b\xFCy\xFCk harfle bi\xE7imlendirilmelidir",style:{name:"Stil",description:"Kullan\u0131lacak b\xFCy\xFCk harfle ba\u015Flatma stili"},"ignore-case-words":{name:"Durum S\xF6zc\xFCklerini Yoksay",description:"Ba\u015Fl\u0131k durum stilini sadece t\xFCm k\xFC\xE7\xFCk harfli s\xF6zc\xFCklere uygula"},"ignore-words":{name:"S\xF6zc\xFCkleri Yoksay",description:"B\xFCy\xFCk harfle ba\u015Flat\u0131rken yoksay\u0131lacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"},"lowercase-words":{name:"K\xFC\xE7\xFCk Harfli S\xF6zc\xFCkler",description:"K\xFC\xE7\xFCk harfli tutulacak s\xF6zc\xFCklerin virg\xFClle ayr\u0131lm\u0131\u015F listesi"}},"compact-yaml":{name:"S\u0131k\u0131\u015Ft\u0131r\u0131lm\u0131\u015F YAML",description:"YAML \xF6n bilgisindeki ba\u015Ftaki ve sondaki bo\u015F sat\u0131rlar\u0131 kald\u0131r\u0131r.","inner-new-lines":{name:"\u0130\xE7 Yeni Sat\u0131rlar",description:"YAML'\u0131n ba\u015F\u0131nda veya sonunda olmayan yeni sat\u0131rlar\u0131 kald\u0131r\u0131r."}},"consecutive-blank-lines":{name:"Ard\u0131\u015F\u0131k bo\u015F sat\u0131rlar",description:"En fazla bir ard\u0131\u015F\u0131k bo\u015F sat\u0131r olmal\u0131d\u0131r."},"convert-bullet-list-markers":{name:"Bullet List Markerlar\u0131n\u0131 D\xF6n\xFC\u015Ft\xFCr",description:"Bullet list marker sembollerini markdown list markerlar\u0131na d\xF6n\xFC\u015Ft\xFCr\xFCr."},"convert-spaces-to-tabs":{name:"Bo\u015Fluklar\u0131 Sekmeye D\xF6n\xFC\u015Ft\xFCr",description:"Ba\u015Ftaki bo\u015Fluklar\u0131 sekmeye d\xF6n\xFC\u015Ft\xFCr\xFCr.",tabsize:{name:"Sekme Boyutu",description:"Bir sekme haline d\xF6n\xFC\u015Ft\xFCr\xFClecek bo\u015Fluk say\u0131s\u0131"}},"emphasis-style":{name:"Vurgu Stili",description:"Vurgu stilinin tutarl\u0131 olmas\u0131n\u0131 sa\u011Flar.",style:{name:"Stil",description:"Vurgulanan i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"empty-line-around-blockquotes":{name:"Al\u0131nt\u0131 Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan al\u0131nt\u0131 bloklar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r. **Not: bo\u015F bir sat\u0131r ya al\u0131nt\u0131 bloklar i\xE7in bir seviye daha az girinti veya yeni bir sat\u0131r karakteri demektir.**"},"empty-line-around-code-fences":{name:"Kod \xC7itlerinin Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan kod \xE7itlerinin etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-math-blocks":{name:"Matematik Bloklar\u0131n\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Tek sat\u0131rl\u0131k matematik i\xE7in bir matematik blo\u011Funu belirtmek i\xE7in ka\xE7 dolar i\u015Fareti oldu\u011Funu belirleyen `Dolar \u0130\u015Faretlerinin Say\u0131s\u0131yla Matematik Blo\u011Funu Belirt` kullan\u0131larak matematik bloklar\u0131n\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"empty-line-around-tables":{name:"Tablolar\u0131n Etraf\u0131nda Bo\u015F Sat\u0131r",description:"Bir belgenin ba\u015F\u0131n\u0131 veya sonunu ba\u015Flatmayan github flavored tablolar\u0131n etraf\u0131nda bo\u015F bir sat\u0131r olmal\u0131d\u0131r."},"escape-yaml-special-characters":{name:"YAML \xD6zel Karakterlerine Ka\xE7\u0131\u015F \u0130\u015Flemi Yap",description:`YAML i\xE7indeki bo\u015Flukla beraber gelen iki nokta \xFCst \xFCste (:), tek t\u0131rnak (') ve \xE7ift t\u0131rnak (") karakterlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutar.`,"try-to-escape-single-line-arrays":{name:"Tek Sat\u0131rl\u0131k Listeleri Ka\xE7\u0131\u015F Denemesi",description:'Bir dizinin "[" ile ba\u015Flad\u0131\u011F\u0131n\u0131, "]" ile bitti\u011Fini ve \xF6\u011Felerin "," ile ayr\u0131ld\u0131\u011F\u0131n\u0131 varsayarak dizi de\u011Ferlerini ka\xE7\u0131\u015F i\u015Flemine tabi tutmaya \xE7al\u0131\u015F\u0131r.'}},"file-name-heading":{name:"Dosya Ad\u0131 Ba\u015Fl\u0131\u011F\u0131",description:"E\u011Fer hi\xE7 H1 ba\u015Fl\u0131\u011F\u0131 yoksa dosya ad\u0131n\u0131 H1 ba\u015Fl\u0131\u011F\u0131 olarak ekler."},"footnote-after-punctuation":{name:"Noktalama \u0130\u015Faretinden Sonra Dipnot",description:"Dipnot referanslar\u0131n\u0131n noktalama i\u015Faretinden \xF6nce de\u011Fil, sonra yerle\u015Ftirildi\u011Finden emin olur."},"force-yaml-escape":{name:"YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Belirtilen YAML anahtarlar\u0131 i\xE7in ka\xE7\u0131\u015F de\u011Ferleri.","force-yaml-escape-keys":{name:"Anahtarlarda YAML Ka\xE7\u0131\u015F\u0131n\u0131 Zorla",description:"Yeni bir sat\u0131r karakteri ile ayr\u0131lm\u0131\u015F belirtilen YAML anahtarlar\u0131nda YAML ka\xE7\u0131\u015F karakterini kullan\u0131r, e\u011Fer zaten ka\xE7\u0131\u015F yap\u0131lmam\u0131\u015Fsa. YAML dizilerinde kullanmay\u0131n"}},"format-tags-in-yaml":{name:"YAML Etiketlerini Bi\xE7imlendir",description:"YAML \xF6n madde i\xE7indeki etiketlerden hashtagleri kald\u0131r\u0131r, \xE7\xFCnk\xFC bunlar etiketleri ge\xE7ersiz k\u0131lar."},"format-yaml-array":{name:"YAML Dizisini Bi\xE7imlendir",description:"Normal YAML dizilerinin \xE7ok sat\u0131rl\u0131 veya tek sat\u0131rl\u0131 olarak bi\xE7imlendirilmesine izin verir ve `tags` ve `aliases` baz\u0131 Obsidian \xF6zg\xFC \xF6zelliklerine sahip YAML formatlar\u0131nda bulunabilir. **Not: Tek giri\u015Fli bir diziden birden fazla giri\u015Fi olan tek sat\u0131rl\u0131 bir diziye ge\xE7mek ayn\u0131d\u0131r, tek fark \xE7ok sat\u0131rl\u0131 bir dizi olmas\u0131d\u0131r.**","alias-key":{name:"YAML takma adlar\u0131 b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML takma adlar\u0131 b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar. Bu se\xE7ene\u011Fi `YAML Title Alias` kural\u0131yla birlikte kullanmaman\u0131z \xF6nerilir \xE7\xFCnk\xFC birlikte d\xFCzg\xFCn \xE7al\u0131\u015Fmayabilir veya farkl\u0131 bi\xE7imlendirme stilleri se\xE7ilmi\u015F olabilir, bu beklenmeyen sonu\xE7lara yol a\xE7abilir."},"tag-key":{name:"YAML etiketleri b\xF6l\xFCm\xFCn\xFC bi\xE7imlendir",description:"YAML etiketleri b\xF6l\xFCm\xFC i\xE7in bi\xE7imlendirmeyi a\xE7ar."},"default-array-style":{name:"Varsay\u0131lan YAML dizi b\xF6l\xFCm\xFC stili",description:"`tags`, `aliases` veya `Force key values to be single-line arrays` ve `Force key values to be multi-line arrays` olmayan di\u011Fer YAML dizilerinin stili"},"default-array-keys":{name:"YAML dizi b\xF6l\xFCmlerini bi\xE7imlendir",description:"Normal YAML dizileri i\xE7in bi\xE7imlendirmeyi a\xE7ar"},"force-single-line-array-style":{name:"Anahtar de\u011Ferlerini tek sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini tek sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"},"force-multi-line-array-style":{name:"Anahtar de\u011Ferlerini \xE7ok sat\u0131rl\u0131 dizilere zorla",description:"Yeni sat\u0131r ile ayr\u0131lan anahtarlar i\xE7in YAML dizisini \xE7ok sat\u0131rl\u0131 formatta olmaya zorlar (bu se\xE7ene\u011Fi devre d\u0131\u015F\u0131 b\u0131rakmak i\xE7in bo\u015F b\u0131rak\u0131n)"}},"header-increment":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131",description:"Ba\u015Fl\u0131k seviyeleri bir seferde sadece bir seviye artmal\u0131d\u0131r","start-at-h2":{name:"Ba\u015Fl\u0131k Art\u0131r\u0131m\u0131n\u0131 Ba\u015Fl\u0131k Seviyesi 2\u2019de Ba\u015Flat",description:"Bir dosyadaki minimum ba\u015Fl\u0131k seviyesini ba\u015Fl\u0131k seviyesi 2 yapar ve buna g\xF6re t\xFCm ba\u015Fl\u0131klar\u0131 kayd\u0131r\u0131r, b\xF6ylece ba\u015Fl\u0131k art\u0131\u015F\u0131 seviye 2 ba\u015Fl\u0131\u011F\u0131 ile ba\u015Flar."}},"heading-blank-lines":{name:"Ba\u015Fl\u0131k Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm ba\u015Fl\u0131klar\u0131n hem \xF6ncesinde hem de sonras\u0131nda birer bo\u015F sat\u0131r olmal\u0131d\u0131r (ba\u015Fl\u0131k belgenin ba\u015F\u0131nda veya sonunda oldu\u011Funda bu durum ge\xE7erli de\u011Fildir).",bottom:{name:"Alt",description:"Ba\u015Fl\u0131klar\u0131n sonras\u0131na bo\u015F sat\u0131r ekler"},"empty-line-after-yaml":{name:"YAML ve Ba\u015Fl\u0131k Aras\u0131nda Bo\u015F Sat\u0131r",description:"YAML \xF6n madde ve ba\u015Fl\u0131k aras\u0131ndaki bo\u015F sat\u0131r\u0131 korur"}},"headings-start-line":{name:"Ba\u015Fl\u0131klar Sat\u0131r\u0131 Ba\u015Flat\u0131r",description:"Bir sat\u0131r\u0131 ba\u015Flatmayan ba\u015Fl\u0131klar\u0131n \xF6ncesi bo\u015Fluklar\u0131 kald\u0131r\u0131l\u0131r ki ba\u015Fl\u0131klar ba\u015Fl\u0131k olarak tan\u0131nabilsin."},"insert-yaml-attributes":{name:"YAML \xD6zniteliklerini Ekle",description:"Verilen YAML \xF6zniteliklerini YAML \xF6n maddesine ekler. Her \xF6zniteli\u011Fi tek bir sat\u0131ra koyun.","text-to-insert":{name:"Eklenecek metin",description:"YAML \xF6n maddesine eklenen metin"}},"line-break-at-document-end":{name:"Belge Sonunda Sat\u0131r Sonu",description:"Bir belgenin sonunda tam olarak bir sat\u0131r sonu oldu\u011Funu garanti eder."},"move-footnotes-to-the-bottom":{name:"Dipnotlar\u0131 Altbilgiye Ta\u015F\u0131",description:"T\xFCm dipnotlar\u0131 belgenin alt\u0131na ta\u015F\u0131r."},"move-math-block-indicators-to-their-own-line":{name:"Matematik Blok G\xF6stergelerini Kendi Sat\u0131rlar\u0131na Ta\u015F\u0131",description:'Tek sat\u0131rl\u0131 matematik i\xE7in ka\xE7 dolar i\u015Faretinin bir matematik blo\u011Funu g\xF6sterdi\u011Fini belirlemek i\xE7in "Bir Matematik Blo\u011Fu G\xF6stermek \u0130\xE7in Dolar \u0130\u015Fareti Say\u0131s\u0131"n\u0131 kullanarak t\xFCm ba\u015Flang\u0131\xE7 ve biti\u015F matematik blo\u011Fu g\xF6stergelerini kendi sat\u0131rlar\u0131na ta\u015F\u0131y\u0131n.'},"move-tags-to-yaml":{name:"Etiketleri YAML'a Ta\u015F\u0131",description:"T\xFCm etiketleri belgenin YAML \xF6n maddesine ta\u015F\u0131r.","how-to-handle-existing-tags":{name:"Metin i\xE7indeki etiket i\u015Flemi",description:"\xD6n maddeye ta\u015F\u0131nd\u0131ktan sonra dosyan\u0131n i\xE7eri\u011Finde bulunan ve yoksay\u0131lmayan etiketlerle ne yap\u0131laca\u011F\u0131"},"tags-to-ignore":{name:"Yoksay\u0131lacak etiketler",description:"\u0130\xE7erik g\xF6vdesindeki hashtag'lerden kald\u0131rma etkinle\u015Ftirilmi\u015Fse, etiketler dizisine ta\u015F\u0131nmayacak veya i\xE7erik g\xF6vdesinden kald\u0131r\u0131lmayacak etiketler. Her etiket yeni bir sat\u0131rda ve `#` olmadan olmal\u0131d\u0131r. **Etiket ad\u0131nda hashtag i\xE7ermedi\u011Finizden emin olun.**"}},"no-bare-urls":{name:"Yal\u0131n URL'ler Olmas\u0131n",description:"Yal\u0131n URL'leri a\xE7\u0131l\u0131 ayra\xE7lar ile ku\u015Fat\u0131r, tek veya \xE7ift t\u0131rnak, k\xF6\u015Feli parantez veya e\u011Fik kesme i\u015Fareti i\xE7inde de\u011Filse."},"ordered-list-style":{name:"S\u0131ral\u0131 Liste Stili",description:"S\u0131ral\u0131 listelerin belirtilen stili izlemesini sa\u011Flar. **Not: 2 bo\u015Fluk veya 1 sekme bir girinti seviyesi olarak kabul edilir.**","number-style":{name:"Numara Stili",description:"S\u0131ral\u0131 liste g\xF6stergelerinde kullan\u0131lan numara stili"},"list-end-style":{name:"S\u0131ral\u0131 Liste G\xF6sterge Sonu Stili",description:"Bir s\u0131ral\u0131 liste g\xF6stergesinin biti\u015F karakteri"}},"paragraph-blank-lines":{name:"Paragraf Bo\u015F Sat\u0131rlar\u0131",description:"T\xFCm paragraflar\u0131n hem \xF6nce hem sonra tam olarak bir bo\u015F sat\u0131r\u0131 olmal\u0131d\u0131r."},"prevent-double-checklist-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Kontrol Listesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir kontrol listesi g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 kontrol listesi g\xF6stergesini kald\u0131r\u0131r"},"prevent-double-list-item-indicator-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada \xC7ift Liste \xD6\u011Fesi G\xF6stergesini \xD6nle",description:"Kurs\xF6r\xFCn dosyadaki sat\u0131rda bir liste g\xF6stergesi varsa, yap\u0131\u015Ft\u0131r\u0131lacak metinden ba\u015Flang\u0131\xE7 listesi g\xF6stergesini kald\u0131r\u0131r"},"proper-ellipsis-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Uygun \xDC\xE7 Nokta",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinde aralar\u0131nda bo\u015Fluk olsa bile ard\u0131\u015F\u0131k \xFC\xE7 noktay\u0131, \xFC\xE7 nokta karakteriyle ile de\u011Fi\u015Ftirir"},"proper-ellipsis":{name:"Uygun \xDC\xE7 Nokta",description:"Ard\u0131\u015F\u0131k \xFC\xE7 tane noktay\u0131, \xFC\xE7 nokta karakteriyle de\u011Fi\u015Ftirir."},"quote-style":{name:"\xFC\xE7 nokta karakteriyle",description:"G\xF6vde i\xE7eri\u011Findeki al\u0131nt\u0131lar\u0131 belirtilen tek ve \xE7ift al\u0131nt\u0131 stillerine g\xFCnceller.","single-quote-enabled":{name:"`Tek Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen tek al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"single-quote-style":{name:"Tek Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak tek al\u0131nt\u0131 stilidir."},"double-quote-enabled":{name:"`\xC7ift Al\u0131nt\u0131 Stili` Kullan\u0131m\u0131",description:"Se\xE7ilen \xE7ift al\u0131nt\u0131 stilinin kullan\u0131laca\u011F\u0131n\u0131 belirtir."},"double-quote-style":{name:"\xC7ift Al\u0131nt\u0131 Stili",description:"Kullan\u0131lacak \xE7ift al\u0131nt\u0131 stilidir."}},"re-index-footnotes":{name:"Dipnotlar\u0131 Yeniden \u0130ndeksle",description:"Dipnot anahtarlar\u0131n\u0131 ve dipnotlar\u0131, olu\u015Fum s\u0131ras\u0131na g\xF6re yeniden indeksler. **Not: Bir anahtar i\xE7in birden fazla dipnot varsa, bu kural \xE7al\u0131\u015Fmaz.**"},"remove-consecutive-list-markers":{name:"Ard\u0131\u015F\u0131k Liste \u0130\u015Faretlerini Kald\u0131r",description:"Ard\u0131\u015F\u0131k liste i\u015Faretlerini kald\u0131r\u0131r. Liste \xF6\u011Felerini kopyala-yap\u0131\u015Ft\u0131r yaparken kullan\u0131\u015Fl\u0131d\u0131r."},"remove-empty-lines-between-list-markers-and-checklists":{name:"Liste \u0130\u015Faretleri ve Kontrol Listeleri Aras\u0131ndaki Bo\u015F Sat\u0131rlar\u0131 Kald\u0131r",description:"Liste i\u015Faretleri ve kontrol listeleri aras\u0131nda bo\u015F sat\u0131r olmamal\u0131d\u0131r."},"remove-empty-list-markers":{name:"Bo\u015F Liste \u0130\u015Faret\xE7ilerini Kald\u0131r",description:"Bo\u015F liste i\u015Faret\xE7ilerini, yani i\xE7eriksiz liste \xF6\u011Felerini kald\u0131r\u0131r."},"remove-hyphenated-line-breaks":{name:"Tireli Sat\u0131r Sonlar\u0131n\u0131 Kald\u0131r",description:"Removes hyphenated line breaks. Useful when pasting text from textbooks."},"remove-hyphens-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Tireleri Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metindeki tireleri kald\u0131r\u0131r"},"remove-leading-or-trailing-whitespace-on-paste":{name:"Yap\u0131\u015Ft\u0131rda \xD6ndeki veya Sondaki Bo\u015Fluklar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metnin ba\u015F\u0131ndaki sekme olmayan bo\u015Fluklar\u0131 ve sonundaki t\xFCm bo\u015Fluklar\u0131 kald\u0131r\u0131r"},"remove-leftover-footnotes-from-quote-on-paste":{name:"Yap\u0131\u015Ft\u0131rmada Al\u0131nt\u0131dan Kalan Dipnotlar\u0131 Kald\u0131r",description:"Yap\u0131\u015Ft\u0131r\u0131lacak metinden herhangi bir kal\u0131nt\u0131 dipnot referanslar\u0131n\u0131 kald\u0131r\u0131r"},"remove-link-spacing":{name:"Link Aral\u0131\u011F\u0131n\u0131 Kald\u0131r",description:"Link metninin etraf\u0131ndaki bo\u015Fluklar\u0131 kald\u0131r\u0131r."},"remove-multiple-blank-lines-on-paste":{name:"Yap\u0131\u015Ft\u0131r\u0131rken Birden Fazla Bo\u015F Sat\u0131r\u0131 Kald\u0131r",description:"Metnin yap\u0131\u015Ft\u0131r\u0131lmas\u0131 i\xE7in birden \xE7ok bo\u015F sat\u0131r\u0131 tek bir bo\u015F sat\u0131ra s\u0131k\u0131\u015Ft\u0131r\u0131r"},"remove-multiple-spaces":{name:"Birden Fazla Bo\u015Flu\u011Fu Kald\u0131r",description:"\u0130ki veya daha fazla ard\u0131\u015F\u0131k bo\u015Flu\u011Fu kald\u0131r\u0131r. Sat\u0131r\u0131n ba\u015F\u0131ndaki ve sonundaki bo\u015Fluklar\u0131 g\xF6rmezden gelir. "},"remove-space-around-characters":{name:"Karakterler Etraf\u0131ndaki Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirli karakterlerin bo\u015Fluklarla (tek bo\u015Fluk veya sekme) \xE7evrelenmemesini sa\u011Flar. **Not: Bu, baz\u0131 durumlarda indirim bi\xE7imiyle ilgili sorunlara neden olabilir.**","include-fullwidth-forms":{name:"Tam Geni\u015Flikte Formlar\u0131 Dahil Et",description:'Tam Geni\u015Flikte Formlar Unicode blo\u011Funu dahil eder'},"include-cjk-symbols-and-punctuation":{name:"CJK Sembol ve Noktalama \u0130\u015Faretlerini Dahil Et",description:'CJK Sembol ve Noktalama Unicode blo\u011Funu dahil eder'},"include-dashes":{name:"Tireleri Dahil Et",description:"En tire (\u2013) ve em tireyi (\u2014) dahil eder"},"other-symbols":{name:"Di\u011Fer Semboller",description:"Dahil edilecek di\u011Fer semboller"}},"remove-space-before-or-after-characters":{name:"Karakterlerden \xD6nce veya Sonra Bo\u015Flu\u011Fu Kald\u0131r",description:"Belirtilen karakterlerden \xF6nceki ve sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: bu durum baz\u0131 durumlarda markdown format\u0131nda sorunlara neden olabilir.**","characters-to-remove-space-before":{name:"\xD6nceki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden \xF6nceki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"},"characters-to-remove-space-after":{name:"Sonraki Bo\u015Flu\u011Fu Kald\u0131r\u0131lacak Karakterler",description:"Belirtilen karakterlerden sonraki bo\u015Flu\u011Fu kald\u0131r\u0131r. **Not: karakter listesinde `{` veya `}` kullanmak, sahne arkas\u0131nda yoksayma s\xF6zdizimi kullan\u0131ld\u0131\u011F\u0131 i\xE7in dosyalar\u0131 beklenmedik \u015Fekilde etkiler.**"}},"remove-trailing-punctuation-in-heading":{name:"Ba\u015Fl\u0131klardaki Son Noktalama \u0130\u015Faretlerini Kald\u0131r",description:"Belirtilen noktalama i\u015Faretlerini ba\u015Fl\u0131klar\u0131n sonundan kald\u0131r\u0131r ve [HTML varl\u0131k referanslar\u0131n\u0131n](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references) sonundaki noktal\u0131 virg\xFCl\xFC yoksayar.","punctuation-to-remove":{name:"Sondaki Noktalama",description:"Dosyadaki ba\u015Fl\u0131klardan kald\u0131r\u0131lacak noktalama i\u015Faretleri."}},"remove-yaml-keys":{name:"YAML Anahtarlar\u0131n\u0131 Kald\u0131r",description:"Belirtilen YAML anahtarlar\u0131n\u0131 kald\u0131r\u0131r","yaml-keys-to-remove":{name:"Kald\u0131r\u0131lacak YAML Anahtarlar\u0131",description:"YAML \xF6n maddesinden iki nokta \xFCst \xFCste ile veya olmadan kald\u0131r\u0131lacak YAML anahtarlar\u0131"}},"space-after-list-markers":{name:"Liste \u0130\u015Faretlerinden Sonra Bo\u015Fluk",description:"Liste i\u015Faretleri ve onay kutular\u0131ndan sonra tek bir bo\u015Fluk olmal\u0131d\u0131r"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya Say\u0131lar Aras\u0131nda Bo\u015Fluk",description:"\xC7ince, Japonca veya Korece ve \u0130ngilizce veya say\u0131lar aras\u0131nda tek bir bo\u015Fluk olmas\u0131 gerekti\u011Fini sa\u011Flar. Bu [kurallar\u0131](https://github.com/sparanoid/chinese-copywriting-guidelines) takip eder"},"strong-style":{name:"Kal\u0131n Stil",description:"Kal\u0131n stilin tutarl\u0131 oldu\u011Funu garanti eder.",style:{name:"Stil",description:"Kal\u0131n/yo\u011Fun i\xE7eri\u011Fi belirtmek i\xE7in kullan\u0131lan stil"}},"trailing-spaces":{name:"Sondaki bo\u015Fluklar",description:"Her sat\u0131r\u0131n sonundaki fazladan bo\u015Fluklar\u0131 kald\u0131r\u0131r.","twp-space-line-break":{name:"\u0130ki Bo\u015Fluklu Sat\u0131r Sonu",description:'Bir sat\u0131r sonunu takiben iki bo\u015Flu\u011Fu g\xF6z ard\u0131 et ("\u0130ki Bo\u015Fluk Kural\u0131").'}},"two-spaces-between-lines-with-content":{name:"\u0130\xE7eri\u011Fi Olan Sat\u0131rlar Aras\u0131nda \u0130ki Bo\u015Fluk",description:"\u0130\xE7eri\u011Fi devam eden sat\u0131rlar\u0131n sonuna paragraflar, blok al\u0131nt\u0131lar\u0131 ve liste \xF6\u011Feleri i\xE7in iki bo\u015Fluk eklenmesini sa\u011Flar"},"unordered-list-style":{name:"S\u0131ras\u0131z Liste Stili",description:"S\u0131ras\u0131z listelerin belirtilen stili takip etti\u011Finden emin olur.","list-style":{name:"Liste \xF6\u011Fesi stili",description:"S\u0131ras\u0131z listelerde kullan\u0131lacak liste \xF6\u011Fesi stili"}},"yaml-key-sort":{name:"YAML Anahtar S\u0131ralamas\u0131",description:"YAML anahtarlar\u0131n\u0131 belirtilen s\u0131ra ve \xF6nceli\u011Fe g\xF6re s\u0131ralar. **Not: bo\u015F sat\u0131rlar\u0131 da kald\u0131rabilir.**","yaml-key-priority-sort-order":{name:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni",description:"Her sat\u0131rda bir tane olacak \u015Fekilde anahtarlar\u0131n hangi s\u0131rayla s\u0131ralanaca\u011F\u0131"},"priority-keys-at-start-of-yaml":{name:"\xD6ncelikli Anahtarlar YAML'\u0131n Ba\u015F\u0131nda",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni, YAML \xF6n maddesinin ba\u015F\u0131nda yer al\u0131r"},"yaml-sort-order-for-other-keys":{name:"Di\u011Fer Anahtarlar \u0130\xE7in YAML S\u0131ralama D\xFCzeni",description:"YAML Anahtar \xD6ncelik S\u0131ralama D\xFCzeni metin alan\u0131nda bulunmayan anahtarlar\u0131 nas\u0131l s\u0131ralayaca\u011F\u0131"}},"yaml-timestamp":{name:"YAML Zaman Damgas\u0131",description:"Dosyan\u0131n son d\xFCzenlendi\u011Fi tarihi YAML \xF6n maddesinde takip eder. Tarihler dosya metadatas\u0131ndan al\u0131n\u0131r.","date-created":{name:"Olu\u015Fturma Tarihi",description:"Dosyan\u0131n olu\u015Fturma tarihini ekler"},"date-created-key":{name:"Olu\u015Fturma Tarihi Anahtar\u0131",description:"Olu\u015Fturma tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},"force-retention-of-create-value":{name:"Olu\u015Fturma Tarihi Anahtar De\u011Ferinin Korunmas\u0131n\u0131 Zorla",description:"Dosya metadatas\u0131 yerine YAML \xF6n maddesindeki tarihi yeniden kullan\u0131r, bu da dosya metadatas\u0131ndaki de\u011Fi\u015Fikliklerin de\u011Ferin farkl\u0131 bir de\u011Fere de\u011Fi\u015Fmesine neden olmas\u0131n\u0131 \xF6nler."},"date-modified":{name:"De\u011Fi\u015Ftirme Tarihi",description:"Dosyan\u0131n son de\u011Fi\u015Ftirildi\u011Fi tarihi ekler"},"date-modified-key":{name:"De\u011Fi\u015Ftirme Tarihi Anahtar\u0131",description:"De\u011Fi\u015Ftirme tarihi i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},format:{name:"Format",description:"Kullan\u0131lacak Zaman format\u0131 (bak\u0131n\u0131z [Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/))"}},"yaml-title-alias":{name:"YAML Ba\u015Fl\u0131k Takma Ad\u0131",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesinin takma adlar\u0131 b\xF6l\xFCm\xFCne ekler. Ba\u015Fl\u0131\u011F\u0131 ilk H1 veya dosya ad\u0131ndan al\u0131r.","preserve-existing-alias-section-style":{name:"Mevcut takma adlar b\xF6l\xFCm stilini koru",description:"Ayarlan\u0131rsa, `YAML takma adlar b\xF6l\xFCm\xFC stili` ayar\u0131 yaln\u0131zca yeni olu\u015Fturulan b\xF6l\xFCmlere uygulan\u0131r"},"keep-alias-that-matches-the-filename":{name:"Dosya ad\u0131na uyan takma ad\u0131 koru",description:"Bu t\xFCr takma adlar genellikle gereksizdir"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"`linter-yaml-title-alias` YAML anahtar\u0131n\u0131 kullanarak eski dosya ad\u0131 ve ba\u015Fl\u0131k de\u011Fi\u015Fikliklerini takip et",description:"Ayarlan\u0131rsa, ilk H1 ba\u015Fl\u0131\u011F\u0131 de\u011Fi\u015Fti\u011Finde veya ilk H1 yoksa dosya ad\u0131 de\u011Fi\u015Fti\u011Finde, bu anahtarda saklanan eski takma ad, takma adlar dizisine yeni bir giri\u015F eklemek yerine yeni de\u011Ferle de\u011Fi\u015Ftirilir"}},"yaml-title":{name:"YAML Ba\u015Fl\u0131k",description:"Dosyan\u0131n ba\u015Fl\u0131\u011F\u0131n\u0131 YAML \xF6n maddesine ekler. Ba\u015Fl\u0131k se\xE7ilen moda g\xF6re al\u0131n\u0131r.","title-key":{name:"Ba\u015Fl\u0131k Anahtar\u0131",description:"Ba\u015Fl\u0131k i\xE7in hangi YAML anahtar\u0131n\u0131 kullanaca\u011F\u0131"},mode:{name:"Mod",description:"Ba\u015Fl\u0131\u011F\u0131 almak i\xE7in kullan\u0131lacak y\xF6ntem"}}},enums:{"Title Case":"Ba\u015F Harfleri B\xFCy\xFCk","ALL CAPS":"T\xDCM\xDC B\xDCY\xDCK HARF","First letter":"\u0130lk Harf",".":".",")":")",ERROR:"hata",TRACE:"i\u015Faret",DEBUG:"hata ay\u0131klama",INFO:"bilgi",WARN:"uyar\u0131",SILENT:"sessiz",ascending:"artan",lazy:"tembel",Nothing:"Hi\xE7biri","Remove hashtag":"Hashtagi Kald\u0131r","Remove whole tag":"T\xFCm Etiketi Kald\u0131r",asterisk:"y\u0131ld\u0131z",underscore:"alt \xE7izgi",consistent:"tutarl\u0131","-":"-","*":"*","+":"+",space:"bo\u015Fluk","no space":"bo\u015Fluk yok",None:"Yok","Ascending Alphabetical":"Artan Alfabetik","Descending Alphabetical":"Azalan Alfabetik","multi-line":"\xE7oklu-sat\u0131r","single-line":"tek-sat\u0131r","single string to single-line":"tek dizeden tek sat\u0131ra","single string to multi-line":"tek dizeden \xE7ok sat\u0131ra","single string comma delimited":"virg\xFClle ayr\u0131lm\u0131\u015F tek dize","single string space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek dize","single-line space delimited":"bo\u015Flukla ayr\u0131lm\u0131\u015F tek sat\u0131r","first-h1":"\u0130lk H1","first-h1-or-filename-if-h1-missing":"\u0130lk H1 veya H1 Eksikse Dosya Ad\u0131",filename:"Dosya Ad\u0131","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D","\\":"\\","
":"
"," ":" ","
":"
"}};var ru={};var au={commands:{"lint-file":{name:"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u51FA\u9519"},"lint-file-unless-ignored":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF08\u9664\u4E86\u88AB\u5FFD\u7565\u7684\u6587\u4EF6\uFF09"},"lint-all-files":{name:"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","error-message":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","errors-message-singular":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","errors-message-plural":"\u5DF2\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {NUM} \u4E2A\u9519\u8BEF","start-message":"\u8FD9\u5C06\u6539\u52A8\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6..."},"lint-all-files-in-folder":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6","start-message":"\u8FD9\u5C06\u6539\u52A8\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6\uFF0C\u5305\u62EC\u5B50\u6587\u4EF6\u5939\u4E2D\u7684\u6587\u4EF6\uFF0C\u53EF\u80FD\u4F1A\u5F15\u5165\u9519\u8BEF","submit-button-text":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6","submit-button-notice-text":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709\u6587\u4EF6...","error-message":"\u683C\u5F0F\u5316\u6587\u4EF6\u5939\u4E2D\u7684\u6240\u6709\u6587\u4EF6\u65F6\u51FA\u9519","success-message":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6","message-singular":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684\u6240\u6709 {NUM} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 1 \u4E2A\u9519\u8BEF","message-plural":"\u5DF2\u683C\u5F0F\u5316\u6587\u4EF6\u5939 {FOLDER_NAME} \u4E2D\u7684 {FILE_COUNT} \u4E2A\u6587\u4EF6\uFF0C\u5176\u4E2D\u6709 {ERROR_COUNT} \u4E2A\u9519\u8BEF."},"paste-as-plain-text":{name:"\u7C98\u8D34\u4E3A\u7EAF\u6587\u672C\u4E14\u4E0D\u63D0\u9192"},"lint-file-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6"},"lint-folder-pop-up-menu-text":{name:"\u683C\u5F0F\u5316\u6587\u4EF6\u5939"}},logs:{"plugin-load":"\u6B63\u5728\u52A0\u8F7D\u63D2\u4EF6","plugin-unload":"\u6B63\u5728\u5378\u8F7D\u63D2\u4EF6","folder-lint":"\u6B63\u5728\u683C\u5F0F\u5316\u6587\u4EF6\u5939","linter-run":"\u6B63\u5728\u8FD0\u884C Linter","paste-link-warning":"\u4E2D\u6B62\u7C98\u8D34\u683C\u5F0F\u5316 \uFF0C\u56E0\u4E3A\u526A\u8D34\u677F\u5185\u5BB9\u662F\u4E00\u4E2A\u94FE\u63A5\uFF0C\u8FD9\u6837\u505A\u5C06\u907F\u514D\u4E0E\u5176\u4ED6\u4FEE\u6539\u7C98\u8D34\u884C\u4E3A\u7684\u63D2\u4EF6\u53D1\u751F\u51B2\u7A81","see-console":"\u8BF7\u67E5\u770B\u63A7\u5236\u53F0\u4EE5\u83B7\u53D6\u66F4\u591A\u4FE1\u606F","unknown-error":"\u683C\u5F0F\u5316\u8FC7\u7A0B\u53D1\u751F\u672A\u77E5\u9519\u8BEF","moment-locale-not-found":"\u5C1D\u8BD5\u5C06 Moment.js \u7684\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u5207\u6362\u5230 {MOMENT_LOCALE}, \u5B9E\u9645\u5207\u6362\u5230 {CURRENT_LOCALE}","file-change-lint-message-start":"\u683C\u5F0F\u5316\u5DF2\u5B8C\u6210","pre-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u9AD8\u7684\u89C4\u5219","post-rules":"\u6BD4\u6B63\u5E38\u89C4\u5219\u4F18\u5148\u7EA7\u66F4\u4F4E\u7684\u89C4\u5219","rule-running":"\u6B63\u5728\u8FD0\u884C\u89C4\u5219","custom-regex":"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-regex":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u89C4\u5219","running-custom-lint-command":"\u6B63\u5728\u8FD0\u884C\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","custom-lint-duplicate-warning":'\u4F60\u4E0D\u80FD\u8FD0\u884C\u540C\u4E00\u4E2A\u81EA\u5B9A\u4E49\u89C4\u5219 ("{COMMAND_NAME}") \u4E24\u6B21',"custom-lint-error-message":"\u81EA\u5B9A\u4E49\u683C\u5F0F\u5316\u547D\u4EE4","disabled-text":"\u5DF2\u7981\u7528","run-rule-text":"\u8FD0\u884C\u4E2D","timing-key-not-found":"\u8BA1\u65F6\u952E '{TIMING_KEY}' \u5728\u8BA1\u65F6\u4FE1\u606F\u5217\u8868\u4E2D\u4E0D\u5B58\u5728\uFF0C\u5DF2\u5FFD\u7565","milliseconds-abbreviation":"\u6BEB\u79D2","invalid-date-format-error":"\u65E0\u6CD5\u89E3\u6790\u6216\u786E\u5B9A'{FILE_NAME}'\u4E2D\u7684\u521B\u5EFA\u65E5\u671F'{DATE}'\u7684\u683C\u5F0F\uFF0C\u521B\u5EFA\u65E5\u671F\u672A\u8FDB\u884C\u4FEE\u6539","invalid-delimiter-error-message":"\u5206\u9694\u7B26\u53EA\u80FD\u4E3A\u5355\u4E2A\u5B57\u7B26","missing-footnote-error-message":"\u811A\u6CE8 '{FOOTNOTE}' \u6CA1\u6709\u5BF9\u5E94\u7684\u5F15\u7528\uFF0C\u65E0\u6CD5\u5904\u7406\u3002\u8BF7\u786E\u4FDD\u6240\u6709\u811A\u6CE8\u90FD\u6709\u76F8\u5E94\u7684\u5F15\u7528\u3002","too-many-footnotes-error-message":"\u811A\u6CE8\u7F16\u53F7 '{FOOTNOTE_KEY}' \u6709\u8D85\u8FC71\u4E2A\u811A\u6CE8\u5728\u4F7F\u7528\uFF0C\u8BF7\u4FEE\u6539\u811A\u6CE8\u4F7F\u5F97\u4E00\u4E2A\u811A\u6CE8\u7F16\u53F7\u5BF9\u5E94\u4E00\u4E2A\u811A\u6CE8","wrapper-yaml-error":"yaml\u51FA\u73B0\u9519\u8BEF: {ERROR_MESSAGE}","wrapper-unknown-error":"\u672A\u77E5\u9519\u8BEF: {ERROR_MESSAGE}"},"notice-text":{"empty-clipboard":"\u526A\u8D34\u677F\u4E3A\u7A7A","characters-added":"\u4E2A\u5B57\u7B26\u88AB\u6DFB\u52A0","characters-removed":"\u4E2A\u5B57\u7B26\u88AB\u79FB\u9664"},"all-rules-option":"\u5168\u90E8","linter-title":"Linter","empty-search-results-text":"\u6CA1\u6709\u5339\u914D\u7684\u8BBE\u7F6E\u9879","warning-text":"\u8B66\u544A","file-backup-text":"\u8BF7\u786E\u4FDD\u4F60\u5DF2\u5907\u4EFD\u6587\u4EF6",tabs:{names:{general:"\u57FA\u7840",custom:"\u81EA\u5B9A\u4E49",yaml:"YAML",heading:"\u6807\u9898",content:"\u5185\u5BB9",footnote:"\u811A\u6CE8",spacing:"\u7A7A\u884C",paste:"\u7C98\u8D34",debug:"Debug"},"default-search-bar-text":"\u641C\u7D22\u8BBE\u7F6E\u9879",general:{"lint-on-save":{name:"\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6",description:"\u624B\u52A8\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u6587\u4EF6\uFF08\u5F53\u6309 `Ctrl + S` \u65F6\u6216\u5728 vim \u6A21\u5F0F\u4E2D\u4F7F\u7528 `:w` \u65F6\uFF09"},"display-message":{name:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u6D88\u606F",description:"\u683C\u5F0F\u5316\u540E\u663E\u793A\u4FEE\u6539\u4E86\u591A\u5C11\u5B57\u7B26"},"lint-on-file-change":{name:"\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53\u6587\u4EF6\u5173\u95ED\u6216\u662F\u5207\u6362\u5230\u65B0\u6587\u4EF6\u65F6\uFF0C\u683C\u5F0F\u5316\u4E4B\u524D\u7684\u6587\u4EF6"},"display-lint-on-file-change-message":{name:"\u63D0\u9192\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316",description:"\u5F53`\u6587\u4EF6\u4FEE\u6539\u65F6\u683C\u5F0F\u5316`\u89E6\u53D1\u65F6\uFF0C\u5F39\u51FA\u4E00\u6761\u63D0\u793A\u4FE1\u606F"},"folders-to-ignore":{name:"\u5FFD\u7565\u6587\u4EF6\u5939",description:"\u9700\u8981\u5FFD\u7565\u7684\u6587\u4EF6\u5939\uFF08\u683C\u5F0F\u5316\u6240\u6709\u6587\u4EF6\u6216\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u65F6\u751F\u6548\uFF09\uFF0C\u6BCF\u884C\u8F93\u5165\u4E00\u4E2A\u6587\u4EF6\u5939\u8DEF\u5F84"},"override-locale":{name:"\u8986\u76D6\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00",description:"\u4F7F\u7528\u4E0D\u540C\u4E8E\u9ED8\u8BA4\u5730\u533A\u8BED\u8A00\u65F6\u9700\u8981\u8BBE\u7F6E\u6B64\u9879"},"same-as-system-locale":"\u9ED8\u8BA4 ({SYS_LOCALE}) ","yaml-aliases-section-style":{name:"YAML aliases \u6837\u5F0F",description:"YAML aliases \u6837\u5F0F"},"yaml-tags-section-style":{name:"YAML tags \u6837\u5F0F",description:"YAML tags \u6837\u5F0F"},"default-escape-character":{name:"\u9ED8\u8BA4\u8F6C\u4E49\u5B57\u7B26",description:"\u5F53\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7\u4E0D\u5B58\u5728\u65F6\u7528\u4E8E\u8F6C\u4E49 YAML \u503C\u7684\u9ED8\u8BA4\u5B57\u7B26"},"remove-unnecessary-escape-chars-in-multi-line-arrays":{name:"\u5F53\u4F7F\u7528 YAML \u591A\u884C\u6570\u7EC4\u65F6\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26",description:"YAML \u591A\u884C\u6570\u7EC4\u7684\u8F6C\u4E49\u5B57\u7B26\u548C YAML \u5355\u884C\u6570\u7EC4\u4E0D\u540C\uFF0C\u56E0\u6B64\u5728\u4F7F\u7528\u591A\u884C\u6570\u7EC4\u65F6\uFF0C\u5220\u9664\u4E0D\u5FC5\u8981\u7684\u8F6C\u4E49\u5B57\u7B26"},"number-of-dollar-signs-to-indicate-math-block":{name:"\u6307\u793A Latex \u5757\u7684 $ \u7B26\u53F7\u6570\u91CF",description:"\u5C06 Latex \u5185\u5BB9\u89C6\u4E3A Latex \u5757\u800C\u4E0D\u662F\u884C\u5185 Latex \u7684 $ \u7B26\u53F7\u7684\u6570\u91CF"}},debug:{"log-level":{name:"\u65E5\u5FD7\u7EA7\u522B",description:"\u5141\u8BB8\u6253\u5370\u7684\u65E5\u5FD7\u7C7B\u578B\uFF0C\u9ED8\u8BA4\u662F ERROR"},"linter-config":{name:"\u683C\u5F0F\u5316\u914D\u7F6E",description:"\u5728\u8BBE\u7F6E\u9875\u9762\u52A0\u8F7D\u65F6\uFF0CLinter \u4E2D data.json \u7684\u5185\u5BB9"},"log-collection":{name:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7",description:"\u5728\u4FDD\u5B58\u65F6\u683C\u5F0F\u5316\u548C\u683C\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u6536\u96C6\u65E5\u5FD7\u3002\u8FD9\u4E9B\u65E5\u5FD7\u6709\u52A9\u4E8E\u8C03\u8BD5\u548C\u521B\u5EFA\u9519\u8BEF\u62A5\u544A"},"linter-logs":{name:"Linter \u65E5\u5FD7",description:"\u5982\u679C\u5F00\u542F\uFF0C\u5219\u663E\u793A\u6700\u540E\u4E00\u6B21\u683C\u5F0F\u5316\u65F6\u4FDD\u5B58\u6216\u8005\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6\u65F6\u751F\u6210\u7684\u65E5\u5FD7"}}},options:{"custom-command":{name:"\u81EA\u5B9A\u4E49\u547D\u4EE4",description:"\u81EA\u5B9A\u4E49\u547D\u4EE4\u662F\u5728 Linter \u5B8C\u6210\u683C\u5F0F\u5316\u540E\u8FD0\u884C\u7684 Obsidian \u547D\u4EE4\u3002\u8FD9\u610F\u5473\u7740 Obsidian \u547D\u4EE4\u4F1A\u5728 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u4E4B\u540E\u8FD0\u884C\uFF0C\u56E0\u6B64\u5B83\u4EEC\u53EF\u80FD\u4F1A\u5BFC\u81F4\u5728\u4E0B\u6B21\u8FD0\u884C Linter \u65F6\u89E6\u53D1 YAML \u65F6\u95F4\u6233\u4FEE\u6539\u3002\u4E00\u4E2A Obsidian \u547D\u4EE4\u53EA\u80FD\u9009\u62E9\u4E00\u6B21\u3002**_\u6CE8\u610F\uFF0C\u8FD9\u76EE\u524D\u4EC5\u9002\u7528\u4E8E\u683C\u5F0F\u5316\u5F53\u524D\u6587\u4EF6_**",warning:"\u9009\u62E9\u547D\u4EE4\u65F6\uFF0C\u8BF7\u786E\u4FDD\u4F7F\u7528\u9F20\u6807\u6216\u6309\u56DE\u8F66\u952E\u9009\u62E9\u8BE5\u9009\u9879\uFF0C\u5176\u4ED6\u9009\u62E9\u65B9\u6CD5\u53EF\u80FD\u4E0D\u8D77\u4F5C\u7528\u3002\u53EA\u6709 Obsidian \u547D\u4EE4\u6216\u7A7A\u5B57\u7B26\u4E32\u4F1A\u88AB\u4FDD\u5B58","add-input-button-text":"\u6DFB\u52A0\u65B0\u547D\u4EE4","command-search-placeholder-text":"Obsidian \u547D\u4EE4","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"},"custom-replace":{name:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362",description:"\u81EA\u5B9A\u4E49\u6B63\u5219\u8868\u8FBE\u5F0F\u66FF\u6362\u53EF\u5C06\u4EFB\u610F\u7684\u6B63\u5219\u5339\u914D\u5185\u5BB9\u66FF\u6362\u4E3A\u6307\u5B9A\u503C\u3002\u67E5\u627E\u503C\u548C\u66FF\u6362\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F",warning:"\u5982\u679C\u60A8\u4E0D\u77E5\u9053\u6B63\u5219\u8868\u8FBE\u5F0F\u662F\u4EC0\u4E48\uFF0C\u8BF7\u8C28\u614E\u4F7F\u7528\u3002\u53E6\u5916\uFF0C\u8BF7\u786E\u4FDD\u60A8\u4E0D\u8981\u5728 iOS \u79FB\u52A8\u8BBE\u5907\u4E0A\u4F7F\u7528\u540E\u884C\u65AD\u8A00\uFF0C\u7531\u4E8E\u8BE5\u5E73\u53F0\u4E0D\u652F\u6301\uFF0C\u4F1A\u5BFC\u81F4\u683C\u5F0F\u5316\u5931\u8D25","add-input-button-text":"\u6DFB\u52A0\u65B0\u7684\u6B63\u5219\u66FF\u6362\u89C4\u5219","regex-to-find-placeholder-text":"\u67E5\u627E\u6B63\u5219\u5F0F","flags-placeholder-text":"\u53C2\u6570","regex-to-replace-placeholder-text":"\u66FF\u6362\u6B63\u5219\u5F0F","label-placeholder-text":"\u7B80\u79F0","move-up-tooltip":"\u4E0A\u79FB","move-down-tooltip":"\u4E0B\u79FB","delete-tooltip":"\u5220\u9664"}},rules:{"auto-correct-common-misspellings":{name:"\u81EA\u52A8\u66F4\u6B63\u5E38\u89C1\u7684\u62FC\u5199\u9519\u8BEF",description:"\u901A\u8FC7\u5E38\u89C1\u62FC\u5199\u9519\u8BEF\u5B57\u5178\u81EA\u52A8\u5C06\u9519\u8BEF\u62FC\u5199\u66F4\u6B63\u4E3A\u6B63\u786E\u62FC\u5199\u3002\u6709\u5173\u81EA\u52A8\u66F4\u6B63\u5355\u8BCD\u7684\u5B8C\u6574\u5217\u8868\uFF0C\u8BF7\u53C2\u9605 [auto-correct map](https://github.com/platers/obsidian-linter/tree/master/src/utils/auto-correct-misspellings.ts)","ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4EE5\u9017\u53F7\u5206\u9694\u7684\u5C0F\u5199\u5355\u8BCD\u5217\u8868\uFF0C\u5728\u81EA\u52A8\u66F4\u6B63\u65F6\u4F1A\u5FFD\u7565"}},"add-blank-line-after-yaml":{name:"\u5728 YAML \u5757\u540E\u6DFB\u52A0\u7A7A\u884C",description:"\u5982\u679C YAML \u5757\u4E0D\u5904\u4E8E\u6587\u4EF6\u672B\u5C3E\u6216 YAML \u5757\u540E\u4E0D\u5B58\u5728\u81F3\u5C11\u4E00\u4E2A\u7A7A\u884C\u65F6\u6DFB\u52A0\u4E00\u4E2A\u7A7A\u884C"},"add-blockquote-indentation-on-paste":{name:"\u6DFB\u52A0\u5F15\u7528\u5757\u7F29\u8FDB",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u4F4D\u4E8E\u5F15\u7528\u884C\u6216\u6807\u6CE8\u884C\uFF0C\u5219\u5C06\u5F15\u7528\u6DFB\u52A0\u5230\u9664\u7B2C\u4E00\u884C\u4EE5\u5916\u7684\u6240\u6709\u884C"},"blockquote-style":{name:"\u5F15\u7528\u5757\u6837\u5F0F",description:"\u786E\u4FDD\u5F15\u7528\u5757\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u5F15\u7528\u5757\u6807\u5FD7\u5B57\u7B26\u7684\u6837\u5F0F"}},"capitalize-headings":{name:"\u5927\u5199\u6807\u9898",description:"\u6807\u9898\u4F1A\u5728\u683C\u5F0F\u5316\u540E\u5927\u5199",style:{name:"\u6837\u5F0F",description:"\u5927\u5199\u7684\u65B9\u5F0F"},"ignore-case-words":{name:"\u5FFD\u7565\u5927\u5199\u5355\u8BCD",description:"\u5728\u6837\u5F0F\u8BBE\u4E3A\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199\u65F6\uFF0C\u4EC5\u683C\u5F0F\u5316\u5168\u5C0F\u5199\u7684\u5355\u8BCD"},"ignore-words":{name:"\u5FFD\u7565\u5355\u8BCD",description:"\u4E0D\u683C\u5F0F\u5316\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"},"lowercase-words":{name:"\u5C0F\u5199\u5355\u8BCD",description:"\u4FDD\u6301\u5C0F\u5199\u7684\u5355\u8BCD\uFF0C\u4EE5\u9017\u53F7\u5206\u9694"}},"compact-yaml":{name:"\u7CBE\u7B80 YAML",description:"\u79FB\u9664 YAML Front-matter \u5F00\u5934\u7ED3\u5C3E\u7684\u7A7A\u884C","inner-new-lines":{name:"\u5185\u90E8\u7A7A\u884C",description:"\u79FB\u9664 YAML Front-matter \u5185\u90E8\u7684\u7A7A\u884C"}},"consecutive-blank-lines":{name:"\u8FDE\u7EED\u7A7A\u884C",description:"\u6700\u591A\u5141\u8BB8\u4E00\u4E2A\u8FDE\u7EED\u7A7A\u884C"},"convert-bullet-list-markers":{name:"\u8F6C\u6362\u65E0\u5E8F\u5217\u8868\u6807\u5FD7",description:"\u5C06\u5176\u4ED6\u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7\u8F6C\u6362\u4E3A Markdown \u683C\u5F0F\u65E0\u5E8F\u5217\u8868\u6807\u5FD7"},"convert-spaces-to-tabs":{name:"\u8F6C\u6362\u7A7A\u683C\u4E3A\u5236\u8868\u7B26",description:"\u5C06\u524D\u5BFC\u7A7A\u683C\u8F6C\u6362\u4E3A\u5236\u8868\u7B26",tabsize:{name:"\u5236\u8868\u7B26\u5BBD\u5EA6",description:"\u5236\u8868\u7B26\u5BF9\u5E94\u7684\u7A7A\u683C\u5BBD\u5EA6"}},"dedupe-yaml-array-values":{name:"YAML \u503C\u53BB\u91CD",description:"\u53BB\u91CD\u65F6\u533A\u5206\u5927\u5C0F\u5199","dedupe-alias-key":{name:"YAML aliases \u53BB\u91CD",description:"\u6253\u5F00\u4EE5\u5BF9 YAML aliases \u53BB\u91CD"},"dedupe-tag-key":{name:"YAML tags \u53BB\u91CD",description:"\u6253\u5F00\u4EE5\u5BF9 YAML tags \u53BB\u91CD"},"dedupe-array-keys":{name:"YAML array \u53BB\u91CD",description:"\u6253\u5F00\u4EE5\u5BF9\u666E\u901A YAML \u6570\u7EC4\u4E2D\u7684\u503C\u53BB\u91CD"},"ignore-keys":{name:"\u8981\u5FFD\u7565\u7684 YAML \u952E",description:"\u8981\u5FFD\u7565\u7684 YAML \u952E\u5217\u8868\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E"}},"default-language-for-code-fences":{name:"\u4EE3\u7801\u5757\u9ED8\u8BA4\u8BED\u8A00",description:"\u4E3A\u6CA1\u6709\u6307\u5B9A\u8BED\u8A00\u7684\u4EE3\u7801\u5757\u6DFB\u52A0\u9ED8\u8BA4\u8BED\u8A00\u3002","default-language":{name:"\u7F16\u7A0B\u8BED\u8A00",description:"\u7559\u7A7A\u4E0D\u8FDB\u884C\u4EFB\u4F55\u64CD\u4F5C\u3002\u53EF\u4EE5\u5728[\u8FD9\u91CC](https://prismjs.com/#supported-languages)\u627E\u5230\u8BED\u8A00\u6807\u7B7E\u3002"}},"emphasis-style":{name:"\u7A81\u51FA\u6837\u5F0F",description:"\u4FDD\u6301\u7A81\u51FA\u6837\u5F0F\u4E00\u81F4\u6027",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7A81\u51FA\u5185\u5BB9\u7684\u6837\u5F0F"}},"empty-line-around-blockquotes":{name:"\u5F15\u7528\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u5F15\u7528\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E\u3002**\u6CE8\u610F\uFF0C\u8FD9\u91CC\u5D4C\u5957\u5F15\u7528\u5757\u4E5F\u4F1A\u6709\u5BF9\u5E94\u7684\u7A7A\u884C**"},"empty-line-around-code-fences":{name:"\u4EE3\u7801\u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u4EE3\u7801\u5757\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"empty-line-around-math-blocks":{name:"Latex \u5757\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD Latex \u5757\u524D\u540E\u6709\u7A7A\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"empty-line-around-tables":{name:"\u8868\u683C\u524D\u540E\u7A7A\u884C",description:"\u786E\u4FDD\u8868\u683C\u524D\u540E\u6709\u7A7A\u884C\uFF0C\u9664\u975E\u5B83\u5728\u6587\u6863\u7684\u5F00\u5934\u6216\u7ED3\u5C3E"},"escape-yaml-special-characters":{name:"\u8F6C\u4E49 YAML \u7279\u6B8A\u5B57\u7B26",description:`\u8F6C\u4E49 YAML \u4E2D\u7684\u5192\u53F7(:)\uFF0C\u5355\u5F15\u53F7 (') \u548C\u53CC\u5F15\u53F7 (")`,"try-to-escape-single-line-arrays":{name:"\u5C1D\u8BD5\u8F6C\u4E49\u5355\u884C\u6570\u7EC4",description:'\u5C1D\u8BD5\u8F6C\u4E49\u6570\u7EC4\u503C\uFF0C\u5047\u8BBE\u6570\u7EC4\u4EE5 "[" \u5F00\u5934\uFF0C "]" \u7ED3\u5C3E\uFF0C\u5E76\u4E14\u7531 "," \u5206\u9694'}},"file-name-heading":{name:"\u6587\u4EF6\u540D\u4F5C\u4E3A\u6807\u9898",description:"\u5982\u679C\u6CA1\u6709 H1 \u6807\u9898\uFF0C\u5219\u63D2\u5165\u6587\u4EF6\u540D\u4F5C\u4E3A H1 \u6807\u9898"},"footnote-after-punctuation":{name:"\u811A\u6CE8\u5728\u6807\u70B9\u7B26\u53F7\u540E",description:"\u786E\u4FDD\u811A\u6CE8\u5F15\u7528\u7F6E\u4E8E\u6807\u70B9\u7B26\u53F7\u4E4B\u540E\uFF0C\u800C\u4E0D\u662F\u4E4B\u524D"},"force-yaml-escape":{name:"\u5F3A\u5236 YAML \u8F6C\u4E49",description:"\u8F6C\u4E49\u6307\u5B9A YAML \u952E\u7684\u503C","force-yaml-escape-keys":{name:"\u8981\u5F3A\u5236\u8F6C\u79FB\u7684 YAML \u952E",description:"\u5982\u679C\u672A\u8F6C\u4E49\uFF0C\u5219\u4F7F\u7528 YAML \u8F6C\u4E49\u5B57\u7B26\u5BF9\u6307\u5B9A YAML \u952E\u8FDB\u884C\u8F6C\u4E49\uFF0C\u6BCF\u4E2A\u952E\u4E00\u884C\u3002 \u4E0D\u8981\u5BF9 YAML \u6570\u7EC4\u4F7F\u7528"}},"format-tags-in-yaml":{name:"\u683C\u5F0F\u5316 YAML \u4E2D\u7684 tags",description:"\u628A YAML Front-matter \u4E2D tag \u7684\u4E95\u53F7\u5220\u9664\uFF0C\u56E0\u4E3A\u4E95\u53F7\u4F1A\u4F7F tag \u65E0\u6548"},"format-yaml-array":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5141\u8BB8\u5C06\u5E38\u89C4 YAML \u6570\u7EC4\u683C\u5F0F\u5316\u4E3A\u591A\u884C\u6216\u5355\u884C\uFF0C\u5E76\u5141\u8BB8\u90E8\u5206\u6570\u7EC4(`tags`, `aliases`) \u4FDD\u7559 Obsidian \u539F\u6709\u7684 YAML \u683C\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u5355\u884C\uFF0C\u5982\u679C\u5B58\u5728\u591A\u4E2A\u6761\u76EE\uFF0C\u5219\u4F1A\u53D8\u4E3A\u5355\u884C\u6570\u7EC4\u3002\u5BF9\u4E8E\u5355\u5B57\u7B26\u4E32\u8F6C\u6362\u4E3A\u591A\u884C\uFF0C\u60C5\u51B5\u4E5F\u662F\u5982\u6B64\uFF0C\u53EA\u662F\u5B83\u53D8\u6210\u4E86\u591A\u884C\u6570\u7EC4","alias-key":{name:"\u683C\u5F0F\u5316 YAML aliases",description:"\u6253\u5F00 YAML aliases \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E\u3002\u4E0D\u5E94\u4E0E\u89C4\u5219`YAML \u6807\u9898\u522B\u540D`\u540C\u65F6\u542F\u7528\uFF0C\u56E0\u4E3A\u5B83\u4EEC\u53EF\u80FD\u4E0D\u4F1A\u5F88\u597D\u5730\u534F\u540C\u5DE5\u4F5C\uFF0C\u6216\u8005\u5B83\u4EEC\u53EF\u80FD\u6709\u4E0D\u540C\u7684\u683C\u5F0F\u6837\u5F0F\u9009\u62E9\uFF0C\u4ECE\u800C\u5BFC\u81F4\u610F\u5916\u7ED3\u679C"},"tag-key":{name:"\u683C\u5F0F\u5316 YAML tags",description:"\u6253\u5F00 YAML tags \u90E8\u5206\u7684\u683C\u5F0F\u8BBE\u7F6E"},"default-array-style":{name:"\u9ED8\u8BA4\u7684 YAML \u6570\u7EC4\u683C\u5F0F",description:"\u9664\u4E86 tags, aliases \u6216\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u5355\u884C\u6570\u7EC4\u548C\u5C06\u952E\u503C\u5F3A\u5236\u4E3A\u591A\u884C\u6570\u7EC4\u4E4B\u5916\uFF0C\u5176\u4ED6\u4E3A\u5E38\u89C4 YAML \u6570\u7EC4\u7684\u6837\u5F0F"},"default-array-keys":{name:"\u683C\u5F0F\u5316 YAML \u6570\u7EC4",description:"\u5BF9 YAML \u6570\u7EC4\u8FDB\u884C\u683C\u5F0F\u5316"},"force-single-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u5355\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"},"force-multi-line-array-style":{name:"\u5F3A\u5236\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4",description:"\u5F3A\u5236\u5C06\u6307\u5B9A\u952E\u7684 YAML \u6570\u7EC4\u8F6C\u4E3A\u591A\u884C\u6570\u7EC4\uFF0C\u6309\u884C\u5206\u9694\uFF08\u7559\u7A7A\u4EE5\u7981\u7528\u6B64\u9009\u9879\uFF09"}},"header-increment":{name:"\u6807\u9898\u7EA7\u522B\u9012\u589E",description:"\u6807\u9898\u4E00\u6B21\u4EC5\u9012\u589E\u4E00\u4E2A\u7EA7\u522B","start-at-h2":{name:"\u4ECE H2 \u6807\u9898\u5F00\u59CB\u9012\u589E",description:"\u4F7F H2 \u6807\u9898\u6210\u4E3A\u6587\u4EF6\u4E2D\u7684\u6700\u5C0F\u6807\u9898\u7EA7\u522B\uFF0C\u5176\u4ED6\u7EA7\u522B\u7684\u6807\u9898\u8FDB\u884C\u76F8\u5E94\u7684\u9012\u63A8"}},"heading-blank-lines":{name:"\u6807\u9898\u7A7A\u884C",description:"\u4FDD\u8BC1\u6240\u6709\u6807\u9898\u524D\u540E\u5747\u6709\u4E00\u4E2A\u7A7A\u884C\uFF08\u9664\u975E\u6807\u9898\u4F4D\u4E8E\u6587\u6863\u5F00\u5934\u6216\u7ED3\u5C3E\u5904\uFF09",bottom:{name:"\u5E95\u90E8",description:"\u5728\u6807\u9898\u540E\u63D2\u5165\u4E00\u4E2A\u7A7A\u884C"},"empty-line-after-yaml":{name:"YAML \u4E0E\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u4FDD\u7559 YAML Front-matter \u548C\u6807\u9898\u4E4B\u95F4\u7684\u7A7A\u884C"}},"headings-start-line":{name:"\u6807\u9898\u5BF9\u9F50\u884C\u9996",description:"\u5C06\u4E0D\u4EE5\u884C\u9996\u5F00\u59CB\u7684\u6807\u9898\u524D\u9762\u7684\u7A7A\u767D\u5220\u9664\uFF0C\u6807\u9898\u80FD\u88AB\u6B63\u786E\u8BC6\u522B"},"insert-yaml-attributes":{name:"\u63D2\u5165 YAML \u5C5E\u6027",description:"\u628A\u6307\u5B9A\u7684 YAML \u952E\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A\u952E\u5360\u4E00\u884C","text-to-insert":{name:"\u8981\u63D2\u5165\u7684\u952E",description:"\u8981\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u7684\u952E"}},"line-break-at-document-end":{name:"\u6587\u4EF6\u7ED3\u5C3E\u6362\u884C",description:"\u786E\u4FDD\u6587\u6863\u7ED3\u5C3E\u6709\u4E00\u884C\u7A7A\u884C"},"move-footnotes-to-the-bottom":{name:"\u79FB\u52A8\u811A\u6CE8\u81F3\u5E95\u90E8",description:"\u5C06\u6240\u6709\u811A\u6CE8\u79FB\u52A8\u5230\u6587\u6863\u5E95\u90E8"},"move-math-block-indicators-to-their-own-line":{name:"\u683C\u5F0F\u5316 Latex \u5757\u6807\u5FD7",description:"\u5C06 Latex \u5757\u6807\u5FD7\u79FB\u5230\u65B0\u884C\u3002\u4F7F\u7528**\u6307\u793A Latex \u5757\u7684 `$` \u7B26\u53F7\u6570\u91CF**\u6765\u786E\u5B9A\u5355\u884C Latex \u662F\u5426\u88AB\u8BA4\u5B9A\u4E3A Latex \u5757"},"move-tags-to-yaml":{name:"\u5C06 tags \u79FB\u81F3 YAML",description:"\u5C06\u6587\u6863\u5185\u6240\u6709\u7684 tags \u79FB\u52A8\u5230 YAML Front-matter \u5185","how-to-handle-existing-tags":{name:"\u5982\u4F55\u5904\u7406\u539F\u6709\u7684 tag",description:"\u5BF9\u4E8E\u6587\u6863\u4E2D\u975E\u88AB\u5FFD\u7565\u7684 tag\uFF0C\u79FB\u52A8\u5230 YAML Front-matter \u540E\u5E94\u8BE5\u91C7\u53D6\u4F55\u79CD\u64CD\u4F5C\uFF1F"},"tags-to-ignore":{name:"\u5FFD\u7565\u7684 tag",description:"\u8FD9\u4E9B tags \u4E0D\u4F1A\u88AB\u79FB\u52A8 YAML Front-matter \u4E2D\u3002\u6BCF\u4E2A tag \u6309\u884C\u5206\u9694\uFF0C\u4E0D\u8981\u5305\u542B`#`"}},"no-bare-urls":{name:"\u7981\u6B62\u539F\u59CB URL",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u56F4\uFF0C\u5426\u5219\u5C06\u539F\u59CB URL \u7528\u5C16\u62EC\u53F7\u5305\u56F4","no-bare-uris":{name:"\u7981\u6B62\u539F\u59CB URI",description:"\u9664\u975E\u88AB\u53CD\u5F15\u53F7\u3001\u65B9\u62EC\u53F7\u6216\u5355\u5F15\u53F7/\u53CC\u5F15\u53F7\u5305\u56F4\uFF0C\u5426\u5219\u5C06\u539F\u59CB URI \u7528\u5C16\u62EC\u53F7\u5305\u56F4"}},"ordered-list-style":{name:"\u6709\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u6709\u5E8F\u5217\u8868\u9075\u5FAA\u6307\u5B9A\u7684\u6837\u5F0F\u3002\u8BF7\u6CE8\u610F\uFF0C2\u4E2A\u7A7A\u683C\u62161\u4E2A\u5236\u8868\u7B26\u88AB\u89C6\u4E3A\u4E00\u4E2A\u7F29\u8FDB\u7EA7\u522B","number-style":{name:"\u6392\u5E8F\u65B9\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u5E8F\u53F7\u683C\u5F0F\u5316\u65B9\u5F0F"},"list-end-style":{name:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F",description:"\u6709\u5E8F\u5217\u8868\u6807\u5FD7\u6837\u5F0F"}},"paragraph-blank-lines":{name:"\u6BB5\u843D\u7A7A\u884C",description:"\u6BCF\u4E2A\u6BB5\u843D\u524D\u540E\u4FDD\u8BC1\u6709\u4E14\u4EC5\u6709\u4E00\u884C\u7A7A\u884C"},"prevent-double-checklist-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684 checklist \u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709 checklist \u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664 checklist \u6807\u5FD7"},"prevent-double-list-item-indicator-on-paste":{name:"\u9632\u6B62\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u7C98\u8D34\u65F6\uFF0C\u5982\u679C\u5149\u6807\u6240\u5728\u884C\u6709\u5217\u8868\u6807\u5FD7\uFF0C\u5219\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u5217\u8868\u6807\u5FD7"},"proper-ellipsis-on-paste":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7C98\u8D34\u65F6\uFF0C\u5373\u4F7F\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u6709\u7A7A\u683C\uFF0C\u4E5F\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"proper-ellipsis":{name:"\u6B63\u786E\u7684\u7701\u7565\u53F7",description:"\u7528\u7701\u7565\u53F7\u66FF\u6362\u4E09\u4E2A\u8FDE\u7EED\u7684\u70B9"},"quote-style":{name:"\u5F15\u53F7\u6837\u5F0F",description:"\u683C\u5F0F\u5316\u6B63\u6587\u5185\u5BB9\u4E2D\u7684\u5F15\u53F7\u6837\u5F0F\u4E3A\u5355\u5F15\u53F7\u6216\u53CC\u5F15\u53F7","single-quote-enabled":{name:"\u542F\u7528\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"single-quote-style":{name:"\u5355\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u5355\u5F15\u53F7\u6837\u5F0F"},"double-quote-enabled":{name:"\u542F\u7528\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u6307\u5B9A\u5E94\u4F7F\u7528\u9009\u5B9A\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"},"double-quote-style":{name:"\u53CC\u5F15\u53F7\u6837\u5F0F",description:"\u8981\u4F7F\u7528\u7684\u53CC\u5F15\u53F7\u6837\u5F0F"}},"re-index-footnotes":{name:"\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8",description:"\u57FA\u4E8E\u51FA\u73B0\u7684\u987A\u5E8F\u91CD\u65B0\u7D22\u5F15\u811A\u6CE8\u3002**\u6CE8\u610F\uFF0C\u5982\u679C\u4E00\u4E2A\u952E\u5BF9\u5E94\u591A\u4E2A\u811A\u6CE8\uFF0C\u5219\u6B64\u89C4\u5219\u4E0D\u9002\u7528**"},"remove-consecutive-list-markers":{name:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u91CD\u590D\u7684\u5217\u8868\u6807\u5FD7\u3002\u590D\u5236\u7C98\u8D34\u5217\u8868\u9879\u65F6\u5F88\u6709\u7528"},"remove-empty-lines-between-list-markers-and-checklists":{name:"\u79FB\u9664\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u7684\u7A7A\u884C",description:"\u5217\u8868\u548C checklist \u9879\u76EE\u4E4B\u95F4\u4E0D\u5E94\u6709\u7A7A\u884C"},"remove-empty-list-markers":{name:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7",description:"\u79FB\u9664\u7A7A\u7684\u5217\u8868\u6807\u5FD7\uFF0C\u6BD4\u5982\u5217\u8868\u540E\u6CA1\u5185\u5BB9"},"remove-hyphenated-line-breaks":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u79FB\u9664\u4E2D\u5212\u7EBF\u8FDE\u5B57\u7B26\u3002\u4ECE\u6587\u7AE0\u4E2D\u7C98\u8D34\u65F6\u5F88\u6709\u7528"},"remove-hyphens-on-paste":{name:"\u79FB\u9664\u8FDE\u5B57\u7B26",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u8FDE\u5B57\u7B26"},"remove-leading-or-trailing-whitespace-on-paste":{name:"\u79FB\u9664\u524D\u5BFC\u6216\u5C3E\u968F\u7A7A\u683C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u4EFB\u4F55\u524D\u5BFC\u975E\u5236\u8868\u7B26\u7A7A\u683C\u548C\u6240\u6709\u5C3E\u968F\u7A7A\u683C"},"remove-leftover-footnotes-from-quote-on-paste":{name:"\u79FB\u9664\u591A\u4F59\u811A\u6CE8",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u79FB\u9664\u591A\u4F59\u811A\u6CE8"},"remove-link-spacing":{name:"\u79FB\u9664\u94FE\u63A5\u7A7A\u683C",description:"\u79FB\u9664\u94FE\u63A5\u6587\u672C\u9996\u5C3E\u7684\u7A7A\u683C"},"remove-multiple-blank-lines-on-paste":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u884C",description:"\u7C98\u8D34\u65F6\uFF0C\u4ECE\u8981\u7C98\u8D34\u7684\u6587\u672C\u4E2D\u5C06\u591A\u4E2A\u7A7A\u884C\u538B\u7F29\u4E3A\u4E00\u4E2A\u7A7A\u884C"},"remove-multiple-spaces":{name:"\u79FB\u9664\u91CD\u590D\u7A7A\u683C",description:"\u79FB\u9664\u4E24\u4E2A\u6216\u66F4\u591A\u8FDE\u7EED\u7684\u7A7A\u683C\uFF0C\u5FFD\u7565\u884C\u9996\u548C\u884C\u5C3E\u7684\u7A7A\u683C"},"remove-space-around-characters":{name:"\u79FB\u9664\u5B57\u7B26\u5468\u56F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u67D0\u4E9B\u5B57\u7B26\u5468\u56F4\u6CA1\u6709\u7A7A\u683C\uFF08\u5305\u62EC\u5355\u4E2A\u7A7A\u683C\u6216\u5236\u8868\u7B26\uFF09\u3002**\u6CE8\u610F\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\u5F71\u54CD markdown \u683C\u5F0F**","include-fullwidth-forms":{name:"\u5305\u62EC\u5168\u89D2\u5F62\u5F0F",description:'\u5305\u62EC\u5168\u89D2\u5F62\u5F0FUnicode\u5757'},"include-cjk-symbols-and-punctuation":{name:"\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9",description:'\u5305\u62ECCJK\u7B26\u53F7\u548C\u6807\u70B9Unicode\u5757'},"include-dashes":{name:"\u5305\u62EC\u7834\u6298\u53F7",description:"\u5305\u62EC en dash (\u2013) \u548C em dash (\u2014)"},"other-symbols":{name:"\u5176\u4ED6\u7B26\u53F7",description:"\u8981\u5305\u62EC\u7684\u5176\u4ED6\u7B26\u53F7"}},"remove-space-before-or-after-characters":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u4E4B\u524D\u548C\u6307\u5B9A\u5B57\u7B26\u4E4B\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u67D0\u4E9B\u60C5\u51B5\u4E0B\uFF0C\u8FD9\u53EF\u80FD\u4F1A\u5BFC\u81F4 markdown \u683C\u5F0F\u51FA\u73B0\u95EE\u9898**","characters-to-remove-space-before":{name:"\u79FB\u9664\u5B57\u7B26\u524D\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u524D\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"},"characters-to-remove-space-after":{name:"\u79FB\u9664\u5B57\u7B26\u540E\u7684\u7A7A\u683C",description:"\u79FB\u9664\u6307\u5B9A\u5B57\u7B26\u540E\u7684\u7A7A\u683C\u3002 **\u6CE8\u610F\uFF0C\u5728\u5B57\u7B26\u5217\u8868\u4E2D\u4F7F\u7528`{`\u6216`}`\u4F1A\u610F\u5916\u5F71\u54CD\u6587\u4EF6\uFF0C\u56E0\u4E3A\u5B83\u5728\u7A0B\u5E8F\u540E\u53F0\u7684\u5FFD\u7565\u8BED\u6CD5\u4E2D\u4F7F\u7528**"}},"remove-trailing-punctuation-in-heading":{name:"\u79FB\u9664\u6807\u9898\u4E2D\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u4ECE\u6807\u9898\u7684\u672B\u5C3E\u5220\u9664\u6307\u5B9A\u7684\u6807\u70B9\u7B26\u53F7\uFF0C\u786E\u4FDD\u5FFD\u7565[HTML \u5B57\u7B26\u5B9E\u4F53](https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)\u672B\u5C3E\u7684\u5206\u53F7","punctuation-to-remove":{name:"\u8981\u5220\u9664\u7684\u7ED3\u5C3E\u6807\u70B9\u7B26\u53F7",description:"\u8981\u4ECE\u6587\u4EF6\u6807\u9898\u7ED3\u5C3E\u4E2D\u5220\u9664\u7684\u6807\u70B9\u7B26\u53F7"}},"remove-yaml-keys":{name:"\u79FB\u9664 YAML \u952E",description:"\u79FB\u9664\u6307\u5B9A\u7684 YAML \u952E","yaml-keys-to-remove":{name:"\u9700\u8981\u79FB\u9664\u7684 YAML \u952E",description:"\u8981\u4ECE YAML Front-matter \u4E2D\u5220\u9664\u7684 YAML \u952E \uFF08\u53EF\u5E26\u6216\u4E0D\u5E26\u5192\u53F7\uFF09"}},"sort-yaml-array-values":{name:"YAML \u503C\u6392\u5E8F",description:"\u57FA\u4E8E\u6307\u5B9A\u89C4\u5219\u5BF9 YAML \u503C\u6392\u5E8F","sort-alias-key":{name:"YAML aliases \u6392\u5E8F",description:"\u6253\u5F00\u4EE5\u5BF9 YAML aliases \u6392\u5E8F"},"sort-tag-key":{name:"YAML tags \u6392\u5E8F",description:"\u6253\u5F00\u4EE5\u5BF9 YAML tags \u6392\u5E8F"},"sort-array-keys":{name:"YAML array \u6392\u5E8F",description:"\u6253\u5F00\u4EE5\u5BF9\u666E\u901A YAML \u6570\u7EC4\u4E2D\u7684\u503C\u6392\u5E8F"},"ignore-keys":{name:"\u8981\u5FFD\u7565\u7684 YAML \u952E",description:"\u8981\u5FFD\u7565\u7684 YAML \u952E\u5217\u8868\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E"},"sort-order":{name:"\u6392\u5E8F\u65B9\u5F0F",description:"\u6392\u5E8F\u65B9\u5F0F"}},"space-after-list-markers":{name:"\u5217\u8868\u6807\u5FD7\u7A7A\u683C",description:"\u5217\u8868\u6807\u5FD7\u548C checkbox \u540E\u5E94\u6709\u4E00\u4E2A\u7A7A\u683C"},"space-between-chinese-japanese-or-korean-and-english-or-numbers":{name:"\u4E2D\u65E5\u97E9\u8BED\u4E0E\u82F1\u8BED\u6216\u6570\u5B57\u4E4B\u95F4\u7684\u7A7A\u683C",description:"\u786E\u4FDD\u4E2D\u6587\u3001\u65E5\u6587\u6216\u97E9\u6587\u548C\u82F1\u6587\u6216\u6570\u5B57\u7531\u5355\u4E2A\u7A7A\u683C\u5206\u9694. [\u53C2\u8003\u94FE\u63A5](https://github.com/sparanoid/chinese-copywriting-guidelines)"},"strong-style":{name:"\u7C97\u4F53\u6837\u5F0F",description:"\u786E\u4FDD\u7C97\u4F53\u6837\u5F0F\u4E00\u81F4",style:{name:"\u6837\u5F0F",description:"\u7528\u4E8E\u8868\u793A\u7C97\u4F53\u7684\u6837\u5F0F"}},"trailing-spaces":{name:"\u672B\u5C3E\u7A7A\u683C",description:"\u79FB\u9664\u6BCF\u884C\u672B\u5C3E\u591A\u4F59\u7684\u7A7A\u683C","twp-space-line-break":{name:"\u4E24\u7A7A\u683C\u6362\u884C",description:'\u5FFD\u7565\u4E24\u4E2A\u7A7A\u683C\u540E\u63A5\u6362\u884C\u7B26\u7684\u60C5\u51B5\uFF08"\u4E24\u7A7A\u683C\u89C4\u5219"\uFF09'}},"two-spaces-between-lines-with-content":{name:"\u5185\u5BB9\u95F4\u9694\u4E24\u4E2A\u7A7A\u683C",description:"\u786E\u4FDD\u5728\u6BB5\u843D\u3001\u5F15\u7528\u548C\u5217\u8868\u9879\u4E2D\uFF0C\u6700\u540E\u4E00\u884C\u5185\u5BB9\u7684\u884C\u672B\u6DFB\u52A0\u4E24\u4E2A\u7A7A\u683C"},"unordered-list-style":{name:"\u65E0\u5E8F\u5217\u8868\u6837\u5F0F",description:"\u786E\u4FDD\u65E0\u5E8F\u5217\u8868\u7B26\u5408\u6307\u5B9A\u7684\u6837\u5F0F","list-style":{name:"\u5217\u8868\u9879\u6837\u5F0F",description:"\u5217\u8868\u9879\u9700\u8981\u6307\u5B9A\u7684\u6837\u5F0F"}},"yaml-key-sort":{name:"YAML \u952E\u6392\u5E8F",description:"\u6839\u636E\u6307\u5B9A\u7684\u987A\u5E8F\u548C\u4F18\u5148\u7EA7\u5BF9 YAML \u952E\u8FDB\u884C\u6392\u5E8F\u3002**\u6CE8\u610F\uFF0C\u4E5F\u8BB8\u4E5F\u4F1A\u5220\u9664\u7A7A\u884C**","yaml-key-priority-sort-order":{name:"YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9\u952E\u8FDB\u884C\u6392\u5E8F\u7684\u987A\u5E8F\uFF0C\u6BCF\u884C\u4E00\u4E2A\u952E\uFF0C\u6309\u5217\u8868\u4E2D\u7684\u987A\u5E8F\u8FDB\u884C\u6392\u5E8F"},"priority-keys-at-start-of-yaml":{name:"\u6392\u5E8F\u952E\u653E\u5728 YAML \u5F00\u5934",description:"\u6309\u7167 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u5C06\u952E\u653E\u4E8E YAML Front-matter \u5F00\u5934"},"yaml-sort-order-for-other-keys":{name:"YAML \u5176\u5B83\u952E\u7684\u6392\u5E8F\u987A\u5E8F",description:"\u5BF9 `YAML \u952E\u4F18\u5148\u7EA7\u6392\u5E8F\u987A\u5E8F`\u4E2D\u672A\u627E\u5230\u7684\u952E\u8FDB\u884C\u6392\u5E8F"}},"yaml-timestamp":{name:"YAML \u65F6\u95F4\u6233",description:"\u5728 YAML Front-matter \u4E2D\u8BB0\u5F55\u4E0A\u6B21\u7F16\u8F91\u6587\u6863\u7684\u65E5\u671F\u3002\u4ECE\u6587\u6863\u5143\u6570\u636E\u4E2D\u83B7\u53D6\u65E5\u671F\u6570\u636E","date-created":{name:"\u521B\u5EFA\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u521B\u5EFA\u65E5\u671F"},"date-created-key":{name:"\u521B\u5EFA\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u521B\u5EFA\u65E5\u671F"},"force-retention-of-create-value":{name:"\u5F3A\u5236\u4FDD\u7559\u521B\u5EFA\u65E5\u671F\u503C",description:"\u6CBF\u7528 YAML Front-matter \u4E2D\u5DF2\u6709\u7684\u521B\u5EFA\u65E5\u671F\uFF0C\u5FFD\u7565\u6587\u6863\u5143\u6570\u636E\u3002\u5BF9\u4E8E\u6587\u6863\u5143\u6570\u636E\u66F4\u6539\uFF08\u6BD4\u5982\u590D\u5236\u6587\u4EF6\uFF09\u5BFC\u81F4\u7684\u521B\u5EFA\u65F6\u95F4\u66F4\u6539\u975E\u5E38\u6709\u7528"},"date-modified":{name:"\u4FEE\u6539\u65E5\u671F",description:"\u63D2\u5165\u6587\u4EF6\u7684\u6700\u8FD1\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F"},"date-modified-key":{name:"\u4FEE\u6539\u65E5\u671F\u952E\u540D",description:"\u4F7F\u7528\u54EA\u4E2A YAML \u952E\u6765\u8868\u793A\u4FEE\u6539\u65E5\u671F"},format:{name:"\u683C\u5F0F",description:"Moment.js \u8BED\u6CD5\u683C\u5F0F\uFF08\u8BE6\u60C5\u8BBE\u7F6E\u89C1[Moment format options](https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/)"}},"yaml-title-alias":{name:"YAML \u6807\u9898\u522B\u540D",description:"\u5C06\u6587\u6863\u7684\u6807\u9898\u63D2\u5165 YAML Front-matter \u7684 aliases \u90E8\u5206\u3002\u4ECE\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u6863\u540D\u4E2D\u83B7\u53D6\u503C","preserve-existing-alias-section-style":{name:"\u4FDD\u7559\u73B0\u6709\u522B\u540D\u90E8\u5206\u6837\u5F0F",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u6B64\u9879\u4EC5\u5728\u65B0\u521B\u5EFA\u7684\u522B\u540D\u90E8\u5206\u751F\u6548"},"keep-alias-that-matches-the-filename":{name:"\u786E\u4FDD\u522B\u540D\u4E0E\u6587\u4EF6\u540D\u5339\u914D",description:"\u8FD9\u6837\u7684\u522B\u540D\u901A\u5E38\u662F\u5197\u4F59\u7684"},"use-yaml-key-to-keep-track-of-old-filename-or-heading":{name:"\u4F7F\u7528 YAML \u952E `linter-yaml-title-alias` \u6765\u4FDD\u7559\u6807\u9898\u4FEE\u6539\u8BB0\u5F55",description:"\u5982\u679C\u8BBE\u7F6E\uFF0C\u5F53\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u66F4\u6539\u6216\u6587\u6863\u540D\u66F4\u6539\u65F6\uFF0C\u6B64\u952E\u4E2D\u5B58\u50A8\u7684\u65E7 aliases \u5C06\u66FF\u6362\u4E3A\u65B0\u503C\uFF0C\u800C\u4E0D\u4EC5\u4EC5\u662F\u5728 aliases \u4E2D\u63D2\u5165\u65B0\u6761\u76EE"}},"yaml-title":{name:"YAML \u6807\u9898",description:"\u5C06\u6587\u4EF6\u7684\u6807\u9898\u63D2\u5165\u5230 YAML Front-matter \u4E2D\u3002 \u6839\u636E\u6240\u9009\u6A21\u5F0F\u83B7\u53D6\u6807\u9898","title-key":{name:"\u6807\u9898\u952E",description:"\u6807\u9898\u4F7F\u7528\u54EA\u4E00\u4E2A YAML \u952E"},mode:{name:"\u6A21\u5F0F",description:"\u7528\u4E8E\u83B7\u53D6\u6807\u9898\u7684\u65B9\u6CD5"}}},enums:{"Title Case":"\u6BCF\u8BCD\u9996\u5B57\u6BCD\u5927\u5199","ALL CAPS":"\u5168\u90E8\u5927\u5199","First letter":"\u4EC5\u9996\u5B57\u6BCD\u5927\u5199",".":".",")":")",ERROR:"ERROR",TRACE:"TRACE",DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",SILENT:"SILENT",ascending:"\u5347\u5E8F",lazy:"\u5168\u4E3A1",Nothing:"\u65E0","Remove hashtag":"\u79FB\u9664 hashtag","Remove whole tag":"\u79FB\u9664\u6574\u4E2A tag",asterisk:"\u661F\u53F7(*)",underscore:"\u4E0B\u5212\u7EBF(_)",consistent:"\u4FDD\u6301\u4E00\u81F4","-":"-","*":"*","+":"+",space:"\u6709\u7A7A\u683C","no space":"\u65E0\u7A7A\u683C",None:"\u65E0","Ascending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u5347\u5E8F","Descending Alphabetical":"\u6309\u5B57\u6BCD\u987A\u5E8F\u964D\u5E8F","multi-line":"\u591A\u884C\u6570\u7EC4","single-line":"\u5355\u884C\u6570\u7EC4","single string to single-line":"\u5B57\u7B26\u4E32\u8F6C\u5355\u884C\u6570\u7EC4","single string to multi-line":"\u5B57\u7B26\u4E32\u8F6C\u591A\u884C\u6570\u7EC4","single string comma delimited":"\u9017\u53F7\u5206\u9694\u5B57\u7B26\u4E32","single string space delimited":"\u7A7A\u683C\u5206\u9694\u5B57\u7B26\u4E32","single-line space delimited":"\u7A7A\u683C\u5206\u9694\u5355\u884C\u6570\u7EC4","first-h1":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898","first-h1-or-filename-if-h1-missing":"\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u6216\u6587\u4EF6\u540D\uFF08\u7B2C\u4E00\u4E2A H1 \u6807\u9898\u4E0D\u5B58\u5728\u65F6\uFF09",filename:"\u6587\u4EF6\u540D","''":"''","\u2018\u2019":"\u2018\u2019",'""':'""',"\u201C\u201D":"\u201C\u201D","\\":"\\","
":"
"," ":" ","
":"
"}};var su={};var ou={ar:Kd,cz:_d,da:Nd,de:jd,en:rl,es:Yd,fr:Pd,hi:Hd,id:Ud,it:Wd,ja:Vd,ko:$d,nl:Gd,no:Qd,pl:Zd,"pt-BR":Xd,pt:Jd,ro:eu,ru:iu,sq:tu,tr:nu,uk:ru,"zh-TW":su,zh:au};var ns="en",ts=ou[ns];function rs(e){ns=e,ts=ou[ns||"en"]}function A(e){return ts||Yi(`locale not found for '${ns}'`),ts&&er(ts,e)||er(rl,e)}var as=function(e){if(e==null)return yf;if(typeof e=="function")return ss(e);if(typeof e=="object")return Array.isArray(e)?gf(e):hf(e);if(typeof e=="string")return ff(e);throw new Error("Expected function, string, or object as test")};function gf(e){let t=[],i=-1;for(;++i":""))+")"})}return m;function m(){let p=lu,g,b,f;if((!t||a(l,c,d[d.length-1]||void 0))&&(p=vf(i(l,d)),p[0]===os))return p;if("children"in l&&l.children){let x=l;if(x.children&&p[0]!==sl)for(b=(n?x.children.length:-1)+s,f=d.concat(x);b>-1&&b=0;){let r=e.charAt(n);if(r===` +`)break;r.trim()===""||r===">"?i=r+i:i="",n--}return[i,n]}function ll(e=""){let[t]=xn(e,e.length);return` +`+t.trim()}function cu(e="",t=!1,i=1){let n=ll(e),r=Xi(n,">");return(t||us.test(e))&&i===r||i")):n}function xf(e,t){if(t===0)return e;let i=t,n=t;for(;i>=0;){let r=e.charAt(i);if(r.trim()!=="")break;r===` `&&(n=i),i--}return i<0||n===0?e.substring(t+1):e.substring(0,n)+` -`+e.substring(t)}function Lh(e,t,i,n=!1,r=!1){if(i===0)return e;let a=t.split(">").length-1,s=i,o=i,l=0,d=!1,c="";for(;s>=0;){let x=e.charAt(s);if(x.trim()!==""&&x!==">")break;if(x===">"){if(d)break;l++}else if(x===` -`)if(l===0||l===a||l+1===a)o=s,l=0,c===` -`&&(d=!0);else break;s--,c=x}if(s<0||o===0)return e.substring(i+1);let u=e.substring(o,i);if(u===` +`+e.substring(t)}function wf(e,t,i,n=!1,r=!1){if(i===0)return e;let a=t.split(">").length-1,s=i,o=i,l=0,c=!1,d="";for(;s>=0;){let k=e.charAt(s);if(k.trim()!==""&&k!==">")break;if(k===">"){if(c)break;l++}else if(k===` +`)if(l===0||l===a||l+1===a)o=s,l=0,d===` +`&&(c=!0);else break;s--,d=k}if(s<0||o===0)return e.substring(i+1);let u=e.substring(o,i);if(u===` `||u.startsWith(` `))return e.substring(0,o)+` -`+e.substring(i);let g=e.lastIndexOf(` -`,o-1),h="";g===-1?h=e.substring(0,o):h=e.substring(g,o);let v=r?wd(h,n,a):Eo(h);return e.substring(0,o)+v+e.substring(i)}function Th(e,t){if(t===e.length-1)return e;let i=t,n=t,r=!0;for(;i")!=0&&!us.test(g)&&(tr.test(g)||tr.test(b))?x=e.substring(o,i).trimEnd():x=ll(g),e.substring(0,o)+x+e.substring(i)}function kf(e,t){if(t===e.length-1)return e;let i=t,n=t,r=!0;for(;i").length-1,s=i,o=i,l=!0,d=0,c=!1,u="";for(;s")break;if(w===">"){if(c)break;d++}else if(w===` -`)if(d===0||d===a||d+1===a)d=0,l?l=!1:o=s,u===` -`&&(c=!0);else break;s++,u=w}if(s===e.length||o===e.length-1)return e.substring(0,i);let m=e.substring(i,o);if(m===` -`||m.endsWith(` +`+e.substring(n)}function zf(e,t,i,n=!1,r=!1){if(i===e.length-1)return e;let a=t.split(">").length-1,s=i,o=i,l=!0,c=0,d=!1,u="",m=!0,p=e.charAt(s-1);for(;s")break;if(O===">"){if(d)break;c++}else if(O===` +`)if(c===0||c===a||c+1===a)c=0,l?l=!1:o=s,u===` +`&&(d=!0);else break;if(s++,u=O,m&&O===` +`&&r&&p===` +`){o=s;break}m=!1}if(s===e.length||o===e.length-1)return e.substring(0,i);let g=e.substring(i,o);if(g===` +`||g.endsWith(` `))return e.substring(0,i)+` -`+e.substring(o);let h=e.indexOf(` -`,o+1),v="";h===-1?v=e.substring(o):v=e.substring(o+1,h);let x=r?wd(v,n,a):Eo(v);return e.substring(0,i)+x+e.substring(o)}function ot(e,t,i,n=!1){let[r,a]=xd(e,t);if(r.trim()!==""){let o=Oo.test(e.substring(t,i)),l=Eh(e,r,i,o,n);return Lh(l,r,a,o,n)}let s=Th(e,i);return Ah(s,a)}function kd(e,t=0){let i=3735928559^t,n=1103547991^t;for(let r=0,a;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&n)+(i>>>0)}function zd(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` -`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}function Mn(e,t){if(t==0)return t;let i=t;for(;i>0&&e.charAt(i-1)!==` -`;)i--;return i}function Sd(e,t,i,n){return n>e.length-1?e:e.slice(0,n)+e.slice(n,e.length).replace(t,i)}function qn(e,t){let i=0;for(let n=0,r=e.length;n-1&&(i++,n=a)}return i}function Ca(e){let t=typeof e;return t!="string"?t==="number":!isNaN(e)&&!isNaN(parseFloat(e))}function Oe(e,t,i,n){let r=e.length,a=0,s;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,i=i>0?i:0,n.length<1e4)s=Array.from(n),s.unshift(t,i),[].splice.apply(e,s);else for(i&&[].splice.apply(e,[t,i]);a0?(Oe(e,e.length,0,t),e):t}var Ad=/[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;var Ue=Ki(/[A-Za-z]/),In=Ki(/\d/),Ld=Ki(/[\dA-Fa-f]/),je=Ki(/[\dA-Za-z]/),Td=Ki(/[!-/:-@[-`{-~]/),Co=Ki(/[#-'*+\--9=?A-Z^-~]/);function Bn(e){return e!==null&&(e<32||e===127)}function X(e){return e!==null&&(e<0||e===32)}function F(e){return e!==null&&e<-2}function G(e){return e===-2||e===-1||e===32}var Ed=Ki(/\s/),Od=Ki(Ad);function Ki(e){return t;function t(i){return i!==null&&e.test(String.fromCharCode(i))}}function Mo(e){if(e===null||X(e)||Ed(e))return 1;if(Od(e))return 2}function Ut(e,t,i){let n=[],r=-1;for(;++r1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),m=Object.assign({},e[i][1].start);Cd(u,-l),Cd(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[i][1].start),end:m},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[i][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[i][1].start=Object.assign({},o.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=Ne(d,[["enter",e[n][1],t],["exit",e[n][1],t]])),d=Ne(d,[["enter",r,t],["enter",s,t],["exit",s,t],["enter",a,t]]),d=Ne(d,Ut(t.parser.constructs.insideSpan.null,e.slice(n+1,i),t)),d=Ne(d,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",r,t]]),e[i][1].end.offset-e[i][1].start.offset?(c=2,d=Ne(d,[["enter",e[i][1],t],["exit",e[i][1],t]])):c=0,Oe(e,n-1,i-n+3,d),i=n+d.length-c-2;break}}for(i=-1;++i=4?s(d):i(d)}function s(d){return d===null?l(d):F(d)?e.attempt(Nh,s,l)(d):(e.enter("codeFlowValue"),o(d))}function o(d){return d===null||F(d)?(e.exit("codeFlowValue"),s(d)):(e.consume(d),o)}function l(d){return e.exit("codeIndented"),t(d)}}function Kh(e,t,i){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?i(s):F(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):Y(e,a,"linePrefix",4+1)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):F(s)?r(s):i(s)}}var Io={name:"codeText",tokenize:Hh,resolve:Yh,previous:Ph};function Yh(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n=4?t(s):e.interrupt(n.parser.constructs.flow,i,t)(s)}}function _a(e,t,i,n,r,a,s,o,l){let d=l||Number.POSITIVE_INFINITY,c=0;return u;function u(w){return w===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(w),e.exit(a),m):w===null||w===41||Bn(w)?i(w):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),v(w))}function m(w){return w===62?(e.enter(a),e.consume(w),e.exit(a),e.exit(r),e.exit(n),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),g(w))}function g(w){return w===62?(e.exit("chunkString"),e.exit(o),m(w)):w===null||w===60||F(w)?i(w):(e.consume(w),w===92?h:g)}function h(w){return w===60||w===62||w===92?(e.consume(w),g):g(w)}function v(w){return w===40?++c>d?i(w):(e.consume(w),v):w===41?c--?(e.consume(w),v):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(w)):w===null||X(w)?c?i(w):(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(w)):Bn(w)?i(w):(e.consume(w),w===92?x:v)}function x(w){return w===40||w===41||w===92?(e.consume(w),v):v(w)}}function Ra(e,t,i,n,r,a){let s=this,o=0,l;return d;function d(g){return e.enter(n),e.enter(r),e.consume(g),e.exit(r),e.enter(a),c}function c(g){return g===null||g===91||g===93&&!l||g===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs||o>999?i(g):g===93?(e.exit(a),e.enter(r),e.consume(g),e.exit(r),e.exit(n),t):F(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),u(g))}function u(g){return g===null||g===91||g===93||F(g)||o++>999?(e.exit("chunkString"),c(g)):(e.consume(g),l=l||!G(g),g===92?m:u)}function m(g){return g===91||g===92||g===93?(e.consume(g),o++,u):u(g)}}function Da(e,t,i,n,r,a){let s;return o;function o(m){return e.enter(n),e.enter(r),e.consume(m),e.exit(r),s=m===40?41:m,l}function l(m){return m===s?(e.enter(r),e.consume(m),e.exit(r),e.exit(n),t):(e.enter(a),d(m))}function d(m){return m===s?(e.exit(a),l(s)):m===null?i(m):F(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),Y(e,d,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(m))}function c(m){return m===s||m===null||F(m)?(e.exit("chunkString"),d(m)):(e.consume(m),m===92?u:c)}function u(m){return m===s||m===92?(e.consume(m),c):c(m)}}function lt(e,t){let i;return n;function n(r){return F(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),i=!0,n):G(r)?Y(e,n,i?"linePrefix":"lineSuffix")(r):t(r)}}function Be(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var Fo={name:"definition",tokenize:Zh},Qh={tokenize:Jh,partial:!0};function Zh(e,t,i){let n=this,r;return a;function a(l){return e.enter("definition"),Ra.call(n,e,s,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(l)}function s(l){return r=Be(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),l===58?(e.enter("definitionMarker"),e.consume(l),e.exit("definitionMarker"),lt(e,_a(e,e.attempt(Qh,Y(e,o,"whitespace"),Y(e,o,"whitespace")),i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):i(l)}function o(l){return l===null||F(l)?(e.exit("definition"),n.parser.defined.includes(r)||n.parser.defined.push(r),t(l)):i(l)}}function Jh(e,t,i){return n;function n(s){return X(s)?lt(e,r)(s):i(s)}function r(s){return s===34||s===39||s===40?Da(e,Y(e,a,"whitespace"),i,"definitionTitle","definitionTitleMarker","definitionTitleString")(s):i(s)}function a(s){return s===null||F(s)?t(s):i(s)}}var _o={name:"hardBreakEscape",tokenize:Xh};function Xh(e,t,i){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),r}function r(a){return F(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):i(a)}}var Ro={name:"headingAtx",tokenize:tf,resolve:ef};function ef(e,t){let i=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),i-2>n&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&e[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[i][1].end},a={type:"chunkText",start:e[n][1].start,end:e[i][1].end,contentType:"text"},Oe(e,n,i-n+1,[["enter",r,t],["enter",a,t],["exit",a,t],["exit",r,t]])),e}function tf(e,t,i){let n=this,r=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(c)}function s(c){return c===35&&r++<6?(e.consume(c),s):c===null||X(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):o(c)):i(c)}function o(c){return c===35?(e.enter("atxHeadingSequence"),l(c)):c===null||F(c)?(e.exit("atxHeading"),t(c)):G(c)?Y(e,o,"whitespace")(c):(e.enter("atxHeadingText"),d(c))}function l(c){return c===35?(e.consume(c),l):(e.exit("atxHeadingSequence"),o(c))}function d(c){return c===null||c===35||X(c)?(e.exit("atxHeadingText"),o(c)):(e.consume(c),d)}}var qd=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Do=["pre","script","style","textarea"];var No={name:"htmlFlow",tokenize:af,resolveTo:rf,concrete:!0},nf={tokenize:sf,partial:!0};function rf(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function af(e,t,i){let n=this,r,a,s,o,l;return d;function d(k){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(k),c}function c(k){return k===33?(e.consume(k),u):k===47?(e.consume(k),h):k===63?(e.consume(k),r=3,n.interrupt?t:ue):Ue(k)?(e.consume(k),s=String.fromCharCode(k),a=!0,v):i(k)}function u(k){return k===45?(e.consume(k),r=2,m):k===91?(e.consume(k),r=5,s="CDATA[",o=0,g):Ue(k)?(e.consume(k),r=4,n.interrupt?t:ue):i(k)}function m(k){return k===45?(e.consume(k),n.interrupt?t:ue):i(k)}function g(k){return k===s.charCodeAt(o++)?(e.consume(k),o===s.length?n.interrupt?t:j:g):i(k)}function h(k){return Ue(k)?(e.consume(k),s=String.fromCharCode(k),v):i(k)}function v(k){return k===null||k===47||k===62||X(k)?k!==47&&a&&Do.includes(s.toLowerCase())?(r=1,n.interrupt?t(k):j(k)):qd.includes(s.toLowerCase())?(r=6,k===47?(e.consume(k),x):n.interrupt?t(k):j(k)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(k):a?S(k):w(k)):k===45||je(k)?(e.consume(k),s+=String.fromCharCode(k),v):i(k)}function x(k){return k===62?(e.consume(k),n.interrupt?t:j):i(k)}function w(k){return G(k)?(e.consume(k),w):D(k)}function S(k){return k===47?(e.consume(k),D):k===58||k===95||Ue(k)?(e.consume(k),E):G(k)?(e.consume(k),S):D(k)}function E(k){return k===45||k===46||k===58||k===95||je(k)?(e.consume(k),E):M(k)}function M(k){return k===61?(e.consume(k),B):G(k)?(e.consume(k),M):S(k)}function B(k){return k===null||k===60||k===61||k===62||k===96?i(k):k===34||k===39?(e.consume(k),l=k,L):G(k)?(e.consume(k),B):(l=null,_(k))}function L(k){return k===null||F(k)?i(k):k===l?(e.consume(k),q):(e.consume(k),L)}function _(k){return k===null||k===34||k===39||k===60||k===61||k===62||k===96||X(k)?M(k):(e.consume(k),_)}function q(k){return k===47||k===62||G(k)?S(k):i(k)}function D(k){return k===62?(e.consume(k),H):i(k)}function H(k){return G(k)?(e.consume(k),H):k===null||F(k)?j(k):i(k)}function j(k){return k===45&&r===2?(e.consume(k),re):k===60&&r===1?(e.consume(k),Q):k===62&&r===4?(e.consume(k),ae):k===63&&r===3?(e.consume(k),ue):k===93&&r===5?(e.consume(k),de):F(k)&&(r===6||r===7)?e.check(nf,ae,V)(k):k===null||F(k)?V(k):(e.consume(k),j)}function V(k){return e.exit("htmlFlowData"),R(k)}function R(k){return k===null?z(k):F(k)?e.attempt({tokenize:$,partial:!0},R,z)(k):(e.enter("htmlFlowData"),j(k))}function $(k,mi,He){return _e;function _e(Re){return k.enter("lineEnding"),k.consume(Re),k.exit("lineEnding"),ri}function ri(Re){return n.parser.lazy[n.now().line]?He(Re):mi(Re)}}function re(k){return k===45?(e.consume(k),ue):j(k)}function Q(k){return k===47?(e.consume(k),s="",ce):j(k)}function ce(k){return k===62&&Do.includes(s.toLowerCase())?(e.consume(k),ae):Ue(k)&&s.length<8?(e.consume(k),s+=String.fromCharCode(k),ce):j(k)}function de(k){return k===93?(e.consume(k),ue):j(k)}function ue(k){return k===62?(e.consume(k),ae):k===45&&r===2?(e.consume(k),ue):j(k)}function ae(k){return k===null||F(k)?(e.exit("htmlFlowData"),z(k)):(e.consume(k),ae)}function z(k){return e.exit("htmlFlow"),t(k)}}function sf(e,t,i){return n;function n(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(yi,t,i)}}var jo={name:"htmlText",tokenize:of};function of(e,t,i){let n=this,r,a,s,o;return l;function l(z){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(z),d}function d(z){return z===33?(e.consume(z),c):z===47?(e.consume(z),_):z===63?(e.consume(z),B):Ue(z)?(e.consume(z),H):i(z)}function c(z){return z===45?(e.consume(z),u):z===91?(e.consume(z),a="CDATA[",s=0,x):Ue(z)?(e.consume(z),M):i(z)}function u(z){return z===45?(e.consume(z),m):i(z)}function m(z){return z===null||z===62?i(z):z===45?(e.consume(z),g):h(z)}function g(z){return z===null||z===62?i(z):h(z)}function h(z){return z===null?i(z):z===45?(e.consume(z),v):F(z)?(o=h,de(z)):(e.consume(z),h)}function v(z){return z===45?(e.consume(z),ae):h(z)}function x(z){return z===a.charCodeAt(s++)?(e.consume(z),s===a.length?w:x):i(z)}function w(z){return z===null?i(z):z===93?(e.consume(z),S):F(z)?(o=w,de(z)):(e.consume(z),w)}function S(z){return z===93?(e.consume(z),E):w(z)}function E(z){return z===62?ae(z):z===93?(e.consume(z),E):w(z)}function M(z){return z===null||z===62?ae(z):F(z)?(o=M,de(z)):(e.consume(z),M)}function B(z){return z===null?i(z):z===63?(e.consume(z),L):F(z)?(o=B,de(z)):(e.consume(z),B)}function L(z){return z===62?ae(z):B(z)}function _(z){return Ue(z)?(e.consume(z),q):i(z)}function q(z){return z===45||je(z)?(e.consume(z),q):D(z)}function D(z){return F(z)?(o=D,de(z)):G(z)?(e.consume(z),D):ae(z)}function H(z){return z===45||je(z)?(e.consume(z),H):z===47||z===62||X(z)?j(z):i(z)}function j(z){return z===47?(e.consume(z),ae):z===58||z===95||Ue(z)?(e.consume(z),V):F(z)?(o=j,de(z)):G(z)?(e.consume(z),j):ae(z)}function V(z){return z===45||z===46||z===58||z===95||je(z)?(e.consume(z),V):R(z)}function R(z){return z===61?(e.consume(z),$):F(z)?(o=R,de(z)):G(z)?(e.consume(z),R):j(z)}function $(z){return z===null||z===60||z===61||z===62||z===96?i(z):z===34||z===39?(e.consume(z),r=z,re):F(z)?(o=$,de(z)):G(z)?(e.consume(z),$):(e.consume(z),r=void 0,ce)}function re(z){return z===r?(e.consume(z),Q):z===null?i(z):F(z)?(o=re,de(z)):(e.consume(z),re)}function Q(z){return z===62||z===47||X(z)?j(z):i(z)}function ce(z){return z===null||z===34||z===39||z===60||z===61||z===96?i(z):z===62||X(z)?j(z):(e.consume(z),ce)}function de(z){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(z),e.exit("lineEnding"),Y(e,ue,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ue(z){return e.enter("htmlTextData"),o(z)}function ae(z){return z===62?(e.consume(z),e.exit("htmlTextData"),e.exit("htmlText"),t):i(z)}}var ct={name:"labelEnd",tokenize:mf,resolveTo:pf,resolveAll:uf},lf={tokenize:gf},cf={tokenize:hf},df={tokenize:ff};function uf(e){let t=-1,i;for(;++t999||u===93&&!s||u===null||u===91||X(u))return i(u);if(u===93){e.exit("chunkString");let m=e.exit("gfmFootnoteCallString");return r.includes(Be(n.sliceSerialize(m)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):i(u)}return X(u)||(s=!0),a++,e.consume(u),u===92?c:d}function c(u){return u===91||u===92||u===93?(e.consume(u),a++,d):d(u)}}function Bf(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(h){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(h){return h===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",c):i(h)}function c(h){if(s>999||h===93&&!o||h===null||h===91||X(h))return i(h);if(h===93){e.exit("chunkString");let v=e.exit("gfmFootnoteDefinitionLabelString");return a=Be(n.sliceSerialize(v)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(h),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),m}return X(h)||(o=!0),s++,e.consume(h),h===92?u:c}function u(h){return h===91||h===92||h===93?(e.consume(h),s++,c):c(h)}function m(h){return h===58?(e.enter("definitionMarker"),e.consume(h),e.exit("definitionMarker"),r.includes(a)||r.push(a),Y(e,g,"gfmFootnoteDefinitionWhitespace")):i(h)}function g(h){return t(h)}}function Ff(e,t,i){return e.check(yi,t,e.attempt(Cf,t,i))}function _f(e){e.exit("gfmFootnoteDefinition")}function Rf(e,t,i){let n=this;return Y(e,r,"gfmFootnoteDefinitionIndent",4+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(a):i(a)}}var Df={tokenize:Nf},Ho={text:{[91]:Df}};function Nf(e,t,i){let n=this;return r;function r(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?i(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return X(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),s):i(l)}function s(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):i(l)}function o(l){return F(l)?t(l):G(l)?e.check({tokenize:jf},t,i)(l):i(l)}}function jf(e,t,i){return Y(e,n,"whitespace");function n(r){return r===null?i(r):t(r)}}var Id={}.hasOwnProperty;function ja(e){let t={},i=-1;for(;++i=d||c+1s))return;let _=t.events.length,q=_,D,H;for(;q--;)if(t.events[q][0]==="exit"&&t.events[q][1].type==="chunkFlow"){if(D){H=t.events[q][1].end;break}D=!0}for(w(n),L=_;LE;){let B=i[M];t.containerState=B[1],B[0].exit.call(t,e)}i.length=E}function S(){r.write([null]),a=void 0,r=void 0,t.containerState._closeFlow=void 0}}function Jf(e,t,i){return Y(e,e.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var Ud={tokenize:Xf};function Xf(e){let t=this,i=e.attempt(yi,n,e.attempt(this.parser.constructs.flowInitial,r,Y(e,e.attempt(this.parser.constructs.flow,r,e.attempt(Bo,r)),"linePrefix")));return i;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,i}}var Gd={resolveAll:Xd()},Qd=Jd("string"),Zd=Jd("text");function Jd(e){return{tokenize:t,resolveAll:Xd(e==="text"?ey:void 0)};function t(i){let n=this,r=this.parser.constructs[e],a=i.attempt(r,s,o);return s;function s(c){return d(c)?a(c):o(c)}function o(c){if(c===null){i.consume(c);return}return i.enter("data"),i.consume(c),l}function l(c){return d(c)?(i.exit("data"),a(c)):(i.consume(c),l)}function d(c){if(c===null)return!0;let u=r[c],m=-1;if(u)for(;++m-1&&(s[0]=s[0].slice(n)),a>0&&s.push(e[r].slice(0,a))),s}function ty(e,t){let i=-1,n=[],r;for(;++i"),c=Sf(e,i,l),d=zf(e,r,c,o,n);return a=Af(d,a,l),wf(d,r,a,o,n)}let s=kf(e,i);return xf(s,a)}function du(e,t=0){let i=3735928559^t,n=1103547991^t;for(let r=0,a;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),4294967296*(2097151&n)+(i>>>0)}function uu(e){return e=e.replaceAll("\\b","\b"),e=e.replaceAll("\\f","\f"),e=e.replaceAll("\\n",` +`),e=e.replaceAll("\\r","\r"),e=e.replaceAll("\\t"," "),e=e.replaceAll("\\v","\v"),e}function rr(e,t){if(t==0)return t;let i=t;for(;i>0&&e.charAt(i-1)!==` +`;)i--;return i}function pu(e,t,i,n){return n>e.length-1?e:e.slice(0,n)+e.slice(n,e.length).replace(t,i)}function Xi(e,t){let i=0;for(let n=0,r=e.length;n-1&&(i++,n=a)}return i}function cs(e){let t=typeof e;return t!="string"?t==="number":!isNaN(e)&&!isNaN(parseFloat(e))}function mu(e,t){let i=[],n=-1;for(;(n=t.indexOf(e,n+1))>=0;)i.push(n);return i}function Af(e,t,i){let n=t,r=t+1,a="",s=!1,o=0;for(;r"){s=!0;break}else if(a===` +`){if(o!==i)break;o=0,n=r}else a===">"&&o++;r++}return s?n:t}function Sf(e,t,i){let n=t,r=t-1,a="",s=!1,o=0;for(;r>=0;){if(a=e.charAt(r),a.trim()!==""&&a!==">"){s=!0;break}else if(a===` +`){if(o!==i)break;o=0,n=r}else a===">"&&o++;r--}return s?n:t}function ds(e){let t=wn(e),i=new Map,n="",r=[],a=[];for(let s of t){n=e.substring(s.startIndex,s.endIndex),r=n.split(` +`),r.splice(0,2);for(let o of r){if(a=o.split("|"),a.length!==4){Yi(A("options.custom-auto-correct.custom-row-parse-warning").replace("{ROW}",o));continue}i.set(a[1].trim().toLowerCase(),a[2].trim())}}return i}function Fe(e,t,i,n){let r=e.length,a=0,s;if(t<0?t=-t>r?0:r+t:t=t>r?r:t,i=i>0?i:0,n.length<1e4)s=Array.from(n),s.unshift(t,i),e.splice(...s);else for(i&&e.splice(t,i);a0?(Fe(e,e.length,0,t),e):t}var Lf=et(/\p{P}/u),ti=et(/[A-Za-z]/),$e=et(/[\dA-Za-z]/),gu=et(/[#-'*+\--9=?A-Z^-~]/);function ar(e){return e!==null&&(e<32||e===127)}var sr=et(/\d/),hu=et(/[\dA-Fa-f]/),cl=et(/[!-/:-@[-`{-~]/);function q(e){return e!==null&&e<-2}function te(e){return e!==null&&(e<0||e===32)}function V(e){return e===-2||e===-1||e===32}function fu(e){return cl(e)||Lf(e)}var yu=et(/\s/);function et(e){return t;function t(i){return i!==null&&i>-1&&e.test(String.fromCharCode(i))}}function dl(e){if(e===null||te(e)||yu(e))return 1;if(fu(e))return 2}function kn(e,t,i){let n=[],r=-1;for(;++r1&&e[i][1].end.offset-e[i][1].start.offset>1?2:1;let u=Object.assign({},e[n][1].end),m=Object.assign({},e[i][1].start);bu(u,-l),bu(m,l),s={type:l>1?"strongSequence":"emphasisSequence",start:u,end:Object.assign({},e[n][1].end)},o={type:l>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[i][1].start),end:m},a={type:l>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[i][1].start)},r={type:l>1?"strong":"emphasis",start:Object.assign({},s.start),end:Object.assign({},o.end)},e[n][1].end=Object.assign({},s.start),e[i][1].start=Object.assign({},o.end),c=[],e[n][1].end.offset-e[n][1].start.offset&&(c=Ve(c,[["enter",e[n][1],t],["exit",e[n][1],t]])),c=Ve(c,[["enter",r,t],["enter",s,t],["exit",s,t],["enter",a,t]]),c=Ve(c,kn(t.parser.constructs.insideSpan.null,e.slice(n+1,i),t)),c=Ve(c,[["exit",a,t],["enter",o,t],["exit",o,t],["exit",r,t]]),e[i][1].end.offset-e[i][1].start.offset?(d=2,c=Ve(c,[["enter",e[i][1],t],["exit",e[i][1],t]])):d=0,Fe(e,n-1,i-n+3,c),i=n+c.length-d-2;break}}for(i=-1;++i0&&V(S)?j(e,k,"linePrefix",a+1)(S):k(S)}function k(S){return S===null||q(S)?e.check(xu,b,E)(S):(e.enter("codeFlowValue"),L(S))}function L(S){return S===null||q(S)?(e.exit("codeFlowValue"),k(S)):(e.consume(S),L)}function E(S){return e.exit("codeFenced"),t(S)}function O(S,I,K){let B=0;return D;function D(P){return S.enter("lineEnding"),S.consume(P),S.exit("lineEnding"),U}function U(P){return S.enter("codeFencedFence"),V(P)?j(S,$,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(P):$(P)}function $(P){return P===o?(S.enter("codeFencedFenceSequence"),F(P)):K(P)}function F(P){return P===o?(B++,S.consume(P),F):B>=s?(S.exit("codeFencedFenceSequence"),V(P)?j(S,Y,"whitespace")(P):Y(P)):K(P)}function Y(P){return P===null||q(P)?(S.exit("codeFencedFence"),I(P)):K(P)}}}function Df(e,t,i){let n=this;return r;function r(s){return s===null?i(s):(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),a)}function a(s){return n.parser.lazy[n.now().line]?i(s):t(s)}}var lr={name:"codeIndented",tokenize:_f},Kf={tokenize:Nf,partial:!0};function _f(e,t,i){let n=this;return r;function r(c){return e.enter("codeIndented"),j(e,a,"linePrefix",5)(c)}function a(c){let d=n.events[n.events.length-1];return d&&d[1].type==="linePrefix"&&d[2].sliceSerialize(d[1],!0).length>=4?s(c):i(c)}function s(c){return c===null?l(c):q(c)?e.attempt(Kf,s,l)(c):(e.enter("codeFlowValue"),o(c))}function o(c){return c===null||q(c)?(e.exit("codeFlowValue"),s(c)):(e.consume(c),o)}function l(c){return e.exit("codeIndented"),t(c)}}function Nf(e,t,i){let n=this;return r;function r(s){return n.parser.lazy[n.now().line]?i(s):q(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),r):j(e,a,"linePrefix",5)(s)}function a(s){let o=n.events[n.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?t(s):q(s)?r(s):i(s)}}var pl={name:"codeText",tokenize:Pf,resolve:jf,previous:Yf};function jf(e){let t=e.length-4,i=3,n,r;if((e[i][1].type==="lineEnding"||e[i][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=i;++n=4?t(s):e.interrupt(n.parser.constructs.flow,i,t)(s)}}function ys(e,t,i,n,r,a,s,o,l){let c=l||Number.POSITIVE_INFINITY,d=0;return u;function u(x){return x===60?(e.enter(n),e.enter(r),e.enter(a),e.consume(x),e.exit(a),m):x===null||x===32||x===41||ar(x)?i(x):(e.enter(n),e.enter(s),e.enter(o),e.enter("chunkString",{contentType:"string"}),b(x))}function m(x){return x===62?(e.enter(a),e.consume(x),e.exit(a),e.exit(r),e.exit(n),t):(e.enter(o),e.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===62?(e.exit("chunkString"),e.exit(o),m(x)):x===null||x===60||q(x)?i(x):(e.consume(x),x===92?g:p)}function g(x){return x===60||x===62||x===92?(e.consume(x),p):p(x)}function b(x){return!d&&(x===null||x===41||te(x))?(e.exit("chunkString"),e.exit(o),e.exit(s),e.exit(n),t(x)):d999||p===null||p===91||p===93&&!l||p===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs?i(p):p===93?(e.exit(a),e.enter(r),e.consume(p),e.exit(r),e.exit(n),t):q(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),d):(e.enter("chunkString",{contentType:"string"}),u(p))}function u(p){return p===null||p===91||p===93||q(p)||o++>999?(e.exit("chunkString"),d(p)):(e.consume(p),l||(l=!V(p)),p===92?m:u)}function m(p){return p===91||p===92||p===93?(e.consume(p),o++,u):u(p)}}function vs(e,t,i,n,r,a){let s;return o;function o(m){return m===34||m===39||m===40?(e.enter(n),e.enter(r),e.consume(m),e.exit(r),s=m===40?41:m,l):i(m)}function l(m){return m===s?(e.enter(r),e.consume(m),e.exit(r),e.exit(n),t):(e.enter(a),c(m))}function c(m){return m===s?(e.exit(a),l(s)):m===null?i(m):q(m)?(e.enter("lineEnding"),e.consume(m),e.exit("lineEnding"),j(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),d(m))}function d(m){return m===s||m===null||q(m)?(e.exit("chunkString"),c(m)):(e.consume(m),m===92?u:d)}function u(m){return m===s||m===92?(e.consume(m),d):d(m)}}function Lt(e,t){let i;return n;function n(r){return q(r)?(e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),i=!0,n):V(r)?j(e,n,i?"linePrefix":"lineSuffix")(r):t(r)}}function Ye(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var gl={name:"definition",tokenize:Qf},Gf={tokenize:Zf,partial:!0};function Qf(e,t,i){let n=this,r;return a;function a(p){return e.enter("definition"),s(p)}function s(p){return bs.call(n,e,o,i,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function o(p){return r=Ye(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),l):i(p)}function l(p){return te(p)?Lt(e,c)(p):c(p)}function c(p){return ys(e,d,i,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function d(p){return e.attempt(Gf,u,u)(p)}function u(p){return V(p)?j(e,m,"whitespace")(p):m(p)}function m(p){return p===null||q(p)?(e.exit("definition"),n.parser.defined.push(r),t(p)):i(p)}}function Zf(e,t,i){return n;function n(o){return te(o)?Lt(e,r)(o):i(o)}function r(o){return vs(e,a,i,"definitionTitle","definitionTitleMarker","definitionTitleString")(o)}function a(o){return V(o)?j(e,s,"whitespace")(o):s(o)}function s(o){return o===null||q(o)?t(o):i(o)}}var hl={name:"hardBreakEscape",tokenize:Jf};function Jf(e,t,i){return n;function n(a){return e.enter("hardBreakEscape"),e.consume(a),r}function r(a){return q(a)?(e.exit("hardBreakEscape"),t(a)):i(a)}}var fl={name:"headingAtx",tokenize:ey,resolve:Xf};function Xf(e,t){let i=e.length-2,n=3,r,a;return e[n][1].type==="whitespace"&&(n+=2),i-2>n&&e[i][1].type==="whitespace"&&(i-=2),e[i][1].type==="atxHeadingSequence"&&(n===i-1||i-4>n&&e[i-2][1].type==="whitespace")&&(i-=n+1===i?2:4),i>n&&(r={type:"atxHeadingText",start:e[n][1].start,end:e[i][1].end},a={type:"chunkText",start:e[n][1].start,end:e[i][1].end,contentType:"text"},Fe(e,n,i-n+1,[["enter",r,t],["enter",a,t],["exit",a,t],["exit",r,t]])),e}function ey(e,t,i){let n=0;return r;function r(d){return e.enter("atxHeading"),a(d)}function a(d){return e.enter("atxHeadingSequence"),s(d)}function s(d){return d===35&&n++<6?(e.consume(d),s):d===null||te(d)?(e.exit("atxHeadingSequence"),o(d)):i(d)}function o(d){return d===35?(e.enter("atxHeadingSequence"),l(d)):d===null||q(d)?(e.exit("atxHeading"),t(d)):V(d)?j(e,o,"whitespace")(d):(e.enter("atxHeadingText"),c(d))}function l(d){return d===35?(e.consume(d),l):(e.exit("atxHeadingSequence"),o(d))}function c(d){return d===null||d===35||te(d)?(e.exit("atxHeadingText"),o(d)):(e.consume(d),c)}}var wu=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],yl=["pre","script","style","textarea"];var bl={name:"htmlFlow",tokenize:ry,resolveTo:ny,concrete:!0},iy={tokenize:sy,partial:!0},ty={tokenize:ay,partial:!0};function ny(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function ry(e,t,i){let n=this,r,a,s,o,l;return c;function c(w){return d(w)}function d(w){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(w),u}function u(w){return w===33?(e.consume(w),m):w===47?(e.consume(w),a=!0,b):w===63?(e.consume(w),r=3,n.interrupt?t:v):ti(w)?(e.consume(w),s=String.fromCharCode(w),f):i(w)}function m(w){return w===45?(e.consume(w),r=2,p):w===91?(e.consume(w),r=5,o=0,g):ti(w)?(e.consume(w),r=4,n.interrupt?t:v):i(w)}function p(w){return w===45?(e.consume(w),n.interrupt?t:v):i(w)}function g(w){let we="CDATA[";return w===we.charCodeAt(o++)?(e.consume(w),o===we.length?n.interrupt?t:$:g):i(w)}function b(w){return ti(w)?(e.consume(w),s=String.fromCharCode(w),f):i(w)}function f(w){if(w===null||w===47||w===62||te(w)){let we=w===47,_e=s.toLowerCase();return!we&&!a&&yl.includes(_e)?(r=1,n.interrupt?t(w):$(w)):wu.includes(s.toLowerCase())?(r=6,we?(e.consume(w),x):n.interrupt?t(w):$(w)):(r=7,n.interrupt&&!n.parser.lazy[n.now().line]?i(w):a?k(w):L(w))}return w===45||$e(w)?(e.consume(w),s+=String.fromCharCode(w),f):i(w)}function x(w){return w===62?(e.consume(w),n.interrupt?t:$):i(w)}function k(w){return V(w)?(e.consume(w),k):D(w)}function L(w){return w===47?(e.consume(w),D):w===58||w===95||ti(w)?(e.consume(w),E):V(w)?(e.consume(w),L):D(w)}function E(w){return w===45||w===46||w===58||w===95||$e(w)?(e.consume(w),E):O(w)}function O(w){return w===61?(e.consume(w),S):V(w)?(e.consume(w),O):L(w)}function S(w){return w===null||w===60||w===61||w===62||w===96?i(w):w===34||w===39?(e.consume(w),l=w,I):V(w)?(e.consume(w),S):K(w)}function I(w){return w===l?(e.consume(w),l=null,B):w===null||q(w)?i(w):(e.consume(w),I)}function K(w){return w===null||w===34||w===39||w===47||w===60||w===61||w===62||w===96||te(w)?O(w):(e.consume(w),K)}function B(w){return w===47||w===62||V(w)?L(w):i(w)}function D(w){return w===62?(e.consume(w),U):i(w)}function U(w){return w===null||q(w)?$(w):V(w)?(e.consume(w),U):i(w)}function $(w){return w===45&&r===2?(e.consume(w),Z):w===60&&r===1?(e.consume(w),J):w===62&&r===4?(e.consume(w),Ke):w===63&&r===3?(e.consume(w),v):w===93&&r===5?(e.consume(w),Oe):q(w)&&(r===6||r===7)?(e.exit("htmlFlowData"),e.check(iy,Ue,F)(w)):w===null||q(w)?(e.exit("htmlFlowData"),F(w)):(e.consume(w),$)}function F(w){return e.check(ty,Y,Ue)(w)}function Y(w){return e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),P}function P(w){return w===null||q(w)?F(w):(e.enter("htmlFlowData"),$(w))}function Z(w){return w===45?(e.consume(w),v):$(w)}function J(w){return w===47?(e.consume(w),s="",De):$(w)}function De(w){if(w===62){let we=s.toLowerCase();return yl.includes(we)?(e.consume(w),Ke):$(w)}return ti(w)&&s.length<8?(e.consume(w),s+=String.fromCharCode(w),De):$(w)}function Oe(w){return w===93?(e.consume(w),v):$(w)}function v(w){return w===62?(e.consume(w),Ke):w===45&&r===2?(e.consume(w),v):$(w)}function Ke(w){return w===null||q(w)?(e.exit("htmlFlowData"),Ue(w)):(e.consume(w),Ke)}function Ue(w){return e.exit("htmlFlow"),t(w)}}function ay(e,t,i){let n=this;return r;function r(s){return q(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),a):i(s)}function a(s){return n.parser.lazy[n.now().line]?i(s):t(s)}}function sy(e,t,i){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),e.attempt(Ei,t,i)}}var vl={name:"htmlText",tokenize:oy};function oy(e,t,i){let n=this,r,a,s;return o;function o(v){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(v),l}function l(v){return v===33?(e.consume(v),c):v===47?(e.consume(v),O):v===63?(e.consume(v),L):ti(v)?(e.consume(v),K):i(v)}function c(v){return v===45?(e.consume(v),d):v===91?(e.consume(v),a=0,g):ti(v)?(e.consume(v),k):i(v)}function d(v){return v===45?(e.consume(v),p):i(v)}function u(v){return v===null?i(v):v===45?(e.consume(v),m):q(v)?(s=u,J(v)):(e.consume(v),u)}function m(v){return v===45?(e.consume(v),p):u(v)}function p(v){return v===62?Z(v):v===45?m(v):u(v)}function g(v){let Ke="CDATA[";return v===Ke.charCodeAt(a++)?(e.consume(v),a===Ke.length?b:g):i(v)}function b(v){return v===null?i(v):v===93?(e.consume(v),f):q(v)?(s=b,J(v)):(e.consume(v),b)}function f(v){return v===93?(e.consume(v),x):b(v)}function x(v){return v===62?Z(v):v===93?(e.consume(v),x):b(v)}function k(v){return v===null||v===62?Z(v):q(v)?(s=k,J(v)):(e.consume(v),k)}function L(v){return v===null?i(v):v===63?(e.consume(v),E):q(v)?(s=L,J(v)):(e.consume(v),L)}function E(v){return v===62?Z(v):L(v)}function O(v){return ti(v)?(e.consume(v),S):i(v)}function S(v){return v===45||$e(v)?(e.consume(v),S):I(v)}function I(v){return q(v)?(s=I,J(v)):V(v)?(e.consume(v),I):Z(v)}function K(v){return v===45||$e(v)?(e.consume(v),K):v===47||v===62||te(v)?B(v):i(v)}function B(v){return v===47?(e.consume(v),Z):v===58||v===95||ti(v)?(e.consume(v),D):q(v)?(s=B,J(v)):V(v)?(e.consume(v),B):Z(v)}function D(v){return v===45||v===46||v===58||v===95||$e(v)?(e.consume(v),D):U(v)}function U(v){return v===61?(e.consume(v),$):q(v)?(s=U,J(v)):V(v)?(e.consume(v),U):B(v)}function $(v){return v===null||v===60||v===61||v===62||v===96?i(v):v===34||v===39?(e.consume(v),r=v,F):q(v)?(s=$,J(v)):V(v)?(e.consume(v),$):(e.consume(v),Y)}function F(v){return v===r?(e.consume(v),r=void 0,P):v===null?i(v):q(v)?(s=F,J(v)):(e.consume(v),F)}function Y(v){return v===null||v===34||v===39||v===60||v===61||v===96?i(v):v===47||v===62||te(v)?B(v):(e.consume(v),Y)}function P(v){return v===47||v===62||te(v)?B(v):i(v)}function Z(v){return v===62?(e.consume(v),e.exit("htmlTextData"),e.exit("htmlText"),t):i(v)}function J(v){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(v),e.exit("lineEnding"),De}function De(v){return V(v)?j(e,Oe,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(v):Oe(v)}function Oe(v){return e.enter("htmlTextData"),s(v)}}var Tt={name:"labelEnd",tokenize:my,resolveTo:py,resolveAll:uy},ly={tokenize:gy},cy={tokenize:hy},dy={tokenize:fy};function uy(e){let t=-1;for(;++t=3&&(c===null||q(c))?(e.exit("thematicBreak"),t(c)):i(c)}function l(c){return c===r?(e.consume(c),n++,l):(e.exit("thematicBreakSequence"),V(c)?j(e,o,"whitespace")(c):o(c))}}var Pe={name:"list",tokenize:zy,continuation:{tokenize:Ay},exit:Ly},wy={tokenize:Ty,partial:!0},ky={tokenize:Sy,partial:!0};function zy(e,t,i){let n=this,r=n.events[n.events.length-1],a=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,s=0;return o;function o(p){let g=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(g==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:sr(p)){if(n.containerState.type||(n.containerState.type=g,e.enter(g,{_container:!0})),g==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(Et,i,c)(p):c(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),l(p)}return i(p)}function l(p){return sr(p)&&++s<10?(e.consume(p),l):(!n.interrupt||s<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):i(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(Ei,n.interrupt?i:d,e.attempt(wy,m,u))}function d(p){return n.containerState.initialBlankLine=!0,a++,m(p)}function u(p){return V(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),m):i(p)}function m(p){return n.containerState.size=a+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function Ay(e,t,i){let n=this;return n.containerState._closeFlow=void 0,e.check(Ei,r,a);function r(o){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,j(e,t,"listItemIndent",n.containerState.size+1)(o)}function a(o){return n.containerState.furtherBlankLines||!V(o)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,s(o)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt(ky,t,s)(o))}function s(o){return n.containerState._closeFlow=!0,n.interrupt=void 0,j(e,e.attempt(Pe,t,i),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function Sy(e,t,i){let n=this;return j(e,r,"listItemIndent",n.containerState.size+1);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===n.containerState.size?t(a):i(a)}}function Ly(e){e.exit(this.containerState.type)}function Ty(e,t,i){let n=this;return j(e,r,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function r(a){let s=n.events[n.events.length-1];return!V(a)&&s&&s[1].type==="listItemPrefixWhitespace"?t(a):i(a)}}var xs={name:"setextUnderline",tokenize:Cy,resolveTo:Ey};function Ey(e,t){let i=e.length,n,r,a;for(;i--;)if(e[i][0]==="enter"){if(e[i][1].type==="content"){n=i;break}e[i][1].type==="paragraph"&&(r=i)}else e[i][1].type==="content"&&e.splice(i,1),!a&&e[i][1].type==="definition"&&(a=i);let s={type:"setextHeading",start:Object.assign({},e[r][1].start),end:Object.assign({},e[e.length-1][1].end)};return e[r][1].type="setextHeadingText",a?(e.splice(r,0,["enter",s,t]),e.splice(a+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[a][1].end)):e[n][1]=s,e.push(["exit",s,t]),e}function Cy(e,t,i){let n=this,r;return a;function a(c){let d=n.events.length,u;for(;d--;)if(n.events[d][1].type!=="lineEnding"&&n.events[d][1].type!=="linePrefix"&&n.events[d][1].type!=="content"){u=n.events[d][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||u)?(e.enter("setextHeadingLine"),r=c,s(c)):i(c)}function s(c){return e.enter("setextHeadingLineSequence"),o(c)}function o(c){return c===r?(e.consume(c),o):(e.exit("setextHeadingLineSequence"),V(c)?j(e,l,"lineSuffix")(c):l(c))}function l(c){return c===null||q(c)?(e.exit("setextHeadingLine"),t(c)):i(c)}}var Oy={tokenize:Dy,partial:!0};function kl(){return{document:{91:{tokenize:By,continuation:{tokenize:Fy},exit:Ry}},text:{91:{tokenize:Iy},93:{add:"after",tokenize:My,resolveTo:qy}}}}function My(e,t,i){let n=this,r=n.events.length,a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),s;for(;r--;){let l=n.events[r][1];if(l.type==="labelImage"){s=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return o;function o(l){if(!s||!s._balanced)return i(l);let c=Ye(n.sliceSerialize({start:s.end,end:n.now()}));return c.codePointAt(0)!==94||!a.includes(c.slice(1))?i(l):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(l),e.exit("gfmFootnoteCallLabelMarker"),t(l))}}function qy(e,t){let i=e.length,n;for(;i--;)if(e[i][1].type==="labelImage"&&e[i][0]==="enter"){n=e[i][1];break}e[i+1][1].type="data",e[i+3][1].type="gfmFootnoteCallLabelMarker";let r={type:"gfmFootnoteCall",start:Object.assign({},e[i+3][1].start),end:Object.assign({},e[e.length-1][1].end)},a={type:"gfmFootnoteCallMarker",start:Object.assign({},e[i+3][1].end),end:Object.assign({},e[i+3][1].end)};a.end.column++,a.end.offset++,a.end._bufferIndex++;let s={type:"gfmFootnoteCallString",start:Object.assign({},a.end),end:Object.assign({},e[e.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},l=[e[i+1],e[i+2],["enter",r,t],e[i+3],e[i+4],["enter",a,t],["exit",a,t],["enter",s,t],["enter",o,t],["exit",o,t],["exit",s,t],e[e.length-2],e[e.length-1],["exit",r,t]];return e.splice(i,e.length-i+1,...l),e}function Iy(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a=0,s;return o;function o(u){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),l}function l(u){return u!==94?i(u):(e.enter("gfmFootnoteCallMarker"),e.consume(u),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",c)}function c(u){if(a>999||u===93&&!s||u===null||u===91||te(u))return i(u);if(u===93){e.exit("chunkString");let m=e.exit("gfmFootnoteCallString");return r.includes(Ye(n.sliceSerialize(m)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(u),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):i(u)}return te(u)||(s=!0),a++,e.consume(u),u===92?d:c}function d(u){return u===91||u===92||u===93?(e.consume(u),a++,c):c(u)}}function By(e,t,i){let n=this,r=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]),a,s=0,o;return l;function l(g){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(g),e.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(g){return g===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(g),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",d):i(g)}function d(g){if(s>999||g===93&&!o||g===null||g===91||te(g))return i(g);if(g===93){e.exit("chunkString");let b=e.exit("gfmFootnoteDefinitionLabelString");return a=Ye(n.sliceSerialize(b)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(g),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),m}return te(g)||(o=!0),s++,e.consume(g),g===92?u:d}function u(g){return g===91||g===92||g===93?(e.consume(g),s++,d):d(g)}function m(g){return g===58?(e.enter("definitionMarker"),e.consume(g),e.exit("definitionMarker"),r.includes(a)||r.push(a),j(e,p,"gfmFootnoteDefinitionWhitespace")):i(g)}function p(g){return t(g)}}function Fy(e,t,i){return e.check(Ei,t,e.attempt(Oy,t,i))}function Ry(e){e.exit("gfmFootnoteDefinition")}function Dy(e,t,i){let n=this;return j(e,r,"gfmFootnoteDefinitionIndent",5);function r(a){let s=n.events[n.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?t(a):i(a)}}var Ky={tokenize:_y};function zl(){return{text:{91:Ky}}}function _y(e,t,i){let n=this;return r;function r(l){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?i(l):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),a)}function a(l){return te(l)?(e.enter("taskListCheckValueUnchecked"),e.consume(l),e.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(e.enter("taskListCheckValueChecked"),e.consume(l),e.exit("taskListCheckValueChecked"),s):i(l)}function s(l){return l===93?(e.enter("taskListCheckMarker"),e.consume(l),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),o):i(l)}function o(l){return q(l)?t(l):V(l)?e.check({tokenize:Ny},t,i)(l):i(l)}}function Ny(e,t,i){return j(e,n,"whitespace");function n(r){return r===null?i(r):t(r)}}var ku={}.hasOwnProperty;function ws(e){let t={},i=-1;for(;++i13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"\uFFFD":String.fromCodePoint(i)}var Eu={tokenize:Gy};function Gy(e){let t=e.attempt(this.parser.constructs.contentInitial,n,r),i;return t;function n(o){if(o===null){e.consume(o);return}return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),j(e,t,"linePrefix")}function r(o){return e.enter("paragraph"),a(o)}function a(o){let l=e.enter("chunkText",{contentType:"text",previous:i});return i&&(i.next=l),i=l,s(o)}function s(o){if(o===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(o);return}return q(o)?(e.consume(o),e.exit("chunkText"),a):(e.consume(o),s)}}var Ou={tokenize:Qy},Cu={tokenize:Zy};function Qy(e){let t=this,i=[],n=0,r,a,s;return o;function o(L){if(ns))return;let I=t.events.length,K=I,B,D;for(;K--;)if(t.events[K][0]==="exit"&&t.events[K][1].type==="chunkFlow"){if(B){D=t.events[K][1].end;break}B=!0}for(x(n),S=I;SL;){let O=i[E];t.containerState=O[1],O[0].exit.call(t,e)}i.length=L}function k(){r.write([null]),a=void 0,r=void 0,t.containerState._closeFlow=void 0}}function Zy(e,t,i){return j(e,e.attempt(this.parser.constructs.document,t,i),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}var Mu={tokenize:Jy};function Jy(e){let t=this,i=e.attempt(Ei,n,e.attempt(this.parser.constructs.flowInitial,r,j(e,e.attempt(this.parser.constructs.flow,r,e.attempt(ml,r)),"linePrefix")));return i;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,i}function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,i}}var qu={resolveAll:Ru()},Iu=Fu("string"),Bu=Fu("text");function Fu(e){return{tokenize:t,resolveAll:Ru(e==="text"?Xy:void 0)};function t(i){let n=this,r=this.parser.constructs[e],a=i.attempt(r,s,o);return s;function s(d){return c(d)?a(d):o(d)}function o(d){if(d===null){i.consume(d);return}return i.enter("data"),i.consume(d),l}function l(d){return c(d)?(i.exit("data"),a(d)):(i.consume(d),l)}function c(d){if(d===null)return!0;let u=r[d],m=-1;if(u)for(;++m-1){let o=s[0];typeof o=="string"?s[0]=o.slice(n):s.shift()}a>0&&s.push(e[r].slice(0,a))}return s}function ib(e,t){let i=-1,n=[],r;for(;++idy,contentInitial:()=>ry,disable:()=>uy,document:()=>ny,flow:()=>sy,flowInitial:()=>ay,insideSpan:()=>cy,string:()=>oy,text:()=>ly});var ny={[42]:Fe,[43]:Fe,[45]:Fe,[48]:Fe,[49]:Fe,[50]:Fe,[51]:Fe,[52]:Fe,[53]:Fe,[54]:Fe,[55]:Fe,[56]:Fe,[57]:Fe,[62]:Ma},ry={[91]:Fo},ay={[-2]:_n,[-1]:_n,[32]:_n},sy={[35]:Ro,[42]:dt,[45]:[Na,dt],[60]:No,[61]:Na,[95]:dt,[96]:Ba,[126]:Ba},oy={[38]:Ia,[92]:qa},ly={[-5]:Rn,[-4]:Rn,[-3]:Rn,[33]:Ko,[38]:Ia,[42]:Fn,[60]:[qo,jo],[91]:Yo,[92]:[_o,qa],[93]:ct,[95]:Fn,[96]:Io},cy={null:[Fn,Gd]},dy={null:[42,95]},uy={null:[]};function iu(e={}){let t=ja([Uo].concat(e.extensions||[])),i={defined:[],lazy:{},constructs:t,content:n($d),document:n(Vd),flow:n(Ud),string:n(Qd),text:n(Zd)};return i;function n(r){return a;function a(s){return eu(i,r,s)}}}var tu=/[\0\t\n\r]/g;function nu(){let e=1,t="",i=!0,n;return r;function r(a,s,o){let l=[],d,c,u,m,g;for(a=t+a.toString(s),u=0,t="",i&&(a.charCodeAt(0)===65279&&u++,i=void 0);u13&&i<32||i>126&&i<160||i>55295&&i<57344||i>64975&&i<65008||(i&65535)===65535||(i&65535)===65534||i>1114111?"\uFFFD":String.fromCharCode(i)}var py=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Ya(e){return e.replace(py,my)}function my(e,t,i){if(t)return t;if(i.charCodeAt(0)===35){let r=i.charCodeAt(1),a=r===120||r===88;return Ka(i.slice(a?2:1),a?16:10)}return Gt(i)||e}function Qt(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?au(e.position):"start"in e||"end"in e?au(e):"line"in e||"column"in e?Go(e):""}function Go(e){return su(e&&e.line)+":"+su(e&&e.column)}function au(e){return Go(e&&e.start)+"-"+Go(e&&e.end)}function su(e){return e&&typeof e=="number"?e:1}var lu={}.hasOwnProperty,Qo=function(e,t,i){return typeof t!="string"&&(i=t,t=void 0),gy(i)(ru(iu(i).document().write(nu()(e,t,!0))))};function gy(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:o(hi),autolinkProtocol:j,autolinkEmail:j,atxHeading:o(bn),blockQuote:o(gi),characterEscape:j,characterReference:j,codeFenced:o(Ti),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:o(Ti,l),codeText:o(Kt,l),codeTextData:j,data:j,codeFlowValue:j,definition:o(eo),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:o(io),hardBreakEscape:o(vn),hardBreakTrailing:o(vn),htmlFlow:o(ra,l),htmlFlowData:j,htmlText:o(ra,l),htmlTextData:j,image:o(to),label:l,link:o(hi),listItem:o(aa),listItemValue:h,listOrdered:o(it,g),listUnordered:o(it),paragraph:o(sa),reference:_e,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:o(bn),strong:o(xn),thematicBreak:o(la)},exit:{atxHeading:c(),atxHeadingSequence:_,autolink:c(),autolinkEmail:ai,autolinkProtocol:Li,blockQuote:c(),characterEscapeValue:V,characterReferenceMarkerHexadecimal:Re,characterReferenceMarkerNumeric:Re,characterReferenceValue:se,codeFenced:c(S),codeFencedFence:w,codeFencedFenceInfo:v,codeFencedFenceMeta:x,codeFlowValue:V,codeIndented:c(E),codeText:c(ce),codeTextData:V,data:V,definition:c(),definitionDestinationString:L,definitionLabelString:M,definitionTitleString:B,emphasis:c(),hardBreakEscape:c($),hardBreakTrailing:c($),htmlFlow:c(re),htmlFlowData:V,htmlText:c(Q),htmlTextData:V,image:c(ue),label:z,labelText:ae,lineEnding:R,link:c(de),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:ri,resourceDestinationString:k,resourceTitleString:mi,resource:He,setextHeading:c(H),setextHeadingLineSequence:D,setextHeadingText:q,strong:c(),thematicBreak:c()}};cu(t,(e||{}).mdastExtensions||[]);let i={};return n;function n(O){let I={type:"root",children:[]},P={stack:[I],tokenStack:[],config:t,enter:d,exit:u,buffer:l,resume:m,setData:a,getData:s},Z=[],J=-1;for(;++J0){let si=P.tokenStack[P.tokenStack.length-1];(si[1]||ou).call(P,void 0,si[0])}for(I.position={start:Yi(O.length>0?O[0][1].start:{line:1,column:1,offset:0}),end:Yi(O.length>0?O[O.length-2][1].end:{line:1,column:1,offset:0})},J=-1;++J0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=t.maxSize,this.maxAge=t.maxAge||Number.POSITIVE_INFINITY,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(t){if(typeof this.onEviction=="function")for(let[i,n]of t)this.onEviction(i,n.value)}_deleteIfExpired(t,i){return typeof i.expiry=="number"&&i.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(t,i.value),this.delete(t)):!1}_getOrDeleteIfExpired(t,i){if(this._deleteIfExpired(t,i)===!1)return i.value}_getItemValue(t,i){return i.expiry?this._getOrDeleteIfExpired(t,i):i.value}_peek(t,i){let n=i.get(t);return this._getItemValue(t,n)}_set(t,i){this.cache.set(t,i),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(t,i){this.oldCache.delete(t),this._set(t,i)}*_entriesAscending(){for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield t)}for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield t)}}get(t){if(this.cache.has(t)){let i=this.cache.get(t);return this._getItemValue(t,i)}if(this.oldCache.has(t)){let i=this.oldCache.get(t);if(this._deleteIfExpired(t,i)===!1)return this._moveToRecent(t,i),i.value}}set(t,i,{maxAge:n=this.maxAge}={}){let r=typeof n=="number"&&n!==Number.POSITIVE_INFINITY?Date.now()+n:void 0;this.cache.has(t)?this.cache.set(t,{value:i,expiry:r}):this._set(t,{value:i,expiry:r})}has(t){return this.cache.has(t)?!this._deleteIfExpired(t,this.cache.get(t)):this.oldCache.has(t)?!this._deleteIfExpired(t,this.oldCache.get(t)):!1}peek(t){if(this.cache.has(t))return this._peek(t,this.cache);if(this.oldCache.has(t))return this._peek(t,this.oldCache)}delete(t){let i=this.cache.delete(t);return i&&this._size--,this.oldCache.delete(t)||i}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");let i=[...this._entriesAscending()],n=i.length-t;n<0?(this.cache=new Map(i),this.oldCache=new Map,this._size=i.length):(n>0&&this._emitEvictions(i.slice(0,n)),this.oldCache=new Map(i.slice(n)),this.cache=new Map,this._size=0),this.maxSize=t}*keys(){for(let[t]of this)yield t}*values(){for(let[,t]of this)yield t}*[Symbol.iterator](){for(let t of this.cache){let[i,n]=t;this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}for(let t of this.oldCache){let[i,n]=t;this.cache.has(i)||this._deleteIfExpired(i,n)===!1&&(yield[i,n.value])}}*entriesDescending(){let t=[...this.cache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}t=[...this.oldCache];for(let i=t.length-1;i>=0;--i){let n=t[i],[r,a]=n;this.cache.has(r)||this._deleteIfExpired(r,a)===!1&&(yield[r,a.value])}}*entriesAscending(){for(let[t,i]of this._entriesAscending())yield[t,i.value]}get size(){if(!this._size)return this.oldCache.size;let t=0;for(let i of this.oldCache.keys())this.cache.has(i)||t++;return Math.min(this._size+t,this.maxSize)}entries(){return this.entriesAscending()}forEach(t,i=this){for(let[n,r]of this.entriesAscending())t.call(i,r,n,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};var Xo=new Dn({maxSize:200});function mu(e){let t=kd(e);if(Xo.has(t))return Xo.get(t);let i=Qo(e,{extensions:[ja([Po(),Ho]),$o()],mdastExtensions:[[Zo(),Jo],Wo()]});return Xo.set(t,i),i}function ye(e,t){let i=mu(t),n=[];return Oa(i,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function Ty(e){let t=mu(e),i=[];return Oa(t,"listItem",n=>{if(n.children)for(let r of n.children)r.type==="paragraph"&&i.push(r.position)}),i.sort((n,r)=>r.start.offset-n.start.offset),i}function gu(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map;e=fu(t,e,i,function(s,o,l){let d=o.match(/\[\^.*?\]/)[0];if(n.has(d)){let g=n.get(d);g.footnotesReferencingKey.push(o),n.set(d,g);return}let c,u=[];do c=s.lastIndexOf(d,l),c!==-1&&(u.push(c),l=c-1);while(c>0);let m={key:d,referencePositions:u,footnotesReferencingKey:[o]};n.set(d,m)});for(let s of n){let o=s[1],l=o.referencePositions.length-o.footnotesReferencingKey.length;l=l>=0?l:0;let d=0;for(let c of o.footnotesReferencingKey){if(d+l>=o.referencePositions.length)throw new Error(T("logs.missing-footnote-error-message").replace("{FOOTNOTE}",c));r.set(c,o.referencePositions[l+d++])}}i=i.sort((s,o)=>r.get(s)-r.get(o)),i.length>0&&(e=e.trimEnd()+` +`;break}case-2:{s=t?" ":" ";break}case-1:{if(!t&&r)continue;s=" ";break}default:s=String.fromCharCode(a)}r=a===-2,n.push(s)}return n.join("")}var Tl={};Pc(Tl,{attentionMarkers:()=>cb,contentInitial:()=>nb,disable:()=>db,document:()=>tb,flow:()=>ab,flowInitial:()=>rb,insideSpan:()=>lb,string:()=>sb,text:()=>ob});var tb={42:Pe,43:Pe,45:Pe,48:Pe,49:Pe,50:Pe,51:Pe,52:Pe,53:Pe,54:Pe,55:Pe,56:Pe,57:Pe,62:ps},nb={91:gl},rb={[-2]:lr,[-1]:lr,32:lr},ab={35:fl,42:Et,45:[xs,Et],60:bl,61:xs,95:Et,96:hs,126:hs},sb={38:gs,92:ms},ob={[-5]:cr,[-4]:cr,[-3]:cr,33:xl,38:gs,42:or,60:[ul,vl],91:wl,92:[hl,ms],93:Tt,95:or,96:pl},lb={null:[or,qu]},cb={null:[42,95]},db={null:[]};function El(e){let i=ws([Tl,...(e||{}).extensions||[]]),n={defined:[],lazy:{},constructs:i,content:r(Eu),document:r(Ou),flow:r(Mu),string:r(Iu),text:r(Bu)};return n;function r(a){return s;function s(o){return Du(n,a,o)}}}function Cl(e){for(;!fs(e););return e}var Ku=/[\0\t\n\r]/g;function Ol(){let e=1,t="",i=!0,n;return r;function r(a,s,o){let l=[],c,d,u,m,p;for(a=t+(typeof a=="string"?a.toString():new TextDecoder(s||void 0).decode(a)),u=0,t="",i&&(a.charCodeAt(0)===65279&&u++,i=void 0);u0){let hi=W.tokenStack[W.tokenStack.length-1];(hi[1]||Yu).call(W,void 0,hi[0])}for(M.position={start:it(T.length>0?T[0][1].start:{line:1,column:1,offset:0}),end:it(T.length>0?T[T.length-2][1].end:{line:1,column:1,offset:0})},ie=-1;++ie0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof i.maxAge=="number"&&i.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");Me(this,tt,i.maxSize),Me(this,ur,i.maxAge||Number.POSITIVE_INFINITY),Me(this,nt,i.onEviction)}get __oldCache(){return _(this,ge)}get(i){if(_(this,ce).has(i)){let n=_(this,ce).get(i);return me(this,mr,Rl).call(this,i,n)}if(_(this,ge).has(i)){let n=_(this,ge).get(i);if(me(this,ni,fi).call(this,i,n)===!1)return me(this,As,Vu).call(this,i,n),n.value}}set(i,n,{maxAge:r=_(this,ur)}={}){let a=typeof r=="number"&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;return _(this,ce).has(i)?_(this,ce).set(i,{value:n,expiry:a}):me(this,hr,Kl).call(this,i,{value:n,expiry:a}),this}has(i){return _(this,ce).has(i)?!me(this,ni,fi).call(this,i,_(this,ce).get(i)):_(this,ge).has(i)?!me(this,ni,fi).call(this,i,_(this,ge).get(i)):!1}peek(i){if(_(this,ce).has(i))return me(this,gr,Dl).call(this,i,_(this,ce));if(_(this,ge).has(i))return me(this,gr,Dl).call(this,i,_(this,ge))}delete(i){let n=_(this,ce).delete(i);return n&&_o(this,li)._--,_(this,ge).delete(i)||n}clear(){_(this,ce).clear(),_(this,ge).clear(),Me(this,li,0)}resize(i){if(!(i&&i>0))throw new TypeError("`maxSize` must be a number greater than 0");let n=[...me(this,fr,_l).call(this)],r=n.length-i;r<0?(Me(this,ce,new Map(n)),Me(this,ge,new Map),Me(this,li,n.length)):(r>0&&me(this,pr,Fl).call(this,n.slice(0,r)),Me(this,ge,new Map(n.slice(r))),Me(this,ce,new Map),Me(this,li,0)),Me(this,tt,i)}*keys(){for(let[i]of this)yield i}*values(){for(let[,i]of this)yield i}*[Symbol.iterator](){for(let i of _(this,ce)){let[n,r]=i;me(this,ni,fi).call(this,n,r)===!1&&(yield[n,r.value])}for(let i of _(this,ge)){let[n,r]=i;_(this,ce).has(n)||me(this,ni,fi).call(this,n,r)===!1&&(yield[n,r.value])}}*entriesDescending(){let i=[..._(this,ce)];for(let n=i.length-1;n>=0;--n){let r=i[n],[a,s]=r;me(this,ni,fi).call(this,a,s)===!1&&(yield[a,s.value])}i=[..._(this,ge)];for(let n=i.length-1;n>=0;--n){let r=i[n],[a,s]=r;_(this,ce).has(a)||me(this,ni,fi).call(this,a,s)===!1&&(yield[a,s.value])}}*entriesAscending(){for(let[i,n]of me(this,fr,_l).call(this))yield[i,n.value]}get size(){if(!_(this,li))return _(this,ge).size;let i=0;for(let n of _(this,ge).keys())_(this,ce).has(n)||i++;return Math.min(_(this,li)+i,_(this,tt))}get maxSize(){return _(this,tt)}entries(){return this.entriesAscending()}forEach(i,n=this){for(let[r,a]of this.entriesAscending())i.call(n,a,r,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}};li=new WeakMap,ce=new WeakMap,ge=new WeakMap,tt=new WeakMap,ur=new WeakMap,nt=new WeakMap,pr=new WeakSet,Fl=function(i){if(typeof _(this,nt)=="function")for(let[n,r]of i)_(this,nt).call(this,n,r.value)},ni=new WeakSet,fi=function(i,n){return typeof n.expiry=="number"&&n.expiry<=Date.now()?(typeof _(this,nt)=="function"&&_(this,nt).call(this,i,n.value),this.delete(i)):!1},zs=new WeakSet,Wu=function(i,n){if(me(this,ni,fi).call(this,i,n)===!1)return n.value},mr=new WeakSet,Rl=function(i,n){return n.expiry?me(this,zs,Wu).call(this,i,n):n.value},gr=new WeakSet,Dl=function(i,n){let r=n.get(i);return me(this,mr,Rl).call(this,i,r)},hr=new WeakSet,Kl=function(i,n){_(this,ce).set(i,n),_o(this,li)._++,_(this,li)>=_(this,tt)&&(Me(this,li,0),me(this,pr,Fl).call(this,_(this,ge)),Me(this,ge,_(this,ce)),Me(this,ce,new Map))},As=new WeakSet,Vu=function(i,n){_(this,ge).delete(i),me(this,hr,Kl).call(this,i,n)},fr=new WeakSet,_l=function*(){for(let i of _(this,ge)){let[n,r]=i;_(this,ce).has(n)||me(this,ni,fi).call(this,n,r)===!1&&(yield i)}for(let i of _(this,ce)){let[n,r]=i;me(this,ni,fi).call(this,n,r)===!1&&(yield i)}};var Nl=new dr({maxSize:200});function Qu(e){let t=du(e);if(Nl.has(t))return Nl.get(t);let i=ql(e,{extensions:[ws([kl(),zl()]),Al()],mdastExtensions:[[Il(),Bl],Sl()]});return Nl.set(t,i),i}function ye(e,t){let i=Qu(t),n=[];return ls(i,e,r=>{n.push(r.position)}),n.sort((r,a)=>a.start.offset-r.start.offset),n}function Lb(e){let t=Qu(e),i=[];return ls(t,"listItem",n=>{if(n.children)for(let r of n.children)r.type==="paragraph"&&i.push(r.position)}),i.sort((n,r)=>r.start.offset-n.start.offset),i}function Zu(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=function(s,o,l){let c=o.match(/\[\^.*?\]/)[0];if(n.has(c)){let p=n.get(c);p.footnotesReferencingKey.push(o),n.set(c,p);return}let d,u=[];do d=s.lastIndexOf(c,l),d!==-1&&(u.push(d),l=d-1);while(d>0);let m={key:c,referencePositions:u,footnotesReferencingKey:[o]};n.set(c,m)};for(let s of t){let o=e.substring(s.start.offset,s.end.offset);i.push(o),s.end.offset=0?l:0;let c=0;for(let d of o.footnotesReferencingKey){if(c+l>=o.referencePositions.length)throw new Error(A("logs.missing-footnote-error-message").replace("{FOOTNOTE}",d));r.set(d,o.referencePositions[l+c++])}}i=i.sort((s,o)=>r.get(s)-r.get(o)),i.length>0&&(e=e.trimEnd()+` `);for(let s of i)e+=` -`+s;return e}function hu(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=new Map,s=[],o=new Set,l=function(u,m,g){let h=m.match(/\[\^.*?\]/)[0];r.set(m,h);let v=o.has(h);if(v&&n.has(m))return n.get(m);if(v)throw new Error(T("logs.too-many-footnotes-error-message").replace("{FOOTNOTE_KEY}",h));let x,w=-1;do x=u.lastIndexOf(h,g),x!==-1&&(s.push({key:h,position:x}),w=x,g=x-1);while(x>0);return o.add(h),w};e=fu(t,e,i,(u,m,g)=>{n.set(m,l(u,m,g))}),i=i.sort((u,m)=>n.get(u)-n.get(m)),s=s.sort((u,m)=>m.position-u.position),i.length>0&&(e=e.trimEnd()+` -`);let d=1,c=new Set;for(let u of i){if(c.has(u))continue;c.add(u);let m=r.get(u),g=`[^${d++}]`;a.set(m,g),e+=` -`+u.replace(m,g)}for(let u of s){let m=a.get(u.key);e=Sd(e,u.key,m,u.position)}return e}function fu(e,t,i,n){for(let r of e){let a=t.substring(r.start.offset,r.end.offset);i.push(a),r.end.offset")||s.endsWith("
")||(n[a]=s+" ")}e=fe(e,i.start.offset,i.end.offset,n.join(` -`))}}return e}function bu(e){let t=e.endsWith(` +`+s;return e}function Ju(e){let t=ye("footnoteDefinition",e),i=[],n=new Map,r=new Map,a=[],s=new Set,o=[],l=function(u,m,p){let g=m.match(/\[\^.*?\]/)[0];n.set(m,g);let b=s.has(g);if(b&&i.includes(m)){o.unshift(m);return}else if(b)throw new Error(A("logs.too-many-footnotes-error-message").replace("{FOOTNOTE_KEY}",g));let f;do f=u.lastIndexOf(g,p),f!==-1&&((f+m.length>u.length||u.substring(f,f+m.length)!==m)&&a.push({key:g,position:f}),p=f-1);while(f>0);s.add(g)};for(let u of t){let m=e.substring(u.start.offset,u.end.offset);i.unshift(m),l(e,m,u.start.offset)}let c=1,d=new Set;for(let u of i){if(d.has(u))continue;d.add(u);let m=n.get(u),p=`[^${c++}]`;r.set(m,p)}a.sort((u,m)=>m.position-u.position);for(let u of a){let m=r.get(u.key);e=pu(e,u.key,m,u.position)}for(let u of d){let m=n.get(u),p=r.get(m);e=e.replace(u,u.replace(m,p))}for(let u of o){let m=e.replace(` +${u} +`,` +`);e===m&&(m=e.replace(u,"")),e=m}return e}function Ss(e,t,i){let n=ye(i,e);if(n.length===0)return e;let r="";if(t==="underscore")r="_";else if(t==="asterisk")r="*";else{let a=n[n.length-1];r=e.substring(a.start.offset,a.start.offset+1)}i==="strong"&&(r+=r);for(let a of n){let s=r+e.substring(a.start.offset+r.length,a.end.offset-r.length)+r;e=le(e,a.start.offset,a.end.offset,s)}return e}function Xu(e,t){let i=ye("paragraph",e);if(i.length===0)return e;for(let n of i){let r=e.substring(n.start.offset,n.end.offset).split(` +`),a=r.length-1;if(!(a<1)){for(let s=0;s")&&t=="
"||e.endsWith("
")&&t=="
"||e.endsWith(" ")&&t==" "||!e.endsWith("\\\\")&&e.endsWith("\\")&&t=="\\")}function Eb(e,t){e=e.trimEnd();let i=0;return e.endsWith("
")&&(i=4),e.endsWith("
")&&(i=5),!e.endsWith("\\\\")&&e.endsWith("\\")&&(i=1),i&&(e=e.substring(0,e.length-i)),e.trimEnd()+t}function ep(e){let t=e.endsWith(` `),i=ye("paragraph",e);if(i.length===0)return e;for(let n of i){let r=n.start.offset;for(r>0&&r--;r>=0&&e.charAt(r)!=` `;)r--;r++;let a=e.substring(r,n.end.offset).split(` -`),s=a[0].trimStart();if(s.startsWith(">")||s.startsWith("- ")||s.startsWith("- ")||s.match(/^[0-9]+\.( |\t)+/)||s.match(Wa))continue;let o=a.length,l=[],d=!1;for(let h=0;h")||v.endsWith("
")||v.endsWith(" ")}for(;r>0&&e.charAt(r-1)==` -`;)r--;let c=e.length,u=n.end.offset;for(u")||s.match(Ts)||s.match(Es))continue;let o=a.length,l=[],c=!1;for(let g=0;g")||b.endsWith("
")||b.endsWith(" ")||!b.endsWith("\\\\")&&b.endsWith("\\")}for(;r>0&&e.charAt(r-1)==` +`;)r--;let d=e.length,u=n.end.offset;for(u0&&e.charAt(r-1).trim()==="";)r--;(r===0||e.charAt(r-1).trim()!="")&&r++;let a=e.substring(r,n.end.offset);Iu.test(a)&&(r+=4,a=a.substring(4)),a=t(a),e=fe(e,r,n.end.offset,a)}return e}function ku(e){let t=ye("code",e);for(let i of t)e.substring(i.start.offset,i.end.offset).startsWith("```")&&(e=ot(e,i.start.offset,i.end.offset));return e}function zu(e,t){let i=ye("math",e);for(let n of i)e=ot(e,n.start.offset,n.end.offset);i=ye("inlineMath",e);for(let n of i)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(t))&&(e=ot(e,n.start.offset,n.end.offset));return e}function Su(e){let t=ye("blockquote",e);for(let i of t){let n=i.end.offset;for(;n0&&e.charAt(a-1)!==` -`;)a--;let s=e.substring(a,r.end.offset),o=function(u){let m=u.lastIndexOf("> ");return m!==-1&&(u=u.substring(m+2)),u=u.replaceAll(" "," "),Math.floor((u.split(" ").length-1)/2)+1},l=new Map,d=function(u,m){let g=m;for(;g>u;)l.delete(g--)},c=-1;s=s.replace(/^(( |\t|> )*)((\d+(\.|\)))|[-*+])([^\n]*)$/gm,(u,m="",g,h,v,x,w)=>{let S=1,E=o(m);if(!/^\d/.test(h)){let M=E>c?E:c;return d(E,M),u}return l.has(E)?t==="ascending"&&(S=l.get(E)+1,l.set(E,S)):l.set(E,1),c>E&&d(E,c),c=E,`${m}${S}${i}${w}`}),e=fe(e,a,r.end.offset,s)}return e}function Lu(e,t){let i=ye("listItem",e);if(!i)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=t;if(t=="consistent"){let a=i.length-1;for(;a>=0;){let s=e.substring(i[a].start.offset,i[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of i){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=fe(e,a.start.offset,a.end.offset,s))}return e}function il(e,t){let i=ye("blockquote",e);for(let n of i){let r=n.end.offset;for(;r2;){let d=e.indexOf(n,l)+n.length;a.unshift({startIndex:o,endIndex:i+d}),o=i+d+1,l=d+1,s-=2}return a.unshift({startIndex:i+e.indexOf(n,l),endIndex:i+e.length}),a}function pu(e,t,i,n,r){let a=e.substring(Mn(e,t),t)??"",s=e.substring(Mn(e,i),i)??"",o=/^(>( |\t)*)+\$+$/m,l=e.substring(t,i);return l=l.replace(n,(d,c,u="")=>u===""?c+` -`+a:c+` -`),l=l.replace(r,(d,c="",u,m)=>{let g=c==="";return g&&o.test(s.trim())?d:g?` -`+a+u+m:` -`+u+m}),fe(e,t,i,l)}function $a(e){let t=[...e.matchAll(Ou)],i=[];for(let n of t){let r=Mn(e,n.index);if(r===0)continue;let a=Mn(e,r-1),s=n[0],o=e.substring(r,n.index+s.length);if(Oy(o,s))continue;let l=a,d=e.substring(a,r-1);if(!s.includes("|")&&!d.includes("|"))continue;d=d.replace(el,h=>{let v=h.trim();return v===""||v==="|"||(l+=h.length-1),""});let c=s.replace(el,"");if(d.endsWith("|")&&(d=d.slice(0,-1)),c.endsWith("|")&&(c=c.slice(0,-1)),d.split("|").length!==c.split("|").length)continue;let u=n.index+n[0].length;if(u>=e.length-1){i.push({startIndex:l,endIndex:e.length});continue}let m=e.substring(u+1).split(` -`),g=0;for(;g]/.test(i)}function Eu(e){let t=0,i=[],n=[...e.matchAll(Mu)];if(!n||n.length===0)return i;let r=[...e.matchAll(qu)];return n.forEach(a=>{t=a.index;let s=!1,o=e.length-1;for(;r&&r.length!==0&&!s;)if(r[0].index<=t)r.shift();else{s=!0;let l=r[0];o=l.index+l[0].length}i.push({startIndex:t,endIndex:o}),!r||r.length}),i.reverse()}var Pi=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,Bu=`^XXX\\.*? +`),e}function ip(e){let t=ye("link",e);for(let i of t){if(i==null)continue;let n=e.substring(i.start.offset,i.end.offset);if(!n.match(yr))continue;let r=n.indexOf("]"),a=n.substring(0,1)+n.substring(1,r).trim()+n.substring(r);e=le(e,i.start.offset,i.end.offset,a)}return e}function tp(e,t){let i=ye("emphasis",e);for(let n of i){let r=e.substring(n.start.offset+1,n.end.offset-1);r=t(r),e=le(e,n.start.offset+1,n.end.offset-1,r)}return e}function np(e,t){let i=ye("strong",e);for(let n of i){let r=e.substring(n.start.offset+2,n.end.offset-2);r=t(r),e=le(e,n.start.offset+2,n.end.offset-2,r)}return e}function Ls(e,t){let i=Lb(e);for(let n of i){let r=n.start.offset;for(;r>0&&e.charAt(r-1).trim()==="";)r--;(r===0||e.charAt(r-1).trim()!="")&&r++;let a=e.substring(r,n.end.offset);yp.test(a)&&(r+=4,a=a.substring(4)),a=t(a),e=le(e,r,n.end.offset,a)}return e}function rp(e){let t=ye("code",e);for(let i of t){let n=e.substring(i.start.offset,i.end.offset);!n.startsWith("```")&&!n.startsWith("~~~")||(e=St(e,i.start.offset,i.end.offset))}return e}function ap(e,t){let i=ye("math",e);for(let n of i)e=St(e,n.start.offset,n.end.offset);i=ye("inlineMath",e);for(let n of i)e.substring(n.start.offset,n.end.offset).startsWith("$".repeat(t))&&(e=St(e,n.start.offset,n.end.offset));return e}function sp(e){let t=ye("blockquote",e);for(let i of t){let n=i.end.offset;for(;n0&&e.charAt(a-1)!==` +`;)a--;let s=e.substring(a,r.end.offset),o=function(u){let m=u.lastIndexOf("> ");return m!==-1&&(u=u.substring(m+2)),u=u.replaceAll(" "," "),Math.floor((u.split(" ").length-1)/2)+1},l=new Map,c=function(u,m){let p=m;for(;p>u;)l.delete(p--)},d=-1;s=s.replace(/^(( |\t|> )*)((\d+(\.|\)))|[-*+])([^\n]*)$/gm,(u,m="",p,g,b,f,x)=>{let k=1,L=o(m);if(!/^\d/.test(g)){let E=L>d?L:d;return c(L,E),u}return l.has(L)?t==="ascending"&&(k=l.get(L)+1,l.set(L,k)):l.set(L,1),d>L&&c(L,d),d=L,`${m}${k}${i}${x}`}),e=le(e,a,r.end.offset,s)}return e}function lp(e,t){let i=ye("listItem",e);if(!i)return e;let n=/^((\d+[.)])|(- \[[ x]\]))/m,r=t;if(t=="consistent"){let a=i.length-1;for(;a>=0;){let s=e.substring(i[a].start.offset,i[a].end.offset);if(a--,!s.match(n)){r=s.charAt(0);break}}if(a==-1)return e}for(let a of i){let s=e.substring(a.start.offset,a.end.offset);s.match(n)||(s=r+s.substring(1),e=le(e,a.start.offset,a.end.offset,s))}return e}function Pl(e,t){let i=ye("blockquote",e);for(let n of i){let r=n.end.offset;for(;r2;){let c=e.indexOf(n,l)+n.length;a.unshift({startIndex:o,endIndex:i+c}),o=i+c+1,l=c+1,s-=2}return a.unshift({startIndex:i+e.indexOf(n,l),endIndex:i+e.length}),a}function $u(e,t,i,n,r){let a=e.substring(rr(e,t),t)??"",[s]=xn(a,a.length),o=e.substring(rr(e,i),i)??"",l=e.substring(t,i),c=pp.test(a.trim()),d=!1;for(l=l.replace(n,(u,m,p="")=>{let g="";return!c&&a.trim()!=""?(g+=` +`,d=!0):c&&!jl.test(a)&&(g+=` +`+s,d=!0),g+=m+` +`,p===""&&c&&(g+=s),g}),l=l.replace(r,(u,m="",p,g)=>{let b=m==="";return b&&c&&jl.test(o.trim())?u:b&&c?` +`+s+p+g:` +`+p+g});d&&t>0;){let u=e[t-1];if(u!==" "&&u!==" ")break;t--}return le(e,t,i,l)}function wn(e){let t=[...e.matchAll(mp)],i=[];for(let n of t){let r=rr(e,n.index);if(r===0)continue;let a=rr(e,r-1),s=n[0],o=e.substring(r,n.index+s.length);if(Ob(o,s))continue;let l=a,c=e.substring(a,r-1);if(!s.includes("|")&&!c.includes("|"))continue;c=c.replace(Yl,g=>{let b=g.trim();return b===""||b==="|"||(l+=g.length-1),""});let d=s.replace(Yl,"");if(c.endsWith("|")&&(c=c.slice(0,-1)),d.endsWith("|")&&(d=d.slice(0,-1)),Gu(c)!==Gu(d))continue;let u=n.index+n[0].length;if(u>=e.length-1){i.push({startIndex:l,endIndex:e.length});continue}let m=e.substring(u+1).split(` +`),p=0;for(;p]/.test(i)}function Gu(e){let t=!1,i=0,n=0,r="";for(let a=0;a{t=a.index;let s=!1,o=e.length-1;for(;r&&r.length!==0&&!s;)if(r[0].index<=t)r.shift();else{s=!0;let l=r[0];o=l.index+l[0].length}i.push({startIndex:t,endIndex:o}),!r||r.length}),i.reverse()}function up(e,t){let i=ye("code",e);for(let n of i){let r=e.substring(n.start.offset,n.end.offset);!r.startsWith("```")||r.substring(3,r.indexOf(` +`)).trim()!==""||(e=le(e,n.start.offset+3,n.start.offset+3,t))}return e}var rt=/^([ \t]*)(#+)([ \t]+)([^\n\r]*?)([ \t]+#+)?$/gm,bp=`^XXX\\.*? (?:((?:.| )*?) -)?XXX(?=\\s|$)$`,Ge=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,Cy=Bu.replaceAll("X","`"),My=Bu.replaceAll("X","~"),qy=`^(( |( {4})).* -)+`,ZS=new RegExp(`${Cy}|${My}|${qy}`,"gm"),Va=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?(\|([^\][\n|]+))?\]{2}/g,Nn=/(!?)\[([^[]*)\](\(.*\))/g,jn=/(\s|^)(#[^\s#;.,>\\s*)*",Ou=/(\|? *:?-{1,}:? *\|?)(\| *:?-{1,}:? *\|?)*( |\t)*$/gm,el=/^(((>[ ]?)*)|([ ]{0,3}))\|/m,Cu=/[^\n]*?\|[^\n]*?(\n|$)/m,_u=/(([a-z\-0-9]+:)\/{2})([^\s/?#]*[^\s")'.?!/]|[/])?(([/?#][^\s")']*[^\s")'.?!])|[/])?/gi,Zt=/(?:(?:(?:[a-z]+:)?\/\/)|www\.)(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?|(?:(?:[a-z\u00a1-\uffff0-9][-_]*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:(?:[/?#][^\s")']*[^\s")'.?!])|[/])?/gi,Ru=/]+)>((?:.(?!<\/a>))*.)<\/a>/g,Du=/[\p{L}\p{N}\p{Pc}\p{M}\-'’`]+/gu,Nu=/&[^\s]+;$/mi,Mu=Vu(!0),qu=Vu(!1),ju=/[“”„«»]/g,Ku=/[‘’‚‹›]/g,Yu=/<%[^]*?%>/g,Jt="\\[.\\]",Iu=new RegExp(`^${Jt}`),Pu=new RegExp(`^${Yn}- ${Jt} `),Ga=new RegExp(`^\\s*- ${Jt} `),Wa=/^(\[\^\w+\]) ?([,.;!:?])/gm,Oo=/^(>\s*)+\[![^\s]*\]/m;function Ke(e){return e.replace(/\$/g,"$$$$")}function Pn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Hu(e){let t=e.match(Va);if(t){for(let i of t)if(i.includes("|")){let n=i.indexOf("|"),r=i.substring(0,n+1)+i.substring(n+1,i.length-2).trim()+"]]";e=e.replace(i,r)}}return e}function $u(e){let t=$a(e);if(t.length===0)return e;for(let i of t)e=ot(e,i.startIndex,i.endIndex);return e}function Qa(e){let t=e.match(/^#\s+(.*)/m);if(t&&t[1]){let i=t[1];return i=i.replaceAll(Va,(n,r,a,s)=>s!=null?s.replace("|",""):a),i.replaceAll(Nn,"$2")}return""}function Wu(e){return[...e.matchAll(jn)].map(t=>t[2])}function Vu(e){let t="",i="";return e?i+="disable":i+="enable",new RegExp(t.replace("{ENDING_TEXT}",i),"g")}var tl="tag",Hn="tags",$n=[tl,Hn],Iy="alias",nl="aliases",Wn=[Iy,nl],Ja="linter-yaml-title-alias",Xt="disabled rules";function bi(e){return e.match(Ge)===null&&(e=`--- +)?XXX(?=\\s|$)$`,Ge=/^---\n((?:(((?!---)(?:.|\n)*?)\n)?))---(?=\n|$)/,Mb=bp.replaceAll("X","`"),qb=bp.replaceAll("X","~"),Ib=`^(( |( {4})).* +)+`,ZT=new RegExp(`${Mb}|${qb}|${Ib}`,"gm"),Cs=/(!?)\[{2}([^\][\n|]+)(\|([^\][\n|]+))?(\|([^\][\n|]+))?\]{2}/g,yr=/(!?)\[([^[]*)\](\(.*\))/g,br=/(\s|^)(#[\p{L}\-_\d/\p{Emoji_Presentation}]+)/gu,vp=/^%%\n[^%]*\n%%/gm,vr=/[,\s]+/,Os=/(\. ?){2}\./g,xr="\\s*(>\\s*)*",jl=/^(>( |\t)*)+\$*?$/m,pp=/^\s*(>\s*)+/m,mp=/(\|? *:?-{1,}:? *\|?)(\| *:?-{1,}:? *\|?)*( |\t)*$/gm,Yl=/^(((>[ ]?)*)|([ ]{0,3}))\|/m,gp=/[^\n]*?\|[^\n]*?(\n|$)/m,xp=/(([a-z\-0-9]+:)\/{2,3})([^\s/?#]*[^\s")'.?!/]|[/])?(([/?#][^\s")']*[^\s")'.?!])|[/])?/gi,Ct=/(?:(?:(?:[a-z]+:)?\/\/)|www\.)(?:localhost|(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?:(?:[a-fA-F\d]{1,4}:){7}(?:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|:[a-fA-F\d]{1,4}|:)|(?:[a-fA-F\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,2}|:)|(?:[a-fA-F\d]{1,4}:){4}(?:(?::[a-fA-F\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,3}|:)|(?:[a-fA-F\d]{1,4}:){3}(?:(?::[a-fA-F\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,4}|:)|(?:[a-fA-F\d]{1,4}:){2}(?:(?::[a-fA-F\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,5}|:)|(?:[a-fA-F\d]{1,4}:){1}(?:(?::[a-fA-F\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,6}|:)|(?::(?:(?::[a-fA-F\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}|(?::[a-fA-F\d]{1,4}){1,7}|:)))(?:%[0-9a-zA-Z]{1,})?|(?:(?:[a-z0-9][-_]*)*[a-z0-9]+)(?:\.(?:[a-z0-9]-*)*[a-z0-9]+)*(?:\.(?:[a-z]{2,})))(?::\d{2,5})?(?:(?:[/?#][a-z0-9-_%/&=?$.+~!*‘(,#@]*[a-z0-9-%_/$+~!*‘(,])|[/])?/gi,JT=new RegExp("^"+Ct.source+"$","si"),wp=/]+)>((?:.(?!<\/a>))*.)<\/a>/g,kp=/[\p{L}\p{N}\p{Pc}\p{M}\-'’`]+/gu,zp=/&[^\s]+;$/mi,hp=Mp(!0),fp=Mp(!1),Ap=/[“”„«»]/g,Sp=/[‘’‚‹›]/g,Lp=/<%[^]*?%>/g,Ot="\\[.\\]",yp=new RegExp(`^${Ot}`),Tp=new RegExp(`^${xr}- ${Ot} `),Ms=new RegExp(`^\\s*- ${Ot} `),Ts=new RegExp(`^\\s*(-|\\*|\\+|\\d+[.)]|- (${Ot}))`,"m"),Es=/^(\[\^[^\]]*\]) ?([,.;!:?])/gm,us=/^(>\s*)+\[![^\s]*\]/m,tr=/^\n?(>\s*)+((```)|(~~~))/m,Hl=RegExp(/\p{L}/,"u");function Qe(e){return e.replace(/\$/g,"$$$$")}function at(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ep(e){let t=e.match(Cs);if(t){for(let i of t)if(i.includes("|")){let n=i.indexOf("|"),r=i.substring(0,n+1)+i.substring(n+1,i.length-2).trim()+"]]";e=e.replace(i,r)}}return e}function Cp(e){let t=wn(e);if(t.length===0)return e;for(let i of t)e=St(e,i.startIndex,i.endIndex);return e}function qs(e){let t=e.match(/^#\s+(.*)/m);if(t&&t[1]){let i=t[1];return i=i.replaceAll(Cs,(n,r,a,s)=>s!=null?s.replace("|",""):a),i.replaceAll(yr,"$2")}return""}function Op(e){return[...e.matchAll(br)].map(t=>t[2])}function Mp(e){let t="(?:|%%)",i="";return e?i+="disable":i+="enable",new RegExp(t.replace("{ENDING_TEXT}",i),"g")}var Ul="tag",wr="tags",yi=[Ul,wr],Bb="alias",Wl="aliases",bi=[Bb,Wl],Vl="linter-yaml-title-alias",Sn="disabled rules";function Ci(e){return e.match(Ge)===null&&(e=`--- --- -`+e),e}function en(e){let t=e.match(Ge);return t?t[1]:null}function Ae(e,t){if(!e.match(Ge))return e;let i=e.match(Ge)[0],n=t(i);return e=e.replace(i,Ke(n)),e}function rl(e){return new RegExp(`^([\\t ]*)${e}:[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m")}function Le(e,t,i){let n=`${t}:${i} -`,r=!1,a=e.replace(rl(t),(s,o)=>(r=!0,o+n));return r||(a=`${e}${n}`),a}function Ce(e,t){let i=e.match(rl(t));return i==null?null:i[2]}function ut(e,t){return e.replace(rl(t),"")}function Mi(e){if(e==null)return null;let t=bo(e.replace(/\n(\t)+/g,` - `));return t??{}}function Qe(e,t,i,n,r=!1){if(typeof e=="string"&&(e=[e]),e==null||e.length===0)return By(t);let a=n&&(t=="multi-line"||t=="single string to multi-line"&&e.length>1);if(r||a)for(let s=0;s(r=!0,o+n));return r||(a=`${e}${n}`),a}function de(e,t,i=!0){let n=e.match($l(t,i));if(n==null)return null;let r=n[2];return i||(r=n[1]),r}function Mt(e,t,i=!0){return e.replace($l(t,i),"")}function ri(e){if(e==null)return null;let t=Xo(e.replace(/\n(\t)+/g,` + `));return t??{}}function be(e,t,i,n,r=!1){if(typeof e=="string"&&(e=[e]),e==null||e.length===0)return Fb(t);let a=n&&(t=="multi-line"||t=="single string to multi-line"&&e.length>1);if(r||a)for(let s=0;si!="");if(e.includes(` -`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(i=>i!=""),t==null||t.length===0?null:t}return e}function Xa(e){if(e==null)return[];let t=[],i=[];Array.isArray(e)?i=e:e.includes(",")?i=Za(e,","):i=Za(e," ");for(let n of i)t.push(n.trim());return t}function es(e){return typeof e=="string"?Za(e,","):e}function Za(e,t=","){if(e==""||e==null)return null;if(t.length>1)throw new Error(T("logs.invalid-delimiter-error-message"));let i=[],n="",r=0;for(;r1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function li(e,t,i=!1,n=!1){let r=Fy(e,t,i);if(n)return r;try{if(bo(r)===e)return r}catch{}let a=vo(e,{lineWidth:-1,quotingType:t,forceQuotes:i}).slice(0,-1),s=vo(e,{lineWidth:-1,quotingType:t=='"'?"'":'"',forceQuotes:i}).slice(0,-1);return s===e||s.length")&&(n=n.substring(3)),n.endsWith("

")&&(n=n.substring(0,n.length-4)),t.innerHTML=n}function Xe(e){e.addClass("linter-visually-hidden")}function wi(e){e.removeClass("linter-visually-hidden")}var pt=class{constructor(t,i,n,r,a){this.configKey=t;this.nameKey=i;this.descriptionKey=n;this.defaultValue=r;a&&(this.ruleAlias=a)}getName(){return T(this.nameKey)??""}getDescription(){return T(this.descriptionKey)??""}getSearchInfo(){return{name:this.getName(),description:this.getDescription()}}setOption(t,i){i.ruleConfigs[this.ruleAlias][this.configKey]=t}parseNameAndDescriptionAndRemoveSettingBorder(t,i){xi(this.getName(),t.nameEl,i.settingsTab.component),xi(this.getDescription(),t.descEl,i.settingsTab.component),t.settingEl.addClass("linter-no-border")}},nn=class extends pt{display(i,n,r){let a=new rn.Setting(i).addToggle(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},Vn=class extends pt{display(i,n,r){let a=new rn.Setting(i).addText(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},is=class extends pt{display(i,n,r){let a=new rn.Setting(i).addTextArea(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},ts=class extends pt{display(i,n,r){let a=new rn.Setting(i).addMomentFormat(s=>{s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}},ns=class{constructor(t,i){this.value=t,this.description=i}getDisplayValue(){return T(this.value)??""}},rs=class extends pt{constructor(i,n,r,a,s,o){super(i,n,r,a,o);this.options=s}getSearchInfo(){return{name:this.getName(),description:this.getDescription(),options:this.options}}display(i,n,r){let a=new rn.Setting(i).addDropdown(s=>{for(let o of this.options)s.addOption(o.value.replace("enums.",""),o.getDisplayValue());s.setValue(n.ruleConfigs[this.ruleAlias][this.configKey]),s.onChange(o=>{this.setOption(o,n),r.settings=n,r.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(a,r)}};var Hi=class extends Error{constructor(t,i){super(t),this.cause=i??null,this.stack=i.stack??null,Object.setPrototypeOf(this,Hi.prototype)}};var f={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Ge,placeholder:Ke(`--- ----`)},wikiLink:{replaceAction:Va,placeholder:"{WIKI_LINK_PLACEHOLDER}"},obsidianMultiLineComments:{replaceAction:Fu,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:Wa,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:Zt,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:Ru,placeholder:"{ANCHOR_PLACEHOLDER}"},templaterCommand:{replaceAction:Yu,placeholder:"{TEMPLATER_PLACEHOLDER}"},link:{replaceAction:Dy,placeholder:"{REGULAR_LINK_PLACEHOLDER}"},tag:{replaceAction:Ny,placeholder:"#tag-placeholder"},table:{replaceAction:jy,placeholder:"{TABLE_PLACEHOLDER}"},customIgnore:{replaceAction:Ky,placeholder:"{CUSTOM_IGNORE_PLACEHOLDER}"}};function we(e,t,i){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=_y(t,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=Ry(t,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(t,r.placeholder)}t=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return t=i(t),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{t=t.replace(new RegExp(r.placeholder,"i"),Ke(a))})}),t}function _y(e,t,i){let n=ye(i,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=fe(e,a.start.offset,a.end.offset,t)}return r.reverse(),{newText:e,replacedValues:r}}function Ry(e,t,i){let n=e.match(i),r=[];if(i.flags.includes("g")){if(e=e.replaceAll(i,t),n)for(let a of n)r.push(a)}else e=e.replace(i,t),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function Dy(e,t){let i=ye("link",e),n=[];for(let r of i){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(Nn)&&(n.push(a),e=fe(e,r.start.offset,r.end.offset,t))}return n.reverse(),{newText:e,replacedValues:n}}function Ny(e,t){let i=[];return e=e.replace(jn,(n,r,a)=>(i.push(a),r+t)),{newText:e,replacedValues:i}}function jy(e,t){let i=$a(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}function Ky(e,t){let i=Eu(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=fe(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}var N=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(N||{}),as=class{constructor(t,i,n,r,a,s,o,l=[],d=!1,c=[]){this.nameKey=t;this.descriptionKey=i;this.settingsKey=n;this.alias=r;this.type=a;this.applyAfterIgnore=s;this.examples=o;this.options=l;this.hasSpecialExecutionOrder=d;this.ignoreTypes=c;this.ruleHeading=this.getName().toLowerCase().replaceAll(" ","-"),l.unshift(new nn("enabled",this.descriptionKey,"",!1));for(let u of l)u.ruleAlias=r}getDefaultOptions(){let t={};for(let i of this.options)t[i.configKey]=i.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.settingsKey]}getName(){return T(this.nameKey)}getDescription(){return T(this.descriptionKey)}getURL(){return"https://platers.github.io/obsidian-linter/settings/"+this.type.toLowerCase()+"-rules/#"+this.ruleHeading}enabledOptionName(){return this.options[0].configKey}apply(t,i){return we(this.ignoreTypes,t,n=>this.applyAfterIgnore(n,i))}},ss=class{constructor(t,i,n,r={}){this.description=t,this.options=r,this.before=i,this.after=n}},Ju=Object.values(N);function os(e){let t=en(e);if(t===null)return[[],!1];let i=Gu(t);return i.includes("all")?[ki.map(n=>n.alias),!0]:[i,!1]}var ki=[],Yy={},mt=new Map;function Xu(e){ki.push(e),ki.sort((t,i)=>Ju.indexOf(t.type)-Ju.indexOf(i.type)||t.settingsKey.localeCompare(i.settingsKey)),Yy[e.alias]=e,mt.has(e.type)?mt.get(e.type).push(e):mt.set(e.type,[e])}function ls(e,t){let i;throw e instanceof Hc?(i=e.toString(),i=T("logs.wrapper-yaml-error").replace("{ERROR_MESSAGE}",i.substring(i.indexOf(":")+1))):i=T("logs.wrapper-unknown-error").replace("{ERROR_MESSAGE}",e.message),new Hi(`"${t}" encountered an ${i}`,e)}var yn=da(ep());function Py(e){for(var t=[],i=1;ii!="");if(e.includes(` +`)){let t=e.split(/[ \t]*\n[ \t]*-[ \t]*/);return t.splice(0,1),t=t.filter(i=>i!=""),t==null||t.length===0?null:t}return e}function st(e){if(e==null)return[];let t=[],i=[];Array.isArray(e)?i=e:e.includes(",")?i=Is(e,","):i=Is(e," ");for(let n of i)t.push(n.trim());return t}function ot(e){return typeof e=="string"?Is(e,","):e}function Is(e,t=","){if(e==""||e==null)return null;if(t.length>1)throw new Error(A("logs.invalid-delimiter-error-message"));let i=[],n="",r=0;for(;r1&&(e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"'))}function vi(e,t,i=!1,n=!1){let r=Db(e,t,i);if(n)return r;try{if(Xo(r)===e)return r}catch{}let a=el(e,{lineWidth:-1,quotingType:t,forceQuotes:i}).slice(0,-1),s=el(e,{lineWidth:-1,quotingType:t=='"'?"'":'"',forceQuotes:i}).slice(0,-1);return s===e||s.length")&&(n=n.substring(3)),n.endsWith("

")&&(n=n.substring(0,n.length-4)),t.innerHTML=n}function ci(e){e.addClass("linter-visually-hidden")}function Mi(e){e.removeClass("linter-visually-hidden")}var In=require("obsidian");var Fp=require("obsidian");var di=class{constructor(t,i,n,r,a,s,o,l){this.containerEl=t;this.parentComponent=i;this.name=n;this.description=r;this.warning=a;this.addInputBtnText=s;this.saveSettings=o;this.onAddInput=l}display(){this.containerEl.createDiv({cls:"setting-item-name",text:this.name});let t=this.containerEl.createDiv({cls:"setting-item-description"});Oi(this.description,t.createEl("p",{cls:"custom-row-description"}),this.parentComponent),this.warning!=null&&this.warning.trim()!=""&&t.createEl("p",{text:this.warning,cls:"mod-warning"}),new Fp.Setting(this.containerEl).addButton(i=>{i.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var nm=require("obsidian");var fe="top",Le="bottom",Ae="right",ve="left",Bs="auto",lt=[fe,Le,Ae,ve],Pi="start",qt="end",Rp="clippingParents",Fs="viewport",En="popper",Dp="reference",Gl=lt.reduce(function(e,t){return e.concat([t+"-"+Pi,t+"-"+qt])},[]),Rs=[].concat(lt,[Bs]).reduce(function(e,t){return e.concat([t,t+"-"+Pi,t+"-"+qt])},[]),Kb="beforeRead",_b="read",Nb="afterRead",jb="beforeMain",Yb="main",Pb="afterMain",Hb="beforeWrite",Ub="write",Wb="afterWrite",Kp=[Kb,_b,Nb,jb,Yb,Pb,Hb,Ub,Wb];function Ie(e){return e?(e.nodeName||"").toLowerCase():null}function ue(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ui(e){var t=ue(e).Element;return e instanceof t||e instanceof Element}function Te(e){var t=ue(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Cn(e){if(typeof ShadowRoot>"u")return!1;var t=ue(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Vb(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var n=t.styles[i]||{},r=t.attributes[i]||{},a=t.elements[i];!Te(a)||!Ie(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function $b(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],a=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]),o=s.reduce(function(l,c){return l[c]="",l},{});!Te(r)||!Ie(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var _p={name:"applyStyles",enabled:!0,phase:"write",fn:Vb,effect:$b,requires:["computeStyles"]};function Be(e){return e.split("-")[0]}var xi=Math.max,It=Math.min,Hi=Math.round;function On(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function kr(){return!/^((?!chrome|android).)*safari/i.test(On())}function pi(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var n=e.getBoundingClientRect(),r=1,a=1;t&&Te(e)&&(r=e.offsetWidth>0&&Hi(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Hi(n.height)/e.offsetHeight||1);var s=ui(e)?ue(e):window,o=s.visualViewport,l=!kr()&&i,c=(n.left+(l&&o?o.offsetLeft:0))/r,d=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,m=n.height/a;return{width:u,height:m,top:d,right:c+u,bottom:d+m,left:c,x:c,y:d}}function Bt(e){var t=pi(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function zr(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&Cn(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Ze(e){return ue(e).getComputedStyle(e)}function Ql(e){return["table","td","th"].indexOf(Ie(e))>=0}function Re(e){return((ui(e)?e.ownerDocument:e.document)||window.document).documentElement}function Ui(e){return Ie(e)==="html"?e:e.assignedSlot||e.parentNode||(Cn(e)?e.host:null)||Re(e)}function Np(e){return!Te(e)||Ze(e).position==="fixed"?null:e.offsetParent}function Gb(e){var t=/firefox/i.test(On()),i=/Trident/i.test(On());if(i&&Te(e)){var n=Ze(e);if(n.position==="fixed")return null}var r=Ui(e);for(Cn(r)&&(r=r.host);Te(r)&&["html","body"].indexOf(Ie(r))<0;){var a=Ze(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function wi(e){for(var t=ue(e),i=Np(e);i&&Ql(i)&&Ze(i).position==="static";)i=Np(i);return i&&(Ie(i)==="html"||Ie(i)==="body"&&Ze(i).position==="static")?t:i||Gb(e)||t}function Ft(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Rt(e,t,i){return xi(e,It(t,i))}function jp(e,t,i){var n=Rt(e,t,i);return n>i?i:n}function Ar(){return{top:0,right:0,bottom:0,left:0}}function Sr(e){return Object.assign({},Ar(),e)}function Lr(e,t){return t.reduce(function(i,n){return i[n]=e,i},{})}var Qb=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Sr(typeof t!="number"?t:Lr(t,lt))};function Zb(e){var t,i=e.state,n=e.name,r=e.options,a=i.elements.arrow,s=i.modifiersData.popperOffsets,o=Be(i.placement),l=Ft(o),c=[ve,Ae].indexOf(o)>=0,d=c?"height":"width";if(!(!a||!s)){var u=Qb(r.padding,i),m=Bt(a),p=l==="y"?fe:ve,g=l==="y"?Le:Ae,b=i.rects.reference[d]+i.rects.reference[l]-s[l]-i.rects.popper[d],f=s[l]-i.rects.reference[l],x=wi(a),k=x?l==="y"?x.clientHeight||0:x.clientWidth||0:0,L=b/2-f/2,E=u[p],O=k-m[d]-u[g],S=k/2-m[d]/2+L,I=Rt(E,S,O),K=l;i.modifiersData[n]=(t={},t[K]=I,t.centerOffset=I-S,t)}}function Jb(e){var t=e.state,i=e.options,n=i.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||zr(t.elements.popper,r)&&(t.elements.arrow=r))}var Yp={name:"arrow",enabled:!0,phase:"main",fn:Zb,effect:Jb,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function mi(e){return e.split("-")[1]}var Xb={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ev(e,t){var i=e.x,n=e.y,r=t.devicePixelRatio||1;return{x:Hi(i*r)/r||0,y:Hi(n*r)/r||0}}function Pp(e){var t,i=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,c=e.adaptive,d=e.roundOffsets,u=e.isFixed,m=s.x,p=m===void 0?0:m,g=s.y,b=g===void 0?0:g,f=typeof d=="function"?d({x:p,y:b}):{x:p,y:b};p=f.x,b=f.y;var x=s.hasOwnProperty("x"),k=s.hasOwnProperty("y"),L=ve,E=fe,O=window;if(c){var S=wi(i),I="clientHeight",K="clientWidth";if(S===ue(i)&&(S=Re(i),Ze(S).position!=="static"&&o==="absolute"&&(I="scrollHeight",K="scrollWidth")),S=S,r===fe||(r===ve||r===Ae)&&a===qt){E=Le;var B=u&&S===O&&O.visualViewport?O.visualViewport.height:S[I];b-=B-n.height,b*=l?1:-1}if(r===ve||(r===fe||r===Le)&&a===qt){L=Ae;var D=u&&S===O&&O.visualViewport?O.visualViewport.width:S[K];p-=D-n.width,p*=l?1:-1}}var U=Object.assign({position:o},c&&Xb),$=d===!0?ev({x:p,y:b},ue(i)):{x:p,y:b};if(p=$.x,b=$.y,l){var F;return Object.assign({},U,(F={},F[E]=k?"0":"",F[L]=x?"0":"",F.transform=(O.devicePixelRatio||1)<=1?"translate("+p+"px, "+b+"px)":"translate3d("+p+"px, "+b+"px, 0)",F))}return Object.assign({},U,(t={},t[E]=k?b+"px":"",t[L]=x?p+"px":"",t.transform="",t))}function iv(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=n===void 0?!0:n,a=i.adaptive,s=a===void 0?!0:a,o=i.roundOffsets,l=o===void 0?!0:o,c={placement:Be(t.placement),variation:mi(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Pp(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Pp(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Hp={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:iv,data:{}};var Ds={passive:!0};function tv(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=ue(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&c.forEach(function(d){d.addEventListener("scroll",i.update,Ds)}),o&&l.addEventListener("resize",i.update,Ds),function(){a&&c.forEach(function(d){d.removeEventListener("scroll",i.update,Ds)}),o&&l.removeEventListener("resize",i.update,Ds)}}var Up={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:tv,data:{}};var nv={left:"right",right:"left",bottom:"top",top:"bottom"};function Mn(e){return e.replace(/left|right|bottom|top/g,function(t){return nv[t]})}var rv={start:"end",end:"start"};function Ks(e){return e.replace(/start|end/g,function(t){return rv[t]})}function Dt(e){var t=ue(e),i=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:i,scrollTop:n}}function Kt(e){return pi(Re(e)).left+Dt(e).scrollLeft}function Zl(e,t){var i=ue(e),n=Re(e),r=i.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var c=kr();(c||!c&&t==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+Kt(e),y:l}}function Jl(e){var t,i=Re(e),n=Dt(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=xi(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=xi(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Kt(e),l=-n.scrollTop;return Ze(r||i).direction==="rtl"&&(o+=xi(i.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function _t(e){var t=Ze(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function _s(e){return["html","body","#document"].indexOf(Ie(e))>=0?e.ownerDocument.body:Te(e)&&_t(e)?e:_s(Ui(e))}function ct(e,t){var i;t===void 0&&(t=[]);var n=_s(e),r=n===((i=e.ownerDocument)==null?void 0:i.body),a=ue(n),s=r?[a].concat(a.visualViewport||[],_t(n)?n:[]):n,o=t.concat(s);return r?o:o.concat(ct(Ui(s)))}function qn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function av(e,t){var i=pi(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function Wp(e,t,i){return t===Fs?qn(Zl(e,i)):ui(t)?av(t,i):qn(Jl(Re(e)))}function sv(e){var t=ct(Ui(e)),i=["absolute","fixed"].indexOf(Ze(e).position)>=0,n=i&&Te(e)?wi(e):e;return ui(n)?t.filter(function(r){return ui(r)&&zr(r,n)&&Ie(r)!=="body"}):[]}function Xl(e,t,i,n){var r=t==="clippingParents"?sv(e):[].concat(t),a=[].concat(r,[i]),s=a[0],o=a.reduce(function(l,c){var d=Wp(e,c,n);return l.top=xi(d.top,l.top),l.right=It(d.right,l.right),l.bottom=It(d.bottom,l.bottom),l.left=xi(d.left,l.left),l},Wp(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Tr(e){var t=e.reference,i=e.element,n=e.placement,r=n?Be(n):null,a=n?mi(n):null,s=t.x+t.width/2-i.width/2,o=t.y+t.height/2-i.height/2,l;switch(r){case fe:l={x:s,y:t.y-i.height};break;case Le:l={x:s,y:t.y+t.height};break;case Ae:l={x:t.x+t.width,y:o};break;case ve:l={x:t.x-i.width,y:o};break;default:l={x:t.x,y:t.y}}var c=r?Ft(r):null;if(c!=null){var d=c==="y"?"height":"width";switch(a){case Pi:l[c]=l[c]-(t[d]/2-i[d]/2);break;case qt:l[c]=l[c]+(t[d]/2-i[d]/2);break;default:}}return l}function ki(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=n===void 0?e.placement:n,a=i.strategy,s=a===void 0?e.strategy:a,o=i.boundary,l=o===void 0?Rp:o,c=i.rootBoundary,d=c===void 0?Fs:c,u=i.elementContext,m=u===void 0?En:u,p=i.altBoundary,g=p===void 0?!1:p,b=i.padding,f=b===void 0?0:b,x=Sr(typeof f!="number"?f:Lr(f,lt)),k=m===En?Dp:En,L=e.rects.popper,E=e.elements[g?k:m],O=Xl(ui(E)?E:E.contextElement||Re(e.elements.popper),l,d,s),S=pi(e.elements.reference),I=Tr({reference:S,element:L,strategy:"absolute",placement:r}),K=qn(Object.assign({},L,I)),B=m===En?K:S,D={top:O.top-B.top+x.top,bottom:B.bottom-O.bottom+x.bottom,left:O.left-B.left+x.left,right:B.right-O.right+x.right},U=e.modifiersData.offset;if(m===En&&U){var $=U[r];Object.keys(D).forEach(function(F){var Y=[Ae,Le].indexOf(F)>=0?1:-1,P=[fe,Le].indexOf(F)>=0?"y":"x";D[F]+=$[P]*Y})}return D}function ec(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=i.boundary,a=i.rootBoundary,s=i.padding,o=i.flipVariations,l=i.allowedAutoPlacements,c=l===void 0?Rs:l,d=mi(n),u=d?o?Gl:Gl.filter(function(g){return mi(g)===d}):lt,m=u.filter(function(g){return c.indexOf(g)>=0});m.length===0&&(m=u);var p=m.reduce(function(g,b){return g[b]=ki(e,{placement:b,boundary:r,rootBoundary:a,padding:s})[Be(b)],g},{});return Object.keys(p).sort(function(g,b){return p[g]-p[b]})}function ov(e){if(Be(e)===Bs)return[];var t=Mn(e);return[Ks(e),t,Ks(t)]}function lv(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!0:s,l=i.fallbackPlacements,c=i.padding,d=i.boundary,u=i.rootBoundary,m=i.altBoundary,p=i.flipVariations,g=p===void 0?!0:p,b=i.allowedAutoPlacements,f=t.options.placement,x=Be(f),k=x===f,L=l||(k||!g?[Mn(f)]:ov(f)),E=[f].concat(L).reduce(function(we,_e){return we.concat(Be(_e)===Bs?ec(t,{placement:_e,boundary:d,rootBoundary:u,padding:c,flipVariations:g,allowedAutoPlacements:b}):_e)},[]),O=t.rects.reference,S=t.rects.popper,I=new Map,K=!0,B=E[0],D=0;D=0,P=Y?"width":"height",Z=ki(t,{placement:U,boundary:d,rootBoundary:u,altBoundary:m,padding:c}),J=Y?F?Ae:ve:F?Le:fe;O[P]>S[P]&&(J=Mn(J));var De=Mn(J),Oe=[];if(a&&Oe.push(Z[$]<=0),o&&Oe.push(Z[J]<=0,Z[De]<=0),Oe.every(function(we){return we})){B=U,K=!1;break}I.set(U,Oe)}if(K)for(var v=g?3:1,Ke=function(_e){var Fi=E.find(function(Ri){var oe=I.get(Ri);if(oe)return oe.slice(0,_e).every(function(Di){return Di})});if(Fi)return B=Fi,"break"},Ue=v;Ue>0;Ue--){var w=Ke(Ue);if(w==="break")break}t.placement!==B&&(t.modifiersData[n]._skip=!0,t.placement=B,t.reset=!0)}}var Vp={name:"flip",enabled:!0,phase:"main",fn:lv,requiresIfExists:["offset"],data:{_skip:!1}};function $p(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function Gp(e){return[fe,Ae,Le,ve].some(function(t){return e[t]>=0})}function cv(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,s=ki(t,{elementContext:"reference"}),o=ki(t,{altBoundary:!0}),l=$p(s,n),c=$p(o,r,a),d=Gp(l),u=Gp(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":u})}var Qp={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:cv};function dv(e,t,i){var n=Be(e),r=[ve,fe].indexOf(n)>=0?-1:1,a=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[ve,Ae].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function uv(e){var t=e.state,i=e.options,n=e.name,r=i.offset,a=r===void 0?[0,0]:r,s=Rs.reduce(function(d,u){return d[u]=dv(u,t.rects,a),d},{}),o=s[t.placement],l=o.x,c=o.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[n]=s}var Zp={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:uv};function pv(e){var t=e.state,i=e.name;t.modifiersData[i]=Tr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var Jp={name:"popperOffsets",enabled:!0,phase:"read",fn:pv,data:{}};function ic(e){return e==="x"?"y":"x"}function mv(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!1:s,l=i.boundary,c=i.rootBoundary,d=i.altBoundary,u=i.padding,m=i.tether,p=m===void 0?!0:m,g=i.tetherOffset,b=g===void 0?0:g,f=ki(t,{boundary:l,rootBoundary:c,padding:u,altBoundary:d}),x=Be(t.placement),k=mi(t.placement),L=!k,E=Ft(x),O=ic(E),S=t.modifiersData.popperOffsets,I=t.rects.reference,K=t.rects.popper,B=typeof b=="function"?b(Object.assign({},t.rects,{placement:t.placement})):b,D=typeof B=="number"?{mainAxis:B,altAxis:B}:Object.assign({mainAxis:0,altAxis:0},B),U=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,$={x:0,y:0};if(S){if(a){var F,Y=E==="y"?fe:ve,P=E==="y"?Le:Ae,Z=E==="y"?"height":"width",J=S[E],De=J+f[Y],Oe=J-f[P],v=p?-K[Z]/2:0,Ke=k===Pi?I[Z]:K[Z],Ue=k===Pi?-K[Z]:-I[Z],w=t.elements.arrow,we=p&&w?Bt(w):{width:0,height:0},_e=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Ar(),Fi=_e[Y],Ri=_e[P],oe=Rt(0,I[Z],we[Z]),Di=L?I[Z]/2-v-oe-Fi-D.mainAxis:Ke-oe-Fi-D.mainAxis,oi=L?-I[Z]/2+v+oe+Ri+D.mainAxis:Ue+oe+Ri+D.mainAxis,Li=t.elements.arrow&&wi(t.elements.arrow),Gi=Li?E==="y"?Li.clientTop||0:Li.clientLeft||0:0,dn=(F=U?.[E])!=null?F:0,Da=J+Di-dn-Gi,Ka=J+oi-dn,Hn=Rt(p?It(De,Da):De,J,p?xi(Oe,Ka):Oe);S[E]=Hn,$[E]=Hn-J}if(o){var _a,Na=E==="x"?fe:ve,ja=E==="x"?Le:Ae,Ki=S[O],un=O==="y"?"height":"width",Ya=Ki+f[Na],Pa=Ki-f[ja],Un=[fe,ve].indexOf(x)!==-1,T=(_a=U?.[O])!=null?_a:0,M=Un?Ya:Ki-I[un]-K[un]-T+D.altAxis,W=Un?Ki+I[un]+K[un]-T-D.altAxis:Pa,Q=p&&Un?jp(M,Ki,W):Rt(p?M:Ya,Ki,p?W:Pa);S[O]=Q,$[O]=Q-Ki}t.modifiersData[n]=$}}var Xp={name:"preventOverflow",enabled:!0,phase:"main",fn:mv,requiresIfExists:["offset"]};function tc(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function nc(e){return e===ue(e)||!Te(e)?Dt(e):tc(e)}function gv(e){var t=e.getBoundingClientRect(),i=Hi(t.width)/e.offsetWidth||1,n=Hi(t.height)/e.offsetHeight||1;return i!==1||n!==1}function rc(e,t,i){i===void 0&&(i=!1);var n=Te(t),r=Te(t)&&gv(t),a=Re(t),s=pi(e,r,i),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((Ie(t)!=="body"||_t(a))&&(o=nc(t)),Te(t)?(l=pi(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Kt(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function hv(e){var t=new Map,i=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function r(a){i.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!i.has(o)){var l=t.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){i.has(a.name)||r(a)}),n}function ac(e){var t=hv(e);return Kp.reduce(function(i,n){return i.concat(t.filter(function(r){return r.phase===n}))},[])}function sc(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function oc(e){var t=e.reduce(function(i,n){var r=i[n.name];return i[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,i},{});return Object.keys(t).map(function(i){return t[i]})}var em={placement:"bottom",modifiers:[],strategy:"absolute"};function im(){for(var e=arguments.length,t=new Array(e),i=0;i(e%t+t)%t,cc=class{constructor(t,i,n){this.owner=t,this.containerEl=i,i.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),i.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(t,i){t.preventDefault();let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,i){let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1)}setSuggestions(t){this.containerEl.empty();let i=[];t.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),i.push(r)}),this.values=t,this.suggestions=i,this.setSelectedItem(0,!1)}useSelectedItem(t){let i=this.values[this.selectedItem];i&&this.owner.selectSuggestion(i,t)}setSelectedItem(t,i){let n=yv(t,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,i&&a.scrollIntoView(!1)}},dt=class{constructor(t,i){this.app=t,this.inputEl=i,this.scope=new nm.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new cc(this,n,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",r=>{r.preventDefault()})}onInputChanged(){let t=this.inputEl.value,i=this.getSuggestions(t);if(!i){this.close();return}i.length>0?(this.suggest.setSuggestions(i),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,i){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=lc(i,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var rm=require("obsidian"),Er=class extends dt{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.vault.getAllLoadedFiles().filter(o=>o instanceof rm.TFile&&o.path.endsWith(".md")).map(o=>o.path);if(!n)return[];let r=n.filter(o=>!this.valuesToExclude.includes(o)||o===this.inputEl.getAttribute("fileName")),a=[],s=i.toLowerCase();return r.forEach(o=>{o.toLowerCase().contains(s)&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i)}selectSuggestion(i){this.inputEl.setAttribute("fileName",i),this.inputEl.value=i,this.inputEl.trigger("input"),this.close()}};var am=require("obsidian");var Ns=class extends am.Modal{constructor(t,i){if(super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:A("parse-results-heading-text")}).style.textAlign="center",i?.customReplacements.size>0){this.contentEl.createEl("p",{text:A("file-parse-description-text").replace("{FILE}",i.filePath)}).id="confirm-dialog";let n=this.contentEl.createDiv().createEl("table",{cls:"markdown-rendered"}),r=n.createEl("tr");r.createEl("th",{text:A("find-header-text")}),r.createEl("th",{text:A("replace-header-text")});let a;for(let s of i.customReplacements)a=n.createEl("tr"),a.createEl("td",{text:s[0]}),a.createEl("td",{text:s[1]})}else this.contentEl.createEl("p",{text:A("no-parsed-values-found-text").replaceAll("{FILE}",i.filePath)}).style.fontWeight="bold";this.contentEl.createDiv("modal-button-container",n=>{n.createEl("button",{text:A("close-button-text")}).addEventListener("click",()=>this.close())})}};var js=class extends di{constructor(i,n,r,a,s,o,l){super(i,n,A(o),A(l),null,A("options.custom-auto-correct.add-input-button-text"),s,()=>{this.selectedFiles=[];for(let d of this.filesPicked)this.selectedFiles.push(d.filePath);let c={filePath:"",customReplacements:null};this.filesPicked.push(c),this.selectedFiles.push(""),this.saveSettings(),this.addPickedFile(c,this.filesPicked.length-1,!0)});this.filesPicked=r;this.app=a;this.selectedFiles=[];this.display(),this.inputElDiv.addClass("linter-folder-ignore-container")}showInputEls(){this.filesPicked.forEach((i,n)=>{this.addPickedFile(i,n)})}addPickedFile(i,n,r=!1){let a;new In.Setting(this.inputElDiv).addSearch(o=>{new Er(this.app,o.inputEl,this.selectedFiles),o.setPlaceholder(A("options.custom-auto-correct.file-search-placeholder-text")).setValue(i.filePath).onChange(async l=>{let c=l;if(c===""||c===o.inputEl.getAttribute("fileName")){let d=this.getFileFromPath(c);i.filePath=c,d?(i.customReplacements=ds(nr(await this.app.vault.read(d))),a.disabled=!1,a.extraSettingsEl.addClass("clickable-icon")):(a.disabled=!0,i.customReplacements=null,a.extraSettingsEl.removeClass("clickable-icon")),this.filesPicked[n]=i,this.saveSettings()}}),o.inputEl.setAttr("tabIndex",n),o.inputEl.addClass("linter-folder-ignore"),r&&o.inputEl.focus()}).addExtraButton(o=>{a=o,o.setIcon("info").setTooltip(A("options.custom-auto-correct.show-parsed-contents-tooltip")).onClick(()=>{new Ns(this.app,i).open()}),i.filePath===""&&(o.disabled=!0,o.extraSettingsEl.removeClass("clickable-icon"))}).addExtraButton(o=>{o.setIcon("cross").setTooltip(A("options.custom-auto-correct.delete-tooltip")).onClick(()=>{this.filesPicked.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-no-border")}getFileFromPath(i){let n=this.app.vault.getAbstractFileByPath((0,In.normalizePath)(i));return n instanceof In.TFile?n:null}};var ut=class{constructor(t,i,n,r,a){this.configKey=t;this.nameKey=i;this.descriptionKey=n;this.defaultValue=r;a&&(this.ruleAlias=a)}getName(){return A(this.nameKey)??""}getDescription(){return A(this.descriptionKey)??""}getSearchInfo(){return{name:this.getName(),description:this.getDescription()}}setOption(t,i){i.ruleConfigs[this.ruleAlias][this.configKey]=t}parseNameAndDescriptionAndRemoveSettingBorder(t,i){Oi(this.getName(),t.nameEl,i.settingsTab.component),Oi(this.getDescription(),t.descEl,i.settingsTab.component),t.settingEl.addClass("linter-no-border")}},Bn=class extends ut{display(t,i,n){let r=new Fn.Setting(t).addToggle(a=>{a.setValue(i.ruleConfigs[this.ruleAlias][this.configKey]),a.onChange(s=>{this.setOption(s,i),n.settings=i,n.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(r,n)}},Cr=class extends ut{display(t,i,n){let r=new Fn.Setting(t).addText(a=>{a.setValue(i.ruleConfigs[this.ruleAlias][this.configKey]),a.onChange(s=>{this.setOption(s,i),n.settings=i,n.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(r,n)}},Ys=class extends ut{display(t,i,n){let r=new Fn.Setting(t).addTextArea(a=>{a.setValue(i.ruleConfigs[this.ruleAlias][this.configKey]),a.onChange(s=>{this.setOption(s,i),n.settings=i,n.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(r,n)}},Ps=class extends ut{display(t,i,n){let r=new Fn.Setting(t).addMomentFormat(a=>{a.setValue(i.ruleConfigs[this.ruleAlias][this.configKey]),a.setPlaceholder("dddd, MMMM Do YYYY, h:mm:ss a"),a.onChange(s=>{this.setOption(s,i),n.settings=i,n.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(r,n)}},Hs=class{constructor(t,i){this.value=t,this.description=i}getDisplayValue(){return A(this.value)??""}},Us=class extends ut{constructor(t,i,n,r,a,s){super(t,i,n,r,s),this.options=a}getSearchInfo(){return{name:this.getName(),description:this.getDescription(),options:this.options}}display(t,i,n){let r=new Fn.Setting(t).addDropdown(a=>{for(let s of this.options)a.addOption(s.value.replace("enums.",""),s.getDisplayValue());a.setValue(i.ruleConfigs[this.ruleAlias][this.configKey]),a.onChange(s=>{this.setOption(s,i),n.settings=i,n.saveSettings()})});this.parseNameAndDescriptionAndRemoveSettingBorder(r,n)}},Ws=class extends ut{constructor(t,i,n,r){super(t,i,n,[],r)}display(t,i,n){i.ruleConfigs[this.ruleAlias][this.configKey]=i.ruleConfigs[this.ruleAlias][this.configKey]??[],new js(t,n.settingsTab.component,i.ruleConfigs[this.ruleAlias][this.configKey],n.app,()=>{n.saveSettings()},this.nameKey,this.descriptionKey)}};var Rn=class e extends Error{constructor(t,i){super(t),this.cause=i??null,this.stack=i.stack??null,Object.setPrototypeOf(this,e.prototype)}};var h={code:{replaceAction:"code",placeholder:"{CODE_BLOCK_PLACEHOLDER}"},inlineCode:{replaceAction:"inlineCode",placeholder:"{INLINE_CODE_BLOCK_PLACEHOLDER}"},image:{replaceAction:"image",placeholder:"{IMAGE_PLACEHOLDER}"},thematicBreak:{replaceAction:"thematicBreak",placeholder:"{HORIZONTAL_RULE_PLACEHOLDER}"},italics:{replaceAction:"emphasis",placeholder:"{ITALICS_PLACEHOLDER}"},bold:{replaceAction:"strong",placeholder:"{STRONG_PLACEHOLDER}"},list:{replaceAction:"list",placeholder:"{LIST_PLACEHOLDER}"},blockquote:{replaceAction:"blockquote",placeholder:"{BLOCKQUOTE_PLACEHOLDER}"},math:{replaceAction:"math",placeholder:"{MATH_PLACEHOLDER}"},inlineMath:{replaceAction:"inlineMath",placeholder:"{INLINE_MATH_PLACEHOLDER}"},html:{replaceAction:"html",placeholder:"{HTML_PLACEHOLDER}"},yaml:{replaceAction:Ge,placeholder:Qe(`--- +---`)},wikiLink:{replaceAction:Cs,placeholder:"{WIKI_LINK_PLACEHOLDER}"},obsidianMultiLineComments:{replaceAction:vp,placeholder:"{OBSIDIAN_COMMENT_PLACEHOLDER}"},footnoteAtStartOfLine:{replaceAction:Es,placeholder:"{FOOTNOTE_AT_START_OF_LINE_PLACEHOLDER}"},footnoteAfterATask:{replaceAction:/- \[.] (\[\^\w+\]) ?([,.;!:?])/gm,placeholder:"{FOOTNOTE_AFTER_A_TASK_PLACEHOLDER}"},url:{replaceAction:Ct,placeholder:"{URL_PLACEHOLDER}"},anchorTag:{replaceAction:wp,placeholder:"{ANCHOR_PLACEHOLDER}"},templaterCommand:{replaceAction:Lp,placeholder:"{TEMPLATER_PLACEHOLDER}"},link:{replaceAction:xv,placeholder:"{REGULAR_LINK_PLACEHOLDER}"},tag:{replaceAction:wv,placeholder:"#tag-placeholder"},table:{replaceAction:kv,placeholder:"{TABLE_PLACEHOLDER}"},customIgnore:{replaceAction:zv,placeholder:"{CUSTOM_IGNORE_PLACEHOLDER}"}};function Ee(e,t,i){let n=[];for(let r of e){let a;if(typeof r.replaceAction=="string")a=bv(t,r.placeholder,r.replaceAction);else if(r.replaceAction instanceof RegExp)a=vv(t,r.placeholder,r.replaceAction);else if(typeof r.replaceAction=="function"){let s=r.replaceAction;a=s(t,r.placeholder)}t=a.newText,n.push({replacedValues:a.replacedValues,placeholder:r.placeholder})}return t=i(t),n=n.reverse(),n!=null&&n.length>0&&n.forEach(r=>{r.replacedValues.forEach(a=>{t=t.replace(new RegExp(r.placeholder,"i"),Qe(a))})}),t}function bv(e,t,i){let n=ye(i,e),r=[];for(let a of n){let s=e.substring(a.start.offset,a.end.offset);r.push(s),e=le(e,a.start.offset,a.end.offset,t)}return r.reverse(),{newText:e,replacedValues:r}}function vv(e,t,i){let n=e.match(i),r=[];if(i.flags.includes("g")){if(e=e.replaceAll(i,t),n)for(let a of n)r.push(a)}else e=e.replace(i,t),n&&r.push(n[0]);return{newText:e,replacedValues:r}}function xv(e,t){let i=ye("link",e),n=[];for(let r of i){if(r==null)continue;let a=e.substring(r.start.offset,r.end.offset);a.match(yr)&&(n.push(a),e=le(e,r.start.offset,r.end.offset,t))}return n.reverse(),{newText:e,replacedValues:n}}function wv(e,t){let i=[];return e=e.replace(br,(n,r,a)=>(i.push(a),r+t)),{newText:e,replacedValues:i}}function kv(e,t){let i=wn(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=le(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}function zv(e,t){let i=dp(e),n=new Array(i.length),r=0,a=n.length;for(let s of i)n[a-1-r++]=e.substring(s.startIndex,s.endIndex),e=le(e,s.startIndex,s.endIndex,t);return{newText:e,replacedValues:n}}var R=(s=>(s.YAML="YAML",s.HEADING="Heading",s.FOOTNOTE="Footnote",s.CONTENT="Content",s.SPACING="Spacing",s.PASTE="Paste",s))(R||{}),Vs=class{constructor(t,i,n,r,a,s,o=[],l=!1,c=[]){this.nameKey=t;this.descriptionKey=i;this.settingsKey=n;this.alias=r;this.type=a;this.applyAfterIgnore=s;this.options=o;this.hasSpecialExecutionOrder=l;this.ignoreTypes=c;this.ruleHeading=this.getName().toLowerCase().replaceAll(" ","-"),o.unshift(new Bn("enabled",this.descriptionKey,"",!1));for(let d of o)d.ruleAlias=r}getDefaultOptions(){let t={};for(let i of this.options)t[i.configKey]=i.defaultValue;return t}getOptions(t){return t.ruleConfigs[this.settingsKey]}getName(){return A(this.nameKey)}getDescription(){return A(this.descriptionKey)}getURL(){return"https://platers.github.io/obsidian-linter/settings/"+this.type.toLowerCase()+"-rules/#"+this.ruleHeading}enabledOptionName(){return this.options[0].configKey}apply(t,i){return Ee(this.ignoreTypes,t,n=>this.applyAfterIgnore(n,i))}};var om=Object.values(R);function $s(e){let t=Ln(e);if(t===null)return[[],!1];let i=Ip(t);return i.includes("all")?[qi.map(n=>n.alias),!0]:[i,!1]}var qi=[],Av={},Nt=new Map;function lm(e){qi.push(e),qi.sort((t,i)=>om.indexOf(t.type)-om.indexOf(i.type)||t.settingsKey.localeCompare(i.settingsKey)),Av[e.alias]=e,Nt.has(e.type)?Nt.get(e.type).push(e):Nt.set(e.type,[e])}function Gs(e,t){let i;throw e instanceof Md?(i=e.toString(),i=A("logs.wrapper-yaml-error").replace("{ERROR_MESSAGE}",i.substring(i.indexOf(":")+1))):i=A("logs.wrapper-unknown-error").replace("{ERROR_MESSAGE}",e.message),new Rn(`"${t}" encountered an ${i}`,e)}var vt=gn(cm());function Sv(e){for(var t=[],i=1;in.example),t.optionBuilders.map(n=>n.option),t.hasSpecialExecutionOrder,t.ignoreTypes);Ve(ei,sn).set(this.name,i),Ve(ei,Un).set(t.alias,t)}return Ve(ei,sn).get(this.name)}static applyIfEnabledBase(t,i,n,r){let a=t.getOptions(n);if(a[t.enabledOptionName()]){at(t.alias);let s=Object.assign({},a,r);oi(`${T("logs.run-rule-text")} ${t.getName()}`);try{let o=t.apply(i,s);return ji(t.alias),oi(o),[o,!0]}catch(o){ji(t.alias),ls(o,t.getName())}}else return[i,!1]}static getBuilderByName(t){return Ve(ei,Un).get(t)}static setNoSettingControl(t,i){Ve(ei,$i).has(t)||Ve(ei,$i).set(t,[]),Ve(ei,$i).get(t).push(i)}static hasSettingControl(t,i){return!Ve(ei,$i).has(t)||!Ve(ei,$i).get(t).includes(i)}},ci=ei;sn=new WeakMap,Un=new WeakMap,$i=new WeakMap,Yt(ci,sn,new Map),Yt(ci,Un,new Map),Yt(ci,$i,new Map);var b=class extends ci{constructor(i){super();this.alias=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.settingsKey=i.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.nameKey=i.nameKey,this.descriptionKey=i.descriptionKey,this.type=i.type,this.hasSpecialExecutionOrder=i.hasSpecialExecutionOrder??!1,i.ruleIgnoreTypes?this.ignoreTypes=[f.customIgnore,...i.ruleIgnoreTypes]:this.ignoreTypes=[f.customIgnore]}static register(i){let n=i.getRule();Xu(n)}safeApply(i,n){return this.apply(i,this.buildRuleOptions(n))}buildRuleOptions(i){i=i??{};let n=new this.OptionsClass,r=Object.assign(n,i);for(let a of this.optionBuilders)a.setRuleOption(r,i);return r}static applyIfEnabled(i,n,r,a){let s=this.getRule();return r.includes(s.alias)?(oi(s.alias+" "+T("logs.disabled-text")),[i,!1]):ci.applyIfEnabledBase(s,i,n,a)}static getRuleOptions(i){let n=ci.getRule.bind(this)(),r=new this,a=n.getOptions(i);return r.buildRuleOptions(a)}static noSettingControl(){return(i,n)=>{let r=i.constructor.name;ci.setNoSettingControl(r,n)}}},al,y=class{constructor(t){Yt(this,al,void 0);this.example=new ss(t.description,t.before,t.after,t.options)}};al=new WeakMap;var on,Wi=class{constructor(t){Yt(this,on,void 0);this.OptionsClass=t.OptionsClass;let i=t.nameKey.split(".");i.length==1?this.configKey=i[0]:this.configKey=i[i.length-2],this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return Ve(this,on)||nc(this,on,this.buildOption()),Ve(this,on)}setRuleOption(t,i){let n=i[this.configKey];n!==void 0&&(t[this.optionsKey]=n)}};on=new WeakMap;var U=class extends Wi{buildOption(){return new nn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},cs=class extends Wi{buildOption(){return new Vn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ne=class extends Wi{constructor(i){super(i);this.records=i.records.map(n=>new ns("enums."+n.value,n.description))}buildOption(){return new rs(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue,this.records)}},be=class extends Wi{constructor(i){super(i);this.separator=i.separator??` -`,this.splitter=i.splitter??/\n/}buildOption(){return new is(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue.join(this.separator))}setRuleOption(i,n){if(n[this.configKey]!==void 0){let r=n[this.configKey].split(this.splitter).filter(function(a){return a!=""});i[this.optionsKey]=r}}},We=class extends Wi{buildOption(){return new Vn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ds=class extends Wi{buildOption(){return new ts(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}};var sl=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var us=class{constructor(){this.ignoreWords=[]}},Gn=class extends b{constructor(){super({nameKey:"rules.auto-correct-common-misspellings.name",descriptionKey:"rules.auto-correct-common-misspellings.description",type:"Content",ruleIgnoreTypes:[f.yaml,f.code,f.inlineCode,f.math,f.inlineMath,f.link,f.wikiLink,f.tag,f.image,f.url]})}get OptionsClass(){return us}apply(t,i){return t.replaceAll(Du,n=>this.replaceWordWithCorrectCasing(n,i))}replaceWordWithCorrectCasing(t,i){let n=t.toLowerCase();if(!sl.has(n)||i.ignoreWords.includes(n))return t;let r=sl.get(n);return t.charAt(0)==t.charAt(0).toUpperCase()&&(r=r.charAt(0).toUpperCase()+r.substring(1)),r}get exampleBuilders(){return[new y({description:"Auto-correct misspellings in regular text, but not code blocks, math blocks, YAML, or tags",before:p` - --- - key: absoltely - --- - ${""} - I absoltely hate when my codeblocks get formatted when they should not be. - ${""} - \`\`\` - # comments absoltely can be helpful, but they can also be misleading - \`\`\` - ${""} - Note that inline code also has the applicable spelling errors ignored: \`absoltely\` - ${""} - $$ - Math block absoltely does not get auto-corrected. - $$ - ${""} - The same $ defenately $ applies to inline math. - ${""} - #defenately stays the same - `,after:p` - --- - key: absoltely - --- - ${""} - I absolutely hate when my codeblocks get formatted when they should not be. - ${""} - \`\`\` - # comments absoltely can be helpful, but they can also be misleading - \`\`\` - ${""} - Note that inline code also has the applicable spelling errors ignored: \`absoltely\` - ${""} - $$ - Math block absoltely does not get auto-corrected. - $$ - ${""} - The same $ defenately $ applies to inline math. - ${""} - #defenately stays the same - `}),new y({description:"Auto-correct misspellings keeps first letter's case",before:p` - Accodringly we made sure to update logic to make sure it would handle case sensitivity. - `,after:p` - Accordingly we made sure to update logic to make sure it would handle case sensitivity. - `}),new y({description:"Links should not be auto-corrected",before:p` - http://www.Absoltely.com should not be corrected - `,after:p` - http://www.Absoltely.com should not be corrected - `})]}get optionBuilders(){return[new be({OptionsClass:us,nameKey:"rules.auto-correct-common-misspellings.ignore-words.name",descriptionKey:"rules.auto-correct-common-misspellings.ignore-words.description",optionsKey:"ignoreWords",splitter:Kn,separator:", "})]}};Gn=A([b.register],Gn);var ps=class{constructor(){this.style="space"}},gt=class extends b{constructor(){super({nameKey:"rules.blockquote-style.name",descriptionKey:"rules.blockquote-style.description",type:"Content",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.html]})}get OptionsClass(){return ps}apply(t,i){return i.style==="space"?il(t,this.addSpaceToIndicator):il(t,this.removeSpaceFromIndicator)}removeSpaceFromIndicator(t){return t.replace(/>( |\t)+/g,">")}addSpaceToIndicator(t){return t.replace(/>([^ ])/g,"> $1").replace(/>>/g,"> >")}get exampleBuilders(){return[new y({description:"When style = `space`, a space is added to blockquotes missing a space after the indicator",before:p` - >Blockquotes will have a space added if one is not present - > Will be left as is. - ${""} - > Nested blockquotes are also updated - >>Nesting levels are handled correctly - >> Even when only partially needing updates - > >Updated as well - >>>>>>> Is handled too - > > >>> As well - ${""} - > Note that html is not affected in blockquotes - `,after:p` - > Blockquotes will have a space added if one is not present - > Will be left as is. - ${""} - > Nested blockquotes are also updated - > > Nesting levels are handled correctly - > > Even when only partially needing updates - > > Updated as well - > > > > > > > Is handled too - > > > > > As well - ${""} - > Note that html is not affected in blockquotes - `}),new y({description:"When style = `no space`, spaces are removed after a blockquote indicator",before:p` - > Multiple spaces are removed - > > Nesting is handled - > > > > > Especially when multiple levels are involved - > >>> > Even when partially correct already, it is handled - `,after:p` - >Multiple spaces are removed - >>Nesting is handled - >>>>>Especially when multiple levels are involved - >>>>>Even when partially correct already, it is handled - `,options:{style:"no space"}})]}get optionBuilders(){return[new ne({OptionsClass:ps,nameKey:"rules.blockquote-style.style.name",descriptionKey:"rules.blockquote-style.style.description",optionsKey:"style",records:[{value:"space",description:"> indicator is followed by a space"},{value:"no space",description:">indicator is not followed by a space"}]})]}};gt=A([b.register],gt);var ms=class{};A([b.noSettingControl()],ms.prototype,"lineContent",2);var ht=class extends b{constructor(){super({nameKey:"rules.add-blockquote-indentation-on-paste.name",descriptionKey:"rules.add-blockquote-indentation-on-paste.description",type:"Paste"})}get OptionsClass(){return ms}apply(t,i){let n=/^(\s*)((> ?)+) .*/,r=i.lineContent.match(n);if(!r)return t;let a=r[1]??"",s=r[2]??"";return t.trim().replace(/\n/gm,` -${a}${s} `)}get exampleBuilders(){return[new y({description:"Line being pasted into regular text does not get blockquotified with current line being `Part 1 of the sentence`",before:p` - was much less likely to succeed, but they tried it anyway. - Part 2 was much more interesting. - `,after:p` - was much less likely to succeed, but they tried it anyway. - Part 2 was much more interesting. - `,options:{lineContent:"Part 1 of the sentence"}}),new y({description:"Line being pasted into a blockquote gets blockquotified with current line being `> > `",before:p` - ${""} - This content is being added to a blockquote - Note that the second line is indented and the surrounding blank lines were trimmed - ${""} - `,after:p` - This content is being added to a blockquote - > > Note that the second line is indented and the surrounding blank lines were trimmed - `,options:{lineContent:"> > "}})]}get optionBuilders(){return[]}};ht=A([b.register],ht);var ft=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},yt=class extends b{constructor(){super({nameKey:"rules.capitalize-headings.name",descriptionKey:"rules.capitalize-headings.description",type:"Heading",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ft}apply(t,i){return t.replace(Pi,n=>{if(i.style==="ALL CAPS")return n.toUpperCase();let r=i.style==="First letter",a=n.match(/\S+/g),s=i.ignoreWords,o=i.lowercaseWords,l=!0;for(let d=1;d(n=n.replace(/^---\n+/,`--- +`).map(function(m,p){return p===0?m:""+d+m}).join(` +`)),s+=u+n[l+1]}),s}var dm=Sv;var Ro=require("obsidian");var Kn,Or,pt,Je=class Je{static getRule(){if(!_(Je,Kn).has(this.name)){let t=new this,i=new Vs(t.nameKey,t.descriptionKey,t.settingsKey,t.alias,t.type,t.safeApply.bind(t),t.optionBuilders.map(n=>n.option),t.hasSpecialExecutionOrder,t.ignoreTypes);_(Je,Kn).set(this.name,i),_(Je,Or).set(t.alias,t)}return _(Je,Kn).get(this.name)}static applyIfEnabledBase(t,i,n,r){let a=t.getOptions(n);if(a[t.enabledOptionName()]){zt(t.alias);let s=Object.assign({},a,r);ii(`${A("logs.run-rule-text")} ${t.getName()}`);try{let o=t.apply(i,s);return Ji(t.alias),ii(o),[o,!0]}catch(o){Ji(t.alias),Gs(o,t.getName())}}else return[i,!1]}static getBuilderByName(t){return _(Je,Or).get(t)}static setNoSettingControl(t,i){_(Je,pt).has(t)||_(Je,pt).set(t,[]),_(Je,pt).get(t).push(i)}static hasSettingControl(t,i){return!_(Je,pt).has(t)||!_(Je,pt).get(t).includes(i)}};Kn=new WeakMap,Or=new WeakMap,pt=new WeakMap,ke(Je,Kn,new Map),ke(Je,Or,new Map),ke(Je,pt,new Map);var mt=Je,y=class extends mt{constructor(t){super(),this.alias=t.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.settingsKey=t.nameKey.replace(/rules\.(.*)\.name/,"$1"),this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.type=t.type,this.hasSpecialExecutionOrder=t.hasSpecialExecutionOrder??!1,t.ruleIgnoreTypes?this.ignoreTypes=[h.customIgnore,...t.ruleIgnoreTypes]:this.ignoreTypes=[h.customIgnore]}static register(t){let i=t.getRule();lm(i)}safeApply(t,i){return this.apply(t,this.buildRuleOptions(i))}buildRuleOptions(t){t=t??{};let i=new this.OptionsClass,n=Object.assign(i,t);for(let r of this.optionBuilders)r.setRuleOption(n,t);return n}static applyIfEnabled(t,i,n,r){let a=this.getRule();return n.includes(a.alias)?(ii(a.alias+" "+A("logs.disabled-text")),[t,!1]):mt.applyIfEnabledBase(a,t,i,r)}static getRuleOptions(t){let i=mt.getRule.bind(this)(),n=new this,r=i.getOptions(t);return n.buildRuleOptions(r)}static noSettingControl(){return(t,i)=>{let n=t.constructor.name;mt.setNoSettingControl(n,i)}}};var _n,Wi=class{constructor(t){ke(this,_n,void 0);this.OptionsClass=t.OptionsClass;let i=t.nameKey.split(".");i.length==1?this.configKey=i[0]:this.configKey=i[i.length-2],this.nameKey=t.nameKey,this.descriptionKey=t.descriptionKey,this.optionsKey=t.optionsKey}get defaultValue(){return new this.OptionsClass()[this.optionsKey]}get option(){return _(this,_n)||Me(this,_n,this.buildOption()),_(this,_n)}setRuleOption(t,i){let n=i[this.configKey];n!==void 0&&(t[this.optionsKey]=n)}};_n=new WeakMap;var H=class extends Wi{buildOption(){return new Bn(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Qs=class extends Wi{buildOption(){return new Cr(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},ee=class extends Wi{constructor(t){super(t),this.records=t.records.map(i=>new Hs("enums."+i.value,i.description))}buildOption(){return new Us(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue,this.records)}},pe=class extends Wi{constructor(t){super(t),this.separator=t.separator??` +`,this.splitter=t.splitter??/\n/}buildOption(){return new Ys(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue.join(this.separator))}setRuleOption(t,i){if(i[this.configKey]!==void 0){let n=i[this.configKey].split(this.splitter).filter(function(r){return r!=""});t[this.optionsKey]=n}}},xe=class extends Wi{buildOption(){return new Cr(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Zs=class extends Wi{buildOption(){return new Ps(this.configKey,this.nameKey,this.descriptionKey,this.defaultValue)}},Js=class extends Wi{buildOption(){return new Ws(this.configKey,this.nameKey,this.descriptionKey)}};var dc=class{},Mr=class extends y{constructor(){super({nameKey:"rules.add-blank-line-after-yaml.name",descriptionKey:"rules.add-blank-line-after-yaml.description",type:"YAML"})}get OptionsClass(){return dc}apply(t,i){let n=t.match(Ge);if(n===null)return t;let r=n[0],a=t.indexOf(r)+r.length;return a+1>=t.length||t.trimEnd()===r.trimEnd()||t.charAt(a+1)===` +`?t:t.replace(r,r+` +`)}get optionBuilders(){return[]}};Mr=z([y.register],Mr);var uc=new Map([["1nd","1st"],["2rd","2nd"],["2st","2nd"],["3nd","3rd"],["3st","3rd"],["4rd","4th"],["a-diaerers","a-diaereses"],["aaccess","access"],["aaccessibility","accessibility"],["aaccession","accession"],["aack","ack"],["aactual","actual"],["aactually","actually"],["aadd","add"],["aagain","again"],["aaggregation","aggregation"],["aanother","another"],["aapply","apply"],["aaproximate","approximate"],["aaproximated","approximated"],["aaproximately","approximately"],["aaproximates","approximates"],["aaproximating","approximating"],["aare","are"],["aassign","assign"],["aassignment","assignment"],["aassignments","assignments"],["aassociated","associated"],["aassumed","assumed"],["aautomatic","automatic"],["aautomatically","automatically"],["abailable","available"],["abanden","abandon"],["abandonded","abandoned"],["abandone","abandon"],["abandonned","abandoned"],["abandonning","abandoning"],["abbbreviated","abbreviated"],["abberation","aberration"],["abberations","aberrations"],["abberivates","abbreviates"],["abberration","aberration"],["abborted","aborted"],["abborting","aborting"],["abbrevate","abbreviate"],["abbrevation","abbreviation"],["abbrevations","abbreviations"],["abbreviaton","abbreviation"],["abbreviatons","abbreviations"],["abbriviate","abbreviate"],["abbriviation","abbreviation"],["abbriviations","abbreviations"],["aberation","aberration"],["abigious","ambiguous"],["abiguity","ambiguity"],["abilityes","abilities"],["abilties","abilities"],["abilty","ability"],["abiss","abyss"],["abitrarily","arbitrarily"],["abitrary","arbitrary"],["abitrate","arbitrate"],["abitration","arbitration"],["abizmal","abysmal"],["abnoramlly","abnormally"],["abnormalty","abnormally"],["abnormaly","abnormally"],["abnornally","abnormally"],["abnove","above"],["abnrormal","abnormal"],["aboluste","absolute"],["abolustely","absolutely"],["abolute","absolute"],["abondon","abandon"],["abondoned","abandoned"],["abondoning","abandoning"],["abondons","abandons"],["aboout","about"],["aborigene","aborigine"],["abortificant","abortifacient"],["aboslute","absolute"],["aboslutely","absolutely"],["abosulte","absolute"],["abosultely","absolutely"],["abosulute","absolute"],["abosulutely","absolutely"],["abotu","about"],["abount","about"],["aboutit","about it"],["aboutthe","about the"],["abouve","above"],["abov","above"],["aboved","above"],["abovemtioned","abovementioned"],["aboves","above"],["abovmentioned","abovementioned"],["abreviate","abbreviate"],["abreviated","abbreviated"],["abreviates","abbreviates"],["abreviating","abbreviating"],["abreviation","abbreviation"],["abreviations","abbreviations"],["abritrarily","arbitrarily"],["abritrary","arbitrary"],["abriviate","abbreviate"],["absail","abseil"],["absailing","abseiling"],["absance","absence"],["abscence","absence"],["abscound","abscond"],["abselutely","absolutely"],["abselutly","absolutely"],["absense","absence"],["absodefly","absolute"],["absodeflyly","absolutely"],["absolate","absolute"],["absolately","absolutely"],["absolaute","absolute"],["absolautely","absolutely"],["absoleted","obsoleted"],["absoletely","absolutely"],["absoliute","absolute"],["absoliutely","absolutely"],["absoloute","absolute"],["absoloutely","absolutely"],["absolte","absolute"],["absoltely","absolutely"],["absoltue","absolute"],["absoltuely","absolutely"],["absoluate","absolute"],["absoluately","absolutely"],["absolue","absolute"],["absoluely","absolutely"],["absoluet","absolute"],["absoluetly","absolutely"],["absolule","absolute"],["absolulte","absolute"],["absolultely","absolutely"],["absolune","absolute"],["absolunely","absolutely"],["absolure","absolute"],["absolurely","absolutely"],["absolut","absolute"],["absolutelly","absolutely"],["absoluth","absolute"],["absoluthe","absolute"],["absoluthely","absolutely"],["absoluthly","absolutely"],["absolutley","absolutely"],["absolutly","absolutely"],["absolutlye","absolutely"],["absoluute","absolute"],["absoluutely","absolutely"],["absoluve","absolute"],["absoluvely","absolutely"],["absoolute","absolute"],["absoolutely","absolutely"],["absorbant","absorbent"],["absorbsion","absorption"],["absorbtion","absorption"],["absorve","absorb"],["absould","absolute"],["absouldly","absolutely"],["absoule","absolute"],["absoulely","absolutely"],["absouletely","absolutely"],["absoult","absolute"],["absoulte","absolute"],["absoultely","absolutely"],["absoultly","absolutely"],["absoulute","absolute"],["absoulutely","absolutely"],["absout","absolute"],["absoute","absolute"],["absoutely","absolutely"],["absoutly","absolutely"],["abstact","abstract"],["abstacted","abstracted"],["abstacter","abstracter"],["abstacting","abstracting"],["abstaction","abstraction"],["abstactions","abstractions"],["abstactly","abstractly"],["abstactness","abstractness"],["abstactor","abstractor"],["abstacts","abstracts"],["abstanence","abstinence"],["abstrac","abstract"],["abstraced","abstracted"],["abstracer","abstracter"],["abstracing","abstracting"],["abstracion","abstraction"],["abstracions","abstractions"],["abstracly","abstractly"],["abstracness","abstractness"],["abstracor","abstractor"],["abstracs","abstracts"],["abstrat","abstract"],["abstrated","abstracted"],["abstrater","abstracter"],["abstrating","abstracting"],["abstration","abstraction"],["abstrations","abstractions"],["abstratly","abstractly"],["abstratness","abstractness"],["abstrator","abstractor"],["abstrats","abstracts"],["abstrct","abstract"],["abstrcted","abstracted"],["abstrcter","abstracter"],["abstrcting","abstracting"],["abstrction","abstraction"],["abstrctions","abstractions"],["abstrctly","abstractly"],["abstrctness","abstractness"],["abstrctor","abstractor"],["abstrcts","abstracts"],["absulute","absolute"],["absymal","abysmal"],["abtract","abstract"],["abtracted","abstracted"],["abtracter","abstracter"],["abtracting","abstracting"],["abtraction","abstraction"],["abtractions","abstractions"],["abtractly","abstractly"],["abtractness","abstractness"],["abtractor","abstractor"],["abtracts","abstracts"],["abudance","abundance"],["abudances","abundances"],["abundacies","abundances"],["abundancies","abundances"],["abundand","abundant"],["abundence","abundance"],["abundent","abundant"],["abundunt","abundant"],["abutts","abuts"],["abvailable","available"],["abvious","obvious"],["acadamy","academy"],["acadimy","academy"],["acadmic","academic"],["acale","scale"],["acatemy","academy"],["accademic","academic"],["accademy","academy"],["accapt","accept"],["accapted","accepted"],["accapts","accepts"],["acccept","accept"],["acccepted","accepted"],["acccepting","accepting"],["acccepts","accepts"],["accces","access"],["acccess","access"],["acccessd","accessed"],["acccessed","accessed"],["acccesses","accesses"],["acccessibility","accessibility"],["acccessible","accessible"],["acccessing","accessing"],["acccession","accession"],["acccessor","accessor"],["acccessors","accessors"],["acccord","accord"],["acccordance","accordance"],["acccordances","accordances"],["acccorded","accorded"],["acccording","according"],["acccordingly","accordingly"],["acccords","accords"],["acccount","account"],["acccumulate","accumulate"],["acccuracy","accuracy"],["acccurate","accurate"],["acccurately","accurately"],["acccused","accused"],["accecpt","accept"],["accecpted","accepted"],["accees","access"],["acceess","access"],["accelarate","accelerate"],["accelaration","acceleration"],["accelarete","accelerate"],["accelearion","acceleration"],["accelearte","accelerate"],["accelearted","accelerated"],["acceleartes","accelerates"],["acceleartion","acceleration"],["acceleartor","accelerator"],["acceleated","accelerated"],["acceleratoin","acceleration"],["acceleraton","acceleration"],["acceleratrion","acceleration"],["accelerte","accelerate"],["accelertion","acceleration"],["accellerate","accelerate"],["accellerated","accelerated"],["accellerating","accelerating"],["accelleration","acceleration"],["accellerator","accelerator"],["accending","ascending"],["acceot","accept"],["accepatble","acceptable"],["accepect","accept"],["accepected","accepted"],["accepeted","accepted"],["acceppt","accept"],["acceptence","acceptance"],["acceptible","acceptable"],["acceptted","accepted"],["acces","access"],["accesed","accessed"],["acceses","accesses"],["accesibility","accessibility"],["accesible","accessible"],["accesiblity","accessibility"],["accesiibility","accessibility"],["accesiiblity","accessibility"],["accesing","accessing"],["accesnt","accent"],["accesor","accessor"],["accesories","accessories"],["accesors","accessors"],["accesory","accessory"],["accessability","accessibility"],["accessable","accessible"],["accessbile","accessible"],["accessiable","accessible"],["accessibile","accessible"],["accessibiliity","accessibility"],["accessibilitiy","accessibility"],["accessibiltiy","accessibility"],["accessibilty","accessibility"],["accessiblilty","accessibility"],["accessiblity","accessibility"],["accessiibility","accessibility"],["accessiiblity","accessibility"],["accessile","accessible"],["accessintg","accessing"],["accessisble","accessible"],["accessoire","accessory"],["accessort","accessor"],["accesss","access"],["accesssibility","accessibility"],["accesssible","accessible"],["accesssiblity","accessibility"],["accesssiiblity","accessibility"],["accesssing","accessing"],["accesssor","accessor"],["accesssors","accessors"],["accet","accept"],["accetable","acceptable"],["accets","accepts"],["acchiev","achieve"],["acchievable","achievable"],["acchieve","achieve"],["acchieveable","achievable"],["acchieved","achieved"],["acchievement","achievement"],["acchievements","achievements"],["acchiever","achiever"],["acchieves","achieves"],["accidant","accident"],["acciddently","accidentally"],["accidentaly","accidentally"],["accidential","accidental"],["accidentially","accidentally"],["accidentically","accidentally"],["accidentilly","accidentally"],["accidentily","accidentally"],["accidently","accidentally"],["accidentually","accidentally"],["accidetly","accidentally"],["acciedential","accidental"],["acciednetally","accidentally"],["accient","accident"],["acciental","accidental"],["acclerated","accelerated"],["acclerates","accelerates"],["accleration","acceleration"],["acclerometers","accelerometers"],["acclimitization","acclimatization"],["accociate","associate"],["accociated","associated"],["accociates","associates"],["accociating","associating"],["accociation","association"],["accociations","associations"],["accoding","according"],["accodingly","accordingly"],["accodr","accord"],["accodrance","accordance"],["accodred","accorded"],["accodring","according"],["accodringly","accordingly"],["accodrs","accords"],["accointing","accounting"],["accoird","accord"],["accoirding","according"],["accomadate","accommodate"],["accomadated","accommodated"],["accomadates","accommodates"],["accomadating","accommodating"],["accomadation","accommodation"],["accomadations","accommodations"],["accomdate","accommodate"],["accomidate","accommodate"],["accommadate","accommodate"],["accommadates","accommodates"],["accommadating","accommodating"],["accommdated","accommodated"],["accomodata","accommodate"],["accomodate","accommodate"],["accomodated","accommodated"],["accomodates","accommodates"],["accomodating","accommodating"],["accomodation","accommodation"],["accomodations","accommodations"],["accompagned","accompanied"],["accompagnied","accompanied"],["accompagnies","accompanies"],["accompagniment","accompaniment"],["accompagning","accompanying"],["accompagny","accompany"],["accompagnying","accompanying"],["accompained","accompanied"],["accompanyed","accompanied"],["accompt","account"],["acconding","according"],["accont","account"],["accontant","accountant"],["acconted","accounted"],["acconting","accounting"],["accoording","according"],["accoordingly","accordingly"],["accoount","account"],["accopunt","account"],["accordding","according"],["accordeon","accordion"],["accordian","accordion"],["accordign","according"],["accordiingly","accordingly"],["accordinag","according"],["accordind","according"],["accordinly","accordingly"],["accordint","according"],["accordintly","accordingly"],["accordling","according"],["accordlingly","accordingly"],["accordng","according"],["accordngly","accordingly"],["accoriding","according"],["accoridng","according"],["accoridngly","accordingly"],["accoringly","accordingly"],["accorndingly","accordingly"],["accort","accord"],["accortance","accordance"],["accorted","accorded"],["accortind","according"],["accorting","according"],["accound","account"],["accouned","accounted"],["accoustic","acoustic"],["accoustically","acoustically"],["accoustics","acoustics"],["accout","account"],["accouting","accounting"],["accoutn","account"],["accpet","accept"],["accpets","accepts"],["accquainted","acquainted"],["accquire","acquire"],["accquired","acquired"],["accquires","acquires"],["accquiring","acquiring"],["accracy","accuracy"],["accrate","accurate"],["accrding","according"],["accrdingly","accordingly"],["accrediation","accreditation"],["accredidation","accreditation"],["accress","access"],["accroding","according"],["accrodingly","accordingly"],["accronym","acronym"],["accronyms","acronyms"],["accrording","according"],["accros","across"],["accrose","across"],["accross","across"],["accsess","access"],["accss","access"],["accssible","accessible"],["accssor","accessor"],["acctual","actual"],["accuarcy","accuracy"],["accuarte","accurate"],["accuartely","accurately"],["accumalate","accumulate"],["accumalates","accumulates"],["accumalator","accumulator"],["accumalte","accumulate"],["accumalted","accumulated"],["accumilated","accumulated"],["accumlate","accumulate"],["accumlated","accumulated"],["accumlates","accumulates"],["accumlating","accumulating"],["accumlator","accumulator"],["accummulating","accumulating"],["accummulators","accumulators"],["accumualte","accumulate"],["accumualtion","accumulation"],["accupied","occupied"],["accupts","accepts"],["accurable","accurate"],["accuraccies","accuracies"],["accuraccy","accuracy"],["accurancy","accuracy"],["accurarcy","accuracy"],["accuratelly","accurately"],["accuratley","accurately"],["accuratly","accurately"],["accurences","occurrences"],["accurracy","accuracy"],["accurring","occurring"],["accussed","accused"],["acditionally","additionally"],["acecess","access"],["acedemic","academic"],["acelerated","accelerated"],["acend","ascend"],["acendance","ascendance"],["acendancey","ascendancy"],["acended","ascended"],["acendence","ascendance"],["acendencey","ascendancy"],["acendency","ascendancy"],["acender","ascender"],["acending","ascending"],["acent","ascent"],["aceptable","acceptable"],["acerage","acreage"],["acess","access"],["acessable","accessible"],["acessed","accessed"],["acesses","accesses"],["acessible","accessible"],["acessing","accessing"],["acessor","accessor"],["acheive","achieve"],["acheived","achieved"],["acheivement","achievement"],["acheivements","achievements"],["acheives","achieves"],["acheiving","achieving"],["acheivment","achievement"],["acheivments","achievements"],["achievment","achievement"],["achievments","achievements"],["achitecture","architecture"],["achitectures","architectures"],["achivable","achievable"],["achivement","achievement"],["achivements","achievements"],["achor","anchor"],["achored","anchored"],["achoring","anchoring"],["achors","anchors"],["ACI","ACPI"],["acident","accident"],["acidental","accidental"],["acidentally","accidentally"],["acidents","accidents"],["acient","ancient"],["acients","ancients"],["ACII","ASCII"],["acition","action"],["acitions","actions"],["acitivate","activate"],["acitivation","activation"],["acitivity","activity"],["acitvate","activate"],["acitve","active"],["acivate","activate"],["acive","active"],["acknodledgment","acknowledgment"],["acknodledgments","acknowledgments"],["acknoledge","acknowledge"],["acknoledged","acknowledged"],["acknoledges","acknowledges"],["acknoledging","acknowledging"],["acknoledgment","acknowledgment"],["acknoledgments","acknowledgments"],["acknowldeged","acknowledged"],["acknowldegement","acknowledgement"],["acknowldegements","acknowledgements"],["acknowledgeing","acknowledging"],["acknowleding","acknowledging"],["acknowlege","acknowledge"],["acknowleged","acknowledged"],["acknowlegement","acknowledgement"],["acknowlegements","acknowledgements"],["acknowleges","acknowledges"],["acknowleging","acknowledging"],["acknowlegment","acknowledgment"],["ackowledge","acknowledge"],["ackowledged","acknowledged"],["ackowledgement","acknowledgement"],["ackowledgements","acknowledgements"],["ackowledges","acknowledges"],["ackowledging","acknowledging"],["acnowledge","acknowledge"],["acocunt","account"],["acommodate","accommodate"],["acommodated","accommodated"],["acommodates","accommodates"],["acommodating","accommodating"],["acommodation","accommodation"],["acommpany","accompany"],["acommpanying","accompanying"],["acomodate","accommodate"],["acomodated","accommodated"],["acompanies","accompanies"],["acomplish","accomplish"],["acomplished","accomplished"],["acomplishment","accomplishment"],["acomplishments","accomplishments"],["acontiguous","a contiguous"],["acoording","according"],["acoordingly","accordingly"],["acording","according"],["acordingly","accordingly"],["acordinng","according"],["acorss","across"],["acorting","according"],["acount","account"],["acounts","accounts"],["acquaintence","acquaintance"],["acquaintences","acquaintances"],["acquiantence","acquaintance"],["acquiantences","acquaintances"],["acquiesence","acquiescence"],["acquisiton","acquisition"],["acquisitons","acquisitions"],["acquited","acquitted"],["acquition","acquisition"],["acqure","acquire"],["acqured","acquired"],["acqures","acquires"],["acquring","acquiring"],["acqusition","acquisition"],["acqusitions","acquisitions"],["acrage","acreage"],["acroos","across"],["acrosss","across"],["acrue","accrue"],["acrued","accrued"],["acssume","assume"],["acssumed","assumed"],["actal","actual"],["actally","actually"],["actaly","actually"],["actaul","actual"],["actaully","actually"],["actial","actual"],["actially","actually"],["actialy","actually"],["actiavte","activate"],["actiavted","activated"],["actiavtes","activates"],["actiavting","activating"],["actiavtion","activation"],["actiavtions","activations"],["actiavtor","activator"],["actibity","activity"],["acticate","activate"],["actice","active"],["actine","active"],["actiual","actual"],["activ","active"],["activaed","activated"],["activationg","activating"],["actived","activated"],["activeta","activate"],["activete","activate"],["activeted","activated"],["activetes","activates"],["activiate","activate"],["activies","activities"],["activites","activities"],["activitis","activities"],["activitites","activities"],["activitiy","activity"],["activley","actively"],["activly","actively"],["activste","activate"],["activsted","activated"],["activstes","activates"],["activtes","activates"],["activties","activities"],["activtion","activation"],["activty","activity"],["activw","active"],["activy","activity"],["actove","active"],["actuaal","actual"],["actuaally","actually"],["actuak","actual"],["actuakly","actually"],["actuallin","actually"],["actualy","actually"],["actualyl","actually"],["actuell","actual"],["actuion","action"],["actuionable","actionable"],["actul","actual"],["actullay","actually"],["actully","actually"],["actural","actual"],["acturally","actually"],["actusally","actually"],["actve","active"],["actzal","actual"],["acual","actual"],["acually","actually"],["acuired","acquired"],["acuires","acquires"],["acumulate","accumulate"],["acumulated","accumulated"],["acumulates","accumulates"],["acumulating","accumulating"],["acumulation","accumulation"],["acumulative","accumulative"],["acumulator","accumulator"],["acuqire","acquire"],["acuracy","accuracy"],["acurate","accurate"],["acused","accused"],["acustom","accustom"],["acustommed","accustomed"],["acutal","actual"],["acutally","actually"],["acutual","actual"],["adapated","adapted"],["adapater","adapter"],["adapaters","adapters"],["adapative","adaptive"],["adapdive","adaptive"],["adapive","adaptive"],["adaptaion","adaptation"],["adaptare","adapter"],["adapte","adapter"],["adaptee","adapted"],["adaptes","adapters"],["adaptibe","adaptive"],["adaquate","adequate"],["adaquately","adequately"],["adatper","adapter"],["adatpers","adapters"],["adavance","advance"],["adavanced","advanced"],["adbandon","abandon"],["addapt","adapt"],["addaptation","adaptation"],["addaptations","adaptations"],["addapted","adapted"],["addapting","adapting"],["addapts","adapts"],["addd","add"],["addded","added"],["addding","adding"],["adddress","address"],["adddresses","addresses"],["addds","adds"],["addedd","added"],["addeed","added"],["addersses","addresses"],["addert","assert"],["adderted","asserted"],["addess","address"],["addessed","addressed"],["addesses","addresses"],["addessing","addressing"],["addied","added"],["addig","adding"],["addiional","additional"],["addiiton","addition"],["addiitonall","additional"],["addional","additional"],["addionally","additionally"],["addiotion","addition"],["addiotional","additional"],["addiotionally","additionally"],["addiotions","additions"],["additianal","additional"],["additianally","additionally"],["additinal","additional"],["additinally","additionally"],["additioanal","additional"],["additioanally","additionally"],["additioanlly","additionally"],["additiona","additional"],["additionallly","additionally"],["additionals","additional"],["additionaly","additionally"],["additionalyy","additionally"],["additionnal","additional"],["additionnally","additionally"],["additionnaly","additionally"],["additoin","addition"],["additoinal","additional"],["additoinally","additionally"],["additoinaly","additionally"],["additon","addition"],["additonal","additional"],["additonally","additionally"],["additonaly","additionally"],["addjust","adjust"],["addjusted","adjusted"],["addjusting","adjusting"],["addjusts","adjusts"],["addmission","admission"],["addmit","admit"],["addopt","adopt"],["addopted","adopted"],["addpress","address"],["addrass","address"],["addrees","address"],["addreess","address"],["addrerss","address"],["addrerssed","addressed"],["addrersser","addresser"],["addrersses","addresses"],["addrerssing","addressing"],["addrersss","address"],["addrersssed","addressed"],["addrerssser","addresser"],["addrerssses","addresses"],["addrersssing","addressing"],["addres","address"],["addresable","addressable"],["addresed","addressed"],["addreses","addresses"],["addresess","addresses"],["addresing","addressing"],["addressess","addresses"],["addressings","addressing"],["addresss","address"],["addresssed","addressed"],["addressses","addresses"],["addresssing","addressing"],["addrress","address"],["addrss","address"],["addrssed","addressed"],["addrsses","addresses"],["addrssing","addressing"],["addted","added"],["addtion","addition"],["addtional","additional"],["addtionally","additionally"],["addtitional","additional"],["adecuate","adequate"],["aded","added"],["adequit","adequate"],["adevnture","adventure"],["adevntured","adventured"],["adevnturer","adventurer"],["adevnturers","adventurers"],["adevntures","adventures"],["adevnturing","adventuring"],["adhearing","adhering"],["adherance","adherence"],["adiacent","adjacent"],["adiditon","addition"],["adin","admin"],["ading","adding"],["adition","addition"],["aditional","additional"],["aditionally","additionally"],["aditionaly","additionally"],["aditionnal","additional"],["adivsories","advisories"],["adivsoriyes","advisories"],["adivsory","advisory"],["adjacentsy","adjacency"],["adjactend","adjacent"],["adjancent","adjacent"],["adjascent","adjacent"],["adjasence","adjacence"],["adjasencies","adjacencies"],["adjasensy","adjacency"],["adjasent","adjacent"],["adjast","adjust"],["adjcence","adjacence"],["adjcencies","adjacencies"],["adjcent","adjacent"],["adjcentcy","adjacency"],["adjsence","adjacence"],["adjsencies","adjacencies"],["adjsuted","adjusted"],["adjuscent","adjacent"],["adjusment","adjustment"],["adjustement","adjustment"],["adjustements","adjustments"],["adjustificat","justification"],["adjustification","justification"],["adjustmant","adjustment"],["adjustmants","adjustments"],["adjustmenet","adjustment"],["admendment","amendment"],["admi","admin"],["admininistrative","administrative"],["admininistrator","administrator"],["admininistrators","administrators"],["admininstrator","administrator"],["administation","administration"],["administator","administrator"],["administor","administrator"],["administraively","administratively"],["adminitrator","administrator"],["adminssion","admission"],["adminstered","administered"],["adminstrate","administrate"],["adminstration","administration"],["adminstrative","administrative"],["adminstrator","administrator"],["adminstrators","administrators"],["admisible","admissible"],["admissability","admissibility"],["admissable","admissible"],["admited","admitted"],["admitedly","admittedly"],["admn","admin"],["admnistrator","administrator"],["admnistrators","administrators"],["adn","and"],["adobted","adopted"],["adolecent","adolescent"],["adpapted","adapted"],["adpat","adapt"],["adpated","adapted"],["adpater","adapter"],["adpaters","adapters"],["adpats","adapts"],["adpter","adapter"],["adquire","acquire"],["adquired","acquired"],["adquires","acquires"],["adquiring","acquiring"],["adrea","area"],["adrerss","address"],["adrerssed","addressed"],["adrersser","addresser"],["adrersses","addresses"],["adrerssing","addressing"],["adres","address"],["adresable","addressable"],["adresing","addressing"],["adress","address"],["adressable","addressable"],["adresse","address"],["adressed","addressed"],["adresses","addresses"],["adressing","addressing"],["adresss","address"],["adressses","addresses"],["adrress","address"],["adrresses","addresses"],["adtodetect","autodetect"],["adusted","adjusted"],["adustment","adjustment"],["advanatage","advantage"],["advanatages","advantages"],["advanatge","advantage"],["advandced","advanced"],["advane","advance"],["advaned","advanced"],["advantagous","advantageous"],["advanved","advanced"],["adventages","advantages"],["adventrous","adventurous"],["adverised","advertised"],["advertice","advertise"],["adverticed","advertised"],["advertisment","advertisement"],["advertisments","advertisements"],["advertistment","advertisement"],["advertistments","advertisements"],["advertize","advertise"],["advertized","advertised"],["advertizes","advertises"],["advesary","adversary"],["advetise","advertise"],["adviced","advised"],["adviseable","advisable"],["advisoriyes","advisories"],["advizable","advisable"],["adwances","advances"],["aequidistant","equidistant"],["aequivalent","equivalent"],["aeriel","aerial"],["aeriels","aerials"],["aesily","easily"],["aesy","easy"],["aexs","axes"],["afair","affair"],["afaraid","afraid"],["afe","safe"],["afecting","affecting"],["afer","after"],["aferwards","afterwards"],["afetr","after"],["affecfted","affected"],["afficianados","aficionados"],["afficionado","aficionado"],["afficionados","aficionados"],["affilate","affiliate"],["affilates","affiliates"],["affilation","affiliation"],["affilations","affiliations"],["affilliate","affiliate"],["affinitied","affinities"],["affinitiy","affinity"],["affinitze","affinitize"],["affinties","affinities"],["affintiy","affinity"],["affintize","affinitize"],["affinty","affinity"],["affitnity","affinity"],["afforementioned","aforementioned"],["affortable","affordable"],["afforts","affords"],["affraid","afraid"],["afinity","affinity"],["afor","for"],["aforememtioned","aforementioned"],["aforementiond","aforementioned"],["aforementionned","aforementioned"],["aformentioned","aforementioned"],["afterall","after all"],["afterw","after"],["aftrer","after"],["aftzer","after"],["againnst","against"],["againsg","against"],["againt","against"],["againts","against"],["agaisnt","against"],["agaist","against"],["agancies","agencies"],["agancy","agency"],["aganist","against"],["agant","agent"],["aggaravates","aggravates"],["aggegate","aggregate"],["aggessive","aggressive"],["aggessively","aggressively"],["agggregate","aggregate"],["aggragate","aggregate"],["aggragator","aggregator"],["aggrated","aggregated"],["aggreagate","aggregate"],["aggreataon","aggregation"],["aggreate","aggregate"],["aggreated","aggregated"],["aggreation","aggregation"],["aggreations","aggregations"],["aggreed","agreed"],["aggreement","agreement"],["aggregatet","aggregated"],["aggregetor","aggregator"],["aggreggate","aggregate"],["aggregious","egregious"],["aggregrate","aggregate"],["aggregrated","aggregated"],["aggresive","aggressive"],["aggresively","aggressively"],["aggrevate","aggravate"],["aggrgate","aggregate"],["agian","again"],["agianst","against"],["agin","again"],["aginst","against"],["aglorithm","algorithm"],["aglorithms","algorithms"],["agorithm","algorithm"],["agrain","again"],["agravate","aggravate"],["agre","agree"],["agred","agreed"],["agreeement","agreement"],["agreemnet","agreement"],["agreemnets","agreements"],["agreemnt","agreement"],["agregate","aggregate"],["agregated","aggregated"],["agregates","aggregates"],["agregation","aggregation"],["agregator","aggregator"],["agreing","agreeing"],["agrement","agreement"],["agression","aggression"],["agressive","aggressive"],["agressively","aggressively"],["agressiveness","aggressiveness"],["agressivity","aggressivity"],["agressor","aggressor"],["agresssive","aggressive"],["agrgument","argument"],["agrguments","arguments"],["agricultue","agriculture"],["agriculure","agriculture"],["agricuture","agriculture"],["agrieved","aggrieved"],["agrresive","aggressive"],["agrument","argument"],["agruments","arguments"],["agsinst","against"],["agument","argument"],["agumented","augmented"],["aguments","arguments"],["aheared","adhered"],["ahev","have"],["ahlpa","alpha"],["ahlpas","alphas"],["ahppen","happen"],["ahve","have"],["aicraft","aircraft"],["aiffer","differ"],["ailgn","align"],["aiport","airport"],["airator","aerator"],["airbourne","airborne"],["aircaft","aircraft"],["aircrafts'","aircraft's"],["aircrafts","aircraft"],["airfow","airflow"],["airlfow","airflow"],["airloom","heirloom"],["airporta","airports"],["airrcraft","aircraft"],["aisian","Asian"],["aixs","axis"],["aizmuth","azimuth"],["ajacence","adjacence"],["ajacencies","adjacencies"],["ajacency","adjacency"],["ajacent","adjacent"],["ajacentcy","adjacency"],["ajasence","adjacence"],["ajasencies","adjacencies"],["ajative","adjective"],["ajcencies","adjacencies"],["ajsencies","adjacencies"],["ajurnment","adjournment"],["ajust","adjust"],["ajusted","adjusted"],["ajustement","adjustment"],["ajusting","adjusting"],["ajustment","adjustment"],["ajustments","adjustments"],["ake","ache"],["akkumulate","accumulate"],["akkumulated","accumulated"],["akkumulates","accumulates"],["akkumulating","accumulating"],["akkumulation","accumulation"],["akkumulative","accumulative"],["akkumulator","accumulator"],["aknowledge","acknowledge"],["aks","ask"],["aksed","asked"],["aktivate","activate"],["aktivated","activated"],["aktivates","activates"],["aktivating","activating"],["aktivation","activation"],["akumulate","accumulate"],["akumulated","accumulated"],["akumulates","accumulates"],["akumulating","accumulating"],["akumulation","accumulation"],["akumulative","accumulative"],["akumulator","accumulator"],["alaready","already"],["albiet","albeit"],["albumns","albums"],["alcemy","alchemy"],["alchohol","alcohol"],["alchoholic","alcoholic"],["alchol","alcohol"],["alcholic","alcoholic"],["alcohal","alcohol"],["alcoholical","alcoholic"],["aleady","already"],["aleays","always"],["aledge","allege"],["aledged","alleged"],["aledges","alleges"],["alegance","allegiance"],["alege","allege"],["aleged","alleged"],["alegience","allegiance"],["alegorical","allegorical"],["alernate","alternate"],["alernated","alternated"],["alernately","alternately"],["alernates","alternates"],["alers","alerts"],["aleviate","alleviate"],["aleviates","alleviates"],["aleviating","alleviating"],["alevt","alert"],["algebraical","algebraic"],["algebric","algebraic"],["algebrra","algebra"],["algee","algae"],["alghorithm","algorithm"],["alghoritm","algorithm"],["alghoritmic","algorithmic"],["alghoritmically","algorithmically"],["alghoritms","algorithms"],["algined","aligned"],["alginment","alignment"],["alginments","alignments"],["algohm","algorithm"],["algohmic","algorithmic"],["algohmically","algorithmically"],["algohms","algorithms"],["algoirthm","algorithm"],["algoirthmic","algorithmic"],["algoirthmically","algorithmically"],["algoirthms","algorithms"],["algoithm","algorithm"],["algoithmic","algorithmic"],["algoithmically","algorithmically"],["algoithms","algorithms"],["algolithm","algorithm"],["algolithmic","algorithmic"],["algolithmically","algorithmically"],["algolithms","algorithms"],["algoorithm","algorithm"],["algoorithmic","algorithmic"],["algoorithmically","algorithmically"],["algoorithms","algorithms"],["algoprithm","algorithm"],["algoprithmic","algorithmic"],["algoprithmically","algorithmically"],["algoprithms","algorithms"],["algorgithm","algorithm"],["algorgithmic","algorithmic"],["algorgithmically","algorithmically"],["algorgithms","algorithms"],["algorhithm","algorithm"],["algorhithmic","algorithmic"],["algorhithmically","algorithmically"],["algorhithms","algorithms"],["algorhitm","algorithm"],["algorhitmic","algorithmic"],["algorhitmically","algorithmically"],["algorhitms","algorithms"],["algorhtm","algorithm"],["algorhtmic","algorithmic"],["algorhtmically","algorithmically"],["algorhtms","algorithms"],["algorhythm","algorithm"],["algorhythmic","algorithmic"],["algorhythmically","algorithmically"],["algorhythms","algorithms"],["algorhytm","algorithm"],["algorhytmic","algorithmic"],["algorhytmically","algorithmically"],["algorhytms","algorithms"],["algorightm","algorithm"],["algorightmic","algorithmic"],["algorightmically","algorithmically"],["algorightms","algorithms"],["algorihm","algorithm"],["algorihmic","algorithmic"],["algorihmically","algorithmically"],["algorihms","algorithms"],["algorihtm","algorithm"],["algorihtmic","algorithmic"],["algorihtmically","algorithmically"],["algorihtms","algorithms"],["algoristhms","algorithms"],["algorith","algorithm"],["algorithem","algorithm"],["algorithemic","algorithmic"],["algorithemically","algorithmically"],["algorithems","algorithms"],["algorithic","algorithmic"],["algorithically","algorithmically"],["algorithim","algorithm"],["algorithimes","algorithms"],["algorithimic","algorithmic"],["algorithimically","algorithmically"],["algorithims","algorithms"],["algorithmes","algorithms"],["algorithmi","algorithm"],["algorithmical","algorithmically"],["algorithmm","algorithm"],["algorithmmic","algorithmic"],["algorithmmically","algorithmically"],["algorithmms","algorithms"],["algorithmn","algorithm"],["algorithmnic","algorithmic"],["algorithmnically","algorithmically"],["algorithmns","algorithms"],["algoriths","algorithms"],["algorithsmic","algorithmic"],["algorithsmically","algorithmically"],["algorithsms","algorithms"],["algoritm","algorithm"],["algoritmic","algorithmic"],["algoritmically","algorithmically"],["algoritms","algorithms"],["algoroithm","algorithm"],["algoroithmic","algorithmic"],["algoroithmically","algorithmically"],["algoroithms","algorithms"],["algororithm","algorithm"],["algororithmic","algorithmic"],["algororithmically","algorithmically"],["algororithms","algorithms"],["algorothm","algorithm"],["algorothmic","algorithmic"],["algorothmically","algorithmically"],["algorothms","algorithms"],["algorrithm","algorithm"],["algorrithmic","algorithmic"],["algorrithmically","algorithmically"],["algorrithms","algorithms"],["algorritm","algorithm"],["algorritmic","algorithmic"],["algorritmically","algorithmically"],["algorritms","algorithms"],["algorthim","algorithm"],["algorthimic","algorithmic"],["algorthimically","algorithmically"],["algorthims","algorithms"],["algorthin","algorithm"],["algorthinic","algorithmic"],["algorthinically","algorithmically"],["algorthins","algorithms"],["algorthm","algorithm"],["algorthmic","algorithmic"],["algorthmically","algorithmically"],["algorthms","algorithms"],["algorthn","algorithm"],["algorthnic","algorithmic"],["algorthnically","algorithmically"],["algorthns","algorithms"],["algorthym","algorithm"],["algorthymic","algorithmic"],["algorthymically","algorithmically"],["algorthyms","algorithms"],["algorthyn","algorithm"],["algorthynic","algorithmic"],["algorthynically","algorithmically"],["algorthyns","algorithms"],["algortihm","algorithm"],["algortihmic","algorithmic"],["algortihmically","algorithmically"],["algortihms","algorithms"],["algortim","algorithm"],["algortimic","algorithmic"],["algortimically","algorithmically"],["algortims","algorithms"],["algortism","algorithm"],["algortismic","algorithmic"],["algortismically","algorithmically"],["algortisms","algorithms"],["algortithm","algorithm"],["algortithmic","algorithmic"],["algortithmically","algorithmically"],["algortithms","algorithms"],["algoruthm","algorithm"],["algoruthmic","algorithmic"],["algoruthmically","algorithmically"],["algoruthms","algorithms"],["algorwwithm","algorithm"],["algorwwithmic","algorithmic"],["algorwwithmically","algorithmically"],["algorwwithms","algorithms"],["algorythem","algorithm"],["algorythemic","algorithmic"],["algorythemically","algorithmically"],["algorythems","algorithms"],["algorythm","algorithm"],["algorythmic","algorithmic"],["algorythmically","algorithmically"],["algorythms","algorithms"],["algothitm","algorithm"],["algothitmic","algorithmic"],["algothitmically","algorithmically"],["algothitms","algorithms"],["algotighm","algorithm"],["algotighmic","algorithmic"],["algotighmically","algorithmically"],["algotighms","algorithms"],["algotihm","algorithm"],["algotihmic","algorithmic"],["algotihmically","algorithmically"],["algotihms","algorithms"],["algotirhm","algorithm"],["algotirhmic","algorithmic"],["algotirhmically","algorithmically"],["algotirhms","algorithms"],["algotithm","algorithm"],["algotithmic","algorithmic"],["algotithmically","algorithmically"],["algotithms","algorithms"],["algotrithm","algorithm"],["algotrithmic","algorithmic"],["algotrithmically","algorithmically"],["algotrithms","algorithms"],["alha","alpha"],["alhabet","alphabet"],["alhabetical","alphabetical"],["alhabetically","alphabetically"],["alhabeticaly","alphabetically"],["alhabets","alphabets"],["alhapet","alphabet"],["alhapetical","alphabetical"],["alhapetically","alphabetically"],["alhapeticaly","alphabetically"],["alhapets","alphabets"],["alhough","although"],["alhpa","alpha"],["alhpabet","alphabet"],["alhpabetical","alphabetical"],["alhpabetically","alphabetically"],["alhpabeticaly","alphabetically"],["alhpabets","alphabets"],["aliagn","align"],["aliasas","aliases"],["aliasses","aliases"],["alientating","alienating"],["aliged","aligned"],["alighned","aligned"],["alighnment","alignment"],["aligin","align"],["aligined","aligned"],["aligining","aligning"],["aliginment","alignment"],["aligins","aligns"],["aligment","alignment"],["aligments","alignments"],["alignation","alignment"],["alignd","aligned"],["aligne","align"],["alignement","alignment"],["alignemnt","alignment"],["alignemnts","alignments"],["alignemt","alignment"],["alignes","aligns"],["alignmant","alignment"],["alignmen","alignment"],["alignmenet","alignment"],["alignmenets","alignments"],["alignmenton","alignment on"],["alignmet","alignment"],["alignmets","alignments"],["alignmment","alignment"],["alignmments","alignments"],["alignmnet","alignment"],["alignmnt","alignment"],["alignrigh","alignright"],["alined","aligned"],["alinged","aligned"],["alinging","aligning"],["alingment","alignment"],["alinment","alignment"],["alinments","alignments"],["alising","aliasing"],["allcate","allocate"],["allcateing","allocating"],["allcater","allocator"],["allcaters","allocators"],["allcating","allocating"],["allcation","allocation"],["allcator","allocator"],["allcoate","allocate"],["allcoated","allocated"],["allcoateing","allocating"],["allcoateng","allocating"],["allcoater","allocator"],["allcoaters","allocators"],["allcoating","allocating"],["allcoation","allocation"],["allcoator","allocator"],["allcoators","allocators"],["alledge","allege"],["alledged","alleged"],["alledgedly","allegedly"],["alledges","alleges"],["allegedely","allegedly"],["allegedy","allegedly"],["allegely","allegedly"],["allegence","allegiance"],["allegience","allegiance"],["allif","all if"],["allign","align"],["alligned","aligned"],["allignement","alignment"],["allignemnt","alignment"],["alligning","aligning"],["allignment","alignment"],["allignmenterror","alignmenterror"],["allignments","alignments"],["alligns","aligns"],["alliviate","alleviate"],["allk","all"],["alllocate","allocate"],["alllocation","allocation"],["alllow","allow"],["alllowed","allowed"],["alllows","allows"],["allmost","almost"],["alloacate","allocate"],["allocae","allocate"],["allocaed","allocated"],["allocaes","allocates"],["allocagtor","allocator"],["allocaiing","allocating"],["allocaing","allocating"],["allocaion","allocation"],["allocaions","allocations"],["allocaite","allocate"],["allocaites","allocates"],["allocaiting","allocating"],["allocaition","allocation"],["allocaitions","allocations"],["allocaiton","allocation"],["allocaitons","allocations"],["allocal","allocate"],["allocarion","allocation"],["allocat","allocate"],["allocatbale","allocatable"],["allocatedi","allocated"],["allocatedp","allocated"],["allocateing","allocating"],["allocateng","allocating"],["allocaton","allocation"],["allocatoor","allocator"],["allocatote","allocate"],["allocatrd","allocated"],["allocattion","allocation"],["alloco","alloc"],["allocos","allocs"],["allocte","allocate"],["allocted","allocated"],["allocting","allocating"],["alloction","allocation"],["alloctions","allocations"],["alloctor","allocator"],["alloews","allows"],["allong","along"],["alloocates","allocates"],["allopone","allophone"],["allopones","allophones"],["allos","allows"],["alloted","allotted"],["allowence","allowance"],["allowences","allowances"],["allpication","application"],["allpications","applications"],["allso","also"],["allthough","although"],["alltough","although"],["allways","always"],["allwo","allow"],["allwos","allows"],["allws","allows"],["allwys","always"],["almoast","almost"],["almostly","almost"],["almsot","almost"],["alo","also"],["alocatable","allocatable"],["alocate","allocate"],["alocated","allocated"],["alocates","allocates"],["alocating","allocating"],["alocations","allocations"],["alochol","alcohol"],["alog","along"],["alogirhtm","algorithm"],["alogirhtmic","algorithmic"],["alogirhtmically","algorithmically"],["alogirhtms","algorithms"],["alogirthm","algorithm"],["alogirthmic","algorithmic"],["alogirthmically","algorithmically"],["alogirthms","algorithms"],["alogned","aligned"],["alogorithms","algorithms"],["alogrithm","algorithm"],["alogrithmic","algorithmic"],["alogrithmically","algorithmically"],["alogrithms","algorithms"],["alomst","almost"],["aloows","allows"],["alorithm","algorithm"],["alos","also"],["alotted","allotted"],["alow","allow"],["alowed","allowed"],["alowing","allowing"],["alows","allows"],["alpabet","alphabet"],["alpabetic","alphabetic"],["alpabetical","alphabetical"],["alpabets","alphabets"],["alpah","alpha"],["alpahabetical","alphabetical"],["alpahbetically","alphabetically"],["alph","alpha"],["alpha-numeric","alphanumeric"],["alphabeticaly","alphabetically"],["alphabeticly","alphabetical"],["alphapeicall","alphabetical"],["alphapeticaly","alphabetically"],["alrady","already"],["alraedy","already"],["alread","already"],["alreadly","already"],["alreadt","already"],["alreasy","already"],["alreay","already"],["alreayd","already"],["alreday","already"],["alredy","already"],["alrelady","already"],["alrms","alarms"],["alrogithm","algorithm"],["alrteady","already"],["als","also"],["alsmost","almost"],["alsot","also"],["alsready","already"],["altenative","alternative"],["alterated","altered"],["alterately","alternately"],["alterative","alternative"],["alteratives","alternatives"],["alterior","ulterior"],["alternaive","alternative"],["alternaives","alternatives"],["alternarive","alternative"],["alternarives","alternatives"],["alternatievly","alternatively"],["alternativey","alternatively"],["alternativley","alternatively"],["alternativly","alternatively"],["alternatve","alternative"],["alternavtely","alternatively"],["alternavtive","alternative"],["alternavtives","alternatives"],["alternetive","alternative"],["alternetives","alternatives"],["alternitive","alternative"],["alternitively","alternatively"],["alternitiveness","alternativeness"],["alternitives","alternatives"],["alternitivly","alternatively"],["altetnative","alternative"],["altho","although"],["althogh","although"],["althorithm","algorithm"],["althorithmic","algorithmic"],["althorithmically","algorithmically"],["althorithms","algorithms"],["althoug","although"],["althought","although"],["althougth","although"],["althouth","although"],["altitide","altitude"],["altitute","altitude"],["altogehter","altogether"],["altough","although"],["altought","although"],["altready","already"],["alue","value"],["alvorithm","algorithm"],["alvorithmic","algorithmic"],["alvorithmically","algorithmically"],["alvorithms","algorithms"],["alwais","always"],["alwas","always"],["alwast","always"],["alwasy","always"],["alwasys","always"],["alwauys","always"],["alway","always"],["alwyas","always"],["alwys","always"],["alyways","always"],["amacing","amazing"],["amacingly","amazingly"],["amalgomated","amalgamated"],["amatuer","amateur"],["amazaing","amazing"],["ambedded","embedded"],["ambibuity","ambiguity"],["ambien","ambient"],["ambigious","ambiguous"],["ambigous","ambiguous"],["ambiguious","ambiguous"],["ambiguitiy","ambiguity"],["ambiguos","ambiguous"],["ambitous","ambitious"],["ambuguity","ambiguity"],["ambulence","ambulance"],["ambulences","ambulances"],["amdgput","amdgpu"],["amendement","amendment"],["amendmant","amendment"],["Amercia","America"],["amerliorate","ameliorate"],["amgle","angle"],["amgles","angles"],["amiguous","ambiguous"],["amke","make"],["amking","making"],["ammend","amend"],["ammended","amended"],["ammending","amending"],["ammendment","amendment"],["ammendments","amendments"],["ammends","amends"],["ammong","among"],["ammongst","amongst"],["ammortizes","amortizes"],["ammoung","among"],["ammoungst","amongst"],["ammount","amount"],["ammused","amused"],["amny","many"],["amongs","among"],["amonst","amongst"],["amonut","amount"],["amound","amount"],["amounds","amounts"],["amoung","among"],["amoungst","amongst"],["amout","amount"],["amoutn","amount"],["amoutns","amounts"],["amouts","amounts"],["amperstands","ampersands"],["amphasis","emphasis"],["amplifer","amplifier"],["amplifyer","amplifier"],["amplitud","amplitude"],["ampty","empty"],["amuch","much"],["amung","among"],["amunition","ammunition"],["amunt","amount"],["analagous","analogous"],["analagus","analogous"],["analaog","analog"],["analgous","analogous"],["analig","analog"],["analise","analyse"],["analised","analysed"],["analiser","analyser"],["analising","analysing"],["analisis","analysis"],["analitic","analytic"],["analitical","analytical"],["analitically","analytically"],["analiticaly","analytically"],["analize","analyze"],["analized","analyzed"],["analizer","analyzer"],["analizes","analyzes"],["analizing","analyzing"],["analogeous","analogous"],["analogicaly","analogically"],["analoguous","analogous"],["analoguously","analogously"],["analogus","analogous"],["analouge","analogue"],["analouges","analogues"],["analsye","analyse"],["analsyed","analysed"],["analsyer","analyser"],["analsyers","analysers"],["analsyes","analyses"],["analsying","analysing"],["analsyis","analysis"],["analsyt","analyst"],["analsyts","analysts"],["analyis","analysis"],["analysator","analyser"],["analysus","analysis"],["analysy","analysis"],["analyticaly","analytically"],["analyticly","analytically"],["analyzator","analyzer"],["analzye","analyze"],["analzyed","analyzed"],["analzyer","analyzer"],["analzyers","analyzers"],["analzyes","analyzes"],["analzying","analyzing"],["ananlog","analog"],["anarchim","anarchism"],["anarchistm","anarchism"],["anarquism","anarchism"],["anarquist","anarchist"],["anaylse","analyse"],["anaylsed","analysed"],["anaylser","analyser"],["anaylses","analyses"],["anaylsis","analysis"],["anaylsises","analysises"],["anayltic","analytic"],["anayltical","analytical"],["anayltically","analytically"],["anayltics","analytics"],["anaylze","analyze"],["anaylzed","analyzed"],["anaylzer","analyzer"],["anaylzes","analyzes"],["anbd","and"],["ancapsulate","encapsulate"],["ancapsulated","encapsulated"],["ancapsulates","encapsulates"],["ancapsulating","encapsulating"],["ancapsulation","encapsulation"],["ancesetor","ancestor"],["ancesetors","ancestors"],["ancester","ancestor"],["ancesteres","ancestors"],["ancesters","ancestors"],["ancestore","ancestor"],["ancestores","ancestors"],["ancestory","ancestry"],["anchestor","ancestor"],["anchestors","ancestors"],["anchord","anchored"],["ancilliary","ancillary"],["andd","and"],["andoid","android"],["andoids","androids"],["andorid","android"],["andorids","androids"],["andriod","android"],["andriods","androids"],["androgenous","androgynous"],["androgeny","androgyny"],["androidextra","androidextras"],["androind","android"],["androinds","androids"],["andthe","and the"],["ane","and"],["anevironment","environment"],["anevironments","environments"],["angluar","angular"],["anhoter","another"],["anid","and"],["anihilation","annihilation"],["animaing","animating"],["animaite","animate"],["animaiter","animator"],["animaiters","animators"],["animaiton","animation"],["animaitons","animations"],["animaitor","animator"],["animaitors","animators"],["animaton","animation"],["animatonic","animatronic"],["animete","animate"],["animeted","animated"],["animetion","animation"],["animetions","animations"],["animets","animates"],["animore","anymore"],["aninate","animate"],["anination","animation"],["aniother","any other"],["anisotrophically","anisotropically"],["anitaliasing","antialiasing"],["anithing","anything"],["anitialising","antialiasing"],["anitime","anytime"],["anitrez","antirez"],["aniversary","anniversary"],["aniway","anyway"],["aniwhere","anywhere"],["anlge","angle"],["anlysis","analysis"],["anlyzing","analyzing"],["annayed","annoyed"],["annaying","annoying"],["annd","and"],["anniversery","anniversary"],["annnounce","announce"],["annoation","annotation"],["annoint","anoint"],["annointed","anointed"],["annointing","anointing"],["annoints","anoints"],["annonate","annotate"],["annonated","annotated"],["annonates","annotates"],["annonce","announce"],["annonced","announced"],["annoncement","announcement"],["annoncements","announcements"],["annonces","announces"],["annoncing","announcing"],["annonymous","anonymous"],["annotaion","annotation"],["annotaions","annotations"],["annoted","annotated"],["annother","another"],["annouce","announce"],["annouced","announced"],["annoucement","announcement"],["annoucements","announcements"],["annouces","announces"],["annoucing","announcing"],["annouing","annoying"],["announcment","announcement"],["announcments","announcements"],["announed","announced"],["announement","announcement"],["announements","announcements"],["annoymous","anonymous"],["annoyying","annoying"],["annualy","annually"],["annuled","annulled"],["annyoingly","annoyingly"],["anoher","another"],["anohter","another"],["anologon","analogon"],["anomally","anomaly"],["anomolies","anomalies"],["anomolous","anomalous"],["anomoly","anomaly"],["anonimity","anonymity"],["anononymous","anonymous"],["anonther","another"],["anonymouse","anonymous"],["anonyms","anonymous"],["anonymus","anonymous"],["anormalies","anomalies"],["anormaly","abnormally"],["anotate","annotate"],["anotated","annotated"],["anotates","annotates"],["anotating","annotating"],["anotation","annotation"],["anotations","annotations"],["anoter","another"],["anothe","another"],["anothers","another"],["anothr","another"],["anounce","announce"],["anounced","announced"],["anouncement","announcement"],["anount","amount"],["anoying","annoying"],["anoymous","anonymous"],["anroid","android"],["ansalisation","nasalisation"],["ansalization","nasalization"],["anser","answer"],["ansester","ancestor"],["ansesters","ancestors"],["ansestor","ancestor"],["ansestors","ancestors"],["answhare","answer"],["answhared","answered"],["answhareing","answering"],["answhares","answers"],["answharing","answering"],["answhars","answers"],["ansynchronous","asynchronous"],["antaliasing","antialiasing"],["antartic","antarctic"],["antecedant","antecedent"],["anteena","antenna"],["anteenas","antennas"],["anthing","anything"],["anthings","anythings"],["anthor","another"],["anthromorphization","anthropomorphization"],["anthropolgist","anthropologist"],["anthropolgy","anthropology"],["antialialised","antialiased"],["antialising","antialiasing"],["antiapartheid","anti-apartheid"],["anticpate","anticipate"],["antry","entry"],["antyhing","anything"],["anual","annual"],["anually","annually"],["anulled","annulled"],["anumber","a number"],["anuwhere","anywhere"],["anway","anyway"],["anways","anyway"],["anwhere","anywhere"],["anwser","answer"],["anwsered","answered"],["anwsering","answering"],["anwsers","answers"],["anyawy","anyway"],["anyhing","anything"],["anyhting","anything"],["anyhwere","anywhere"],["anylsing","analysing"],["anylzing","analyzing"],["anynmore","anymore"],["anyother","any other"],["anytghing","anything"],["anythig","anything"],["anythign","anything"],["anythimng","anything"],["anytiem","anytime"],["anytihng","anything"],["anyting","anything"],["anytning","anything"],["anytrhing","anything"],["anytthing","anything"],["anytying","anything"],["anywere","anywhere"],["anyy","any"],["aoache","apache"],["aond","and"],["aoto","auto"],["aotomate","automate"],["aotomated","automated"],["aotomatic","automatic"],["aotomatical","automatic"],["aotomaticall","automatically"],["aotomatically","automatically"],["aotomation","automation"],["aovid","avoid"],["apach","apache"],["apapted","adapted"],["aparant","apparent"],["aparantly","apparently"],["aparent","apparent"],["aparently","apparently"],["aparment","apartment"],["apdated","updated"],["apeal","appeal"],["apealed","appealed"],["apealing","appealing"],["apeals","appeals"],["apear","appear"],["apeared","appeared"],["apears","appears"],["apect","aspect"],["apects","aspects"],["apeends","appends"],["apend","append"],["apendage","appendage"],["apended","appended"],["apender","appender"],["apendices","appendices"],["apending","appending"],["apendix","appendix"],["apenines","Apennines"],["aperatures","apertures"],["aperure","aperture"],["aperures","apertures"],["apeture","aperture"],["apetures","apertures"],["apilogue","epilogue"],["aplha","alpha"],["aplication","application"],["aplications","applications"],["aplied","applied"],["aplies","applies"],["apllicatin","application"],["apllicatins","applications"],["apllication","application"],["apllications","applications"],["apllied","applied"],["apllies","applies"],["aplly","apply"],["apllying","applying"],["aply","apply"],["aplyed","applied"],["aplying","applying"],["apointed","appointed"],["apointing","appointing"],["apointment","appointment"],["apoints","appoints"],["apolegetic","apologetic"],["apolegetics","apologetics"],["aportionable","apportionable"],["apostrophie","apostrophe"],["apostrophies","apostrophes"],["appar","appear"],["apparant","apparent"],["apparantly","apparently"],["appared","appeared"],["apparence","appearance"],["apparenlty","apparently"],["apparenly","apparently"],["appares","appears"],["apparoches","approaches"],["appars","appears"],["appart","apart"],["appartment","apartment"],["appartments","apartments"],["appearaing","appearing"],["appearantly","apparently"],["appeareance","appearance"],["appearence","appearance"],["appearences","appearances"],["appearently","apparently"],["appeares","appears"],["appearning","appearing"],["appearrs","appears"],["appeciate","appreciate"],["appeded","appended"],["appeding","appending"],["appedn","append"],["appen","append"],["appendend","appended"],["appendent","appended"],["appendex","appendix"],["appendig","appending"],["appendign","appending"],["appendt","append"],["appeneded","appended"],["appenines","Apennines"],["appens","appends"],["appent","append"],["apperance","appearance"],["apperances","appearances"],["apperar","appear"],["apperarance","appearance"],["apperarances","appearances"],["apperared","appeared"],["apperaring","appearing"],["apperars","appears"],["appereance","appearance"],["appereances","appearances"],["appered","appeared"],["apperent","apparent"],["apperently","apparently"],["appers","appears"],["apperture","aperture"],["appicability","applicability"],["appicable","applicable"],["appicaliton","application"],["appicalitons","applications"],["appicant","applicant"],["appication","application"],["appication-specific","application-specific"],["appications","applications"],["appicative","applicative"],["appied","applied"],["appies","applies"],["applay","apply"],["applcation","application"],["applcations","applications"],["appliable","applicable"],["appliacable","applicable"],["appliaction","application"],["appliactions","applications"],["appliation","application"],["appliations","applications"],["applicabel","applicable"],["applicaion","application"],["applicaions","applications"],["applicaiton","application"],["applicaitons","applications"],["applicance","appliance"],["applicapility","applicability"],["applicaple","applicable"],["applicatable","applicable"],["applicaten","application"],["applicatin","application"],["applicatins","applications"],["applicatio","application"],["applicationb","application"],["applicatios","applications"],["applicatiosn","applications"],["applicaton","application"],["applicatons","applications"],["appliction","application"],["applictions","applications"],["applide","applied"],["applikation","application"],["applikations","applications"],["appllied","applied"],["applly","apply"],["applyable","applicable"],["applycable","applicable"],["applyed","applied"],["applyes","applies"],["applyied","applied"],["applyig","applying"],["applys","applies"],["applyting","applying"],["appned","append"],["appologies","apologies"],["appology","apology"],["appon","upon"],["appopriate","appropriate"],["apporach","approach"],["apporached","approached"],["apporaches","approaches"],["apporaching","approaching"],["apporiate","appropriate"],["apporoximate","approximate"],["apporoximated","approximated"],["apporpiate","appropriate"],["apporpriate","appropriate"],["apporpriated","appropriated"],["apporpriately","appropriately"],["apporpriates","appropriates"],["apporpriating","appropriating"],["apporpriation","appropriation"],["apporpriations","appropriations"],["apporval","approval"],["apporve","approve"],["apporved","approved"],["apporves","approves"],["apporving","approving"],["appoval","approval"],["appove","approve"],["appoved","approved"],["appoves","approves"],["appoving","approving"],["appoximate","approximate"],["appoximately","approximately"],["appoximates","approximates"],["appoximation","approximation"],["appoximations","approximations"],["apppear","appear"],["apppears","appears"],["apppend","append"],["apppends","appends"],["appplet","applet"],["appplication","application"],["appplications","applications"],["appplying","applying"],["apppriate","appropriate"],["appproach","approach"],["apppropriate","appropriate"],["appraoch","approach"],["appraochable","approachable"],["appraoched","approached"],["appraoches","approaches"],["appraoching","approaching"],["apprearance","appearance"],["apprently","apparently"],["appreteate","appreciate"],["appreteated","appreciated"],["appretiate","appreciate"],["appretiated","appreciated"],["appretiates","appreciates"],["appretiating","appreciating"],["appretiation","appreciation"],["appretiative","appreciative"],["apprieciate","appreciate"],["apprieciated","appreciated"],["apprieciates","appreciates"],["apprieciating","appreciating"],["apprieciation","appreciation"],["apprieciative","appreciative"],["appriopriate","appropriate"],["appripriate","appropriate"],["appriproate","appropriate"],["apprixamate","approximate"],["apprixamated","approximated"],["apprixamately","approximately"],["apprixamates","approximates"],["apprixamating","approximating"],["apprixamation","approximation"],["apprixamations","approximations"],["appriximate","approximate"],["appriximated","approximated"],["appriximately","approximately"],["appriximates","approximates"],["appriximating","approximating"],["appriximation","approximation"],["appriximations","approximations"],["approachs","approaches"],["approbiate","appropriate"],["approch","approach"],["approche","approach"],["approched","approached"],["approches","approaches"],["approching","approaching"],["approiate","appropriate"],["approopriate","appropriate"],["approoximate","approximate"],["approoximately","approximately"],["approoximates","approximates"],["approoximation","approximation"],["approoximations","approximations"],["approperiate","appropriate"],["appropiate","appropriate"],["appropiately","appropriately"],["approppriately","appropriately"],["appropraite","appropriate"],["appropraitely","appropriately"],["approprate","appropriate"],["approprated","appropriated"],["approprately","appropriately"],["appropration","appropriation"],["approprations","appropriations"],["appropriage","appropriate"],["appropriatedly","appropriately"],["appropriatee","appropriate"],["appropriatly","appropriately"],["appropriatness","appropriateness"],["appropriete","appropriate"],["appropritae","appropriate"],["appropritate","appropriate"],["appropritately","appropriately"],["approprite","appropriate"],["approproate","appropriate"],["appropropiate","appropriate"],["appropropiately","appropriately"],["appropropreate","appropriate"],["appropropriate","appropriate"],["approproximate","approximate"],["approproximately","approximately"],["approproximates","approximates"],["approproximation","approximation"],["approproximations","approximations"],["approprpiate","appropriate"],["approriate","appropriate"],["approriately","appropriately"],["approrpriate","appropriate"],["approrpriately","appropriately"],["approuval","approval"],["approuve","approve"],["approuved","approved"],["approuves","approves"],["approuving","approving"],["approvement","approval"],["approxamate","approximate"],["approxamately","approximately"],["approxamates","approximates"],["approxamation","approximation"],["approxamations","approximations"],["approxamatly","approximately"],["approxametely","approximately"],["approxiamte","approximate"],["approxiamtely","approximately"],["approxiamtes","approximates"],["approxiamtion","approximation"],["approxiamtions","approximations"],["approxiate","approximate"],["approxiately","approximately"],["approxiates","approximates"],["approxiation","approximation"],["approxiations","approximations"],["approximatively","approximately"],["approximatly","approximately"],["approximed","approximated"],["approximetely","approximately"],["approximitely","approximately"],["approxmate","approximate"],["approxmately","approximately"],["approxmates","approximates"],["approxmation","approximation"],["approxmations","approximations"],["approxmimation","approximation"],["apprpriate","appropriate"],["apprpriately","appropriately"],["appy","apply"],["appying","applying"],["apreciate","appreciate"],["apreciated","appreciated"],["apreciates","appreciates"],["apreciating","appreciating"],["apreciation","appreciation"],["apreciative","appreciative"],["aprehensive","apprehensive"],["apreteate","appreciate"],["apreteated","appreciated"],["apreteating","appreciating"],["apretiate","appreciate"],["apretiated","appreciated"],["apretiates","appreciates"],["apretiating","appreciating"],["apretiation","appreciation"],["apretiative","appreciative"],["aproach","approach"],["aproached","approached"],["aproaches","approaches"],["aproaching","approaching"],["aproch","approach"],["aproched","approached"],["aproches","approaches"],["aproching","approaching"],["aproove","approve"],["aprooved","approved"],["apropiate","appropriate"],["apropiately","appropriately"],["apropriate","appropriate"],["apropriately","appropriately"],["aproval","approval"],["aproximate","approximate"],["aproximately","approximately"],["aproximates","approximates"],["aproximation","approximation"],["aproximations","approximations"],["aprrovement","approval"],["aprroximate","approximate"],["aprroximately","approximately"],["aprroximates","approximates"],["aprroximation","approximation"],["aprroximations","approximations"],["aprtment","apartment"],["aqain","again"],["aqcuire","acquire"],["aqcuired","acquired"],["aqcuires","acquires"],["aqcuiring","acquiring"],["aquaduct","aqueduct"],["aquaint","acquaint"],["aquaintance","acquaintance"],["aquainted","acquainted"],["aquainting","acquainting"],["aquaints","acquaints"],["aquiantance","acquaintance"],["aquire","acquire"],["aquired","acquired"],["aquires","acquires"],["aquiring","acquiring"],["aquisition","acquisition"],["aquisitions","acquisitions"],["aquit","acquit"],["aquitted","acquitted"],["arameters","parameters"],["aranged","arranged"],["arangement","arrangement"],["araound","around"],["ararbic","arabic"],["aray","array"],["arays","arrays"],["arbiatraily","arbitrarily"],["arbiatray","arbitrary"],["arbibtarily","arbitrarily"],["arbibtary","arbitrary"],["arbibtrarily","arbitrarily"],["arbibtrary","arbitrary"],["arbiitrarily","arbitrarily"],["arbiitrary","arbitrary"],["arbirarily","arbitrarily"],["arbirary","arbitrary"],["arbiratily","arbitrarily"],["arbiraty","arbitrary"],["arbirtarily","arbitrarily"],["arbirtary","arbitrary"],["arbirtrarily","arbitrarily"],["arbirtrary","arbitrary"],["arbitarary","arbitrary"],["arbitarily","arbitrarily"],["arbitary","arbitrary"],["arbitiarily","arbitrarily"],["arbitiary","arbitrary"],["arbitiraly","arbitrarily"],["arbitiray","arbitrary"],["arbitrailly","arbitrarily"],["arbitraily","arbitrarily"],["arbitraion","arbitration"],["arbitrairly","arbitrarily"],["arbitrairy","arbitrary"],["arbitral","arbitrary"],["arbitralily","arbitrarily"],["arbitrally","arbitrarily"],["arbitralrily","arbitrarily"],["arbitralry","arbitrary"],["arbitraly","arbitrary"],["arbitrarion","arbitration"],["arbitraryily","arbitrarily"],["arbitraryly","arbitrary"],["arbitratily","arbitrarily"],["arbitratiojn","arbitration"],["arbitraton","arbitration"],["arbitratrily","arbitrarily"],["arbitratrion","arbitration"],["arbitratry","arbitrary"],["arbitraty","arbitrary"],["arbitray","arbitrary"],["arbitriarily","arbitrarily"],["arbitriary","arbitrary"],["arbitrily","arbitrarily"],["arbitrion","arbitration"],["arbitriraly","arbitrarily"],["arbitriray","arbitrary"],["arbitrition","arbitration"],["arbitrtily","arbitrarily"],["arbitrty","arbitrary"],["arbitry","arbitrary"],["arbitryarily","arbitrarily"],["arbitryary","arbitrary"],["arbitual","arbitrary"],["arbitually","arbitrarily"],["arbitualy","arbitrary"],["arbituarily","arbitrarily"],["arbituary","arbitrary"],["arbiturarily","arbitrarily"],["arbiturary","arbitrary"],["arbort","abort"],["arborted","aborted"],["arborting","aborting"],["arborts","aborts"],["arbritary","arbitrary"],["arbritrarily","arbitrarily"],["arbritrary","arbitrary"],["arbtirarily","arbitrarily"],["arbtirary","arbitrary"],["arbtrarily","arbitrarily"],["arbtrary","arbitrary"],["arbutrarily","arbitrarily"],["arbutrary","arbitrary"],["arch-dependet","arch-dependent"],["arch-independet","arch-independent"],["archaelogical","archaeological"],["archaelogists","archaeologists"],["archaelogy","archaeology"],["archetect","architect"],["archetects","architects"],["archetectural","architectural"],["archetecturally","architecturally"],["archetecture","architecture"],["archiac","archaic"],["archictect","architect"],["archictecture","architecture"],["archictectures","architectures"],["archicture","architecture"],["archiecture","architecture"],["archiectures","architectures"],["archimedian","archimedean"],["architct","architect"],["architcts","architects"],["architcture","architecture"],["architctures","architectures"],["architecht","architect"],["architechts","architects"],["architechturally","architecturally"],["architechture","architecture"],["architechtures","architectures"],["architectual","architectural"],["architectur","architecture"],["architecturs","architectures"],["architecturse","architectures"],["architecure","architecture"],["architecures","architectures"],["architecutre","architecture"],["architecutres","architectures"],["architecuture","architecture"],["architecutures","architectures"],["architetcure","architecture"],["architetcures","architectures"],["architeture","architecture"],["architetures","architectures"],["architure","architecture"],["architures","architectures"],["archiv","archive"],["archivel","archival"],["archor","anchor"],["archtecture","architecture"],["archtectures","architectures"],["archtiecture","architecture"],["archtiectures","architectures"],["archtitecture","architecture"],["archtitectures","architectures"],["archtype","archetype"],["archtypes","archetypes"],["archvie","archive"],["archvies","archives"],["archving","archiving"],["arcitecture","architecture"],["arcitectures","architectures"],["arcive","archive"],["arcived","archived"],["arciver","archiver"],["arcives","archives"],["arciving","archiving"],["arcticle","article"],["Ardiuno","Arduino"],["are'nt","aren't"],["aready","already"],["areea","area"],["aren's","aren't"],["aren;t","aren't"],["arent'","aren't"],["arent","aren't"],["arent;","aren't"],["areodynamics","aerodynamics"],["argement","argument"],["argements","arguments"],["argemnt","argument"],["argemnts","arguments"],["argment","argument"],["argments","arguments"],["argmument","argument"],["argmuments","arguments"],["argreement","agreement"],["argreements","agreements"],["argubly","arguably"],["arguement","argument"],["arguements","arguments"],["arguemnt","argument"],["arguemnts","arguments"],["arguemtn","argument"],["arguemtns","arguments"],["arguents","arguments"],["argumant","argument"],["argumants","arguments"],["argumeent","argument"],["argumeents","arguments"],["argumement","argument"],["argumements","arguments"],["argumemnt","argument"],["argumemnts","arguments"],["argumeng","argument"],["argumengs","arguments"],["argumens","arguments"],["argumenst","arguments"],["argumentents","arguments"],["argumeny","argument"],["argumet","argument"],["argumetn","argument"],["argumetns","arguments"],["argumets","arguments"],["argumnet","argument"],["argumnets","arguments"],["argumnt","argument"],["argumnts","arguments"],["arhive","archive"],["arhives","archives"],["aribitary","arbitrary"],["aribiter","arbiter"],["aribrary","arbitrary"],["aribtrarily","arbitrarily"],["aribtrary","arbitrary"],["ariflow","airflow"],["arised","arose"],["arithemetic","arithmetic"],["arithemtic","arithmetic"],["arithmatic","arithmetic"],["arithmentic","arithmetic"],["arithmetc","arithmetic"],["arithmethic","arithmetic"],["arithmitic","arithmetic"],["aritmetic","arithmetic"],["aritrary","arbitrary"],["aritst","artist"],["arival","arrival"],["arive","arrive"],["arlready","already"],["armamant","armament"],["armistace","armistice"],["armonic","harmonic"],["arn't","aren't"],["arne't","aren't"],["arogant","arrogant"],["arogent","arrogant"],["aronud","around"],["aroud","around"],["aroudn","around"],["arouind","around"],["arounf","around"],["aroung","around"],["arount","around"],["arquitecture","architecture"],["arquitectures","architectures"],["arraay","array"],["arragement","arrangement"],["arraival","arrival"],["arral","array"],["arranable","arrangeable"],["arrance","arrange"],["arrane","arrange"],["arraned","arranged"],["arranement","arrangement"],["arranements","arrangements"],["arranent","arrangement"],["arranents","arrangements"],["arranes","arranges"],["arrang","arrange"],["arrangable","arrangeable"],["arrangaeble","arrangeable"],["arrangaelbe","arrangeable"],["arrangd","arranged"],["arrangde","arranged"],["arrangemenet","arrangement"],["arrangemenets","arrangements"],["arrangent","arrangement"],["arrangents","arrangements"],["arrangmeent","arrangement"],["arrangmeents","arrangements"],["arrangmenet","arrangement"],["arrangmenets","arrangements"],["arrangment","arrangement"],["arrangments","arrangements"],["arrangnig","arranging"],["arrangs","arranges"],["arrangse","arranges"],["arrangt","arrangement"],["arrangte","arrange"],["arrangteable","arrangeable"],["arrangted","arranged"],["arrangtement","arrangement"],["arrangtements","arrangements"],["arrangtes","arranges"],["arrangting","arranging"],["arrangts","arrangements"],["arraning","arranging"],["arranment","arrangement"],["arranments","arrangements"],["arrants","arrangements"],["arraows","arrows"],["arrary","array"],["arrayes","arrays"],["arre","are"],["arreay","array"],["arrengement","arrangement"],["arrengements","arrangements"],["arriveis","arrives"],["arrivial","arrival"],["arround","around"],["arrray","array"],["arrrays","arrays"],["arrrive","arrive"],["arrrived","arrived"],["arrrives","arrives"],["arrtibute","attribute"],["arrya","array"],["arryas","arrays"],["arrys","arrays"],["artcile","article"],["articaft","artifact"],["articafts","artifacts"],["artical","article"],["articals","articles"],["articat","artifact"],["articats","artifacts"],["artice","article"],["articel","article"],["articels","articles"],["artifac","artifact"],["artifacs","artifacts"],["artifcat","artifact"],["artifcats","artifacts"],["artifical","artificial"],["artifically","artificially"],["artihmetic","arithmetic"],["artilce","article"],["artillary","artillery"],["artuments","arguments"],["arugment","argument"],["arugments","arguments"],["arument","argument"],["aruments","arguments"],["arund","around"],["arvg","argv"],["asai","Asia"],["asain","Asian"],["asbolute","absolute"],["asbolutelly","absolutely"],["asbolutely","absolutely"],["asbtract","abstract"],["asbtracted","abstracted"],["asbtracter","abstracter"],["asbtracting","abstracting"],["asbtraction","abstraction"],["asbtractions","abstractions"],["asbtractly","abstractly"],["asbtractness","abstractness"],["asbtractor","abstractor"],["asbtracts","abstracts"],["ascconciated","associated"],["asceding","ascending"],["ascpect","aspect"],["ascpects","aspects"],["asdignment","assignment"],["asdignments","assignments"],["asemble","assemble"],["asembled","assembled"],["asembler","assembler"],["asemblers","assemblers"],["asembles","assembles"],["asemblies","assemblies"],["asembling","assembling"],["asembly","assembly"],["asendance","ascendance"],["asendancey","ascendancy"],["asendancy","ascendancy"],["asendence","ascendance"],["asendencey","ascendancy"],["asendency","ascendancy"],["asending","ascending"],["asent","ascent"],["aserted","asserted"],["asertion","assertion"],["asess","assess"],["asessment","assessment"],["asessments","assessments"],["asetic","ascetic"],["asfar","as far"],["asign","assign"],["asigned","assigned"],["asignee","assignee"],["asignees","assignees"],["asigning","assigning"],["asignmend","assignment"],["asignmends","assignments"],["asignment","assignment"],["asignor","assignor"],["asigns","assigns"],["asii","ascii"],["asisstant","assistant"],["asisstants","assistants"],["asistance","assistance"],["aske","ask"],["askes","asks"],["aslo","also"],["asnwer","answer"],["asnwered","answered"],["asnwerer","answerer"],["asnwerers","answerers"],["asnwering","answering"],["asnwers","answers"],["asny","any"],["asnychronoue","asynchronous"],["asociated","associated"],["asolute","absolute"],["asorbed","absorbed"],["aspected","expected"],["asphyxation","asphyxiation"],["assasin","assassin"],["assasinate","assassinate"],["assasinated","assassinated"],["assasinates","assassinates"],["assasination","assassination"],["assasinations","assassinations"],["assasined","assassinated"],["assasins","assassins"],["assassintation","assassination"],["asscciated","associated"],["assciated","associated"],["asscii","ASCII"],["asscociated","associated"],["asscoitaed","associated"],["assebly","assembly"],["assebmly","assembly"],["assembe","assemble"],["assembed","assembled"],["assembeld","assembled"],["assember","assembler"],["assemblys","assemblies"],["assemby","assembly"],["assemly","assembly"],["assemnly","assembly"],["assemple","assemble"],["assending","ascending"],["asser","assert"],["assersion","assertion"],["assertation","assertion"],["assertio","assertion"],["assertting","asserting"],["assesmenet","assessment"],["assesment","assessment"],["assesments","assessments"],["assessmant","assessment"],["assessmants","assessments"],["assgin","assign"],["assgined","assigned"],["assgining","assigning"],["assginment","assignment"],["assginments","assignments"],["assgins","assigns"],["assicate","associate"],["assicated","associated"],["assicates","associates"],["assicating","associating"],["assication","association"],["assications","associations"],["assiciate","associate"],["assiciated","associated"],["assiciates","associates"],["assiciation","association"],["assiciations","associations"],["asside","aside"],["assiged","assigned"],["assigend","assigned"],["assigh","assign"],["assighed","assigned"],["assighee","assignee"],["assighees","assignees"],["assigher","assigner"],["assighers","assigners"],["assighing","assigning"],["assighor","assignor"],["assighors","assignors"],["assighs","assigns"],["assiging","assigning"],["assigment","assignment"],["assigments","assignments"],["assigmnent","assignment"],["assignalble","assignable"],["assignement","assignment"],["assignements","assignments"],["assignemnt","assignment"],["assignemnts","assignments"],["assignemtn","assignment"],["assignend","assigned"],["assignenment","assignment"],["assignenmentes","assignments"],["assignenments","assignments"],["assignenmet","assignment"],["assignes","assigns"],["assignmenet","assignment"],["assignmens","assignments"],["assignmet","assignment"],["assignmetns","assignments"],["assignmnet","assignment"],["assignt","assign"],["assigntment","assignment"],["assihnment","assignment"],["assihnments","assignments"],["assime","assume"],["assined","assigned"],["assing","assign"],["assinged","assigned"],["assinging","assigning"],["assingled","assigned"],["assingment","assignment"],["assingned","assigned"],["assingnment","assignment"],["assings","assigns"],["assinment","assignment"],["assiocate","associate"],["assiocated","associated"],["assiocates","associates"],["assiocating","associating"],["assiocation","association"],["assiociate","associate"],["assiociated","associated"],["assiociates","associates"],["assiociating","associating"],["assiociation","association"],["assisance","assistance"],["assisant","assistant"],["assisants","assistants"],["assising","assisting"],["assisnate","assassinate"],["assistence","assistance"],["assistent","assistant"],["assit","assist"],["assitant","assistant"],["assition","assertion"],["assmbler","assembler"],["assmeble","assemble"],["assmebler","assembler"],["assmebles","assembles"],["assmebling","assembling"],["assmebly","assembly"],["assmelber","assembler"],["assmption","assumption"],["assmptions","assumptions"],["assmume","assume"],["assmumed","assumed"],["assmumes","assumes"],["assmuming","assuming"],["assmumption","assumption"],["assmumptions","assumptions"],["assoaiate","associate"],["assoaiated","associated"],["assoaiates","associates"],["assoaiating","associating"],["assoaiation","association"],["assoaiations","associations"],["assoaiative","associative"],["assocaited","associated"],["assocate","associate"],["assocated","associated"],["assocates","associates"],["assocating","associating"],["assocation","association"],["assocations","associations"],["assocciated","associated"],["assocciation","association"],["assocciations","associations"],["assocciative","associative"],["associatated","associated"],["associatd","associated"],["associatied","associated"],["associcate","associate"],["associcated","associated"],["associcates","associates"],["associcating","associating"],["associdated","associated"],["associeate","associate"],["associeated","associated"],["associeates","associates"],["associeating","associating"],["associeation","association"],["associeations","associations"],["associeted","associated"],["associte","associate"],["associted","associated"],["assocites","associates"],["associting","associating"],["assocition","association"],["associtions","associations"],["associtive","associative"],["associuated","associated"],["assoction","association"],["assoiated","associated"],["assoicate","associate"],["assoicated","associated"],["assoicates","associates"],["assoication","association"],["assoiciative","associative"],["assomption","assumption"],["assosciate","associate"],["assosciated","associated"],["assosciates","associates"],["assosciating","associating"],["assosiacition","association"],["assosiacitions","associations"],["assosiacted","associated"],["assosiate","associate"],["assosiated","associated"],["assosiates","associates"],["assosiating","associating"],["assosiation","association"],["assosiations","associations"],["assosiative","associative"],["assosication","assassination"],["assotiated","associated"],["assoziated","associated"],["asssassans","assassins"],["asssembler","assembler"],["asssembly","assembly"],["asssert","assert"],["asssertion","assertion"],["asssociate","associated"],["asssociated","associated"],["asssociation","association"],["asssume","assume"],["asssumes","assumes"],["asssuming","assuming"],["assualt","assault"],["assualted","assaulted"],["assuembly","assembly"],["assum","assume"],["assuma","assume"],["assumad","assumed"],["assumang","assuming"],["assumas","assumes"],["assumbe","assume"],["assumbed","assumed"],["assumbes","assumes"],["assumbing","assuming"],["assumend","assumed"],["assumking","assuming"],["assumme","assume"],["assummed","assumed"],["assummes","assumes"],["assumming","assuming"],["assumne","assume"],["assumned","assumed"],["assumnes","assumes"],["assumning","assuming"],["assumong","assuming"],["assumotion","assumption"],["assumotions","assumptions"],["assumpation","assumption"],["assumpted","assumed"],["assums","assumes"],["assumse","assumes"],["assumtion","assumption"],["assumtions","assumptions"],["assumtpion","assumption"],["assumtpions","assumptions"],["assumu","assume"],["assumud","assumed"],["assumue","assume"],["assumued","assumed"],["assumues","assumes"],["assumuing","assuming"],["assumung","assuming"],["assumuption","assumption"],["assumuptions","assumptions"],["assumus","assumes"],["assupmption","assumption"],["assuption","assumption"],["assuptions","assumptions"],["assurred","assured"],["assymetric","asymmetric"],["assymetrical","asymmetrical"],["assymetries","asymmetries"],["assymetry","asymmetry"],["assymmetric","asymmetric"],["assymmetrical","asymmetrical"],["assymmetries","asymmetries"],["assymmetry","asymmetry"],["assymptote","asymptote"],["assymptotes","asymptotes"],["assymptotic","asymptotic"],["assymptotically","asymptotically"],["assymthotic","asymptotic"],["assymtote","asymptote"],["assymtotes","asymptotes"],["assymtotic","asymptotic"],["assymtotically","asymptotically"],["asterices","asterisks"],["asteriod","asteroid"],["astethic","aesthetic"],["astethically","aesthetically"],["astethicism","aestheticism"],["astethics","aesthetics"],["asthetic","aesthetic"],["asthetical","aesthetical"],["asthetically","aesthetically"],["asthetics","aesthetics"],["astiimate","estimate"],["astiimation","estimation"],["asume","assume"],["asumed","assumed"],["asumes","assumes"],["asuming","assuming"],["asumption","assumption"],["asure","assure"],["aswell","as well"],["asychronize","asynchronize"],["asychronized","asynchronized"],["asychronous","asynchronous"],["asychronously","asynchronously"],["asycn","async"],["asycnhronous","asynchronous"],["asycnhronously","asynchronously"],["asycronous","asynchronous"],["asymetic","asymmetric"],["asymetric","asymmetric"],["asymetrical","asymmetrical"],["asymetricaly","asymmetrically"],["asymmeric","asymmetric"],["asynchnous","asynchronous"],["asynchonous","asynchronous"],["asynchonously","asynchronously"],["asynchornous","asynchronous"],["asynchoronous","asynchronous"],["asynchrnous","asynchronous"],["asynchrnously","asynchronously"],["asynchromous","asynchronous"],["asynchron","asynchronous"],["asynchroneously","asynchronously"],["asynchronious","asynchronous"],["asynchronlous","asynchronous"],["asynchrons","asynchronous"],["asynchroous","asynchronous"],["asynchrounous","asynchronous"],["asynchrounsly","asynchronously"],["asyncronous","asynchronous"],["asyncronously","asynchronously"],["asynnc","async"],["asynschron","asynchronous"],["atach","attach"],["atached","attached"],["ataching","attaching"],["atachment","attachment"],["atachments","attachments"],["atack","attack"],["atain","attain"],["atatch","attach"],["atatchable","attachable"],["atatched","attached"],["atatches","attaches"],["atatching","attaching"],["atatchment","attachment"],["atatchments","attachments"],["atempt","attempt"],["atempting","attempting"],["atempts","attempts"],["atendance","attendance"],["atended","attended"],["atendee","attendee"],["atends","attends"],["atention","attention"],["atheistical","atheistic"],["athenean","Athenian"],["atheneans","Athenians"],["ather","other"],["athiesm","atheism"],["athiest","atheist"],["athough","although"],["athron","athlon"],["athros","atheros"],["atleast","at least"],["atll","all"],["atmoic","atomic"],["atmoically","atomically"],["atomatically","automatically"],["atomical","atomic"],["atomicly","atomically"],["atomiticity","atomicity"],["atomtical","automatic"],["atomtically","automatically"],["atomticaly","automatically"],["atomticlly","automatically"],["atomticly","automatically"],["atorecovery","autorecovery"],["atorney","attorney"],["atquired","acquired"],["atribs","attribs"],["atribut","attribute"],["atribute","attribute"],["atributed","attributed"],["atributes","attributes"],["atrribute","attribute"],["atrributes","attributes"],["atrtribute","attribute"],["atrtributes","attributes"],["attaced","attached"],["attachd","attached"],["attachement","attachment"],["attachements","attachments"],["attachemnt","attachment"],["attachemnts","attachments"],["attachen","attach"],["attachged","attached"],["attachmant","attachment"],["attachmants","attachments"],["attachs","attaches"],["attachted","attached"],["attacs","attacks"],["attacthed","attached"],["attampt","attempt"],["attatch","attach"],["attatched","attached"],["attatches","attaches"],["attatching","attaching"],["attatchment","attachment"],["attatchments","attachments"],["attch","attach"],["attched","attached"],["attches","attaches"],["attching","attaching"],["attchment","attachment"],["attement","attempt"],["attemented","attempted"],["attementing","attempting"],["attements","attempts"],["attemp","attempt"],["attemped","attempted"],["attemping","attempting"],["attemppt","attempt"],["attemps","attempts"],["attemptes","attempts"],["attemptting","attempting"],["attemt","attempt"],["attemted","attempted"],["attemting","attempting"],["attemtp","attempt"],["attemtped","attempted"],["attemtping","attempting"],["attemtps","attempts"],["attemtpted","attempted"],["attemtpts","attempts"],["attemts","attempts"],["attendence","attendance"],["attendent","attendant"],["attendents","attendants"],["attened","attended"],["attennuation","attenuation"],["attension","attention"],["attented","attended"],["attentuation","attenuation"],["attentuations","attenuations"],["attepmpt","attempt"],["attept","attempt"],["attetntion","attention"],["attibute","attribute"],["attibuted","attributed"],["attibutes","attributes"],["attirbute","attribute"],["attirbutes","attributes"],["attiribute","attribute"],["attitide","attitude"],["attmept","attempt"],["attmpt","attempt"],["attnetion","attention"],["attosencond","attosecond"],["attosenconds","attoseconds"],["attrbiute","attribute"],["attrbute","attribute"],["attrbuted","attributed"],["attrbutes","attributes"],["attrbution","attribution"],["attrbutions","attributions"],["attribbute","attribute"],["attribiute","attribute"],["attribiutes","attributes"],["attribte","attribute"],["attribted","attributed"],["attribting","attributing"],["attribtue","attribute"],["attribtutes","attributes"],["attribude","attribute"],["attribue","attribute"],["attribues","attributes"],["attribuets","attributes"],["attribuite","attribute"],["attribuites","attributes"],["attribuition","attribution"],["attribure","attribute"],["attribured","attributed"],["attribures","attributes"],["attriburte","attribute"],["attriburted","attributed"],["attriburtes","attributes"],["attriburtion","attribution"],["attribut","attribute"],["attributei","attribute"],["attributen","attribute"],["attributess","attributes"],["attributred","attributed"],["attributs","attributes"],["attribye","attribute"],["attribyes","attributes"],["attribyte","attribute"],["attribytes","attributes"],["attriebute","attribute"],["attriebuted","attributed"],["attriebutes","attributes"],["attriebuting","attributing"],["attrirbute","attribute"],["attrirbuted","attributed"],["attrirbutes","attributes"],["attrirbution","attribution"],["attritube","attribute"],["attritubed","attributed"],["attritubes","attributes"],["attriubtes","attributes"],["attriubute","attribute"],["attrocities","atrocities"],["attrribute","attribute"],["attrributed","attributed"],["attrributes","attributes"],["attrribution","attribution"],["attrubite","attribute"],["attrubites","attributes"],["attrubte","attribute"],["attrubtes","attributes"],["attrubure","attribute"],["attrubures","attributes"],["attrubute","attribute"],["attrubutes","attributes"],["attrubyte","attribute"],["attrubytes","attributes"],["attruibute","attribute"],["attruibutes","attributes"],["atttached","attached"],["atttribute","attribute"],["atttributes","attributes"],["atuhenticate","authenticate"],["atuhenticated","authenticated"],["atuhenticates","authenticates"],["atuhenticating","authenticating"],["atuhentication","authentication"],["atuhenticator","authenticator"],["atuhenticators","authenticators"],["auccess","success"],["auccessive","successive"],["audeince","audience"],["audiance","audience"],["augest","August"],["augmnet","augment"],["augmnetation","augmentation"],["augmneted","augmented"],["augmneter","augmenter"],["augmneters","augmenters"],["augmnetes","augments"],["augmneting","augmenting"],["augmnets","augments"],["auguest","august"],["auhtor","author"],["auhtors","authors"],["aunthenticate","authenticate"],["aunthenticated","authenticated"],["aunthenticates","authenticates"],["aunthenticating","authenticating"],["aunthentication","authentication"],["aunthenticator","authenticator"],["aunthenticators","authenticators"],["auospacing","autospacing"],["auot","auto"],["auotmatic","automatic"],["auromated","automated"],["austrailia","Australia"],["austrailian","Australian"],["Australien","Australian"],["Austrlaian","Australian"],["autasave","autosave"],["autasaves","autosaves"],["autenticate","authenticate"],["autenticated","authenticated"],["autenticates","authenticates"],["autenticating","authenticating"],["autentication","authentication"],["autenticator","authenticator"],["autenticators","authenticators"],["authecate","authenticate"],["authecated","authenticated"],["authecates","authenticates"],["authecating","authenticating"],["authecation","authentication"],["authecator","authenticator"],["authecators","authenticators"],["authenaticate","authenticate"],["authenaticated","authenticated"],["authenaticates","authenticates"],["authenaticating","authenticating"],["authenatication","authentication"],["authenaticator","authenticator"],["authenaticators","authenticators"],["authencate","authenticate"],["authencated","authenticated"],["authencates","authenticates"],["authencating","authenticating"],["authencation","authentication"],["authencator","authenticator"],["authencators","authenticators"],["authenciate","authenticate"],["authenciated","authenticated"],["authenciates","authenticates"],["authenciating","authenticating"],["authenciation","authentication"],["authenciator","authenticator"],["authenciators","authenticators"],["authencicate","authenticate"],["authencicated","authenticated"],["authencicates","authenticates"],["authencicating","authenticating"],["authencication","authentication"],["authencicator","authenticator"],["authencicators","authenticators"],["authencity","authenticity"],["authencticate","authenticate"],["authencticated","authenticated"],["authencticates","authenticates"],["authencticating","authenticating"],["authenctication","authentication"],["authencticator","authenticator"],["authencticators","authenticators"],["authendicate","authenticate"],["authendicated","authenticated"],["authendicates","authenticates"],["authendicating","authenticating"],["authendication","authentication"],["authendicator","authenticator"],["authendicators","authenticators"],["authenenticate","authenticate"],["authenenticated","authenticated"],["authenenticates","authenticates"],["authenenticating","authenticating"],["authenentication","authentication"],["authenenticator","authenticator"],["authenenticators","authenticators"],["authenfie","authenticate"],["authenfied","authenticated"],["authenfies","authenticates"],["authenfiing","authenticating"],["authenfiion","authentication"],["authenfior","authenticator"],["authenfiors","authenticators"],["authenicae","authenticate"],["authenicaed","authenticated"],["authenicaes","authenticates"],["authenicaing","authenticating"],["authenicaion","authentication"],["authenicaor","authenticator"],["authenicaors","authenticators"],["authenicate","authenticate"],["authenicated","authenticated"],["authenicates","authenticates"],["authenicating","authenticating"],["authenication","authentication"],["authenicator","authenticator"],["authenicators","authenticators"],["authenificate","authenticate"],["authenificated","authenticated"],["authenificates","authenticates"],["authenificating","authenticating"],["authenification","authentication"],["authenificator","authenticator"],["authenificators","authenticators"],["authenitcate","authenticate"],["authenitcated","authenticated"],["authenitcates","authenticates"],["authenitcating","authenticating"],["authenitcation","authentication"],["authenitcator","authenticator"],["authenitcators","authenticators"],["autheniticate","authenticate"],["autheniticated","authenticated"],["autheniticates","authenticates"],["autheniticating","authenticating"],["authenitication","authentication"],["autheniticator","authenticator"],["autheniticators","authenticators"],["authenricate","authenticate"],["authenricated","authenticated"],["authenricates","authenticates"],["authenricating","authenticating"],["authenrication","authentication"],["authenricator","authenticator"],["authenricators","authenticators"],["authentation","authentication"],["authentcated","authenticated"],["authentciate","authenticate"],["authentciated","authenticated"],["authentciates","authenticates"],["authentciating","authenticating"],["authentciation","authentication"],["authentciator","authenticator"],["authentciators","authenticators"],["authenticaiton","authentication"],["authenticateion","authentication"],["authentiction","authentication"],["authentification","authentication"],["auther","author"],["autherisation","authorisation"],["autherise","authorise"],["autherization","authorization"],["autherize","authorize"],["authers","authors"],["authethenticate","authenticate"],["authethenticated","authenticated"],["authethenticates","authenticates"],["authethenticating","authenticating"],["authethentication","authentication"],["authethenticator","authenticator"],["authethenticators","authenticators"],["authethicate","authenticate"],["authethicated","authenticated"],["authethicates","authenticates"],["authethicating","authenticating"],["authethication","authentication"],["authethicator","authenticator"],["authethicators","authenticators"],["autheticate","authenticate"],["autheticated","authenticated"],["autheticates","authenticates"],["autheticating","authenticating"],["authetication","authentication"],["autheticator","authenticator"],["autheticators","authenticators"],["authetnicate","authenticate"],["authetnicated","authenticated"],["authetnicates","authenticates"],["authetnicating","authenticating"],["authetnication","authentication"],["authetnicator","authenticator"],["authetnicators","authenticators"],["authetnticate","authenticate"],["authetnticated","authenticated"],["authetnticates","authenticates"],["authetnticating","authenticating"],["authetntication","authentication"],["authetnticator","authenticator"],["authetnticators","authenticators"],["authobiographic","autobiographic"],["authobiography","autobiography"],["authoer","author"],["authoratative","authoritative"],["authorative","authoritative"],["authorded","authored"],["authorites","authorities"],["authorithy","authority"],["authoritiers","authorities"],["authorititive","authoritative"],["authoritive","authoritative"],["authorizeed","authorized"],["authror","author"],["authrored","authored"],["authrorisation","authorisation"],["authrorities","authorities"],["authrorization","authorization"],["authrors","authors"],["autimatic","automatic"],["autimatically","automatically"],["autmatically","automatically"],["auto-dependancies","auto-dependencies"],["auto-destrcut","auto-destruct"],["auto-genrated","auto-generated"],["auto-genratet","auto-generated"],["auto-genration","auto-generation"],["auto-negatiotiation","auto-negotiation"],["auto-negatiotiations","auto-negotiations"],["auto-negoatiation","auto-negotiation"],["auto-negoatiations","auto-negotiations"],["auto-negoation","auto-negotiation"],["auto-negoations","auto-negotiations"],["auto-negociation","auto-negotiation"],["auto-negociations","auto-negotiations"],["auto-negogtiation","auto-negotiation"],["auto-negogtiations","auto-negotiations"],["auto-negoitation","auto-negotiation"],["auto-negoitations","auto-negotiations"],["auto-negoptionsotiation","auto-negotiation"],["auto-negoptionsotiations","auto-negotiations"],["auto-negosiation","auto-negotiation"],["auto-negosiations","auto-negotiations"],["auto-negotaiation","auto-negotiation"],["auto-negotaiations","auto-negotiations"],["auto-negotaition","auto-negotiation"],["auto-negotaitions","auto-negotiations"],["auto-negotatiation","auto-negotiation"],["auto-negotatiations","auto-negotiations"],["auto-negotation","auto-negotiation"],["auto-negotations","auto-negotiations"],["auto-negothiation","auto-negotiation"],["auto-negothiations","auto-negotiations"],["auto-negotication","auto-negotiation"],["auto-negotications","auto-negotiations"],["auto-negotioation","auto-negotiation"],["auto-negotioations","auto-negotiations"],["auto-negotion","auto-negotiation"],["auto-negotionation","auto-negotiation"],["auto-negotionations","auto-negotiations"],["auto-negotions","auto-negotiations"],["auto-negotiotation","auto-negotiation"],["auto-negotiotations","auto-negotiations"],["auto-negotitaion","auto-negotiation"],["auto-negotitaions","auto-negotiations"],["auto-negotitation","auto-negotiation"],["auto-negotitations","auto-negotiations"],["auto-negotition","auto-negotiation"],["auto-negotitions","auto-negotiations"],["auto-negoziation","auto-negotiation"],["auto-negoziations","auto-negotiations"],["auto-realease","auto-release"],["auto-realeased","auto-released"],["autochtonous","autochthonous"],["autocmplete","autocomplete"],["autocmpleted","autocompleted"],["autocmpletes","autocompletes"],["autocmpleting","autocompleting"],["autocommiting","autocommitting"],["autoconplete","autocomplete"],["autoconpleted","autocompleted"],["autoconpletes","autocompletes"],["autoconpleting","autocompleting"],["autoconpletion","autocompletion"],["autocoomit","autocommit"],["autoctonous","autochthonous"],["autoeselect","autoselect"],["autofilt","autofilter"],["autofomat","autoformat"],["autoformating","autoformatting"],["autogenrated","autogenerated"],["autogenratet","autogenerated"],["autogenration","autogeneration"],["autogroping","autogrouping"],["autohorized","authorized"],["autoincrememnt","autoincrement"],["autoincrementive","autoincrement"],["automaatically","automatically"],["automagicaly","automagically"],["automaitc","automatic"],["automaitcally","automatically"],["automanifactured","automanufactured"],["automatcally","automatically"],["automatially","automatically"],["automaticallly","automatically"],["automaticaly","automatically"],["automaticalyl","automatically"],["automaticalyy","automatically"],["automaticlly","automatically"],["automaticly","automatically"],["autometic","automatic"],["autometically","automatically"],["automibile","automobile"],["automical","automatic"],["automically","automatically"],["automicaly","automatically"],["automicatilly","automatically"],["automiclly","automatically"],["automicly","automatically"],["automonomous","autonomous"],["automtic","automatic"],["automtically","automatically"],["autonagotiation","autonegotiation"],["autonegatiotiation","autonegotiation"],["autonegatiotiations","autonegotiations"],["autonegoatiation","autonegotiation"],["autonegoatiations","autonegotiations"],["autonegoation","autonegotiation"],["autonegoations","autonegotiations"],["autonegociated","autonegotiated"],["autonegociation","autonegotiation"],["autonegociations","autonegotiations"],["autonegogtiation","autonegotiation"],["autonegogtiations","autonegotiations"],["autonegoitation","autonegotiation"],["autonegoitations","autonegotiations"],["autonegoptionsotiation","autonegotiation"],["autonegoptionsotiations","autonegotiations"],["autonegosiation","autonegotiation"],["autonegosiations","autonegotiations"],["autonegotaiation","autonegotiation"],["autonegotaiations","autonegotiations"],["autonegotaition","autonegotiation"],["autonegotaitions","autonegotiations"],["autonegotatiation","autonegotiation"],["autonegotatiations","autonegotiations"],["autonegotation","autonegotiation"],["autonegotations","autonegotiations"],["autonegothiation","autonegotiation"],["autonegothiations","autonegotiations"],["autonegotication","autonegotiation"],["autonegotications","autonegotiations"],["autonegotioation","autonegotiation"],["autonegotioations","autonegotiations"],["autonegotion","autonegotiation"],["autonegotionation","autonegotiation"],["autonegotionations","autonegotiations"],["autonegotions","autonegotiations"],["autonegotiotation","autonegotiation"],["autonegotiotations","autonegotiations"],["autonegotitaion","autonegotiation"],["autonegotitaions","autonegotiations"],["autonegotitation","autonegotiation"],["autonegotitations","autonegotiations"],["autonegotition","autonegotiation"],["autonegotitions","autonegotiations"],["autonegoziation","autonegotiation"],["autonegoziations","autonegotiations"],["autoneogotiation","autonegotiation"],["autoneotiation","autonegotiation"],["autonogotiation","autonegotiation"],["autonymous","autonomous"],["autoonf","autoconf"],["autopsec","autospec"],["autor","author"],["autorealease","autorelease"],["autorisation","authorisation"],["autoritative","authoritative"],["autority","authority"],["autorization","authorization"],["autoropeat","autorepeat"],["autors","authors"],["autosae","autosave"],["autosavegs","autosaves"],["autosaveperodical","autosaveperiodical"],["autosence","autosense"],["autum","autumn"],["auxialiary","auxiliary"],["auxilaries","auxiliaries"],["auxilary","auxiliary"],["auxileries","auxiliaries"],["auxilery","auxiliary"],["auxiliar","auxiliary"],["auxillaries","auxiliaries"],["auxillary","auxiliary"],["auxilleries","auxiliaries"],["auxillery","auxiliary"],["auxilliaries","auxiliaries"],["auxilliary","auxiliary"],["auxiluary","auxiliary"],["auxliliary","auxiliary"],["avaiable","available"],["avaialable","available"],["avaialbale","available"],["avaialbe","available"],["avaialbel","available"],["avaialbility","availability"],["avaialble","available"],["avaiblable","available"],["avaible","available"],["avaiiability","availability"],["avaiiable","available"],["avaiibility","availability"],["avaiible","available"],["avaiilable","available"],["availaable","available"],["availabable","available"],["availabal","available"],["availabale","available"],["availabality","availability"],["availabble","available"],["availabe","available"],["availabed","available"],["availabel","available"],["availabele","available"],["availabelity","availability"],["availabillity","availability"],["availabilty","availability"],["availabke","available"],["availabl","available"],["availabled","available"],["availablen","available"],["availablity","availability"],["availabyl","available"],["availaiable","available"],["availaibility","availability"],["availaible","available"],["availailability","availability"],["availaility","availability"],["availalable","available"],["availalbe","available"],["availalble","available"],["availale","available"],["availaliable","available"],["availality","availability"],["availanle","available"],["availavble","available"],["availavility","availability"],["availavle","available"],["availbable","available"],["availbale","available"],["availbe","available"],["availble","available"],["availeable","available"],["availebilities","availabilities"],["availebility","availability"],["availeble","available"],["availiable","available"],["availibility","availability"],["availibilty","availability"],["availible","available"],["availlable","available"],["avalable","available"],["avalaible","available"],["avalance","avalanche"],["avaliable","available"],["avalibale","available"],["avalible","available"],["avaloable","available"],["avaluate","evaluate"],["avaluated","evaluated"],["avaluates","evaluates"],["avaluating","evaluating"],["avance","advance"],["avanced","advanced"],["avances","advances"],["avancing","advancing"],["avaoid","avoid"],["avaoidable","avoidable"],["avaoided","avoided"],["avarage","average"],["avarageing","averaging"],["avarege","average"],["avation","aviation"],["avcoid","avoid"],["avcoids","avoids"],["avdisories","advisories"],["avdisoriyes","advisories"],["avdisory","advisory"],["avengence","a vengeance"],["averageed","averaged"],["averagine","averaging"],["averload","overload"],["averloaded","overloaded"],["averloads","overloads"],["avertising","advertising"],["avgerage","average"],["aviable","available"],["avialable","available"],["avilability","availability"],["avilable","available"],["aviod","avoid"],["avioded","avoided"],["avioding","avoiding"],["aviods","avoids"],["avisories","advisories"],["avisoriyes","advisories"],["avisory","advisory"],["avod","avoid"],["avoded","avoided"],["avoding","avoiding"],["avods","avoids"],["avoidence","avoidance"],["avoind","avoid"],["avoinded","avoided"],["avoinding","avoiding"],["avoinds","avoids"],["avriable","variable"],["avriables","variables"],["avriant","variant"],["avriants","variants"],["avtive","active"],["awared","awarded"],["aweful","awful"],["awefully","awfully"],["awkard","awkward"],["awming","awning"],["awmings","awnings"],["awnser","answer"],["awnsered","answered"],["awnsers","answers"],["awoid","avoid"],["awsome","awesome"],["awya","away"],["axises","axes"],["axissymmetric","axisymmetric"],["axix","axis"],["axixsymmetric","axisymmetric"],["axpressed","expressed"],["aysnc","async"],["ayways","always"],["bacause","because"],["baceause","because"],["bacground","background"],["bacic","basic"],["backards","backwards"],["backbround","background"],["backbrounds","backgrounds"],["backedn","backend"],["backedns","backends"],["backgorund","background"],["backgorunds","backgrounds"],["backgound","background"],["backgounds","backgrounds"],["backgournd","background"],["backgournds","backgrounds"],["backgrond","background"],["backgronds","backgrounds"],["backgroound","background"],["backgroounds","backgrounds"],["backgroud","background"],["backgroudn","background"],["backgroudns","backgrounds"],["backgrouds","backgrounds"],["backgroun","background"],["backgroung","background"],["backgroungs","backgrounds"],["backgrouns","backgrounds"],["backgrount","background"],["backgrounts","backgrounds"],["backgrouund","background"],["backgrund","background"],["backgrunds","backgrounds"],["backgruond","background"],["backgruonds","backgrounds"],["backlght","backlight"],["backlghting","backlighting"],["backlghts","backlights"],["backned","backend"],["backneds","backends"],["backound","background"],["backounds","backgrounds"],["backpsace","backspace"],["backrefence","backreference"],["backrgound","background"],["backrgounds","backgrounds"],["backround","background"],["backrounds","backgrounds"],["backsapce","backspace"],["backslase","backslash"],["backslases","backslashes"],["backslashs","backslashes"],["backwad","backwards"],["backwardss","backwards"],["backware","backward"],["backwark","backward"],["backwrad","backward"],["bactracking","backtracking"],["bacup","backup"],["baed","based"],["bage","bag"],["bahaving","behaving"],["bahavior","behavior"],["bahavioral","behavioral"],["bahaviors","behaviors"],["bahaviour","behaviour"],["baisc","basic"],["baised","raised"],["bakc","back"],["bakcrefs","backrefs"],["bakends","backends"],["bakground","background"],["bakgrounds","backgrounds"],["bakup","backup"],["bakups","backups"],["bakward","backward"],["bakwards","backwards"],["balacing","balancing"],["balence","balance"],["baloon","balloon"],["baloons","balloons"],["balse","false"],["banannas","bananas"],["bandwdith","bandwidth"],["bandwdiths","bandwidths"],["bandwidht","bandwidth"],["bandwidthm","bandwidth"],["bandwitdh","bandwidth"],["bandwith","bandwidth"],["bankrupcy","bankruptcy"],["banlance","balance"],["banruptcy","bankruptcy"],["barbedos","barbados"],["bariier","barrier"],["barnch","branch"],["barnched","branched"],["barncher","brancher"],["barnchers","branchers"],["barnches","branches"],["barnching","branching"],["barriors","barriers"],["barrriers","barriers"],["barycentic","barycentric"],["basci","basic"],["bascially","basically"],["bascktrack","backtrack"],["basf","base"],["basicallly","basically"],["basicaly","basically"],["basiclly","basically"],["basicly","basically"],["basline","baseline"],["baslines","baselines"],["bassic","basic"],["bassically","basically"],["bastract","abstract"],["bastracted","abstracted"],["bastracter","abstracter"],["bastracting","abstracting"],["bastraction","abstraction"],["bastractions","abstractions"],["bastractly","abstractly"],["bastractness","abstractness"],["bastractor","abstractor"],["bastracts","abstracts"],["bateries","batteries"],["batery","battery"],["battaries","batteries"],["battary","battery"],["bbefore","before"],["bboolean","boolean"],["bbooleans","booleans"],["bcak","back"],["bcause","because"],["beable","be able"],["beacaon","beacon"],["beacause","because"],["beachead","beachhead"],["beacuse","because"],["beaon","beacon"],["bearword","bareword"],["beastiality","bestiality"],["beatiful","beautiful"],["beauracracy","bureaucracy"],["beaurocracy","bureaucracy"],["beaurocratic","bureaucratic"],["beause","because"],["beauti","beauty"],["beautiy","beauty"],["beautyfied","beautified"],["beautyfull","beautiful"],["beaviour","behaviour"],["bebongs","belongs"],["becaause","because"],["becacdd","because"],["becahse","because"],["becamae","became"],["becaouse","because"],["becase","because"],["becasue","because"],["becasuse","because"],["becauae","because"],["becauce","because"],["becaue","because"],["becaues","because"],["becaus","because"],["becausee","because"],["becauseq","because"],["becauses","because"],["becausw","because"],["beccause","because"],["bechmark","benchmark"],["bechmarked","benchmarked"],["bechmarking","benchmarking"],["bechmarks","benchmarks"],["becoem","become"],["becomeing","becoming"],["becomme","become"],["becommes","becomes"],["becomming","becoming"],["becoms","becomes"],["becouse","because"],["becoz","because"],["bector","vector"],["bectors","vectors"],["becuase","because"],["becuse","because"],["becxause","because"],["bedore","before"],["beeings","beings"],["beetween","between"],["beetwen","between"],["beffer","buffer"],["befoer","before"],["befor","before"],["beforehands","beforehand"],["beforere","before"],["befores","before"],["beforing","before"],["befure","before"],["begginer","beginner"],["begginers","beginners"],["beggingin","beginning"],["begginging","beginning"],["begginig","beginning"],["beggining","beginning"],["begginings","beginnings"],["begginnig","beginning"],["begginning","beginning"],["beggins","begins"],["beghavior","behavior"],["beghaviors","behaviors"],["begiinning","beginning"],["beginer","beginner"],["begines","begins"],["begining","beginning"],["beginining","beginning"],["begininings","beginnings"],["begininng","beginning"],["begininngs","beginnings"],["beginn","begin"],["beginnig","beginning"],["beginnin","beginning"],["beginnning","beginning"],["beginnnings","beginnings"],["behabior","behavior"],["behabiors","behaviors"],["behabiour","behaviour"],["behabiours","behaviours"],["behabviour","behaviour"],["behaivior","behavior"],["behaiviour","behaviour"],["behaiviuor","behaviour"],["behaivor","behavior"],["behaivors","behaviors"],["behaivour","behaviour"],["behaivoural","behavioural"],["behaivours","behaviours"],["behavioutr","behaviour"],["behaviro","behavior"],["behaviuor","behaviour"],["behavoir","behavior"],["behavoirs","behaviors"],["behavour","behaviour"],["behavriour","behaviour"],["behavriours","behaviours"],["behinde","behind"],["behvaiour","behaviour"],["behviour","behaviour"],["beigin","begin"],["beiginning","beginning"],["beind","behind"],["beinning","beginning"],["bejond","beyond"],["beleagured","beleaguered"],["beleif","belief"],["beleifable","believable"],["beleifed","believed"],["beleifing","believing"],["beleivable","believable"],["beleive","believe"],["beleived","believed"],["beleives","believes"],["beleiving","believing"],["beliefable","believable"],["beliefed","believed"],["beliefing","believing"],["beligum","belgium"],["beling","belong"],["belivable","believable"],["belive","believe"],["beliveable","believable"],["beliveably","believably"],["beliveble","believable"],["belivebly","believably"],["beliving","believing"],["belligerant","belligerent"],["bellweather","bellwether"],["belog","belong"],["beloging","belonging"],["belogs","belongs"],["belond","belong"],["beloning","belonging"],["belown","belong"],["belwo","below"],["bemusemnt","bemusement"],["benchamarked","benchmarked"],["benchamarking","benchmarking"],["benchamrk","benchmark"],["benchamrked","benchmarked"],["benchamrking","benchmarking"],["benchamrks","benchmarks"],["benchmkar","benchmark"],["benchmkared","benchmarked"],["benchmkaring","benchmarking"],["benchmkars","benchmarks"],["benchs","benches"],["benckmark","benchmark"],["benckmarked","benchmarked"],["benckmarking","benchmarking"],["benckmarks","benchmarks"],["benechmark","benchmark"],["benechmarked","benchmarked"],["benechmarking","benchmarking"],["benechmarks","benchmarks"],["beneeth","beneath"],["benefical","beneficial"],["beneficary","beneficiary"],["benefied","benefited"],["benefitial","beneficial"],["beneits","benefits"],["benetifs","benefits"],["beng","being"],["benhind","behind"],["benificial","beneficial"],["benifit","benefit"],["benifite","benefit"],["benifited","benefited"],["benifitial","beneficial"],["benifits","benefits"],["benig","being"],["beond","beyond"],["berforming","performing"],["bergamont","bergamot"],["Berkley","Berkeley"],["Bernouilli","Bernoulli"],["berween","between"],["besed","based"],["beseige","besiege"],["beseiged","besieged"],["beseiging","besieging"],["besure","be sure"],["beteeen","between"],["beteen","between"],["beter","better"],["beteween","between"],["betrween","between"],["bettern","better"],["bettween","between"],["betwean","between"],["betwee","between"],["betweed","between"],["betweeen","between"],["betweem","between"],["betweend","between"],["betweeness","betweenness"],["betweent","between"],["betwen","between"],["betwene","between"],["betwenn","between"],["betwern","between"],["betwween","between"],["beucase","because"],["beuracracy","bureaucracy"],["beutification","beautification"],["beutiful","beautiful"],["beutifully","beautifully"],["bever","never"],["bevore","before"],["bevorehand","beforehand"],["bevorhand","beforehand"],["beweeen","between"],["beween","between"],["bewteen","between"],["bewteeness","betweenness"],["beyone","beyond"],["beyong","beyond"],["beyound","beyond"],["bffer","buffer"],["bginning","beginning"],["bi-langual","bi-lingual"],["bianries","binaries"],["bianry","binary"],["biappicative","biapplicative"],["biddings","bidding"],["bidimentionnal","bidimensional"],["bidning","binding"],["bidnings","bindings"],["bigallic","bigalloc"],["bigining","beginning"],["biginning","beginning"],["biinary","binary"],["bilangual","bilingual"],["bilateraly","bilaterally"],["billingualism","bilingualism"],["billon","billion"],["bimask","bitmask"],["bimillenia","bimillennia"],["bimillenial","bimillennial"],["bimillenium","bimillennium"],["bimontly","bimonthly"],["binairy","binary"],["binanary","binary"],["binar","binary"],["binay","binary"],["bindins","bindings"],["binidng","binding"],["binominal","binomial"],["binraries","binaries"],["binrary","binary"],["bion","bio"],["birght","bright"],["birghten","brighten"],["birghter","brighter"],["birghtest","brightest"],["birghtness","brightness"],["biridectionality","bidirectionality"],["bisct","bisect"],["bisines","business"],["bisiness","business"],["bisnes","business"],["bisness","business"],["bistream","bitstream"],["bisunes","business"],["bisuness","business"],["bitamps","bitmaps"],["bitap","bitmap"],["bitfileld","bitfield"],["bitfilelds","bitfields"],["bitis","bits"],["bitmast","bitmask"],["bitnaps","bitmaps"],["bitwise-orring","bitwise-oring"],["bizare","bizarre"],["bizarely","bizarrely"],["bizzare","bizarre"],["bject","object"],["bjects","objects"],["blackslashes","backslashes"],["blaclist","blacklist"],["blaim","blame"],["blaimed","blamed"],["blanace","balance"],["blancked","blanked"],["blatent","blatant"],["blatently","blatantly"],["blbos","blobs"],["blcok","block"],["blcoks","blocks"],["bleading","bleeding"],["blessd","blessed"],["blessure","blessing"],["bletooth","bluetooth"],["bleutooth","bluetooth"],["blindy","blindly"],["Blitzkreig","Blitzkrieg"],["bload","bloat"],["bloaded","bloated"],["blocack","blockack"],["bloccks","blocks"],["blocekd","blocked"],["blockhain","blockchain"],["blockhains","blockchains"],["blockin","blocking"],["blockse","blocks"],["bloddy","bloody"],["blodk","block"],["bloek","bloke"],["bloekes","blokes"],["bloeks","blokes"],["bloekss","blokes"],["blohted","bloated"],["blokcer","blocker"],["blokchain","blockchain"],["blokchains","blockchains"],["blokcing","blocking"],["bloked","blocked"],["bloker","blocker"],["bloking","blocking"],["blong","belong"],["blonged","belonged"],["blonging","belonging"],["blongs","belongs"],["bloock","block"],["bloocks","blocks"],["bloted","bloated"],["bluestooth","bluetooth"],["bluetooh","bluetooth"],["bluetoot","bluetooth"],["bluetootn","bluetooth"],["blured","blurred"],["blutooth","bluetooth"],["bnecause","because"],["boads","boards"],["boardcast","broadcast"],["bocome","become"],["boddy","body"],["bodiese","bodies"],["bodydbuilder","bodybuilder"],["boelean","boolean"],["boeleans","booleans"],["boffer","buffer"],["bofore","before"],["bofy","body"],["boggus","bogus"],["bogos","bogus"],["bointer","pointer"],["bolean","boolean"],["boleen","boolean"],["bolor","color"],["bombardement","bombardment"],["bombarment","bombardment"],["bondary","boundary"],["Bonnano","Bonanno"],["bood","boot"],["bookeeping","bookkeeping"],["bookkeeing","bookkeeping"],["bookkeeiping","bookkeeping"],["bookkepp","bookkeep"],["bookmakr","bookmark"],["bookmar","bookmark"],["booleam","boolean"],["booleamn","boolean"],["booleamns","booleans"],["booleams","booleans"],["booleanss","booleans"],["booleen","boolean"],["booleens","booleans"],["boolen","boolean"],["boolens","booleans"],["booltloader","bootloader"],["booltloaders","bootloaders"],["boomark","bookmark"],["boomarks","bookmarks"],["boook","book"],["booolean","boolean"],["boooleans","booleans"],["booshelf","bookshelf"],["booshelves","bookshelves"],["boostrap","bootstrap"],["boostrapped","bootstrapped"],["boostrapping","bootstrapping"],["boostraps","bootstraps"],["booteek","boutique"],["bootlaoder","bootloader"],["bootlaoders","bootloaders"],["bootoloader","bootloader"],["bootom","bottom"],["bootraping","bootstrapping"],["bootsram","bootram"],["bootsrap","bootstrap"],["bootstap","bootstrap"],["bootstapped","bootstrapped"],["bootstapping","bootstrapping"],["bootstaps","bootstraps"],["booundaries","boundaries"],["booundary","boundary"],["boquet","bouquet"],["borad","board"],["boradcast","broadcast"],["bording","boarding"],["bordreline","borderline"],["bordrelines","borderlines"],["borgwasy","bourgeoisie"],["borke","broke"],["borken","broken"],["borow","borrow"],["borwser","browsers"],["borwsers","browsers"],["bothe","both"],["boths","both"],["botifies","notifies"],["bottem","bottom"],["bottlenck","bottleneck"],["bottlencks","bottlenecks"],["bottlenect","bottleneck"],["bottlenects","bottlenecks"],["bottlneck","bottleneck"],["bottlnecks","bottlenecks"],["bottomborde","bottomborder"],["bottome","bottom"],["bottomn","bottom"],["bottonm","bottom"],["botttom","bottom"],["bouce","bounce"],["bouces","bounces"],["boudaries","boundaries"],["boudary","boundary"],["bouding","bounding"],["boudnaries","boundaries"],["boudnary","boundary"],["bouds","bounds"],["bouind","bound"],["bouinded","bounded"],["bouinding","bounding"],["bouinds","bounds"],["boun","bound"],["bounaaries","boundaries"],["bounaary","boundary"],["bounad","bound"],["bounadaries","boundaries"],["bounadary","boundary"],["bounaded","bounded"],["bounading","bounding"],["bounadries","boundaries"],["bounadry","boundary"],["bounads","bounds"],["bounardies","boundaries"],["bounardy","boundary"],["bounaries","boundaries"],["bounary","boundary"],["bounbdaries","boundaries"],["bounbdary","boundary"],["boundares","boundaries"],["boundaryi","boundary"],["boundarys","boundaries"],["bounday","boundary"],["boundays","boundaries"],["bounderies","boundaries"],["boundery","boundary"],["boundig","bounding"],["boundimg","bounding"],["boundin","bounding"],["boundrary","boundary"],["boundries","boundaries"],["boundry","boundary"],["bounduaries","boundaries"],["bouned","bounded"],["boungaries","boundaries"],["boungary","boundary"],["boungin","bounding"],["boungind","bounding"],["bounhdaries","boundaries"],["bounhdary","boundary"],["bounidng","bounding"],["bouning","bounding"],["bounnd","bound"],["bounndaries","boundaries"],["bounndary","boundary"],["bounnded","bounded"],["bounnding","bounding"],["bounnds","bounds"],["bounradies","boundaries"],["bounrady","boundary"],["bounraies","boundaries"],["bounraries","boundaries"],["bounrary","boundary"],["bounray","boundary"],["bouns","bounds"],["bounsaries","boundaries"],["bounsary","boundary"],["bounsd","bounds"],["bount","bound"],["bountries","boundaries"],["bountry","boundary"],["bounudaries","boundaries"],["bounudary","boundary"],["bounus","bonus"],["bouqet","bouquet"],["bouund","bound"],["bouunded","bounded"],["bouunding","bounding"],["bouunds","bounds"],["bouy","buoy"],["bouyancy","buoyancy"],["bouyant","buoyant"],["boyant","buoyant"],["boycot","boycott"],["bracese","braces"],["brach","branch"],["brackeds","brackets"],["bracketwith","bracket with"],["brackground","background"],["bradcast","broadcast"],["brakpoint","breakpoint"],["brakpoints","breakpoints"],["branchces","branches"],["brancheswith","branches with"],["branchs","branches"],["branchsi","branches"],["branck","branch"],["branckes","branches"],["brancket","bracket"],["branckets","brackets"],["brane","brain"],["braodcast","broadcast"],["braodcasted","broadcasted"],["braodcasts","broadcasts"],["Brasillian","Brazilian"],["brazeer","brassiere"],["brazillian","Brazilian"],["breakes","breaks"],["breakthough","breakthrough"],["breakthroughts","breakthroughs"],["breakthruogh","breakthrough"],["breakthruoghs","breakthroughs"],["breal","break"],["breefly","briefly"],["brefore","before"],["breif","brief"],["breifly","briefly"],["brekpoint","breakpoint"],["brekpoints","breakpoints"],["breshed","brushed"],["breshes","brushes"],["breshing","brushing"],["brethen","brethren"],["bretheren","brethren"],["brfore","before"],["bridg","bridge"],["brievely","briefly"],["brievety","brevity"],["brigde","bridge"],["brige","bridge"],["briges","bridges"],["brighness","brightness"],["brightnesss","brightness"],["brigth","bright"],["brigthnes","brightness"],["brigthness","brightness"],["briliant","brilliant"],["brilinear","bilinear"],["brillant","brilliant"],["brimestone","brimstone"],["bringin","bringing"],["bringtofont","bringtofront"],["brite","bright"],["briten","brighten"],["britened","brightened"],["britener","brightener"],["briteners","brighteners"],["britenes","brightenes"],["britening","brightening"],["briter","brighter"],["Britian","Britain"],["Brittish","British"],["brnach","branch"],["brnaches","branches"],["broacast","broadcast"],["broacasted","broadcast"],["broacasting","broadcasting"],["broacasts","broadcasts"],["broadacasting","broadcasting"],["broadcas","broadcast"],["broadcase","broadcast"],["broadcasti","broadcast"],["broadcat","broadcast"],["broady","broadly"],["broardcast","broadcast"],["broblematic","problematic"],["brocher","brochure"],["brocken","broken"],["brockend","broken"],["brockened","broken"],["brocolee","broccoli"],["brodcast","broadcast"],["broked","broken"],["brokem","broken"],["brokend","broken"],["brokened","broken"],["brokeness","brokenness"],["bronken","broken"],["brosable","browsable"],["broser","browser"],["brosers","browsers"],["brosing","browsing"],["broswable","browsable"],["broswe","browse"],["broswed","browsed"],["broswer","browser"],["broswers","browsers"],["broswing","browsing"],["brower","browser"],["browers","browsers"],["browing","browsing"],["browseable","browsable"],["browswable","browsable"],["browswe","browse"],["browswed","browsed"],["browswer","browser"],["browswers","browsers"],["browswing","browsing"],["brutaly","brutally"],["brwosable","browsable"],["brwose","browse"],["brwosed","browsed"],["brwoser","browser"],["brwosers","browsers"],["brwosing","browsing"],["btye","byte"],["btyes","bytes"],["buad","baud"],["bubbless","bubbles"],["Buddah","Buddha"],["Buddist","Buddhist"],["bufefr","buffer"],["bufer","buffer"],["bufers","buffers"],["buffereed","buffered"],["bufferent","buffered"],["bufferes","buffers"],["bufferred","buffered"],["buffeur","buffer"],["bufffer","buffer"],["bufffers","buffers"],["buffor","buffer"],["buffors","buffers"],["buffr","buffer"],["buffred","buffered"],["buffring","buffering"],["bufufer","buffer"],["buggest","biggest"],["bugous","bogus"],["buguous","bogus"],["bugus","bogus"],["buid","build"],["buider","builder"],["buiders","builders"],["buiding","building"],["buidl","build"],["buidling","building"],["buidlings","buildings"],["buidls","builds"],["buiild","build"],["buik","bulk"],["build-dependancies","build-dependencies"],["build-dependancy","build-dependency"],["build-in","built-in"],["builded","built"],["buildpackge","buildpackage"],["buildpackges","buildpackages"],["builing","building"],["builings","buildings"],["buillt","built"],["built-time","build-time"],["builter","builder"],["builters","builders"],["buinseses","businesses"],["buinsess","business"],["buinsesses","businesses"],["buipd","build"],["buisness","business"],["buisnessman","businessman"],["buissiness","business"],["buissinesses","businesses"],["buit","built"],["buitin","builtin"],["buitins","builtins"],["buitlin","builtin"],["buitlins","builtins"],["buitton","button"],["buittons","buttons"],["buld","build"],["bulding","building"],["bulds","builds"],["bulid","build"],["buliding","building"],["bulids","builds"],["bulit","built"],["bulitin","built-in"],["bulle","bullet"],["bulletted","bulleted"],["bulnerabilities","vulnerabilities"],["bulnerability","vulnerability"],["bulnerable","vulnerable"],["bult","built"],["bult-in","built-in"],["bultin","builtin"],["bumby","bumpy"],["bumpded","bumped"],["bumpt","bump"],["bumpted","bumped"],["bumpter","bumper"],["bumpting","bumping"],["bundel","bundle"],["bundeled","bundled"],["bundels","bundles"],["buoancy","buoyancy"],["bureauracy","bureaucracy"],["burocratic","bureaucratic"],["burried","buried"],["burtst","burst"],["busines","business"],["busness","business"],["bussiness","business"],["bussy","busy"],["buton","button"],["butons","buttons"],["butterly","butterfly"],["buttong","button"],["buttonn","button"],["buttonns","buttons"],["buttosn","buttons"],["buttton","button"],["butttons","buttons"],["buufers","buffers"],["buuild","build"],["buuilds","builds"],["bve","be"],["bwtween","between"],["bypas","bypass"],["bypased","bypassed"],["bypasing","bypassing"],["bytetream","bytestream"],["bytetreams","bytestreams"],["cabint","cabinet"],["cabints","cabinets"],["cacahe","cache"],["cacahes","caches"],["cace","cache"],["cachable","cacheable"],["cacheed","cached"],["cacheing","caching"],["cachline","cacheline"],["cacl","calc"],["caclate","calculate"],["cacluate","calculate"],["cacluated","calculated"],["cacluater","calculator"],["cacluates","calculates"],["cacluating","calculating"],["cacluation","calculation"],["cacluations","calculations"],["cacluator","calculator"],["caclucate","calculate"],["caclucation","calculation"],["caclucations","calculations"],["caclucator","calculator"],["caclulate","calculate"],["caclulated","calculated"],["caclulates","calculates"],["caclulating","calculating"],["caclulation","calculation"],["caclulations","calculations"],["caculate","calculate"],["caculated","calculated"],["caculater","calculator"],["caculates","calculates"],["caculating","calculating"],["caculation","calculation"],["caculations","calculations"],["caculator","calculator"],["cacuses","caucuses"],["cadidate","candidate"],["caefully","carefully"],["Caesarian","Caesarean"],["cahacter","character"],["cahacters","characters"],["cahange","change"],["cahanged","changed"],["cahanges","changes"],["cahanging","changing"],["cahannel","channel"],["caharacter","character"],["caharacters","characters"],["caharcter","character"],["caharcters","characters"],["cahc","cache"],["cahce","cache"],["cahced","cached"],["cahces","caches"],["cahche","cache"],["cahchedb","cachedb"],["cahches","caches"],["cahcing","caching"],["cahcs","caches"],["cahdidate","candidate"],["cahdidates","candidates"],["cahe","cache"],["cahes","caches"],["cahgne","change"],["cahgned","changed"],["cahgner","changer"],["cahgners","changers"],["cahgnes","changes"],["cahgning","changing"],["cahhel","channel"],["cahhels","channels"],["cahined","chained"],["cahing","caching"],["cahining","chaining"],["cahnge","change"],["cahnged","changed"],["cahnges","changes"],["cahnging","changing"],["cahnnel","channel"],["cahnnels","channels"],["cahr","char"],["cahracter","character"],["cahracters","characters"],["cahrging","charging"],["cahrs","chars"],["calaber","caliber"],["calalog","catalog"],["calback","callback"],["calbirate","calibrate"],["calbirated","calibrated"],["calbirates","calibrates"],["calbirating","calibrating"],["calbiration","calibration"],["calbirations","calibrations"],["calbirator","calibrator"],["calbirators","calibrators"],["calcable","calculable"],["calcalate","calculate"],["calciulate","calculate"],["calciulating","calculating"],["calclation","calculation"],["calcluate","calculate"],["calcluated","calculated"],["calcluates","calculates"],["calclulate","calculate"],["calclulated","calculated"],["calclulates","calculates"],["calclulating","calculating"],["calclulation","calculation"],["calclulations","calculations"],["calcualate","calculate"],["calcualated","calculated"],["calcualates","calculates"],["calcualating","calculating"],["calcualation","calculation"],["calcualations","calculations"],["calcualte","calculate"],["calcualted","calculated"],["calcualter","calculator"],["calcualtes","calculates"],["calcualting","calculating"],["calcualtion","calculation"],["calcualtions","calculations"],["calcualtor","calculator"],["calcuate","calculate"],["calcuated","calculated"],["calcuates","calculates"],["calcuation","calculation"],["calcuations","calculations"],["calculaion","calculation"],["calculataed","calculated"],["calculater","calculator"],["calculatted","calculated"],["calculatter","calculator"],["calculattion","calculation"],["calculattions","calculations"],["calculaution","calculation"],["calculautions","calculations"],["calculcate","calculate"],["calculcation","calculation"],["calculed","calculated"],["calculs","calculus"],["calcultate","calculate"],["calcultated","calculated"],["calcultater","calculator"],["calcultating","calculating"],["calcultator","calculator"],["calculting","calculating"],["calculuations","calculations"],["calcurate","calculate"],["calcurated","calculated"],["calcurates","calculates"],["calcurating","calculating"],["calcutate","calculate"],["calcutated","calculated"],["calcutates","calculates"],["calcutating","calculating"],["caleed","called"],["caleee","callee"],["calees","callees"],["caler","caller"],["calescing","coalescing"],["caliased","aliased"],["calibraiton","calibration"],["calibraitons","calibrations"],["calibrte","calibrate"],["calibrtion","calibration"],["caligraphy","calligraphy"],["calilng","calling"],["caliming","claiming"],["callabck","callback"],["callabcks","callbacks"],["callack","callback"],["callbacl","callback"],["callbacsk","callback"],["callbak","callback"],["callbakc","callback"],["callbakcs","callbacks"],["callbck","callback"],["callcack","callback"],["callcain","callchain"],["calld","called"],["calle","called"],["callef","called"],["callibrate","calibrate"],["callibrated","calibrated"],["callibrates","calibrates"],["callibrating","calibrating"],["callibration","calibration"],["callibrations","calibrations"],["callibri","calibri"],["callig","calling"],["callint","calling"],["callled","called"],["calllee","callee"],["calloed","called"],["callsr","calls"],["calsses","classes"],["calucalte","calculate"],["calucalted","calculated"],["calucaltes","calculates"],["calucalting","calculating"],["calucaltion","calculation"],["calucaltions","calculations"],["calucate","calculate"],["caluclate","calculate"],["caluclated","calculated"],["caluclater","calculator"],["caluclates","calculates"],["caluclating","calculating"],["caluclation","calculation"],["caluclations","calculations"],["caluclator","calculator"],["caluculate","calculate"],["caluculated","calculated"],["caluculates","calculates"],["caluculating","calculating"],["caluculation","calculation"],["caluculations","calculations"],["calue","value"],["calulate","calculate"],["calulated","calculated"],["calulater","calculator"],["calulates","calculates"],["calulating","calculating"],["calulation","calculation"],["calulations","calculations"],["Cambrige","Cambridge"],["camoflage","camouflage"],["camoflague","camouflage"],["campagin","campaign"],["campain","campaign"],["campaing","campaign"],["campains","campaigns"],["camparing","comparing"],["can;t","can't"],["canadan","canadian"],["canbe","can be"],["cancelaltion","cancellation"],["cancelation","cancellation"],["cancelations","cancellations"],["canceles","cancels"],["cancell","cancel"],["cancelles","cancels"],["cances","cancel"],["cancl","cancel"],["cancle","cancel"],["cancled","canceled"],["candadate","candidate"],["candadates","candidates"],["candiate","candidate"],["candiates","candidates"],["candidat","candidate"],["candidats","candidates"],["candidiate","candidate"],["candidiates","candidates"],["candinate","candidate"],["candinates","candidates"],["canditate","candidate"],["canditates","candidates"],["cange","change"],["canged","changed"],["canges","changes"],["canging","changing"],["canidate","candidate"],["canidates","candidates"],["cann't","can't"],["cann","can"],["cannister","canister"],["cannisters","canisters"],["cannnot","cannot"],["cannobt","cannot"],["cannonical","canonical"],["cannonicalize","canonicalize"],["cannont","cannot"],["cannotation","connotation"],["cannotations","connotations"],["cannott","cannot"],["canonalize","canonicalize"],["canonalized","canonicalized"],["canonalizes","canonicalizes"],["canonalizing","canonicalizing"],["canoncial","canonical"],["canonicalizations","canonicalization"],["canonival","canonical"],["canot","cannot"],["cant'","can't"],["cant't","can't"],["cant;","can't"],["cantact","contact"],["cantacted","contacted"],["cantacting","contacting"],["cantacts","contacts"],["canvase","canvas"],["caost","coast"],["capabable","capable"],["capabicity","capability"],["capabiities","capabilities"],["capabiity","capability"],["capabilies","capabilities"],["capabiliites","capabilities"],["capabilites","capabilities"],["capabilitieis","capabilities"],["capabilitiies","capabilities"],["capabilitires","capabilities"],["capabilitiy","capability"],["capabillity","capability"],["capabilties","capabilities"],["capabiltity","capability"],["capabilty","capability"],["capabitilies","capabilities"],["capablilities","capabilities"],["capablities","capabilities"],["capablity","capability"],["capaciy","capacity"],["capalize","capitalize"],["capalized","capitalized"],["capapbilities","capabilities"],["capatibilities","capabilities"],["capbability","capability"],["capbale","capable"],["capela","capella"],["caperbility","capability"],["Capetown","Cape Town"],["capibilities","capabilities"],["capible","capable"],["capitolize","capitalize"],["cappable","capable"],["captable","capable"],["captial","capital"],["captrure","capture"],["captued","captured"],["capturd","captured"],["caputre","capture"],["caputred","captured"],["caputres","captures"],["caputure","capture"],["carachter","character"],["caracter","character"],["caractere","character"],["caracteristic","characteristic"],["caracterized","characterized"],["caracters","characters"],["carbus","cardbus"],["carefuly","carefully"],["careing","caring"],["carfull","careful"],["cariage","carriage"],["caridge","carriage"],["cariier","carrier"],["carismatic","charismatic"],["Carmalite","Carmelite"],["Carnagie","Carnegie"],["Carnagie-Mellon","Carnegie-Mellon"],["Carnigie","Carnegie"],["Carnigie-Mellon","Carnegie-Mellon"],["carniverous","carnivorous"],["caronavirus","coronavirus"],["caronaviruses","coronaviruses"],["carreer","career"],["carreid","carried"],["carrers","careers"],["carret","caret"],["carriadge","carriage"],["Carribbean","Caribbean"],["Carribean","Caribbean"],["carrien","carrier"],["carrige","carriage"],["carrrier","carrier"],["carryintg","carrying"],["carryng","carrying"],["cartain","certain"],["cartdridge","cartridge"],["cartensian","Cartesian"],["Carthagian","Carthaginian"],["carthesian","cartesian"],["carthographer","cartographer"],["cartiesian","cartesian"],["cartilege","cartilage"],["cartilidge","cartilage"],["cartrige","cartridge"],["caryy","carry"],["cascace","cascade"],["case-insensative","case-insensitive"],["case-insensetive","case-insensitive"],["case-insensistive","case-insensitive"],["case-insensitiv","case-insensitive"],["case-insensitivy","case-insensitivity"],["case-insensitve","case-insensitive"],["case-insenstive","case-insensitive"],["case-insentive","case-insensitive"],["case-insentivite","case-insensitive"],["case-insesitive","case-insensitive"],["case-intensitive","case-insensitive"],["case-sensative","case-sensitive"],["case-sensetive","case-sensitive"],["case-sensistive","case-sensitive"],["case-sensitiv","case-sensitive"],["case-sensitve","case-sensitive"],["case-senstive","case-sensitive"],["case-sentive","case-sensitive"],["case-sentivite","case-sensitive"],["case-sesitive","case-sensitive"],["case-unsensitive","case-insensitive"],["caseinsensative","case-insensitive"],["caseinsensetive","case-insensitive"],["caseinsensistive","case-insensitive"],["caseinsensitiv","case-insensitive"],["caseinsensitve","case-insensitive"],["caseinsenstive","case-insensitive"],["caseinsentive","case-insensitive"],["caseinsentivite","case-insensitive"],["caseinsesitive","case-insensitive"],["caseintensitive","case-insensitive"],["caselessely","caselessly"],["casesensative","case-sensitive"],["casesensetive","casesensitive"],["casesensistive","case-sensitive"],["casesensitiv","case-sensitive"],["casesensitve","case-sensitive"],["casesenstive","case-sensitive"],["casesentive","case-sensitive"],["casesentivite","case-sensitive"],["casesesitive","case-sensitive"],["casette","cassette"],["cashe","cache"],["casion","caisson"],["caspule","capsule"],["caspules","capsules"],["cassawory","cassowary"],["cassowarry","cassowary"],["casue","cause"],["casued","caused"],["casues","causes"],["casuing","causing"],["casulaties","casualties"],["casulaty","casualty"],["cataalogue","catalogue"],["catagori","category"],["catagories","categories"],["catagorization","categorization"],["catagorizations","categorizations"],["catagorized","categorized"],["catagory","category"],["catapillar","caterpillar"],["catapillars","caterpillars"],["catapiller","caterpillar"],["catapillers","caterpillars"],["catastronphic","catastrophic"],["catastropic","catastrophic"],["catastropically","catastrophically"],["catastrphic","catastrophic"],["catche","catch"],["catched","caught"],["catchi","catch"],["catchs","catches"],["categogical","categorical"],["categogically","categorically"],["categogies","categories"],["categogy","category"],["cateogrical","categorical"],["cateogrically","categorically"],["cateogries","categories"],["cateogry","category"],["catepillar","caterpillar"],["catepillars","caterpillars"],["catergorize","categorize"],["catergorized","categorized"],["caterpilar","caterpillar"],["caterpilars","caterpillars"],["caterpiller","caterpillar"],["caterpillers","caterpillars"],["catgorical","categorical"],["catgorically","categorically"],["catgories","categories"],["catgory","category"],["cathlic","catholic"],["catholocism","catholicism"],["catloag","catalog"],["catloaged","cataloged"],["catloags","catalogs"],["catory","factory"],["catpture","capture"],["catpure","capture"],["catpured","captured"],["catpures","captures"],["catterpilar","caterpillar"],["catterpilars","caterpillars"],["catterpillar","caterpillar"],["catterpillars","caterpillars"],["cattleship","battleship"],["caucasion","caucasian"],["cauched","caught"],["caugt","caught"],["cauhgt","caught"],["cauing","causing"],["causees","causes"],["causion","caution"],["causioned","cautioned"],["causions","cautions"],["causious","cautious"],["cavaet","caveat"],["cavaets","caveats"],["ccahe","cache"],["ccale","scale"],["ccertificate","certificate"],["ccertificated","certificated"],["ccertificates","certificates"],["ccertification","certification"],["ccessible","accessible"],["cche","cache"],["cconfiguration","configuration"],["ccordinate","coordinate"],["ccordinates","coordinates"],["ccordinats","coordinates"],["ccoutant","accountant"],["ccpcheck","cppcheck"],["ccurred","occurred"],["ccustom","custom"],["ccustoms","customs"],["cdecompress","decompress"],["ceartype","cleartype"],["Ceasar","Caesar"],["ceate","create"],["ceated","created"],["ceates","creates"],["ceating","creating"],["ceation","creation"],["ceck","check"],["cecked","checked"],["cecker","checker"],["cecking","checking"],["cecks","checks"],["cedential","credential"],["cedentials","credentials"],["cehck","check"],["cehcked","checked"],["cehcker","checker"],["cehcking","checking"],["cehcks","checks"],["Celcius","Celsius"],["celles","cells"],["cellpading","cellpadding"],["cellst","cells"],["cellxs","cells"],["celsuis","celsius"],["cementary","cemetery"],["cemetarey","cemetery"],["cemetaries","cemeteries"],["cemetary","cemetery"],["cenario","scenario"],["cenarios","scenarios"],["cencter","center"],["cencus","census"],["cengter","center"],["censequence","consequence"],["centain","certain"],["cententenial","centennial"],["centerd","centered"],["centisencond","centisecond"],["centisenconds","centiseconds"],["centrifugeable","centrifugable"],["centrigrade","centigrade"],["centriod","centroid"],["centriods","centroids"],["centruies","centuries"],["centruy","century"],["centuties","centuries"],["centuty","century"],["cerain","certain"],["cerainly","certainly"],["cerainty","certainty"],["cerate","create"],["cereates","creates"],["cerimonial","ceremonial"],["cerimonies","ceremonies"],["cerimonious","ceremonious"],["cerimony","ceremony"],["ceromony","ceremony"],["certaily","certainly"],["certaincy","certainty"],["certainity","certainty"],["certaint","certain"],["certaion","certain"],["certan","certain"],["certficate","certificate"],["certficated","certificated"],["certficates","certificates"],["certfication","certification"],["certfications","certifications"],["certficiate","certificate"],["certficiated","certificated"],["certficiates","certificates"],["certficiation","certification"],["certficiations","certifications"],["certfied","certified"],["certfy","certify"],["certian","certain"],["certianly","certainly"],["certicate","certificate"],["certicated","certificated"],["certicates","certificates"],["certication","certification"],["certicicate","certificate"],["certifacte","certificate"],["certifacted","certificated"],["certifactes","certificates"],["certifaction","certification"],["certifcate","certificate"],["certifcated","certificated"],["certifcates","certificates"],["certifcation","certification"],["certifciate","certificate"],["certifciated","certificated"],["certifciates","certificates"],["certifciation","certification"],["certifiate","certificate"],["certifiated","certificated"],["certifiates","certificates"],["certifiating","certificating"],["certifiation","certification"],["certifiations","certifications"],["certificat","certificate"],["certificatd","certificated"],["certificaton","certification"],["certificats","certificates"],["certifice","certificate"],["certificed","certificated"],["certifices","certificates"],["certificion","certification"],["certificste","certificate"],["certificsted","certificated"],["certificstes","certificates"],["certificsting","certificating"],["certificstion","certification"],["certifificate","certificate"],["certifificated","certificated"],["certifificates","certificates"],["certifification","certification"],["certiticate","certificate"],["certiticated","certificated"],["certiticates","certificates"],["certitication","certification"],["cetain","certain"],["cetainly","certainly"],["cetainty","certainty"],["cetrainly","certainly"],["cetting","setting"],["Cgywin","Cygwin"],["chaarges","charges"],["chacacter","character"],["chacacters","characters"],["chache","cache"],["chached","cached"],["chacheline","cacheline"],["chaeck","check"],["chaecked","checked"],["chaecker","checker"],["chaecking","checking"],["chaecks","checks"],["chagne","change"],["chagned","changed"],["chagnes","changes"],["chahged","changed"],["chahging","changing"],["chaied","chained"],["chaing","chain"],["chalenging","challenging"],["challanage","challenge"],["challange","challenge"],["challanged","challenged"],["challanges","challenges"],["challege","challenge"],["chambre","chamber"],["chambres","chambers"],["Champange","Champagne"],["chanage","change"],["chanaged","changed"],["chanager","changer"],["chanages","changes"],["chanaging","changing"],["chanceled","canceled"],["chanceling","canceling"],["chanched","changed"],["chaneged","changed"],["chaneging","changing"],["chanel","channel"],["chanell","channel"],["chanels","channels"],["changable","changeable"],["changeble","changeable"],["changeing","changing"],["changge","change"],["changged","changed"],["changgeling","changeling"],["changges","changes"],["changlog","changelog"],["changuing","changing"],["chanined","chained"],["chaninging","changing"],["chanllenge","challenge"],["chanllenging","challenging"],["channael","channel"],["channe","channel"],["channeles","channels"],["channl","channel"],["channle","channel"],["channles","channels"],["channnel","channel"],["channnels","channels"],["chanses","chances"],["chaper","chapter"],["characaters","characters"],["characer","character"],["characers","characters"],["characeter","character"],["characeters","characters"],["characetrs","characters"],["characher","character"],["charachers","characters"],["charachter","character"],["charachters","characters"],["characstyle","charstyle"],["charactar","character"],["charactaristic","characteristic"],["charactaristics","characteristics"],["charactars","characters"],["characte","character"],["charactear","character"],["charactears","characters"],["characted","character"],["characteds","characters"],["characteer","character"],["characteers","characters"],["characteisation","characterisation"],["characteization","characterization"],["characteor","character"],["characteors","characters"],["characterclasses","character classes"],["characteres","characters"],["characterisic","characteristic"],["characterisically","characteristically"],["characterisicly","characteristically"],["characterisics","characteristics"],["characterisitic","characteristic"],["characterisitics","characteristics"],["characteristicly","characteristically"],["characteritic","characteristic"],["characteritics","characteristics"],["characteritisc","characteristic"],["characteritiscs","characteristics"],["charactersistic","characteristic"],["charactersistically","characteristically"],["charactersistics","characteristics"],["charactersitic","characteristic"],["charactersm","characters"],["characterss","characters"],["characterstic","characteristic"],["characterstically","characteristically"],["characterstics","characteristics"],["charactertistic","characteristic"],["charactertistically","characteristically"],["charactertistics","characteristics"],["charactes","characters"],["charactet","character"],["characteter","character"],["characteteristic","characteristic"],["characteteristics","characteristics"],["characteters","characters"],["charactetistic","characteristic"],["charactetistics","characteristics"],["charactetr","character"],["charactetrs","characters"],["charactets","characters"],["characther","character"],["charactiristic","characteristic"],["charactiristically","characteristically"],["charactiristics","characteristics"],["charactor","character"],["charactors","characters"],["charactristic","characteristic"],["charactristically","characteristically"],["charactristics","characteristics"],["charactrs","characters"],["characts","characters"],["characture","character"],["charakter","character"],["charakters","characters"],["chararacter","character"],["chararacters","characters"],["chararcter","character"],["chararcters","characters"],["charas","chars"],["charascter","character"],["charascters","characters"],["charasmatic","charismatic"],["charater","character"],["charaterize","characterize"],["charaterized","characterized"],["charaters","characters"],["charator","character"],["charators","characters"],["charcater","character"],["charcter","character"],["charcteristic","characteristic"],["charcteristics","characteristics"],["charcters","characters"],["charctor","character"],["charctors","characters"],["charecter","character"],["charecters","characters"],["charector","character"],["chargind","charging"],["charicter","character"],["charicters","characters"],["charictor","character"],["charictors","characters"],["chariman","chairman"],["charistics","characteristics"],["charizma","charisma"],["chartroose","chartreuse"],["chassy","chassis"],["chatacter","character"],["chatacters","characters"],["chatch","catch"],["chater","chapter"],["chawk","chalk"],["chcek","check"],["chceked","checked"],["chceking","checking"],["chceks","checks"],["chck","check"],["chckbox","checkbox"],["cheapeast","cheapest"],["cheatta","cheetah"],["chec","check"],["checbox","checkbox"],["checboxes","checkboxes"],["checg","check"],["checged","checked"],["checheckpoit","checkpoint"],["checheckpoits","checkpoints"],["cheched","checked"],["cheching","checking"],["chechk","check"],["chechs","checks"],["checkalaises","checkaliases"],["checkcsum","checksum"],["checkd","checked"],["checkes","checks"],["checket","checked"],["checkk","check"],["checkng","checking"],["checkoslovakia","czechoslovakia"],["checkox","checkbox"],["checkpoing","checkpoint"],["checkstum","checksum"],["checkstuming","checksumming"],["checkstumming","checksumming"],["checkstums","checksums"],["checksume","checksum"],["checksumed","checksummed"],["checksuming","checksumming"],["checkt","checked"],["checkum","checksum"],["checkums","checksums"],["checkuot","checkout"],["checl","check"],["checled","checked"],["checling","checking"],["checls","checks"],["cheduling","scheduling"],["cheeper","cheaper"],["cheeta","cheetah"],["cheif","chief"],["cheifs","chiefs"],["chek","check"],["chekc","check"],["chekcing","checking"],["chekd","checked"],["cheked","checked"],["chekers","checkers"],["cheking","checking"],["cheks","checks"],["cheksum","checksum"],["cheksums","checksums"],["chello","cello"],["chemcial","chemical"],["chemcially","chemically"],["chemestry","chemistry"],["chemicaly","chemically"],["chenged","changed"],["chennel","channel"],["cherch","church"],["cherchs","churches"],["cherck","check"],["chercking","checking"],["chercks","checks"],["chescksums","checksums"],["chgange","change"],["chganged","changed"],["chganges","changes"],["chganging","changing"],["chidren","children"],["childbird","childbirth"],["childen","children"],["childeren","children"],["childern","children"],["childlren","children"],["chiledren","children"],["chilren","children"],["chineese","Chinese"],["chinense","Chinese"],["chinesse","Chinese"],["chipersuite","ciphersuite"],["chipersuites","ciphersuites"],["chipertext","ciphertext"],["chipertexts","ciphertexts"],["chipet","chipset"],["chipslect","chipselect"],["chipstes","chipsets"],["chiuldren","children"],["chked","checked"],["chnage","change"],["chnaged","changed"],["chnages","changes"],["chnaging","changing"],["chnge","change"],["chnged","changed"],["chnges","changes"],["chnging","changing"],["chnnel","channel"],["choclate","chocolate"],["choicing","choosing"],["choise","choice"],["choises","choices"],["choising","choosing"],["chooose","choose"],["choos","choose"],["choosen","chosen"],["chopipng","chopping"],["choronological","chronological"],["chosed","chose"],["choseen","chosen"],["choser","chooser"],["chosing","choosing"],["chossen","chosen"],["chowsing","choosing"],["chracter","character"],["chracters","characters"],["chractor","character"],["chractors","characters"],["chrminance","chrominance"],["chromum","chromium"],["chuch","church"],["chuks","chunks"],["chunaks","chunks"],["chunc","chunk"],["chunck","chunk"],["chuncked","chunked"],["chuncking","chunking"],["chuncks","chunks"],["chuncksize","chunksize"],["chuncs","chunks"],["chuned","chunked"],["churchs","churches"],["cick","click"],["cicrle","circle"],["cicruit","circuit"],["cicruits","circuits"],["cicular","circular"],["ciculars","circulars"],["cihpher","cipher"],["cihphers","ciphers"],["cilinder","cylinder"],["cilinders","cylinders"],["cilindrical","cylindrical"],["cilyndre","cylinder"],["cilyndres","cylinders"],["cilyndrs","cylinders"],["Cincinatti","Cincinnati"],["Cincinnatti","Cincinnati"],["cinfiguration","configuration"],["cinfigurations","configurations"],["cintaner","container"],["ciontrol","control"],["ciper","cipher"],["cipers","ciphers"],["cipersuite","ciphersuite"],["cipersuites","ciphersuites"],["cipertext","ciphertext"],["cipertexts","ciphertexts"],["ciphe","cipher"],["cipherntext","ciphertext"],["ciphersuit","ciphersuite"],["ciphersuits","ciphersuites"],["ciphersute","ciphersuite"],["ciphersutes","ciphersuites"],["cipheruite","ciphersuite"],["cipheruites","ciphersuites"],["ciphes","ciphers"],["ciphr","cipher"],["ciphrs","ciphers"],["cips","chips"],["circluar","circular"],["circluarly","circularly"],["circluars","circulars"],["circomvent","circumvent"],["circomvented","circumvented"],["circomvents","circumvents"],["circual","circular"],["circuitery","circuitry"],["circulaton","circulation"],["circumferance","circumference"],["circumferencial","circumferential"],["circumsicion","circumcision"],["circumstancial","circumstantial"],["circumstansial","circumstantial"],["circumstnce","circumstance"],["circumstnces","circumstances"],["circumstncial","circumstantial"],["circumstntial","circumstantial"],["circumvernt","circumvent"],["circunference","circumference"],["circunferences","circumferences"],["circunstance","circumstance"],["circunstances","circumstances"],["circunstantial","circumstantial"],["circustances","circumstances"],["circut","circuit"],["circuts","circuits"],["ciricle","circle"],["ciricles","circles"],["ciricuit","circuit"],["ciricuits","circuits"],["ciricular","circular"],["ciricularise","circularise"],["ciricularize","circularize"],["ciriculum","curriculum"],["cirilic","Cyrillic"],["cirillic","Cyrillic"],["ciritc","critic"],["ciritcal","critical"],["ciritcality","criticality"],["ciritcals","criticals"],["ciritcs","critics"],["ciriteria","criteria"],["ciritic","critic"],["ciritical","critical"],["ciriticality","criticality"],["ciriticals","criticals"],["ciritics","critics"],["cirlce","circle"],["cirle","circle"],["cirles","circles"],["cirsumstances","circumstances"],["cirtcuit","circuit"],["cirucal","circular"],["cirucit","circuit"],["cirucits","circuits"],["ciruclar","circular"],["ciruclation","circulation"],["ciruclator","circulator"],["cirucmflex","circumflex"],["cirucular","circular"],["cirucumstance","circumstance"],["cirucumstances","circumstances"],["ciruit","circuit"],["ciruits","circuits"],["cirumflex","circumflex"],["cirumstance","circumstance"],["cirumstances","circumstances"],["civillian","civilian"],["civillians","civilians"],["cjange","change"],["cjanged","changed"],["cjanges","changes"],["cjoice","choice"],["cjoices","choices"],["ckecksum","checksum"],["claaes","classes"],["claculate","calculate"],["claculation","calculation"],["claer","clear"],["claerer","clearer"],["claerly","clearly"],["claibscale","calibscale"],["claime","claim"],["claimes","claims"],["clame","claim"],["claread","cleared"],["clared","cleared"],["clarety","clarity"],["claring","clearing"],["clasic","classic"],["clasical","classical"],["clasically","classically"],["clasification","classification"],["clasified","classified"],["clasifies","classifies"],["clasify","classify"],["clasifying","classifying"],["clasroom","classroom"],["clasrooms","classrooms"],["classess","classes"],["classesss","classes"],["classifcation","classification"],["classifed","classified"],["classifer","classifier"],["classifers","classifiers"],["classificaion","classification"],["classrom","classroom"],["classroms","classrooms"],["classs","class"],["classses","classes"],["clatified","clarified"],["claus","clause"],["clcoksource","clocksource"],["clcosed","closed"],["clea","clean"],["cleaered","cleared"],["cleaing","cleaning"],["cleancacne","cleancache"],["cleaness","cleanness"],["cleanning","cleaning"],["cleannup","cleanup"],["cleanpu","cleanup"],["cleanpus","cleanups"],["cleantup","cleanup"],["cleareance","clearance"],["cleares","clears"],["clearified","clarified"],["clearifies","clarifies"],["clearify","clarify"],["clearifying","clarifying"],["clearling","clearing"],["clearnance","clearance"],["clearnances","clearances"],["clearouput","clearoutput"],["clearted","cleared"],["cleary","clearly"],["cleaup","cleanup"],["cleaups","cleanups"],["cleck","check"],["cleean","clean"],["cleen","clean"],["cleened","cleaned"],["cleens","cleans"],["cleff","clef"],["cleint's","client's"],["cleint","client"],["cleints","clients"],["clened","cleaned"],["clener","cleaner"],["clening","cleaning"],["cler","clear"],["clese","close"],["cleses","closes"],["clevely","cleverly"],["cliboard","clipboard"],["cliboards","clipboards"],["clibpoard","clipboard"],["clibpoards","clipboards"],["cliens","clients"],["cliensite","client-side"],["clienta","client"],["clientelle","clientele"],["clik","click"],["cliks","clicks"],["climer","climber"],["climers","climbers"],["climing","climbing"],["clincial","clinical"],["clinets","clients"],["clinicaly","clinically"],["clipboad","clipboard"],["clipboads","clipboards"],["clipoard","clipboard"],["clipoards","clipboards"],["clipoing","clipping"],["cliuent","client"],["cliuents","clients"],["clloud","cloud"],["cllouded","clouded"],["clloudes","clouds"],["cllouding","clouding"],["cllouds","clouds"],["cloack","cloak"],["cloacks","cloaks"],["cloberring","clobbering"],["clocksourc","clocksource"],["clockw\xEDse","clockwise"],["clock_getttime","clock_gettime"],["cloding","closing"],["cloes","close"],["cloesd","closed"],["cloesed","closed"],["cloesing","closing"],["clonning","cloning"],["clory","glory"],["clos","close"],["closeing","closing"],["closesly","closely"],["closig","closing"],["clossed","closed"],["clossing","closing"],["clossion","collision"],["clossions","collisions"],["cloude","cloud"],["cloudes","clouds"],["cloumn","column"],["cloumns","columns"],["clousre","closure"],["clsoe","close"],["clssroom","classroom"],["clssrooms","classrooms"],["cluase","clause"],["clumn","column"],["clumsly","clumsily"],["cluser","cluster"],["clusetr","cluster"],["clustred","clustered"],["cmak","cmake"],["cmmand","command"],["cmmanded","commanded"],["cmmanding","commanding"],["cmmands","commands"],["cmobination","combination"],["cmoputer","computer"],["cmoputers","computers"],["cna","can"],["cnannel","channel"],["cnat'","can't"],["cnat","can't"],["cnfiguration","configuration"],["cnfigure","configure"],["cnfigured","configured"],["cnfigures","configures"],["cnfiguring","configuring"],["cnosole","console"],["cnosoles","consoles"],["cntain","contain"],["cntains","contains"],["cnter","center"],["co-incided","coincided"],["co-opearte","co-operate"],["co-opeartes","co-operates"],["co-ordinate","coordinate"],["co-ordinates","coordinates"],["coalace","coalesce"],["coalaced","coalesced"],["coalacence","coalescence"],["coalacing","coalescing"],["coalaesce","coalesce"],["coalaesced","coalesced"],["coalaescence","coalescence"],["coalaescing","coalescing"],["coalascece","coalescence"],["coalascence","coalescence"],["coalase","coalesce"],["coalasece","coalescence"],["coalased","coalesced"],["coalasence","coalescence"],["coalases","coalesces"],["coalasing","coalescing"],["coalcece","coalescence"],["coalcence","coalescence"],["coalesc","coalesce"],["coalescsing","coalescing"],["coalesed","coalesced"],["coalesence","coalescence"],["coalessing","coalescing"],["coallate","collate"],["coallates","collates"],["coallating","collating"],["coallece","coalesce"],["coalleced","coalesced"],["coallecence","coalescence"],["coalleces","coalesces"],["coallecing","coalescing"],["coallee","coalesce"],["coalleed","coalesced"],["coalleence","coalescence"],["coallees","coalesces"],["coalleing","coalescing"],["coallesce","coalesce"],["coallesced","coalesced"],["coallesceing","coalescing"],["coallescence","coalescence"],["coallesces","coalesces"],["coallescing","coalescing"],["coallese","coalesce"],["coallesed","coalesced"],["coallesence","coalescence"],["coalleses","coalesces"],["coallesing","coalescing"],["coallesse","coalesce"],["coallessed","coalesced"],["coallessence","coalescence"],["coallesses","coalesces"],["coallessing","coalescing"],["coallision","collision"],["coallisions","collisions"],["coalsce","coalesce"],["coalscece","coalescence"],["coalsced","coalesced"],["coalscence","coalescence"],["coalscing","coalescing"],["coalsece","coalescence"],["coalseced","coalesced"],["coalsecense","coalescence"],["coalsence","coalescence"],["coaslescing","coalescing"],["cobining","combining"],["cobvers","covers"],["coccinele","coccinelle"],["coctail","cocktail"],["cocument","document"],["cocumentation","documentation"],["cocuments","document"],["codeing","coding"],["codepoitn","codepoint"],["codesc","codecs"],["codespel","codespell"],["codesream","codestream"],["codition","condition"],["coditioned","conditioned"],["coditions","conditions"],["codo","code"],["codos","codes"],["coduct","conduct"],["coducted","conducted"],["coducter","conductor"],["coducting","conducting"],["coductor","conductor"],["coducts","conducts"],["coeffcient","coefficient"],["coeffcients","coefficients"],["coefficeint","coefficient"],["coefficeints","coefficients"],["coefficent","coefficient"],["coefficents","coefficients"],["coefficiens","coefficients"],["coefficientss","coefficients"],["coeffiecient","coefficient"],["coeffiecients","coefficients"],["coeffient","coefficient"],["coeffients","coefficients"],["coeficent","coefficient"],["coeficents","coefficients"],["coeficient","coefficient"],["coeficients","coefficients"],["coelesce","coalesce"],["coercable","coercible"],["coerceion","coercion"],["cofeee","coffee"],["cofficient","coefficient"],["cofficients","coefficients"],["cofidence","confidence"],["cofiguration","configuration"],["cofigure","configure"],["cofigured","configured"],["cofigures","configures"],["cofiguring","configuring"],["cofirm","confirm"],["cofirmation","confirmation"],["cofirmations","confirmations"],["cofirmed","confirmed"],["cofirming","confirming"],["cofirms","confirms"],["coform","conform"],["cofrim","confirm"],["cofrimation","confirmation"],["cofrimations","confirmations"],["cofrimed","confirmed"],["cofriming","confirming"],["cofrims","confirms"],["cognizent","cognizant"],["coherance","coherence"],["coherancy","coherency"],["coherant","coherent"],["coherantly","coherently"],["coice","choice"],["coincedentally","coincidentally"],["coinitailize","coinitialize"],["coinside","coincide"],["coinsided","coincided"],["coinsidence","coincidence"],["coinsident","coincident"],["coinsides","coincides"],["coinsiding","coinciding"],["cointain","contain"],["cointained","contained"],["cointaining","containing"],["cointains","contains"],["cokies","cookies"],["colaboration","collaboration"],["colaborations","collaborations"],["colateral","collateral"],["coldplg","coldplug"],["colected","collected"],["colection","collection"],["colections","collections"],["colelction","collection"],["colelctive","collective"],["colerscheme","colorscheme"],["colescing","coalescing"],["colision","collision"],["colission","collision"],["collaberative","collaborative"],["collaction","collection"],["collaobrative","collaborative"],["collaps","collapse"],["collapsable","collapsible"],["collasion","collision"],["collaspe","collapse"],["collasped","collapsed"],["collaspes","collapses"],["collaspible","collapsible"],["collasping","collapsing"],["collationg","collation"],["collborative","collaborative"],["collecing","collecting"],["collecion","collection"],["collecions","collections"],["colleciton","collection"],["collecitons","collections"],["collectin","collection"],["collecton","collection"],["collectons","collections"],["colleection","collection"],["collegue","colleague"],["collegues","colleagues"],["collektion","collection"],["colletion","collection"],["collidies","collides"],["collissions","collisions"],["collistion","collision"],["collistions","collisions"],["colllapses","collapses"],["collocalized","colocalized"],["collonade","colonnade"],["collonies","colonies"],["collony","colony"],["collorscheme","colorscheme"],["collosal","colossal"],["collpase","collapse"],["collpased","collapsed"],["collpases","collapses"],["collpasing","collapsing"],["collsion","collision"],["collsions","collisions"],["collumn","column"],["collumns","columns"],["colmn","column"],["colmns","columns"],["colmuned","columned"],["coloer","color"],["coloeration","coloration"],["coloered","colored"],["coloering","coloring"],["coloers","colors"],["coloful","colorful"],["colomn","column"],["colomns","columns"],["colon-seperated","colon-separated"],["colonizators","colonizers"],["coloringh","coloring"],["colorizoer","colorizer"],["colorpsace","colorspace"],["colorpsaces","colorspaces"],["colose","close"],["coloum","column"],["coloumn","column"],["coloumns","columns"],["coloums","columns"],["colourpsace","colourspace"],["colourpsaces","colourspaces"],["colsed","closed"],["colum","column"],["columm","column"],["colummn","column"],["colummns","columns"],["columms","columns"],["columnn","column"],["columnns","columns"],["columnss","columns"],["columnular","columnar"],["colums","columns"],["columsn","columns"],["colunns","columns"],["comammand","command"],["comamnd","command"],["comamnd-line","command-line"],["comamnded","commanded"],["comamnding","commanding"],["comamndline","commandline"],["comamnds","commands"],["comand","command"],["comand-line","command-line"],["comanded","commanded"],["comanding","commanding"],["comandline","commandline"],["comando","commando"],["comandos","commandos"],["comands","commands"],["comany","company"],["comapany","company"],["comapared","compared"],["comapatibility","compatibility"],["comapatible","compatible"],["comapletion","completion"],["comapnies","companies"],["comapny","company"],["comapre","compare"],["comapring","comparing"],["comaprison","comparison"],["comaptibele","compatible"],["comaptibelities","compatibilities"],["comaptibelity","compatibility"],["comaptible","compatible"],["comarators","comparators"],["comback","comeback"],["combained","combined"],["combanations","combinations"],["combatibility","compatibility"],["combatible","compatible"],["combiantion","combination"],["combiation","combination"],["combiations","combinations"],["combinate","combine"],["combinateion","combination"],["combinateions","combinations"],["combinatins","combinations"],["combinatio","combination"],["combinatios","combinations"],["combinaton","combination"],["combinatorical","combinatorial"],["combinbe","combined"],["combind","combined"],["combinded","combined"],["combiniation","combination"],["combiniations","combinations"],["combinine","combine"],["combintaion","combination"],["combintaions","combinations"],["combusion","combustion"],["comceptually","conceptually"],["comdemnation","condemnation"],["comect","connect"],["comected","connected"],["comecting","connecting"],["comectivity","connectivity"],["comedlib","comedilib"],["comemmorates","commemorates"],["comemoretion","commemoration"],["coment","comment"],["comented","commented"],["comenting","commenting"],["coments","comments"],["comfirm","confirm"],["comflicting","conflicting"],["comformance","conformance"],["comiled","compiled"],["comilers","compilers"],["comination","combination"],["comision","commission"],["comisioned","commissioned"],["comisioner","commissioner"],["comisioning","commissioning"],["comisions","commissions"],["comission","commission"],["comissioned","commissioned"],["comissioner","commissioner"],["comissioning","commissioning"],["comissions","commissions"],["comit","commit"],["comited","committed"],["comitee","committee"],["comiting","committing"],["comits","commits"],["comitted","committed"],["comittee","committee"],["comittees","committees"],["comitter","committer"],["comitting","committing"],["comittish","committish"],["comlain","complain"],["comlained","complained"],["comlainer","complainer"],["comlaining","complaining"],["comlains","complains"],["comlaint","complaint"],["comlaints","complaints"],["comlete","complete"],["comleted","completed"],["comletely","completely"],["comletion","completion"],["comletly","completely"],["comlex","complex"],["comlexity","complexity"],["comlpeter","completer"],["comma-separeted","comma-separated"],["commad","command"],["commadn","command"],["commadn-line","command-line"],["commadnline","commandline"],["commadns","commands"],["commads","commands"],["commandi","command"],["commandoes","commandos"],["commannd","command"],["commans","commands"],["commansd","commands"],["commect","connect"],["commected","connected"],["commecting","connecting"],["commectivity","connectivity"],["commedic","comedic"],["commemerative","commemorative"],["commemmorate","commemorate"],["commemmorating","commemorating"],["commenet","comment"],["commenetd","commented"],["commeneted","commented"],["commenstatus","commentstatus"],["commerical","commercial"],["commerically","commercially"],["commericial","commercial"],["commericially","commercially"],["commerorative","commemorative"],["comming","coming"],["comminication","communication"],["comminity","community"],["comminucating","communicating"],["comminucation","communication"],["commision","commission"],["commisioned","commissioned"],["commisioner","commissioner"],["commisioning","commissioning"],["commisions","commissions"],["commitable","committable"],["commited","committed"],["commitee","committee"],["commiter","committer"],["commiters","committers"],["commitin","committing"],["commiting","committing"],["commitish","committish"],["committ","commit"],["committe","committee"],["committi","committee"],["committis","committees"],["committment","commitment"],["committments","commitments"],["committy","committee"],["commma","comma"],["commma-separated","comma-separated"],["commmand","command"],["commmand-line","command-line"],["commmandline","commandline"],["commmands","commands"],["commmemorated","commemorated"],["commment","comment"],["commmented","commented"],["commmenting","commenting"],["commments","comments"],["commmet","comment"],["commmets","comments"],["commmit","commit"],["commmited","committed"],["commmiting","committing"],["commmits","commits"],["commmitted","committed"],["commmitter","committer"],["commmitters","committers"],["commmitting","committing"],["commmon","common"],["commmunicate","communicate"],["commmunicated","communicated"],["commmunicates","communicates"],["commmunicating","communicating"],["commmunication","communication"],["commmunity","community"],["commna","comma"],["commna-separated","comma-separated"],["commnad","command"],["commnad-line","command-line"],["commnadline","commandline"],["commnads","commands"],["commnand","command"],["commnand-line","command-line"],["commnandline","commandline"],["commnands","commands"],["commnd","command"],["commnd-line","command-line"],["commndline","commandline"],["commnds","commands"],["commnent","comment"],["commnents","comments"],["commnet","comment"],["commnetaries","commentaries"],["commnetary","commentary"],["commnetator","commentator"],["commnetators","commentators"],["commneted","commented"],["commneting","commenting"],["commnets","comments"],["commnication","communication"],["commnities","communities"],["commnity","community"],["commnt","comment"],["commnted","commented"],["commnuative","commutative"],["commnunicating","communicating"],["commnunication","communication"],["commnunity","community"],["commoditiy","commodity"],["commom","common"],["commond","command"],["commongly","commonly"],["commontly","commonly"],["commonweath","commonwealth"],["commpact","compact"],["commpaction","compaction"],["commpare","compare"],["commparisons","comparisons"],["commpatibility","compatibility"],["commpatible","compatible"],["commpessed","compressed"],["commpilation","compilation"],["commpile","compile"],["commpiled","compiled"],["commpiling","compiling"],["commplain","complain"],["commplete","complete"],["commpleted","completed"],["commpletely","completely"],["commpletes","completes"],["commpletion","completion"],["commplex","complex"],["commpliant","compliant"],["commplied","complied"],["commpn","common"],["commponent","component"],["commponents","components"],["commpound","compound"],["commpresd","compressed"],["commpresed","compressed"],["commpresion","compression"],["commpress","compress"],["commpressd","compressed"],["commpressed","compressed"],["commpression","compression"],["commpute","compute"],["commputed","computed"],["commputer","computer"],["commputes","computes"],["commputing","computing"],["commtited","committed"],["commtted","committed"],["commuication","communication"],["commuications","communications"],["commuinications","communications"],["communcated","communicated"],["communcation","communication"],["communcations","communications"],["communciation","communication"],["communiation","communication"],["communicaion","communication"],["communicatie","communication"],["communicaton","communication"],["communitcate","communicate"],["communitcated","communicated"],["communitcates","communicates"],["communitcation","communication"],["communitcations","communications"],["communites","communities"],["communiy","community"],["communiyt","community"],["communuication","communication"],["commutated","commuted"],["commutating","commuting"],["commutive","commutative"],["comnmand","command"],["comnnected","connected"],["comnparing","comparing"],["comnpletion","completion"],["comnpresion","compression"],["comnpress","compress"],["comobobox","combo-box"],["comon","common"],["comonent","component"],["comor","color"],["compability","compatibility"],["compabillity","compatibility"],["compabitiliby","compatibility"],["compabitility","compatibility"],["compagnion","companion"],["compagny","company"],["compaibility","compatibility"],["compain","complain"],["compair","compare"],["compaire","compare"],["compaired","compared"],["compairing","comparing"],["compairison","comparison"],["compairisons","comparisons"],["compairs","compares"],["compansate","compensate"],["compansated","compensated"],["compansates","compensates"],["compansating","compensating"],["compansation","compensation"],["compansations","compensations"],["comparaison","comparison"],["comparare","compare"],["comparasion","comparison"],["comparasions","comparisons"],["comparater","comparator"],["comparation","comparison"],["comparations","comparisons"],["compareable","comparable"],["compareing","comparing"],["compareison","comparison"],["compareisons","comparisons"],["comparements","compartments"],["compariable","comparable"],["comparied","compared"],["comparign","comparing"],["comparigon","comparison"],["comparigons","comparisons"],["compariing","comparing"],["comparion","comparison"],["comparions","comparisons"],["comparios","comparison"],["comparioss","comparisons"],["comparisaion","comparison"],["comparisaions","comparisons"],["comparisation","comparison"],["comparisations","comparisons"],["comparisement","comparison"],["comparisements","comparisons"],["comparisin","comparison"],["comparising","comparing"],["comparisins","comparisons"],["comparision","comparison"],["comparisions","comparisons"],["comparism","comparison"],["comparisment","comparison"],["comparisments","comparisons"],["comparisms","comparisons"],["comparisn","comparison"],["comparisns","comparisons"],["comparispon","comparison"],["comparispons","comparisons"],["comparission","comparison"],["comparissions","comparisons"],["comparisson","comparison"],["comparissons","comparisons"],["comparistion","comparison"],["comparistions","comparisons"],["compariston","comparison"],["comparistons","comparisons"],["comparition","comparison"],["comparitions","comparisons"],["comparititive","comparative"],["comparititively","comparatively"],["comparitive","comparative"],["comparitively","comparatively"],["comparitor","comparator"],["comparitors","comparators"],["comparizon","comparison"],["comparizons","comparisons"],["comparment","compartment"],["comparotor","comparator"],["comparotors","comparators"],["comparre","compare"],["comparsion","comparison"],["comparsions","comparisons"],["compatabable","compatible"],["compatabiity","compatibility"],["compatabile","compatible"],["compatabilities","compatibilities"],["compatability","compatibility"],["compatabillity","compatibility"],["compatabilty","compatibility"],["compatabily","compatibility"],["compatable","compatible"],["compatablility","compatibility"],["compatablities","compatibilities"],["compatablitiy","compatibility"],["compatablity","compatibility"],["compatably","compatibly"],["compataibility","compatibility"],["compataible","compatible"],["compataility","compatibility"],["compatatbility","compatibility"],["compatatble","compatible"],["compatatible","compatible"],["compatator","comparator"],["compatators","comparators"],["compatbile","compatible"],["compatbility","compatibility"],["compatiability","compatibility"],["compatiable","compatible"],["compatiablity","compatibility"],["compatibel","compatible"],["compatibile","compatible"],["compatibiliy","compatibility"],["compatibiltiy","compatibility"],["compatibilty","compatibility"],["compatibily","compatibility"],["compatibity","compatibility"],["compatiblilty","compatibility"],["compatiblities","compatibilities"],["compatiblity","compatibility"],["compation","compaction"],["compatitbility","compatibility"],["compativle","compatible"],["compaytibility","compatibility"],["compeitions","competitions"],["compeletely","completely"],["compelte","complete"],["compeltelyt","completely"],["compeltion","completion"],["compeltly","completely"],["compelx","complex"],["compelxes","complexes"],["compelxities","complexities"],["compelxity","complexity"],["compensantion","compensation"],["compenstate","compensate"],["compenstated","compensated"],["compenstates","compensates"],["competance","competence"],["competant","competent"],["competative","competitive"],["competetive","competitive"],["competions","completions"],["competitiion","competition"],["competive","competitive"],["competiveness","competitiveness"],["compex","complex"],["compfortable","comfortable"],["comphrehensive","comprehensive"],["compiant","compliant"],["compicated","complicated"],["compications","complications"],["compied","compiled"],["compilability","compatibility"],["compilant","compliant"],["compilaton","compilation"],["compilatons","compilations"],["compilcate","complicate"],["compilcated","complicated"],["compilcatedly","complicatedly"],["compilcates","complicates"],["compilcating","complicating"],["compilcation","complication"],["compilcations","complications"],["compileable","compilable"],["compiletime","compile time"],["compiliant","compliant"],["compiliation","compilation"],["compilier","compiler"],["compiliers","compilers"],["compitability","compatibility"],["compitable","compatible"],["compitent","competent"],["compitible","compatible"],["complaing","complaining"],["complanied","complained"],["complate","complete"],["complated","completed"],["complates","completes"],["complating","completing"],["complatly","completely"],["complatness","completeness"],["complats","completes"],["complcated","complicated"],["compleate","complete"],["compleated","completed"],["compleates","completes"],["compleating","completing"],["compleatly","completely"],["compleete","complete"],["compleeted","completed"],["compleetly","completely"],["compleetness","completeness"],["complelely","completely"],["complelte","complete"],["complementt","complement"],["compleness","completeness"],["complession","compression"],["complet","complete"],["completedthe","completed the"],["completeion","completion"],["completelly","completely"],["completelty","completely"],["completelyl","completely"],["completetion","completion"],["completetly","completely"],["completiom","completion"],["completition","completion"],["completley","completely"],["completly","completely"],["completness","completeness"],["complette","complete"],["complettly","completely"],["complety","completely"],["complext","complexity"],["compliace","compliance"],["complianse","compliance"],["compliation","compilation"],["compliations","compilations"],["complied-in","compiled-in"],["complience","compliance"],["complient","compliant"],["complile","compile"],["compliled","compiled"],["compliler","compiler"],["compliles","compiles"],["compliling","compiling"],["compling","compiling"],["complitely","completely"],["complmenet","complement"],["complted","completed"],["compluter","computer"],["compnent","component"],["compnents","components"],["compoennt","component"],["compoent","component"],["compoents","components"],["compoesd","composed"],["compoment","component"],["compoments","components"],["componant","component"],["componants","components"],["componbents","components"],["componding","compounding"],["componeent","component"],["componeents","components"],["componemt","component"],["componemts","components"],["componenet","component"],["componenets","components"],["componens","components"],["componentes","components"],["componet","component"],["componets","components"],["componnents","components"],["componoent","component"],["componoents","components"],["componsites","composites"],["compontent","component"],["compontents","components"],["composablity","composability"],["composibility","composability"],["composiblity","composability"],["composit","composite"],["compositong","compositing"],["composits","composites"],["compount","compound"],["comppatible","compatible"],["comppiler","compiler"],["comppilers","compilers"],["comppliance","compliance"],["comprable","comparable"],["compredded","compressed"],["compresed","compressed"],["compreser","compressor"],["compresers","compressors"],["compreses","compresses"],["compresible","compressible"],["compresing","compressing"],["compresion","compression"],["compresions","compressions"],["compresor","compressor"],["compresors","compressors"],["compressable","compressible"],["compresser","compressor"],["compressers","compressors"],["compresss","compress"],["compresssed","compressed"],["compresssion","compression"],["comprimise","compromise"],["compromize","compromise"],["compromized","compromised"],["compsable","composable"],["compsite","composite"],["comptabile","compatible"],["comptible","compatible"],["comptue","compute"],["compuatation","computation"],["compuation","computation"],["compulsary","compulsory"],["compulsery","compulsory"],["compund","compound"],["compunds","compounds"],["computaion","computation"],["computarized","computerized"],["computaton","computation"],["computtaion","computation"],["computtaions","computations"],["comress","compress"],["comressed","compressed"],["comresses","compresses"],["comressing","compressing"],["comression","compression"],["comrpess","compress"],["comrpessed","compressed"],["comrpesses","compresses"],["comrpessing","compressing"],["comrpession","compression"],["comstraint","constraint"],["comsume","consume"],["comsumed","consumed"],["comsumer","consumer"],["comsumers","consumers"],["comsumes","consumes"],["comsuming","consuming"],["comsumption","consumption"],["comtain","contain"],["comtained","contained"],["comtainer","container"],["comtains","contains"],["comunicate","communicate"],["comunication","communication"],["comunity","community"],["comventions","conventions"],["comverted","converted"],["conain","contain"],["conained","contained"],["conainer","container"],["conainers","containers"],["conaines","contains"],["conaining","containing"],["conains","contains"],["conaint","contain"],["conainted","contained"],["conainter","container"],["conatain","contain"],["conatainer","container"],["conatainers","containers"],["conatains","contains"],["conatin","contain"],["conatined","contained"],["conatiner","container"],["conatiners","containers"],["conatining","containing"],["conatins","contains"],["conbination","combination"],["conbinations","combinations"],["conbtrols","controls"],["concaneted","concatenated"],["concantenated","concatenated"],["concatenaded","concatenated"],["concatenaion","concatenation"],["concatened","concatenated"],["concatentaion","concatenation"],["concatentate","concatenate"],["concatentated","concatenated"],["concatentates","concatenates"],["concatentating","concatenating"],["concatentation","concatenation"],["concatentations","concatenations"],["concatented","concatenated"],["concatinate","concatenate"],["concatinated","concatenated"],["concatination","concatenation"],["concatinations","concatenations"],["concating","concatenating"],["concatonate","concatenate"],["concatonated","concatenated"],["concatonates","concatenates"],["concatonating","concatenating"],["conceed","concede"],["conceedd","conceded"],["concensors","consensus"],["concensus","consensus"],["concentate","concentrate"],["concentated","concentrated"],["concentates","concentrates"],["concentating","concentrating"],["concentation","concentration"],["concentic","concentric"],["concentraze","concentrate"],["concered","concerned"],["concerened","concerned"],["concering","concerning"],["concerntrating","concentrating"],["concicely","concisely"],["concider","consider"],["concidered","considered"],["concidering","considering"],["conciders","considers"],["concieted","conceited"],["concieve","conceive"],["concieved","conceived"],["concious","conscious"],["conciously","consciously"],["conciousness","consciousness"],["concurence","concurrence"],["concurency","concurrency"],["concurent","concurrent"],["concurently","concurrently"],["concurrect","concurrent"],["condamned","condemned"],["condem","condemn"],["condemmed","condemned"],["condfiguration","configuration"],["condfigurations","configurations"],["condfigure","configure"],["condfigured","configured"],["condfigures","configures"],["condfiguring","configuring"],["condict","conduct"],["condicted","conducted"],["condidate","candidate"],["condidates","candidates"],["condident","confident"],["condidential","confidential"],["condidional","conditional"],["condidtion","condition"],["condidtioning","conditioning"],["condidtions","conditions"],["condifurable","configurable"],["condifuration","configuration"],["condifure","configure"],["condifured","configured"],["condig","config"],["condigdialog","configdialog"],["condiiton","condition"],["condionally","conditionally"],["conditial","conditional"],["conditially","conditionally"],["conditialy","conditionally"],["conditianal","conditional"],["conditianally","conditionally"],["conditianaly","conditionally"],["conditionaly","conditionally"],["conditionn","condition"],["conditionnal","conditional"],["conditionnaly","conditionally"],["conditionned","conditioned"],["conditionsof","conditions of"],["conditoinal","conditional"],["conditon","condition"],["conditonal","conditional"],["conditons","conditions"],["condntional","conditional"],["condtiion","condition"],["condtiions","conditions"],["condtion","condition"],["condtional","conditional"],["condtionally","conditionally"],["condtionals","conditionals"],["condtioned","conditioned"],["condtions","conditions"],["condtition","condition"],["condtitional","conditional"],["condtitionals","conditionals"],["condtitions","conditions"],["conecct","connect"],["coneccted","connected"],["coneccting","connecting"],["conecction","connection"],["conecctions","connections"],["conecctivities","connectivities"],["conecctivity","connectivity"],["conecctor","connector"],["conecctors","connectors"],["coneccts","connects"],["conecept","concept"],["conecepts","concepts"],["conecjture","conjecture"],["conecjtures","conjectures"],["conecntrate","concentrate"],["conecntrated","concentrated"],["conecntrates","concentrates"],["conecpt","concept"],["conecpts","concepts"],["conect","connect"],["conected","connected"],["conecting","connecting"],["conection","connection"],["conections","connections"],["conectivities","connectivities"],["conectivity","connectivity"],["conectix","connectix"],["conector","connector"],["conectors","connectors"],["conects","connects"],["conecurrency","concurrency"],["conecutive","consecutive"],["coneect","connect"],["coneected","connected"],["coneecting","connecting"],["coneection","connection"],["coneections","connections"],["coneectivities","connectivities"],["coneectivity","connectivity"],["coneector","connector"],["coneectors","connectors"],["coneects","connects"],["conenct","connect"],["conencted","connected"],["conencting","connecting"],["conenction","connection"],["conenctions","connections"],["conenctivities","connectivities"],["conenctivity","connectivity"],["conenctor","connector"],["conenctors","connectors"],["conencts","connects"],["conenience","convenience"],["conenient","convenient"],["coneninece","convenience"],["coneninet","convenient"],["conent","content"],["conents","contents"],["conergence","convergence"],["conern","concern"],["conerning","concerning"],["conersion","conversion"],["conersions","conversions"],["conert","convert"],["conerted","converted"],["conerter","converter"],["conerters","converters"],["conerting","converting"],["conervative","conservative"],["conesencus","consensus"],["conet","connect"],["coneted","connected"],["coneting","connecting"],["conetion","connection"],["conetions","connections"],["conetivities","connectivities"],["conetivity","connectivity"],["conetnt","content"],["conetor","connector"],["conetors","connectors"],["conets","connects"],["conexant","connexant"],["conferene","conference"],["conferrencing","conferencing"],["confert","convert"],["confety","confetti"],["conffiguration","configuration"],["confgiuration","configuration"],["confgiure","configure"],["confgiured","configured"],["confguration","configuration"],["confgure","configure"],["confgured","configured"],["confict","conflict"],["conficted","conflicted"],["conficts","conflicts"],["confidance","confidence"],["confidantal","confidential"],["confidantally","confidentially"],["confidantals","confidentials"],["confidantial","confidential"],["confidantially","confidentially"],["confidental","confidential"],["confidentally","confidentially"],["confids","confides"],["confifurable","configurable"],["confifuration","configuration"],["confifure","configure"],["confifured","configured"],["configaration","configuration"],["configed","configured"],["configer","configure"],["configiration","configuration"],["configire","configure"],["configiuration","configuration"],["configration","configuration"],["configrations","configurations"],["configred","configured"],["configruation","configuration"],["configruations","configurations"],["configrued","configured"],["configuaration","configuration"],["configuarble","configurable"],["configuare","configure"],["configuared","configured"],["configuarion","configuration"],["configuarions","configurations"],["configuartion","configuration"],["configuartions","configurations"],["configuation","configuration"],["configuations","configurations"],["configue","configure"],["configued","configured"],["configuerd","configured"],["configuered","configured"],["configues","configures"],["configulate","configurate"],["configulation","configuration"],["configulations","configurations"],["configuraion","configuration"],["configuraiton","configuration"],["configuratiens","configurations"],["configuratiom","configuration"],["configurationn","configuration"],["configuratioon","configuration"],["configuratoin","configuration"],["configuratoins","configurations"],["configuraton","configuration"],["configuratons","configurations"],["configuratrions","configurations"],["configuratuion","configuration"],["configureable","configurable"],["configureing","configuring"],["configuretion","configuration"],["configurres","configures"],["configurring","configuring"],["configurses","configures"],["configurtation","configuration"],["configurting","configuring"],["configurtion","configuration"],["configurtoin","configuration"],["configury","configurable"],["configutation","configuration"],["configutations","configurations"],["configute","configure"],["configuted","configured"],["configutes","configures"],["configutration","configuration"],["confim","confirm"],["confimation","confirmation"],["confimations","confirmations"],["confimed","confirmed"],["confiming","confirming"],["confimred","confirmed"],["confims","confirms"],["confiramtion","confirmation"],["confirmacion","confirmation"],["confirmaed","confirmed"],["confirmas","confirms"],["confirmatino","confirmation"],["confirmatinon","confirmation"],["confirmd","confirmed"],["confirmedd","confirmed"],["confirmeed","confirmed"],["confirmming","confirming"],["confiug","config"],["confiugrable","configurable"],["confiugration","configuration"],["confiugrations","configurations"],["confiugre","configure"],["confiugred","configured"],["confiugres","configures"],["confiugring","configuring"],["confiugure","configure"],["conflictin","conflicting"],["conflift","conflict"],["conflit","conflict"],["confoguration","configuration"],["confort","comfort"],["confortable","comfortable"],["confrim","confirm"],["confrimation","confirmation"],["confrimations","confirmations"],["confrimed","confirmed"],["confriming","confirming"],["confrims","confirms"],["confucing","confusing"],["confucion","confusion"],["confuction","conjunction"],["confudion","confusion"],["confue","confuse"],["confued","confused"],["confues","confuses"],["confugiration","configuration"],["confugirble","configurable"],["confugire","configure"],["confugired","configured"],["confugires","configures"],["confugiring","configuring"],["confugrable","configurable"],["confugration","configuration"],["confugre","configure"],["confugred","configured"],["confugres","configures"],["confugring","configuring"],["confugurable","configurable"],["confuguration","configuration"],["confugure","configure"],["confugured","configured"],["confugures","configures"],["confuguring","configuring"],["confuigration","configuration"],["confuigrations","configurations"],["confuing","confusing"],["confunction","conjunction"],["confunder","confounder"],["confunse","confuse"],["confunsed","confused"],["confunses","confuses"],["confunsing","confusing"],["confurable","configurable"],["confuration","configuration"],["confure","configure"],["confured","configured"],["confures","configures"],["confuring","configuring"],["confurse","confuse"],["confursed","confused"],["confurses","confuses"],["confursing","confusing"],["confusting","confusing"],["confuze","confuse"],["confuzed","confused"],["confuzes","confuses"],["confuzing","confusing"],["confuzze","confuse"],["confuzzed","confused"],["confuzzes","confuses"],["confuzzing","confusing"],["congifurable","configurable"],["congifuration","configuration"],["congifure","configure"],["congifured","configured"],["congig","config"],["congigs","configs"],["congiguration","configuration"],["congigurations","configurations"],["congigure","configure"],["congnition","cognition"],["congnitive","cognitive"],["congradulations","congratulations"],["congresional","congressional"],["conider","consider"],["conifguration","configuration"],["conifiguration","configuration"],["conig","config"],["conigurable","configurable"],["conigured","configured"],["conincide","coincide"],["conincidence","coincidence"],["conincident","coincident"],["conincides","coincides"],["coninciding","coinciding"],["coninient","convenient"],["coninstallable","coinstallable"],["coninuation","continuation"],["coninue","continue"],["coninues","continues"],["coninuity","continuity"],["coninuous","continuous"],["conitinue","continue"],["conived","connived"],["conjecutre","conjecture"],["conjonction","conjunction"],["conjonctive","conjunctive"],["conjuction","conjunction"],["conjuctions","conjunctions"],["conjuncion","conjunction"],["conjuntion","conjunction"],["conjuntions","conjunctions"],["conlcude","conclude"],["conlcuded","concluded"],["conlcudes","concludes"],["conlcuding","concluding"],["conlcusion","conclusion"],["conlcusions","conclusions"],["conly","only"],["conmnection","connection"],["conmpress","compress"],["conmpression","compression"],["connaect","connect"],["conncection","connection"],["conncetion","connection"],["connction","connection"],["conncurrent","concurrent"],["connecetd","connected"],["connecion","connection"],["connecions","connections"],["conneciton","connection"],["connecitons","connections"],["connecor","connector"],["connecotr","connector"],["connecstatus","connectstatus"],["connectd","connected"],["connecte","connected"],["connectec","connected"],["connectes","connects"],["connectet","connected"],["connectibity","connectivity"],["connectino","connection"],["connectinos","connections"],["connectins","connections"],["connectiom","connection"],["connectioms","connections"],["connectiona","connection"],["connectionas","connections"],["connectiviy","connectivity"],["connectivty","connectivity"],["connecto","connect"],["connectted","connected"],["connecttion","connection"],["conneection","connection"],["conneiction","connection"],["connektors","connectors"],["connetced","connected"],["connetcion","connection"],["conneted","connected"],["Conneticut","Connecticut"],["connetion","connection"],["connetor","connector"],["connexion","connection"],["connnect","connect"],["connnected","connected"],["connnecting","connecting"],["connnection","connection"],["connnections","connections"],["connnects","connects"],["connot","cannot"],["connstrain","constrain"],["connstrained","constrained"],["connstraint","constraint"],["conntents","contents"],["conntroller","controller"],["conosuer","connoisseur"],["conotation","connotation"],["conotations","connotations"],["conotrol","control"],["conotroled","controlled"],["conotroling","controlling"],["conotrolled","controlled"],["conotrols","controls"],["conpares","compares"],["conplete","complete"],["conpleted","completed"],["conpletes","completes"],["conpleting","completing"],["conpletion","completion"],["conquerd","conquered"],["conquerer","conqueror"],["conquerers","conquerors"],["conqured","conquered"],["conrete","concrete"],["conrol","control"],["conroller","controller"],["conrrespond","correspond"],["conrrespondence","correspondence"],["conrrespondences","correspondences"],["conrrespondent","correspondent"],["conrrespondents","correspondents"],["conrresponding","corresponding"],["conrrespondingly","correspondingly"],["conrresponds","corresponds"],["conrrol","control"],["conrrupt","corrupt"],["conrruptable","corruptible"],["conrrupted","corrupted"],["conrruptible","corruptible"],["conrruption","corruption"],["conrruptions","corruptions"],["conrrupts","corrupts"],["conrtib","contrib"],["conrtibs","contribs"],["consants","constants"],["conscent","consent"],["consciencious","conscientious"],["consciouness","consciousness"],["consctruct","construct"],["consctructed","constructed"],["consctructing","constructing"],["consctruction","construction"],["consctructions","constructions"],["consctructive","constructive"],["consctructor","constructor"],["consctructors","constructors"],["consctructs","constructs"],["consdider","consider"],["consdidered","considered"],["consdiered","considered"],["consdired","considered"],["conseat","conceit"],["conseated","conceited"],["consective","consecutive"],["consectively","consecutively"],["consectutive","consecutive"],["consectuve","consecutive"],["consecuitively","consecutively"],["conseed","concede"],["conseedd","conceded"],["conseeded","conceded"],["conseeds","concedes"],["consenquently","consequently"],["consensis","consensus"],["consentrate","concentrate"],["consentrated","concentrated"],["consentrates","concentrates"],["consept","concept"],["consepts","concepts"],["consequentely","consequently"],["consequentually","consequently"],["consequeseces","consequences"],["consequetive","consecutive"],["consequtive","consecutive"],["consequtively","consecutively"],["consern","concern"],["conserned","concerned"],["conserning","concerning"],["conservativeky","conservatively"],["conservitive","conservative"],["consestently","consistently"],["consevible","conceivable"],["consiciousness","consciousness"],["consicousness","consciousness"],["considder","consider"],["considderation","consideration"],["considdered","considered"],["considdering","considering"],["considerd","considered"],["consideren","considered"],["considerion","consideration"],["considerions","considerations"],["considred","considered"],["consier","consider"],["consiers","considers"],["consifer","consider"],["consifered","considered"],["consious","conscious"],["consisant","consistent"],["consisent","consistent"],["consisently","consistently"],["consisntency","consistency"],["consistancy","consistency"],["consistant","consistent"],["consistantly","consistently"],["consisten","consistent"],["consistend","consistent"],["consistendly","consistently"],["consistendt","consistent"],["consistendtly","consistently"],["consistenly","consistently"],["consistuents","constituents"],["consit","consist"],["consitant","consistent"],["consited","consisted"],["consitency","consistency"],["consitent","consistent"],["consitently","consistently"],["consiting","consisting"],["consitional","conditional"],["consits","consists"],["consituencies","constituencies"],["consituency","constituency"],["consituent","constituent"],["consituents","constituents"],["consitute","constitute"],["consituted","constituted"],["consitutes","constitutes"],["consituting","constituting"],["consitution","constitution"],["consitutional","constitutional"],["consitutuent","constituent"],["consitutuents","constituents"],["consitutute","constitute"],["consitututed","constituted"],["consitututes","constitutes"],["consitututing","constituting"],["consntant","constant"],["consntantly","constantly"],["consntants","constants"],["consol","console"],["consolodate","consolidate"],["consolodated","consolidated"],["consonent","consonant"],["consonents","consonants"],["consorcium","consortium"],["conspiracys","conspiracies"],["conspiriator","conspirator"],["consquence","consequence"],["consquences","consequences"],["consquent","consequent"],["consquently","consequently"],["consrtuct","construct"],["consrtucted","constructed"],["consrtuctor","constructor"],["consrtuctors","constructors"],["consrtucts","constructs"],["consruction","construction"],["consructions","constructions"],["consructor","constructor"],["consructors","constructors"],["constaint","constraint"],["constainted","constrained"],["constaints","constraints"],["constallation","constellation"],["constallations","constellations"],["constan","constant"],["constanly","constantly"],["constantsm","constants"],["constarin","constrain"],["constarint","constraint"],["constarints","constraints"],["constarnation","consternation"],["constatn","constant"],["constatnt","constant"],["constatnts","constants"],["constcurts","constructs"],["constext","context"],["consting","consisting"],["constinually","continually"],["constistency","consistency"],["constists","consists"],["constitently","consistently"],["constituant","constituent"],["constituants","constituents"],["constitue","constitute"],["constitues","constitutes"],["constituion","constitution"],["constituional","constitutional"],["constitutent","constituent"],["constitutents","constituents"],["constly","costly"],["constract","construct"],["constracted","constructed"],["constractor","constructor"],["constractors","constructors"],["constrainsts","constraints"],["constrainted","constrained"],["constraintes","constraints"],["constrainting","constraining"],["constrait","constraint"],["constraits","constraints"],["constrans","constrains"],["constrant","constraint"],["constrants","constraints"],["constrast","contrast"],["constrasts","contrasts"],["constratints","constraints"],["constraucts","constructs"],["constrcuct","construct"],["constrcut","construct"],["constrcuted","constructed"],["constrcution","construction"],["constrcutor","constructor"],["constrcutors","constructors"],["constrcuts","constructs"],["constriants","constraints"],["constrint","constraint"],["constrints","constraints"],["constrollers","controllers"],["construc","construct"],["construces","constructs"],["construcing","constructing"],["construcion","construction"],["construciton","construction"],["construcor","constructor"],["construcs","constructs"],["constructcor","constructor"],["constructer","constructor"],["constructers","constructors"],["constructes","constructs"],["constructred","constructed"],["constructt","construct"],["constructted","constructed"],["constructting","constructing"],["constructtor","constructor"],["constructtors","constructors"],["constructts","constructs"],["constructued","constructed"],["constructur","constructor"],["constructure","constructor"],["constructurs","constructors"],["construktor","constructor"],["construnctor","constructor"],["construrtors","constructors"],["construst","construct"],["construsts","constructs"],["construt","construct"],["construtced","constructed"],["construter","constructor"],["construters","constructors"],["constrution","construction"],["construtor","constructor"],["construtors","constructors"],["consttruct","construct"],["consttructer","constructor"],["consttructers","constructors"],["consttruction","construction"],["consttructor","constructor"],["consttructors","constructors"],["constuct","construct"],["constucted","constructed"],["constucter","constructor"],["constucters","constructors"],["constucting","constructing"],["constuction","construction"],["constuctions","constructions"],["constuctor","constructor"],["constuctors","constructors"],["constucts","constructs"],["consturct","construct"],["consturctor","constructor"],["consuder","consider"],["consuemr","consumer"],["consulant","consultant"],["consultunt","consultant"],["consumate","consummate"],["consumated","consummated"],["consumating","consummating"],["consummed","consumed"],["consummer","consumer"],["consummers","consumers"],["consumtion","consumption"],["contacentaion","concatenation"],["contagen","contagion"],["contaienr","container"],["contaier","container"],["contails","contains"],["contaiminate","contaminate"],["contaiminated","contaminated"],["contaiminating","contaminating"],["containa","contain"],["containees","containers"],["containerr","container"],["containg","containing"],["containging","containing"],["containig","containing"],["containings","containing"],["containining","containing"],["containint","containing"],["containn","contain"],["containner","container"],["containners","containers"],["containns","contains"],["containr","container"],["containrs","containers"],["containted","contained"],["containter","container"],["containters","containers"],["containting","containing"],["containts","contains"],["containuations","continuations"],["contais","contains"],["contaisn","contains"],["contaiun","contain"],["contamporaries","contemporaries"],["contamporary","contemporary"],["contan","contain"],["contaned","contained"],["contanined","contained"],["contaning","containing"],["contanins","contains"],["contans","contains"],["contary","contrary"],["contatenated","concatenated"],["contatining","containing"],["contein","contain"],["conteined","contained"],["conteining","containing"],["conteins","contains"],["contempoary","contemporary"],["contemporaneus","contemporaneous"],["contempory","contemporary"],["conten","contain"],["contence","contents"],["contendor","contender"],["contener","container"],["conteners","containers"],["contenht","content"],["content-negatiotiation","content-negotiation"],["content-negoatiation","content-negotiation"],["content-negoation","content-negotiation"],["content-negociation","content-negotiation"],["content-negogtiation","content-negotiation"],["content-negoitation","content-negotiation"],["content-negoptionsotiation","content-negotiation"],["content-negosiation","content-negotiation"],["content-negotaiation","content-negotiation"],["content-negotaition","content-negotiation"],["content-negotatiation","content-negotiation"],["content-negotation","content-negotiation"],["content-negothiation","content-negotiation"],["content-negotication","content-negotiation"],["content-negotioation","content-negotiation"],["content-negotion","content-negotiation"],["content-negotionation","content-negotiation"],["content-negotiotation","content-negotiation"],["content-negotitaion","content-negotiation"],["content-negotitation","content-negotiation"],["content-negotition","content-negotiation"],["content-negoziation","content-negotiation"],["contentended","contended"],["contentn","content"],["contentss","contents"],["contermporaneous","contemporaneous"],["conterpart","counterpart"],["conterparts","counterparts"],["contersink","countersink"],["contex","context"],["contexta","context"],["contexual","contextual"],["contiains","contains"],["contian","contain"],["contianed","contained"],["contianer","container"],["contianers","containers"],["contianing","containing"],["contians","contains"],["contibute","contribute"],["contibuted","contributed"],["contibutes","contributes"],["contibutor","contributor"],["contigent","contingent"],["contigious","contiguous"],["contigiously","contiguously"],["contignuous","contiguous"],["contigous","contiguous"],["contiguious","contiguous"],["contiguities","continuities"],["contiguos","contiguous"],["contiguous-non","non-contiguous"],["continaing","containing"],["contination","continuation"],["contined","continued"],["continential","continental"],["continging","containing"],["contingous","contiguous"],["continguous","contiguous"],["continious","continuous"],["continiously","continuously"],["continoue","continue"],["continouos","continuous"],["continous","continuous"],["continously","continuously"],["continueing","continuing"],["continuely","continually"],["continuem","continuum"],["continuos","continuous"],["continuosly","continuously"],["continure","continue"],["continusly","continuously"],["continuting","continuing"],["contious","continuous"],["contiously","continuously"],["contiuation","continuation"],["contiue","continue"],["contiuguous","contiguous"],["contiuing","continuing"],["contniue","continue"],["contniued","continued"],["contniues","continues"],["contnt","content"],["contol","control"],["contoler","controller"],["contoller","controller"],["contollers","controllers"],["contolls","controls"],["contols","controls"],["contongency","contingency"],["contorl","control"],["contorled","controlled"],["contorls","controls"],["contoroller","controller"],["contraciction","contradiction"],["contracictions","contradictions"],["contracition","contradiction"],["contracitions","contradictions"],["contracter","contractor"],["contracters","contractors"],["contradically","contradictory"],["contradictary","contradictory"],["contrain","constrain"],["contrainers","containers"],["contraining","constraining"],["contraint","constraint"],["contrainted","constrained"],["contraints","constraints"],["contraitns","constraints"],["contraveining","contravening"],["contravercial","controversial"],["contraversy","controversy"],["contrbution","contribution"],["contribte","contribute"],["contribted","contributed"],["contribtes","contributes"],["contributer","contributor"],["contributers","contributors"],["contries","countries"],["contrinution","contribution"],["contrinutions","contributions"],["contritutions","contributions"],["contriubte","contribute"],["contriubted","contributed"],["contriubtes","contributes"],["contriubting","contributing"],["contriubtion","contribution"],["contriubtions","contributions"],["contrl","control"],["contrller","controller"],["contro","control"],["controlable","controllable"],["controled","controlled"],["controlelrs","controllers"],["controler","controller"],["controlers","controllers"],["controling","controlling"],["controll","control"],["controllerd","controlled"],["controllled","controlled"],["controlller","controller"],["controlllers","controllers"],["controllling","controlling"],["controllor","controller"],["controlls","controls"],["contronl","control"],["contronls","controls"],["controoler","controller"],["controvercial","controversial"],["controvercy","controversy"],["controveries","controversies"],["controversal","controversial"],["controversey","controversy"],["controversials","controversial"],["controvertial","controversial"],["controvery","controversy"],["contrrol","control"],["contrrols","controls"],["contrst","contrast"],["contrsted","contrasted"],["contrsting","contrasting"],["contrsts","contrasts"],["contrtoller","controller"],["contruct","construct"],["contructed","constructed"],["contructing","constructing"],["contruction","construction"],["contructions","constructions"],["contructor","constructor"],["contructors","constructors"],["contructs","constructs"],["contry","country"],["contryie","countryie"],["contsruction","construction"],["contsructor","constructor"],["contstant","constant"],["contstants","constants"],["contstraint","constraint"],["contstructing","constructing"],["contstruction","construction"],["contstructor","constructor"],["contstructors","constructors"],["contur","contour"],["contzains","contains"],["conuntry","country"],["conusmer","consumer"],["convaless","convalesce"],["convax","convex"],["convaxiity","convexity"],["convaxly","convexly"],["convaxness","convexness"],["conveinence","convenience"],["conveinences","conveniences"],["conveinent","convenient"],["conveinience","convenience"],["conveinient","convenient"],["convenant","covenant"],["conveneince","convenience"],["conveniance","convenience"],["conveniant","convenient"],["conveniantly","conveniently"],["convenince","convenience"],["conveninent","convenient"],["convense","convince"],["convential","conventional"],["conventient","convenient"],["convenvient","convenient"],["conver","convert"],["convereted","converted"],["convergance","convergence"],["converion","conversion"],["converions","conversions"],["converison","conversion"],["converitble","convertible"],["conversly","conversely"],["conversoin","conversion"],["converson","conversion"],["conversons","conversions"],["converssion","conversion"],["converst","convert"],["convertable","convertible"],["convertables","convertibles"],["convertet","converted"],["convertion","conversion"],["convertions","conversions"],["convery","convert"],["convesion","conversion"],["convesions","conversions"],["convet","convert"],["conveted","converted"],["conveter","converter"],["conveters","converters"],["conveting","converting"],["convetion","convention"],["convetions","conventions"],["convets","converts"],["conveyer","conveyor"],["conviced","convinced"],["conviencece","convenience"],["convienence","convenience"],["convienent","convenient"],["convienience","convenience"],["convienient","convenient"],["convieniently","conveniently"],["conviently","conveniently"],["conviguration","configuration"],["convigure","configure"],["convination","combination"],["convine","combine"],["convineance","convenience"],["convineances","conveniences"],["convineient","convenient"],["convinence","convenience"],["convinences","conveniences"],["convinent","convenient"],["convinently","conveniently"],["conviniance","convenience"],["conviniances","conveniences"],["convinience","convenience"],["conviniences","conveniences"],["conviniency","convenience"],["conviniencys","conveniences"],["convinient","convenient"],["conviniently","conveniently"],["convining","combining"],["convinve","convince"],["convinved","convinced"],["convinving","convincing"],["convirted","converted"],["convirting","converting"],["convised","convinced"],["convoultion","convolution"],["convoultions","convolutions"],["convovle","convolve"],["convovled","convolved"],["convovling","convolving"],["convrt","convert"],["convserion","conversion"],["conyak","cognac"],["coodinate","coordinate"],["coodinates","coordinates"],["coodrinate","coordinate"],["coodrinates","coordinates"],["cooefficient","coefficient"],["cooefficients","coefficients"],["cooger","cougar"],["cookoo","cuckoo"],["coolent","coolant"],["coolot","culotte"],["coolots","culottes"],["coomand","command"],["coommand","command"],["coomon","common"],["coonstantly","constantly"],["coonstructed","constructed"],["cooordinate","coordinate"],["cooordinates","coordinates"],["coopearte","cooperate"],["coopeartes","cooperates"],["cooporative","cooperative"],["coordanate","coordinate"],["coordanates","coordinates"],["coordenate","coordinate"],["coordenates","coordinates"],["coordiante","coordinate"],["coordiantes","coordinates"],["coordiantion","coordination"],["coordiate","coordinate"],["coordiates","coordinates"],["coordiinates","coordinates"],["coordinatess","coordinates"],["coordinats","coordinates"],["coordindate","coordinate"],["coordindates","coordinates"],["coordine","coordinate"],["coordines","coordinates"],["coording","according"],["coordingate","coordinate"],["coordingates","coordinates"],["coordingly","accordingly"],["coordiniate","coordinate"],["coordiniates","coordinates"],["coordinite","coordinate"],["coordinites","coordinates"],["coordinnate","coordinate"],["coordinnates","coordinates"],["coordintae","coordinate"],["coordintaes","coordinates"],["coordintate","coordinate"],["coordintates","coordinates"],["coordinte","coordinate"],["coordintes","coordinates"],["coorditate","coordinate"],["coordonate","coordinate"],["coordonated","coordinated"],["coordonates","coordinates"],["coorespond","correspond"],["cooresponded","corresponded"],["coorespondend","correspondent"],["coorespondent","correspondent"],["cooresponding","corresponding"],["cooresponds","corresponds"],["cooridate","coordinate"],["cooridated","coordinated"],["cooridates","coordinates"],["cooridnate","coordinate"],["cooridnated","coordinated"],["cooridnates","coordinates"],["coorinate","coordinate"],["coorinates","coordinates"],["coorination","coordination"],["cootdinate","coordinate"],["cootdinated","coordinated"],["cootdinates","coordinates"],["cootdinating","coordinating"],["cootdination","coordination"],["copeing","copying"],["copiese","copies"],["copiing","copying"],["copiler","compiler"],["coplete","complete"],["copleted","completed"],["copletely","completely"],["copletes","completes"],["copmetitors","competitors"],["copmilation","compilation"],["copmonent","component"],["copmutations","computations"],["copntroller","controller"],["coponent","component"],["copoying","copying"],["coppermines","coppermine"],["coppied","copied"],["copright","copyright"],["coprighted","copyrighted"],["coprights","copyrights"],["coproccessor","coprocessor"],["coproccessors","coprocessors"],["coprocesor","coprocessor"],["coprorate","corporate"],["coprorates","corporates"],["coproration","corporation"],["coprorations","corporations"],["coprright","copyright"],["coprrighted","copyrighted"],["coprrights","copyrights"],["copstruction","construction"],["copuright","copyright"],["copurighted","copyrighted"],["copurights","copyrights"],["copute","compute"],["coputed","computed"],["coputer","computer"],["coputes","computes"],["copver","cover"],["copyed","copied"],["copyeight","copyright"],["copyeighted","copyrighted"],["copyeights","copyrights"],["copyied","copied"],["copyrigth","copyright"],["copyrigthed","copyrighted"],["copyrigths","copyrights"],["copyritght","copyright"],["copyritghted","copyrighted"],["copyritghts","copyrights"],["copyrught","copyright"],["copyrughted","copyrighted"],["copyrughts","copyrights"],["copys","copies"],["copytight","copyright"],["copytighted","copyrighted"],["copytights","copyrights"],["copyting","copying"],["corale","chorale"],["cordinate","coordinate"],["cordinates","coordinates"],["cordoroy","corduroy"],["cordump","coredump"],["corecct","correct"],["corecctly","correctly"],["corect","correct"],["corected","corrected"],["corecting","correcting"],["corection","correction"],["corectly","correctly"],["corectness","correctness"],["corects","corrects"],["coreespond","correspond"],["coregated","corrugated"],["corelate","correlate"],["corelated","correlated"],["corelates","correlates"],["corellation","correlation"],["coreolis","Coriolis"],["corerct","correct"],["corerctly","correctly"],["corespond","correspond"],["coresponded","corresponded"],["corespondence","correspondence"],["coresponding","corresponding"],["coresponds","corresponds"],["corfirms","confirms"],["coridal","cordial"],["corispond","correspond"],["cornmitted","committed"],["corordinate","coordinate"],["corordinates","coordinates"],["corordination","coordination"],["corosbonding","corresponding"],["corosion","corrosion"],["corospond","correspond"],["corospondance","correspondence"],["corosponded","corresponded"],["corospondence","correspondence"],["corosponding","corresponding"],["corosponds","corresponds"],["corousel","carousel"],["corparate","corporate"],["corperations","corporations"],["corpration","corporation"],["corproration","corporation"],["corprorations","corporations"],["corrcect","correct"],["corrct","correct"],["corrdinate","coordinate"],["corrdinated","coordinated"],["corrdinates","coordinates"],["corrdinating","coordinating"],["corrdination","coordination"],["corrdinator","coordinator"],["corrdinators","coordinators"],["correclty","correctly"],["correcly","correctly"],["correcpond","correspond"],["correcponded","corresponded"],["correcponding","corresponding"],["correcponds","corresponds"],["correcs","corrects"],["correctably","correctable"],["correctely","correctly"],["correcters","correctors"],["correctlly","correctly"],["correctnes","correctness"],["correcton","correction"],["correctons","corrections"],["correcttness","correctness"],["correctures","correctors"],["correcty","correctly"],["correctyly","correctly"],["correcxt","correct"],["correcy","correct"],["correect","correct"],["correectly","correctly"],["correespond","correspond"],["correesponded","corresponded"],["correespondence","correspondence"],["correespondences","correspondences"],["correespondent","correspondent"],["correesponding","corresponding"],["correesponds","corresponds"],["correlasion","correlation"],["correlatd","correlated"],["correllate","correlate"],["correllation","correlation"],["correllations","correlations"],["correnspond","correspond"],["corrensponded","corresponded"],["correnspondence","correspondence"],["correnspondences","correspondences"],["correnspondent","correspondent"],["correnspondents","correspondents"],["corrensponding","corresponding"],["corrensponds","corresponds"],["correograph","choreograph"],["correponding","corresponding"],["correponds","corresponds"],["correponsing","corresponding"],["correposding","corresponding"],["correpsondence","correspondence"],["correpsonding","corresponding"],["corresond","correspond"],["corresonded","corresponded"],["corresonding","corresponding"],["corresonds","corresponds"],["correspdoning","corresponding"],["correspending","corresponding"],["correspinding","corresponding"],["correspnding","corresponding"],["correspodence","correspondence"],["correspoding","corresponding"],["correspoinding","corresponding"],["correspomd","correspond"],["correspomded","corresponded"],["correspomdence","correspondence"],["correspomdences","correspondences"],["correspomdent","correspondent"],["correspomdents","correspondents"],["correspomding","corresponding"],["correspomds","corresponds"],["correspon","correspond"],["correspondance","correspondence"],["correspondances","correspondences"],["correspondant","correspondent"],["correspondants","correspondents"],["correspondd","corresponded"],["correspondend","correspondent"],["correspondes","corresponds"],["correspondg","corresponding"],["correspondig","corresponding"],["corresponed","corresponded"],["corresponging","corresponding"],["corresponing","corresponding"],["correspons","corresponds"],["corresponsding","corresponding"],["corresponsing","corresponding"],["correspont","correspond"],["correspontence","correspondence"],["correspontences","correspondences"],["correspontend","correspondent"],["correspontent","correspondent"],["correspontents","correspondents"],["corresponting","corresponding"],["corresponts","corresponds"],["correspoond","correspond"],["corressponding","corresponding"],["corret","correct"],["correted","corrected"],["corretion","correction"],["corretly","correctly"],["corridoor","corridor"],["corridoors","corridors"],["corrispond","correspond"],["corrispondant","correspondent"],["corrispondants","correspondents"],["corrisponded","corresponded"],["corrispondence","correspondence"],["corrispondences","correspondences"],["corrisponding","corresponding"],["corrisponds","corresponds"],["corrleation","correlation"],["corrleations","correlations"],["corrolated","correlated"],["corrolates","correlates"],["corrolation","correlation"],["corrolations","correlations"],["corrrect","correct"],["corrrected","corrected"],["corrrecting","correcting"],["corrrection","correction"],["corrrections","corrections"],["corrrectly","correctly"],["corrrectness","correctness"],["corrrects","corrects"],["corrresponding","corresponding"],["corrresponds","corresponds"],["corrrupt","corrupt"],["corrrupted","corrupted"],["corrruption","corruption"],["corrseponding","corresponding"],["corrspond","correspond"],["corrsponded","corresponded"],["corrsponding","corresponding"],["corrsponds","corresponds"],["corrupeted","corrupted"],["corruptable","corruptible"],["corruptiuon","corruption"],["cors-site","cross-site"],["cors-sute","cross-site"],["corse","course"],["corsor","cursor"],["corss-compiling","cross-compiling"],["corss-site","cross-site"],["corss-sute","cross-site"],["corsshair","crosshair"],["corsshairs","crosshairs"],["corssite","cross-site"],["corsssite","cross-site"],["corsssute","cross-site"],["corssute","cross-site"],["corupt","corrupt"],["corupted","corrupted"],["coruption","corruption"],["coruptions","corruptions"],["corupts","corrupts"],["corus","chorus"],["corvering","covering"],["cosed","closed"],["cosnsrain","constrain"],["cosnsrained","constrained"],["cosntitutive","constitutive"],["cosntrain","constrain"],["cosntrained","constrained"],["cosntraining","constraining"],["cosntraint","constraint"],["cosntraints","constraints"],["cosntructed","constructed"],["cosntructor","constructor"],["cosnumer","consumer"],["cosolation","consolation"],["cosole","console"],["cosoled","consoled"],["cosoles","consoles"],["cosoling","consoling"],["costant","constant"],["costexpr","constexpr"],["costitution","constitution"],["costruct","construct"],["costructer","constructor"],["costructor","constructor"],["costumary","customary"],["costumize","customize"],["cotain","contain"],["cotained","contained"],["cotainer","container"],["cotains","contains"],["cotave","octave"],["cotaves","octaves"],["cotnain","contain"],["cotnained","contained"],["cotnainer","container"],["cotnainers","containers"],["cotnaining","containing"],["cotnains","contains"],["cotranser","cotransfer"],["cotrasferred","cotransferred"],["cotrasfers","cotransfers"],["cotrol","control"],["cotroll","control"],["cotrolled","controlled"],["cotroller","controller"],["cotrolles","controls"],["cotrolling","controlling"],["cotrolls","controls"],["cotrols","controls"],["cotten","cotton"],["coucil","council"],["coud","could"],["coudn't","couldn't"],["coudnt","couldn't"],["coul","could"],["could'nt","couldn't"],["could't","couldn't"],["couldent","couldn't"],["coulden`t","couldn't"],["couldn;t","couldn't"],["couldnt'","couldn't"],["couldnt","couldn't"],["couldnt;","couldn't"],["coulmns","columns"],["couln't","couldn't"],["couloumb","coulomb"],["coult","could"],["coummunities","communities"],["coummunity","community"],["coumpound","compound"],["coumpounds","compounds"],["counded","counted"],["counding","counting"],["coundition","condition"],["counds","counts"],["counld","could"],["counpound","compound"],["counpounds","compounds"],["countain","contain"],["countainer","container"],["countainers","containers"],["countains","contains"],["counterfit","counterfeit"],["counterfits","counterfeits"],["counterintuive","counter intuitive"],["countermeausure","countermeasure"],["countermeausures","countermeasures"],["counterpar","counterpart"],["counterpoart","counterpart"],["counterpoarts","counterparts"],["countinue","continue"],["courtesey","courtesy"],["cousing","cousin"],["couted","counted"],["couter","counter"],["coutermeasuere","countermeasure"],["coutermeasueres","countermeasures"],["coutermeasure","countermeasure"],["coutermeasures","countermeasures"],["couterpart","counterpart"],["couting","counting"],["coutner","counter"],["coutners","counters"],["couuld","could"],["couuldn't","couldn't"],["covarage","coverage"],["covarages","coverages"],["covarege","coverage"],["covection","convection"],["covention","convention"],["coventions","conventions"],["coverd","covered"],["covere","cover"],["coveres","covers"],["covergence","convergence"],["coverred","covered"],["coversion","conversion"],["coversions","conversions"],["coverting","converting"],["covnersion","conversion"],["covnert","convert"],["covnerted","converted"],["covnerter","converter"],["covnerters","converters"],["covnertible","convertible"],["covnerting","converting"],["covnertor","converter"],["covnertors","converters"],["covnerts","converts"],["covriance","covariance"],["covriate","covariate"],["covriates","covariates"],["coyp","copy"],["coypright","copyright"],["coyprighted","copyrighted"],["coyprights","copyrights"],["coyright","copyright"],["coyrighted","copyrighted"],["coyrights","copyrights"],["cpacities","capacities"],["cpacity","capacity"],["cpation","caption"],["cpcheck","cppcheck"],["cpontent","content"],["cppp","cpp"],["cpuld","could"],["craced","graced"],["craceful","graceful"],["cracefully","gracefully"],["cracefulness","gracefulness"],["craceless","graceless"],["cracing","gracing"],["crahed","crashed"],["crahes","crashes"],["crahses","crashes"],["crashaes","crashes"],["crasheed","crashed"],["crashees","crashes"],["crashess","crashes"],["crashign","crashing"],["crashs","crashes"],["crationist","creationist"],["crationists","creationists"],["creaate","create"],["creadential","credential"],["creadentialed","credentialed"],["creadentials","credentials"],["creaed","created"],["creaeted","created"],["creasoat","creosote"],["creastor","creator"],["creatation","creation"],["createa","create"],["createable","creatable"],["createdd","created"],["createing","creating"],["createive","creative"],["creatning","creating"],["creatre","create"],["creatred","created"],["creats","creates"],["credate","created"],["credetial","credential"],["credetials","credentials"],["credidential","credential"],["credidentials","credentials"],["credintial","credential"],["credintials","credentials"],["credis","credits"],["credists","credits"],["creditted","credited"],["creedence","credence"],["cresent","crescent"],["cresits","credits"],["cretae","create"],["cretaed","created"],["cretaes","creates"],["cretaing","creating"],["cretate","create"],["cretated","created"],["cretates","creates"],["cretating","creating"],["cretator","creator"],["cretators","creators"],["creted","created"],["creteria","criteria"],["crewsant","croissant"],["cricital","critical"],["cricitally","critically"],["cricitals","criticals"],["crirical","critical"],["crirically","critically"],["criricals","criticals"],["critcal","critical"],["critcally","critically"],["critcals","criticals"],["critcial","critical"],["critcially","critically"],["critcials","criticals"],["criteak","critique"],["critera","criteria"],["critereon","criterion"],["criterias","criteria"],["criteriom","criterion"],["criticial","critical"],["criticially","critically"],["criticials","criticals"],["criticists","critics"],["critiera","criteria"],["critiical","critical"],["critiically","critically"],["critiicals","criticals"],["critisising","criticising"],["critisism","criticism"],["critisisms","criticisms"],["critized","criticized"],["critizing","criticizing"],["croch","crotch"],["crockadile","crocodile"],["crockodiles","crocodiles"],["cronological","chronological"],["cronologically","chronologically"],["croppped","cropped"],["cros","cross"],["cros-site","cross-site"],["cros-sute","cross-site"],["croshet","crochet"],["crosreference","cross-reference"],["crosreferenced","cross-referenced"],["crosreferences","cross-references"],["cross-commpilation","cross-compilation"],["cross-orgin","cross-origin"],["crossgne","crossgen"],["crossin","crossing"],["crossite","cross-site"],["crossreference","cross-reference"],["crossreferenced","cross-referenced"],["crossreferences","cross-references"],["crosssite","cross-site"],["crosssute","cross-site"],["crossute","cross-site"],["crowdsigna","crowdsignal"],["crowkay","croquet"],["crowm","crown"],["crrespond","correspond"],["crsytal","crystal"],["crsytalline","crystalline"],["crsytallisation","crystallisation"],["crsytallise","crystallise"],["crsytallization","crystallization"],["crsytallize","crystallize"],["crsytallographic","crystallographic"],["crsytals","crystals"],["crtical","critical"],["crtically","critically"],["crticals","criticals"],["crticised","criticised"],["crucialy","crucially"],["crucifiction","crucifixion"],["cruncing","crunching"],["crurrent","current"],["crusies","cruises"],["crusor","cursor"],["crutial","crucial"],["crutially","crucially"],["crutialy","crucially"],["crypted","encrypted"],["cryptocraphic","cryptographic"],["cryptograpic","cryptographic"],["crystalisation","crystallisation"],["cryto","crypto"],["crytpo","crypto"],["csae","case"],["csaes","cases"],["cteate","create"],["cteateing","creating"],["cteater","creator"],["cteates","creates"],["cteating","creating"],["cteation","creation"],["cteations","creations"],["cteator","creator"],["ctificate","certificate"],["ctificated","certificated"],["ctificates","certificates"],["ctification","certification"],["cuasality","causality"],["cuasation","causation"],["cuase","cause"],["cuased","caused"],["cuases","causes"],["cuasing","causing"],["cuestion","question"],["cuestioned","questioned"],["cuestions","questions"],["cuileoga","cuileog"],["culiminating","culminating"],["cumlative","cumulative"],["cummand","command"],["cummulated","cumulated"],["cummulative","cumulative"],["cummunicate","communicate"],["cumulatative","cumulative"],["cumulattive","cumulative"],["cuncurency","concurrency"],["curch","church"],["curcuit","circuit"],["curcuits","circuits"],["curcumstance","circumstance"],["curcumstances","circumstances"],["cureful","careful"],["curefully","carefully"],["curefuly","carefully"],["curent","current"],["curentfilter","currentfilter"],["curently","currently"],["curernt","current"],["curerntly","currently"],["curev","curve"],["curevd","curved"],["curevs","curves"],["curiousities","curiosities"],["curiousity's","curiosity's"],["curiousity","curiosity"],["curnilinear","curvilinear"],["currecnies","currencies"],["currecny","currency"],["currected","corrected"],["currecting","correcting"],["curreent","current"],["curreents","currents"],["curremt","current"],["curremtly","currently"],["curremts","currents"],["curren","current"],["currenlty","currently"],["currenly","currently"],["currennt","current"],["currenntly","currently"],["currennts","currents"],["currentl","currently"],["currentlly","currently"],["currentry","currently"],["currenty","currently"],["curresponding","corresponding"],["curretly","currently"],["curretnly","currently"],["curriculem","curriculum"],["currious","curious"],["currnet","current"],["currnt","current"],["currntly","currently"],["curros","cursor"],["currrency","currency"],["currrent","current"],["currrently","currently"],["curruent","current"],["currupt","corrupt"],["curruptable","corruptible"],["currupted","corrupted"],["curruptible","corruptible"],["curruption","corruption"],["curruptions","corruptions"],["currupts","corrupts"],["currus","cirrus"],["curser","cursor"],["cursot","cursor"],["cursro","cursor"],["curvatrue","curvature"],["curvatrues","curvatures"],["curvelinear","curvilinear"],["cusstom","custom"],["cusstomer","customer"],["cusstomers","customers"],["cusstomizable","customizable"],["cusstomization","customization"],["cusstomize","customize"],["cusstomized","customized"],["cusstoms","customs"],["custoisable","customisable"],["custoisation","customisation"],["custoise","customise"],["custoised","customised"],["custoiser","customiser"],["custoisers","customisers"],["custoising","customising"],["custoizable","customizable"],["custoization","customization"],["custoize","customize"],["custoized","customized"],["custoizer","customizer"],["custoizers","customizers"],["custoizing","customizing"],["customable","customizable"],["customie","customize"],["customied","customized"],["customisaton","customisation"],["customisatons","customisations"],["customizaton","customization"],["customizatons","customizations"],["customizeble","customizable"],["customn","custom"],["customns","customs"],["customsied","customised"],["customzied","customized"],["custon","custom"],["custonary","customary"],["custoner","customer"],["custoners","customers"],["custonisable","customisable"],["custonisation","customisation"],["custonise","customise"],["custonised","customised"],["custoniser","customiser"],["custonisers","customisers"],["custonising","customising"],["custonizable","customizable"],["custonization","customization"],["custonize","customize"],["custonized","customized"],["custonizer","customizer"],["custonizers","customizers"],["custonizing","customizing"],["custons","customs"],["custormer","customer"],["custum","custom"],["custumer","customer"],["custumised","customised"],["custumized","customized"],["custums","customs"],["cutom","custom"],["cutted","cut"],["cuurently","currently"],["cuurrent","current"],["cuurrents","currents"],["cvignore","cvsignore"],["cxan","cyan"],["cycic","cyclic"],["cyclinder","cylinder"],["cyclinders","cylinders"],["cycular","circular"],["cygin","cygwin"],["cylcic","cyclic"],["cylcical","cyclical"],["cyle","cycle"],["cylic","cyclic"],["cylider","cylinder"],["cyliders","cylinders"],["cylindical","cylindrical"],["cylindre","cylinder"],["cyllinder","cylinder"],["cyllinders","cylinders"],["cylnder","cylinder"],["cylnders","cylinders"],["cylynders","cylinders"],["cymk","CMYK"],["cyphersuite","ciphersuite"],["cyphersuites","ciphersuites"],["cyphertext","ciphertext"],["cyphertexts","ciphertexts"],["cyprt","crypt"],["cyprtic","cryptic"],["cyprto","crypto"],["Cyrllic","Cyrillic"],["cyrpto","crypto"],["cyrrent","current"],["cyrrilic","Cyrillic"],["cyrstal","crystal"],["cyrstalline","crystalline"],["cyrstallisation","crystallisation"],["cyrstallise","crystallise"],["cyrstallization","crystallization"],["cyrstallize","crystallize"],["cyrstals","crystals"],["cyrto","crypto"],["cywgin","Cygwin"],["daa","data"],["dabase","database"],["daclaration","declaration"],["dacquiri","daiquiri"],["dadlock","deadlock"],["daed","dead"],["dafault","default"],["dafaults","defaults"],["dafaut","default"],["dafualt","default"],["dafualted","defaulted"],["dafualts","defaults"],["daita","data"],["dake","take"],["dalmation","Dalmatian"],["dalta","delta"],["damamge","damage"],["damamged","damaged"],["damamges","damages"],["damamging","damaging"],["damange","damage"],["damanged","damaged"],["damanges","damages"],["damanging","damaging"],["damenor","demeanor"],["damge","damage"],["dammage","damage"],["dammages","damages"],["danceing","dancing"],["dandidates","candidates"],["daplicating","duplicating"],["Dardenelles","Dardanelles"],["dasboard","dashboard"],["dasboards","dashboards"],["dasdot","dashdot"],["dashbaord","dashboard"],["dashbaords","dashboards"],["dashboad","dashboard"],["dashboads","dashboards"],["dashboar","dashboard"],["dashboars","dashboards"],["dashbord","dashboard"],["dashbords","dashboards"],["dashs","dashes"],["data-strcuture","data-structure"],["data-strcutures","data-structures"],["databaase","database"],["databaases","databases"],["databae","database"],["databaes","database"],["databaeses","databases"],["databas","database"],["databsae","database"],["databsaes","databases"],["databse","database"],["databses","databases"],["datadsir","datadir"],["dataet","dataset"],["dataets","datasets"],["datas","data"],["datastrcuture","datastructure"],["datastrcutures","datastructures"],["datastrem","datastream"],["datatbase","database"],["datatbases","databases"],["datatgram","datagram"],["datatgrams","datagrams"],["datatore","datastore"],["datatores","datastores"],["datatpe","datatype"],["datatpes","datatypes"],["datatpye","datatype"],["datatpyes","datatypes"],["datatset","dataset"],["datatsets","datasets"],["datatstructure","datastructure"],["datatstructures","datastructures"],["datattype","datatype"],["datattypes","datatypes"],["datatye","datatype"],["datatyep","datatype"],["datatyepe","datatype"],["datatyepes","datatypes"],["datatyeps","datatypes"],["datatyes","datatypes"],["datatyoe","datatype"],["datatyoes","datatypes"],["datatytpe","datatype"],["datatytpes","datatypes"],["dataum","datum"],["datbase","database"],["datbases","databases"],["datecreatedd","datecreated"],["datection","detection"],["datections","detections"],["datee","date"],["dateset","dataset"],["datesets","datasets"],["datset","dataset"],["datsets","datasets"],["daugher","daughter"],["daugther","daughter"],["daugthers","daughters"],["dbeian","Debian"],["DCHP","DHCP"],["dcok","dock"],["dcoked","docked"],["dcoker","docker"],["dcoking","docking"],["dcoks","docks"],["dcument","document"],["dcumented","documented"],["dcumenting","documenting"],["dcuments","documents"],["ddelete","delete"],["de-actived","deactivated"],["de-duplacate","de-duplicate"],["de-duplacated","de-duplicated"],["de-duplacates","de-duplicates"],["de-duplacation","de-duplication"],["de-duplacte","de-duplicate"],["de-duplacted","de-duplicated"],["de-duplactes","de-duplicates"],["de-duplaction","de-duplication"],["de-duplaicate","de-duplicate"],["de-duplaicated","de-duplicated"],["de-duplaicates","de-duplicates"],["de-duplaication","de-duplication"],["de-duplate","de-duplicate"],["de-duplated","de-duplicated"],["de-duplates","de-duplicates"],["de-duplation","de-duplication"],["de-fualt","default"],["de-fualts","defaults"],["de-registeres","de-registers"],["deacitivation","deactivation"],["deacitvated","deactivated"],["deactivatiion","deactivation"],["deactive","deactivate"],["deactiveate","deactivate"],["deactived","deactivated"],["deactivete","deactivate"],["deactiveted","deactivated"],["deactivetes","deactivates"],["deactiviate","deactivate"],["deactiviates","deactivates"],["deactiving","deactivating"],["deaemon","daemon"],["deafault","default"],["deafualt","default"],["deafualts","defaults"],["deafult","default"],["deafulted","defaulted"],["deafults","defaults"],["deail","deal"],["deailing","dealing"],["deaktivate","deactivate"],["deaktivated","deactivated"],["dealed","dealt"],["dealilng","dealing"],["dealloacte","deallocate"],["deallocaed","deallocated"],["dealocate","deallocate"],["dealte","delete"],["deamand","demand"],["deamanding","demanding"],["deamands","demands"],["deambigate","disambiguate"],["deambigates","disambiguates"],["deambigation","disambiguation"],["deambiguage","disambiguate"],["deambiguages","disambiguates"],["deambiguate","disambiguate"],["deambiguates","disambiguates"],["deambiguation","disambiguation"],["deamiguate","disambiguate"],["deamiguates","disambiguates"],["deamiguation","disambiguation"],["deamon","daemon"],["deamonisation","daemonisation"],["deamonise","daemonise"],["deamonised","daemonised"],["deamonises","daemonises"],["deamonising","daemonising"],["deamonization","daemonization"],["deamonize","daemonize"],["deamonized","daemonized"],["deamonizes","daemonizes"],["deamonizing","daemonizing"],["deamons","daemons"],["deassering","deasserting"],["deatch","detach"],["deatched","detached"],["deatches","detaches"],["deatching","detaching"],["deatil","detail"],["deatiled","detailed"],["deatiling","detailing"],["deatils","details"],["deativate","deactivate"],["deativated","deactivated"],["deativates","deactivates"],["deativation","deactivation"],["deattach","detach"],["deattached","detached"],["deattaches","detaches"],["deattaching","detaching"],["deattachment","detachment"],["deault","default"],["deaults","defaults"],["deauthenication","deauthentication"],["debain","Debian"],["debateable","debatable"],["debbuger","debugger"],["debehlper","debhelper"],["debgu","debug"],["debgug","debug"],["debguging","debugging"],["debhlper","debhelper"],["debia","Debian"],["debiab","Debian"],["debians","Debian's"],["debina","Debian"],["debloking","deblocking"],["debnia","Debian"],["debth","depth"],["debths","depths"],["debudg","debug"],["debudgged","debugged"],["debudgger","debugger"],["debudgging","debugging"],["debudgs","debugs"],["debufs","debugfs"],["debugee","debuggee"],["debuger","debugger"],["debugg","debug"],["debuggg","debug"],["debuggge","debuggee"],["debuggged","debugged"],["debugggee","debuggee"],["debuggger","debugger"],["debuggging","debugging"],["debugggs","debugs"],["debugginf","debugging"],["debuggs","debugs"],["debuging","debugging"],["decaffinated","decaffeinated"],["decalare","declare"],["decalared","declared"],["decalares","declares"],["decalaring","declaring"],["decalration","declaration"],["decalrations","declarations"],["decalratiosn","declarations"],["decapsulting","decapsulating"],["decathalon","decathlon"],["deccelerate","decelerate"],["deccelerated","decelerated"],["deccelerates","decelerates"],["deccelerating","decelerating"],["decceleration","deceleration"],["deccrement","decrement"],["deccremented","decremented"],["deccrements","decrements"],["Decemer","December"],["decend","descend"],["decendant","descendant"],["decendants","descendants"],["decendentant","descendant"],["decendentants","descendants"],["decending","descending"],["deciaml","decimal"],["deciamls","decimals"],["decices","decides"],["decidate","dedicate"],["decidated","dedicated"],["decidates","dedicates"],["decideable","decidable"],["decidely","decidedly"],["decie","decide"],["deciedd","decided"],["deciede","decide"],["decieded","decided"],["deciedes","decides"],["decieding","deciding"],["decieds","decides"],["deciemal","decimal"],["decies","decides"],["decieve","deceive"],["decieved","deceived"],["decieves","deceives"],["decieving","deceiving"],["decimials","decimals"],["decison","decision"],["decission","decision"],["declar","declare"],["declaraion","declaration"],["declaraions","declarations"],["declarated","declared"],["declaratinos","declarations"],["declaratiom","declaration"],["declaraton","declaration"],["declaratons","declarations"],["declarayion","declaration"],["declarayions","declarations"],["declard","declared"],["declarded","declared"],["declaritive","declarative"],["declaritively","declaratively"],["declarnig","declaring"],["declartated","declared"],["declartation","declaration"],["declartations","declarations"],["declartative","declarative"],["declartator","declarator"],["declartators","declarators"],["declarted","declared"],["declartion","declaration"],["declartions","declarations"],["declartiuon","declaration"],["declartiuons","declarations"],["declartiuve","declarative"],["declartive","declarative"],["declartor","declarator"],["declartors","declarators"],["declataions","declarations"],["declatation","declaration"],["declatations","declarations"],["declated","declared"],["declation","declaration"],["declations","declarations"],["declatory","declaratory"],["decleration","declaration"],["declerations","declarations"],["declration","declaration"],["decocde","decode"],["decocded","decoded"],["decocder","decoder"],["decocders","decoders"],["decocdes","decodes"],["decocding","decoding"],["decocdings","decodings"],["decodded","decoded"],["decodding","decoding"],["decodeing","decoding"],["decomissioned","decommissioned"],["decomissioning","decommissioning"],["decommissionn","decommission"],["decommissionned","decommissioned"],["decommpress","decompress"],["decomoposition","decomposition"],["decomposion","decomposition"],["decomposit","decompose"],["decomposited","decomposed"],["decompositing","decomposing"],["decompositon","decomposition"],["decompositons","decompositions"],["decomposits","decomposes"],["decompostion","decomposition"],["decompostition","decomposition"],["decompres","decompress"],["decompresed","decompressed"],["decompreser","decompressor"],["decompreses","decompresses"],["decompresing","decompressing"],["decompresion","decompression"],["decompresor","decompressor"],["decompressd","decompressed"],["decompresser","decompressor"],["decompresssion","decompression"],["decompse","decompose"],["decond","decode"],["deconde","decode"],["deconded","decoded"],["deconder","decoder"],["deconders","decoders"],["decondes","decodes"],["deconding","decoding"],["decondings","decodings"],["deconstract","deconstruct"],["deconstracted","deconstructed"],["deconstrcutor","deconstructor"],["decopose","decompose"],["decoposes","decomposes"],["decoraded","decorated"],["decoratrion","decoration"],["decorde","decode"],["decorded","decoded"],["decorder","decoder"],["decorders","decoders"],["decordes","decodes"],["decording","decoding"],["decordings","decodings"],["decorrellation","decorrelation"],["decortator","decorator"],["decortive","decorative"],["decose","decode"],["decosed","decoded"],["decoser","decoder"],["decosers","decoders"],["decoses","decodes"],["decosing","decoding"],["decosings","decodings"],["decration","decoration"],["decreace","decrease"],["decreas","decrease"],["decremenet","decrement"],["decremenetd","decremented"],["decremeneted","decremented"],["decrese","decrease"],["decress","decrees"],["decribe","describe"],["decribed","described"],["decribes","describes"],["decribing","describing"],["decriptive","descriptive"],["decriptor","descriptor"],["decriptors","descriptors"],["decrmenet","decrement"],["decrmenetd","decremented"],["decrmeneted","decremented"],["decrment","decrement"],["decrmented","decremented"],["decrmenting","decrementing"],["decrments","decrements"],["decroation","decoration"],["decrpt","decrypt"],["decrpted","decrypted"],["decrption","decryption"],["decrytion","decryption"],["decscription","description"],["decsion","decision"],["decsions","decisions"],["decsiptors","descriptors"],["decsribed","described"],["decsriptor","descriptor"],["decsriptors","descriptors"],["decstiption","description"],["decstiptions","descriptions"],["dectect","detect"],["dectected","detected"],["dectecting","detecting"],["dectection","detection"],["dectections","detections"],["dectector","detector"],["dectivate","deactivate"],["decutable","deductible"],["decutables","deductibles"],["decypher","decipher"],["decyphered","deciphered"],["ded","dead"],["dedault","default"],["dedections","detections"],["dedented","indented"],["dedfined","defined"],["dedidate","dedicate"],["dedidated","dedicated"],["dedidates","dedicates"],["dedly","deadly"],["deductable","deductible"],["deductables","deductibles"],["deduplacate","deduplicate"],["deduplacated","deduplicated"],["deduplacates","deduplicates"],["deduplacation","deduplication"],["deduplacte","deduplicate"],["deduplacted","deduplicated"],["deduplactes","deduplicates"],["deduplaction","deduplication"],["deduplaicate","deduplicate"],["deduplaicated","deduplicated"],["deduplaicates","deduplicates"],["deduplaication","deduplication"],["deduplate","deduplicate"],["deduplated","deduplicated"],["deduplates","deduplicates"],["deduplation","deduplication"],["dedupliate","deduplicate"],["dedupliated","deduplicated"],["deecorator","decorator"],["deeep","deep"],["deelte","delete"],["deendencies","dependencies"],["deendency","dependency"],["defail","detail"],["defailt","default"],["defalt","default"],["defalts","defaults"],["defalut","default"],["defargkey","defragkey"],["defatult","default"],["defaukt","default"],["defaul","default"],["defaulat","default"],["defaulats","defaults"],["defauld","default"],["defaulds","defaults"],["defaule","default"],["defaules","defaults"],["defaulf","default"],["defaulfs","defaults"],["defaulg","default"],["defaulgs","defaults"],["defaulh","default"],["defaulhs","defaults"],["defauling","defaulting"],["defaulit","default"],["defaulits","defaults"],["defaulkt","default"],["defaulkts","defaults"],["defaull","default"],["defaulls","defaults"],["defaullt","default"],["defaullts","defaults"],["defaulr","default"],["defaulrs","defaults"],["defaulrt","default"],["defaulrts","defaults"],["defaultet","defaulted"],["defaulty","default"],["defauly","default"],["defaulys","defaults"],["defaut","default"],["defautl","default"],["defautled","defaulted"],["defautling","defaulting"],["defautls","defaults"],["defautlt","default"],["defautly","default"],["defauts","defaults"],["defautt","default"],["defautted","defaulted"],["defautting","defaulting"],["defautts","defaults"],["defeault","default"],["defeaulted","defaulted"],["defeaulting","defaulting"],["defeaults","defaults"],["defecit","deficit"],["defeine","define"],["defeines","defines"],["defenate","definite"],["defenately","definitely"],["defendent","defendant"],["defendents","defendants"],["defenitely","definitely"],["defenition","definition"],["defenitions","definitions"],["defenitly","definitely"],["deferal","deferral"],["deferals","deferrals"],["deferance","deference"],["defered","deferred"],["deferencing","dereferencing"],["deferentiating","differentiating"],["defering","deferring"],["deferreal","deferral"],["deffensively","defensively"],["defferently","differently"],["deffering","differing"],["defferred","deferred"],["deffine","define"],["deffined","defined"],["deffinition","definition"],["deffinitively","definitively"],["deffirent","different"],["defiantely","defiantly"],["defice","device"],["defien","define"],["defiend","defined"],["defiened","defined"],["defin","define"],["definad","defined"],["definance","defiance"],["definate","definite"],["definately","definitely"],["defination","definition"],["definations","definitions"],["definatly","definitely"],["definding","defining"],["defineas","defines"],["defineed","defined"],["definend","defined"],["definete","definite"],["definetelly","definitely"],["definetely","definitely"],["definetly","definitely"],["definiation","definition"],["definied","defined"],["definietly","definitely"],["definifiton","definition"],["definining","defining"],["defininition","definition"],["defininitions","definitions"],["definintion","definition"],["definit","definite"],["definitian","definition"],["definitiion","definition"],["definitiions","definitions"],["definitio","definition"],["definitios","definitions"],["definitivly","definitively"],["definitly","definitely"],["definitoin","definition"],["definiton","definition"],["definitons","definitions"],["definned","defined"],["definnition","definition"],["defintian","definition"],["defintiion","definition"],["defintiions","definitions"],["defintion","definition"],["defintions","definitions"],["defintition","definition"],["defintivly","definitively"],["defition","definition"],["defitions","definitions"],["deflaut","default"],["defninition","definition"],["defninitions","definitions"],["defnitions","definitions"],["defore","before"],["defqault","default"],["defragmenation","defragmentation"],["defualt","default"],["defualtdict","defaultdict"],["defualts","defaults"],["defult","default"],["defulted","defaulted"],["defulting","defaulting"],["defults","defaults"],["degenarate","degenerate"],["degenarated","degenerated"],["degenarating","degenerating"],["degenaration","degeneration"],["degenracy","degeneracy"],["degenrate","degenerate"],["degenrated","degenerated"],["degenrates","degenerates"],["degenratet","degenerated"],["degenrating","degenerating"],["degenration","degeneration"],["degerate","degenerate"],["degeree","degree"],["degnerate","degenerate"],["degnerated","degenerated"],["degnerates","degenerates"],["degrads","degrades"],["degration","degradation"],["degredation","degradation"],["degreee","degree"],["degreeee","degree"],["degreeees","degrees"],["degreees","degrees"],["deifne","define"],["deifned","defined"],["deifnes","defines"],["deifning","defining"],["deimiter","delimiter"],["deine","define"],["deinitailse","deinitialise"],["deinitailze","deinitialize"],["deinitalized","deinitialized"],["deinstantating","deinstantiating"],["deintialize","deinitialize"],["deintialized","deinitialized"],["deintializing","deinitializing"],["deisgn","design"],["deisgned","designed"],["deisgner","designer"],["deisgners","designers"],["deisgning","designing"],["deisgns","designs"],["deivative","derivative"],["deivatives","derivatives"],["deivce","device"],["deivces","devices"],["deivices","devices"],["deklaration","declaration"],["dekstop","desktop"],["dekstops","desktops"],["dektop","desktop"],["dektops","desktops"],["delagate","delegate"],["delagates","delegates"],["delaloc","delalloc"],["delalyed","delayed"],["delapidated","dilapidated"],["delaraction","declaration"],["delaractions","declarations"],["delarations","declarations"],["delare","declare"],["delared","declared"],["delares","declares"],["delaring","declaring"],["delate","delete"],["delayis","delays"],["delcarations","declarations"],["delcare","declare"],["delcared","declared"],["delcares","declares"],["delclaration","declaration"],["delele","delete"],["delelete","delete"],["deleleted","deleted"],["deleletes","deletes"],["deleleting","deleting"],["delelte","delete"],["delemeter","delimiter"],["delemiter","delimiter"],["delerious","delirious"],["delet","delete"],["deletd","deleted"],["deleteable","deletable"],["deleteed","deleted"],["deleteing","deleting"],["deleteion","deletion"],["deleteting","deleting"],["deletiong","deletion"],["delets","deletes"],["delevopment","development"],["delevopp","develop"],["delgate","delegate"],["delgated","delegated"],["delgates","delegates"],["delgating","delegating"],["delgation","delegation"],["delgations","delegations"],["delgator","delegator"],["delgators","delegators"],["deliberatey","deliberately"],["deliberatly","deliberately"],["deliberite","deliberate"],["deliberitely","deliberately"],["delibery","delivery"],["delibrate","deliberate"],["delibrately","deliberately"],["delievering","delivering"],["delievery","delivery"],["delievred","delivered"],["delievries","deliveries"],["delievry","delivery"],["delimeted","delimited"],["delimeter","delimiter"],["delimeters","delimiters"],["delimiited","delimited"],["delimiiter","delimiter"],["delimiiters","delimiters"],["delimitiaion","delimitation"],["delimitiaions","delimitations"],["delimitiation","delimitation"],["delimitiations","delimitations"],["delimitied","delimited"],["delimitier","delimiter"],["delimitiers","delimiters"],["delimitiing","delimiting"],["delimitimg","delimiting"],["delimition","delimitation"],["delimitions","delimitations"],["delimitis","delimits"],["delimititation","delimitation"],["delimititations","delimitations"],["delimitited","delimited"],["delimititer","delimiter"],["delimititers","delimiters"],["delimititing","delimiting"],["delimitor","delimiter"],["delimitors","delimiters"],["delimitted","delimited"],["delimma","dilemma"],["delimted","delimited"],["delimters","delimiter"],["delink","unlink"],["delivared","delivered"],["delivative","derivative"],["delivatives","derivatives"],["deliverate","deliberate"],["delivermode","deliverymode"],["deliverying","delivering"],["delte","delete"],["delted","deleted"],["deltes","deletes"],["delting","deleting"],["deltion","deletion"],["delusionally","delusively"],["delvery","delivery"],["demaind","demand"],["demenor","demeanor"],["demension","dimension"],["demensional","dimensional"],["demensions","dimensions"],["demodualtor","demodulator"],["demog","demo"],["demographical","demographic"],["demolishon","demolition"],["demolision","demolition"],["demoninator","denominator"],["demoninators","denominators"],["demonstates","demonstrates"],["demonstrat","demonstrate"],["demonstrats","demonstrates"],["demorcracy","democracy"],["demostrate","demonstrate"],["demostrated","demonstrated"],["demostrates","demonstrates"],["demostrating","demonstrating"],["demostration","demonstration"],["demudulator","demodulator"],["denegrating","denigrating"],["denisty","density"],["denomitator","denominator"],["denomitators","denominators"],["densitity","density"],["densly","densely"],["denstiy","density"],["deocde","decode"],["deocded","decoded"],["deocder","decoder"],["deocders","decoders"],["deocdes","decodes"],["deocding","decoding"],["deocdings","decodings"],["deoes","does"],["deoesn't","doesn't"],["deompression","decompression"],["depandance","dependence"],["depandancies","dependencies"],["depandancy","dependency"],["depandent","dependent"],["deparment","department"],["deparmental","departmental"],["deparments","departments"],["depcrecated","deprecated"],["depden","depend"],["depdence","dependence"],["depdencente","dependence"],["depdencentes","dependences"],["depdences","dependences"],["depdencies","dependencies"],["depdency","dependency"],["depdend","depend"],["depdendancies","dependencies"],["depdendancy","dependency"],["depdendant","dependent"],["depdendants","dependents"],["depdended","depended"],["depdendence","dependence"],["depdendences","dependences"],["depdendencies","dependencies"],["depdendency","dependency"],["depdendent","dependent"],["depdendents","dependents"],["depdendet","dependent"],["depdendets","dependents"],["depdending","depending"],["depdends","depends"],["depdenence","dependence"],["depdenences","dependences"],["depdenencies","dependencies"],["depdenency","dependency"],["depdenent","dependent"],["depdenents","dependents"],["depdening","depending"],["depdenncies","dependencies"],["depdenncy","dependency"],["depdens","depends"],["depdent","dependent"],["depdents","dependents"],["depecated","deprecated"],["depedencies","dependencies"],["depedency","dependency"],["depedencys","dependencies"],["depedent","dependent"],["depeding","depending"],["depencencies","dependencies"],["depencency","dependency"],["depencendencies","dependencies"],["depencendency","dependency"],["depencendencys","dependencies"],["depencent","dependent"],["depencies","dependencies"],["depency","dependency"],["dependance","dependence"],["dependancies","dependencies"],["dependancy","dependency"],["dependancys","dependencies"],["dependand","dependent"],["dependcies","dependencies"],["dependcy","dependency"],["dependding","depending"],["dependecies","dependencies"],["dependecy","dependency"],["dependecys","dependencies"],["dependedn","dependent"],["dependees","dependencies"],["dependeing","depending"],["dependenceis","dependencies"],["dependencey","dependency"],["dependencie","dependency"],["dependencied","dependency"],["dependenciens","dependencies"],["dependencis","dependencies"],["dependencys","dependencies"],["dependendencies","dependencies"],["dependendency","dependency"],["dependendent","dependent"],["dependenies","dependencies"],["dependening","depending"],["dependeny","dependency"],["dependet","dependent"],["dependices","dependencies"],["dependicy","dependency"],["dependig","depending"],["dependncies","dependencies"],["dependncy","dependency"],["depened","depend"],["depenedecies","dependencies"],["depenedecy","dependency"],["depenedent","dependent"],["depenencies","dependencies"],["depenencis","dependencies"],["depenency","dependency"],["depenencys","dependencies"],["depenend","depend"],["depenendecies","dependencies"],["depenendecy","dependency"],["depenendence","dependence"],["depenendencies","dependencies"],["depenendency","dependency"],["depenendent","dependent"],["depenending","depending"],["depenent","dependent"],["depenently","dependently"],["depennding","depending"],["depent","depend"],["deperecate","deprecate"],["deperecated","deprecated"],["deperecates","deprecates"],["deperecating","deprecating"],["deploied","deployed"],["deploiment","deployment"],["deploiments","deployments"],["deployement","deployment"],["deploymenet","deployment"],["deploymenets","deployments"],["depndant","dependent"],["depnds","depends"],["deporarily","temporarily"],["deposint","deposing"],["depracated","deprecated"],["depreacte","deprecate"],["depreacted","deprecated"],["depreacts","deprecates"],["depreate","deprecate"],["depreated","deprecated"],["depreates","deprecates"],["depreating","deprecating"],["deprecatedf","deprecated"],["deprectaed","deprecated"],["deprectat","deprecate"],["deprectate","deprecate"],["deprectated","deprecated"],["deprectates","deprecates"],["deprectating","deprecating"],["deprectation","deprecation"],["deprectats","deprecates"],["deprected","deprecated"],["depricate","deprecate"],["depricated","deprecated"],["depricates","deprecates"],["depricating","deprecating"],["dequed","dequeued"],["dequeing","dequeuing"],["deques","dequeues"],["derageable","dirigible"],["derective","directive"],["derectory","directory"],["derefence","dereference"],["derefenced","dereferenced"],["derefencing","dereferencing"],["derefenrence","dereference"],["dereferance","dereference"],["dereferanced","dereferenced"],["dereferances","dereferences"],["dereferencable","dereferenceable"],["dereferencce","dereference"],["dereferencced","dereferenced"],["dereferencces","dereferences"],["dereferenccing","dereferencing"],["derefernce","dereference"],["derefernced","dereferenced"],["dereferncence","dereference"],["dereferncencer","dereferencer"],["dereferncencers","dereferencers"],["dereferncences","dereferences"],["dereferncer","dereferencer"],["dereferncers","dereferencers"],["derefernces","dereferences"],["dereferncing","dereferencing"],["derefernece","dereference"],["derefrencable","dereferenceable"],["derefrence","dereference"],["deregistartion","deregistration"],["deregisted","deregistered"],["deregisteres","deregisters"],["deregistrated","deregistered"],["deregistred","deregistered"],["deregiter","deregister"],["deregiters","deregisters"],["derevative","derivative"],["derevatives","derivatives"],["derferencing","dereferencing"],["derfien","define"],["derfiend","defined"],["derfine","define"],["derfined","defined"],["dergeistered","deregistered"],["dergistration","deregistration"],["deriair","derriere"],["dericed","derived"],["dericteries","directories"],["derictery","directory"],["dericteryes","directories"],["dericterys","directories"],["deriffed","derived"],["derivaties","derivatives"],["derivatio","derivation"],["derivativ","derivative"],["derivativs","derivatives"],["deriviated","derived"],["derivitive","derivative"],["derivitives","derivatives"],["derivitivs","derivatives"],["derivtive","derivative"],["derivtives","derivatives"],["dermine","determine"],["dermined","determined"],["dermines","determines"],["dermining","determining"],["derogitory","derogatory"],["derprecated","deprecated"],["derrivatives","derivatives"],["derrive","derive"],["derrived","derived"],["dertermine","determine"],["derterming","determining"],["derth","dearth"],["derviative","derivative"],["derviatives","derivatives"],["dervie","derive"],["dervied","derived"],["dervies","derives"],["dervived","derived"],["desactivate","deactivate"],["desactivated","deactivated"],["desallocate","deallocate"],["desallocated","deallocated"],["desallocates","deallocates"],["desaster","disaster"],["descallocate","deallocate"],["descallocated","deallocated"],["descchedules","deschedules"],["desccription","description"],["descencing","descending"],["descendands","descendants"],["descibe","describe"],["descibed","described"],["descibes","describes"],["descibing","describing"],["descide","decide"],["descided","decided"],["descides","decides"],["desciding","deciding"],["desciption","description"],["desciptions","descriptions"],["desciptor","descriptor"],["desciptors","descriptors"],["desciribe","describe"],["desciribed","described"],["desciribes","describes"],["desciribing","describing"],["desciription","description"],["desciriptions","descriptions"],["descirption","description"],["descirptor","descriptor"],["descision","decision"],["descisions","decisions"],["descize","disguise"],["descized","disguised"],["descktop","desktop"],["descktops","desktops"],["desconstructed","deconstructed"],["descover","discover"],["descovered","discovered"],["descovering","discovering"],["descovery","discovery"],["descrease","decrease"],["descreased","decreased"],["descreases","decreases"],["descreasing","decreasing"],["descrementing","decrementing"],["descrete","discrete"],["describ","describe"],["describbed","described"],["describibg","describing"],["describng","describing"],["describtion","description"],["describtions","descriptions"],["descrice","describe"],["descriced","described"],["descrices","describes"],["descricing","describing"],["descrie","describe"],["descriibes","describes"],["descriminant","discriminant"],["descriminate","discriminate"],["descriminated","discriminated"],["descriminates","discriminates"],["descriminating","discriminating"],["descriont","description"],["descriotor","descriptor"],["descripe","describe"],["descriped","described"],["descripes","describes"],["descriping","describing"],["descripition","description"],["descripor","descriptor"],["descripors","descriptors"],["descripter","descriptor"],["descripters","descriptors"],["descriptio","description"],["descriptiom","description"],["descriptionm","description"],["descriptior","descriptor"],["descriptiors","descriptors"],["descripto","descriptor"],["descriptoin","description"],["descriptoins","descriptions"],["descripton","description"],["descriptons","descriptions"],["descriptot","descriptor"],["descriptoy","descriptor"],["descriptuve","descriptive"],["descrition","description"],["descritpion","description"],["descritpions","descriptions"],["descritpiton","description"],["descritpitons","descriptions"],["descritpor","descriptor"],["descritpors","descriptors"],["descritpr","descriptor"],["descritpro","descriptor"],["descritpros","descriptors"],["descritprs","descriptors"],["descritption","description"],["descritptions","descriptions"],["descritptive","descriptive"],["descritptor","descriptor"],["descritptors","descriptors"],["descrption","description"],["descrptions","descriptions"],["descrptor","descriptor"],["descrptors","descriptors"],["descrtiption","description"],["descrtiptions","descriptions"],["descrutor","destructor"],["descrybe","describe"],["descrybing","describing"],["descryption","description"],["descryptions","descriptions"],["desctiption","description"],["desctiptor","descriptor"],["desctiptors","descriptors"],["desctop","desktop"],["desctructed","destructed"],["desctruction","destruction"],["desctructive","destructive"],["desctructor","destructor"],["desctructors","destructors"],["descuss","discuss"],["descvription","description"],["descvriptions","descriptions"],["deselct","deselect"],["deselctable","deselectable"],["deselctables","deselectable"],["deselcted","deselected"],["deselcting","deselecting"],["desepears","disappears"],["deserailise","deserialise"],["deserailize","deserialize"],["deserialisazion","deserialisation"],["deserializaed","deserialized"],["deserializazion","deserialization"],["deserialsiation","deserialisation"],["deserialsie","deserialise"],["deserialsied","deserialised"],["deserialsies","deserialises"],["deserialsing","deserialising"],["deserialze","deserialize"],["deserialzed","deserialized"],["deserialzes","deserializes"],["deserialziation","deserialization"],["deserialzie","deserialize"],["deserialzied","deserialized"],["deserialzies","deserializes"],["deserialzing","deserializing"],["desgin","design"],["desgin-mode","design-mode"],["desgined","designed"],["desginer","designer"],["desiar","desire"],["desicate","desiccate"],["desicion","decision"],["desicions","decisions"],["deside","decide"],["desided","decided"],["desides","decides"],["desig","design"],["desigern","designer"],["desigining","designing"],["designd","designed"],["desination","destination"],["desinations","destinations"],["desine","design"],["desing","design"],["desingable","designable"],["desinged","designed"],["desinger","designer"],["desinging","designing"],["desingn","design"],["desingned","designed"],["desingner","designer"],["desingning","designing"],["desingns","designs"],["desings","designs"],["desintaiton","destination"],["desintaitons","destinations"],["desintation","destination"],["desintations","destinations"],["desintegrated","disintegrated"],["desintegration","disintegration"],["desipite","despite"],["desireable","desirable"],["desision","decision"],["desisions","decisions"],["desitable","desirable"],["desitination","destination"],["desitinations","destinations"],["desition","decision"],["desitions","decisions"],["desitned","destined"],["deskop","desktop"],["deskops","desktops"],["desktiop","desktop"],["deskys","disguise"],["deslected","deselected"],["deslects","deselects"],["desltop","desktop"],["desltops","desktops"],["desn't","doesn't"],["desne","dense"],["desnse","dense"],["desogn","design"],["desogned","designed"],["desogner","designer"],["desogning","designing"],["desogns","designs"],["desolve","dissolve"],["desorder","disorder"],["desoriented","disoriented"],["desparately","desperately"],["despatch","dispatch"],["despict","depict"],["despiration","desperation"],["desplay","display"],["desplayed","displayed"],["desplays","displays"],["desposition","disposition"],["desrciption","description"],["desrciptions","descriptions"],["desribe","describe"],["desribed","described"],["desribes","describes"],["desribing","describing"],["desription","description"],["desriptions","descriptions"],["desriptor","descriptor"],["desriptors","descriptors"],["desrire","desire"],["desrired","desired"],["desroyer","destroyer"],["desscribe","describe"],["desscribing","describing"],["desscription","description"],["dessicate","desiccate"],["dessicated","desiccated"],["dessication","desiccation"],["dessigned","designed"],["desstructor","destructor"],["destablized","destabilized"],["destanation","destination"],["destanations","destinations"],["destiantion","destination"],["destiantions","destinations"],["destiation","destination"],["destiations","destinations"],["destinaion","destination"],["destinaions","destinations"],["destinaiton","destination"],["destinaitons","destinations"],["destinarion","destination"],["destinarions","destinations"],["destinataion","destination"],["destinataions","destinations"],["destinatin","destination"],["destinatino","destination"],["destinatinos","destinations"],["destinatins","destinations"],["destinaton","destination"],["destinatons","destinations"],["destinguish","distinguish"],["destintation","destination"],["destintations","destinations"],["destionation","destination"],["destionations","destinations"],["destop","desktop"],["destops","desktops"],["destoried","destroyed"],["destort","distort"],["destory","destroy"],["destoryed","destroyed"],["destorying","destroying"],["destorys","destroys"],["destoy","destroy"],["destoyed","destroyed"],["destrcut","destruct"],["destrcuted","destructed"],["destrcutor","destructor"],["destrcutors","destructors"],["destribute","distribute"],["destributed","distributed"],["destroi","destroy"],["destroied","destroyed"],["destroing","destroying"],["destrois","destroys"],["destroyes","destroys"],["destruciton","destruction"],["destructro","destructor"],["destructros","destructors"],["destruktor","destructor"],["destruktors","destructors"],["destrutor","destructor"],["destrutors","destructors"],["destry","destroy"],["destryed","destroyed"],["destryer","destroyer"],["destrying","destroying"],["destryiong","destroying"],["destryoed","destroyed"],["destryoing","destroying"],["destryong","destroying"],["destrys","destroys"],["destuction","destruction"],["destuctive","destructive"],["destuctor","destructor"],["destuctors","destructors"],["desturcted","destructed"],["desturtor","destructor"],["desturtors","destructors"],["desychronize","desynchronize"],["desychronized","desynchronized"],["detabase","database"],["detachs","detaches"],["detahced","detached"],["detaild","detailed"],["detailled","detailed"],["detais","details"],["detals","details"],["detatch","detach"],["detatched","detached"],["detatches","detaches"],["detatching","detaching"],["detault","default"],["detaulted","defaulted"],["detaulting","defaulting"],["detaults","defaults"],["detction","detection"],["detctions","detections"],["deteced","detected"],["detecing","detecting"],["detecion","detection"],["detecions","detections"],["detectected","detected"],["detectes","detects"],["detectetd","detected"],["detectsion","detection"],["detectsions","detections"],["detemine","determine"],["detemined","determined"],["detemines","determines"],["detemining","determining"],["deteoriated","deteriorated"],["deterant","deterrent"],["deteremine","determine"],["deteremined","determined"],["deteriate","deteriorate"],["deterimined","determined"],["deterine","determine"],["deterioriating","deteriorating"],["determaine","determine"],["determenant","determinant"],["determenistic","deterministic"],["determiens","determines"],["determimnes","determines"],["determin","determine"],["determinated","determined"],["determind","determined"],["determinded","determined"],["determinee","determine"],["determineing","determining"],["determinining","determining"],["deterministinc","deterministic"],["determinne","determine"],["determins","determines"],["determinse","determines"],["determinstic","deterministic"],["determinstically","deterministically"],["determintes","determines"],["determnine","determine"],["deternine","determine"],["detetmine","determine"],["detial","detail"],["detialed","detailed"],["detialing","detailing"],["detials","details"],["detination","destination"],["detinations","destinations"],["detremental","detrimental"],["detremining","determining"],["detrmine","determine"],["detrmined","determined"],["detrmines","determines"],["detrmining","determining"],["detroy","destroy"],["detroyed","destroyed"],["detroying","destroying"],["detroys","destroys"],["detructed","destructed"],["dettach","detach"],["dettaching","detaching"],["detur","detour"],["deturance","deterrence"],["deubug","debug"],["deubuging","debugging"],["deug","debug"],["deugging","debugging"],["devasted","devastated"],["devation","deviation"],["devce","device"],["devcent","decent"],["devcie","device"],["devcies","devices"],["develoers","developers"],["develoment","development"],["develoments","developments"],["develompent","development"],["develompental","developmental"],["develompents","developments"],["develope","develop"],["developement","development"],["developements","developments"],["developmemt","development"],["developmet","development"],["developmetns","developments"],["developmets","developments"],["developp","develop"],["developpe","develop"],["developped","developed"],["developpement","development"],["developper","developer"],["developpers","developers"],["developpment","development"],["develp","develop"],["develped","developed"],["develper","developer"],["develpers","developers"],["develping","developing"],["develpment","development"],["develpments","developments"],["develps","develops"],["devels","delves"],["deveolpment","development"],["deveopers","developers"],["deverloper","developer"],["deverlopers","developers"],["devestated","devastated"],["devestating","devastating"],["devfine","define"],["devfined","defined"],["devfines","defines"],["devic","device"],["devicde","device"],["devicdes","devices"],["device-dependend","device-dependent"],["devicec","device"],["devicecoordiinates","devicecoordinates"],["deviceremoveable","deviceremovable"],["devicesr","devices"],["devicess","devices"],["devicest","devices"],["devide","divide"],["devided","divided"],["devider","divider"],["deviders","dividers"],["devides","divides"],["deviding","dividing"],["deviece","device"],["devied","device"],["deviiate","deviate"],["deviiated","deviated"],["deviiates","deviates"],["deviiating","deviating"],["deviiation","deviation"],["deviiations","deviations"],["devined","defined"],["devired","derived"],["devirtualisaion","devirtualisation"],["devirtualisaiton","devirtualisation"],["devirtualizaion","devirtualization"],["devirtualizaiton","devirtualization"],["devirutalisation","devirtualisation"],["devirutalise","devirtualise"],["devirutalised","devirtualised"],["devirutalization","devirtualization"],["devirutalize","devirtualize"],["devirutalized","devirtualized"],["devisible","divisible"],["devision","division"],["devistating","devastating"],["devive","device"],["devleop","develop"],["devleoped","developed"],["devleoper","developer"],["devleopers","developers"],["devleoping","developing"],["devleopment","development"],["devleopper","developer"],["devleoppers","developers"],["devlop","develop"],["devloped","developed"],["devloper's","developer's"],["devloper","developer"],["devlopers","developers"],["devloping","developing"],["devlopment","development"],["devlopments","developments"],["devlopper","developer"],["devloppers","developers"],["devlops","develops"],["devolopement","development"],["devritualisation","devirtualisation"],["devritualization","devirtualization"],["devuce","device"],["dewrapping","unwrapping"],["dezert","dessert"],["dezibel","decibel"],["dezine","design"],["dezinens","denizens"],["dfine","define"],["dfined","defined"],["dfines","defines"],["dfinition","definition"],["dfinitions","definitions"],["dgetttext","dgettext"],["diable","disable"],["diabled","disabled"],["diabler","disabler"],["diablers","disablers"],["diables","disables"],["diablical","diabolical"],["diabling","disabling"],["diaciritc","diacritic"],["diaciritcs","diacritics"],["diagnistic","diagnostic"],["diagnoal","diagonal"],["diagnoals","diagonals"],["diagnol","diagonal"],["diagnosics","diagnostics"],["diagnositc","diagnostic"],["diagnotic","diagnostic"],["diagnotics","diagnostics"],["diagnxostic","diagnostic"],["diagonale","diagonal"],["diagonales","diagonals"],["diagramas","diagrams"],["diagramm","diagram"],["dialaog","dialog"],["dialate","dilate"],["dialgo","dialog"],["dialgos","dialogs"],["dialig","dialog"],["dialigs","dialogs"],["diamater","diameter"],["diamaters","diameters"],["diamon","diamond"],["diamons","diamonds"],["diamter","diameter"],["diamters","diameters"],["diangose","diagnose"],["dianostic","diagnostic"],["dianostics","diagnostics"],["diaplay","display"],["diaplays","displays"],["diappeares","disappears"],["diarea","diarrhea"],["diaresis","diaeresis"],["diasble","disable"],["diasbled","disabled"],["diasbles","disables"],["diasbling","disabling"],["diaspra","diaspora"],["diaster","disaster"],["diatance","distance"],["diatancing","distancing"],["dicard","discard"],["dicarded","discarded"],["dicarding","discarding"],["dicards","discards"],["dicates","dictates"],["dicationaries","dictionaries"],["dicationary","dictionary"],["dicergence","divergence"],["dichtomy","dichotomy"],["dicionaries","dictionaries"],["dicionary","dictionary"],["dicipline","discipline"],["dicitonaries","dictionaries"],["dicitonary","dictionary"],["dicline","decline"],["diconnected","disconnected"],["diconnection","disconnection"],["diconnects","disconnects"],["dicover","discover"],["dicovered","discovered"],["dicovering","discovering"],["dicovers","discovers"],["dicovery","discovery"],["dicrectory","directory"],["dicrete","discrete"],["dicretion","discretion"],["dicretionary","discretionary"],["dicriminate","discriminate"],["dicriminated","discriminated"],["dicriminates","discriminates"],["dicriminating","discriminating"],["dicriminator","discriminator"],["dicriminators","discriminators"],["dicsriminated","discriminated"],["dictaionaries","dictionaries"],["dictaionary","dictionary"],["dictinary","dictionary"],["dictioanries","dictionaries"],["dictioanry","dictionary"],["dictionarys","dictionaries"],["dictionay","dictionary"],["dictionnaries","dictionaries"],["dictionnary","dictionary"],["dictionries","dictionaries"],["dictionry","dictionary"],["dictoinaries","dictionaries"],["dictoinary","dictionary"],["dictonaries","dictionaries"],["dictonary","dictionary"],["dictrionaries","dictionaries"],["dictrionary","dictionary"],["dicussed","discussed"],["dicussions","discussions"],["did'nt","didn't"],["didi","did"],["didn;t","didn't"],["didnt'","didn't"],["didnt't","didn't"],["didnt","didn't"],["didnt;","didn't"],["diect","direct"],["diectly","directly"],["dielectirc","dielectric"],["dielectircs","dielectrics"],["diemsion","dimension"],["dieties","deities"],["diety","deity"],["diference","difference"],["diferences","differences"],["diferent","different"],["diferentiate","differentiate"],["diferentiated","differentiated"],["diferentiates","differentiates"],["diferentiating","differentiating"],["diferently","differently"],["diferrent","different"],["diffcult","difficult"],["diffculties","difficulties"],["diffculty","difficulty"],["diffeent","different"],["diffence","difference"],["diffenet","different"],["diffenrence","difference"],["diffenrences","differences"],["differance","difference"],["differances","differences"],["differant","different"],["differantiate","differentiate"],["differantiation","differentiation"],["differantiator","differentiator"],["differantion","differentiation"],["differate","differentiate"],["differece","difference"],["differect","different"],["differen","different"],["differencess","differences"],["differencial","differential"],["differenciate","differentiate"],["differenciated","differentiated"],["differenciates","differentiates"],["differenciating","differentiating"],["differenciation","differentiation"],["differencies","differences"],["differenct","different"],["differend","different"],["differene","difference"],["differenes","differences"],["differenly","differently"],["differens","difference"],["differense","difference"],["differentiatiations","differentiations"],["differentiaton","differentiation"],["differentl","differently"],["differernt","different"],["differes","differs"],["differetnt","different"],["differnce","difference"],["differnces","differences"],["differnciate","differentiate"],["differnec","difference"],["differnece","difference"],["differneces","differences"],["differnecs","differences"],["differnence","difference"],["differnences","differences"],["differnencing","differencing"],["differnent","different"],["differnet","different"],["differnetiate","differentiate"],["differnetiated","differentiated"],["differnetly","differently"],["differnt","different"],["differntiable","differentiable"],["differntial","differential"],["differntials","differentials"],["differntiate","differentiate"],["differntiated","differentiated"],["differntiates","differentiates"],["differntiating","differentiating"],["differntly","differently"],["differred","differed"],["differrence","difference"],["differrent","different"],["difffered","differed"],["diffferent","different"],["diffferently","differently"],["difffers","differs"],["difficault","difficult"],["difficaulties","difficulties"],["difficaulty","difficulty"],["difficulity","difficulty"],["difficutl","difficult"],["difficutly","difficulty"],["diffreences","differences"],["diffreent","different"],["diffrence","difference"],["diffrences","differences"],["diffrent","different"],["diffrential","differential"],["diffrentiate","differentiate"],["diffrentiated","differentiated"],["diffrently","differently"],["diffrerence","difference"],["diffrerences","differences"],["diffult","difficult"],["diffussion","diffusion"],["diffussive","diffusive"],["dificulties","difficulties"],["dificulty","difficulty"],["difinition","definition"],["difinitions","definitions"],["difract","diffract"],["difracted","diffracted"],["difraction","diffraction"],["difractive","diffractive"],["difussion","diffusion"],["difussive","diffusive"],["digesty","digest"],["diggit","digit"],["diggital","digital"],["diggits","digits"],["digial","digital"],["digist","digits"],["digitalise","digitize"],["digitalising","digitizing"],["digitalize","digitize"],["digitalizing","digitizing"],["digitial","digital"],["digitis","digits"],["dignostics","diagnostics"],["dilema","dilemma"],["dilemas","dilemmas"],["dilineate","delineate"],["dillema","dilemma"],["dillemas","dilemmas"],["dilligence","diligence"],["dilligent","diligent"],["dilligently","diligently"],["dillimport","dllimport"],["dimansion","dimension"],["dimansional","dimensional"],["dimansions","dimensions"],["dimemsions","dimensions"],["dimenional","dimensional"],["dimenionalities","dimensionalities"],["dimenionality","dimensionality"],["dimenions","dimensions"],["dimenionsal","dimensional"],["dimenionsalities","dimensionalities"],["dimenionsality","dimensionality"],["dimenison","dimension"],["dimensinal","dimensional"],["dimensinoal","dimensional"],["dimensinos","dimensions"],["dimensionaility","dimensionality"],["dimensiones","dimensions"],["dimensonal","dimensional"],["dimenstion","dimension"],["dimenstions","dimensions"],["dimention","dimension"],["dimentional","dimensional"],["dimentionnal","dimensional"],["dimentionnals","dimensional"],["dimentions","dimensions"],["dimesions","dimensions"],["dimesnion","dimension"],["dimesnional","dimensional"],["dimesnions","dimensions"],["diminsh","diminish"],["diminshed","diminished"],["diminuitive","diminutive"],["dimissed","dismissed"],["dimmension","dimension"],["dimmensioned","dimensioned"],["dimmensioning","dimensioning"],["dimmensions","dimensions"],["dimnension","dimension"],["dimnention","dimension"],["dimunitive","diminutive"],["dinamic","dynamic"],["dinamically","dynamically"],["dinamicaly","dynamically"],["dinamiclly","dynamically"],["dinamicly","dynamically"],["dinmaic","dynamic"],["dinteractively","interactively"],["diong","doing"],["diosese","diocese"],["diphtong","diphthong"],["diphtongs","diphthongs"],["diplacement","displacement"],["diplay","display"],["diplayed","displayed"],["diplaying","displaying"],["diplays","displays"],["diplomancy","diplomacy"],["dipthong","diphthong"],["dipthongs","diphthongs"],["dircet","direct"],["dircetories","directories"],["dircetory","directory"],["dirctly","directly"],["dirctories","directories"],["dirctory","directory"],["direccion","direction"],["direcctly","directly"],["direcctory","directory"],["direcctorys","directories"],["direcctries","directories"],["direcdories","directories"],["direcdory","directory"],["direcdorys","directories"],["direcion","direction"],["direcions","directions"],["direciton","direction"],["direcitonal","directional"],["direcitons","directions"],["direclty","directly"],["direcly","directly"],["direcories","directories"],["direcory","directory"],["direcotories","directories"],["direcotory","directory"],["direcotries","directories"],["direcotry","directory"],["direcoty","directory"],["directd","directed"],["directely","directly"],["directes","directs"],["directgories","directories"],["directgory","directory"],["directiories","directories"],["directiory","directory"],["directoies","directories"],["directon","direction"],["directoories","directories"],["directoory","directory"],["directores","directories"],["directoris","directories"],["directort","directory"],["directorty","directory"],["directorys","directories"],["directoty","directory"],["directove","directive"],["directoves","directives"],["directoy","directory"],["directpries","directories"],["directpry","directory"],["directries","directories"],["directrive","directive"],["directrives","directives"],["directrly","directly"],["directroies","directories"],["directrories","directories"],["directrory","directory"],["directroy","directory"],["directry","directory"],["directsion","direction"],["directsions","directions"],["directtories","directories"],["directtory","directory"],["directy","directly"],["direectly","directly"],["diregard","disregard"],["direktly","directly"],["direrctor","director"],["direrctories","directories"],["direrctors","directors"],["direrctory","directory"],["diretive","directive"],["diretly","directly"],["diretories","directories"],["diretory","directory"],["direvctory","directory"],["dirived","derived"],["dirrectly","directly"],["dirtectory","directory"],["dirtyed","dirtied"],["dirtyness","dirtiness"],["dirver","driver"],["disabe","disable"],["disabeling","disabling"],["disabels","disables"],["disabes","disables"],["disabilitiles","disabilities"],["disabilitily","disability"],["disabiltities","disabilities"],["disabiltitiy","disability"],["disabing","disabling"],["disabl","disable"],["disablle","disable"],["disadvantadge","disadvantage"],["disagreeed","disagreed"],["disagress","disagrees"],["disalb","disable"],["disalbe","disable"],["disalbed","disabled"],["disalbes","disables"],["disale","disable"],["disaled","disabled"],["disalow","disallow"],["disambigouate","disambiguate"],["disambiguaiton","disambiguation"],["disambiguiation","disambiguation"],["disapear","disappear"],["disapeard","disappeared"],["disapeared","disappeared"],["disapearing","disappearing"],["disapears","disappears"],["disapline","discipline"],["disapoint","disappoint"],["disapointed","disappointed"],["disapointing","disappointing"],["disappared","disappeared"],["disappearaing","disappearing"],["disappeard","disappeared"],["disappearred","disappeared"],["disapper","disappear"],["disapperar","disappear"],["disapperarance","disappearance"],["disapperared","disappeared"],["disapperars","disappears"],["disappered","disappeared"],["disappering","disappearing"],["disappers","disappears"],["disapporval","disapproval"],["disapporve","disapprove"],["disapporved","disapproved"],["disapporves","disapproves"],["disapporving","disapproving"],["disapprouval","disapproval"],["disapprouve","disapprove"],["disapprouved","disapproved"],["disapprouves","disapproves"],["disapprouving","disapproving"],["disaproval","disapproval"],["disard","discard"],["disariable","desirable"],["disassebled","disassembled"],["disassocate","disassociate"],["disassocation","disassociation"],["disasssembler","disassembler"],["disasterous","disastrous"],["disatisfaction","dissatisfaction"],["disatisfied","dissatisfied"],["disatrous","disastrous"],["disbale","disable"],["disbaled","disabled"],["disbales","disables"],["disbaling","disabling"],["disble","disable"],["disbled","disabled"],["discared","discarded"],["discareded","discarded"],["discarge","discharge"],["discconecct","disconnect"],["discconeccted","disconnected"],["discconeccting","disconnecting"],["discconecction","disconnection"],["discconecctions","disconnections"],["discconeccts","disconnects"],["discconect","disconnect"],["discconected","disconnected"],["discconecting","disconnecting"],["discconection","disconnection"],["discconections","disconnections"],["discconects","disconnects"],["discconeect","disconnect"],["discconeected","disconnected"],["discconeecting","disconnecting"],["discconeection","disconnection"],["discconeections","disconnections"],["discconeects","disconnects"],["discconenct","disconnect"],["discconencted","disconnected"],["discconencting","disconnecting"],["discconenction","disconnection"],["discconenctions","disconnections"],["discconencts","disconnects"],["discconet","disconnect"],["discconeted","disconnected"],["discconeting","disconnecting"],["discconetion","disconnection"],["discconetions","disconnections"],["discconets","disconnects"],["disccuss","discuss"],["discernable","discernible"],["dischare","discharge"],["discimenation","dissemination"],["disciplins","disciplines"],["disclamer","disclaimer"],["disconecct","disconnect"],["disconeccted","disconnected"],["disconeccting","disconnecting"],["disconecction","disconnection"],["disconecctions","disconnections"],["disconeccts","disconnects"],["disconect","disconnect"],["disconected","disconnected"],["disconecting","disconnecting"],["disconection","disconnection"],["disconections","disconnections"],["disconects","disconnects"],["disconeect","disconnect"],["disconeected","disconnected"],["disconeecting","disconnecting"],["disconeection","disconnection"],["disconeections","disconnections"],["disconeects","disconnects"],["disconenct","disconnect"],["disconencted","disconnected"],["disconencting","disconnecting"],["disconenction","disconnection"],["disconenctions","disconnections"],["disconencts","disconnects"],["disconet","disconnect"],["disconeted","disconnected"],["disconeting","disconnecting"],["disconetion","disconnection"],["disconetions","disconnections"],["disconets","disconnects"],["disconnec","disconnect"],["disconneced","disconnected"],["disconnet","disconnect"],["disconneted","disconnected"],["disconneting","disconnecting"],["disconnets","disconnects"],["disconnnect","disconnect"],["discontigious","discontiguous"],["discontigous","discontiguous"],["discontiguities","discontinuities"],["discontinous","discontinuous"],["discontinuos","discontinuous"],["discoraged","discouraged"],["discouranged","discouraged"],["discourarged","discouraged"],["discourrage","discourage"],["discourraged","discouraged"],["discove","discover"],["discoved","discovered"],["discovereability","discoverability"],["discoveribility","discoverability"],["discovey","discovery"],["discovr","discover"],["discovred","discovered"],["discovring","discovering"],["discovrs","discovers"],["discrace","disgrace"],["discraced","disgraced"],["discraceful","disgraceful"],["discracefully","disgracefully"],["discracefulness","disgracefulness"],["discraces","disgraces"],["discracing","disgracing"],["discrards","discards"],["discreminates","discriminates"],["discrepencies","discrepancies"],["discrepency","discrepancy"],["discrepicies","discrepancies"],["discribe","describe"],["discribed","described"],["discribes","describes"],["discribing","describing"],["discription","description"],["discriptions","descriptions"],["discriptor's","descriptor's"],["discriptor","descriptor"],["discriptors","descriptors"],["disctinction","distinction"],["disctinctive","distinctive"],["disctinguish","distinguish"],["disctionaries","dictionaries"],["disctionary","dictionary"],["discuassed","discussed"],["discused","discussed"],["discusion","discussion"],["discusions","discussions"],["discusson","discussion"],["discussons","discussions"],["discusting","disgusting"],["discuusion","discussion"],["disdvantage","disadvantage"],["disecting","dissecting"],["disection","dissection"],["diselect","deselect"],["disemination","dissemination"],["disenchanged","disenchanted"],["disencouraged","discouraged"],["disertation","dissertation"],["disfunctional","dysfunctional"],["disfunctionality","dysfunctionality"],["disgn","design"],["disgned","designed"],["disgner","designer"],["disgning","designing-"],["disgnostic","diagnostic"],["disgnostics","diagnostics"],["disgns","designs"],["disguisting","disgusting"],["disharge","discharge"],["disign","design"],["disignated","designated"],["disinguish","distinguish"],["disiplined","disciplined"],["disired","desired"],["disitributions","distributions"],["diskrete","discrete"],["diskretion","discretion"],["diskretization","discretization"],["diskretize","discretize"],["diskretized","discretized"],["diskrimination","discrimination"],["dislaimer","disclaimer"],["dislay","display"],["dislayed","displayed"],["dislaying","displaying"],["dislays","displays"],["dislpay","display"],["dislpayed","displayed"],["dislpaying","displaying"],["dislpays","displays"],["disnabled","disabled"],["disobediance","disobedience"],["disobediant","disobedient"],["disokay","display"],["disolve","dissolve"],["disolved","dissolved"],["disonnect","disconnect"],["disonnected","disconnected"],["disover","discover"],["disovered","discovered"],["disovering","discovering"],["disovery","discovery"],["dispached","dispatched"],["dispair","despair"],["dispalcement","displacement"],["dispalcements","displacements"],["dispaly","display"],["dispalyable","displayable"],["dispalyed","displayed"],["dispalyes","displays"],["dispalying","displaying"],["dispalys","displays"],["disparingly","disparagingly"],["disparite","disparate"],["dispatcgh","dispatch"],["dispatchs","dispatches"],["dispath","dispatch"],["dispathed","dispatched"],["dispathes","dispatches"],["dispathing","dispatching"],["dispay","display"],["dispayed","displayed"],["dispayes","displays"],["dispayport","displayport"],["dispays","displays"],["dispbibute","distribute"],["dispell","dispel"],["dispence","dispense"],["dispenced","dispensed"],["dispencing","dispensing"],["dispertion","dispersion"],["dispicable","despicable"],["dispite","despite"],["displa","display"],["displacemnt","displacement"],["displacemnts","displacements"],["displacment","displacement"],["displacments","displacements"],["displayd","displayed"],["displayied","displayed"],["displayig","displaying"],["disply","display"],["displyed","displayed"],["displying","displaying"],["displys","displays"],["dispode","dispose"],["disporue","disparue"],["disporve","disprove"],["disporved","disproved"],["disporves","disproves"],["disporving","disproving"],["disposel","disposal"],["dispossable","disposable"],["dispossal","disposal"],["disposse","dispose"],["dispossing","disposing"],["dispostion","disposition"],["disproportiate","disproportionate"],["disproportionatly","disproportionately"],["disputandem","disputandum"],["disregrad","disregard"],["disrete","discrete"],["disretion","discretion"],["disribution","distribution"],["disricts","districts"],["disrm","disarm"],["dissable","disable"],["dissabled","disabled"],["dissables","disables"],["dissabling","disabling"],["dissadvantage","disadvantage"],["dissadvantages","disadvantages"],["dissagreement","disagreement"],["dissagregation","dissaggregation"],["dissallow","disallow"],["dissallowed","disallowed"],["dissallowing","disallowing"],["dissallows","disallows"],["dissalow","disallow"],["dissalowed","disallowed"],["dissalowing","disallowing"],["dissalows","disallows"],["dissambiguate","disambiguate"],["dissamble","disassemble"],["dissambled","disassembled"],["dissambler","disassembler"],["dissambles","disassembles"],["dissamblies","disassemblies"],["dissambling","disassembling"],["dissambly","disassembly"],["dissapate","dissipate"],["dissapates","dissipates"],["dissapear","disappear"],["dissapearance","disappearance"],["dissapeard","disappeared"],["dissapeared","disappeared"],["dissapearing","disappearing"],["dissapears","disappears"],["dissaper","disappear"],["dissaperd","disappeared"],["dissapered","disappeared"],["dissapering","disappearing"],["dissapers","disappears"],["dissapoint","disappoint"],["dissapointed","disappointed"],["dissapointing","disappointing"],["dissapoints","disappoints"],["dissappear","disappear"],["dissappeard","disappeared"],["dissappeared","disappeared"],["dissappearing","disappearing"],["dissappears","disappears"],["dissapper","disappear"],["dissapperd","disappeared"],["dissappered","disappeared"],["dissappering","disappearing"],["dissappers","disappears"],["dissappointed","disappointed"],["dissapprove","disapprove"],["dissapproves","disapproves"],["dissarray","disarray"],["dissasemble","disassemble"],["dissasembled","disassembled"],["dissasembler","disassembler"],["dissasembles","disassembles"],["dissasemblies","disassemblies"],["dissasembling","disassembling"],["dissasembly","disassembly"],["dissasociate","disassociate"],["dissasociated","disassociated"],["dissasociates","disassociates"],["dissasociation","disassociation"],["dissassemble","disassemble"],["dissassembled","disassembled"],["dissassembler","disassembler"],["dissassembles","disassembles"],["dissassemblies","disassemblies"],["dissassembling","disassembling"],["dissassembly","disassembly"],["dissassociate","disassociate"],["dissassociated","disassociated"],["dissassociates","disassociates"],["dissassociating","disassociating"],["dissaster","disaster"],["dissasters","disasters"],["dissble","disable"],["dissbled","disabled"],["dissbles","disables"],["dissbling","disabling"],["dissconect","disconnect"],["dissconnect","disconnect"],["dissconnected","disconnected"],["dissconnects","disconnects"],["disscover","discover"],["disscovered","discovered"],["disscovering","discovering"],["disscovers","discovers"],["disscovery","discovery"],["dissct","dissect"],["disscted","dissected"],["disscting","dissecting"],["dissctor","dissector"],["dissctors","dissectors"],["disscts","dissects"],["disscuesed","discussed"],["disscus","discuss"],["disscused","discussed"],["disscuses","discusses"],["disscusing","discussing"],["disscusion","discussion"],["disscuss","discuss"],["disscussed","discussed"],["disscusses","discusses"],["disscussing","discussing"],["disscussion","discussion"],["disscussions","discussions"],["disshearteningly","dishearteningly"],["dissimialr","dissimilar"],["dissimialrity","dissimilarity"],["dissimialrly","dissimilarly"],["dissimiar","dissimilar"],["dissimilarily","dissimilarly"],["dissimilary","dissimilarly"],["dissimilat","dissimilar"],["dissimilia","dissimilar"],["dissimiliar","dissimilar"],["dissimiliarity","dissimilarity"],["dissimiliarly","dissimilarly"],["dissimiliarty","dissimilarity"],["dissimiliary","dissimilarity"],["dissimillar","dissimilar"],["dissimlar","dissimilar"],["dissimlarlity","dissimilarity"],["dissimlarly","dissimilarly"],["dissimliar","dissimilar"],["dissimliarly","dissimilarly"],["dissimmetric","dissymmetric"],["dissimmetrical","dissymmetrical"],["dissimmetry","dissymmetry"],["dissmantle","dismantle"],["dissmantled","dismantled"],["dissmantles","dismantles"],["dissmantling","dismantling"],["dissmis","dismiss"],["dissmised","dismissed"],["dissmises","dismisses"],["dissmising","dismissing"],["dissmiss","dismiss"],["dissmissed","dismissed"],["dissmisses","dismisses"],["dissmissing","dismissing"],["dissobediance","disobedience"],["dissobediant","disobedient"],["dissobedience","disobedience"],["dissobedient","disobedient"],["dissplay","display"],["dissrupt","disrupt"],["dissrupted","disrupted"],["dissrupting","disrupting"],["dissrupts","disrupts"],["disssemble","disassemble"],["disssembled","disassembled"],["disssembler","disassembler"],["disssembles","disassembles"],["disssemblies","disassemblies"],["disssembling","disassembling"],["disssembly","disassembly"],["disssociate","dissociate"],["disssociated","dissociated"],["disssociates","dissociates"],["disssociating","dissociating"],["distaced","distanced"],["distange","distance"],["distanse","distance"],["distantce","distance"],["distarct","distract"],["distater","disaster"],["distengish","distinguish"],["distibute","distribute"],["distibuted","distributed"],["distibutes","distributes"],["distibuting","distributing"],["distibution","distribution"],["distibutions","distributions"],["distiction","distinction"],["distictly","distinctly"],["distiguish","distinguish"],["distiguished","distinguished"],["distinative","distinctive"],["distingish","distinguish"],["distingished","distinguished"],["distingishes","distinguishes"],["distingishing","distinguishing"],["distingiush","distinguish"],["distingquished","distinguished"],["distinguise","distinguish"],["distinguised","distinguished"],["distinguises","distinguishes"],["distingush","distinguish"],["distingushed","distinguished"],["distingushes","distinguishes"],["distingushing","distinguishing"],["distingusih","distinguish"],["distinquish","distinguish"],["distinquishable","distinguishable"],["distinquished","distinguished"],["distinquishes","distinguishes"],["distinquishing","distinguishing"],["distintions","distinctions"],["distirbute","distribute"],["distirbuted","distributed"],["distirbutes","distributes"],["distirbuting","distributing"],["distirbution","distribution"],["distirbutions","distributions"],["distirted","distorted"],["distnace","distance"],["distnaces","distances"],["distnce","distance"],["distnces","distances"],["distnct","distinct"],["distncte","distance"],["distnctes","distances"],["distnguish","distinguish"],["distnguished","distinguished"],["distniguish","distinguish"],["distniguished","distinguished"],["distorsion","distortion"],["distorsional","distortional"],["distorsions","distortions"],["distrbute","distribute"],["distrbuted","distributed"],["distrbutes","distributes"],["distrbuting","distributing"],["distrbution","distribution"],["distrbutions","distributions"],["distrct","district"],["distrcts","districts"],["distrebuted","distributed"],["distribtion","distribution"],["distribtions","distributions"],["distribtuion","distribution"],["distribtuions","distributions"],["distribtution","distributions"],["distribue","distribute"],["distribued","distributed"],["distribues","distributes"],["distribuion","distribution"],["distribuite","distribute"],["distribuited","distributed"],["distribuiting","distributing"],["distribuition","distribution"],["distribuitng","distributing"],["distribure","distribute"],["districct","district"],["distrobute","distribute"],["distrobuted","distributed"],["distrobutes","distributes"],["distrobuting","distributing"],["distrobution","distribution"],["distrobutions","distributions"],["distrobuts","distributes"],["distroname","distro name"],["distroying","destroying"],["distrub","disturb"],["distrubiotion","distribution"],["distrubite","distribute"],["distrubtion","distribution"],["distrubute","distribute"],["distrubuted","distributed"],["distrubution","distribution"],["distrubutions","distributions"],["distrubutor","distributor"],["distrubutors","distributors"],["distruction","destruction"],["distructive","destructive"],["distructor","destructor"],["distructors","destructors"],["distuingish","distinguish"],["disuade","dissuade"],["disucssion","discussion"],["disucssions","discussions"],["disucussion","discussion"],["disussion","discussion"],["disussions","discussions"],["disutils","distutils"],["ditance","distance"],["ditial","digital"],["ditinguishes","distinguishes"],["ditorconfig","editorconfig"],["ditribute","distribute"],["ditributed","distributed"],["ditribution","distribution"],["ditributions","distributions"],["divde","divide"],["divded","divided"],["divdes","divides"],["divding","dividing"],["divertion","diversion"],["divertions","diversions"],["divet","divot"],["divice","device"],["divicer","divider"],["divion","division"],["divisable","divisible"],["divisior","divisor"],["divison","division"],["divisons","divisions"],["divrese","diverse"],["divsion","division"],["divsions","divisions"],["divsiors","divisors"],["dloating","floating"],["dnamically","dynamically"],["dne","done"],["dnymaic","dynamic"],["do'nt","don't"],["doagonal","diagonal"],["doagonals","diagonals"],["doalog","dialog"],["doamins","domains"],["doasn't","doesn't"],["doble","double"],["dobled","doubled"],["dobles","doubles"],["dobling","doubling"],["doccument","document"],["doccumented","documented"],["doccuments","documents"],["dockson","dachshund"],["docmenetation","documentation"],["docmuent","document"],["docmunet","document"],["docmunetation","documentation"],["docmuneted","documented"],["docmuneting","documenting"],["docmunets","documents"],["docoment","document"],["docomentation","documentation"],["docomented","documented"],["docomenting","documenting"],["docoments","documents"],["docrines","doctrines"],["docstatistik","docstatistic"],["docsund","dachshund"],["doctines","doctrines"],["doctorial","doctoral"],["docucument","document"],["docuement","document"],["docuements","documents"],["docuemnt","document"],["docuemnts","documents"],["docuemtn","document"],["docuemtnation","documentation"],["docuemtned","documented"],["docuemtning","documenting"],["docuemtns","documents"],["docuent","document"],["docuentation","documentation"],["documant","document"],["documantation","documentation"],["documants","documents"],["documation","documentation"],["documemt","document"],["documen","document"],["documenatation","documentation"],["documenation","documentation"],["documenatry","documentary"],["documenet","document"],["documenetation","documentation"],["documeneted","documented"],["documeneter","documenter"],["documeneters","documenters"],["documeneting","documenting"],["documenets","documents"],["documentaion","documentation"],["documentaiton","documentation"],["documentataion","documentation"],["documentataions","documentations"],["documentaton","documentation"],["documentes","documents"],["documention","documentation"],["documetation","documentation"],["documetnation","documentation"],["documment","document"],["documments","documents"],["documnet","document"],["documnetation","documentation"],["documument","document"],["docunment","document"],["doed","does"],["doen's","doesn't"],["doen't","doesn't"],["doen","done"],["doens't","doesn't"],["doens","does"],["doensn't","doesn't"],["does'nt","doesn't"],["does't","doesn't"],["doese't","doesn't"],["doese","does"],["doesen't","doesn't"],["doesent'","doesn't"],["doesent","doesn't"],["doesits","does its"],["doesn'","doesn't"],["doesn't't","doesn't"],["doesn;t","doesn't"],["doesnexist","doesn't exist"],["doesnt'","doesn't"],["doesnt't","doesn't"],["doesnt;","doesn't"],["doess","does"],["doestn't","doesn't"],["doign","doing"],["doiing","doing"],["doiuble","double"],["doiubled","doubled"],["dokc","dock"],["dokced","docked"],["dokcer","docker"],["dokcing","docking"],["dokcre","docker"],["dokcs","docks"],["doller","dollar"],["dollers","dollars"],["dollor","dollar"],["dollors","dollars"],["domait","domain"],["doman","domain"],["domans","domains"],["domension","dimension"],["domensions","dimensions"],["domian","domain"],["domians","domains"],["dominanted","dominated"],["dominanting","dominating"],["dominantion","domination"],["dominaton","domination"],["dominent","dominant"],["dominiant","dominant"],["domonstrate","demonstrate"],["domonstrates","demonstrates"],["domonstrating","demonstrating"],["domonstration","demonstration"],["domonstrations","demonstrations"],["donain","domain"],["donains","domains"],["donejun","dungeon"],["donejuns","dungeons"],["donig","doing"],["donn't","don't"],["donnot","do not"],["dont'","don't"],["dont't","don't"],["donwload","download"],["donwloaded","downloaded"],["donwloading","downloading"],["donwloads","downloads"],["doocument","document"],["doocumentaries","documentaries"],["doocumentary","documentary"],["doocumentation","documentation"],["doocumentations","documentations"],["doocumented","documented"],["doocumenting","documenting"],["doocuments","documents"],["doorjam","doorjamb"],["dorce","force"],["dorced","forced"],["dorceful","forceful"],["dordered","ordered"],["dorment","dormant"],["dorp","drop"],["dosclosed","disclosed"],["doscloses","discloses"],["dosclosing","disclosing"],["dosclosure","disclosure"],["dosclosures","disclosures"],["dosen't","doesn't"],["dosen;t","doesn't"],["dosens","dozens"],["dosent'","doesn't"],["dosent","doesn't"],["dosent;","doesn't"],["dosn't","doesn't"],["dosn;t","doesn't"],["dosnt","doesn't"],["dosposing","disposing"],["dosument","document"],["dosuments","documents"],["dota","data"],["doube","double"],["doube-click","double-click"],["doube-clicked","double-clicked"],["doube-clicks","double-clicks"],["doube-quote","double-quote"],["doube-quoted","double-quoted"],["doube-word","double-word"],["doube-wprd","double-word"],["doubeclick","double-click"],["doubeclicked","double-clicked"],["doubeclicks","double-clicks"],["doubel","double"],["doubele-click","double-click"],["doubele-clicked","double-clicked"],["doubele-clicks","double-clicks"],["doubeleclick","double-click"],["doubeleclicked","double-clicked"],["doubeleclicks","double-clicks"],["doubely","doubly"],["doubes","doubles"],["doublde","double"],["doublded","doubled"],["doubldes","doubles"],["doubleclick","double-click"],["doublely","doubly"],["doubletquote","doublequote"],["doubth","doubt"],["doubthed","doubted"],["doubthing","doubting"],["doubths","doubts"],["doucment","document"],["doucmentated","documented"],["doucmentation","documentation"],["doucmented","documented"],["doucmenter","documenter"],["doucmenters","documenters"],["doucmentes","documents"],["doucmenting","documenting"],["doucments","documents"],["douible","double"],["douibled","doubled"],["doulbe","double"],["doumentc","document"],["dout","doubt"],["dowgrade","downgrade"],["dowlink","downlink"],["dowlinks","downlinks"],["dowload","download"],["dowloaded","downloaded"],["dowloader","downloader"],["dowloaders","downloaders"],["dowloading","downloading"],["dowloads","downloads"],["downagrade","downgrade"],["downagraded","downgraded"],["downagrades","downgrades"],["downagrading","downgrading"],["downgade","downgrade"],["downgaded","downgraded"],["downgades","downgrades"],["downgading","downgrading"],["downgarade","downgrade"],["downgaraded","downgraded"],["downgarades","downgrades"],["downgarading","downgrading"],["downgarde","downgrade"],["downgarded","downgraded"],["downgardes","downgrades"],["downgarding","downgrading"],["downgarte","downgrade"],["downgarted","downgraded"],["downgartes","downgrades"],["downgarting","downgrading"],["downgradde","downgrade"],["downgradded","downgraded"],["downgraddes","downgrades"],["downgradding","downgrading"],["downgradei","downgrade"],["downgradingn","downgrading"],["downgrate","downgrade"],["downgrated","downgraded"],["downgrates","downgrades"],["downgrating","downgrading"],["downlad","download"],["downladed","downloaded"],["downlading","downloading"],["downlads","downloads"],["downlaod","download"],["downlaoded","downloaded"],["downlaodes","downloads"],["downlaoding","downloading"],["downlaods","downloads"],["downloadmanger","downloadmanager"],["downlod","download"],["downloded","downloaded"],["downloding","downloading"],["downlods","downloads"],["downlowd","download"],["downlowded","downloaded"],["downlowding","downloading"],["downlowds","downloads"],["downoad","download"],["downoaded","downloaded"],["downoading","downloading"],["downoads","downloads"],["downoload","download"],["downoloaded","downloaded"],["downoloading","downloading"],["downoloads","downloads"],["downrade","downgrade"],["downraded","downgraded"],["downrades","downgrades"],["downrading","downgrading"],["downrgade","downgrade"],["downrgaded","downgraded"],["downrgades","downgrades"],["downrgading","downgrading"],["downsteram","downstream"],["downsteramed","downstreamed"],["downsteramer","downstreamer"],["downsteramers","downstreamers"],["downsteraming","downstreaming"],["downsterams","downstreams"],["dows","does"],["dowt","doubt"],["doxgen","doxygen"],["doygen","doxygen"],["dpeends","depends"],["dpendent","dependent"],["dpkg-buildpackge","dpkg-buildpackage"],["dpkg-buildpackges","dpkg-buildpackages"],["dpuble","double"],["dpubles","doubles"],["draconain","draconian"],["dragable","draggable"],["draged","dragged"],["draging","dragging"],["draing","drawing"],["drammatic","dramatic"],["dramtic","dramatic"],["dran","drawn"],["drastical","drastically"],["drasticaly","drastically"],["drats","drafts"],["draughtman","draughtsman"],["Dravadian","Dravidian"],["draview","drawview"],["drawack","drawback"],["drawacks","drawbacks"],["drawm","drawn"],["drawng","drawing"],["dreasm","dreams"],["dreawn","drawn"],["dregee","degree"],["dregees","degrees"],["dregree","degree"],["dregrees","degrees"],["drescription","description"],["drescriptions","descriptions"],["driagram","diagram"],["driagrammed","diagrammed"],["driagramming","diagramming"],["driagrams","diagrams"],["driectly","directly"],["drity","dirty"],["driveing","driving"],["drivr","driver"],["drnik","drink"],["drob","drop"],["dropabel","droppable"],["dropable","droppable"],["droped","dropped"],["droping","dropping"],["droppend","dropped"],["droppped","dropped"],["dropse","drops"],["droput","dropout"],["druing","during"],["druming","drumming"],["drummless","drumless"],["drvier","driver"],["drwaing","drawing"],["drwawing","drawing"],["drwawings","drawings"],["dscrete","discrete"],["dscretion","discretion"],["dscribed","described"],["dsiable","disable"],["dsiabled","disabled"],["dsplays","displays"],["dstination","destination"],["dstinations","destinations"],["dthe","the"],["dtoring","storing"],["dubios","dubious"],["dublicade","duplicate"],["dublicat","duplicate"],["dublicate","duplicate"],["dublicated","duplicated"],["dublicates","duplicates"],["dublication","duplication"],["ducment","document"],["ducument","document"],["duirng","during"],["dulicate","duplicate"],["dum","dumb"],["dumplicate","duplicate"],["dumplicated","duplicated"],["dumplicates","duplicates"],["dumplicating","duplicating"],["duoblequote","doublequote"],["dupicate","duplicate"],["duplacate","duplicate"],["duplacated","duplicated"],["duplacates","duplicates"],["duplacation","duplication"],["duplacte","duplicate"],["duplacted","duplicated"],["duplactes","duplicates"],["duplaction","duplication"],["duplaicate","duplicate"],["duplaicated","duplicated"],["duplaicates","duplicates"],["duplaication","duplication"],["duplate","duplicate"],["duplated","duplicated"],["duplates","duplicates"],["duplation","duplication"],["duplcate","duplicate"],["duplciate","duplicate"],["dupliacate","duplicate"],["dupliacates","duplicates"],["dupliace","duplicate"],["dupliacte","duplicate"],["dupliacted","duplicated"],["dupliactes","duplicates"],["dupliagte","duplicate"],["dupliate","duplicate"],["dupliated","duplicated"],["dupliates","duplicates"],["dupliating","duplicating"],["dupliation","duplication"],["dupliations","duplications"],["duplicat","duplicate"],["duplicatd","duplicated"],["duplicats","duplicates"],["dupplicate","duplicate"],["dupplicated","duplicated"],["dupplicates","duplicates"],["dupplicating","duplicating"],["dupplication","duplication"],["dupplications","duplications"],["durationm","duration"],["durectories","directories"],["durectory","directory"],["dureing","during"],["durig","during"],["durining","during"],["durning","during"],["durring","during"],["duting","during"],["dyanamically","dynamically"],["dyanmic","dynamic"],["dyanmically","dynamically"],["dyas","dryas"],["dymamically","dynamically"],["dynamc","dynamic"],["dynamcly","dynamically"],["dynamcs","dynamics"],["dynamicaly","dynamically"],["dynamiclly","dynamically"],["dynamicly","dynamically"],["dynaminc","dynamic"],["dynamincal","dynamical"],["dynamincally","dynamically"],["dynamincs","dynamics"],["dynamlic","dynamic"],["dynamlically","dynamically"],["dynically","dynamically"],["dynmaic","dynamic"],["dynmaically","dynamically"],["dynmic","dynamic"],["dynmically","dynamically"],["dynmics","dynamics"],["eabled","enabled"],["eacf","each"],["eacg","each"],["eachother","each other"],["eachs","each"],["eactly","exactly"],["eagrely","eagerly"],["eahc","each"],["eailier","earlier"],["eaiser","easier"],["ealier","earlier"],["ealiest","earliest"],["eample","example"],["eamples","examples"],["eanable","enable"],["eanble","enable"],["earleir","earlier"],["earler","earlier"],["earliear","earlier"],["earlies","earliest"],["earlist","earliest"],["earlyer","earlier"],["earnt","earned"],["earpeice","earpiece"],["easely","easily"],["easili","easily"],["easiliy","easily"],["easilly","easily"],["easist","easiest"],["easiy","easily"],["easly","easily"],["easyer","easier"],["eaxct","exact"],["ebale","enable"],["ebaled","enabled"],["EBCIDC","EBCDIC"],["ebedded","embedded"],["eccessive","excessive"],["ecclectic","eclectic"],["eceonomy","economy"],["ecept","except"],["eception","exception"],["eceptions","exceptions"],["ecidious","deciduous"],["eclise","eclipse"],["eclispe","eclipse"],["ecnetricity","eccentricity"],["ecognized","recognized"],["ecomonic","economic"],["ecounter","encounter"],["ecountered","encountered"],["ecountering","encountering"],["ecounters","encounters"],["ecplicit","explicit"],["ecplicitly","explicitly"],["ecspecially","especially"],["ect","etc"],["ecxept","except"],["ecxite","excite"],["ecxited","excited"],["ecxites","excites"],["ecxiting","exciting"],["ecxtracted","extracted"],["EDCDIC","EBCDIC"],["eddge","edge"],["eddges","edges"],["edditable","editable"],["ede","edge"],["ediable","editable"],["edige","edge"],["ediges","edges"],["ediit","edit"],["ediiting","editing"],["ediitor","editor"],["ediitors","editors"],["ediits","edits"],["editedt","edited"],["editiing","editing"],["editoro","editor"],["editot","editor"],["editots","editors"],["editt","edit"],["editted","edited"],["editter","editor"],["editting","editing"],["edittor","editor"],["edn","end"],["ednif","endif"],["edxpected","expected"],["eearly","early"],["eeeprom","EEPROM"],["eescription","description"],["eevery","every"],["eeverything","everything"],["eeverywhere","everywhere"],["eextract","extract"],["eextracted","extracted"],["eextracting","extracting"],["eextraction","extraction"],["eextracts","extracts"],["efect","effect"],["efective","effective"],["efectively","effectively"],["efel","evil"],["eferences","references"],["efetivity","effectivity"],["effciency","efficiency"],["effcient","efficient"],["effciently","efficiently"],["effctive","effective"],["effctively","effectively"],["effeciency","efficiency"],["effecient","efficient"],["effeciently","efficiently"],["effecitvely","effectively"],["effeck","effect"],["effecked","effected"],["effecks","effects"],["effeckt","effect"],["effectice","effective"],["effecticely","effectively"],["effectiviness","effectiveness"],["effectivness","effectiveness"],["effectly","effectively"],["effedts","effects"],["effekt","effect"],["effexts","effects"],["efficcient","efficient"],["efficencty","efficiency"],["efficency","efficiency"],["efficent","efficient"],["efficently","efficiently"],["effiency","efficiency"],["effient","efficient"],["effiently","efficiently"],["effulence","effluence"],["eforceable","enforceable"],["egal","equal"],["egals","equals"],["egde","edge"],["egdes","edges"],["ege","edge"],["egenral","general"],["egenralise","generalise"],["egenralised","generalised"],["egenralises","generalises"],["egenralize","generalize"],["egenralized","generalized"],["egenralizes","generalizes"],["egenrally","generally"],["ehance","enhance"],["ehanced","enhanced"],["ehancement","enhancement"],["ehancements","enhancements"],["ehenever","whenever"],["ehough","enough"],["ehr","her"],["ehternet","Ethernet"],["ehthernet","ethernet"],["eighter","either"],["eihter","either"],["einstance","instance"],["eisntance","instance"],["eiter","either"],["eith","with"],["elaspe","elapse"],["elasped","elapsed"],["elaspes","elapses"],["elasping","elapsing"],["elction","election"],["elctromagnetic","electromagnetic"],["elease","release"],["eleased","released"],["eleases","releases"],["eleate","relate"],["electical","electrical"],["electirc","electric"],["electircal","electrical"],["electrial","electrical"],["electricly","electrically"],["electricty","electricity"],["electrinics","electronics"],["electriv","electric"],["electrnoics","electronics"],["eleemnt","element"],["eleent","element"],["elegible","eligible"],["elelement","element"],["elelements","elements"],["elelment","element"],["elelmental","elemental"],["elelmentary","elementary"],["elelments","elements"],["elemant","element"],["elemantary","elementary"],["elemement","element"],["elemements","elements"],["elememt","element"],["elemen","element"],["elemenent","element"],["elemenental","elemental"],["elemenents","elements"],["elemenet","element"],["elemenets","elements"],["elemens","elements"],["elemenst","elements"],["elementay","elementary"],["elementry","elementary"],["elemet","element"],["elemetal","elemental"],["elemetn","element"],["elemetns","elements"],["elemets","elements"],["eleminate","eliminate"],["eleminated","eliminated"],["eleminates","eliminates"],["eleminating","eliminating"],["elemnets","elements"],["elemnt","element"],["elemntal","elemental"],["elemnts","elements"],["elemt","element"],["elemtary","elementary"],["elemts","elements"],["elenment","element"],["eles","else"],["eletricity","electricity"],["eletromagnitic","electromagnetic"],["eletronic","electronic"],["elgible","eligible"],["elicided","elicited"],["eligable","eligible"],["elimentary","elementary"],["elimiante","eliminate"],["elimiate","eliminate"],["eliminetaion","elimination"],["elimintate","eliminate"],["eliminte","eliminate"],["elimnated","eliminated"],["eliptic","elliptic"],["eliptical","elliptical"],["elipticity","ellipticity"],["ellapsed","elapsed"],["ellected","elected"],["ellement","element"],["ellemental","elemental"],["ellementals","elementals"],["ellements","elements"],["elliminate","eliminate"],["elliminated","eliminated"],["elliminates","eliminates"],["elliminating","eliminating"],["ellipsises","ellipsis"],["ellision","elision"],["elmenet","element"],["elmenets","elements"],["elment","element"],["elments","elements"],["elminate","eliminate"],["elminated","eliminated"],["elminates","eliminates"],["elminating","eliminating"],["elphant","elephant"],["elsef","elseif"],["elsehwere","elsewhere"],["elseof","elseif"],["elseswhere","elsewhere"],["elsewehere","elsewhere"],["elsewere","elsewhere"],["elsewhwere","elsewhere"],["elsiof","elseif"],["elsof","elseif"],["emabaroged","embargoed"],["emable","enable"],["emabled","enabled"],["emables","enables"],["emabling","enabling"],["emailling","emailing"],["embarass","embarrass"],["embarassed","embarrassed"],["embarasses","embarrasses"],["embarassing","embarrassing"],["embarassment","embarrassment"],["embargos","embargoes"],["embarras","embarrass"],["embarrased","embarrassed"],["embarrasing","embarrassing"],["embarrasingly","embarrassingly"],["embarrasment","embarrassment"],["embbedded","embedded"],["embbeded","embedded"],["embdder","embedder"],["embdedded","embedded"],["embebbed","embedded"],["embedd","embed"],["embeddded","embedded"],["embeddeding","embedding"],["embedds","embeds"],["embeded","embedded"],["embededded","embedded"],["embeed","embed"],["embezelled","embezzled"],["emblamatic","emblematic"],["embold","embolden"],["embrodery","embroidery"],["emcompass","encompass"],["emcompassed","encompassed"],["emcompassing","encompassing"],["emedded","embedded"],["emegrency","emergency"],["emenet","element"],["emenets","elements"],["emiited","emitted"],["eminate","emanate"],["eminated","emanated"],["emision","emission"],["emited","emitted"],["emiting","emitting"],["emlation","emulation"],["emmediately","immediately"],["emminently","eminently"],["emmisaries","emissaries"],["emmisarries","emissaries"],["emmisarry","emissary"],["emmisary","emissary"],["emmision","emission"],["emmisions","emissions"],["emmit","emit"],["emmited","emitted"],["emmiting","emitting"],["emmits","emits"],["emmitted","emitted"],["emmitting","emitting"],["emnity","enmity"],["emoty","empty"],["emough","enough"],["emought","enough"],["emperical","empirical"],["emperically","empirically"],["emphaised","emphasised"],["emphsis","emphasis"],["emphysyma","emphysema"],["empiracally","empirically"],["empiricaly","empirically"],["emplyed","employed"],["emplyee","employee"],["emplyees","employees"],["emplyer","employer"],["emplyers","employers"],["emplying","employing"],["emplyment","employment"],["emplyments","employments"],["emporer","emperor"],["emprically","empirically"],["emprisoned","imprisoned"],["emprove","improve"],["emproved","improved"],["emprovement","improvement"],["emprovements","improvements"],["emproves","improves"],["emproving","improving"],["emptniess","emptiness"],["emptry","empty"],["emptyed","emptied"],["emptyy","empty"],["empy","empty"],["emtied","emptied"],["emties","empties"],["emtpies","empties"],["emtpy","empty"],["emty","empty"],["emtying","emptying"],["emultor","emulator"],["emultors","emulators"],["enabe","enable"],["enabel","enable"],["enabeled","enabled"],["enabeling","enabling"],["enabing","enabling"],["enabledi","enabled"],["enableing","enabling"],["enablen","enabled"],["enalbe","enable"],["enalbed","enabled"],["enalbes","enables"],["enameld","enameled"],["enaugh","enough"],["enbable","enable"],["enbabled","enabled"],["enbabling","enabling"],["enbale","enable"],["enbaled","enabled"],["enbales","enables"],["enbaling","enabling"],["enbedding","embedding"],["enble","enable"],["encapsualtes","encapsulates"],["encapsulatzion","encapsulation"],["encapsultion","encapsulation"],["encaspulate","encapsulate"],["encaspulated","encapsulated"],["encaspulates","encapsulates"],["encaspulating","encapsulating"],["encaspulation","encapsulation"],["enchanced","enhanced"],["enclosng","enclosing"],["enclosue","enclosure"],["enclosung","enclosing"],["enclude","include"],["encluding","including"],["encocde","encode"],["encocded","encoded"],["encocder","encoder"],["encocders","encoders"],["encocdes","encodes"],["encocding","encoding"],["encocdings","encodings"],["encodingt","encoding"],["encodning","encoding"],["encodnings","encodings"],["encompas","encompass"],["encompased","encompassed"],["encompases","encompasses"],["encompasing","encompassing"],["enconde","encode"],["enconded","encoded"],["enconder","encoder"],["enconders","encoders"],["encondes","encodes"],["enconding","encoding"],["encondings","encodings"],["encorded","encoded"],["encorder","encoder"],["encorders","encoders"],["encording","encoding"],["encordings","encodings"],["encorporating","incorporating"],["encoser","encoder"],["encosers","encoders"],["encosure","enclosure"],["encounterd","encountered"],["encountres","encounters"],["encouraing","encouraging"],["encouter","encounter"],["encoutered","encountered"],["encouters","encounters"],["encoutner","encounter"],["encoutners","encounters"],["encouttering","encountering"],["encrcypt","encrypt"],["encrcypted","encrypted"],["encrcyption","encryption"],["encrcyptions","encryptions"],["encrcypts","encrypts"],["encript","encrypt"],["encripted","encrypted"],["encription","encryption"],["encriptions","encryptions"],["encripts","encrypts"],["encrpt","encrypt"],["encrpted","encrypted"],["encrption","encryption"],["encrptions","encryptions"],["encrpts","encrypts"],["encrupted","encrypted"],["encrypiton","encryption"],["encryptiion","encryption"],["encryptio","encryption"],["encryptiong","encryption"],["encrytion","encryption"],["encrytped","encrypted"],["encrytption","encryption"],["encupsulates","encapsulates"],["encylopedia","encyclopedia"],["encypted","encrypted"],["encyption","encryption"],["endcoded","encoded"],["endcoder","encoder"],["endcoders","encoders"],["endcodes","encodes"],["endcoding","encoding"],["endcodings","encodings"],["endding","ending"],["ende","end"],["endevors","endeavors"],["endevour","endeavour"],["endfi","endif"],["endianes","endianness"],["endianess","endianness"],["endianity","endianness"],["endiannes","endianness"],["endig","ending"],["endiness","endianness"],["endnoden","endnode"],["endoint","endpoint"],["endolithes","endoliths"],["endpints","endpoints"],["endpiont","endpoint"],["endpionts","endpoints"],["endpont","endpoint"],["endponts","endpoints"],["endsup","ends up"],["enduce","induce"],["eneables","enables"],["enebale","enable"],["enebaled","enabled"],["eneble","enable"],["ened","need"],["enegeries","energies"],["enegery","energy"],["enehanced","enhanced"],["enery","energy"],["eneter","enter"],["enetered","entered"],["enetities","entities"],["enetity","entity"],["eneumeration","enumeration"],["eneumerations","enumerations"],["eneumretaion","enumeration"],["eneumretaions","enumerations"],["enew","new"],["enflamed","inflamed"],["enforcable","enforceable"],["enforceing","enforcing"],["enforcmement","enforcement"],["enforcment","enforcement"],["enfore","enforce"],["enfored","enforced"],["enfores","enforces"],["enforncing","enforcing"],["engagment","engagement"],["engeneer","engineer"],["engeneering","engineering"],["engery","energy"],["engieer","engineer"],["engieneer","engineer"],["engieneers","engineers"],["enginee","engine"],["enginge","engine"],["enginin","engine"],["enginineer","engineer"],["engoug","enough"],["enhabce","enhance"],["enhabced","enhanced"],["enhabces","enhances"],["enhabcing","enhancing"],["enhace","enhance"],["enhaced","enhanced"],["enhacement","enhancement"],["enhacements","enhancements"],["enhancd","enhanced"],["enhancment","enhancement"],["enhancments","enhancements"],["enhaned","enhanced"],["enhence","enhance"],["enhenced","enhanced"],["enhencement","enhancement"],["enhencements","enhancements"],["enhencment","enhancement"],["enhencments","enhancements"],["enironment","environment"],["enironments","environments"],["enities","entities"],["enitities","entities"],["enitity","entity"],["enitre","entire"],["enivornment","environment"],["enivornments","environments"],["enivronment","environment"],["enlargment","enlargement"],["enlargments","enlargements"],["enlightnment","enlightenment"],["enlose","enclose"],["enmpty","empty"],["enmum","enum"],["ennpoint","endpoint"],["enntries","entries"],["enocde","encode"],["enocded","encoded"],["enocder","encoder"],["enocders","encoders"],["enocdes","encodes"],["enocding","encoding"],["enocdings","encodings"],["enogh","enough"],["enoght","enough"],["enoguh","enough"],["enouch","enough"],["enoucnter","encounter"],["enoucntered","encountered"],["enoucntering","encountering"],["enoucnters","encounters"],["enouf","enough"],["enoufh","enough"],["enought","enough"],["enoughts","enough"],["enougth","enough"],["enouh","enough"],["enouhg","enough"],["enouncter","encounter"],["enounctered","encountered"],["enounctering","encountering"],["enouncters","encounters"],["enoung","enough"],["enoungh","enough"],["enounter","encounter"],["enountered","encountered"],["enountering","encountering"],["enounters","encounters"],["enouph","enough"],["enourage","encourage"],["enouraged","encouraged"],["enourages","encourages"],["enouraging","encouraging"],["enourmous","enormous"],["enourmously","enormously"],["enouth","enough"],["enouugh","enough"],["enpoint","endpoint"],["enpoints","endpoints"],["enque","enqueue"],["enqueing","enqueuing"],["enrties","entries"],["enrtries","entries"],["enrtry","entry"],["enrty","entry"],["ensconsed","ensconced"],["entaglements","entanglements"],["entended","intended"],["entension","extension"],["entensions","extensions"],["ententries","entries"],["enterance","entrance"],["enteratinment","entertainment"],["entereing","entering"],["enterie","entry"],["enteries","entries"],["enterily","entirely"],["enterprice","enterprise"],["enterprices","enterprises"],["entery","entry"],["enteties","entities"],["entety","entity"],["enthaplies","enthalpies"],["enthaply","enthalpy"],["enthousiasm","enthusiasm"],["enthusiam","enthusiasm"],["enthusiatic","enthusiastic"],["entierly","entirely"],["entireity","entirety"],["entires","entries"],["entirey","entirely"],["entirity","entirety"],["entirly","entirely"],["entitee","entity"],["entitees","entities"],["entites","entities"],["entiti","entity"],["entitie","entity"],["entitites","entities"],["entitities","entities"],["entitity","entity"],["entitiy","entity"],["entitiys","entities"],["entitlied","entitled"],["entitys","entities"],["entoties","entities"],["entoty","entity"],["entrace","entrance"],["entraced","entranced"],["entraces","entrances"],["entrepeneur","entrepreneur"],["entrepeneurs","entrepreneurs"],["entriess","entries"],["entrophy","entropy"],["enttries","entries"],["enttry","entry"],["enulation","emulation"],["enumarate","enumerate"],["enumarated","enumerated"],["enumarates","enumerates"],["enumarating","enumerating"],["enumation","enumeration"],["enumearate","enumerate"],["enumearation","enumeration"],["enumerble","enumerable"],["enumertaion","enumeration"],["enusre","ensure"],["envaluation","evaluation"],["enveloppe","envelope"],["envelopped","enveloped"],["enveloppes","envelopes"],["envelopping","enveloping"],["enver","never"],["envioment","environment"],["enviomental","environmental"],["envioments","environments"],["envionment","environment"],["envionmental","environmental"],["envionments","environments"],["enviorement","environment"],["envioremental","environmental"],["enviorements","environments"],["enviorenment","environment"],["enviorenmental","environmental"],["enviorenments","environments"],["enviorment","environment"],["enviormental","environmental"],["enviormentally","environmentally"],["enviorments","environments"],["enviornemnt","environment"],["enviornemntal","environmental"],["enviornemnts","environments"],["enviornment","environment"],["enviornmental","environmental"],["enviornmentalist","environmentalist"],["enviornmentally","environmentally"],["enviornments","environments"],["envioronment","environment"],["envioronmental","environmental"],["envioronments","environments"],["envireonment","environment"],["envirionment","environment"],["envirnment","environment"],["envirnmental","environmental"],["envirnments","environments"],["envirnoment","environment"],["envirnoments","environments"],["enviroiment","environment"],["enviroment","environment"],["enviromental","environmental"],["enviromentalist","environmentalist"],["enviromentally","environmentally"],["enviroments","environments"],["enviromnent","environment"],["enviromnental","environmental"],["enviromnentally","environmentally"],["enviromnents","environments"],["environement","environment"],["environemnt","environment"],["environemntal","environmental"],["environemnts","environments"],["environent","environment"],["environmane","environment"],["environmenet","environment"],["environmenets","environments"],["environmet","environment"],["environmets","environments"],["environmnet","environment"],["environmont","environment"],["environnement","environment"],["environtment","environment"],["envolutionary","evolutionary"],["envolved","involved"],["envorce","enforce"],["envrion","environ"],["envrionment","environment"],["envrionmental","environmental"],["envrionments","environments"],["envrions","environs"],["envriron","environ"],["envrironment","environment"],["envrironmental","environmental"],["envrironments","environments"],["envrirons","environs"],["envvironment","environment"],["enxt","next"],["enything","anything"],["enyway","anyway"],["epecifica","especifica"],["epect","expect"],["epected","expected"],["epectedly","expectedly"],["epecting","expecting"],["epects","expects"],["ephememeral","ephemeral"],["ephememeris","ephemeris"],["epidsodes","episodes"],["epigramic","epigrammatic"],["epilgoue","epilogue"],["episdoe","episode"],["episdoes","episodes"],["eploit","exploit"],["eploits","exploits"],["epmty","empty"],["epressions","expressions"],["epsiode","episode"],["eptied","emptied"],["eptier","emptier"],["epties","empties"],["eptrapolate","extrapolate"],["eptrapolated","extrapolated"],["eptrapolates","extrapolates"],["epty","empty"],["epxanded","expanded"],["epxected","expected"],["epxiressions","expressions"],["epxlicit","explicit"],["eqaul","equal"],["eqaulity","equality"],["eqaulizer","equalizer"],["eqivalent","equivalent"],["eqivalents","equivalents"],["equailateral","equilateral"],["equalibrium","equilibrium"],["equallity","equality"],["equalls","equals"],["equaly","equally"],["equeation","equation"],["equeations","equations"],["equel","equal"],["equelibrium","equilibrium"],["equialent","equivalent"],["equil","equal"],["equilavalent","equivalent"],["equilibium","equilibrium"],["equilibrum","equilibrium"],["equilvalent","equivalent"],["equilvalently","equivalently"],["equilvalents","equivalents"],["equiped","equipped"],["equipmentd","equipment"],["equipments","equipment"],["equippment","equipment"],["equiptment","equipment"],["equitorial","equatorial"],["equivalance","equivalence"],["equivalant","equivalent"],["equivelant","equivalent"],["equivelent","equivalent"],["equivelents","equivalents"],["equivilant","equivalent"],["equivilent","equivalent"],["equivivalent","equivalent"],["equivlalent","equivalent"],["equivlantly","equivalently"],["equivlent","equivalent"],["equivlently","equivalently"],["equivlents","equivalents"],["equivqlent","equivalent"],["eqution","equation"],["equtions","equations"],["equvalent","equivalent"],["equvivalent","equivalent"],["erasablocks","eraseblocks"],["eratic","erratic"],["eratically","erratically"],["eraticly","erratically"],["erformance","performance"],["erliear","earlier"],["erlier","earlier"],["erly","early"],["ermergency","emergency"],["eroneous","erroneous"],["eror","error"],["erorneus","erroneous"],["erorneusly","erroneously"],["erorr","error"],["erorrs","errors"],["erors","errors"],["erraneously","erroneously"],["erro","error"],["erroneus","erroneous"],["erroneusly","erroneously"],["erronous","erroneous"],["erronously","erroneously"],["errorneous","erroneous"],["errorneously","erroneously"],["errorneus","erroneous"],["errornous","erroneous"],["errornously","erroneously"],["errorprone","error-prone"],["errorr","error"],["erros","errors"],["errot","error"],["errots","errors"],["errro","error"],["errror","error"],["errrors","errors"],["errros","errors"],["errupted","erupted"],["ertoneous","erroneous"],["ertoneously","erroneously"],["ervery","every"],["erverything","everything"],["esacpe","escape"],["esacped","escaped"],["esacpes","escapes"],["escalte","escalate"],["escalted","escalated"],["escaltes","escalates"],["escalting","escalating"],["escaltion","escalation"],["escapeable","escapable"],["escapemant","escapement"],["escased","escaped"],["escation","escalation"],["esccape","escape"],["esccaped","escaped"],["escpae","escape"],["escpaed","escaped"],["esecute","execute"],["esential","essential"],["esentially","essentially"],["esge","edge"],["esger","edger"],["esgers","edgers"],["esges","edges"],["esging","edging"],["esiest","easiest"],["esimate","estimate"],["esimated","estimated"],["esimates","estimates"],["esimating","estimating"],["esimation","estimation"],["esimations","estimations"],["esimator","estimator"],["esimators","estimators"],["esists","exists"],["esitmate","estimate"],["esitmated","estimated"],["esitmates","estimates"],["esitmating","estimating"],["esitmation","estimation"],["esitmations","estimations"],["esitmator","estimator"],["esitmators","estimators"],["esle","else"],["esnure","ensure"],["esnured","ensured"],["esnures","ensures"],["espacally","especially"],["espace","escape"],["espaced","escaped"],["espaces","escapes"],["espacially","especially"],["espacing","escaping"],["espcially","especially"],["especailly","especially"],["especally","especially"],["especialy","especially"],["especialyl","especially"],["especiially","especially"],["espect","expect"],["espeically","especially"],["esseintially","essentially"],["essencial","essential"],["essense","essence"],["essentail","essential"],["essentailly","essentially"],["essentaily","essentially"],["essental","essential"],["essentally","essentially"],["essentals","essentials"],["essentialy","essentially"],["essentual","essential"],["essentually","essentially"],["essentualy","essentially"],["essesital","essential"],["essesitally","essentially"],["essesitaly","essentially"],["essiential","essential"],["esssential","essential"],["estabilish","establish"],["estabish","establish"],["estabishd","established"],["estabished","established"],["estabishes","establishes"],["estabishing","establishing"],["establised","established"],["establishs","establishes"],["establising","establishing"],["establsihed","established"],["estbalishment","establishment"],["estimage","estimate"],["estimages","estimates"],["estiomator","estimator"],["estiomators","estimators"],["esy","easy"],["etablish","establish"],["etablishd","established"],["etablished","established"],["etablishing","establishing"],["etcc","etc"],["etcp","etc"],["etensible","extensible"],["etension","extension"],["etensions","extensions"],["ethe","the"],["etherenet","Ethernet"],["ethernal","eternal"],["ethnocentricm","ethnocentrism"],["etiher","either"],["etroneous","erroneous"],["etroneously","erroneously"],["etsablishment","establishment"],["etsbalishment","establishment"],["etst","test"],["etsts","tests"],["etxt","text"],["euclidian","euclidean"],["euivalent","equivalent"],["euivalents","equivalents"],["euqivalent","equivalent"],["euqivalents","equivalents"],["euristic","heuristic"],["euristics","heuristics"],["Europian","European"],["Europians","Europeans"],["Eurpean","European"],["Eurpoean","European"],["evalation","evaluation"],["evalite","evaluate"],["evalited","evaluated"],["evalites","evaluates"],["evaluataion","evaluation"],["evaluataions","evaluations"],["evalueate","evaluate"],["evalueated","evaluated"],["evaluete","evaluate"],["evalueted","evaluated"],["evalulates","evaluates"],["evalutae","evaluate"],["evalutaed","evaluated"],["evalutaeing","evaluating"],["evalutaes","evaluates"],["evalutaing","evaluating"],["evalutaion","evaluation"],["evalutaions","evaluations"],["evalutaor","evaluator"],["evalutate","evaluate"],["evalutated","evaluated"],["evalutates","evaluates"],["evalutating","evaluating"],["evalutation","evaluation"],["evalutations","evaluations"],["evalute","evaluate"],["evaluted","evaluated"],["evalutes","evaluates"],["evaluting","evaluating"],["evalutions","evaluations"],["evalutive","evaluative"],["evalutor","evaluator"],["evalutors","evaluators"],["evaulate","evaluate"],["evaulated","evaluated"],["evaulates","evaluates"],["evaulating","evaluating"],["evaulation","evaluation"],["evaulator","evaluator"],["evaulted","evaluated"],["evauluate","evaluate"],["evauluated","evaluated"],["evauluates","evaluates"],["evauluation","evaluation"],["eveluate","evaluate"],["eveluated","evaluated"],["eveluates","evaluates"],["eveluating","evaluating"],["eveluation","evaluation"],["eveluations","evaluations"],["eveluator","evaluator"],["eveluators","evaluators"],["evenhtually","eventually"],["eventally","eventually"],["eventaully","eventually"],["eventhanders","event handlers"],["eventhough","even though"],["eventially","eventually"],["eventuall","eventually"],["eventualy","eventually"],["evenually","eventually"],["eveolution","evolution"],["eveolutionary","evolutionary"],["eveolve","evolve"],["eveolved","evolved"],["eveolves","evolves"],["eveolving","evolving"],["everage","average"],["everaged","averaged"],["everbody","everybody"],["everithing","everything"],["everone","everyone"],["everthing","everything"],["evertyhign","everything"],["evertyhing","everything"],["evertything","everything"],["everwhere","everywhere"],["everyhing","everything"],["everyhting","everything"],["everythig","everything"],["everythign","everything"],["everythin","everything"],["everythings","everything"],["everytime","every time"],["everyting","everything"],["everytone","everyone"],["evey","every"],["eveyone","everyone"],["eveyr","every"],["evidentally","evidently"],["evironment","environment"],["evironments","environments"],["evition","eviction"],["evluate","evaluate"],["evluated","evaluated"],["evluates","evaluates"],["evluating","evaluating"],["evluation","evaluation"],["evluations","evaluations"],["evluative","evaluative"],["evluator","evaluator"],["evluators","evaluators"],["evnet","event"],["evnts","events"],["evoluate","evaluate"],["evoluated","evaluated"],["evoluates","evaluates"],["evoluation","evaluations"],["evovler","evolver"],["evovling","evolving"],["evrithing","everything"],["evry","every"],["evrythign","everything"],["evrything","everything"],["evrywhere","everywhere"],["evyrthing","everything"],["ewhwer","where"],["exaclty","exactly"],["exacly","exactly"],["exactely","exactly"],["exacty","exactly"],["exacutable","executable"],["exagerate","exaggerate"],["exagerated","exaggerated"],["exagerates","exaggerates"],["exagerating","exaggerating"],["exagerrate","exaggerate"],["exagerrated","exaggerated"],["exagerrates","exaggerates"],["exagerrating","exaggerating"],["exameple","example"],["exameples","examples"],["examied","examined"],["examinated","examined"],["examing","examining"],["examinining","examining"],["examle","example"],["examles","examples"],["examlpe","example"],["examlpes","examples"],["examnple","example"],["examnples","examples"],["exampel","example"],["exampeles","examples"],["exampels","examples"],["examplees","examples"],["examplifies","exemplifies"],["exampple","example"],["exampples","examples"],["exampt","exempt"],["exand","expand"],["exansive","expansive"],["exapansion","expansion"],["exapend","expand"],["exaplain","explain"],["exaplaination","explanation"],["exaplained","explained"],["exaplaining","explaining"],["exaplains","explains"],["exaplanation","explanation"],["exaplanations","explanations"],["exaple","example"],["exaples","examples"],["exapmle","example"],["exapmles","examples"],["exapnsion","expansion"],["exat","exact"],["exatcly","exactly"],["exatctly","exactly"],["exatly","exactly"],["exausted","exhausted"],["excact","exact"],["excactly","exactly"],["excahcnge","exchange"],["excahnge","exchange"],["excahnges","exchanges"],["excange","exchange"],["excape","escape"],["excaped","escaped"],["excapes","escapes"],["excat","exact"],["excating","exacting"],["excatly","exactly"],["exccute","execute"],["excecise","exercise"],["excecises","exercises"],["excecpt","except"],["excecption","exception"],["excecptional","exceptional"],["excecptions","exceptions"],["excectable","executable"],["excectables","executables"],["excecte","execute"],["excectedly","expectedly"],["excectes","executes"],["excecting","executing"],["excectional","exceptional"],["excective","executive"],["excectives","executives"],["excector","executor"],["excectors","executors"],["excects","expects"],["excecutable","executable"],["excecutables","executables"],["excecute","execute"],["excecuted","executed"],["excecutes","executes"],["excecuting","executing"],["excecution","execution"],["excecutions","executions"],["excecutive","executive"],["excecutives","executives"],["excecutor","executor"],["excecutors","executors"],["excecuts","executes"],["exced","exceed"],["excedded","exceeded"],["excedding","exceeding"],["excede","exceed"],["exceded","exceeded"],["excedeed","exceeded"],["excedes","exceeds"],["exceding","exceeding"],["exceeed","exceed"],["exceirpt","excerpt"],["exceirpts","excerpts"],["excelent","excellent"],["excell","excel"],["excellance","excellence"],["excellant","excellent"],["excells","excels"],["excempt","exempt"],["excempted","exempted"],["excemption","exemption"],["excemptions","exemptions"],["excempts","exempts"],["excentric","eccentric"],["excentricity","eccentricity"],["excentuating","accentuating"],["exceopt","exempt"],["exceopted","exempted"],["exceopts","exempts"],["exceotion","exemption"],["exceotions","exemptions"],["excepetion","exception"],["excepion","exception"],["excepional","exceptional"],["excepionally","exceptionally"],["excepions","exceptions"],["exceprt","excerpt"],["exceprts","excerpts"],["exceptation","expectation"],["exceptionnal","exceptional"],["exceptionss","exceptions"],["exceptionts","exceptions"],["excercise","exercise"],["excercised","exercised"],["excerciser","exerciser"],["excercises","exercises"],["excercising","exercising"],["excerise","exercise"],["exces","excess"],["excesed","exceeded"],["excesive","excessive"],["excesively","excessively"],["excesss","excess"],["excesv","excessive"],["excesvly","excessively"],["excetion","exception"],["excetional","exceptional"],["excetions","exceptions"],["excetpion","exception"],["excetpional","exceptional"],["excetpions","exceptions"],["excetption","exception"],["excetptional","exceptional"],["excetptions","exceptions"],["excetra","etcetera"],["excetutable","executable"],["excetutables","executables"],["excetute","execute"],["excetuted","executed"],["excetutes","executes"],["excetuting","executing"],["excetution","execution"],["excetutions","executions"],["excetutive","executive"],["excetutives","executives"],["excetutor","executor"],["excetutors","executors"],["exceuctable","executable"],["exceuctables","executables"],["exceucte","execute"],["exceucted","executed"],["exceuctes","executes"],["exceucting","executing"],["exceuction","execution"],["exceuctions","executions"],["exceuctive","executive"],["exceuctives","executives"],["exceuctor","executor"],["exceuctors","executors"],["exceutable","executable"],["exceutables","executables"],["exceute","execute"],["exceuted","executed"],["exceutes","executes"],["exceuting","executing"],["exceution","execution"],["exceutions","executions"],["exceutive","executive"],["exceutives","executives"],["exceutor","executor"],["exceutors","executors"],["excewption","exception"],["excewptional","exceptional"],["excewptions","exceptions"],["exchage","exchange"],["exchaged","exchanged"],["exchages","exchanges"],["exchaging","exchanging"],["exchagne","exchange"],["exchagned","exchanged"],["exchagnes","exchanges"],["exchagnge","exchange"],["exchagnged","exchanged"],["exchagnges","exchanges"],["exchagnging","exchanging"],["exchagning","exchanging"],["exchanage","exchange"],["exchanaged","exchanged"],["exchanages","exchanges"],["exchanaging","exchanging"],["exchance","exchange"],["exchanced","exchanged"],["exchances","exchanges"],["exchanche","exchange"],["exchanched","exchanged"],["exchanches","exchanges"],["exchanching","exchanging"],["exchancing","exchanging"],["exchane","exchange"],["exchaned","exchanged"],["exchanes","exchanges"],["exchangable","exchangeable"],["exchaning","exchanging"],["exchaust","exhaust"],["exchausted","exhausted"],["exchausting","exhausting"],["exchaustive","exhaustive"],["exchausts","exhausts"],["exchenge","exchange"],["exchenged","exchanged"],["exchenges","exchanges"],["exchenging","exchanging"],["exchnage","exchange"],["exchnaged","exchanged"],["exchnages","exchanges"],["exchnaging","exchanging"],["exchng","exchange"],["exchngd","exchanged"],["exchnge","exchange"],["exchnged","exchanged"],["exchnges","exchanges"],["exchnging","exchanging"],["exchngng","exchanging"],["exchngs","exchanges"],["exciation","excitation"],["excipt","except"],["exciption","exception"],["exciptions","exceptions"],["excist","exist"],["excisted","existed"],["excisting","existing"],["excitment","excitement"],["exclamantion","exclamation"],["excludde","exclude"],["excludind","excluding"],["exclusiv","exclusive"],["exclusivelly","exclusively"],["exclusivly","exclusively"],["exclusivs","exclusives"],["excluslvely","exclusively"],["exclusuive","exclusive"],["exclusuively","exclusively"],["exclusuives","exclusives"],["excpect","expect"],["excpected","expected"],["excpecting","expecting"],["excpects","expects"],["excpeption","exception"],["excpet","except"],["excpetion","exception"],["excpetional","exceptional"],["excpetions","exceptions"],["excplicit","explicit"],["excplicitly","explicitly"],["excplict","explicit"],["excplictly","explicitly"],["excract","extract"],["exctacted","extracted"],["exctract","extract"],["exctracted","extracted"],["exctracting","extracting"],["exctraction","extraction"],["exctractions","extractions"],["exctractor","extractor"],["exctractors","extractors"],["exctracts","extracts"],["exculde","exclude"],["exculding","excluding"],["exculsive","exclusive"],["exculsively","exclusively"],["exculsivly","exclusively"],["excutable","executable"],["excutables","executables"],["excute","execute"],["excuted","executed"],["excutes","executes"],["excuting","executing"],["excution","execution"],["execeed","exceed"],["execeeded","exceeded"],["execeeds","exceeds"],["exeception","exception"],["execeptions","exceptions"],["execising","exercising"],["execption","exception"],["execptions","exceptions"],["exectable","executable"],["exection","execution"],["exections","executions"],["exectuable","executable"],["exectuableness","executableness"],["exectuables","executables"],["exectued","executed"],["exectuion","execution"],["exectuions","executions"],["execture","execute"],["exectured","executed"],["exectures","executes"],["execturing","executing"],["exectute","execute"],["exectuted","executed"],["exectutes","executes"],["exectution","execution"],["exectutions","executions"],["execuable","executable"],["execuables","executables"],["execuatable","executable"],["execuatables","executables"],["execuatble","executable"],["execuatbles","executables"],["execuate","execute"],["execuated","executed"],["execuates","executes"],["execuation","execution"],["execuations","executions"],["execubale","executable"],["execubales","executables"],["execucte","execute"],["execucted","executed"],["execuctes","executes"],["execuction","execution"],["execuctions","executions"],["execuctor","executor"],["execuctors","executors"],["execude","execute"],["execuded","executed"],["execudes","executes"],["execue","execute"],["execued","executed"],["execues","executes"],["execuet","execute"],["execuetable","executable"],["execuetd","executed"],["execuete","execute"],["execueted","executed"],["execuetes","executes"],["execuets","executes"],["execuing","executing"],["execuion","execution"],["execuions","executions"],["execuitable","executable"],["execuitables","executables"],["execuite","execute"],["execuited","executed"],["execuites","executes"],["execuiting","executing"],["execuition","execution"],["execuitions","executions"],["execulatble","executable"],["execulatbles","executables"],["execultable","executable"],["execultables","executables"],["execulusive","exclusive"],["execune","execute"],["execuned","executed"],["execunes","executes"],["execunting","executing"],["execurable","executable"],["execurables","executables"],["execure","execute"],["execured","executed"],["execures","executes"],["execusion","execution"],["execusions","executions"],["execusive","exclusive"],["execustion","execution"],["execustions","executions"],["execut","execute"],["executabable","executable"],["executabables","executables"],["executabe","executable"],["executabel","executable"],["executabels","executables"],["executabes","executables"],["executablble","executable"],["executabnle","executable"],["executabnles","executables"],["executation","execution"],["executations","executions"],["executbale","executable"],["executbales","executables"],["executble","executable"],["executbles","executables"],["executd","executed"],["executding","executing"],["executeable","executable"],["executeables","executables"],["executible","executable"],["executign","executing"],["executng","executing"],["executre","execute"],["executred","executed"],["executres","executes"],["executs","executes"],["executting","executing"],["executtion","execution"],["executtions","executions"],["executuable","executable"],["executuables","executables"],["executuble","executable"],["executubles","executables"],["executue","execute"],["executued","executed"],["executues","executes"],["executuing","executing"],["executuion","execution"],["executuions","executions"],["executung","executing"],["executuon","execution"],["executuons","executions"],["executute","execute"],["execututed","executed"],["execututes","executes"],["executution","execution"],["execututions","executions"],["exeed","exceed"],["exeeding","exceeding"],["exeedingly","exceedingly"],["exeeds","exceeds"],["exelent","excellent"],["exellent","excellent"],["exempel","example"],["exempels","examples"],["exemple","example"],["exemples","examples"],["exended","extended"],["exension","extension"],["exensions","extensions"],["exent","extent"],["exentended","extended"],["exepct","expect"],["exepcted","expected"],["exepcts","expects"],["exepect","expect"],["exepectation","expectation"],["exepectations","expectations"],["exepected","expected"],["exepectedly","expectedly"],["exepecting","expecting"],["exepects","expects"],["exepriment","experiment"],["exeprimental","experimental"],["exeptional","exceptional"],["exeptions","exceptions"],["exeqution","execution"],["exerbate","exacerbate"],["exerbated","exacerbated"],["exerciese","exercise"],["exerciesed","exercised"],["exercieses","exercises"],["exerciesing","exercising"],["exercize","exercise"],["exerimental","experimental"],["exerpt","excerpt"],["exerpts","excerpts"],["exersize","exercise"],["exersizes","exercises"],["exerternal","external"],["exeucte","execute"],["exeucted","executed"],["exeuctes","executes"],["exeution","execution"],["exexutable","executable"],["exhalted","exalted"],["exhange","exchange"],["exhanged","exchanged"],["exhanges","exchanges"],["exhanging","exchanging"],["exhaused","exhausted"],["exhautivity","exhaustivity"],["exhcuast","exhaust"],["exhcuasted","exhausted"],["exhibtion","exhibition"],["exhist","exist"],["exhistance","existence"],["exhisted","existed"],["exhistence","existence"],["exhisting","existing"],["exhists","exists"],["exhostive","exhaustive"],["exhustiveness","exhaustiveness"],["exibition","exhibition"],["exibitions","exhibitions"],["exicting","exciting"],["exinct","extinct"],["exipration","expiration"],["exipre","expire"],["exipred","expired"],["exipres","expires"],["exising","existing"],["exisit","exist"],["exisited","existed"],["exisitent","existent"],["exisiting","existing"],["exisitng","existing"],["exisits","exists"],["existance","existence"],["existant","existent"],["existatus","exitstatus"],["existencd","existence"],["existend","existed"],["existense","existence"],["existin","existing"],["existince","existence"],["existng","existing"],["existsing","existing"],["existting","existing"],["existung","existing"],["existy","exist"],["existying","existing"],["exitance","existence"],["exitation","excitation"],["exitations","excitations"],["exitt","exit"],["exitted","exited"],["exitting","exiting"],["exitts","exits"],["exixst","exist"],["exixt","exist"],["exlamation","exclamation"],["exlcude","exclude"],["exlcuding","excluding"],["exlcusion","exclusion"],["exlcusions","exclusions"],["exlcusive","exclusive"],["exlicit","explicit"],["exlicite","explicit"],["exlicitely","explicitly"],["exlicitly","explicitly"],["exliled","exiled"],["exlpoit","exploit"],["exlpoited","exploited"],["exlpoits","exploits"],["exlusion","exclusion"],["exlusionary","exclusionary"],["exlusions","exclusions"],["exlusive","exclusive"],["exlusively","exclusively"],["exmaine","examine"],["exmained","examined"],["exmaines","examines"],["exmaple","example"],["exmaples","examples"],["exmple","example"],["exmport","export"],["exnternal","external"],["exnternalities","externalities"],["exnternality","externality"],["exnternally","externally"],["exntry","entry"],["exolicit","explicit"],["exolicitly","explicitly"],["exonorate","exonerate"],["exort","export"],["exoskelaton","exoskeleton"],["expalin","explain"],["expaning","expanding"],["expanion","expansion"],["expanions","expansions"],["expanshion","expansion"],["expanshions","expansions"],["expanssion","expansion"],["exparation","expiration"],["expasion","expansion"],["expatriot","expatriate"],["expception","exception"],["expcetation","expectation"],["expcetations","expectations"],["expceted","expected"],["expceting","expecting"],["expcets","expects"],["expct","expect"],["expcted","expected"],["expctedly","expectedly"],["expcting","expecting"],["expeced","expected"],["expeceted","expected"],["expecially","especially"],["expectaion","expectation"],["expectaions","expectations"],["expectatoins","expectations"],["expectatons","expectations"],["expectd","expected"],["expecte","expected"],["expectes","expects"],["expection","exception"],["expections","exceptions"],["expeditonary","expeditionary"],["expeect","expect"],["expeected","expected"],["expeectedly","expectedly"],["expeecting","expecting"],["expeects","expects"],["expeense","expense"],["expeenses","expenses"],["expeensive","expensive"],["expeience","experience"],["expeienced","experienced"],["expeiences","experiences"],["expeiencing","experiencing"],["expeiment","experiment"],["expeimental","experimental"],["expeimentally","experimentally"],["expeimentation","experimentation"],["expeimentations","experimentations"],["expeimented","experimented"],["expeimentel","experimental"],["expeimentelly","experimentally"],["expeimenter","experimenter"],["expeimenters","experimenters"],["expeimenting","experimenting"],["expeiments","experiments"],["expeiriment","experiment"],["expeirimental","experimental"],["expeirimentally","experimentally"],["expeirimentation","experimentation"],["expeirimentations","experimentations"],["expeirimented","experimented"],["expeirimentel","experimental"],["expeirimentelly","experimentally"],["expeirimenter","experimenter"],["expeirimenters","experimenters"],["expeirimenting","experimenting"],["expeiriments","experiments"],["expell","expel"],["expells","expels"],["expement","experiment"],["expemental","experimental"],["expementally","experimentally"],["expementation","experimentation"],["expementations","experimentations"],["expemented","experimented"],["expementel","experimental"],["expementelly","experimentally"],["expementer","experimenter"],["expementers","experimenters"],["expementing","experimenting"],["expements","experiments"],["expemplar","exemplar"],["expemplars","exemplars"],["expemplary","exemplary"],["expempt","exempt"],["expempted","exempted"],["expemt","exempt"],["expemted","exempted"],["expemtion","exemption"],["expemtions","exemptions"],["expemts","exempts"],["expence","expense"],["expences","expenses"],["expencive","expensive"],["expendeble","expendable"],["expepect","expect"],["expepected","expected"],["expepectedly","expectedly"],["expepecting","expecting"],["expepects","expects"],["expepted","expected"],["expeptedly","expectedly"],["expepting","expecting"],["expeption","exception"],["expeptions","exceptions"],["expepts","expects"],["experament","experiment"],["experamental","experimental"],["experamentally","experimentally"],["experamentation","experimentation"],["experamentations","experimentations"],["experamented","experimented"],["experamentel","experimental"],["experamentelly","experimentally"],["experamenter","experimenter"],["experamenters","experimenters"],["experamenting","experimenting"],["experaments","experiments"],["experation","expiration"],["expercting","expecting"],["expercts","expects"],["expereince","experience"],["expereinced","experienced"],["expereinces","experiences"],["expereincing","experiencing"],["experement","experiment"],["experemental","experimental"],["experementally","experimentally"],["experementation","experimentation"],["experementations","experimentations"],["experemented","experimented"],["experementel","experimental"],["experementelly","experimentally"],["experementer","experimenter"],["experementers","experimenters"],["experementing","experimenting"],["experements","experiments"],["experence","experience"],["experenced","experienced"],["experences","experiences"],["experencing","experiencing"],["experes","express"],["experesed","expressed"],["experesion","expression"],["experesions","expressions"],["experess","express"],["experessed","expressed"],["experesses","expresses"],["experessing","expressing"],["experession's","expression's"],["experession","expression"],["experessions","expressions"],["experiance","experience"],["experianced","experienced"],["experiances","experiences"],["experiancial","experiential"],["experiancing","experiencing"],["experiansial","experiential"],["experiantial","experiential"],["experiation","expiration"],["experiations","expirations"],["experice","experience"],["expericed","experienced"],["experices","experiences"],["expericing","experiencing"],["experiement","experiment"],["experienshial","experiential"],["experiensial","experiential"],["experies","expires"],["experim","experiment"],["experimal","experimental"],["experimally","experimentally"],["experimanent","experiment"],["experimanental","experimental"],["experimanentally","experimentally"],["experimanentation","experimentation"],["experimanentations","experimentations"],["experimanented","experimented"],["experimanentel","experimental"],["experimanentelly","experimentally"],["experimanenter","experimenter"],["experimanenters","experimenters"],["experimanenting","experimenting"],["experimanents","experiments"],["experimanet","experiment"],["experimanetal","experimental"],["experimanetally","experimentally"],["experimanetation","experimentation"],["experimanetations","experimentations"],["experimaneted","experimented"],["experimanetel","experimental"],["experimanetelly","experimentally"],["experimaneter","experimenter"],["experimaneters","experimenters"],["experimaneting","experimenting"],["experimanets","experiments"],["experimant","experiment"],["experimantal","experimental"],["experimantally","experimentally"],["experimantation","experimentation"],["experimantations","experimentations"],["experimanted","experimented"],["experimantel","experimental"],["experimantelly","experimentally"],["experimanter","experimenter"],["experimanters","experimenters"],["experimanting","experimenting"],["experimants","experiments"],["experimation","experimentation"],["experimations","experimentations"],["experimdnt","experiment"],["experimdntal","experimental"],["experimdntally","experimentally"],["experimdntation","experimentation"],["experimdntations","experimentations"],["experimdnted","experimented"],["experimdntel","experimental"],["experimdntelly","experimentally"],["experimdnter","experimenter"],["experimdnters","experimenters"],["experimdnting","experimenting"],["experimdnts","experiments"],["experimed","experimented"],["experimel","experimental"],["experimelly","experimentally"],["experimen","experiment"],["experimenal","experimental"],["experimenally","experimentally"],["experimenat","experiment"],["experimenatal","experimental"],["experimenatally","experimentally"],["experimenatation","experimentation"],["experimenatations","experimentations"],["experimenated","experimented"],["experimenatel","experimental"],["experimenatelly","experimentally"],["experimenater","experimenter"],["experimenaters","experimenters"],["experimenating","experimenting"],["experimenation","experimentation"],["experimenations","experimentations"],["experimenats","experiments"],["experimened","experimented"],["experimenel","experimental"],["experimenelly","experimentally"],["experimener","experimenter"],["experimeners","experimenters"],["experimening","experimenting"],["experimens","experiments"],["experimentaal","experimental"],["experimentaally","experimentally"],["experimentaat","experiment"],["experimentaatl","experimental"],["experimentaatlly","experimentally"],["experimentaats","experiments"],["experimentaed","experimented"],["experimentaer","experimenter"],["experimentaing","experimenting"],["experimentaion","experimentation"],["experimentaions","experimentations"],["experimentait","experiment"],["experimentaital","experimental"],["experimentaitally","experimentally"],["experimentaited","experimented"],["experimentaiter","experimenter"],["experimentaiters","experimenters"],["experimentaitng","experimenting"],["experimentaiton","experimentation"],["experimentaitons","experimentations"],["experimentat","experimental"],["experimentatal","experimental"],["experimentatally","experimentally"],["experimentatation","experimentation"],["experimentatations","experimentations"],["experimentated","experimented"],["experimentater","experimenter"],["experimentatl","experimental"],["experimentatlly","experimentally"],["experimentatly","experimentally"],["experimentel","experimental"],["experimentelly","experimentally"],["experimentt","experiment"],["experimentted","experimented"],["experimentter","experimenter"],["experimentters","experimenters"],["experimentts","experiments"],["experimer","experimenter"],["experimers","experimenters"],["experimet","experiment"],["experimetal","experimental"],["experimetally","experimentally"],["experimetation","experimentation"],["experimetations","experimentations"],["experimeted","experimented"],["experimetel","experimental"],["experimetelly","experimentally"],["experimetent","experiment"],["experimetental","experimental"],["experimetentally","experimentally"],["experimetentation","experimentation"],["experimetentations","experimentations"],["experimetented","experimented"],["experimetentel","experimental"],["experimetentelly","experimentally"],["experimetenter","experimenter"],["experimetenters","experimenters"],["experimetenting","experimenting"],["experimetents","experiments"],["experimeter","experimenter"],["experimeters","experimenters"],["experimeting","experimenting"],["experimetn","experiment"],["experimetnal","experimental"],["experimetnally","experimentally"],["experimetnation","experimentation"],["experimetnations","experimentations"],["experimetned","experimented"],["experimetnel","experimental"],["experimetnelly","experimentally"],["experimetner","experimenter"],["experimetners","experimenters"],["experimetning","experimenting"],["experimetns","experiments"],["experimets","experiments"],["experiming","experimenting"],["experimint","experiment"],["experimintal","experimental"],["experimintally","experimentally"],["experimintation","experimentation"],["experimintations","experimentations"],["experiminted","experimented"],["experimintel","experimental"],["experimintelly","experimentally"],["experiminter","experimenter"],["experiminters","experimenters"],["experiminting","experimenting"],["experimints","experiments"],["experimment","experiment"],["experimmental","experimental"],["experimmentally","experimentally"],["experimmentation","experimentation"],["experimmentations","experimentations"],["experimmented","experimented"],["experimmentel","experimental"],["experimmentelly","experimentally"],["experimmenter","experimenter"],["experimmenters","experimenters"],["experimmenting","experimenting"],["experimments","experiments"],["experimnet","experiment"],["experimnetal","experimental"],["experimnetally","experimentally"],["experimnetation","experimentation"],["experimnetations","experimentations"],["experimneted","experimented"],["experimnetel","experimental"],["experimnetelly","experimentally"],["experimneter","experimenter"],["experimneters","experimenters"],["experimneting","experimenting"],["experimnets","experiments"],["experimnt","experiment"],["experimntal","experimental"],["experimntally","experimentally"],["experimntation","experimentation"],["experimntations","experimentations"],["experimnted","experimented"],["experimntel","experimental"],["experimntelly","experimentally"],["experimnter","experimenter"],["experimnters","experimenters"],["experimnting","experimenting"],["experimnts","experiments"],["experims","experiments"],["experimten","experiment"],["experimtenal","experimental"],["experimtenally","experimentally"],["experimtenation","experimentation"],["experimtenations","experimentations"],["experimtened","experimented"],["experimtenel","experimental"],["experimtenelly","experimentally"],["experimtener","experimenter"],["experimteners","experimenters"],["experimtening","experimenting"],["experimtens","experiments"],["experinece","experience"],["experineced","experienced"],["experinement","experiment"],["experinemental","experimental"],["experinementally","experimentally"],["experinementation","experimentation"],["experinementations","experimentations"],["experinemented","experimented"],["experinementel","experimental"],["experinementelly","experimentally"],["experinementer","experimenter"],["experinementers","experimenters"],["experinementing","experimenting"],["experinements","experiments"],["experiration","expiration"],["experirations","expirations"],["expermenet","experiment"],["expermenetal","experimental"],["expermenetally","experimentally"],["expermenetation","experimentation"],["expermenetations","experimentations"],["expermeneted","experimented"],["expermenetel","experimental"],["expermenetelly","experimentally"],["expermeneter","experimenter"],["expermeneters","experimenters"],["expermeneting","experimenting"],["expermenets","experiments"],["experment","experiment"],["expermental","experimental"],["expermentally","experimentally"],["expermentation","experimentation"],["expermentations","experimentations"],["expermented","experimented"],["expermentel","experimental"],["expermentelly","experimentally"],["expermenter","experimenter"],["expermenters","experimenters"],["expermenting","experimenting"],["experments","experiments"],["expermient","experiment"],["expermiental","experimental"],["expermientally","experimentally"],["expermientation","experimentation"],["expermientations","experimentations"],["expermiented","experimented"],["expermientel","experimental"],["expermientelly","experimentally"],["expermienter","experimenter"],["expermienters","experimenters"],["expermienting","experimenting"],["expermients","experiments"],["expermiment","experiment"],["expermimental","experimental"],["expermimentally","experimentally"],["expermimentation","experimentation"],["expermimentations","experimentations"],["expermimented","experimented"],["expermimentel","experimental"],["expermimentelly","experimentally"],["expermimenter","experimenter"],["expermimenters","experimenters"],["expermimenting","experimenting"],["expermiments","experiments"],["experminent","experiment"],["experminental","experimental"],["experminentally","experimentally"],["experminentation","experimentation"],["experminentations","experimentations"],["experminents","experiments"],["expernal","external"],["expers","express"],["expersed","expressed"],["expersing","expressing"],["expersion","expression"],["expersions","expressions"],["expersive","expensive"],["experss","express"],["experssed","expressed"],["expersses","expresses"],["experssing","expressing"],["experssion","expression"],["experssions","expressions"],["expese","expense"],["expeses","expenses"],["expesive","expensive"],["expesnce","expense"],["expesnces","expenses"],["expesncive","expensive"],["expess","express"],["expessed","expressed"],["expesses","expresses"],["expessing","expressing"],["expession","expression"],["expessions","expressions"],["expest","expect"],["expested","expected"],["expestedly","expectedly"],["expesting","expecting"],["expetancy","expectancy"],["expetation","expectation"],["expetc","expect"],["expetced","expected"],["expetcedly","expectedly"],["expetcing","expecting"],["expetcs","expects"],["expetct","expect"],["expetcted","expected"],["expetctedly","expectedly"],["expetcting","expecting"],["expetcts","expects"],["expetect","expect"],["expetected","expected"],["expetectedly","expectedly"],["expetecting","expecting"],["expetectly","expectedly"],["expetects","expects"],["expeted","expected"],["expetedly","expectedly"],["expetiment","experiment"],["expetimental","experimental"],["expetimentally","experimentally"],["expetimentation","experimentation"],["expetimentations","experimentations"],["expetimented","experimented"],["expetimentel","experimental"],["expetimentelly","experimentally"],["expetimenter","experimenter"],["expetimenters","experimenters"],["expetimenting","experimenting"],["expetiments","experiments"],["expeting","expecting"],["expetion","exception"],["expetional","exceptional"],["expetions","exceptions"],["expets","expects"],["expewriment","experiment"],["expewrimental","experimental"],["expewrimentally","experimentally"],["expewrimentation","experimentation"],["expewrimentations","experimentations"],["expewrimented","experimented"],["expewrimentel","experimental"],["expewrimentelly","experimentally"],["expewrimenter","experimenter"],["expewrimenters","experimenters"],["expewrimenting","experimenting"],["expewriments","experiments"],["expexct","expect"],["expexcted","expected"],["expexctedly","expectedly"],["expexcting","expecting"],["expexcts","expects"],["expexnasion","expansion"],["expexnasions","expansions"],["expext","expect"],["expexted","expected"],["expextedly","expectedly"],["expexting","expecting"],["expexts","expects"],["expicit","explicit"],["expicitly","explicitly"],["expidition","expedition"],["expiditions","expeditions"],["expierence","experience"],["expierenced","experienced"],["expierences","experiences"],["expierience","experience"],["expieriences","experiences"],["expilicitely","explicitly"],["expireitme","expiretime"],["expiriation","expiration"],["expirie","expire"],["expiried","expired"],["expirience","experience"],["expiriences","experiences"],["expirimental","experimental"],["expiriy","expiry"],["explaination","explanation"],["explainations","explanations"],["explainatory","explanatory"],["explaind","explained"],["explanaiton","explanation"],["explanaitons","explanations"],["explane","explain"],["explaned","explained"],["explanes","explains"],["explaning","explaining"],["explantion","explanation"],["explantions","explanations"],["explcit","explicit"],["explecit","explicit"],["explecitely","explicitly"],["explecitily","explicitly"],["explecitly","explicitly"],["explenation","explanation"],["explicat","explicate"],["explicilt","explicit"],["explicilty","explicitly"],["explicitelly","explicitly"],["explicitely","explicitly"],["explicitily","explicitly"],["explicity","explicitly"],["explicityly","explicitly"],["explict","explicit"],["explictely","explicitly"],["explictily","explicitly"],["explictly","explicitly"],["explin","explain"],["explination","explanation"],["explinations","explanations"],["explined","explained"],["explins","explains"],["explit","explicit"],["explitictly","explicitly"],["explitit","explicit"],["explitly","explicitly"],["explizit","explicit"],["explizitly","explicitly"],["exploititive","exploitative"],["expoed","exposed"],["expoent","exponent"],["expoential","exponential"],["expoentially","exponentially"],["expoentntial","exponential"],["expoerted","exported"],["expoit","exploit"],["expoitation","exploitation"],["expoited","exploited"],["expoits","exploits"],["expolde","explode"],["exponant","exponent"],["exponantation","exponentiation"],["exponantially","exponentially"],["exponantialy","exponentially"],["exponants","exponents"],["exponentation","exponentiation"],["exponentialy","exponentially"],["exponentiel","exponential"],["exponentiell","exponential"],["exponetial","exponential"],["exporession","expression"],["expors","exports"],["expport","export"],["exppressed","expressed"],["expres","express"],["expresed","expressed"],["expresing","expressing"],["expresion","expression"],["expresions","expressions"],["expressable","expressible"],["expressino","expression"],["expresso","espresso"],["expresss","express"],["expresssion","expression"],["expresssions","expressions"],["exprience","experience"],["exprienced","experienced"],["expriences","experiences"],["exprimental","experimental"],["expropiated","expropriated"],["expropiation","expropriation"],["exprot","export"],["exproted","exported"],["exproting","exporting"],["exprots","exports"],["exprted","exported"],["exptected","expected"],["exra","extra"],["exract","extract"],["exressed","expressed"],["exression","expression"],["exsistence","existence"],["exsistent","existent"],["exsisting","existing"],["exsists","exists"],["exsiting","existing"],["exspect","expect"],["exspected","expected"],["exspectedly","expectedly"],["exspecting","expecting"],["exspects","expects"],["exspense","expense"],["exspensed","expensed"],["exspenses","expenses"],["exstacy","ecstasy"],["exsted","existed"],["exsting","existing"],["exstream","extreme"],["exsts","exists"],["extaction","extraction"],["extactly","exactly"],["extacy","ecstasy"],["extarnal","external"],["extarnally","externally"],["extatic","ecstatic"],["extedn","extend"],["extedned","extended"],["extedner","extender"],["extedners","extenders"],["extedns","extends"],["extemely","extremely"],["exten","extent"],["extenal","external"],["extendded","extended"],["extendet","extended"],["extendsions","extensions"],["extened","extended"],["exteneded","extended"],["extenisble","extensible"],["extennsions","extensions"],["extensability","extensibility"],["extensiable","extensible"],["extensibity","extensibility"],["extensilbe","extensible"],["extensiones","extensions"],["extensivly","extensively"],["extenson","extension"],["extenstion","extension"],["extenstions","extensions"],["extented","extended"],["extention","extension"],["extentions","extensions"],["extepect","expect"],["extepecting","expecting"],["extepects","expects"],["exteral","external"],["extered","exerted"],["extereme","extreme"],["exterme","extreme"],["extermest","extremest"],["extermist","extremist"],["extermists","extremists"],["extermly","extremely"],["extermporaneous","extemporaneous"],["externaly","externally"],["externel","external"],["externelly","externally"],["externels","externals"],["extesion","extension"],["extesions","extensions"],["extesnion","extension"],["extesnions","extensions"],["extimate","estimate"],["extimated","estimated"],["extimates","estimates"],["extimating","estimating"],["extimation","estimation"],["extimations","estimations"],["extimator","estimator"],["extimators","estimators"],["extist","exist"],["extit","exit"],["extnesion","extension"],["extrac","extract"],["extraced","extracted"],["extracing","extracting"],["extracter","extractor"],["extractet","extracted"],["extractino","extracting"],["extractins","extractions"],["extradiction","extradition"],["extraenous","extraneous"],["extranous","extraneous"],["extrapoliate","extrapolate"],["extrat","extract"],["extrated","extracted"],["extraterrestial","extraterrestrial"],["extraterrestials","extraterrestrials"],["extrates","extracts"],["extrating","extracting"],["extration","extraction"],["extrator","extractor"],["extrators","extractors"],["extrats","extracts"],["extravagent","extravagant"],["extraversion","extroversion"],["extravert","extrovert"],["extraverts","extroverts"],["extraxt","extract"],["extraxted","extracted"],["extraxting","extracting"],["extraxtors","extractors"],["extraxts","extracts"],["extream","extreme"],["extreamely","extremely"],["extreamily","extremely"],["extreamly","extremely"],["extreams","extremes"],["extreem","extreme"],["extreemly","extremely"],["extremaly","extremely"],["extremeley","extremely"],["extremelly","extremely"],["extrememe","extreme"],["extrememely","extremely"],["extrememly","extremely"],["extremeophile","extremophile"],["extremitys","extremities"],["extremly","extremely"],["extrenal","external"],["extrenally","externally"],["extrenaly","externally"],["extrime","extreme"],["extrimely","extremely"],["extrimly","extremely"],["extrmities","extremities"],["extrodinary","extraordinary"],["extrordinarily","extraordinarily"],["extrordinary","extraordinary"],["extry","entry"],["exturd","extrude"],["exturde","extrude"],["exturded","extruded"],["exturdes","extrudes"],["exturding","extruding"],["exuberent","exuberant"],["exucuted","executed"],["eyt","yet"],["ezdrop","eavesdrop"],["fability","facility"],["fabircate","fabricate"],["fabircated","fabricated"],["fabircates","fabricates"],["fabircatings","fabricating"],["fabircation","fabrication"],["facce","face"],["faciliate","facilitate"],["faciliated","facilitated"],["faciliates","facilitates"],["faciliating","facilitating"],["facilites","facilities"],["facilitiate","facilitate"],["facilitiates","facilitates"],["facilititate","facilitate"],["facillitate","facilitate"],["facillities","facilities"],["faciltate","facilitate"],["facilties","facilities"],["facinated","fascinated"],["facirity","facility"],["facist","fascist"],["facorite","favorite"],["facorites","favorites"],["facourite","favourite"],["facourites","favourites"],["facours","favours"],["factization","factorization"],["factorizaiton","factorization"],["factorys","factories"],["fadind","fading"],["faeture","feature"],["faetures","features"],["Fahrenheight","Fahrenheit"],["faield","failed"],["faild","failed"],["failded","failed"],["faile","failed"],["failer","failure"],["failes","fails"],["failicies","facilities"],["failicy","facility"],["failied","failed"],["failiure","failure"],["failiures","failures"],["failiver","failover"],["faill","fail"],["failled","failed"],["faillure","failure"],["failng","failing"],["failre","failure"],["failrue","failure"],["failture","failure"],["failue","failure"],["failuer","failure"],["failues","failures"],["failured","failed"],["faireness","fairness"],["fairoh","pharaoh"],["faiway","fairway"],["faiways","fairways"],["faktor","factor"],["faktored","factored"],["faktoring","factoring"],["faktors","factors"],["falg","flag"],["falgs","flags"],["falied","failed"],["faliure","failure"],["faliures","failures"],["fallabck","fallback"],["fallbck","fallback"],["fallhrough","fallthrough"],["fallthruogh","fallthrough"],["falltrough","fallthrough"],["falshed","flashed"],["falshes","flashes"],["falshing","flashing"],["falsly","falsely"],["falt","fault"],["falure","failure"],["familar","familiar"],["familes","families"],["familiies","families"],["familiy","family"],["familliar","familiar"],["familly","family"],["famlilies","families"],["famlily","family"],["famoust","famous"],["fanatism","fanaticism"],["fancyness","fanciness"],["Farenheight","Fahrenheit"],["Farenheit","Fahrenheit"],["faries","fairies"],["farmework","framework"],["fasade","facade"],["fasion","fashion"],["fasle","false"],["fassade","facade"],["fassinate","fascinate"],["fasterner","fastener"],["fasterners","fasteners"],["fastner","fastener"],["fastners","fasteners"],["fastr","faster"],["fatc","fact"],["fater","faster"],["fatig","fatigue"],["fatser","faster"],["fature","feature"],["faught","fought"],["fauilure","failure"],["fauilures","failures"],["fauture","feature"],["fautured","featured"],["fautures","features"],["fauturing","featuring"],["favoutrable","favourable"],["favuourites","favourites"],["faymus","famous"],["fcound","found"],["feasabile","feasible"],["feasability","feasibility"],["feasable","feasible"],["featchd","fetched"],["featched","fetched"],["featching","fetching"],["featchs","fetches"],["featchss","fetches"],["featchure","feature"],["featchured","featured"],["featchures","features"],["featchuring","featuring"],["featre","feature"],["featue","feature"],["featued","featured"],["featues","features"],["featur","feature"],["featurs","features"],["feautre","feature"],["feauture","feature"],["feautures","features"],["febbruary","February"],["febewary","February"],["februar","February"],["Febuary","February"],["Feburary","February"],["fecthing","fetching"],["fedality","fidelity"],["fedreally","federally"],["feeback","feedback"],["feeded","fed"],["feek","feel"],["feeks","feels"],["feetur","feature"],["feeture","feature"],["feild","field"],["feld","field"],["felisatus","felicitous"],["femminist","feminist"],["fempto","femto"],["feonsay","fianc\xE9e"],["fequency","frequency"],["feromone","pheromone"],["fertil","fertile"],["fertily","fertility"],["fetaure","feature"],["fetaures","features"],["fetchs","fetches"],["feture","feature"],["fetures","features"],["fewsha","fuchsia"],["fezent","pheasant"],["fhurter","further"],["fials","fails"],["fianite","finite"],["fianlly","finally"],["fibonaacci","Fibonacci"],["ficticious","fictitious"],["fictious","fictitious"],["fidality","fidelity"],["fiddley","fiddly"],["fidn","find"],["fied","field"],["fiedl","field"],["fiedled","fielded"],["fiedls","fields"],["fieid","field"],["fieldlst","fieldlist"],["fieled","field"],["fielesystem","filesystem"],["fielesystems","filesystems"],["fielname","filename"],["fielneame","filename"],["fiercly","fiercely"],["fightings","fighting"],["figurestyle","figurestyles"],["filal","final"],["fileand","file and"],["fileds","fields"],["fileld","field"],["filelds","fields"],["filenae","filename"],["filese","files"],["fileshystem","filesystem"],["fileshystems","filesystems"],["filesnames","filenames"],["filess","files"],["filesstem","filesystem"],["filessytem","filesystem"],["filessytems","filesystems"],["fileststem","filesystem"],["filesysems","filesystems"],["filesysthem","filesystem"],["filesysthems","filesystems"],["filesystmes","filesystems"],["filesystyem","filesystem"],["filesystyems","filesystems"],["filesytem","filesystem"],["filesytems","filesystems"],["filesytsem","filesystem"],["fileter","filter"],["filetest","file test"],["filetests","file tests"],["fileystem","filesystem"],["fileystems","filesystems"],["filiament","filament"],["fillay","fillet"],["fillement","filament"],["fillowing","following"],["fillung","filling"],["filnal","final"],["filname","filename"],["filp","flip"],["filpped","flipped"],["filpping","flipping"],["filps","flips"],["filse","files"],["filsystem","filesystem"],["filsystems","filesystems"],["filterd","filtered"],["filterig","filtering"],["filterin","filtering"],["filterring","filtering"],["filtersing","filtering"],["filterss","filters"],["filtype","filetype"],["filtypes","filetypes"],["fimilies","families"],["fimrware","firmware"],["fimware","firmware"],["finacial","financial"],["finailse","finalise"],["finailze","finalize"],["finallly","finally"],["finanace","finance"],["finanaced","financed"],["finanaces","finances"],["finanacially","financially"],["finanacier","financier"],["financialy","financially"],["finanize","finalize"],["finanlize","finalize"],["fincally","finally"],["finctionalities","functionalities"],["finctionality","functionality"],["finde","find"],["findn","find"],["findout","find out"],["finelly","finally"],["finess","finesse"],["fingeprint","fingerprint"],["finialization","finalization"],["finializing","finalizing"],["finilizes","finalizes"],["finisched","finished"],["finised","finished"],["finishied","finished"],["finishs","finishes"],["finitel","finite"],["finness","finesse"],["finnished","finished"],["finshed","finished"],["finshing","finishing"],["finsih","finish"],["finsihed","finished"],["finsihes","finishes"],["finsihing","finishing"],["finsished","finished"],["finxed","fixed"],["finxing","fixing"],["fiorget","forget"],["firday","Friday"],["firends","friends"],["firey","fiery"],["firmare","firmware"],["firmaware","firmware"],["firmawre","firmware"],["firmeare","firmware"],["firmeware","firmware"],["firmnware","firmware"],["firmwart","firmware"],["firmwear","firmware"],["firmwqre","firmware"],["firmwre","firmware"],["firmwware","firmware"],["firsr","first"],["firsth","first"],["firware","firmware"],["firwmare","firmware"],["fisionable","fissionable"],["fisisist","physicist"],["fisist","physicist"],["fisrt","first"],["fitering","filtering"],["fitler","filter"],["fitlers","filters"],["fivety","fifty"],["fixel","pixel"],["fixels","pixels"],["fixeme","fixme"],["fixwd","fixed"],["fizeek","physique"],["flacor","flavor"],["flacored","flavored"],["flacoring","flavoring"],["flacorings","flavorings"],["flacors","flavors"],["flacour","flavour"],["flacoured","flavoured"],["flacouring","flavouring"],["flacourings","flavourings"],["flacours","flavours"],["flaged","flagged"],["flages","flags"],["flagg","flag"],["flahsed","flashed"],["flahses","flashes"],["flahsing","flashing"],["flakyness","flakiness"],["flamable","flammable"],["flaot","float"],["flaoting","floating"],["flashflame","flashframe"],["flashig","flashing"],["flasing","flashing"],["flate","flat"],["flatened","flattened"],["flattend","flattened"],["flattenning","flattening"],["flawess","flawless"],["fle","file"],["flem","phlegm"],["Flemmish","Flemish"],["flewant","fluent"],["flexability","flexibility"],["flexable","flexible"],["flexibel","flexible"],["flexibele","flexible"],["flexibilty","flexibility"],["flext","flex"],["flie","file"],["fliter","filter"],["flitered","filtered"],["flitering","filtering"],["fliters","filters"],["floading-add","floating-add"],["floatation","flotation"],["floride","fluoride"],["floting","floating"],["flouride","fluoride"],["flourine","fluorine"],["flourishment","flourishing"],["flter","filter"],["fluctuand","fluctuant"],["flud","flood"],["fluorish","flourish"],["fluoroscent","fluorescent"],["fluroescent","fluorescent"],["flushs","flushes"],["flusing","flushing"],["focu","focus"],["focued","focused"],["focument","document"],["focuse","focus"],["focusf","focus"],["focuss","focus"],["focussed","focused"],["focusses","focuses"],["fof","for"],["foget","forget"],["fogot","forgot"],["fogotten","forgotten"],["fointers","pointers"],["foler","folder"],["folers","folders"],["folfer","folder"],["folfers","folders"],["folled","followed"],["foller","follower"],["follers","followers"],["follew","follow"],["follewed","followed"],["follewer","follower"],["follewers","followers"],["follewin","following"],["follewind","following"],["follewing","following"],["follewinwg","following"],["follewiong","following"],["follewiwng","following"],["follewong","following"],["follews","follows"],["follfow","follow"],["follfowed","followed"],["follfower","follower"],["follfowers","followers"],["follfowin","following"],["follfowind","following"],["follfowing","following"],["follfowinwg","following"],["follfowiong","following"],["follfowiwng","following"],["follfowong","following"],["follfows","follows"],["follin","following"],["follind","following"],["follinwg","following"],["folliong","following"],["folliw","follow"],["folliwed","followed"],["folliwer","follower"],["folliwers","followers"],["folliwin","following"],["folliwind","following"],["folliwing","following"],["folliwinwg","following"],["folliwiong","following"],["folliwiwng","following"],["folliwng","following"],["folliwong","following"],["folliws","follows"],["folllow","follow"],["folllowed","followed"],["folllower","follower"],["folllowers","followers"],["folllowin","following"],["folllowind","following"],["folllowing","following"],["folllowinwg","following"],["folllowiong","following"],["folllowiwng","following"],["folllowong","following"],["follod","followed"],["folloeing","following"],["folloing","following"],["folloiwng","following"],["follolwing","following"],["follong","following"],["follos","follows"],["followes","follows"],["followig","following"],["followign","following"],["followin","following"],["followind","following"],["followint","following"],["followng","following"],["followwing","following"],["followwings","followings"],["folls","follows"],["follw","follow"],["follwed","followed"],["follwer","follower"],["follwers","followers"],["follwin","following"],["follwind","following"],["follwing","following"],["follwinwg","following"],["follwiong","following"],["follwiwng","following"],["follwo","follow"],["follwoe","follow"],["follwoed","followed"],["follwoeed","followed"],["follwoeer","follower"],["follwoeers","followers"],["follwoein","following"],["follwoeind","following"],["follwoeing","following"],["follwoeinwg","following"],["follwoeiong","following"],["follwoeiwng","following"],["follwoeong","following"],["follwoer","follower"],["follwoers","followers"],["follwoes","follows"],["follwoin","following"],["follwoind","following"],["follwoing","following"],["follwoinwg","following"],["follwoiong","following"],["follwoiwng","following"],["follwong","following"],["follwoong","following"],["follwos","follows"],["follwow","follow"],["follwowed","followed"],["follwower","follower"],["follwowers","followers"],["follwowin","following"],["follwowind","following"],["follwowing","following"],["follwowinwg","following"],["follwowiong","following"],["follwowiwng","following"],["follwowong","following"],["follwows","follows"],["follws","follows"],["follww","follow"],["follwwed","followed"],["follwwer","follower"],["follwwers","followers"],["follwwin","following"],["follwwind","following"],["follwwing","following"],["follwwinwg","following"],["follwwiong","following"],["follwwiwng","following"],["follwwong","following"],["follwws","follows"],["foloow","follow"],["foloowed","followed"],["foloower","follower"],["foloowers","followers"],["foloowin","following"],["foloowind","following"],["foloowing","following"],["foloowinwg","following"],["foloowiong","following"],["foloowiwng","following"],["foloowong","following"],["foloows","follows"],["folow","follow"],["folowed","followed"],["folower","follower"],["folowers","followers"],["folowin","following"],["folowind","following"],["folowing","following"],["folowinwg","following"],["folowiong","following"],["folowiwng","following"],["folowong","following"],["folows","follows"],["foloww","follow"],["folowwed","followed"],["folowwer","follower"],["folowwers","followers"],["folowwin","following"],["folowwind","following"],["folowwing","following"],["folowwinwg","following"],["folowwiong","following"],["folowwiwng","following"],["folowwong","following"],["folowws","follows"],["folse","false"],["folwo","follow"],["folwoed","followed"],["folwoer","follower"],["folwoers","followers"],["folwoin","following"],["folwoind","following"],["folwoing","following"],["folwoinwg","following"],["folwoiong","following"],["folwoiwng","following"],["folwoong","following"],["folwos","follows"],["folx","folks"],["fom","from"],["fomat","format"],["fomated","formatted"],["fomater","formatter"],["fomates","formats"],["fomating","formatting"],["fomats","formats"],["fomatted","formatted"],["fomatter","formatter"],["fomatting","formatting"],["fomed","formed"],["fomrat","format"],["fomrated","formatted"],["fomrater","formatter"],["fomrating","formatting"],["fomrats","formats"],["fomratted","formatted"],["fomratter","formatter"],["fomratting","formatting"],["fomula","formula"],["fomulas","formula"],["fonction","function"],["fonctional","functional"],["fonctionalities","functionalities"],["fonctionality","functionality"],["fonctioning","functioning"],["fonctionnalies","functionalities"],["fonctionnalities","functionalities"],["fonctionnality","functionality"],["fonctions","functions"],["fonetic","phonetic"],["fontier","frontier"],["fontonfig","fontconfig"],["fontrier","frontier"],["fonud","found"],["foontnotes","footnotes"],["foootball","football"],["foorter","footer"],["footnoes","footnotes"],["footprinst","footprints"],["foound","found"],["foppy","floppy"],["foppys","floppies"],["foramatting","formatting"],["foramt","format"],["forat","format"],["forbad","forbade"],["forbbiden","forbidden"],["forbiden","forbidden"],["forbit","forbid"],["forbiten","forbidden"],["forbitten","forbidden"],["forcably","forcibly"],["forcast","forecast"],["forcasted","forecasted"],["forcaster","forecaster"],["forcasters","forecasters"],["forcasting","forecasting"],["forcasts","forecasts"],["forcot","forgot"],["forece","force"],["foreced","forced"],["foreces","forces"],["foregrond","foreground"],["foregronds","foregrounds"],["foreing","foreign"],["forementionned","aforementioned"],["forermly","formerly"],["forfiet","forfeit"],["forgeround","foreground"],["forgoten","forgotten"],["forground","foreground"],["forhead","forehead"],["foriegn","foreign"],["forld","fold"],["forlder","folder"],["forlders","folders"],["Formalhaut","Fomalhaut"],["formallize","formalize"],["formallized","formalized"],["formate","format"],["formated","formatted"],["formater","formatter"],["formaters","formatters"],["formates","formats"],["formath","format"],["formaths","formats"],["formating","formatting"],["formatteded","formatted"],["formattgin","formatting"],["formattind","formatting"],["formattings","formatting"],["formattring","formatting"],["formattted","formatted"],["formattting","formatting"],["formelly","formerly"],["formely","formerly"],["formend","formed"],["formidible","formidable"],["formmatted","formatted"],["formost","foremost"],["formt","format"],["formua","formula"],["formual","formula"],["formuale","formulae"],["formuals","formulas"],["fornat","format"],["fornated","formatted"],["fornater","formatter"],["fornats","formats"],["fornatted","formatted"],["fornatter","formatter"],["forot","forgot"],["forotten","forgotten"],["forr","for"],["forsaw","foresaw"],["forse","force"],["forseeable","foreseeable"],["fortan","fortran"],["fortat","format"],["forteen","fourteen"],["fortelling","foretelling"],["forthcominng","forthcoming"],["forthcomming","forthcoming"],["fortunaly","fortunately"],["fortunat","fortunate"],["fortunatelly","fortunately"],["fortunatly","fortunately"],["fortunetly","fortunately"],["forula","formula"],["forulas","formulas"],["forumla","formula"],["forumlas","formulas"],["forumula","formula"],["forumulas","formulas"],["forunate","fortunate"],["forunately","fortunately"],["forunner","forerunner"],["forutunate","fortunate"],["forutunately","fortunately"],["forver","forever"],["forwad","forward"],["forwaded","forwarded"],["forwading","forwarding"],["forwads","forwards"],["forwardig","forwarding"],["forwaring","forwarding"],["forwwarded","forwarded"],["foto","photo"],["fotograf","photograph"],["fotografic","photographic"],["fotografical","photographical"],["fotografy","photography"],["fotograph","photograph"],["fotography","photography"],["foucs","focus"],["foudn","found"],["foudning","founding"],["fougth","fought"],["foult","fault"],["foults","faults"],["foundaries","foundries"],["foundary","foundry"],["Foundland","Newfoundland"],["fourties","forties"],["fourty","forty"],["fouth","fourth"],["fouund","found"],["foward","forward"],["fowarded","forwarded"],["fowarding","forwarding"],["fowards","forwards"],["fprmat","format"],["fracional","fractional"],["fragement","fragment"],["fragementation","fragmentation"],["fragements","fragments"],["fragmant","fragment"],["fragmantation","fragmentation"],["fragmants","fragments"],["fragmenet","fragment"],["fragmenetd","fragmented"],["fragmeneted","fragmented"],["fragmeneting","fragmenting"],["fragmenets","fragments"],["fragmnet","fragment"],["frambuffer","framebuffer"],["framebufer","framebuffer"],["framei","frame"],["frament","fragment"],["framented","fragmented"],["framents","fragments"],["frametyp","frametype"],["framewoek","framework"],["framewoeks","frameworks"],["frameworkk","framework"],["framlayout","framelayout"],["framming","framing"],["framwework","framework"],["framwork","framework"],["framworks","frameworks"],["frane","frame"],["frankin","franklin"],["Fransiscan","Franciscan"],["Fransiscans","Franciscans"],["franzise","franchise"],["frecuencies","frequencies"],["frecuency","frequency"],["frecuent","frequent"],["frecuented","frequented"],["frecuently","frequently"],["frecuents","frequents"],["freecallrelpy","freecallreply"],["freedon","freedom"],["freedons","freedoms"],["freedum","freedom"],["freedums","freedoms"],["freee","free"],["freeed","freed"],["freezs","freezes"],["freind","friend"],["freindly","friendly"],["freqencies","frequencies"],["freqency","frequency"],["freqeuncies","frequencies"],["freqeuncy","frequency"],["freqiencies","frequencies"],["freqiency","frequency"],["freqquencies","frequencies"],["freqquency","frequency"],["frequancies","frequencies"],["frequancy","frequency"],["frequant","frequent"],["frequantly","frequently"],["frequences","frequencies"],["frequencey","frequency"],["frequenies","frequencies"],["frequentily","frequently"],["frequncies","frequencies"],["frequncy","frequency"],["freze","freeze"],["frezes","freezes"],["frgament","fragment"],["fricton","friction"],["fridey","Friday"],["frimware","firmware"],["frisday","Friday"],["frist","first"],["frition","friction"],["fritional","frictional"],["fritions","frictions"],["frmat","format"],["frmo","from"],["froce","force"],["frok","from"],["fromal","formal"],["fromat","format"],["fromated","formatted"],["fromates","formats"],["fromating","formatting"],["fromation","formation"],["fromats","formats"],["frome","from"],["fromed","formed"],["fromm","from"],["froms","forms"],["fromt","from"],["fromthe","from the"],["fronend","frontend"],["fronends","frontends"],["froniter","frontier"],["frontent","frontend"],["frontents","frontends"],["frop","drop"],["fropm","from"],["frops","drops"],["frowarded","forwarded"],["frowrad","forward"],["frowrading","forwarding"],["frowrads","forwards"],["frozee","frozen"],["fschk","fsck"],["FTBS","FTBFS"],["ftrunacate","ftruncate"],["fualt","fault"],["fualts","faults"],["fucntion","function"],["fucntional","functional"],["fucntionality","functionality"],["fucntioned","functioned"],["fucntioning","functioning"],["fucntions","functions"],["fuction","function"],["fuctionality","functionality"],["fuctiones","functioned"],["fuctioning","functioning"],["fuctionoid","functionoid"],["fuctions","functions"],["fuetherst","furthest"],["fuethest","furthest"],["fufill","fulfill"],["fufilled","fulfilled"],["fugure","figure"],["fugured","figured"],["fugures","figures"],["fule","file"],["fulfiled","fulfilled"],["fullfiled","fulfilled"],["fullfiling","fulfilling"],["fullfilled","fulfilled"],["fullfilling","fulfilling"],["fullfills","fulfills"],["fullly","fully"],["fulsh","flush"],["fuly","fully"],["fumction","function"],["fumctional","functional"],["fumctionally","functionally"],["fumctioned","functioned"],["fumctions","functions"],["funcation","function"],["funchtion","function"],["funchtional","functional"],["funchtioned","functioned"],["funchtioning","functioning"],["funchtionn","function"],["funchtionnal","functional"],["funchtionned","functioned"],["funchtionning","functioning"],["funchtionns","functions"],["funchtions","functions"],["funcion","function"],["funcions","functions"],["funciotn","function"],["funciotns","functions"],["funciton","function"],["funcitonal","functional"],["funcitonality","functionality"],["funcitonally","functionally"],["funcitoned","functioned"],["funcitoning","functioning"],["funcitons","functions"],["funcstions","functions"],["functiion","function"],["functiional","functional"],["functiionality","functionality"],["functiionally","functionally"],["functiioning","functioning"],["functiions","functions"],["functin","function"],["functinality","functionality"],["functino","function"],["functins","functions"],["functio","function"],["functionability","functionality"],["functionaility","functionality"],["functionailty","functionality"],["functionaily","functionality"],["functionallities","functionalities"],["functionallity","functionality"],["functionaltiy","functionality"],["functionalty","functionality"],["functionionalities","functionalities"],["functionionality","functionality"],["functionnal","functional"],["functionnalities","functionalities"],["functionnality","functionality"],["functionnaly","functionally"],["functionning","functioning"],["functionon","function"],["functionss","functions"],["functios","functions"],["functiosn","functions"],["functiton","function"],["functitonal","functional"],["functitonally","functionally"],["functitoned","functioned"],["functitons","functions"],["functon","function"],["functonal","functional"],["functonality","functionality"],["functoning","functioning"],["functons","functions"],["functtion","function"],["functtional","functional"],["functtionalities","functionalities"],["functtioned","functioned"],["functtioning","functioning"],["functtions","functions"],["funczion","function"],["fundametal","fundamental"],["fundametals","fundamentals"],["fundation","foundation"],["fundemantal","fundamental"],["fundemental","fundamental"],["fundementally","fundamentally"],["fundementals","fundamentals"],["funguses","fungi"],["funktion","function"],["funnnily","funnily"],["funtion","function"],["funtional","functional"],["funtionalities","functionalities"],["funtionality","functionality"],["funtionallity","functionality"],["funtionally","functionally"],["funtionalty","functionality"],["funtioning","functioning"],["funtions","functions"],["funvtion","function"],["funvtional","functional"],["funvtionalities","functionalities"],["funvtionality","functionality"],["funvtioned","functioned"],["funvtioning","functioning"],["funvtions","functions"],["funxtion","function"],["funxtional","functional"],["funxtionalities","functionalities"],["funxtionality","functionality"],["funxtioned","functioned"],["funxtioning","functioning"],["funxtions","functions"],["furether","further"],["furethermore","furthermore"],["furethest","furthest"],["furfill","fulfill"],["furher","further"],["furhermore","furthermore"],["furhest","furthest"],["furhter","further"],["furhtermore","furthermore"],["furhtest","furthest"],["furmalae","formulae"],["furmula","formula"],["furmulae","formulae"],["furnction","function"],["furnctional","functional"],["furnctions","functions"],["furneture","furniture"],["furser","further"],["fursermore","furthermore"],["furst","first"],["fursther","further"],["fursthermore","furthermore"],["fursthest","furthest"],["furter","further"],["furthemore","furthermore"],["furthermor","furthermore"],["furtherst","furthest"],["furthremore","furthermore"],["furthrest","furthest"],["furthur","further"],["furture","future"],["furure","future"],["furuther","further"],["furutre","future"],["furzzer","fuzzer"],["fuschia","fuchsia"],["fushed","flushed"],["fushing","flushing"],["futher","further"],["futherize","further"],["futhermore","furthermore"],["futrue","future"],["futrure","future"],["futture","future"],["fwe","few"],["fwirte","fwrite"],["fxed","fixed"],["fysical","physical"],["fysisist","physicist"],["fysisit","physicist"],["gabage","garbage"],["galatic","galactic"],["Galations","Galatians"],["gallaries","galleries"],["gallary","gallery"],["gallaxies","galaxies"],["gallleries","galleries"],["galllery","gallery"],["galllerys","galleries"],["galvinized","galvanized"],["Gameboy","Game Boy"],["ganbia","gambia"],["ganerate","generate"],["ganes","games"],["ganster","gangster"],["garabge","garbage"],["garantee","guarantee"],["garanteed","guaranteed"],["garanteeed","guaranteed"],["garantees","guarantees"],["garantied","guaranteed"],["garanty","guarantee"],["garbadge","garbage"],["garbage-dollected","garbage-collected"],["garbagge","garbage"],["garbarge","garbage"],["gard","guard"],["gardai","garda\xED"],["garentee","guarantee"],["garnison","garrison"],["garuantee","guarantee"],["garuanteed","guaranteed"],["garuantees","guarantees"],["garuantied","guaranteed"],["gatable","gateable"],["gateing","gating"],["gatherig","gathering"],["gatway","gateway"],["gauage","gauge"],["gauarana","guaran\xE1"],["gauarantee","guarantee"],["gauaranteed","guaranteed"],["gauarentee","guarantee"],["gauarenteed","guaranteed"],["gaurantee","guarantee"],["gauranteed","guaranteed"],["gauranteeing","guaranteeing"],["gaurantees","guarantees"],["gaurentee","guarantee"],["gaurenteed","guaranteed"],["gaurentees","guarantees"],["gaus'","Gauss'"],["gaus's","Gauss'"],["gausian","gaussian"],["geeneric","generic"],["geenrate","generate"],["geenrated","generated"],["geenrates","generates"],["geenration","generation"],["geenrational","generational"],["geeoteen","guillotine"],["geeral","general"],["gemetrical","geometrical"],["gemetry","geometry"],["gemoetry","geometry"],["gemometric","geometric"],["genarate","generate"],["genarated","generated"],["genarating","generating"],["genaration","generation"],["genearal","general"],["genearally","generally"],["genearted","generated"],["geneate","generate"],["geneated","generated"],["geneates","generates"],["geneating","generating"],["geneation","generation"],["geneological","genealogical"],["geneologies","genealogies"],["geneology","genealogy"],["generaates","generates"],["generaly","generally"],["generalyl","generally"],["generalyse","generalise"],["generater","generator"],["generaters","generators"],["generatig","generating"],["generatng","generating"],["generatting","generating"],["genereate","generate"],["genereated","generated"],["genereates","generates"],["genereating","generating"],["genered","generated"],["genereic","generic"],["generell","general"],["generelly","generally"],["genererate","generate"],["genererated","generated"],["genererater","generator"],["genererating","generating"],["genereration","generation"],["genereted","generated"],["generilise","generalise"],["generilised","generalised"],["generilises","generalises"],["generilize","generalize"],["generilized","generalized"],["generilizes","generalizes"],["generiously","generously"],["generla","general"],["generlaizes","generalizes"],["generlas","generals"],["generted","generated"],["generting","generating"],["genertion","generation"],["genertor","generator"],["genertors","generators"],["genialia","genitalia"],["genral","general"],["genralisation","generalisation"],["genralisations","generalisations"],["genralise","generalise"],["genralised","generalised"],["genralises","generalises"],["genralization","generalization"],["genralizations","generalizations"],["genralize","generalize"],["genralized","generalized"],["genralizes","generalizes"],["genrally","generally"],["genrals","generals"],["genrate","generate"],["genrated","generated"],["genrates","generates"],["genratet","generated"],["genrating","generating"],["genration","generation"],["genrations","generations"],["genrator","generator"],["genrators","generators"],["genreate","generate"],["genreated","generated"],["genreates","generates"],["genreating","generating"],["genreic","generic"],["genric","generic"],["genrics","generics"],["gental","gentle"],["genuin","genuine"],["geocentic","geocentric"],["geoemtries","geometries"],["geoemtry","geometry"],["geogcountry","geocountry"],["geographich","geographic"],["geographicial","geographical"],["geoio","geoip"],["geomertic","geometric"],["geomerties","geometries"],["geomerty","geometry"],["geomery","geometry"],["geometites","geometries"],["geometrician","geometer"],["geometricians","geometers"],["geometrie","geometry"],["geometrys","geometries"],["geomety","geometry"],["geometyr","geometry"],["geomitrically","geometrically"],["geomoetric","geometric"],["geomoetrically","geometrically"],["geomoetry","geometry"],["geomtery","geometry"],["geomtries","geometries"],["geomtry","geometry"],["geomtrys","geometries"],["georeferncing","georeferencing"],["geraff","giraffe"],["geraphics","graphics"],["gerat","great"],["gereating","generating"],["gerenate","generate"],["gerenated","generated"],["gerenates","generates"],["gerenating","generating"],["gerenation","generation"],["gerenations","generations"],["gerenic","generic"],["gerenics","generics"],["gererate","generate"],["gererated","generated"],["gerilla","guerrilla"],["gerneral","general"],["gernerally","generally"],["gerneraly","generally"],["gernerate","generate"],["gernerated","generated"],["gernerates","generates"],["gernerating","generating"],["gerneration","generation"],["gernerator","generator"],["gernerators","generators"],["gerneric","generic"],["gernerics","generics"],["gess","guess"],["get's","gets"],["get;s","gets"],["getfastproperyvalue","getfastpropertyvalue"],["getimezone","gettimezone"],["geting","getting"],["getlael","getlabel"],["getoe","ghetto"],["getoject","getobject"],["gettetx","gettext"],["gettter","getter"],["gettters","getters"],["getttext","gettext"],["getttime","gettime"],["getttimeofday","gettimeofday"],["gettting","getting"],["ggogled","Googled"],["Ghandi","Gandhi"],["ghostcript","ghostscript"],["ghostscritp","ghostscript"],["ghraphic","graphic"],["gien","given"],["gigibit","gigabit"],["gilotine","guillotine"],["gilty","guilty"],["ginee","guinea"],["gingam","gingham"],["gioen","given"],["gir","git"],["giser","geyser"],["gisers","geysers"],["git-buildpackge","git-buildpackage"],["git-buildpackges","git-buildpackages"],["gitar","guitar"],["gitars","guitars"],["gitatributes","gitattributes"],["giveing","giving"],["givveing","giving"],["givven","given"],["givving","giving"],["glamourous","glamorous"],["glight","flight"],["gloab","globe"],["gloabal","global"],["gloabl","global"],["gloassaries","glossaries"],["gloassary","glossary"],["globablly","globally"],["globaly","globally"],["globbal","global"],["globel","global"],["glorfied","glorified"],["glpyh","glyph"],["glpyhs","glyphs"],["glyh","glyph"],["glyhs","glyphs"],["glyped","glyphed"],["glyphes","glyphs"],["glyping","glyphing"],["glyserin","glycerin"],["gnawwed","gnawed"],["gneral","general"],["gnerally","generally"],["gnerals","generals"],["gnerate","generate"],["gnerated","generated"],["gnerates","generates"],["gnerating","generating"],["gneration","generation"],["gnerations","generations"],["gneric","generic"],["gnorung","ignoring"],["gobal","global"],["gocde","gcode"],["godess","goddess"],["godesses","goddesses"],["Godounov","Godunov"],["goemetries","geometries"],["goess","goes"],["gogether","together"],["goign","going"],["goin","going"],["goind","going"],["golbal","global"],["golbally","globally"],["golbaly","globally"],["gonig","going"],["gool","ghoul"],["gord","gourd"],["gormay","gourmet"],["gorry","gory"],["gorup","group"],["goruped","grouped"],["goruping","grouping"],["gorups","groups"],["gost","ghost"],["Gothenberg","Gothenburg"],["Gottleib","Gottlieb"],["goup","group"],["gouped","grouped"],["goups","groups"],["gouvener","governor"],["govement","government"],["govenment","government"],["govenor","governor"],["govenrment","government"],["goverance","governance"],["goverment","government"],["govermental","governmental"],["govermnment","government"],["governer","governor"],["governmnet","government"],["govorment","government"],["govormental","governmental"],["govornment","government"],["grabage","garbage"],["grabed","grabbed"],["grabing","grabbing"],["gracefull","graceful"],["gracefuly","gracefully"],["gradiants","gradients"],["gradualy","gradually"],["graet","great"],["grafics","graphics"],["grafitti","graffiti"],["grahic","graphic"],["grahical","graphical"],["grahics","graphics"],["grahpic","graphic"],["grahpical","graphical"],["grahpics","graphics"],["gramar","grammar"],["gramatically","grammatically"],["grammartical","grammatical"],["grammaticaly","grammatically"],["grammer","grammar"],["grammers","grammars"],["granchildren","grandchildren"],["granilarity","granularity"],["granuality","granularity"],["granualtiry","granularity"],["granulatiry","granularity"],["grapgics","graphics"],["graphcis","graphics"],["graphis","graphics"],["grapic","graphic"],["grapical","graphical"],["grapics","graphics"],["grat","great"],["gratefull","grateful"],["gratuitious","gratuitous"],["grbber","grabber"],["greatful","grateful"],["greatfully","gratefully"],["greather","greater"],["greif","grief"],["grephic","graphic"],["grestest","greatest"],["greysacles","greyscales"],["gridles","griddles"],["grigorian","Gregorian"],["grobal","global"],["grobally","globally"],["grometry","geometry"],["grooup","group"],["groouped","grouped"],["groouping","grouping"],["grooups","groups"],["gropu","group"],["groubpy","groupby"],["groupd","grouped"],["groupping","grouping"],["groupt","grouped"],["grranted","granted"],["gruop","group"],["gruopd","grouped"],["gruops","groups"],["grup","group"],["gruped","grouped"],["gruping","grouping"],["grups","groups"],["grwo","grow"],["guage","gauge"],["guarante","guarantee"],["guaranted","guaranteed"],["guaranteey","guaranty"],["guaranteing","guaranteeing"],["guarantes","guarantees"],["guarantie","guarantee"],["guarbage","garbage"],["guareded","guarded"],["guareente","guarantee"],["guareented","guaranteed"],["guareentee","guarantee"],["guareenteed","guaranteed"],["guareenteeing","guaranteeing"],["guareentees","guarantees"],["guareenteing","guaranteeing"],["guareentes","guarantees"],["guareenty","guaranty"],["guarente","guarantee"],["guarented","guaranteed"],["guarentee","guarantee"],["guarenteed","guaranteed"],["guarenteede","guarantee"],["guarenteeded","guaranteed"],["guarenteedeing","guaranteeing"],["guarenteedes","guarantees"],["guarenteedy","guaranty"],["guarenteeing","guaranteeing"],["guarenteer","guarantee"],["guarenteerd","guaranteed"],["guarenteering","guaranteeing"],["guarenteers","guarantees"],["guarentees","guarantees"],["guarenteing","guaranteeing"],["guarentes","guarantees"],["guarentie","guarantee"],["guarentied","guaranteed"],["guarentieing","guaranteeing"],["guarenties","guarantees"],["guarenty","guaranty"],["guarentyd","guaranteed"],["guarentying","guarantee"],["guarentyinging","guaranteeing"],["guarentys","guarantees"],["guarging","guarding"],["guarnante","guarantee"],["guarnanted","guaranteed"],["guarnantee","guarantee"],["guarnanteed","guaranteed"],["guarnanteeing","guaranteeing"],["guarnantees","guarantees"],["guarnanteing","guaranteeing"],["guarnantes","guarantees"],["guarnanty","guaranty"],["guarnate","guarantee"],["guarnated","guaranteed"],["guarnatee","guarantee"],["guarnateed","guaranteed"],["guarnateee","guarantee"],["guarnateeed","guaranteed"],["guarnateeeing","guaranteeing"],["guarnateees","guarantees"],["guarnateeing","guaranteeing"],["guarnatees","guarantees"],["guarnateing","guaranteeing"],["guarnates","guarantees"],["guarnatey","guaranty"],["guarnaty","guaranty"],["guarnete","guarantee"],["guarneted","guaranteed"],["guarnetee","guarantee"],["guarneteed","guaranteed"],["guarneteeing","guaranteeing"],["guarnetees","guarantees"],["guarneteing","guaranteeing"],["guarnetes","guarantees"],["guarnety","guaranty"],["guarnte","guarantee"],["guarnted","guaranteed"],["guarntee","guarantee"],["guarnteed","guaranteed"],["guarnteeing","guaranteeing"],["guarntees","guarantees"],["guarnteing","guaranteeing"],["guarntes","guarantees"],["guarnty","guaranty"],["guarrante","guarantee"],["guarranted","guaranteed"],["guarrantee","guarantee"],["guarranteed","guaranteed"],["guarranteeing","guaranteeing"],["guarrantees","guarantees"],["guarranteing","guaranteeing"],["guarrantes","guarantees"],["guarrantie","guarantee"],["guarrantied","guaranteed"],["guarrantieing","guaranteeing"],["guarranties","guarantees"],["guarranty","guaranty"],["guarrantyd","guaranteed"],["guarrantying","guaranteeing"],["guarrantys","guarantees"],["guarrente","guarantee"],["guarrented","guaranteed"],["guarrentee","guarantee"],["guarrenteed","guaranteed"],["guarrenteeing","guaranteeing"],["guarrentees","guarantees"],["guarrenteing","guaranteeing"],["guarrentes","guarantees"],["guarrenty","guaranty"],["guaruante","guarantee"],["guaruanted","guaranteed"],["guaruantee","guarantee"],["guaruanteed","guaranteed"],["guaruanteeing","guaranteeing"],["guaruantees","guarantees"],["guaruanteing","guaranteeing"],["guaruantes","guarantees"],["guaruanty","guaranty"],["guarunte","guarantee"],["guarunted","guaranteed"],["guaruntee","guarantee"],["guarunteed","guaranteed"],["guarunteeing","guaranteeing"],["guaruntees","guarantees"],["guarunteing","guaranteeing"],["guaruntes","guarantees"],["guarunty","guaranty"],["guas'","Gauss'"],["guas's","Gauss'"],["guas","Gauss"],["guass'","Gauss'"],["guass","Gauss"],["guassian","Gaussian"],["Guatamala","Guatemala"],["Guatamalan","Guatemalan"],["gud","good"],["guerrila","guerrilla"],["guerrilas","guerrillas"],["gueswork","guesswork"],["guideded","guided"],["guidence","guidance"],["guidline","guideline"],["guidlines","guidelines"],["Guilia","Giulia"],["Guilio","Giulio"],["Guiness","Guinness"],["Guiseppe","Giuseppe"],["gunanine","guanine"],["gurantee","guarantee"],["guranteed","guaranteed"],["guranteeing","guaranteeing"],["gurantees","guarantees"],["gurrantee","guarantee"],["guttaral","guttural"],["gutteral","guttural"],["gylph","glyph"],["gziniflate","gzinflate"],["gziped","gzipped"],["haa","has"],["haave","have"],["habaeus","habeas"],["habbit","habit"],["habeus","habeas"],["hability","ability"],["Habsbourg","Habsburg"],["hace","have"],["hachish","hackish"],["hadling","handling"],["hadnler","handler"],["haeder","header"],["haemorrage","haemorrhage"],["halarious","hilarious"],["hald","held"],["halfs","halves"],["halp","help"],["halpoints","halfpoints"],["hammmer","hammer"],["hampster","hamster"],["handel","handle"],["handeler","handler"],["handeles","handles"],["handeling","handling"],["handels","handles"],["hander","handler"],["handfull","handful"],["handhake","handshake"],["handker","handler"],["handleer","handler"],["handleing","handling"],["handlig","handling"],["handlling","handling"],["handsake","handshake"],["handshacke","handshake"],["handshackes","handshakes"],["handshacking","handshaking"],["handshage","handshake"],["handshages","handshakes"],["handshaging","handshaking"],["handshak","handshake"],["handshakng","handshaking"],["handshakre","handshake"],["handshakres","handshakes"],["handshakring","handshaking"],["handshaks","handshakes"],["handshale","handshake"],["handshales","handshakes"],["handshaling","handshaking"],["handshare","handshake"],["handshares","handshakes"],["handsharing","handshaking"],["handshk","handshake"],["handshke","handshake"],["handshkes","handshakes"],["handshking","handshaking"],["handshkng","handshaking"],["handshks","handshakes"],["handskake","handshake"],["handwirting","handwriting"],["hanel","handle"],["hangig","hanging"],["hanlde","handle"],["hanlded","handled"],["hanlder","handler"],["hanlders","handlers"],["hanldes","handles"],["hanlding","handling"],["hanldle","handle"],["hanle","handle"],["hanled","handled"],["hanles","handles"],["hanling","handling"],["hanshake","handshake"],["hanshakes","handshakes"],["hansome","handsome"],["hapen","happen"],["hapend","happened"],["hapends","happens"],["hapened","happened"],["hapening","happening"],["hapenn","happen"],["hapenned","happened"],["hapenning","happening"],["hapenns","happens"],["hapens","happens"],["happaned","happened"],["happended","happened"],["happenned","happened"],["happenning","happening"],["happennings","happenings"],["happenns","happens"],["happilly","happily"],["happne","happen"],["happpen","happen"],["happpened","happened"],["happpening","happening"],["happpenings","happenings"],["happpens","happens"],["harased","harassed"],["harases","harasses"],["harasment","harassment"],["harasments","harassments"],["harassement","harassment"],["harcoded","hardcoded"],["harcoding","hardcoding"],["hard-wirted","hard-wired"],["hardare","hardware"],["hardocde","hardcode"],["hardward","hardware"],["hardwdare","hardware"],["hardwirted","hardwired"],["harge","charge"],["harras","harass"],["harrased","harassed"],["harrases","harasses"],["harrasing","harassing"],["harrasment","harassment"],["harrasments","harassments"],["harrass","harass"],["harrassed","harassed"],["harrasses","harassed"],["harrassing","harassing"],["harrassment","harassment"],["harrassments","harassments"],["harth","hearth"],["harware","hardware"],["harwdare","hardware"],["has'nt","hasn't"],["hases","hashes"],["hashi","hash"],["hashreference","hash reference"],["hashs","hashes"],["hashses","hashes"],["hask","hash"],["hasn;t","hasn't"],["hasnt'","hasn't"],["hasnt","hasn't"],["hass","hash"],["hastable","hashtable"],["hastables","hashtables"],["Hatian","Haitian"],["hauty","haughty"],["have'nt","haven't"],["haveing","having"],["haven;t","haven't"],["havent'","haven't"],["havent't","haven't"],["havent","haven't"],["havew","have"],["haviest","heaviest"],["havn't","haven't"],["havnt","haven't"],["hax","hex"],["haynus","heinous"],["hazzle","hassle"],["hda","had"],["headder","header"],["headders","headers"],["headerr","header"],["headerrs","headers"],["headle","handle"],["headong","heading"],["headquarer","headquarter"],["headquater","headquarter"],["headquatered","headquartered"],["headquaters","headquarters"],["heaer","header"],["healthercare","healthcare"],["heathy","healthy"],["hefer","heifer"],["Heidelburg","Heidelberg"],["heigest","highest"],["heigher","higher"],["heighest","highest"],["heighit","height"],["heighteen","eighteen"],["heigt","height"],["heigth","height"],["heirachies","hierarchies"],["heirachy","hierarchy"],["heirarchic","hierarchic"],["heirarchical","hierarchical"],["heirarchically","hierarchically"],["heirarchies","hierarchies"],["heirarchy","hierarchy"],["heiroglyphics","hieroglyphics"],["helerps","helpers"],["hellow","hello"],["helment","helmet"],["heloer","helper"],["heloers","helpers"],["helpe","helper"],["helpfull","helpful"],["helpfuly","helpfully"],["helpped","helped"],["hemipshere","hemisphere"],["hemipsheres","hemispheres"],["hemishpere","hemisphere"],["hemishperes","hemispheres"],["hemmorhage","hemorrhage"],["hemorage","haemorrhage"],["henc","hence"],["henderence","hindrance"],["hendler","handler"],["hense","hence"],["hepler","helper"],["herarchy","hierarchy"],["herat","heart"],["heree","here"],["heridity","heredity"],["heroe","hero"],["heros","heroes"],["herselv","herself"],["hertiage","heritage"],["hertically","hectically"],["hertzs","hertz"],["hese","these"],["hesiate","hesitate"],["hesistant","hesitant"],["hesistate","hesitate"],["hesistated","hesitated"],["hesistates","hesitates"],["hesistating","hesitating"],["hesistation","hesitation"],["hesistations","hesitations"],["hestiate","hesitate"],["hetrogeneous","heterogeneous"],["heuristc","heuristic"],["heuristcs","heuristics"],["heursitics","heuristics"],["hevy","heavy"],["hexademical","hexadecimal"],["hexdecimal","hexadecimal"],["hexgaon","hexagon"],["hexgaonal","hexagonal"],["hexgaons","hexagons"],["hexidecimal","hexadecimal"],["hge","he"],["hiarchical","hierarchical"],["hiarchy","hierarchy"],["hiddden","hidden"],["hidded","hidden"],["hideen","hidden"],["hiden","hidden"],["hiearchies","hierarchies"],["hiearchy","hierarchy"],["hieght","height"],["hiena","hyena"],["hierachical","hierarchical"],["hierachies","hierarchies"],["hierachries","hierarchies"],["hierachry","hierarchy"],["hierachy","hierarchy"],["hierarachical","hierarchical"],["hierarachy","hierarchy"],["hierarchichal","hierarchical"],["hierarchichally","hierarchically"],["hierarchie","hierarchy"],["hierarcical","hierarchical"],["hierarcy","hierarchy"],["hierarhcical","hierarchical"],["hierarhcically","hierarchically"],["hierarhcies","hierarchies"],["hierarhcy","hierarchy"],["hierchy","hierarchy"],["hieroglph","hieroglyph"],["hieroglphs","hieroglyphs"],["hietus","hiatus"],["higeine","hygiene"],["higer","higher"],["higest","highest"],["high-affort","high-effort"],["highight","highlight"],["highighted","highlighted"],["highighter","highlighter"],["highighters","highlighters"],["highights","highlights"],["highjack","hijack"],["highligh","highlight"],["highlighed","highlighted"],["highligher","highlighter"],["highlighers","highlighters"],["highlighing","highlighting"],["highlighs","highlights"],["highlightin","highlighting"],["highlightning","highlighting"],["highligjt","highlight"],["highligjted","highlighted"],["highligjtes","highlights"],["highligjting","highlighting"],["highligjts","highlights"],["highligt","highlight"],["highligted","highlighted"],["highligth","highlight"],["highligting","highlighting"],["highligts","highlights"],["highter","higher"],["hightest","highest"],["hightlight","highlight"],["hightlighted","highlighted"],["hightlighting","highlighting"],["hightlights","highlights"],["hights","heights"],["higlight","highlight"],["higlighted","highlighted"],["higlighting","highlighting"],["higlights","highlights"],["higly","highly"],["higth","height"],["higway","highway"],["hijkack","hijack"],["hijkacked","hijacked"],["hijkacking","hijacking"],["hijkacks","hijacks"],["hilight","highlight"],["hilighted","highlighted"],["hilighting","highlighting"],["hilights","highlights"],["hillarious","hilarious"],["himselv","himself"],["hinderance","hindrance"],["hinderence","hindrance"],["hindrence","hindrance"],["hipopotamus","hippopotamus"],["hipotetical","hypothetical"],["hirachy","hierarchy"],["hirarchies","hierarchies"],["hirarchy","hierarchy"],["hirarcies","hierarchies"],["hirearchy","hierarchy"],["hirearcy","hierarchy"],["hismelf","himself"],["hisory","history"],["histgram","histogram"],["histocompatability","histocompatibility"],["historgram","histogram"],["historgrams","histograms"],["historicians","historians"],["historyan","historian"],["historyans","historians"],["historycal","historical"],["historycally","historically"],["historycaly","historically"],["histroian","historian"],["histroians","historians"],["histroic","historic"],["histroical","historical"],["histroically","historically"],["histroicaly","historically"],["histroies","histories"],["histroy","history"],["histry","history"],["hitogram","histogram"],["hitories","histories"],["hitory","history"],["hitsingles","hit singles"],["hiygeine","hygiene"],["hmdi","hdmi"],["hnalder","handler"],["hoeks","hoax"],["hoever","however"],["hokay","okay"],["holf","hold"],["holliday","holiday"],["hollowcost","holocaust"],["homapage","homepage"],["homegeneous","homogeneous"],["homestate","home state"],["homogeneize","homogenize"],["homogeneized","homogenized"],["homogenious","homogeneous"],["homogeniously","homogeneously"],["homogenity","homogeneity"],["homogenius","homogeneous"],["homogeniusly","homogeneously"],["homogenoues","homogeneous"],["homogenous","homogeneous"],["homogenously","homogeneously"],["homogenuous","homogeneous"],["honory","honorary"],["hoook","hook"],["hoooks","hooks"],["hootsba","chutzpah"],["hopefulle","hopefully"],["hopefullly","hopefully"],["hopefullt","hopefully"],["hopefullu","hopefully"],["hopefuly","hopefully"],["hopeing","hoping"],["hopful","hopeful"],["hopfully","hopefully"],["hopmepage","homepage"],["hopmepages","homepages"],["hoppefully","hopefully"],["hopyfully","hopefully"],["horicontal","horizontal"],["horicontally","horizontally"],["horinzontal","horizontal"],["horizntal","horizontal"],["horizonal","horizontal"],["horizonally","horizontally"],["horizontale","horizontal"],["horiztonal","horizontal"],["horiztonally","horizontally"],["horphan","orphan"],["horrable","horrible"],["horrifing","horrifying"],["horyzontally","horizontally"],["horziontal","horizontal"],["horziontally","horizontally"],["horzontal","horizontal"],["horzontally","horizontally"],["hosited","hoisted"],["hospitible","hospitable"],["hostanme","hostname"],["hostorical","historical"],["hostories","histories"],["hostory","history"],["hostspot","hotspot"],["hostspots","hotspots"],["hotizontal","horizontal"],["hotname","hostname"],["hounour","honour"],["houres","hours"],["housand","thousand"],["houskeeping","housekeeping"],["hovever","however"],["hovewer","however"],["howeever","however"],["howerver","however"],["howeverm","however"],["howewer","however"],["howver","however"],["hradware","hardware"],["hradwares","hardwares"],["hrlp","help"],["hrlped","helped"],["hrlper","helper"],["hrlpers","helpers"],["hrlping","helping"],["hrlps","helps"],["hrough","through"],["hsa","has"],["hsell","shell"],["hsi","his"],["hsitorians","historians"],["hsotname","hostname"],["hsould'nt","shouldn't"],["hsould","should"],["hsouldn't","shouldn't"],["hstory","history"],["htacccess","htaccess"],["hte","the"],["htey","they"],["htikn","think"],["hting","thing"],["htink","think"],["htis","this"],["htmp","html"],["htting","hitting"],["hueristic","heuristic"],["humber","number"],["huminoid","humanoid"],["humoural","humoral"],["humurous","humorous"],["hunderd","hundred"],["hundreths","hundredths"],["hundrets","hundreds"],["hunrgy","hungry"],["huricane","hurricane"],["huristic","heuristic"],["husban","husband"],["hvae","have"],["hvaing","having"],["hve","have"],["hwihc","which"],["hwile","while"],["hwole","whole"],["hybernate","hibernate"],["hydogen","hydrogen"],["hydrolic","hydraulic"],["hydrolics","hydraulics"],["hydropile","hydrophile"],["hydropilic","hydrophilic"],["hydropobe","hydrophobe"],["hydropobic","hydrophobic"],["hyerarchy","hierarchy"],["hyerlink","hyperlink"],["hygeine","hygiene"],["hygene","hygiene"],["hygenic","hygienic"],["hygine","hygiene"],["hyjack","hijack"],["hyjacking","hijacking"],["hypen","hyphen"],["hypenate","hyphenate"],["hypenated","hyphenated"],["hypenates","hyphenates"],["hypenating","hyphenating"],["hypenation","hyphenation"],["hypens","hyphens"],["hyperboly","hyperbole"],["Hyperldger","Hyperledger"],["hypervior","hypervisor"],["hypocracy","hypocrisy"],["hypocrasy","hypocrisy"],["hypocricy","hypocrisy"],["hypocrit","hypocrite"],["hypocrits","hypocrites"],["hyposeses","hypotheses"],["hyposesis","hypothesis"],["hypoteses","hypotheses"],["hypotesis","hypothesis"],["hypotethically","hypothetically"],["hypothenuse","hypotenuse"],["hypothenuses","hypotenuses"],["hypter","hyper"],["hyptothetical","hypothetical"],["hyptothetically","hypothetically"],["hypvervisor","hypervisor"],["hypvervisors","hypervisors"],["hypvisor","hypervisor"],["hypvisors","hypervisors"],["I'sd","I'd"],["i;ll","I'll"],["iamge","image"],["ibject","object"],["ibjects","objects"],["ibrary","library"],["icesickle","icicle"],["iclude","include"],["icluded","included"],["icludes","includes"],["icluding","including"],["iconclastic","iconoclastic"],["iconifie","iconify"],["icrease","increase"],["icreased","increased"],["icreases","increases"],["icreasing","increasing"],["icrement","increment"],["icrementally","incrementally"],["icremented","incremented"],["icrementing","incrementing"],["icrements","increments"],["idae","idea"],["idaeidae","idea"],["idaes","ideas"],["idealogies","ideologies"],["idealogy","ideology"],["idefinite","indefinite"],["idel","idle"],["idelogy","ideology"],["idemopotent","idempotent"],["idendified","identified"],["idendifier","identifier"],["idendifiers","identifiers"],["idenfied","identified"],["idenfifier","identifier"],["idenfifiers","identifiers"],["idenfitifer","identifier"],["idenfitifers","identifiers"],["idenfitify","identify"],["idenitfy","identify"],["idenitify","identify"],["identation","indentation"],["identcial","identical"],["identfied","identified"],["identfier","identifier"],["identfiers","identifiers"],["identiable","identifiable"],["idential","identical"],["identic","identical"],["identicial","identical"],["identidier","identifier"],["identies","identities"],["identifaction","identification"],["identifcation","identification"],["identifeir","identifier"],["identifeirs","identifiers"],["identifer","identifier"],["identifers","identifiers"],["identificable","identifiable"],["identifictaion","identification"],["identifieer","identifier"],["identifiler","identifier"],["identifilers","identifiers"],["identifing","identifying"],["identifiy","identify"],["identifyable","identifiable"],["identifyed","identified"],["identiviert","identifiers"],["identtation","indentation"],["identties","identities"],["identtifier","identifier"],["identty","identity"],["ideosyncracies","ideosyncrasies"],["ideosyncratic","idiosyncratic"],["idetifier","identifier"],["idetifiers","identifiers"],["idetifies","identifies"],["idicate","indicate"],["idicated","indicated"],["idicates","indicates"],["idicating","indicating"],["idices","indices"],["idiosyncracies","idiosyncrasies"],["idiosyncracy","idiosyncrasy"],["idividual","individual"],["idividually","individually"],["idividuals","individuals"],["idons","icons"],["iechart","piechart"],["ifself","itself"],["ifset","if set"],["ignest","ingest"],["ignested","ingested"],["ignesting","ingesting"],["ignests","ingests"],["ignnore","ignore"],["ignoded","ignored"],["ignonre","ignore"],["ignora","ignore"],["ignord","ignored"],["ignoreing","ignoring"],["ignorence","ignorance"],["ignorgable","ignorable"],["ignorgd","ignored"],["ignorge","ignore"],["ignorged","ignored"],["ignorgg","ignoring"],["ignorgig","ignoring"],["ignorging","ignoring"],["ignorgs","ignores"],["ignormable","ignorable"],["ignormd","ignored"],["ignorme","ignore"],["ignormed","ignored"],["ignormg","ignoring"],["ignormig","ignoring"],["ignorming","ignoring"],["ignorms","ignores"],["ignornable","ignorable"],["ignornd","ignored"],["ignorne","ignore"],["ignorned","ignored"],["ignorng","ignoring"],["ignornig","ignoring"],["ignorning","ignoring"],["ignorns","ignores"],["ignorrable","ignorable"],["ignorrd","ignored"],["ignorre","ignore"],["ignorred","ignored"],["ignorrg","ignoring"],["ignorrig","ignoring"],["ignorring","ignoring"],["ignorrs","ignores"],["ignors","ignores"],["ignortable","ignorable"],["ignortd","ignored"],["ignorte","ignore"],["ignorted","ignored"],["ignortg","ignoring"],["ignortig","ignoring"],["ignorting","ignoring"],["ignorts","ignores"],["ignory","ignore"],["ignroed","ignored"],["ignroing","ignoring"],["igoned","ignored"],["igonorando","ignorando"],["igonore","ignore"],["igore","ignore"],["igored","ignored"],["igores","ignores"],["igoring","ignoring"],["igrnore","ignore"],["Ihaca","Ithaca"],["ihs","his"],["iif","if"],["iimmune","immune"],["iinclude","include"],["iinterval","interval"],["iiterator","iterator"],["iland","island"],["ileagle","illegal"],["ilegal","illegal"],["ilegle","illegal"],["iligal","illegal"],["illegimacy","illegitimacy"],["illegitmate","illegitimate"],["illess","illness"],["illgal","illegal"],["illiegal","illegal"],["illigal","illegal"],["illigitament","illegitimate"],["illistrate","illustrate"],["illustrasion","illustration"],["illution","illusion"],["ilness","illness"],["ilogical","illogical"],["iluminate","illuminate"],["iluminated","illuminated"],["iluminates","illuminates"],["ilumination","illumination"],["iluminations","illuminations"],["ilustrate","illustrate"],["ilustrated","illustrated"],["ilustration","illustration"],["imagenary","imaginary"],["imaghe","image"],["imagin","imagine"],["imapct","impact"],["imapcted","impacted"],["imapcting","impacting"],["imapcts","impacts"],["imapge","image"],["imbaress","embarrass"],["imbed","embed"],["imbedded","embedded"],["imbedding","embedding"],["imblance","imbalance"],["imbrase","embrace"],["imcoming","incoming"],["imcomming","incoming"],["imcompatibility","incompatibility"],["imcompatible","incompatible"],["imcomplete","incomplete"],["imedatly","immediately"],["imedialy","immediately"],["imediate","immediate"],["imediately","immediately"],["imediatly","immediately"],["imense","immense"],["imfamus","infamous"],["imgage","image"],["imidiately","immediately"],["imilar","similar"],["imlement","implement"],["imlementation","implementation"],["imlemented","implemented"],["imlementing","implementing"],["imlements","implements"],["imlicit","implicit"],["imlicitly","implicitly"],["imliment","implement"],["imlimentation","implementation"],["imlimented","implemented"],["imlimenting","implementing"],["imliments","implements"],["immadiate","immediate"],["immadiately","immediately"],["immadiatly","immediately"],["immeadiate","immediate"],["immeadiately","immediately"],["immedaite","immediate"],["immedate","immediate"],["immedately","immediately"],["immedeate","immediate"],["immedeately","immediately"],["immedially","immediately"],["immedialty","immediately"],["immediantely","immediately"],["immediatelly","immediately"],["immediatelty","immediately"],["immediatley","immediately"],["immediatlly","immediately"],["immediatly","immediately"],["immediatlye","immediately"],["immeditaly","immediately"],["immeditately","immediately"],["immeidate","immediate"],["immeidately","immediately"],["immenantly","eminently"],["immidately","immediately"],["immidatly","immediately"],["immidiate","immediate"],["immidiatelly","immediately"],["immidiately","immediately"],["immidiatly","immediately"],["immitate","imitate"],["immitated","imitated"],["immitating","imitating"],["immitator","imitator"],["immmediate","immediate"],["immmediately","immediately"],["immsersive","immersive"],["immsersively","immersively"],["immuniy","immunity"],["immunosupressant","immunosuppressant"],["immutible","immutable"],["imolicit","implicit"],["imolicitly","implicitly"],["imort","import"],["imortable","importable"],["imorted","imported"],["imortes","imports"],["imorting","importing"],["imorts","imports"],["imovable","immovable"],["impcat","impact"],["impcated","impacted"],["impcating","impacting"],["impcats","impacts"],["impecabbly","impeccably"],["impedence","impedance"],["impeed","impede"],["impelement","implement"],["impelementation","implementation"],["impelemented","implemented"],["impelementing","implementing"],["impelements","implements"],["impelentation","implementation"],["impelment","implement"],["impelmentation","implementation"],["impelmentations","implementations"],["impement","implement"],["impementaion","implementation"],["impementaions","implementations"],["impementated","implemented"],["impementation","implementation"],["impementations","implementations"],["impemented","implemented"],["impementing","implementing"],["impementling","implementing"],["impementor","implementer"],["impements","implements"],["imperiaal","imperial"],["imperically","empirically"],["imperitive","imperative"],["impermable","impermeable"],["impiled","implied"],["implace","inplace"],["implament","implement"],["implamentation","implementation"],["implamented","implemented"],["implamenting","implementing"],["implaments","implements"],["implcit","implicit"],["implcitly","implicitly"],["implct","implicit"],["implemantation","implementation"],["implemataion","implementation"],["implemataions","implementations"],["implemememnt","implement"],["implemememntation","implementation"],["implemement","implement"],["implemementation","implementation"],["implemementations","implementations"],["implememented","implemented"],["implemementing","implementing"],["implemements","implements"],["implememetation","implementation"],["implememntation","implementation"],["implememt","implement"],["implememtation","implementation"],["implememtations","implementations"],["implememted","implemented"],["implememting","implementing"],["implememts","implements"],["implemen","implement"],["implemenatation","implementation"],["implemenation","implementation"],["implemenationa","implementation"],["implemenationd","implementation"],["implemenations","implementations"],["implemencted","implemented"],["implemend","implement"],["implemends","implements"],["implemened","implemented"],["implemenet","implement"],["implemenetaion","implementation"],["implemenetaions","implementations"],["implemenetation","implementation"],["implemenetations","implementations"],["implemenetd","implemented"],["implemeneted","implemented"],["implemeneter","implementer"],["implemeneting","implementing"],["implemenetions","implementations"],["implemenets","implements"],["implemenrt","implement"],["implementaed","implemented"],["implementaion","implementation"],["implementaions","implementations"],["implementaiton","implementation"],["implementaitons","implementations"],["implementantions","implementations"],["implementastion","implementation"],["implementataion","implementation"],["implementatation","implementation"],["implementated","implemented"],["implementates","implements"],["implementating","implementing"],["implementatins","implementations"],["implementation-spacific","implementation-specific"],["implementatition","implementation"],["implementatoin","implementation"],["implementatoins","implementations"],["implementatoion","implementation"],["implementaton","implementation"],["implementator","implementer"],["implementators","implementers"],["implementattion","implementation"],["implementd","implemented"],["implementes","implements"],["implementet","implemented"],["implemention","implementation"],["implementtaion","implementation"],["implemet","implement"],["implemetation","implementation"],["implemetations","implementations"],["implemeted","implemented"],["implemeting","implementing"],["implemetnation","implementation"],["implemets","implements"],["implemnt","implement"],["implemntation","implementation"],["implemntations","implementations"],["implemt","implement"],["implemtation","implementation"],["implemtations","implementations"],["implemted","implemented"],["implemtentation","implementation"],["implemtentations","implementations"],["implemting","implementing"],["implemts","implements"],["impleneted","implemented"],["implenment","implement"],["implenmentation","implementation"],["implent","implement"],["implentation","implementation"],["implentations","implementations"],["implented","implemented"],["implenting","implementing"],["implentors","implementers"],["implents","implements"],["implet","implement"],["impletation","implementation"],["impletations","implementations"],["impleted","implemented"],["impleter","implementer"],["impleting","implementing"],["impletment","implement"],["implets","implements"],["implicitely","implicitly"],["implicitley","implicitly"],["implict","implicit"],["implictly","implicitly"],["implimcit","implicit"],["implimcitly","implicitly"],["impliment","implement"],["implimentaion","implementation"],["implimentaions","implementations"],["implimentation","implementation"],["implimentation-spacific","implementation-specific"],["implimentations","implementations"],["implimented","implemented"],["implimenting","implementing"],["implimention","implementation"],["implimentions","implementations"],["implimentor","implementor"],["impliments","implements"],["implmenet","implement"],["implmenetaion","implementation"],["implmenetaions","implementations"],["implmenetation","implementation"],["implmenetations","implementations"],["implmenetd","implemented"],["implmeneted","implemented"],["implmeneter","implementer"],["implmeneting","implementing"],["implmenets","implements"],["implment","implement"],["implmentation","implementation"],["implmentations","implementations"],["implmented","implemented"],["implmenting","implementing"],["implments","implements"],["imploys","employs"],["imporing","importing"],["imporot","import"],["imporoted","imported"],["imporoting","importing"],["imporots","imports"],["imporove","improve"],["imporoved","improved"],["imporovement","improvement"],["imporovements","improvements"],["imporoves","improves"],["imporoving","improving"],["imporsts","imports"],["importamt","important"],["importat","important"],["importd","imported"],["importent","important"],["importnt","important"],["imporve","improve"],["imporved","improved"],["imporvement","improvement"],["imporvements","improvements"],["imporves","improves"],["imporving","improving"],["imporvment","improvement"],["imposible","impossible"],["impossiblble","impossible"],["impot","import"],["impove","improve"],["impoved","improved"],["impovement","improvement"],["impovements","improvements"],["impoves","improves"],["impoving","improving"],["impplement","implement"],["impplementating","implementing"],["impplementation","implementation"],["impplemented","implemented"],["impremented","implemented"],["impres","impress"],["impresive","impressive"],["impressario","impresario"],["imprioned","imprisoned"],["imprisonned","imprisoned"],["improbe","improve"],["improbement","improvement"],["improbements","improvements"],["improbes","improves"],["improbing","improving"],["improbment","improvement"],["improbments","improvements"],["improof","improve"],["improofement","improvement"],["improofing","improving"],["improofment","improvement"],["improofs","improves"],["improove","improve"],["improoved","improved"],["improovement","improvement"],["improovements","improvements"],["improoves","improves"],["improoving","improving"],["improovment","improvement"],["improovments","improvements"],["impropely","improperly"],["improssible","impossible"],["improt","import"],["improtance","importance"],["improtant","important"],["improtantly","importantly"],["improtation","importation"],["improtations","importations"],["improted","imported"],["improter","importer"],["improters","importers"],["improting","importing"],["improts","imports"],["improvemen","improvement"],["improvemenet","improvement"],["improvemenets","improvements"],["improvemens","improvements"],["improvision","improvisation"],["improvmenet","improvement"],["improvmenets","improvements"],["improvment","improvement"],["improvments","improvements"],["imput","input"],["imrovement","improvement"],["in-memeory","in-memory"],["inablility","inability"],["inacccessible","inaccessible"],["inaccesible","inaccessible"],["inaccessable","inaccessible"],["inaccuraccies","inaccuracies"],["inaccuraccy","inaccuracy"],["inacessible","inaccessible"],["inacurate","inaccurate"],["inacurracies","inaccuracies"],["inacurrate","inaccurate"],["inadiquate","inadequate"],["inadquate","inadequate"],["inadvertant","inadvertent"],["inadvertantly","inadvertently"],["inadvertedly","inadvertently"],["inagurated","inaugurated"],["inaguration","inauguration"],["inaktively","inactively"],["inalid","invalid"],["inappropiate","inappropriate"],["inappropreate","inappropriate"],["inapropriate","inappropriate"],["inapropriately","inappropriately"],["inate","innate"],["inaugures","inaugurates"],["inavlid","invalid"],["inbalance","imbalance"],["inbalanced","imbalanced"],["inbed","embed"],["inbedded","embedded"],["inbility","inability"],["incalid","invalid"],["incarcirated","incarcerated"],["incase","in case"],["incatation","incantation"],["incatations","incantations"],["incative","inactive"],["incement","increment"],["incemental","incremental"],["incementally","incrementally"],["incemented","incremented"],["incements","increments"],["incerase","increase"],["incerased","increased"],["incerasing","increasing"],["incidential","incidental"],["incidentially","incidentally"],["incidently","incidentally"],["inclding","including"],["incldue","include"],["incldued","included"],["incldues","includes"],["inclinaison","inclination"],["inclode","include"],["inclreased","increased"],["includ","include"],["includea","include"],["includee","include"],["includeing","including"],["includied","included"],["includig","including"],["includign","including"],["includng","including"],["inclue","include"],["inclued","included"],["inclues","includes"],["incluging","including"],["incluide","include"],["incluing","including"],["inclused","included"],["inclusing","including"],["inclusinve","inclusive"],["inclution","inclusion"],["inclutions","inclusions"],["incmrement","increment"],["incoherance","incoherence"],["incoherancy","incoherency"],["incoherant","incoherent"],["incoherantly","incoherently"],["incomapatibility","incompatibility"],["incomapatible","incompatible"],["incomaptibele","incompatible"],["incomaptibelities","incompatibilities"],["incomaptibelity","incompatibility"],["incomaptible","incompatible"],["incombatibilities","incompatibilities"],["incombatibility","incompatibility"],["incomfortable","uncomfortable"],["incomming","incoming"],["incommplete","incomplete"],["incompatabable","incompatible"],["incompatabiity","incompatibility"],["incompatabile","incompatible"],["incompatabilities","incompatibilities"],["incompatability","incompatibility"],["incompatabillity","incompatibility"],["incompatabilty","incompatibility"],["incompatabily","incompatibility"],["incompatable","incompatible"],["incompatablility","incompatibility"],["incompatablities","incompatibilities"],["incompatablitiy","incompatibility"],["incompatablity","incompatibility"],["incompatably","incompatibly"],["incompataibility","incompatibility"],["incompataible","incompatible"],["incompataility","incompatibility"],["incompatatbility","incompatibility"],["incompatatble","incompatible"],["incompatatible","incompatible"],["incompatbility","incompatibility"],["incompatble","incompatible"],["incompatiability","incompatibility"],["incompatiable","incompatible"],["incompatibile","incompatible"],["incompatibilies","incompatibilities"],["incompatiblities","incompatibilities"],["incompatiblity","incompatibility"],["incompetance","incompetence"],["incompetant","incompetent"],["incompete","incomplete"],["incomping","incoming"],["incompleate","incomplete"],["incompleete","incomplete"],["incompletd","incomplete"],["incomptable","incompatible"],["incomptetent","incompetent"],["incomptible","incompatible"],["inconcistencies","inconsistencies"],["inconcistency","inconsistency"],["inconcistent","inconsistent"],["inconditional","unconditional"],["inconditionally","unconditionally"],["inconfortable","uncomfortable"],["inconisistent","inconsistent"],["inconistencies","inconsistencies"],["inconlusive","inconclusive"],["inconsisent","inconsistent"],["inconsisently","inconsistently"],["inconsisntency","inconsistency"],["inconsistance","inconsistency"],["inconsistancies","inconsistencies"],["inconsistancy","inconsistency"],["inconsistant","inconsistent"],["inconsisten","inconsistent"],["inconsistend","inconsistent"],["inconsistendly","inconsistently"],["inconsistendt","inconsistent"],["inconsistendtly","inconsistently"],["inconsistenly","inconsistently"],["inconsistented","inconsistent"],["inconsitant","inconsistent"],["inconsitency","inconsistency"],["inconsitent","inconsistent"],["inconveniant","inconvenient"],["inconveniantly","inconveniently"],["inconvertable","inconvertible"],["inconvienience","inconvenience"],["inconvienient","inconvenient"],["inconvineance","inconvenience"],["inconvineances","inconveniences"],["inconvinence","inconvenience"],["inconvinences","inconveniences"],["inconviniance","inconvenience"],["inconviniances","inconveniences"],["inconvinience","inconvenience"],["inconviniences","inconveniences"],["inconviniency","inconvenience"],["inconviniencys","inconveniences"],["incooperates","incorporates"],["incoperate","incorporate"],["incoperated","incorporated"],["incoperates","incorporates"],["incoperating","incorporating"],["incoporate","incorporate"],["incoporated","incorporated"],["incoporates","incorporates"],["incoporating","incorporating"],["incoprorate","incorporate"],["incoprorated","incorporated"],["incoprorates","incorporates"],["incoprorating","incorporating"],["incorect","incorrect"],["incorectly","incorrectly"],["incoropate","incorporate"],["incoropates","incorporates"],["incoroporated","incorporated"],["incorparates","incorporates"],["incorperate","incorporate"],["incorperated","incorporated"],["incorperates","incorporates"],["incorperating","incorporating"],["incorperation","incorporation"],["incorportaed","incorporated"],["incorported","incorporated"],["incorprates","incorporates"],["incorreclty","incorrectly"],["incorrecly","incorrectly"],["incorrecty","incorrectly"],["incorreect","incorrect"],["incorreectly","incorrectly"],["incorrent","incorrect"],["incorret","incorrect"],["incorrrect","incorrect"],["incorrrectly","incorrectly"],["incorruptable","incorruptible"],["incosistencies","inconsistencies"],["incosistency","inconsistency"],["incosistent","inconsistent"],["incosistente","inconsistent"],["incramentally","incrementally"],["increadible","incredible"],["increading","increasing"],["increaing","increasing"],["increament","increment"],["increas","increase"],["incredable","incredible"],["incremantal","incremental"],["incremeantal","incremental"],["incremenet","increment"],["incremenetd","incremented"],["incremeneted","incremented"],["incrementaly","incrementally"],["incremet","increment"],["incremetal","incremental"],["incremeted","incremented"],["incremnet","increment"],["increse","increase"],["incresed","increased"],["increses","increases"],["incresing","increasing"],["incrfemental","incremental"],["incrmenet","increment"],["incrmenetd","incremented"],["incrmeneted","incremented"],["incrment","increment"],["incrmental","incremental"],["incrmentally","incrementally"],["incrmented","incremented"],["incrmenting","incrementing"],["incrments","increments"],["inctance","instance"],["inctroduce","introduce"],["inctroduced","introduced"],["incude","include"],["incuded","included"],["incudes","includes"],["incuding","including"],["inculde","include"],["inculded","included"],["inculdes","includes"],["inculding","including"],["incunabla","incunabula"],["incure","incur"],["incurruptable","incorruptible"],["incurruptible","incorruptible"],["incvalid","invalid"],["indcates","indicates"],["indciate","indicate"],["inddex","index"],["inddividual","individual"],["inddividually","individually"],["inddividuals","individuals"],["indecate","indicate"],["indeces","indices"],["indecies","indices"],["indefinate","indefinite"],["indefinately","indefinitely"],["indefineable","undefinable"],["indefinetly","indefinitely"],["indefinitiley","indefinitely"],["indefinitively","indefinitely"],["indefinitly","indefinitely"],["indefintly","indefinitely"],["indempotent","idempotent"],["indendation","indentation"],["indentaction","indentation"],["indentaion","indentation"],["indentended","indented"],["indentical","identical"],["indentically","identically"],["indentifer","identifier"],["indentification","identification"],["indentified","identified"],["indentifier","identifier"],["indentifies","identifies"],["indentifing","identifying"],["indentify","identify"],["indentifying","identifying"],["indentit","identity"],["indentity","identity"],["indentleveal","indentlevel"],["indenx","index"],["indepandance","independence"],["indepdence","independence"],["indepdencente","independence"],["indepdendance","independence"],["indepdendant","independent"],["indepdendantly","independently"],["indepdendence","independence"],["indepdendency","independency"],["indepdendent","independent"],["indepdendently","independently"],["indepdendet","independent"],["indepdendetly","independently"],["indepdenence","independence"],["indepdenent","independent"],["indepdenently","independently"],["indepdent","independent"],["indepdented","independent"],["indepdentedly","independently"],["indepdently","independently"],["indepedantly","independently"],["indepedence","independence"],["indepedent","independent"],["indepedently","independently"],["independ","independent"],["independance","independence"],["independant","independent"],["independantly","independently"],["independece","independence"],["independed","independent"],["independedly","independently"],["independend","independent"],["independendet","independent"],["independet","independent"],["independly","independently"],["independnent","independent"],["independnet","independent"],["independnt","independent"],["independntly","independently"],["independt","independent"],["independtly","independently"],["indepenedent","independent"],["indepenendence","independence"],["indepenent","independent"],["indepenently","independently"],["indepent","independent"],["indepentent","independent"],["indepently","independently"],["inderect","indirect"],["inderts","inserts"],["indes","index"],["indespensable","indispensable"],["indespensible","indispensable"],["indexig","indexing"],["indiactor","indicator"],["indiate","indicate"],["indiated","indicated"],["indiates","indicates"],["indiating","indicating"],["indicaite","indicate"],["indicat","indicate"],["indicees","indices"],["indiciate","indicate"],["indiciated","indicated"],["indiciates","indicates"],["indiciating","indicating"],["indicies","indices"],["indicte","indicate"],["indictement","indictment"],["indictes","indicates"],["indictor","indicator"],["indigineous","indigenous"],["indipendence","independence"],["indipendent","independent"],["indipendently","independently"],["indiquate","indicate"],["indiquates","indicates"],["indirecty","indirectly"],["indispensible","indispensable"],["indisputible","indisputable"],["indisputibly","indisputably"],["indistiguishable","indistinguishable"],["indivdual","individual"],["indivdually","individually"],["indivdualy","individually"],["individal","individual"],["individally","individually"],["individals","individuals"],["individaul","individual"],["individaully","individually"],["individauls","individuals"],["individauly","individually"],["individial","individual"],["individualy","individually"],["individuel","individual"],["individuelly","individually"],["individuely","individually"],["indivisual","individual"],["indivisuality","individuality"],["indivisually","individually"],["indivisuals","individuals"],["indiviual","individual"],["indiviually","individually"],["indiviuals","individuals"],["indivual","individual"],["indivudual","individual"],["indivudually","individually"],["indizies","indices"],["indpendent","independent"],["indpendently","independently"],["indrect","indirect"],["indulgue","indulge"],["indure","endure"],["indutrial","industrial"],["indvidual","individual"],["indviduals","individuals"],["indxes","indexes"],["inearisation","linearisation"],["ineffciency","inefficiency"],["ineffcient","inefficient"],["ineffciently","inefficiently"],["inefficency","inefficiency"],["inefficent","inefficient"],["inefficently","inefficiently"],["inefficenty","inefficiently"],["inefficienty","inefficiently"],["ineffiecent","inefficient"],["ineffient","inefficient"],["ineffiently","inefficiently"],["ineficient","inefficient"],["inegrate","integrate"],["inegrated","integrated"],["ineqality","inequality"],["inequalitiy","inequality"],["inerface","interface"],["inerit","inherit"],["ineritance","inheritance"],["inerited","inherited"],["ineriting","inheriting"],["ineritor","inheritor"],["ineritors","inheritors"],["inerits","inherits"],["inernal","internal"],["inerrupt","interrupt"],["inershia","inertia"],["inershial","inertial"],["inersia","inertia"],["inersial","inertial"],["inertion","insertion"],["ines","lines"],["inestart","linestart"],["inetrrupts","interrupts"],["inevatible","inevitable"],["inevitible","inevitable"],["inevititably","inevitably"],["inexistant","inexistent"],["inexperiance","inexperience"],["inexperianced","inexperienced"],["inexpierence","inexperience"],["inexpierenced","inexperienced"],["inexpirience","inexperience"],["inexpirienced","inexperienced"],["infact","in fact"],["infalability","infallibility"],["infallable","infallible"],["infalte","inflate"],["infalted","inflated"],["infaltes","inflates"],["infalting","inflating"],["infectuous","infectious"],["infered","inferred"],["inferface","interface"],["infering","inferring"],["inferrable","inferable"],["inferrence","inference"],["infex","index"],["infilitrate","infiltrate"],["infilitrated","infiltrated"],["infilitration","infiltration"],["infinate","infinite"],["infinately","infinitely"],["infininte","infinite"],["infinit","infinite"],["infinitie","infinity"],["infinitly","infinitely"],["infinte","infinite"],["infintesimal","infinitesimal"],["infinty","infinity"],["infite","infinite"],["inflamation","inflammation"],["inflatoin","inflation"],["inflexable","inflexible"],["inflight","in-flight"],["influece","influence"],["influeced","influenced"],["influeces","influences"],["influecing","influencing"],["influencial","influential"],["influencin","influencing"],["influented","influenced"],["infoemation","information"],["infomation","information"],["infomational","informational"],["infomed","informed"],["infomer","informer"],["infomration","information"],["infoms","informs"],["infor","info"],["inforamtion","information"],["inforation","information"],["inforational","informational"],["inforce","enforce"],["inforced","enforced"],["informacion","information"],["informaion","information"],["informaiton","information"],["informatation","information"],["informatations","information"],["informatikon","information"],["informatins","information"],["informatio","information"],["informatiom","information"],["informations","information"],["informatoin","information"],["informatoins","information"],["informaton","information"],["informfation","information"],["informtion","information"],["inforrmation","information"],["infrantryman","infantryman"],["infrasctructure","infrastructure"],["infrastrcuture","infrastructure"],["infrastruture","infrastructure"],["infrastucture","infrastructure"],["infrastuctures","infrastructures"],["infreqency","infrequency"],["infreqentcy","infrequency"],["infreqeuncy","infrequency"],["infreqeuntcy","infrequency"],["infrequancies","infrequencies"],["infrequancy","infrequency"],["infrequantcies","infrequencies"],["infrequantcy","infrequency"],["infrequentcies","infrequencies"],["infrigement","infringement"],["infromation","information"],["infromatoin","information"],["infrormation","information"],["infrustructure","infrastructure"],["ingegral","integral"],["ingenius","ingenious"],["ingnore","ignore"],["ingnored","ignored"],["ingnores","ignores"],["ingnoring","ignoring"],["ingore","ignore"],["ingored","ignored"],["ingores","ignores"],["ingoring","ignoring"],["ingration","integration"],["ingreediants","ingredients"],["inh","in"],["inhabitans","inhabitants"],["inherantly","inherently"],["inheratance","inheritance"],["inheret","inherit"],["inherets","inherits"],["inheritablility","inheritability"],["inheritence","inheritance"],["inherith","inherit"],["inherithed","inherited"],["inherithing","inheriting"],["inheriths","inherits"],["inheritted","inherited"],["inherrit","inherit"],["inherritance","inheritance"],["inherrited","inherited"],["inherriting","inheriting"],["inherrits","inherits"],["inhert","inherit"],["inhertance","inheritance"],["inhertances","inheritances"],["inherted","inherited"],["inhertiance","inheritance"],["inherting","inheriting"],["inherts","inherits"],["inhomogenous","inhomogeneous"],["inialized","initialized"],["iniate","initiate"],["inidicate","indicate"],["inidicated","indicated"],["inidicates","indicates"],["inidicating","indicating"],["inidication","indication"],["inidications","indications"],["inidividual","individual"],["inidvidual","individual"],["inifinite","infinite"],["inifinity","infinity"],["inifinte","infinite"],["inifite","infinite"],["iniitial","initial"],["iniitialization","initialization"],["iniitializations","initializations"],["iniitialize","initialize"],["iniitialized","initialized"],["iniitializes","initializes"],["iniitializing","initializing"],["inintialisation","initialisation"],["inintialization","initialization"],["inisialise","initialise"],["inisialised","initialised"],["inisialises","initialises"],["iniside","inside"],["inisides","insides"],["initail","initial"],["initailisation","initialisation"],["initailise","initialise"],["initailised","initialised"],["initailiser","initialiser"],["initailisers","initialisers"],["initailises","initialises"],["initailising","initialising"],["initailization","initialization"],["initailize","initialize"],["initailized","initialized"],["initailizer","initializer"],["initailizers","initializers"],["initailizes","initializes"],["initailizing","initializing"],["initailly","initially"],["initails","initials"],["initailsation","initialisation"],["initailse","initialise"],["initailsed","initialised"],["initailsiation","initialisation"],["initaily","initially"],["initailzation","initialization"],["initailze","initialize"],["initailzed","initialized"],["initailziation","initialization"],["inital","initial"],["initalialisation","initialisation"],["initalialization","initialization"],["initalisation","initialisation"],["initalise","initialise"],["initalised","initialised"],["initaliser","initialiser"],["initalises","initialises"],["initalising","initialising"],["initalization","initialization"],["initalize","initialize"],["initalized","initialized"],["initalizer","initializer"],["initalizes","initializes"],["initalizing","initializing"],["initally","initially"],["initals","initials"],["initiailize","initialize"],["initiailized","initialized"],["initiailizes","initializes"],["initiailizing","initializing"],["initiaitive","initiative"],["initiaitives","initiatives"],["initialialise","initialise"],["initialialize","initialize"],["initialiasation","initialisation"],["initialiase","initialise"],["initialiased","initialised"],["initialiation","initialization"],["initialiazation","initialization"],["initialiaze","initialize"],["initialiazed","initialized"],["initialied","initialized"],["initialilsing","initialising"],["initialilzing","initializing"],["initialisaing","initialising"],["initialisaiton","initialisation"],["initialisated","initialised"],["initialisatin","initialisation"],["initialisationg","initialisation"],["initialisaton","initialisation"],["initialisatons","initialisations"],["initialiseing","initialising"],["initialisiation","initialisation"],["initialisong","initialising"],["initialiting","initializing"],["initialitse","initialise"],["initialitsing","initialising"],["initialitze","initialize"],["initialitzing","initializing"],["initializa","initialize"],["initializad","initialized"],["initializaed","initialized"],["initializaing","initializing"],["initializaiton","initialization"],["initializate","initialize"],["initializated","initialized"],["initializates","initializes"],["initializatin","initialization"],["initializating","initializing"],["initializationg","initialization"],["initializaton","initialization"],["initializatons","initializations"],["initializedd","initialized"],["initializeing","initializing"],["initializiation","initialization"],["initializong","initializing"],["initialsation","initialisation"],["initialse","initialise"],["initialsed","initialised"],["initialses","initialises"],["initialsing","initialising"],["initialy","initially"],["initialyl","initially"],["initialyse","initialise"],["initialysed","initialised"],["initialyses","initialises"],["initialysing","initialising"],["initialyze","initialize"],["initialyzed","initialized"],["initialyzes","initializes"],["initialyzing","initializing"],["initialzation","initialization"],["initialze","initialize"],["initialzed","initialized"],["initialzes","initializes"],["initialzing","initializing"],["initiatiate","initiate"],["initiatiated","initiated"],["initiatiater","initiator"],["initiatiating","initiating"],["initiatiator","initiator"],["initiatiats","initiates"],["initiatie","initiate"],["initiatied","initiated"],["initiaties","initiates"],["initiialise","initialise"],["initiialize","initialize"],["initilialised","initialised"],["initilialization","initialization"],["initilializations","initializations"],["initilialize","initialize"],["initilialized","initialized"],["initilializes","initializes"],["initilializing","initializing"],["initiliase","initialise"],["initiliased","initialised"],["initiliases","initialises"],["initiliasing","initialising"],["initiliaze","initialize"],["initiliazed","initialized"],["initiliazes","initializes"],["initiliazing","initializing"],["initilisation","initialisation"],["initilisations","initialisations"],["initilise","initialise"],["initilised","initialised"],["initilises","initialises"],["initilising","initialising"],["initilization","initialization"],["initilizations","initializations"],["initilize","initialize"],["initilized","initialized"],["initilizes","initializes"],["initilizing","initializing"],["inititalisation","initialisation"],["inititalisations","initialisations"],["inititalise","initialise"],["inititalised","initialised"],["inititaliser","initialiser"],["inititalising","initialising"],["inititalization","initialization"],["inititalizations","initializations"],["inititalize","initialize"],["inititate","initiate"],["inititator","initiator"],["inititialization","initialization"],["inititializations","initializations"],["initliasation","initialisation"],["initliase","initialise"],["initliased","initialised"],["initliaser","initialiser"],["initliazation","initialization"],["initliaze","initialize"],["initliazed","initialized"],["initliazer","initializer"],["inituialisation","initialisation"],["inituialization","initialization"],["inivisible","invisible"],["inizialize","initialize"],["inizialized","initialized"],["inizializes","initializes"],["inlalid","invalid"],["inlclude","include"],["inlcluded","included"],["inlcludes","includes"],["inlcluding","including"],["inlcludion","inclusion"],["inlclusive","inclusive"],["inlcude","include"],["inlcuded","included"],["inlcudes","includes"],["inlcuding","including"],["inlcusion","inclusion"],["inlcusive","inclusive"],["inlin","inline"],["inlude","include"],["inluded","included"],["inludes","includes"],["inluding","including"],["inludung","including"],["inluence","influence"],["inlusive","inclusive"],["inmediate","immediate"],["inmediatelly","immediately"],["inmediately","immediately"],["inmediatily","immediately"],["inmediatly","immediately"],["inmense","immense"],["inmigrant","immigrant"],["inmigrants","immigrants"],["inmmediately","immediately"],["inmplementation","implementation"],["innactive","inactive"],["innacurate","inaccurate"],["innacurately","inaccurately"],["innappropriate","inappropriate"],["innecesarily","unnecessarily"],["innecesary","unnecessary"],["innecessarily","unnecessarily"],["innecessary","unnecessary"],["inneffectual","ineffectual"],["innocous","innocuous"],["innoculate","inoculate"],["innoculated","inoculated"],["innosense","innocence"],["inocence","innocence"],["inofficial","unofficial"],["inofrmation","information"],["inoperant","inoperative"],["inoquous","innocuous"],["inot","into"],["inouts","inputs"],["inpact","impact"],["inpacted","impacted"],["inpacting","impacting"],["inpacts","impacts"],["inpeach","impeach"],["inpecting","inspecting"],["inpection","inspection"],["inpections","inspections"],["inpending","impending"],["inpenetrable","impenetrable"],["inplementation","implementation"],["inplementations","implementations"],["inplemented","implemented"],["inplicit","implicit"],["inplicitly","implicitly"],["inpolite","impolite"],["inport","import"],["inportant","important"],["inposible","impossible"],["inpossible","impossible"],["inpout","input"],["inpouts","inputs"],["inpractical","impractical"],["inpracticality","impracticality"],["inpractically","impractically"],["inprisonment","imprisonment"],["inproove","improve"],["inprooved","improved"],["inprooves","improves"],["inprooving","improving"],["inproovment","improvement"],["inproovments","improvements"],["inproper","improper"],["inproperly","improperly"],["inproving","improving"],["inpsection","inspection"],["inpterpreter","interpreter"],["inpu","input"],["inputed","inputted"],["inputsream","inputstream"],["inpuut","input"],["inrement","increment"],["inrements","increments"],["inreractive","interactive"],["inrerface","interface"],["inresponsive","unresponsive"],["inro","into"],["ins't","isn't"],["insallation","installation"],["insalled","installed"],["inscpeting","inspecting"],["insctuction","instruction"],["insctuctional","instructional"],["insctuctions","instructions"],["insde","inside"],["insead","instead"],["insectiverous","insectivorous"],["insensative","insensitive"],["insensetive","insensitive"],["insensistive","insensitive"],["insensistively","insensitively"],["insensitiv","insensitive"],["insensitivy","insensitivity"],["insensitve","insensitive"],["insenstive","insensitive"],["insenstively","insensitively"],["insentives","incentives"],["insentivite","insensitive"],["insepect","inspect"],["insepected","inspected"],["insepection","inspection"],["insepects","inspects"],["insependent","independent"],["inseperable","inseparable"],["insepsion","inception"],["inser","insert"],["insering","inserting"],["insersect","intersect"],["insersected","intersected"],["insersecting","intersecting"],["insersects","intersects"],["inserst","insert"],["insersted","inserted"],["inserster","inserter"],["insersting","inserting"],["inserstor","inserter"],["insersts","inserts"],["insertin","inserting"],["insertino","inserting"],["insesitive","insensitive"],["insesitively","insensitively"],["insesitiveness","insensitiveness"],["insesitivity","insensitivity"],["insetad","instead"],["insetead","instead"],["inseted","inserted"],["insid","inside"],["insidde","inside"],["insiddes","insides"],["insided","inside"],["insignificat","insignificant"],["insignificatly","insignificantly"],["insigt","insight"],["insigth","insight"],["insigths","insights"],["insigts","insights"],["insistance","insistence"],["insititute","institute"],["insitution","institution"],["insitutions","institutions"],["insonsistency","inconsistency"],["instaance","instance"],["instabce","instance"],["instace","instance"],["instaces","instances"],["instaciate","instantiate"],["instad","instead"],["instade","instead"],["instaead","instead"],["instaed","instead"],["instal","install"],["instalation","installation"],["instalations","installations"],["instaled","installed"],["instaler","installer"],["instaling","installing"],["installaion","installation"],["installaiton","installation"],["installaitons","installations"],["installataion","installation"],["installataions","installations"],["installatation","installation"],["installationa","installation"],["installes","installs"],["installtion","installation"],["instals","installs"],["instancd","instance"],["instanciate","instantiate"],["instanciated","instantiated"],["instanciates","instantiates"],["instanciating","instantiating"],["instanciation","instantiation"],["instanciations","instantiations"],["instane","instance"],["instanes","instances"],["instanseation","instantiation"],["instansiate","instantiate"],["instansiated","instantiated"],["instansiates","instantiates"],["instansiation","instantiation"],["instantate","instantiate"],["instantating","instantiating"],["instantation","instantiation"],["instantations","instantiations"],["instantiaties","instantiates"],["instanze","instance"],["instatance","instance"],["instatiate","instantiate"],["instatiation","instantiation"],["instatiations","instantiations"],["insteance","instance"],["insted","instead"],["insteead","instead"],["inster","insert"],["insterad","instead"],["insterrupts","interrupts"],["instersction","intersection"],["instersctions","intersections"],["instersectioned","intersection"],["instert","insert"],["insterted","inserted"],["instertion","insertion"],["institue","institute"],["instlal","install"],["instlalation","installation"],["instlalations","installations"],["instlaled","installed"],["instlaler","installer"],["instlaling","installing"],["instlals","installs"],["instller","installer"],["instnace","instance"],["instnaces","instances"],["instnance","instance"],["instnances","instances"],["instnat","instant"],["instnatiated","instantiated"],["instnatiation","instantiation"],["instnatiations","instantiations"],["instnce","instance"],["instnces","instances"],["instnsiated","instantiated"],["instnsiation","instantiation"],["instnsiations","instantiations"],["instnt","instant"],["instntly","instantly"],["instrace","instance"],["instralled","installed"],["instrction","instruction"],["instrctional","instructional"],["instrctions","instructions"],["instrcut","instruct"],["instrcutino","instruction"],["instrcutinoal","instructional"],["instrcutinos","instructions"],["instrcution","instruction"],["instrcutional","instructional"],["instrcutions","instructions"],["instrcuts","instructs"],["instread","instead"],["instrinsic","intrinsic"],["instruccion","instruction"],["instruccional","instructional"],["instruccions","instructions"],["instrucion","instruction"],["instrucional","instructional"],["instrucions","instructions"],["instruciton","instruction"],["instrucitonal","instructional"],["instrucitons","instructions"],["instrumenet","instrument"],["instrumenetation","instrumentation"],["instrumenetd","instrumented"],["instrumeneted","instrumented"],["instrumentaion","instrumentation"],["instrumnet","instrument"],["instrumnets","instruments"],["instsall","install"],["instsallation","installation"],["instsallations","installations"],["instsalled","installed"],["instsalls","installs"],["instuction","instruction"],["instuctional","instructional"],["instuctions","instructions"],["instuments","instruments"],["insturment","instrument"],["insturments","instruments"],["instutionalized","institutionalized"],["instutions","intuitions"],["insuffciency","insufficiency"],["insuffcient","insufficient"],["insuffciently","insufficiently"],["insufficency","insufficiency"],["insufficent","insufficient"],["insufficently","insufficiently"],["insuffiency","insufficiency"],["insuffient","insufficient"],["insuffiently","insufficiently"],["insurasnce","insurance"],["insurence","insurance"],["intaces","instance"],["intack","intact"],["intall","install"],["intallation","installation"],["intallationpath","installationpath"],["intallations","installations"],["intalled","installed"],["intalleing","installing"],["intaller","installer"],["intalles","installs"],["intalling","installing"],["intalls","installs"],["intances","instances"],["intantiate","instantiate"],["intantiating","instantiating"],["inteaction","interaction"],["intead","instead"],["inteded","intended"],["intedned","intended"],["inteface","interface"],["intefere","interfere"],["intefered","interfered"],["inteference","interference"],["integarte","integrate"],["integarted","integrated"],["integartes","integrates"],["integated","integrated"],["integates","integrates"],["integating","integrating"],["integation","integration"],["integations","integrations"],["integeral","integral"],["integere","integer"],["integreated","integrated"],["integrety","integrity"],["integrey","integrity"],["intelectual","intellectual"],["intelegence","intelligence"],["intelegent","intelligent"],["intelegently","intelligently"],["inteligability","intelligibility"],["inteligable","intelligible"],["inteligance","intelligence"],["inteligantly","intelligently"],["inteligence","intelligence"],["inteligent","intelligent"],["intelisense","intellisense"],["intelligable","intelligible"],["intemediary","intermediary"],["intenal","internal"],["intenational","international"],["intendet","intended"],["inteneded","intended"],["intenisty","intensity"],["intension","intention"],["intensional","intentional"],["intensionally","intentionally"],["intensionaly","intentionally"],["intentation","indentation"],["intentended","intended"],["intentially","intentionally"],["intentialy","intentionally"],["intentionaly","intentionally"],["intentionly","intentionally"],["intepolate","interpolate"],["intepolated","interpolated"],["intepolates","interpolates"],["intepret","interpret"],["intepretable","interpretable"],["intepretation","interpretation"],["intepretations","interpretations"],["intepretator","interpreter"],["intepretators","interpreters"],["intepreted","interpreted"],["intepreter","interpreter"],["intepreter-based","interpreter-based"],["intepreters","interpreters"],["intepretes","interprets"],["intepreting","interpreting"],["intepretor","interpreter"],["intepretors","interpreters"],["inteprets","interprets"],["inter-operability","interoperability"],["interace","interface"],["interaces","interfaces"],["interacive","interactive"],["interacively","interactively"],["interacsion","interaction"],["interacsions","interactions"],["interactionn","interaction"],["interactionns","interactions"],["interactiv","interactive"],["interactivly","interactively"],["interactuable","interactive"],["interafce","interface"],["interakt","interact"],["interaktion","interaction"],["interaktions","interactions"],["interaktive","interactively"],["interaktively","interactively"],["interaktivly","interactively"],["interaly","internally"],["interanl","internal"],["interanlly","internally"],["interate","iterate"],["interational","international"],["interative","interactive"],["interatively","interactively"],["interator","iterator"],["interators","iterators"],["interaxction","interaction"],["interaxctions","interactions"],["interaxtion","interaction"],["interaxtions","interactions"],["intercahnge","interchange"],["intercahnged","interchanged"],["intercation","interaction"],["interchage","interchange"],["interchangable","interchangeable"],["interchangably","interchangeably"],["interchangeble","interchangeable"],["intercollegate","intercollegiate"],["intercontinential","intercontinental"],["intercontinetal","intercontinental"],["interdependant","interdependent"],["interecptor","interceptor"],["intereested","interested"],["intereference","interference"],["intereferences","interferences"],["interelated","interrelated"],["interelaved","interleaved"],["interepolate","interpolate"],["interepolated","interpolated"],["interepolates","interpolates"],["interepolating","interpolating"],["interepolation","interpolation"],["interepret","interpret"],["interepretation","interpretation"],["interepretations","interpretations"],["interepreted","interpreted"],["interepreting","interpreting"],["intereprets","interprets"],["interept","intercept"],["interesct","intersect"],["interescted","intersected"],["interescting","intersecting"],["interesction","intersection"],["interesctions","intersections"],["interescts","intersects"],["interesect","intersect"],["interesected","intersected"],["interesecting","intersecting"],["interesection","intersection"],["interesections","intersections"],["interesects","intersects"],["intereset","interest"],["intereseted","interested"],["intereseting","interesting"],["interesing","interesting"],["interespersed","interspersed"],["interesseted","interested"],["interesst","interest"],["interessted","interested"],["interessting","interesting"],["intereview","interview"],["interfal","interval"],["interfals","intervals"],["interfave","interface"],["interfaves","interfaces"],["interfcae","interface"],["interfcaes","interfaces"],["interfear","interfere"],["interfearence","interference"],["interfearnce","interference"],["interfer","interfere"],["interferance","interference"],["interferd","interfered"],["interfereing","interfering"],["interfernce","interference"],["interferred","interfered"],["interferring","interfering"],["interfers","interferes"],["intergated","integrated"],["interger's","integer's"],["interger","integer"],["intergerated","integrated"],["intergers","integers"],["intergrate","integrate"],["intergrated","integrated"],["intergrates","integrates"],["intergrating","integrating"],["intergration","integration"],["intergrations","integrations"],["interit","inherit"],["interitance","inheritance"],["interited","inherited"],["interiting","inheriting"],["interits","inherits"],["interliveing","interleaving"],["interlly","internally"],["intermediat","intermediate"],["intermeidate","intermediate"],["intermidiate","intermediate"],["intermitent","intermittent"],["intermittant","intermittent"],["intermperance","intemperance"],["internaly","internally"],["internatinal","international"],["internatioanl","international"],["internation","international"],["internel","internal"],["internels","internals"],["internface","interface"],["interogators","interrogators"],["interopeable","interoperable"],["interoprability","interoperability"],["interperated","interpreted"],["interpert","interpret"],["interpertation","interpretation"],["interpertations","interpretations"],["interperted","interpreted"],["interperter","interpreter"],["interperters","interpreters"],["interperting","interpreting"],["interpertive","interpretive"],["interperts","interprets"],["interpet","interpret"],["interpetation","interpretation"],["interpeted","interpreted"],["interpeter","interpreter"],["interpeters","interpreters"],["interpeting","interpreting"],["interpets","interprets"],["interploate","interpolate"],["interploated","interpolated"],["interploates","interpolates"],["interploatin","interpolating"],["interploation","interpolation"],["interpolaed","interpolated"],["interpolaion","interpolation"],["interpolaiton","interpolation"],["interpolar","interpolator"],["interpolayed","interpolated"],["interporation","interpolation"],["interporations","interpolations"],["interprate","interpret"],["interprated","interpreted"],["interpreation","interpretation"],["interprerter","interpreter"],["interpretated","interpreted"],["interprete","interpret"],["interpretes","interprets"],["interpretet","interpreted"],["interpretion","interpretation"],["interpretions","interpretations"],["interpretor","interpreter"],["interprett","interpret"],["interpretted","interpreted"],["interpretter","interpreter"],["interpretting","interpreting"],["interract","interact"],["interracting","interacting"],["interractive","interactive"],["interracts","interacts"],["interrest","interest"],["interrested","interested"],["interresting","interesting"],["interrface","interface"],["interrim","interim"],["interript","interrupt"],["interrput","interrupt"],["interrputed","interrupted"],["interrrupt","interrupt"],["interrrupted","interrupted"],["interrrupting","interrupting"],["interrrupts","interrupts"],["interrtups","interrupts"],["interrugum","interregnum"],["interrum","interim"],["interrup","interrupt"],["interruped","interrupted"],["interruping","interrupting"],["interrups","interrupts"],["interruptable","interruptible"],["interruptors","interrupters"],["interruptted","interrupted"],["interrut","interrupt"],["interrutps","interrupts"],["interscetion","intersection"],["intersecct","intersect"],["interseccted","intersected"],["interseccting","intersecting"],["intersecction","intersection"],["interseccts","intersects"],["intersecrion","intersection"],["intersecton","intersection"],["intersectons","intersections"],["intersparsed","interspersed"],["interst","interest"],["intersted","interested"],["intersting","interesting"],["intersts","interests"],["intertaining","entertaining"],["intertia","inertia"],["intertial","inertial"],["interupt","interrupt"],["interupted","interrupted"],["interupting","interrupting"],["interupts","interrupts"],["interuupt","interrupt"],["intervall","interval"],["intervalls","intervals"],["interveening","intervening"],["intervines","intervenes"],["intesity","intensity"],["inteval","interval"],["intevals","intervals"],["intevene","intervene"],["intger","integer"],["intgers","integers"],["intgral","integral"],["inthe","in the"],["intiailise","initialise"],["intiailised","initialised"],["intiailiseing","initialising"],["intiailiser","initialiser"],["intiailises","initialises"],["intiailising","initialising"],["intiailize","initialize"],["intiailized","initialized"],["intiailizeing","initializing"],["intiailizer","initializer"],["intiailizes","initializes"],["intiailizing","initializing"],["intial","initial"],["intiale","initial"],["intialisation","initialisation"],["intialise","initialise"],["intialised","initialised"],["intialiser","initialiser"],["intialisers","initialisers"],["intialises","initialises"],["intialising","initialising"],["intialistion","initialisation"],["intializating","initializing"],["intialization","initialization"],["intializaze","initialize"],["intialize","initialize"],["intialized","initialized"],["intializer","initializer"],["intializers","initializers"],["intializes","initializes"],["intializing","initializing"],["intializtion","initialization"],["intialled","initialled"],["intiallisation","initialisation"],["intiallisations","initialisations"],["intiallised","initialised"],["intiallization","initialization"],["intiallizations","initializations"],["intiallized","initialized"],["intiallly","initially"],["intially","initially"],["intials","initials"],["intialse","initialise"],["intialsed","initialised"],["intialsing","initialising"],["intialte","initialise"],["intialy","initially"],["intialze","initialize"],["intialzed","initialized"],["intialzing","initializing"],["inticement","enticement"],["intiger","integer"],["intiial","initial"],["intiialise","initialise"],["intiialize","initialize"],["intilising","initialising"],["intilizing","initializing"],["intimite","intimate"],["intinite","infinite"],["intitial","initial"],["intitialization","initialization"],["intitialize","initialize"],["intitialized","initialized"],["intitials","initials"],["intity","entity"],["intot","into"],["intoto","into"],["intpreter","interpreter"],["intput","input"],["intputs","inputs"],["intraversion","introversion"],["intravert","introvert"],["intraverts","introverts"],["intrduced","introduced"],["intreeg","intrigue"],["intreeged","intrigued"],["intreeging","intriguing"],["intreegued","intrigued"],["intreeguing","intriguing"],["intreface","interface"],["intregral","integral"],["intrerrupt","interrupt"],["intresst","interest"],["intressted","interested"],["intressting","interesting"],["intrested","interested"],["intresting","interesting"],["intriduce","introduce"],["intriduced","introduced"],["intriduction","introduction"],["intrisinc","intrinsic"],["intrisincs","intrinsics"],["introducted","introduced"],["introductionary","introductory"],["introdued","introduced"],["introduse","introduce"],["introdused","introduced"],["introduses","introduces"],["introdusing","introducing"],["introsepectable","introspectable"],["introsepection","introspection"],["intrrupt","interrupt"],["intrrupted","interrupted"],["intrrupting","interrupting"],["intrrupts","interrupts"],["intruction","instruction"],["intructional","instructional"],["intructions","instructions"],["intruduced","introduced"],["intruducing","introducing"],["intrument","instrument"],["intrumental","instrumental"],["intrumented","instrumented"],["intrumenting","instrumenting"],["intruments","instruments"],["intrusted","entrusted"],["intstead","instead"],["intstructed","instructed"],["intstructer","instructor"],["intstructing","instructing"],["intstruction","instruction"],["intstructional","instructional"],["intstructions","instructions"],["intstructor","instructor"],["intstructs","instructs"],["intterrupt","interrupt"],["intterupt","interrupt"],["intterupted","interrupted"],["intterupting","interrupting"],["intterupts","interrupts"],["intuative","intuitive"],["inturpratasion","interpretation"],["inturpratation","interpretation"],["inturprett","interpret"],["intutive","intuitive"],["intutively","intuitively"],["inudstry","industry"],["inut","input"],["invaid","invalid"],["invaild","invalid"],["invaildate","invalidate"],["invailid","invalid"],["invalaid","invalid"],["invald","invalid"],["invaldates","invalidates"],["invalde","invalid"],["invalidatiopn","invalidation"],["invalide","invalid"],["invalidiate","invalidate"],["invalidte","invalidate"],["invalidted","invalidated"],["invalidtes","invalidates"],["invalidting","invalidating"],["invalidtion","invalidation"],["invalied","invalid"],["invalud","invalid"],["invarient","invariant"],["invarients","invariants"],["invarinat","invariant"],["invarinats","invariants"],["inventer","inventor"],["inverded","inverted"],["inverion","inversion"],["inverions","inversions"],["invertedd","inverted"],["invertibrates","invertebrates"],["invertion","inversion"],["invertions","inversions"],["inverval","interval"],["inveryed","inverted"],["invesitgated","investigated"],["invesitgating","investigating"],["invesitgation","investigation"],["invesitgations","investigations"],["investingate","investigate"],["inveting","inverting"],["invetory","inventory"],["inviation","invitation"],["invididual","individual"],["invidivual","individual"],["invidual","individual"],["invidually","individually"],["invisble","invisible"],["invisblity","invisibility"],["invisiable","invisible"],["invisibile","invisible"],["invisivble","invisible"],["invlaid","invalid"],["invlid","invalid"],["invlisible","invisible"],["invlove","involve"],["invloved","involved"],["invloves","involves"],["invocaition","invocation"],["invokable","invocable"],["invokation","invocation"],["invokations","invocations"],["invokve","invoke"],["invokved","invoked"],["invokves","invokes"],["invokving","invoking"],["involvment","involvement"],["invovle","involve"],["invovled","involved"],["invovles","involves"],["invovling","involving"],["ioclt","ioctl"],["iomaped","iomapped"],["ionde","inode"],["iplementation","implementation"],["ipmrovement","improvement"],["ipmrovements","improvements"],["iput","input"],["ireelevant","irrelevant"],["irelevent","irrelevant"],["iresistable","irresistible"],["iresistably","irresistibly"],["iresistible","irresistible"],["iresistibly","irresistibly"],["iritable","irritable"],["iritate","irritate"],["iritated","irritated"],["iritating","irritating"],["ironicly","ironically"],["irradate","irradiate"],["irradated","irradiated"],["irradates","irradiates"],["irradating","irradiating"],["irradation","irradiation"],["irraditate","irradiate"],["irraditated","irradiated"],["irraditates","irradiates"],["irraditating","irradiating"],["irregularties","irregularities"],["irregulier","irregular"],["irregulierties","irregularities"],["irrelavent","irrelevant"],["irrelevent","irrelevant"],["irrelvant","irrelevant"],["irreplacable","irreplaceable"],["irreplacalbe","irreplaceable"],["irreproducable","irreproducible"],["irresepective","irrespective"],["irresistable","irresistible"],["irresistably","irresistibly"],["irreversable","irreversible"],["is'nt","isn't"],["isalha","isalpha"],["isconnection","isconnected"],["iscrated","iscreated"],["iself","itself"],["iselfe","itself"],["iserting","inserting"],["isimilar","similar"],["isloation","isolation"],["ismas","isthmus"],["isn;t","isn't"],["isnpiron","inspiron"],["isnt'","isn't"],["isnt","isn't"],["isnt;","isn't"],["isntalation","installation"],["isntalations","installations"],["isntallation","installation"],["isntallations","installations"],["isntance","instance"],["isntances","instances"],["isotrophically","isotropically"],["ispatches","dispatches"],["isplay","display"],["Israelies","Israelis"],["isse","issue"],["isses","issues"],["isssue","issue"],["isssued","issued"],["isssues","issues"],["issueing","issuing"],["istalling","installing"],["istance","instance"],["istead","instead"],["istened","listened"],["istener","listener"],["isteners","listeners"],["istening","listening"],["isue","issue"],["iteartor","iterator"],["iteator","iterator"],["iteger","integer"],["itegral","integral"],["itegrals","integrals"],["iten","item"],["itens","items"],["itention","intention"],["itentional","intentional"],["itentionally","intentionally"],["itentionaly","intentionally"],["iteraion","iteration"],["iteraions","iterations"],["iteratable","iterable"],["iterater","iterator"],["iteraterate","iterate"],["iteratered","iterated"],["iteratior","iterator"],["iteratiors","iterators"],["iteratons","iterations"],["itereating","iterating"],["iterface","interface"],["iterfaces","interfaces"],["iternations","iterations"],["iterpreter","interpreter"],["iterration","iteration"],["iterrations","iterations"],["iterrupt","interrupt"],["iterstion","iteration"],["iterstions","iterations"],["itertation","iteration"],["iteself","itself"],["itesm","items"],["itheir","their"],["itheirs","theirs"],["itialise","initialise"],["itialised","initialised"],["itialises","initialises"],["itialising","initialising"],["itialize","initialize"],["itialized","initialized"],["itializes","initializes"],["itializing","initializing"],["itnerest","interest"],["itnerface","interface"],["itnerfaces","interfaces"],["itnernal","internal"],["itnerprelation","interpretation"],["itnerpret","interpret"],["itnerpretation","interpretation"],["itnerpretaton","interpretation"],["itnerpreted","interpreted"],["itnerpreter","interpreter"],["itnerpreting","interpreting"],["itnerprets","interprets"],["itnervals","intervals"],["itnroduced","introduced"],["itsef","itself"],["itsel","itself"],["itselfs","itself"],["itselt","itself"],["itselv","itself"],["itsems","items"],["itslef","itself"],["itslev","itself"],["itsself","itself"],["itterate","iterate"],["itterated","iterated"],["itterates","iterates"],["itterating","iterating"],["itteration","iteration"],["itterations","iterations"],["itterative","iterative"],["itterator","iterator"],["itterators","iterators"],["iunior","junior"],["ivalid","invalid"],["ivocation","invocation"],["ivoked","invoked"],["iwithout","without"],["iwll","will"],["iwth","with"],["jagid","jagged"],["jagwar","jaguar"],["januar","January"],["janurary","January"],["Januray","January"],["japanease","japanese"],["japaneese","Japanese"],["Japanes","Japanese"],["japanses","Japanese"],["jaques","jacques"],["javacript","javascript"],["javascipt","javascript"],["javasciript","javascript"],["javascritp","javascript"],["javascropt","javascript"],["javasript","javascript"],["javasrript","javascript"],["javescript","javascript"],["javsscript","javascript"],["jeapardy","jeopardy"],["jeffies","jiffies"],["jekins","Jenkins"],["jelous","jealous"],["jelousy","jealousy"],["jelusey","jealousy"],["jenkin","Jenkins"],["jenkkins","Jenkins"],["jenkns","Jenkins"],["jepordize","jeopardize"],["jewllery","jewellery"],["jhondoe","johndoe"],["jist","gist"],["jitterr","jitter"],["jitterring","jittering"],["jodpers","jodhpurs"],["Johanine","Johannine"],["joineable","joinable"],["joinning","joining"],["jont","joint"],["jonts","joints"],["jornal","journal"],["jorunal","journal"],["Jospeh","Joseph"],["jossle","jostle"],["jouney","journey"],["journied","journeyed"],["journies","journeys"],["joystik","joystick"],["jscipt","jscript"],["jstu","just"],["jsut","just"],["juadaism","Judaism"],["juadism","Judaism"],["judical","judicial"],["judisuary","judiciary"],["juducial","judicial"],["juge","judge"],["juipter","Jupiter"],["jumo","jump"],["jumoed","jumped"],["jumpimng","jumping"],["jupyther","Jupyter"],["juristiction","jurisdiction"],["juristictions","jurisdictions"],["jus","just"],["justfied","justified"],["justication","justification"],["justifed","justified"],["justs","just"],["juxt","just"],["juxtification","justification"],["juxtifications","justifications"],["juxtified","justified"],["juxtifies","justifies"],["juxtifying","justifying"],["kakfa","Kafka"],["kazakstan","Kazakhstan"],["keep-alives","keep-alive"],["keept","kept"],["kenerl","kernel"],["kenerls","kernels"],["kenrel","kernel"],["kenrels","kernels"],["kepping","keeping"],["kepps","keeps"],["kerenl","kernel"],["kerenls","kernels"],["kernal","kernel"],["kernals","kernels"],["kernerl","kernel"],["kernerls","kernels"],["keword","keyword"],["kewords","keywords"],["kewword","keyword"],["kewwords","keywords"],["keybaord","keyboard"],["keybaords","keyboards"],["keyboaard","keyboard"],["keyboaards","keyboards"],["keyboad","keyboard"],["keyboads","keyboards"],["keybooard","keyboard"],["keybooards","keyboards"],["keyborad","keyboard"],["keyborads","keyboards"],["keybord","keyboard"],["keybords","keyboards"],["keybroad","keyboard"],["keybroads","keyboards"],["keyevente","keyevent"],["keyords","keywords"],["keyoutch","keytouch"],["keyowrd","keyword"],["keypair","key pair"],["keypairs","key pairs"],["keyservers","key servers"],["keystokes","keystrokes"],["keyward","keyword"],["keywoards","keywords"],["keywork","keyword"],["keyworkd","keyword"],["keyworkds","keywords"],["keywors","keywords"],["keywprd","keyword"],["kindergarden","kindergarten"],["kindgergarden","kindergarten"],["kindgergarten","kindergarten"],["kinf","kind"],["kinfs","kinds"],["kinnect","Kinect"],["klenex","kleenex"],["klick","click"],["klicked","clicked"],["klicks","clicks"],["klunky","clunky"],["knive","knife"],["kno","know"],["knowladge","knowledge"],["knowlage","knowledge"],["knowlageable","knowledgeable"],["knowlegde","knowledge"],["knowlege","knowledge"],["knowlegeabel","knowledgeable"],["knowlegeable","knowledgeable"],["knwo","know"],["knwoing","knowing"],["knwoingly","knowingly"],["knwon","known"],["knwos","knows"],["kocalized","localized"],["konstant","constant"],["konstants","constants"],["konw","know"],["konwn","known"],["konws","knows"],["koordinate","coordinate"],["koordinates","coordinates"],["kown","known"],["kubenates","Kubernetes"],["kubenernetes","Kubernetes"],["kubenertes","Kubernetes"],["kubenetes","Kubernetes"],["kubenretes","Kubernetes"],["kuberenetes","Kubernetes"],["kuberentes","Kubernetes"],["kuberetes","Kubernetes"],["kubermetes","Kubernetes"],["kubernates","Kubernetes"],["kubernests","Kubernetes"],["kubernete","Kubernetes"],["kuberntes","Kubernetes"],["kwno","know"],["kwoledgebase","knowledge base"],["kyrillic","cyrillic"],["labbel","label"],["labbeled","labeled"],["labbels","labels"],["labed","labeled"],["labeld","labelled"],["labirinth","labyrinth"],["lable","label"],["lablel","label"],["lablels","labels"],["lables","labels"],["labouriously","laboriously"],["labratory","laboratory"],["lagacies","legacies"],["lagacy","legacy"],["laguage","language"],["laguages","languages"],["laguague","language"],["laguagues","languages"],["laiter","later"],["lamda","lambda"],["lamdas","lambdas"],["lanaguage","language"],["lanaguge","language"],["lanaguges","languages"],["lanagugs","languages"],["lanauge","language"],["langage","language"],["langauage","language"],["langauge","language"],["langauges","languages"],["langeuage","language"],["langeuagesection","languagesection"],["langht","length"],["langhts","lengths"],["langth","length"],["langths","lengths"],["languace","language"],["languaces","languages"],["languae","language"],["languaes","languages"],["language-spacific","language-specific"],["languahe","language"],["languahes","languages"],["languaje","language"],["languajes","languages"],["langual","lingual"],["languale","language"],["languales","languages"],["langualge","language"],["langualges","languages"],["languange","language"],["languanges","languages"],["languaqe","language"],["languaqes","languages"],["languate","language"],["languates","languages"],["languauge","language"],["languauges","languages"],["languege","language"],["langueges","languages"],["langugae","language"],["langugaes","languages"],["langugage","language"],["langugages","languages"],["languge","language"],["languges","languages"],["langugue","language"],["langugues","languages"],["lanich","launch"],["lanuage","language"],["lanuch","launch"],["lanuched","launched"],["lanuches","launches"],["lanuching","launching"],["lanugage","language"],["lanugages","languages"],["laod","load"],["laoded","loaded"],["laoding","loading"],["laods","loads"],["laout","layout"],["larg","large"],["largst","largest"],["larrry","larry"],["lastes","latest"],["lastr","last"],["latets","latest"],["lating","latin"],["latitide","latitude"],["latitue","latitude"],["latitute","latitude"],["latops","laptops"],["latset","latest"],["lattitude","latitude"],["lauch","launch"],["lauched","launched"],["laucher","launcher"],["lauches","launches"],["lauching","launching"],["lauguage","language"],["launck","launch"],["launhed","launched"],["lavae","larvae"],["layed","laid"],["layou","layout"],["lazer","laser"],["laziliy","lazily"],["lazyness","laziness"],["lcoally","locally"],["lcoation","location"],["lcuase","clause"],["leaast","least"],["leace","leave"],["leack","leak"],["leagacy","legacy"],["leagal","legal"],["leagalise","legalise"],["leagality","legality"],["leagalize","legalize"],["leagcy","legacy"],["leage","league"],["leagel","legal"],["leagelise","legalise"],["leagelity","legality"],["leagelize","legalize"],["leageue","league"],["leagl","legal"],["leaglise","legalise"],["leaglity","legality"],["leaglize","legalize"],["leapyear","leap year"],["leapyears","leap years"],["leary","leery"],["leaset","least"],["leasy","least"],["leathal","lethal"],["leats","least"],["leaveing","leaving"],["leavong","leaving"],["lefted","left"],["legac","legacy"],["legact","legacy"],["legalimate","legitimate"],["legasy","legacy"],["legel","legal"],["leggacies","legacies"],["leggacy","legacy"],["leght","length"],["leghts","lengths"],["legitamate","legitimate"],["legitimiately","legitimately"],["legitmate","legitimate"],["legnth","length"],["legth","length"],["legths","lengths"],["leibnitz","leibniz"],["leightweight","lightweight"],["lene","lens"],["lenggth","length"],["lengh","length"],["lenghs","lengths"],["lenght","length"],["lenghten","lengthen"],["lenghtend","lengthened"],["lenghtened","lengthened"],["lenghtening","lengthening"],["lenghth","length"],["lenghthen","lengthen"],["lenghths","lengths"],["lenghthy","lengthy"],["lenghtly","lengthy"],["lenghts","lengths"],["lenghty","lengthy"],["lengt","length"],["lengten","lengthen"],["lengtext","longtext"],["lengthes","lengths"],["lengthh","length"],["lengts","lengths"],["leniant","lenient"],["leninent","lenient"],["lentgh","length"],["lentghs","lengths"],["lenth","length"],["lenths","lengths"],["leran","learn"],["leraned","learned"],["lerans","learns"],["lessson","lesson"],["lesssons","lessons"],["lesstiff","LessTif"],["letgitimate","legitimate"],["letmost","leftmost"],["leutenant","lieutenant"],["levaridge","leverage"],["levetate","levitate"],["levetated","levitated"],["levetates","levitates"],["levetating","levitating"],["levl","level"],["levle","level"],["lexial","lexical"],["lexigraphic","lexicographic"],["lexigraphical","lexicographical"],["lexigraphically","lexicographically"],["leyer","layer"],["leyered","layered"],["leyering","layering"],["leyers","layers"],["liares","liars"],["liasion","liaison"],["liason","liaison"],["liasons","liaisons"],["libarary","library"],["libaries","libraries"],["libary","library"],["libell","libel"],["liberaries","libraries"],["liberary","library"],["liberoffice","libreoffice"],["liberry","library"],["libgng","libpng"],["libguistic","linguistic"],["libguistics","linguistics"],["libitarianisn","libertarianism"],["libraarie","library"],["libraaries","libraries"],["libraary","library"],["librabarie","library"],["librabaries","libraries"],["librabary","library"],["librabie","library"],["librabies","libraries"],["librabrie","library"],["librabries","libraries"],["librabry","library"],["libraby","library"],["libraie","library"],["libraier","library"],["libraies","libraries"],["libraiesr","libraries"],["libraire","library"],["libraires","libraries"],["librairies","libraries"],["librairy","library"],["libralie","library"],["libralies","libraries"],["libraly","library"],["libraray","library"],["libraris","libraries"],["librarries","libraries"],["librarry","library"],["libraryes","libraries"],["libratie","library"],["libraties","libraries"],["libraty","library"],["libray","library"],["librayr","library"],["libreoffie","libreoffice"],["libreoficekit","libreofficekit"],["libreries","libraries"],["librery","library"],["libries","libraries"],["librraies","libraries"],["librraries","libraries"],["librrary","library"],["librray","library"],["libstc++","libstdc++"],["licate","locate"],["licated","located"],["lication","location"],["lications","locations"],["licenceing","licencing"],["licese","license"],["licesne","license"],["licesnes","licenses"],["licesning","licensing"],["licesnse","license"],["licesnses","licenses"],["licesnsing","licensing"],["licsense","license"],["licsenses","licenses"],["licsensing","licensing"],["lieing","lying"],["liek","like"],["liekd","liked"],["lient","client"],["lients","clients"],["liesure","leisure"],["lieuenant","lieutenant"],["liev","live"],["lieved","lived"],["lifceycle","lifecycle"],["lifecyle","lifecycle"],["lifes","lives"],["lifeycle","lifecycle"],["liftime","lifetime"],["lighing","lighting"],["lightbulp","lightbulb"],["lightweigh","lightweight"],["lightwieght","lightweight"],["lightwight","lightweight"],["lightyear","light year"],["lightyears","light years"],["ligth","light"],["ligthing","lighting"],["ligths","lights"],["ligthweight","lightweight"],["ligthweights","lightweights"],["liitle","little"],["likeley","likely"],["likelly","likely"],["likelyhood","likelihood"],["likewis","likewise"],["likey","likely"],["liklelihood","likelihood"],["likley","likely"],["likly","likely"],["lileral","literal"],["limiation","limitation"],["limiations","limitations"],["liminted","limited"],["limitaion","limitation"],["limite","limit"],["limitiaion","limitation"],["limitiaions","limitations"],["limitiation","limitation"],["limitiations","limitations"],["limitied","limited"],["limitier","limiter"],["limitiers","limiters"],["limitiing","limiting"],["limitimg","limiting"],["limition","limitation"],["limitions","limitations"],["limitis","limits"],["limititation","limitation"],["limititations","limitations"],["limitited","limited"],["limititer","limiter"],["limititers","limiters"],["limititing","limiting"],["limitted","limited"],["limitter","limiter"],["limitting","limiting"],["limitts","limits"],["limk","link"],["limted","limited"],["limti","limit"],["limts","limits"],["linaer","linear"],["linar","linear"],["linarly","linearly"],["lincese","license"],["lincesed","licensed"],["linceses","licenses"],["lineary","linearly"],["linerisation","linearisation"],["linerisations","linearisations"],["lineseach","linesearch"],["lineseaches","linesearches"],["liness","lines"],["linewdith","linewidth"],["linez","lines"],["lingth","length"],["linheight","lineheight"],["linkfy","linkify"],["linnaena","linnaean"],["lintain","lintian"],["linz","lines"],["lippizaner","lipizzaner"],["liquify","liquefy"],["lisetning","listening"],["lising","listing"],["listapck","listpack"],["listbbox","listbox"],["listeing","listening"],["listeneing","listening"],["listeneres","listeners"],["listenes","listens"],["listensers","listeners"],["listenter","listener"],["listenters","listeners"],["listernes","listeners"],["listner","listener"],["listners","listeners"],["litaral","literal"],["litarally","literally"],["litarals","literals"],["litature","literature"],["liteautrue","literature"],["literaly","literally"],["literture","literature"],["litle","little"],["litquid","liquid"],["litquids","liquids"],["lits","list"],["litte","little"],["littel","little"],["littel-endian","little-endian"],["littele","little"],["littelry","literally"],["litteral","literal"],["litterally","literally"],["litterals","literals"],["litterate","literate"],["litterature","literature"],["liuke","like"],["liveing","living"],["livel","level"],["livetime","lifetime"],["livley","lively"],["lizens","license"],["lizense","license"],["lizensing","licensing"],["lke","like"],["llinear","linear"],["lmits","limits"],["loaader","loader"],["loacal","local"],["loacality","locality"],["loacally","locally"],["loacation","location"],["loaction","location"],["loactions","locations"],["loadig","loading"],["loadin","loading"],["loadning","loading"],["locae","locate"],["locaes","locates"],["locahost","localhost"],["locaiing","locating"],["locailty","locality"],["locaing","locating"],["locaion","location"],["locaions","locations"],["locaise","localise"],["locaised","localised"],["locaiser","localiser"],["locaises","localises"],["locaite","locate"],["locaites","locates"],["locaiting","locating"],["locaition","location"],["locaitions","locations"],["locaiton","location"],["locaitons","locations"],["locaize","localize"],["locaized","localized"],["locaizer","localizer"],["locaizes","localizes"],["localation","location"],["localed","located"],["localtion","location"],["localtions","locations"],["localy","locally"],["localzation","localization"],["locatins","locations"],["loccked","locked"],["locgical","logical"],["lockingf","locking"],["lodable","loadable"],["loded","loaded"],["loder","loader"],["loders","loaders"],["loding","loading"],["loev","love"],["logarithimic","logarithmic"],["logarithmical","logarithmically"],["logaritmic","logarithmic"],["logcal","logical"],["loggging","logging"],["logial","logical"],["logially","logically"],["logicaly","logically"],["logictech","logitech"],["logile","logfile"],["logitude","longitude"],["logitudes","longitudes"],["logoic","logic"],["logorithm","logarithm"],["logorithmic","logarithmic"],["logorithms","logarithms"],["logrithm","logarithm"],["logrithms","logarithms"],["logwritter","logwriter"],["loign","login"],["loigns","logins"],["lokal","local"],["lokale","locale"],["lokales","locales"],["lokaly","locally"],["lolal","total"],["lolerant","tolerant"],["lond","long"],["lonelyness","loneliness"],["long-runnign","long-running"],["longers","longer"],["longitudonal","longitudinal"],["longitue","longitude"],["longitutde","longitude"],["longitute","longitude"],["longst","longest"],["longuer","longer"],["longuest","longest"],["lonley","lonely"],["looback","loopback"],["loobacks","loopbacks"],["loobpack","loopback"],["loockdown","lockdown"],["lookes","looks"],["looknig","looking"],["looop","loop"],["loopup","lookup"],["loosley","loosely"],["loosly","loosely"],["losely","loosely"],["losen","loosen"],["losened","loosened"],["lotharingen","Lothringen"],["lpatform","platform"],["luckly","luckily"],["luminose","luminous"],["luminousity","luminosity"],["lveo","love"],["lvoe","love"],["Lybia","Libya"],["maake","make"],["mabe","maybe"],["mabye","maybe"],["macack","macaque"],["macason","moccasin"],["macasons","moccasins"],["maccro","macro"],["maccros","macros"],["machanism","mechanism"],["machanisms","mechanisms"],["mached","matched"],["maches","matches"],["machettie","machete"],["machinary","machinery"],["machine-dependend","machine-dependent"],["machiness","machines"],["mackeral","mackerel"],["maco","macro"],["macor","macro"],["macors","macros"],["macpakge","package"],["macroses","macros"],["macrow","macro"],["macthing","matching"],["madantory","mandatory"],["madatory","mandatory"],["maddness","madness"],["maesure","measure"],["maesured","measured"],["maesurement","measurement"],["maesurements","measurements"],["maesures","measures"],["maesuring","measuring"],["magasine","magazine"],["magincian","magician"],["magisine","magazine"],["magizine","magazine"],["magnatiude","magnitude"],["magnatude","magnitude"],["magnificient","magnificent"],["magolia","magnolia"],["mahcine","machine"],["maibe","maybe"],["maibox","mailbox"],["mailformed","malformed"],["mailling","mailing"],["maillinglist","mailing list"],["maillinglists","mailing lists"],["mailny","mainly"],["mailstrum","maelstrom"],["mainenance","maintenance"],["maininly","mainly"],["mainling","mailing"],["maintainance","maintenance"],["maintaince","maintenance"],["maintainces","maintenances"],["maintainence","maintenance"],["maintaing","maintaining"],["maintan","maintain"],["maintanance","maintenance"],["maintance","maintenance"],["maintane","maintain"],["maintanence","maintenance"],["maintaner","maintainer"],["maintaners","maintainers"],["maintans","maintains"],["maintenace","maintenance"],["maintenence","maintenance"],["maintiain","maintain"],["maintians","maintains"],["maintinaing","maintaining"],["maintioned","mentioned"],["mairabd","MariaDB"],["mairadb","MariaDB"],["maitain","maintain"],["maitainance","maintenance"],["maitained","maintained"],["maitainers","maintainers"],["majoroty","majority"],["maka","make"],["makefle","makefile"],["makeing","making"],["makign","making"],["makretplace","marketplace"],["makro","macro"],["makros","macros"],["Malcom","Malcolm"],["maliciousally","maliciously"],["malicius","malicious"],["maliciusally","maliciously"],["maliciusly","maliciously"],["malicous","malicious"],["malicousally","maliciously"],["malicously","maliciously"],["maline","malign"],["malined","maligned"],["malining","maligning"],["malins","maligns"],["malless","malice"],["malplace","misplace"],["malplaced","misplaced"],["maltesian","Maltese"],["mamagement","management"],["mamal","mammal"],["mamalian","mammalian"],["mamento","memento"],["mamentos","mementos"],["mamory","memory"],["mamuth","mammoth"],["manafacturer","manufacturer"],["manafacturers","manufacturers"],["managament","management"],["manageed","managed"],["managemenet","management"],["managenment","management"],["managet","manager"],["managets","managers"],["managmenet","management"],["managment","management"],["manaise","mayonnaise"],["manal","manual"],["manange","manage"],["manangement","management"],["mananger","manager"],["manangers","managers"],["manaul","manual"],["manaully","manually"],["manauls","manuals"],["manaze","mayonnaise"],["mandatatory","mandatory"],["mandetory","mandatory"],["manement","management"],["maneouvre","manoeuvre"],["maneouvred","manoeuvred"],["maneouvres","manoeuvres"],["maneouvring","manoeuvring"],["manetain","maintain"],["manetained","maintained"],["manetainer","maintainer"],["manetainers","maintainers"],["manetaining","maintaining"],["manetains","maintains"],["mangaed","managed"],["mangaement","management"],["mangager","manager"],["mangagers","managers"],["mangement","management"],["mangementt","management"],["manifacture","manufacture"],["manifactured","manufactured"],["manifacturer","manufacturer"],["manifacturers","manufacturers"],["manifactures","manufactures"],["manifect","manifest"],["manipluate","manipulate"],["manipluated","manipulated"],["manipulatin","manipulating"],["manipulaton","manipulation"],["manipute","manipulate"],["maniputed","manipulated"],["maniputing","manipulating"],["manipution","manipulation"],["maniputions","manipulations"],["maniputor","manipulator"],["manisfestations","manifestations"],["maniuplate","manipulate"],["maniuplated","manipulated"],["maniuplates","manipulates"],["maniuplating","manipulating"],["maniuplation","manipulation"],["maniuplations","manipulations"],["maniuplator","manipulator"],["maniuplators","manipulators"],["mannor","manner"],["mannual","manual"],["mannually","manually"],["mannualy","manually"],["manoeuverability","maneuverability"],["manoeuvering","maneuvering"],["manouevring","manoeuvring"],["mantain","maintain"],["mantainable","maintainable"],["mantained","maintained"],["mantainer","maintainer"],["mantainers","maintainers"],["mantaining","maintaining"],["mantains","maintains"],["mantanine","maintain"],["mantanined","maintained"],["mantatory","mandatory"],["mantenance","maintenance"],["manualy","manually"],["manualyl","manually"],["manualyy","manually"],["manuell","manual"],["manuelly","manually"],["manufactuerd","manufactured"],["manufacturedd","manufactured"],["manufature","manufacture"],["manufatured","manufactured"],["manufaturing","manufacturing"],["manufaucturing","manufacturing"],["manulally","manually"],["manule","manual"],["manuley","manually"],["manully","manually"],["manuly","manually"],["manupilations","manipulations"],["manupulate","manipulate"],["manupulated","manipulated"],["manupulates","manipulates"],["manupulating","manipulating"],["manupulation","manipulation"],["manupulations","manipulations"],["manuver","maneuver"],["manyal","manual"],["manyally","manually"],["manyals","manuals"],["mapable","mappable"],["mape","map"],["maped","mapped"],["maping","mapping"],["mapings","mappings"],["mapp","map"],["mappeds","mapped"],["mappeed","mapped"],["mappping","mapping"],["mapppings","mappings"],["margings","margins"],["mariabd","MariaDB"],["mariage","marriage"],["marjority","majority"],["marketting","marketing"],["markey","marquee"],["markeys","marquees"],["marmelade","marmalade"],["marrage","marriage"],["marraige","marriage"],["marrtyred","martyred"],["marryied","married"],["marshmellow","marshmallow"],["marshmellows","marshmallows"],["marter","martyr"],["masakist","masochist"],["mashetty","machete"],["mashine","machine"],["mashined","machined"],["mashines","machines"],["masia","messiah"],["masicer","massacre"],["masiff","massif"],["maskerading","masquerading"],["maskeraid","masquerade"],["masos","macos"],["masquarade","masquerade"],["masqurade","masquerade"],["Massachusettes","Massachusetts"],["Massachussets","Massachusetts"],["Massachussetts","Massachusetts"],["massagebox","messagebox"],["massectomy","mastectomy"],["massewer","masseur"],["massmedia","mass media"],["massoose","masseuse"],["masster","master"],["masteer","master"],["masterbation","masturbation"],["mastquerade","masquerade"],["mata-data","meta-data"],["matadata","metadata"],["matainer","maintainer"],["matainers","maintainers"],["mataphysical","metaphysical"],["matatable","metatable"],["matc","match"],["matchies","matches"],["matchign","matching"],["matchin","matching"],["matchs","matches"],["matchter","matcher"],["matcing","matching"],["mateiral","material"],["mateirals","materials"],["matemathical","mathematical"],["materaial","material"],["materaials","materials"],["materail","material"],["materails","materials"],["materalists","materialist"],["materil","material"],["materilism","materialism"],["materilize","materialize"],["materils","materials"],["materla","material"],["materlas","materials"],["mathamatics","mathematics"],["mathces","matches"],["mathch","match"],["mathched","matched"],["mathches","matches"],["mathching","matching"],["mathcing","matching"],["mathed","matched"],["mathematicaly","mathematically"],["mathematican","mathematician"],["mathematicas","mathematics"],["mathes","matches"],["mathetician","mathematician"],["matheticians","mathematicians"],["mathimatic","mathematic"],["mathimatical","mathematical"],["mathimatically","mathematically"],["mathimatician","mathematician"],["mathimaticians","mathematicians"],["mathimatics","mathematics"],["mathing","matching"],["mathmatical","mathematical"],["mathmatically","mathematically"],["mathmatician","mathematician"],["mathmaticians","mathematicians"],["mathod","method"],["matinay","matinee"],["matix","matrix"],["matreial","material"],["matreials","materials"],["matresses","mattresses"],["matrial","material"],["matrials","materials"],["matser","master"],["matzch","match"],["mavrick","maverick"],["mawsoleum","mausoleum"],["maximice","maximize"],["maximim","maximum"],["maximimum","maximum"],["maximium","maximum"],["maximnum","maximum"],["maximnums","maximums"],["maximun","maximum"],["maxinum","maximum"],["maxium","maximum"],["maxiumum","maximum"],["maxmimum","maximum"],["maxmium","maximum"],["maxmiums","maximums"],["maxosx","macosx"],["maxumum","maximum"],["maybee","maybe"],["mayonase","mayonnaise"],["mayority","majority"],["mayu","may"],["mayybe","maybe"],["mazilla","Mozilla"],["mccarthyst","mccarthyist"],["mchanic","mechanic"],["mchanical","mechanical"],["mchanically","mechanically"],["mchanicals","mechanicals"],["mchanics","mechanics"],["mchanism","mechanism"],["mchanisms","mechanisms"],["mcroscope","microscope"],["mcroscopes","microscopes"],["mcroscopic","microscopic"],["mcroscopies","microscopies"],["mcroscopy","microscopy"],["mdification","modification"],["mdifications","modifications"],["mdified","modified"],["mdifier","modifier"],["mdifiers","modifiers"],["mdifies","modifies"],["mdify","modify"],["mdifying","modifying"],["mdoel","model"],["mdoeled","modeled"],["mdoeling","modeling"],["mdoelled","modelled"],["mdoelling","modelling"],["mdoels","models"],["meaasure","measure"],["meaasured","measured"],["meaasures","measures"],["meachanism","mechanism"],["meachanisms","mechanisms"],["meachinism","mechanism"],["meachinisms","mechanisms"],["meachnism","mechanism"],["meachnisms","mechanisms"],["meading","meaning"],["meaing","meaning"],["mealflur","millefleur"],["meanigfull","meaningful"],["meanign","meaning"],["meanin","meaning"],["meaninful","meaningful"],["meaningfull","meaningful"],["meanining","meaning"],["meaninless","meaningless"],["meaninng","meaning"],["meassurable","measurable"],["meassurably","measurably"],["meassure","measure"],["meassured","measured"],["meassurement","measurement"],["meassurements","measurements"],["meassures","measures"],["meassuring","measuring"],["measue","measure"],["measued","measured"],["measuement","measurement"],["measuements","measurements"],["measuer","measurer"],["measues","measures"],["measuing","measuring"],["measuremenet","measurement"],["measuremenets","measurements"],["measurmenet","measurement"],["measurmenets","measurements"],["measurment","measurement"],["measurments","measurements"],["meatadata","metadata"],["meatfile","metafile"],["meathod","method"],["meaure","measure"],["meaured","measured"],["meaurement","measurement"],["meaurements","measurements"],["meaurer","measurer"],["meaurers","measurers"],["meaures","measures"],["meauring","measuring"],["meausure","measure"],["meausures","measures"],["meber","member"],["mebmer","member"],["mebrain","membrane"],["mebrains","membranes"],["mebran","membrane"],["mebrans","membranes"],["mecahinsm","mechanism"],["mecahinsms","mechanisms"],["mecahnic","mechanic"],["mecahnics","mechanics"],["mecahnism","mechanism"],["mecanical","mechanical"],["mecanism","mechanism"],["mecanisms","mechanisms"],["meccob","macabre"],["mechamism","mechanism"],["mechamisms","mechanisms"],["mechananism","mechanism"],["mechancial","mechanical"],["mechandise","merchandise"],["mechanim","mechanism"],["mechanims","mechanisms"],["mechanis","mechanism"],["mechansim","mechanism"],["mechansims","mechanisms"],["mechine","machine"],["mechines","machines"],["mechinism","mechanism"],["mechnanism","mechanism"],["mechnism","mechanism"],["mechnisms","mechanisms"],["medacine","medicine"],["medai","media"],["meddo","meadow"],["meddos","meadows"],["medeival","medieval"],["medevial","medieval"],["medhod","method"],["medhods","methods"],["medievel","medieval"],["medifor","metaphor"],["medifors","metaphors"],["medioker","mediocre"],["mediphor","metaphor"],["mediphors","metaphors"],["medisinal","medicinal"],["mediterainnean","mediterranean"],["Mediteranean","Mediterranean"],["medow","meadow"],["medows","meadows"],["meeds","needs"],["meens","means"],["meerkrat","meerkat"],["meerly","merely"],["meetign","meeting"],["meganism","mechanism"],["mege","merge"],["mehcanic","mechanic"],["mehcanical","mechanical"],["mehcanically","mechanically"],["mehcanics","mechanics"],["mehod","method"],["mehodical","methodical"],["mehodically","methodically"],["mehods","methods"],["mehtod","method"],["mehtodical","methodical"],["mehtodically","methodically"],["mehtods","methods"],["meida","media"],["melancoly","melancholy"],["melieux","milieux"],["melineum","millennium"],["melineumms","millennia"],["melineums","millennia"],["melinneum","millennium"],["melinneums","millennia"],["mellineum","millennium"],["mellineums","millennia"],["mellinneum","millennium"],["mellinneums","millennia"],["membran","membrane"],["membranaphone","membranophone"],["membrans","membranes"],["memcahe","memcache"],["memcahed","memcached"],["memeasurement","measurement"],["memeber","member"],["memebered","remembered"],["memebers","members"],["memebership","membership"],["memeberships","memberships"],["memebr","member"],["memebrof","memberof"],["memebrs","members"],["mememory","memory"],["mememto","memento"],["memeory","memory"],["memer","member"],["memership","membership"],["memerships","memberships"],["memery","memory"],["memick","mimic"],["memicked","mimicked"],["memicking","mimicking"],["memics","mimics"],["memmber","member"],["memmick","mimic"],["memmicked","mimicked"],["memmicking","mimicking"],["memmics","mimics"],["memmory","memory"],["memoery","memory"],["memomry","memory"],["memor","memory"],["memoty","memory"],["memove","memmove"],["mempry","memory"],["memroy","memory"],["memwar","memoir"],["memwars","memoirs"],["memwoir","memoir"],["memwoirs","memoirs"],["menally","mentally"],["menas","means"],["menetion","mention"],["menetioned","mentioned"],["menetioning","mentioning"],["menetions","mentions"],["meni","menu"],["menioned","mentioned"],["mensioned","mentioned"],["mensioning","mentioning"],["ment","meant"],["menthods","methods"],["mentiond","mentioned"],["mentione","mentioned"],["mentionned","mentioned"],["mentionning","mentioning"],["mentionnned","mentioned"],["menual","manual"],["menue","menu"],["menues","menus"],["menutitems","menuitems"],["meraj","mirage"],["merajes","mirages"],["merang","meringue"],["mercahnt","merchant"],["mercentile","mercantile"],["merchantibility","merchantability"],["merecat","meerkat"],["merecats","meerkats"],["mergable","mergeable"],["merget","merge"],["mergge","merge"],["mergged","merged"],["mergging","merging"],["mermory","memory"],["merory","memory"],["merrors","mirrors"],["mesage","message"],["mesages","messages"],["mesaureed","measured"],["meskeeto","mosquito"],["meskeetos","mosquitoes"],["mesoneen","mezzanine"],["mesoneens","mezzanines"],["messaes","messages"],["messag","message"],["messagetqueue","messagequeue"],["messagin","messaging"],["messagoe","message"],["messags","messages"],["messagses","messages"],["messanger","messenger"],["messangers","messengers"],["messave","message"],["messeges","messages"],["messenging","messaging"],["messgae","message"],["messgaed","messaged"],["messgaes","messages"],["messge","message"],["messges","messages"],["messsage","message"],["messsages","messages"],["messure","measure"],["messured","measured"],["messurement","measurement"],["messures","measures"],["messuring","measuring"],["messurment","measurement"],["mesure","measure"],["mesured","measured"],["mesurement","measurement"],["mesurements","measurements"],["mesures","measures"],["mesuring","measuring"],["mesurment","measurement"],["meta-attrubute","meta-attribute"],["meta-attrubutes","meta-attributes"],["meta-progamming","meta-programming"],["metacharater","metacharacter"],["metacharaters","metacharacters"],["metalic","metallic"],["metalurgic","metallurgic"],["metalurgical","metallurgical"],["metalurgy","metallurgy"],["metamorphysis","metamorphosis"],["metapackge","metapackage"],["metapackges","metapackages"],["metaphore","metaphor"],["metaphoricial","metaphorical"],["metaprogamming","metaprogramming"],["metatdata","metadata"],["metdata","metadata"],["meterial","material"],["meterials","materials"],["meterologist","meteorologist"],["meterology","meteorology"],["methaphor","metaphor"],["methaphors","metaphors"],["methd","method"],["methdos","methods"],["methds","methods"],["methid","method"],["methids","methods"],["methjod","method"],["methodd","method"],["methode","method"],["methoden","methods"],["methodss","methods"],["methon","method"],["methons","methods"],["methot","method"],["methots","methods"],["metifor","metaphor"],["metifors","metaphors"],["metion","mention"],["metioned","mentioned"],["metiphor","metaphor"],["metiphors","metaphors"],["metod","method"],["metodologies","methodologies"],["metodology","methodology"],["metods","methods"],["metrig","metric"],["metrigal","metrical"],["metrigs","metrics"],["mey","may"],["meybe","maybe"],["mezmorise","mesmerise"],["mezmorised","mesmerised"],["mezmoriser","mesmeriser"],["mezmorises","mesmerises"],["mezmorising","mesmerising"],["mezmorize","mesmerize"],["mezmorized","mesmerized"],["mezmorizer","mesmerizer"],["mezmorizes","mesmerizes"],["mezmorizing","mesmerizing"],["miagic","magic"],["miagical","magical"],["mial","mail"],["mices","mice"],["Michagan","Michigan"],["micorcode","microcode"],["micorcodes","microcodes"],["Micorsoft","Microsoft"],["micoscope","microscope"],["micoscopes","microscopes"],["micoscopic","microscopic"],["micoscopies","microscopies"],["micoscopy","microscopy"],["Micosoft","Microsoft"],["micrcontroller","microcontroller"],["micrcontrollers","microcontrollers"],["microcontroler","microcontroller"],["microcontrolers","microcontrollers"],["Microfost","Microsoft"],["microntroller","microcontroller"],["microntrollers","microcontrollers"],["microoseconds","microseconds"],["micropone","microphone"],["micropones","microphones"],["microprocesspr","microprocessor"],["microprocessprs","microprocessors"],["microseond","microsecond"],["microseonds","microseconds"],["Microsft","Microsoft"],["microship","microchip"],["microships","microchips"],["Microsof","Microsoft"],["Microsofot","Microsoft"],["Micrsft","Microsoft"],["Micrsoft","Microsoft"],["middlware","middleware"],["midevil","medieval"],["midified","modified"],["midpints","midpoints"],["midpiont","midpoint"],["midpionts","midpoints"],["midpont","midpoint"],["midponts","midpoints"],["mige","midge"],["miges","midges"],["migh","might"],["migrateable","migratable"],["migth","might"],["miht","might"],["miinimisation","minimisation"],["miinimise","minimise"],["miinimised","minimised"],["miinimises","minimises"],["miinimising","minimising"],["miinimization","minimization"],["miinimize","minimize"],["miinimized","minimized"],["miinimizes","minimizes"],["miinimizing","minimizing"],["miinimum","minimum"],["mikrosecond","microsecond"],["mikroseconds","microseconds"],["milage","mileage"],["milages","mileages"],["mileau","milieu"],["milennia","millennia"],["milennium","millennium"],["mileu","milieu"],["miliary","military"],["milicious","malicious"],["miliciousally","maliciously"],["miliciously","maliciously"],["milicous","malicious"],["milicousally","maliciously"],["milicously","maliciously"],["miligram","milligram"],["milimeter","millimeter"],["milimeters","millimeters"],["milimetre","millimetre"],["milimetres","millimetres"],["milimiters","millimeters"],["milion","million"],["miliraty","military"],["milisecond","millisecond"],["miliseconds","milliseconds"],["milisecons","milliseconds"],["milivolts","millivolts"],["milktoast","milquetoast"],["milktoasts","milquetoasts"],["milleneum","millennium"],["millenia","millennia"],["millenial","millennial"],["millenialism","millennialism"],["millenials","millennials"],["millenium","millennium"],["millepede","millipede"],["milliescond","millisecond"],["milliesconds","milliseconds"],["millimiter","millimeter"],["millimiters","millimeters"],["millimitre","millimetre"],["millimitres","millimetres"],["millioniare","millionaire"],["millioniares","millionaires"],["millisencond","millisecond"],["millisenconds","milliseconds"],["milliseond","millisecond"],["milliseonds","milliseconds"],["millitant","militant"],["millitary","military"],["millon","million"],["millsecond","millisecond"],["millseconds","milliseconds"],["millsencond","millisecond"],["millsenconds","milliseconds"],["miltary","military"],["miltisite","multisite"],["milyew","milieu"],["mimach","mismatch"],["mimachd","mismatched"],["mimached","mismatched"],["mimaches","mismatches"],["mimaching","mismatching"],["mimatch","mismatch"],["mimatchd","mismatched"],["mimatched","mismatched"],["mimatches","mismatches"],["mimatching","mismatching"],["mimicing","mimicking"],["mimick","mimic"],["mimicks","mimics"],["mimimal","minimal"],["mimimum","minimum"],["mimimun","minimum"],["miminal","minimal"],["miminally","minimally"],["miminaly","minimally"],["miminise","minimise"],["miminised","minimised"],["miminises","minimises"],["miminising","minimising"],["miminize","minimize"],["miminized","minimized"],["miminizes","minimizes"],["miminizing","minimizing"],["mimmick","mimic"],["mimmicked","mimicked"],["mimmicking","mimicking"],["mimmics","mimics"],["minature","miniature"],["minerial","mineral"],["MingGW","MinGW"],["minimam","minimum"],["minimial","minimal"],["minimium","minimum"],["minimsation","minimisation"],["minimse","minimise"],["minimsed","minimised"],["minimses","minimises"],["minimsing","minimising"],["minimumm","minimum"],["minimumn","minimum"],["minimun","minimum"],["minimzation","minimization"],["minimze","minimize"],["minimzed","minimized"],["minimzes","minimizes"],["minimzing","minimizing"],["mininal","minimal"],["mininise","minimise"],["mininised","minimised"],["mininises","minimises"],["mininising","minimising"],["mininize","minimize"],["mininized","minimized"],["mininizes","minimizes"],["mininizing","minimizing"],["mininum","minimum"],["miniscule","minuscule"],["miniscully","minusculely"],["miniture","miniature"],["minium","minimum"],["miniums","minimums"],["miniumum","minimum"],["minmal","minimal"],["minmum","minimum"],["minnimum","minimum"],["minnimums","minimums"],["minsitry","ministry"],["minstries","ministries"],["minstry","ministry"],["minum","minimum"],["minumum","minimum"],["minuscle","minuscule"],["minuts","minutes"],["miplementation","implementation"],["mirconesia","micronesia"],["mircophone","microphone"],["mircophones","microphones"],["mircoscope","microscope"],["mircoscopes","microscopes"],["mircoservice","microservice"],["mircoservices","microservices"],["mircosoft","Microsoft"],["mirgate","migrate"],["mirgated","migrated"],["mirgates","migrates"],["mirometer","micrometer"],["mirometers","micrometers"],["mirored","mirrored"],["miroring","mirroring"],["mirorr","mirror"],["mirorred","mirrored"],["mirorring","mirroring"],["mirorrs","mirrors"],["mirro","mirror"],["mirroed","mirrored"],["mirrorn","mirror"],["mirrorred","mirrored"],["mis-alignement","misalignment"],["mis-alignment","misalignment"],["mis-intepret","mis-interpret"],["mis-intepreted","mis-interpreted"],["mis-match","mismatch"],["misalignement","misalignment"],["misalinged","misaligned"],["misbehaive","misbehave"],["miscallenous","miscellaneous"],["misceancellous","miscellaneous"],["miscelaneous","miscellaneous"],["miscellanious","miscellaneous"],["miscellanous","miscellaneous"],["miscelleneous","miscellaneous"],["mischeivous","mischievous"],["mischevious","mischievous"],["mischevus","mischievous"],["mischevusly","mischievously"],["mischieveous","mischievous"],["mischieveously","mischievously"],["mischievious","mischievous"],["misconfiged","misconfigured"],["Miscrosoft","Microsoft"],["misdameanor","misdemeanor"],["misdameanors","misdemeanors"],["misdemenor","misdemeanor"],["misdemenors","misdemeanors"],["miselaneous","miscellaneous"],["miselaneously","miscellaneously"],["misellaneous","miscellaneous"],["misellaneously","miscellaneously"],["misformed","malformed"],["misfourtunes","misfortunes"],["misile","missile"],["mising","missing"],["misintepret","misinterpret"],["misintepreted","misinterpreted"],["misinterpert","misinterpret"],["misinterperted","misinterpreted"],["misinterperting","misinterpreting"],["misinterperts","misinterprets"],["misinterprett","misinterpret"],["misinterpretted","misinterpreted"],["misisng","missing"],["mismach","mismatch"],["mismached","mismatched"],["mismaches","mismatches"],["mismaching","mismatching"],["mismactch","mismatch"],["mismatchd","mismatched"],["mismatich","mismatch"],["Misouri","Missouri"],["mispell","misspell"],["mispelled","misspelled"],["mispelling","misspelling"],["mispellings","misspellings"],["mispelt","misspelt"],["mispronounciation","mispronunciation"],["misquito","mosquito"],["misquitos","mosquitos"],["missable","miscible"],["missconfiguration","misconfiguration"],["missconfigure","misconfigure"],["missconfigured","misconfigured"],["missconfigures","misconfigures"],["missconfiguring","misconfiguring"],["misscounted","miscounted"],["missen","mizzen"],["missign","missing"],["missingassignement","missingassignment"],["missings","missing"],["Missisipi","Mississippi"],["Missisippi","Mississippi"],["missle","missile"],["missleading","misleading"],["missletow","mistletoe"],["missmanaged","mismanaged"],["missmatch","mismatch"],["missmatchd","mismatched"],["missmatched","mismatched"],["missmatches","mismatches"],["missmatching","mismatching"],["missonary","missionary"],["misspel","misspell"],["misssing","missing"],["misstake","mistake"],["misstaken","mistaken"],["misstakes","mistakes"],["misstype","mistype"],["misstypes","mistypes"],["missunderstood","misunderstood"],["missuse","misuse"],["missused","misused"],["missusing","misusing"],["mistatch","mismatch"],["mistatchd","mismatched"],["mistatched","mismatched"],["mistatches","mismatches"],["mistatching","mismatching"],["misteek","mystique"],["misteeks","mystiques"],["misterious","mysterious"],["mistery","mystery"],["misteryous","mysterious"],["mistic","mystic"],["mistical","mystical"],["mistics","mystics"],["mistmatch","mismatch"],["mistmatched","mismatched"],["mistmatches","mismatches"],["mistmatching","mismatching"],["mistro","maestro"],["mistros","maestros"],["mistrow","maestro"],["mistrows","maestros"],["misue","misuse"],["misued","misused"],["misuing","misusing"],["miticate","mitigate"],["miticated","mitigated"],["miticateing","mitigating"],["miticates","mitigates"],["miticating","mitigating"],["miticator","mitigator"],["mittigate","mitigate"],["miximum","maximum"],["mixted","mixed"],["mixure","mixture"],["mjor","major"],["mkae","make"],["mkaes","makes"],["mkaing","making"],["mke","make"],["mkea","make"],["mmaped","mapped"],["mmatching","matching"],["mmbers","members"],["mmnemonic","mnemonic"],["mnay","many"],["mobify","modify"],["mocrochip","microchip"],["mocrochips","microchips"],["mocrocode","microcode"],["mocrocodes","microcodes"],["mocrocontroller","microcontroller"],["mocrocontrollers","microcontrollers"],["mocrophone","microphone"],["mocrophones","microphones"],["mocroprocessor","microprocessor"],["mocroprocessors","microprocessors"],["mocrosecond","microsecond"],["mocroseconds","microseconds"],["Mocrosoft","Microsoft"],["mocule","module"],["mocules","modules"],["moddel","model"],["moddeled","modeled"],["moddelled","modelled"],["moddels","models"],["modee","mode"],["modelinng","modeling"],["modell","model"],["modellinng","modelling"],["modernination","modernization"],["moderninations","modernizations"],["moderninationz","modernizations"],["modernizationz","modernizations"],["modesettting","modesetting"],["modeul","module"],["modeuls","modules"],["modfel","model"],["modfiable","modifiable"],["modfication","modification"],["modfications","modifications"],["modfide","modified"],["modfided","modified"],["modfider","modifier"],["modfiders","modifiers"],["modfides","modifies"],["modfied","modified"],["modfieid","modified"],["modfieir","modifier"],["modfieirs","modifiers"],["modfieis","modifies"],["modfier","modifier"],["modfiers","modifiers"],["modfies","modifies"],["modfifiable","modifiable"],["modfification","modification"],["modfifications","modifications"],["modfified","modified"],["modfifier","modifier"],["modfifiers","modifiers"],["modfifies","modifies"],["modfify","modify"],["modfifying","modifying"],["modfiiable","modifiable"],["modfiication","modification"],["modfiications","modifications"],["modfitied","modified"],["modfitier","modifier"],["modfitiers","modifiers"],["modfities","modifies"],["modfity","modify"],["modfitying","modifying"],["modfiy","modify"],["modfiying","modifying"],["modfy","modify"],["modfying","modifying"],["modications","modifications"],["modidfication","modification"],["modidfications","modifications"],["modidfied","modified"],["modidfier","modifier"],["modidfiers","modifiers"],["modidfies","modifies"],["modidfy","modify"],["modidfying","modifying"],["modifable","modifiable"],["modifaction","modification"],["modifactions","modifications"],["modifation","modification"],["modifations","modifications"],["modifcation","modification"],["modifcations","modifications"],["modifciation","modification"],["modifciations","modifications"],["modifcication","modification"],["modifcications","modifications"],["modifdied","modified"],["modifdy","modify"],["modifed","modified"],["modifer","modifier"],["modifers","modifiers"],["modifes","modifies"],["modiffer","modifier"],["modiffers","modifiers"],["modifiation","modification"],["modifiations","modifications"],["modificatioon","modification"],["modificatioons","modifications"],["modificaton","modification"],["modificatons","modifications"],["modifid","modified"],["modifified","modified"],["modifify","modify"],["modifing","modifying"],["modifires","modifiers"],["modifiy","modify"],["modifiying","modifying"],["modifiyng","modifying"],["modifled","modified"],["modifler","modifier"],["modiflers","modifiers"],["modift","modify"],["modifty","modify"],["modifu","modify"],["modifuable","modifiable"],["modifued","modified"],["modifx","modify"],["modifyable","modifiable"],["modiration","moderation"],["modle","model"],["modlue","module"],["modprobbing","modprobing"],["modprobeing","modprobing"],["modtified","modified"],["modue","module"],["moduel","module"],["moduels","modules"],["moduile","module"],["modukles","modules"],["modul","module"],["modules's","modules'"],["moduless","modules"],["modulie","module"],["modulu","modulo"],["modulues","modules"],["modyfy","modify"],["moent","moment"],["moeny","money"],["mofdified","modified"],["mofification","modification"],["mofified","modified"],["mofifies","modifies"],["mofify","modify"],["mohammedan","muslim"],["mohammedans","muslims"],["moint","mount"],["mointor","monitor"],["mointored","monitored"],["mointoring","monitoring"],["mointors","monitors"],["moleclues","molecules"],["momement","moment"],["momementarily","momentarily"],["momements","moments"],["momemtarily","momentarily"],["momemtary","momentary"],["momemtn","moment"],["momentarely","momentarily"],["momento","memento"],["momery","memory"],["momoent","moment"],["momoment","moment"],["momomentarily","momentarily"],["momoments","moments"],["momory","memory"],["monarkey","monarchy"],["monarkeys","monarchies"],["monarkies","monarchies"],["monestaries","monasteries"],["monestic","monastic"],["monickers","monikers"],["monitary","monetary"],["moniter","monitor"],["monitoing","monitoring"],["monkies","monkeys"],["monochorome","monochrome"],["monochromo","monochrome"],["monocrome","monochrome"],["monolite","monolithic"],["monontonicity","monotonicity"],["monopace","monospace"],["monotir","monitor"],["monotired","monitored"],["monotiring","monitoring"],["monotirs","monitors"],["monsday","Monday"],["Monserrat","Montserrat"],["monstrum","monster"],["montains","mountains"],["montaj","montage"],["montajes","montages"],["montanous","mountainous"],["monthe","month"],["monthes","months"],["montly","monthly"],["Montnana","Montana"],["monts","months"],["montypic","monotypic"],["moodify","modify"],["moounting","mounting"],["mopdule","module"],["mopre","more"],["mor","more"],["mordern","modern"],["morever","moreover"],["morg","morgue"],["morgage","mortgage"],["morges","morgues"],["morgs","morgues"],["morisette","morissette"],["mormalise","normalise"],["mormalised","normalised"],["mormalises","normalises"],["mormalize","normalize"],["mormalized","normalized"],["mormalizes","normalizes"],["morrisette","morissette"],["morroccan","moroccan"],["morrocco","morocco"],["morroco","morocco"],["mortage","mortgage"],["morter","mortar"],["moslty","mostly"],["mostlky","mostly"],["mosture","moisture"],["mosty","mostly"],["moteef","motif"],["moteefs","motifs"],["moteur","motor"],["moteured","motored"],["moteuring","motoring"],["moteurs","motors"],["mothing","nothing"],["motiviated","motivated"],["motiviation","motivation"],["motononic","monotonic"],["motoroloa","motorola"],["moudle","module"],["moudule","module"],["mountian","mountain"],["mountpiont","mountpoint"],["mountpionts","mountpoints"],["mouspointer","mousepointer"],["moutn","mount"],["moutned","mounted"],["moutning","mounting"],["moutnpoint","mountpoint"],["moutnpoints","mountpoints"],["moutns","mounts"],["mouvement","movement"],["mouvements","movements"],["movebackwrd","movebackward"],["moveble","movable"],["movemement","movement"],["movemements","movements"],["movememnt","movement"],["movememnts","movements"],["movememt","movement"],["movememts","movements"],["movemet","movement"],["movemets","movements"],["movemment","movement"],["movemments","movements"],["movemnet","movement"],["movemnets","movements"],["movemnt","movement"],["movemnts","movements"],["movment","movement"],["moziila","Mozilla"],["mozila","Mozilla"],["mozzilla","mozilla"],["mroe","more"],["msbild","MSBuild"],["msbilds","MSBuild's"],["msbuid","MSBuild"],["msbuids","MSBuild's"],["msbuld","MSBuild"],["msbulds","MSBuild's"],["msbulid","MSBuild"],["msbulids","MSBuild's"],["mssing","missing"],["msssge","message"],["mthod","method"],["mtuually","mutually"],["mucuous","mucous"],["muder","murder"],["mudering","murdering"],["mudule","module"],["mudules","modules"],["muext","mutex"],["muiltiple","multiple"],["muiltiples","multiples"],["muliple","multiple"],["muliples","multiples"],["mulithread","multithread"],["mulitiplier","multiplier"],["mulitipliers","multipliers"],["mulitpart","multipart"],["mulitpath","multipath"],["mulitple","multiple"],["mulitplication","multiplication"],["mulitplicative","multiplicative"],["mulitplied","multiplied"],["mulitplier","multiplier"],["mulitpliers","multipliers"],["mulitply","multiply"],["multi-dimenional","multi-dimensional"],["multi-dimenionsal","multi-dimensional"],["multi-langual","multi-lingual"],["multi-presistion","multi-precision"],["multi-threded","multi-threaded"],["multible","multiple"],["multibye","multibyte"],["multicat","multicast"],["multicultralism","multiculturalism"],["multidimenional","multi-dimensional"],["multidimenionsal","multi-dimensional"],["multidimensinal","multidimensional"],["multidimension","multidimensional"],["multidimensionnal","multidimensional"],["multidimentionnal","multidimensional"],["multiecast","multicast"],["multifuction","multifunction"],["multilangual","multilingual"],["multile","multiple"],["multilpe","multiple"],["multipe","multiple"],["multipes","multiples"],["multipiler","multiplier"],["multipilers","multipliers"],["multipled","multiplied"],["multiplers","multipliers"],["multipliciaton","multiplication"],["multiplicites","multiplicities"],["multiplicty","multiplicity"],["multiplikation","multiplication"],["multipling","multiplying"],["multipllication","multiplication"],["multiplyed","multiplied"],["multipresistion","multiprecision"],["multipul","multiple"],["multipy","multiply"],["multipyling","multiplying"],["multithreded","multithreaded"],["multitute","multitude"],["multivriate","multivariate"],["multixsite","multisite"],["multline","multiline"],["multliple","multiple"],["multliples","multiples"],["multliplied","multiplied"],["multliplier","multiplier"],["multlipliers","multipliers"],["multliplies","multiplies"],["multliply","multiply"],["multliplying","multiplying"],["multple","multiple"],["multples","multiples"],["multplied","multiplied"],["multplier","multiplier"],["multpliers","multipliers"],["multplies","multiplies"],["multply","multiply"],["multplying","multiplying"],["multy","multi"],["multy-thread","multithread"],["mumber","number"],["mumbers","numbers"],["munbers","numbers"],["muncipalities","municipalities"],["muncipality","municipality"],["municiple","municipal"],["munnicipality","municipality"],["munute","minute"],["murr","myrrh"],["muscial","musical"],["muscician","musician"],["muscicians","musicians"],["musn't","mustn't"],["must't","mustn't"],["mustator","mutator"],["muste","must"],["mutablity","mutability"],["mutbale","mutable"],["mutch","much"],["mutches","matches"],["mutecies","mutexes"],["mutexs","mutexes"],["muti","multi"],["muticast","multicast"],["mutices","mutexes"],["mutilcast","multicast"],["mutiliated","mutilated"],["mutimarked","multimarked"],["mutipath","multipath"],["mutiple","multiple"],["mutiply","multiply"],["mutli","multi"],["mutli-threaded","multi-threaded"],["mutlipart","multipart"],["mutliple","multiple"],["mutliples","multiples"],["mutliplication","multiplication"],["mutliplicites","multiplicities"],["mutliplier","multiplier"],["mutlipliers","multipliers"],["mutliply","multiply"],["mutully","mutually"],["mutux","mutex"],["mutuxes","mutexes"],["mutuxs","mutexes"],["muyst","must"],["myabe","maybe"],["mybe","maybe"],["myitereator","myiterator"],["myraid","myriad"],["mysef","myself"],["mysefl","myself"],["mysekf","myself"],["myselfe","myself"],["myselfes","myself"],["myselv","myself"],["myselve","myself"],["myselves","myself"],["myslef","myself"],["mysogynist","misogynist"],["mysogyny","misogyny"],["mysterous","mysterious"],["mystql","mysql"],["mystrow","maestro"],["mystrows","maestros"],["Mythraic","Mithraic"],["myu","my"],["nadly","badly"],["nagative","negative"],["nagatively","negatively"],["nagatives","negatives"],["nagivation","navigation"],["naieve","naive"],["nam","name"],["namaed","named"],["namaes","names"],["nameing","naming"],["namemespace","namespace"],["namepace","namespace"],["namepsace","namespace"],["namepsaces","namespaces"],["namesapce","namespace"],["namesapced","namespaced"],["namesapces","namespaces"],["namess","names"],["namesspaces","namespaces"],["namme","name"],["namne","name"],["namned","named"],["namnes","names"],["namnespace","namespace"],["namnespaces","namespaces"],["nams","names"],["nane","name"],["nanosencond","nanosecond"],["nanosenconds","nanoseconds"],["nanoseond","nanosecond"],["nanoseonds","nanoseconds"],["Naploeon","Napoleon"],["Napolean","Napoleon"],["Napoleonian","Napoleonic"],["nasted","nested"],["nasting","nesting"],["nastly","nasty"],["nastyness","nastiness"],["natched","matched"],["natches","matches"],["nativelyx","natively"],["natrual","natural"],["naturaly","naturally"],["naturely","naturally"],["naturual","natural"],["naturually","naturally"],["natvigation","navigation"],["navagate","navigate"],["navagating","navigating"],["navagation","navigation"],["navagitation","navigation"],["naviagte","navigate"],["naviagted","navigated"],["naviagtes","navigates"],["naviagting","navigating"],["naviagtion","navigation"],["navitvely","natively"],["navtive","native"],["navtives","natives"],["naxima","maxima"],["naximal","maximal"],["naximum","maximum"],["Nazereth","Nazareth"],["nclude","include"],["ndoe","node"],["ndoes","nodes"],["neady","needy"],["neagtive","negative"],["neares","nearest"],["nearset","nearest"],["necassery","necessary"],["necassry","necessary"],["necause","because"],["neccecarily","necessarily"],["neccecary","necessary"],["neccesarily","necessarily"],["neccesary","necessary"],["neccessarily","necessarily"],["neccessarry","necessary"],["neccessary","necessary"],["neccessities","necessities"],["neccessity","necessity"],["neccisary","necessary"],["neccsessary","necessary"],["necesarily","necessarily"],["necesarrily","necessarily"],["necesarry","necessary"],["necesary","necessary"],["necessaery","necessary"],["necessairly","necessarily"],["necessar","necessary"],["necessarilly","necessarily"],["necessarly","necessarily"],["necessarry","necessary"],["necessaryly","necessarily"],["necessay","necessary"],["necesserily","necessarily"],["necessery","necessary"],["necessesary","necessary"],["necessiate","necessitate"],["nechanism","mechanism"],["necssary","necessary"],["nedd","need"],["nedded","needed"],["neded","needed"],["nedia","media"],["nedium","medium"],["nediums","mediums"],["nedle","needle"],["neds","needs"],["needeed","needed"],["neeed","need"],["neeeded","needed"],["neeeding","needing"],["neeedle","needle"],["neeedn't","needn't"],["neeeds","needs"],["nees","needs"],["neesd","needs"],["neesds","needs"],["neested","nested"],["neesting","nesting"],["negaive","negative"],["negarive","negative"],["negatiotiable","negotiable"],["negatiotiate","negotiate"],["negatiotiated","negotiated"],["negatiotiates","negotiates"],["negatiotiating","negotiating"],["negatiotiation","negotiation"],["negatiotiations","negotiations"],["negatiotiator","negotiator"],["negatiotiators","negotiators"],["negativ","negative"],["negatve","negative"],["negible","negligible"],["negitiable","negotiable"],["negitiate","negotiate"],["negitiated","negotiated"],["negitiates","negotiates"],["negitiating","negotiating"],["negitiation","negotiation"],["negitiations","negotiations"],["negitiator","negotiator"],["negitiators","negotiators"],["negitive","negative"],["neglible","negligible"],["negligable","negligible"],["negligble","negligible"],["negoable","negotiable"],["negoate","negotiate"],["negoated","negotiated"],["negoates","negotiates"],["negoatiable","negotiable"],["negoatiate","negotiate"],["negoatiated","negotiated"],["negoatiates","negotiates"],["negoatiating","negotiating"],["negoatiation","negotiation"],["negoatiations","negotiations"],["negoatiator","negotiator"],["negoatiators","negotiators"],["negoating","negotiating"],["negoation","negotiation"],["negoations","negotiations"],["negoator","negotiator"],["negoators","negotiators"],["negociable","negotiable"],["negociate","negotiate"],["negociated","negotiated"],["negociates","negotiates"],["negociating","negotiating"],["negociation","negotiation"],["negociations","negotiations"],["negociator","negotiator"],["negociators","negotiators"],["negogtiable","negotiable"],["negogtiate","negotiate"],["negogtiated","negotiated"],["negogtiates","negotiates"],["negogtiating","negotiating"],["negogtiation","negotiation"],["negogtiations","negotiations"],["negogtiator","negotiator"],["negogtiators","negotiators"],["negoitable","negotiable"],["negoitate","negotiate"],["negoitated","negotiated"],["negoitates","negotiates"],["negoitating","negotiating"],["negoitation","negotiation"],["negoitations","negotiations"],["negoitator","negotiator"],["negoitators","negotiators"],["negoptionsotiable","negotiable"],["negoptionsotiate","negotiate"],["negoptionsotiated","negotiated"],["negoptionsotiates","negotiates"],["negoptionsotiating","negotiating"],["negoptionsotiation","negotiation"],["negoptionsotiations","negotiations"],["negoptionsotiator","negotiator"],["negoptionsotiators","negotiators"],["negosiable","negotiable"],["negosiate","negotiate"],["negosiated","negotiated"],["negosiates","negotiates"],["negosiating","negotiating"],["negosiation","negotiation"],["negosiations","negotiations"],["negosiator","negotiator"],["negosiators","negotiators"],["negotable","negotiable"],["negotaiable","negotiable"],["negotaiate","negotiate"],["negotaiated","negotiated"],["negotaiates","negotiates"],["negotaiating","negotiating"],["negotaiation","negotiation"],["negotaiations","negotiations"],["negotaiator","negotiator"],["negotaiators","negotiators"],["negotaible","negotiable"],["negotaite","negotiate"],["negotaited","negotiated"],["negotaites","negotiates"],["negotaiting","negotiating"],["negotaition","negotiation"],["negotaitions","negotiations"],["negotaitor","negotiator"],["negotaitors","negotiators"],["negotate","negotiate"],["negotated","negotiated"],["negotates","negotiates"],["negotatiable","negotiable"],["negotatiate","negotiate"],["negotatiated","negotiated"],["negotatiates","negotiates"],["negotatiating","negotiating"],["negotatiation","negotiation"],["negotatiations","negotiations"],["negotatiator","negotiator"],["negotatiators","negotiators"],["negotatible","negotiable"],["negotatie","negotiate"],["negotatied","negotiated"],["negotaties","negotiates"],["negotating","negotiating"],["negotation","negotiation"],["negotations","negotiations"],["negotatior","negotiator"],["negotatiors","negotiators"],["negotator","negotiator"],["negotators","negotiators"],["negothiable","negotiable"],["negothiate","negotiate"],["negothiated","negotiated"],["negothiates","negotiates"],["negothiating","negotiating"],["negothiation","negotiation"],["negothiations","negotiations"],["negothiator","negotiator"],["negothiators","negotiators"],["negotible","negotiable"],["negoticable","negotiable"],["negoticate","negotiate"],["negoticated","negotiated"],["negoticates","negotiates"],["negoticating","negotiating"],["negotication","negotiation"],["negotications","negotiations"],["negoticator","negotiator"],["negoticators","negotiators"],["negotinate","negotiate"],["negotioable","negotiable"],["negotioate","negotiate"],["negotioated","negotiated"],["negotioates","negotiates"],["negotioating","negotiating"],["negotioation","negotiation"],["negotioations","negotiations"],["negotioator","negotiator"],["negotioators","negotiators"],["negotioble","negotiable"],["negotion","negotiation"],["negotionable","negotiable"],["negotionate","negotiate"],["negotionated","negotiated"],["negotionates","negotiates"],["negotionating","negotiating"],["negotionation","negotiation"],["negotionations","negotiations"],["negotionator","negotiator"],["negotionators","negotiators"],["negotions","negotiations"],["negotiotable","negotiable"],["negotiotate","negotiate"],["negotiotated","negotiated"],["negotiotates","negotiates"],["negotiotating","negotiating"],["negotiotation","negotiation"],["negotiotations","negotiations"],["negotiotator","negotiator"],["negotiotators","negotiators"],["negotiote","negotiate"],["negotioted","negotiated"],["negotiotes","negotiates"],["negotioting","negotiating"],["negotiotion","negotiation"],["negotiotions","negotiations"],["negotiotor","negotiator"],["negotiotors","negotiators"],["negotitable","negotiable"],["negotitae","negotiate"],["negotitaed","negotiated"],["negotitaes","negotiates"],["negotitaing","negotiating"],["negotitaion","negotiation"],["negotitaions","negotiations"],["negotitaor","negotiator"],["negotitaors","negotiators"],["negotitate","negotiate"],["negotitated","negotiated"],["negotitates","negotiates"],["negotitating","negotiating"],["negotitation","negotiation"],["negotitations","negotiations"],["negotitator","negotiator"],["negotitators","negotiators"],["negotite","negotiate"],["negotited","negotiated"],["negotites","negotiates"],["negotiting","negotiating"],["negotition","negotiation"],["negotitions","negotiations"],["negotitor","negotiator"],["negotitors","negotiators"],["negoziable","negotiable"],["negoziate","negotiate"],["negoziated","negotiated"],["negoziates","negotiates"],["negoziating","negotiating"],["negoziation","negotiation"],["negoziations","negotiations"],["negoziator","negotiator"],["negoziators","negotiators"],["negtive","negative"],["neibhbors","neighbors"],["neibhbours","neighbours"],["neibor","neighbor"],["neiborhood","neighborhood"],["neiborhoods","neighborhoods"],["neibors","neighbors"],["neigbhor","neighbor"],["neigbhorhood","neighborhood"],["neigbhorhoods","neighborhoods"],["neigbhors","neighbors"],["neigbhour","neighbour"],["neigbhours","neighbours"],["neigbor","neighbor"],["neigborhood","neighborhood"],["neigboring","neighboring"],["neigbors","neighbors"],["neigbourhood","neighbourhood"],["neighbar","neighbor"],["neighbarhood","neighborhood"],["neighbarhoods","neighborhoods"],["neighbaring","neighboring"],["neighbars","neighbors"],["neighbbor","neighbor"],["neighbborhood","neighborhood"],["neighbborhoods","neighborhoods"],["neighbboring","neighboring"],["neighbbors","neighbors"],["neighbeard","neighborhood"],["neighbeards","neighborhoods"],["neighbehood","neighborhood"],["neighbehoods","neighborhoods"],["neighbeing","neighboring"],["neighbeod","neighborhood"],["neighbeods","neighborhoods"],["neighbeor","neighbor"],["neighbeordhood","neighborhood"],["neighbeordhoods","neighborhoods"],["neighbeorhod","neighborhood"],["neighbeorhods","neighborhoods"],["neighbeorhood","neighborhood"],["neighbeorhoods","neighborhoods"],["neighbeors","neighbors"],["neighber","neighbor"],["neighbergh","neighbor"],["neighberghs","neighbors"],["neighberhhod","neighborhood"],["neighberhhods","neighborhoods"],["neighberhhood","neighborhood"],["neighberhhoods","neighborhoods"],["neighberhing","neighboring"],["neighberhod","neighborhood"],["neighberhodd","neighborhood"],["neighberhodds","neighborhoods"],["neighberhods","neighborhoods"],["neighberhood","neighborhood"],["neighberhooding","neighboring"],["neighberhoods","neighborhoods"],["neighberhoof","neighborhood"],["neighberhoofs","neighborhoods"],["neighberhoood","neighborhood"],["neighberhooods","neighborhoods"],["neighberhoor","neighbor"],["neighberhoors","neighbors"],["neighberhoud","neighborhood"],["neighberhouds","neighborhoods"],["neighbering","neighboring"],["neighbers","neighbors"],["neighbes","neighbors"],["neighbet","neighbor"],["neighbethood","neighborhood"],["neighbethoods","neighborhoods"],["neighbets","neighbors"],["neighbeuing","neighbouring"],["neighbeurgh","neighbour"],["neighbeurghs","neighbours"],["neighbeurhing","neighbouring"],["neighbeurhooding","neighbouring"],["neighbeurhoor","neighbour"],["neighbeurhoors","neighbours"],["neighbeus","neighbours"],["neighbeut","neighbour"],["neighbeuthood","neighbourhood"],["neighbeuthoods","neighbourhoods"],["neighbeuts","neighbours"],["neighbhor","neighbor"],["neighbhorhood","neighborhood"],["neighbhorhoods","neighborhoods"],["neighbhoring","neighboring"],["neighbhors","neighbors"],["neighboard","neighborhood"],["neighboards","neighborhoods"],["neighbohood","neighborhood"],["neighbohoods","neighborhoods"],["neighboing","neighboring"],["neighbood","neighborhood"],["neighboods","neighborhoods"],["neighboordhood","neighborhood"],["neighboordhoods","neighborhoods"],["neighboorhod","neighborhood"],["neighboorhods","neighborhoods"],["neighboorhood","neighborhood"],["neighboorhoods","neighborhoods"],["neighbooring","neighboring"],["neighborgh","neighbor"],["neighborghs","neighbors"],["neighborhhod","neighborhood"],["neighborhhods","neighborhoods"],["neighborhhood","neighborhood"],["neighborhhoods","neighborhoods"],["neighborhing","neighboring"],["neighborhod","neighborhood"],["neighborhodd","neighborhood"],["neighborhodds","neighborhoods"],["neighborhods","neighborhoods"],["neighborhooding","neighboring"],["neighborhoof","neighborhood"],["neighborhoofs","neighborhoods"],["neighborhoood","neighborhood"],["neighborhooods","neighborhoods"],["neighborhoor","neighbor"],["neighborhoors","neighbors"],["neighborhoud","neighborhood"],["neighborhouds","neighborhoods"],["neighbos","neighbors"],["neighbot","neighbor"],["neighbothood","neighborhood"],["neighbothoods","neighborhoods"],["neighbots","neighbors"],["neighbouing","neighbouring"],["neighbourgh","neighbour"],["neighbourghs","neighbours"],["neighbourhhod","neighbourhood"],["neighbourhhods","neighbourhoods"],["neighbourhhood","neighbourhood"],["neighbourhhoods","neighbourhoods"],["neighbourhing","neighbouring"],["neighbourhod","neighbourhood"],["neighbourhodd","neighbourhood"],["neighbourhodds","neighbourhoods"],["neighbourhods","neighbourhoods"],["neighbourhooding","neighbouring"],["neighbourhoof","neighbourhood"],["neighbourhoofs","neighbourhoods"],["neighbourhoood","neighbourhood"],["neighbourhooods","neighbourhoods"],["neighbourhoor","neighbour"],["neighbourhoors","neighbours"],["neighbourhoud","neighbourhood"],["neighbourhouds","neighbourhoods"],["neighbous","neighbours"],["neighbout","neighbour"],["neighbouthood","neighbourhood"],["neighbouthoods","neighbourhoods"],["neighbouts","neighbours"],["neighbr","neighbor"],["neighbrs","neighbors"],["neighbur","neighbor"],["neighburhood","neighborhood"],["neighburhoods","neighborhoods"],["neighburing","neighboring"],["neighburs","neighbors"],["neigher","neither"],["neighobr","neighbor"],["neighobrhood","neighborhood"],["neighobrhoods","neighborhoods"],["neighobring","neighboring"],["neighobrs","neighbors"],["neighor","neighbor"],["neighorhood","neighborhood"],["neighorhoods","neighborhoods"],["neighoring","neighboring"],["neighors","neighbors"],["neighour","neighbour"],["neighourhood","neighbourhood"],["neighourhoods","neighbourhoods"],["neighouring","neighbouring"],["neighours","neighbours"],["neighror","neighbour"],["neighrorhood","neighbourhood"],["neighrorhoods","neighbourhoods"],["neighroring","neighbouring"],["neighrors","neighbours"],["neighrour","neighbour"],["neighrourhood","neighbourhood"],["neighrourhoods","neighbourhoods"],["neighrouring","neighbouring"],["neighrours","neighbours"],["neight","neither"],["neightbor","neighbor"],["neightborhood","neighborhood"],["neightborhoods","neighborhoods"],["neightboring","neighboring"],["neightbors","neighbors"],["neightbour","neighbour"],["neightbourhood","neighbourhood"],["neightbourhoods","neighbourhoods"],["neightbouring","neighbouring"],["neightbours","neighbours"],["neighter","neither"],["neightobr","neighbor"],["neightobrhood","neighborhood"],["neightobrhoods","neighborhoods"],["neightobring","neighboring"],["neightobrs","neighbors"],["neiter","neither"],["nelink","netlink"],["nenviroment","environment"],["neolitic","neolithic"],["nerver","never"],["nescesaries","necessaries"],["nescesarily","necessarily"],["nescesarrily","necessarily"],["nescesarry","necessary"],["nescessarily","necessarily"],["nescessary","necessary"],["nesesarily","necessarily"],["nessary","necessary"],["nessasarily","necessarily"],["nessasary","necessary"],["nessecarilt","necessarily"],["nessecarily","necessarily"],["nessecarry","necessary"],["nessecary","necessary"],["nesseccarily","necessarily"],["nesseccary","necessary"],["nessesarily","necessarily"],["nessesary","necessary"],["nessessarily","necessarily"],["nessessary","necessary"],["nestin","nesting"],["nestwork","network"],["netacpe","netscape"],["netcape","netscape"],["nethods","methods"],["netiher","neither"],["netowrk","network"],["netowrks","networks"],["netscpe","netscape"],["netwplit","netsplit"],["netwrok","network"],["netwroked","networked"],["netwroks","networks"],["netwrork","network"],["neumeric","numeric"],["nevelope","envelope"],["nevelopes","envelopes"],["nevere","never"],["neveretheless","nevertheless"],["nevers","never"],["neverthless","nevertheless"],["newine","newline"],["newines","newlines"],["newletters","newsletters"],["nework","network"],["neworks","networks"],["newslines","newlines"],["newthon","newton"],["newtork","network"],["Newyorker","New Yorker"],["niear","near"],["niearest","nearest"],["niether","neither"],["nighbor","neighbor"],["nighborhood","neighborhood"],["nighboring","neighboring"],["nighlties","nightlies"],["nighlty","nightly"],["nightfa;;","nightfall"],["nightime","nighttime"],["nimutes","minutes"],["nineth","ninth"],["ninima","minima"],["ninimal","minimal"],["ninimum","minimum"],["ninjs","ninja"],["ninteenth","nineteenth"],["nither","neither"],["nknown","unknown"],["nkow","know"],["nkwo","know"],["nmae","name"],["nned","need"],["nneeded","needed"],["nnumber","number"],["no-overide","no-override"],["nodels","models"],["nodess","nodes"],["nodulated","modulated"],["nofified","notified"],["nofity","notify"],["nohypen","nohyphen"],["nomber","number"],["nombered","numbered"],["nombering","numbering"],["nombers","numbers"],["nomimal","nominal"],["non-alphanumunder","non-alphanumeric"],["non-asii","non-ascii"],["non-assiged","non-assigned"],["non-bloking","non-blocking"],["non-compleeted","non-completed"],["non-complient","non-compliant"],["non-corelated","non-correlated"],["non-existant","non-existent"],["non-exluded","non-excluded"],["non-indentended","non-indented"],["non-inmediate","non-immediate"],["non-inreractive","non-interactive"],["non-instnat","non-instant"],["non-meausure","non-measure"],["non-negatiotiable","non-negotiable"],["non-negatiotiated","non-negotiated"],["non-negativ","non-negative"],["non-negoable","non-negotiable"],["non-negoated","non-negotiated"],["non-negoatiable","non-negotiable"],["non-negoatiated","non-negotiated"],["non-negociable","non-negotiable"],["non-negociated","non-negotiated"],["non-negogtiable","non-negotiable"],["non-negogtiated","non-negotiated"],["non-negoitable","non-negotiable"],["non-negoitated","non-negotiated"],["non-negoptionsotiable","non-negotiable"],["non-negoptionsotiated","non-negotiated"],["non-negosiable","non-negotiable"],["non-negosiated","non-negotiated"],["non-negotable","non-negotiable"],["non-negotaiable","non-negotiable"],["non-negotaiated","non-negotiated"],["non-negotaible","non-negotiable"],["non-negotaited","non-negotiated"],["non-negotated","non-negotiated"],["non-negotatiable","non-negotiable"],["non-negotatiated","non-negotiated"],["non-negotatible","non-negotiable"],["non-negotatied","non-negotiated"],["non-negothiable","non-negotiable"],["non-negothiated","non-negotiated"],["non-negotible","non-negotiable"],["non-negoticable","non-negotiable"],["non-negoticated","non-negotiated"],["non-negotioable","non-negotiable"],["non-negotioated","non-negotiated"],["non-negotioble","non-negotiable"],["non-negotionable","non-negotiable"],["non-negotionated","non-negotiated"],["non-negotiotable","non-negotiable"],["non-negotiotated","non-negotiated"],["non-negotiote","non-negotiated"],["non-negotitable","non-negotiable"],["non-negotitaed","non-negotiated"],["non-negotitated","non-negotiated"],["non-negotited","non-negotiated"],["non-negoziable","non-negotiable"],["non-negoziated","non-negotiated"],["non-priviliged","non-privileged"],["non-referenced-counted","non-reference-counted"],["non-replacable","non-replaceable"],["non-replacalbe","non-replaceable"],["non-reproducable","non-reproducible"],["non-seperable","non-separable"],["non-trasparent","non-transparent"],["non-useful","useless"],["non-usefull","useless"],["non-virutal","non-virtual"],["nonbloking","non-blocking"],["noncombatents","noncombatants"],["noncontigous","non-contiguous"],["nonesense","nonsense"],["nonesensical","nonsensical"],["nonexistance","nonexistence"],["nonexistant","nonexistent"],["nonnegarive","nonnegative"],["nonneighboring","non-neighboring"],["nonsence","nonsense"],["nonsens","nonsense"],["nonseperable","non-separable"],["nonte","note"],["nontheless","nonetheless"],["noo","no"],["noone","no one"],["noralize","normalize"],["noralized","normalized"],["noramal","normal"],["noramalise","normalise"],["noramalised","normalised"],["noramalises","normalises"],["noramalising","normalising"],["noramalize","normalize"],["noramalized","normalized"],["noramalizes","normalizes"],["noramalizing","normalizing"],["noramals","normals"],["noraml","normal"],["norhern","northern"],["norifications","notifications"],["normailzation","normalization"],["normaized","normalized"],["normale","normal"],["normales","normals"],["normaly","normally"],["normalyl","normally"],["normalyly","normally"],["normalysed","normalised"],["normalyy","normally"],["normalyzation","normalization"],["normalyze","normalize"],["normalyzed","normalized"],["normlly","normally"],["normnal","normal"],["normol","normal"],["normolise","normalise"],["normolize","normalize"],["northen","northern"],["northereastern","northeastern"],["nortmally","normally"],["notabley","notably"],["notaion","notation"],["notaly","notably"],["notasion","notation"],["notatin","notation"],["noteable","notable"],["noteably","notably"],["noteboook","notebook"],["noteboooks","notebooks"],["noteriety","notoriety"],["notfication","notification"],["notfications","notifications"],["notfy","notify"],["noth","north"],["nothern","northern"],["nothign","nothing"],["nothigng","nothing"],["nothihg","nothing"],["nothin","nothing"],["nothind","nothing"],["nothink","nothing"],["noticable","noticeable"],["noticably","noticeably"],["notication","notification"],["notications","notifications"],["noticeing","noticing"],["noticiable","noticeable"],["noticible","noticeable"],["notifaction","notification"],["notifactions","notifications"],["notifcation","notification"],["notifcations","notifications"],["notifed","notified"],["notifer","notifier"],["notifes","notifies"],["notifiation","notification"],["notificaction","notification"],["notificaiton","notification"],["notificaitons","notifications"],["notificaton","notification"],["notificatons","notifications"],["notificiation","notification"],["notificiations","notifications"],["notifiy","notify"],["notifiying","notifying"],["notifycation","notification"],["notity","notify"],["notmalize","normalize"],["notmalized","normalized"],["notmutch","notmuch"],["notning","nothing"],["nott","not"],["nottaion","notation"],["nottaions","notations"],["notwhithstanding","notwithstanding"],["noveau","nouveau"],["novemeber","November"],["Novemer","November"],["Novermber","November"],["nowadys","nowadays"],["nowdays","nowadays"],["nowe","now"],["ntification","notification"],["nuber","number"],["nubering","numbering"],["nubmer","number"],["nubmers","numbers"],["nucular","nuclear"],["nuculear","nuclear"],["nuisanse","nuisance"],["nuissance","nuisance"],["nulk","null"],["Nullabour","Nullarbor"],["nulll","null"],["numbber","number"],["numbbered","numbered"],["numbbering","numbering"],["numbbers","numbers"],["numberal","numeral"],["numberals","numerals"],["numberic","numeric"],["numberous","numerous"],["numberr","number"],["numberred","numbered"],["numberring","numbering"],["numberrs","numbers"],["numberss","numbers"],["numbert","number"],["numbet","number"],["numbets","numbers"],["numbres","numbers"],["numearate","numerate"],["numearation","numeration"],["numeber","number"],["numebering","numbering"],["numebers","numbers"],["numebr","number"],["numebrs","numbers"],["numer","number"],["numeraotr","numerator"],["numerbering","numbering"],["numercial","numerical"],["numercially","numerically"],["numering","numbering"],["numers","numbers"],["nummber","number"],["nummbers","numbers"],["nummeric","numeric"],["numnber","number"],["numnbered","numbered"],["numnbering","numbering"],["numnbers","numbers"],["numner","number"],["numners","numbers"],["numver","number"],["numvers","numbers"],["nunber","number"],["nunbers","numbers"],["Nuremburg","Nuremberg"],["nusance","nuisance"],["nutritent","nutrient"],["nutritents","nutrients"],["nuturing","nurturing"],["nwe","new"],["nwo","now"],["o'caml","OCaml"],["oaram","param"],["obay","obey"],["obect","object"],["obediance","obedience"],["obediant","obedient"],["obejct","object"],["obejcted","objected"],["obejction","objection"],["obejctions","objections"],["obejctive","objective"],["obejctively","objectively"],["obejctives","objectives"],["obejcts","objects"],["obeject","object"],["obejection","objection"],["obejects","objects"],["oberflow","overflow"],["oberflowed","overflowed"],["oberflowing","overflowing"],["oberflows","overflows"],["oberv","observe"],["obervant","observant"],["obervation","observation"],["obervations","observations"],["oberve","observe"],["oberved","observed"],["oberver","observer"],["obervers","observers"],["oberves","observes"],["oberving","observing"],["obervs","observes"],["obeservation","observation"],["obeservations","observations"],["obeserve","observe"],["obeserved","observed"],["obeserver","observer"],["obeservers","observers"],["obeserves","observes"],["obeserving","observing"],["obession","obsession"],["obessions","obsessions"],["obgect","object"],["obgects","objects"],["obhect","object"],["obhectification","objectification"],["obhectifies","objectifies"],["obhectify","objectify"],["obhectifying","objectifying"],["obhecting","objecting"],["obhection","objection"],["obhects","objects"],["obious","obvious"],["obiously","obviously"],["obivous","obvious"],["obivously","obviously"],["objec","object"],["objecs","objects"],["objectss","objects"],["objejct","object"],["objekt","object"],["objet","object"],["objetc","object"],["objetcs","objects"],["objets","objects"],["objtain","obtain"],["objtained","obtained"],["objtains","obtains"],["objump","objdump"],["oblitque","oblique"],["obnject","object"],["obscur","obscure"],["obselete","obsolete"],["obseravtion","observation"],["obseravtions","observations"],["observ","observe"],["observered","observed"],["obsevrer","observer"],["obsevrers","observers"],["obsolate","obsolete"],["obsolesence","obsolescence"],["obsolite","obsolete"],["obsolited","obsoleted"],["obsolte","obsolete"],["obsolted","obsoleted"],["obssessed","obsessed"],["obstacal","obstacle"],["obstancles","obstacles"],["obstruced","obstructed"],["obsure","obscure"],["obtaiend","obtained"],["obtaiens","obtains"],["obtainig","obtaining"],["obtaion","obtain"],["obtaioned","obtained"],["obtaions","obtains"],["obtrain","obtain"],["obtrained","obtained"],["obtrains","obtains"],["obusing","abusing"],["obvioulsy","obviously"],["obvisious","obvious"],["obvisous","obvious"],["obvisously","obviously"],["obyect","object"],["obyekt","object"],["ocasion","occasion"],["ocasional","occasional"],["ocasionally","occasionally"],["ocasionaly","occasionally"],["ocasioned","occasioned"],["ocasions","occasions"],["ocassion","occasion"],["ocassional","occasional"],["ocassionally","occasionally"],["ocassionaly","occasionally"],["ocassioned","occasioned"],["ocassions","occasions"],["occaisionally","occasionally"],["occaison","occasion"],["occasinal","occasional"],["occasinally","occasionally"],["occasioanlly","occasionally"],["occasionaly","occasionally"],["occassion","occasion"],["occassional","occasional"],["occassionally","occasionally"],["occassionaly","occasionally"],["occassioned","occasioned"],["occassions","occasions"],["occational","occasional"],["occationally","occasionally"],["occcur","occur"],["occcured","occurred"],["occcurs","occurs"],["occour","occur"],["occoured","occurred"],["occouring","occurring"],["occourring","occurring"],["occours","occurs"],["occrrance","occurrence"],["occrrances","occurrences"],["occrred","occurred"],["occrring","occurring"],["occsionally","occasionally"],["occucence","occurrence"],["occucences","occurrences"],["occulusion","occlusion"],["occuped","occupied"],["occupided","occupied"],["occuracy","accuracy"],["occurance","occurrence"],["occurances","occurrences"],["occurately","accurately"],["occurded","occurred"],["occured","occurred"],["occurence","occurrence"],["occurences","occurrences"],["occures","occurs"],["occuring","occurring"],["occurr","occur"],["occurrance","occurrence"],["occurrances","occurrences"],["occurrencs","occurrences"],["occurrs","occurs"],["oclock","o'clock"],["ocntext","context"],["ocorrence","occurrence"],["ocorrences","occurrences"],["octect","octet"],["octects","octets"],["octohedra","octahedra"],["octohedral","octahedral"],["octohedron","octahedron"],["ocuntries","countries"],["ocuntry","country"],["ocupied","occupied"],["ocupies","occupies"],["ocupy","occupy"],["ocupying","occupying"],["ocur","occur"],["ocurr","occur"],["ocurrance","occurrence"],["ocurred","occurred"],["ocurrence","occurrence"],["ocurrences","occurrences"],["ocurring","occurring"],["ocurrred","occurred"],["ocurrs","occurs"],["odly","oddly"],["ody","body"],["oen","one"],["ofcource","of course"],["offcers","officers"],["offcial","official"],["offcially","officially"],["offcials","officials"],["offerd","offered"],["offereings","offerings"],["offest","offset"],["offests","offsets"],["offfence","offence"],["offfences","offences"],["offfense","offense"],["offfenses","offenses"],["offfset","offset"],["offfsets","offsets"],["offic","office"],["offical","official"],["offically","officially"],["officals","officials"],["officaly","officially"],["officeal","official"],["officeally","officially"],["officeals","officials"],["officealy","officially"],["officialy","officially"],["offloded","offloaded"],["offred","offered"],["offsence","offence"],["offsense","offense"],["offsenses","offenses"],["offser","offset"],["offseted","offsetted"],["offseting","offsetting"],["offsetp","offset"],["offsett","offset"],["offstets","offsets"],["offten","often"],["oficial","official"],["oficially","officially"],["ofmodule","of module"],["ofo","of"],["ofrom","from"],["ofsetted","offsetted"],["ofsset","offset"],["oftenly","often"],["ofthe","of the"],["oherwise","otherwise"],["ohter","other"],["ohters","others"],["ohterwise","otherwise"],["oigin","origin"],["oiginal","original"],["oiginally","originally"],["oiginals","originals"],["oiginating","originating"],["oigins","origins"],["ois","is"],["ojbect","object"],["oje","one"],["oject","object"],["ojection","objection"],["ojective","objective"],["ojects","objects"],["ojekts","objects"],["okat","okay"],["oldes","oldest"],["olny","only"],["olt","old"],["olther","other"],["oly","only"],["omision","omission"],["omited","omitted"],["omiting","omitting"],["omitt","omit"],["omlette","omelette"],["ommision","omission"],["ommission","omission"],["ommit","omit"],["ommited","omitted"],["ommiting","omitting"],["ommits","omits"],["ommitted","omitted"],["ommitting","omitting"],["omniverous","omnivorous"],["omniverously","omnivorously"],["omplementaion","implementation"],["omplementation","implementation"],["omre","more"],["onchage","onchange"],["ond","one"],["one-dimenional","one-dimensional"],["one-dimenionsal","one-dimensional"],["onece","once"],["onedimenional","one-dimensional"],["onedimenionsal","one-dimensional"],["oneliners","one-liners"],["oneyway","oneway"],["ongly","only"],["onl","only"],["onliene","online"],["onlly","only"],["onlye","only"],["onlyonce","only once"],["onoly","only"],["onother","another"],["ons","owns"],["onself","oneself"],["ontain","contain"],["ontained","contained"],["ontainer","container"],["ontainers","containers"],["ontainging","containing"],["ontaining","containing"],["ontainor","container"],["ontainors","containers"],["ontains","contains"],["ontext","context"],["onthe","on the"],["ontop","on top"],["ontrolled","controlled"],["onw","own"],["onwed","owned"],["onwer","owner"],["onwership","ownership"],["onwing","owning"],["onws","owns"],["onyl","only"],["oommits","commits"],["ooutput","output"],["ooutputs","outputs"],["opactity","opacity"],["opactiy","opacity"],["opacy","opacity"],["opague","opaque"],["opatque","opaque"],["opbject","object"],["opbjective","objective"],["opbjects","objects"],["opeaaration","operation"],["opeaarations","operations"],["opeabcration","operation"],["opeabcrations","operations"],["opearand","operand"],["opearands","operands"],["opearate","operate"],["opearates","operates"],["opearating","operating"],["opearation","operation"],["opearations","operations"],["opearatios","operations"],["opearator","operator"],["opearators","operators"],["opearion","operation"],["opearions","operations"],["opearios","operations"],["opeariton","operation"],["opearitons","operations"],["opearitos","operations"],["opearnd","operand"],["opearnds","operands"],["opearor","operator"],["opearors","operators"],["opearte","operate"],["opearted","operated"],["opeartes","operates"],["opearting","operating"],["opeartion","operation"],["opeartions","operations"],["opeartios","operations"],["opeartor","operator"],["opeartors","operators"],["opeate","operate"],["opeates","operates"],["opeation","operation"],["opeational","operational"],["opeations","operations"],["opeatios","operations"],["opeator","operator"],["opeators","operators"],["opeatror","operator"],["opeatrors","operators"],["opeg","open"],["opeging","opening"],["opeing","opening"],["opeinging","opening"],["opeings","openings"],["opem","open"],["opemed","opened"],["opemess","openness"],["opeming","opening"],["opems","opens"],["openbrower","openbrowser"],["opended","opened"],["openeing","opening"],["openend","opened"],["openened","opened"],["openening","opening"],["openess","openness"],["openin","opening"],["openned","opened"],["openning","opening"],["operaand","operand"],["operaands","operands"],["operaion","operation"],["operaions","operations"],["operaiton","operation"],["operandes","operands"],["operaror","operator"],["operatation","operation"],["operatations","operations"],["operater","operator"],["operatings","operating"],["operatio","operation"],["operatione","operation"],["operatior","operator"],["operatng","operating"],["operato","operator"],["operaton","operation"],["operatons","operations"],["operattion","operation"],["operattions","operations"],["opereation","operation"],["opertaion","operation"],["opertaions","operations"],["opertion","operation"],["opertional","operational"],["opertions","operations"],["opertor","operator"],["opertors","operators"],["opetional","optional"],["ophan","orphan"],["ophtalmology","ophthalmology"],["opion","option"],["opionally","optionally"],["opions","options"],["opitionally","optionally"],["opiton","option"],["opitons","options"],["opject","object"],["opjected","objected"],["opjecteing","objecting"],["opjectification","objectification"],["opjectifications","objectifications"],["opjectified","objectified"],["opjecting","objecting"],["opjection","objection"],["opjections","objections"],["opjective","objective"],["opjectively","objectively"],["opjects","objects"],["opne","open"],["opned","opened"],["opnegroup","opengroup"],["opnssl","openssl"],["oponent","opponent"],["oportunity","opportunity"],["opose","oppose"],["oposed","opposed"],["oposite","opposite"],["oposition","opposition"],["oppenly","openly"],["opperate","operate"],["opperated","operated"],["opperates","operates"],["opperation","operation"],["opperational","operational"],["opperations","operations"],["oppertunist","opportunist"],["oppertunities","opportunities"],["oppertunity","opportunity"],["oppinion","opinion"],["oppinions","opinions"],["opponant","opponent"],["oppononent","opponent"],["opportunisticly","opportunistically"],["opportunistly","opportunistically"],["opportunties","opportunities"],["oppositition","opposition"],["oppossed","opposed"],["opprotunity","opportunity"],["opproximate","approximate"],["opps","oops"],["oppsofite","opposite"],["oppurtunity","opportunity"],["opration","operation"],["oprations","operations"],["opreating","operating"],["opreation","operation"],["opreations","operations"],["opression","oppression"],["opressive","oppressive"],["oprimization","optimization"],["oprimizations","optimizations"],["oprimize","optimize"],["oprimized","optimized"],["oprimizes","optimizes"],["optain","obtain"],["optained","obtained"],["optains","obtains"],["optaionl","optional"],["optening","opening"],["optet","opted"],["opthalmic","ophthalmic"],["opthalmologist","ophthalmologist"],["opthalmology","ophthalmology"],["opthamologist","ophthalmologist"],["optiional","optional"],["optimasation","optimization"],["optimazation","optimization"],["optimial","optimal"],["optimiality","optimality"],["optimisim","optimism"],["optimisitc","optimistic"],["optimisitic","optimistic"],["optimissm","optimism"],["optimitation","optimization"],["optimizaing","optimizing"],["optimizaton","optimization"],["optimizier","optimizer"],["optimiztion","optimization"],["optimiztions","optimizations"],["optimsitic","optimistic"],["optimyze","optimize"],["optimze","optimize"],["optimzie","optimize"],["optin","option"],["optinal","optional"],["optinally","optionally"],["optins","options"],["optio","option"],["optioanl","optional"],["optioin","option"],["optioinal","optional"],["optioins","options"],["optionalliy","optionally"],["optionallly","optionally"],["optionaly","optionally"],["optionel","optional"],["optiones","options"],["optionial","optional"],["optionn","option"],["optionnal","optional"],["optionnally","optionally"],["optionnaly","optionally"],["optionss","options"],["optios","options"],["optismied","optimised"],["optizmied","optimized"],["optmisation","optimisation"],["optmisations","optimisations"],["optmization","optimization"],["optmizations","optimizations"],["optmize","optimize"],["optmized","optimized"],["optoin","option"],["optoins","options"],["optomism","optimism"],["opton","option"],["optonal","optional"],["optonally","optionally"],["optons","options"],["opyion","option"],["opyions","options"],["orcale","oracle"],["orded","ordered"],["orderd","ordered"],["ordert","ordered"],["ording","ordering"],["ordner","order"],["orede","order"],["oredes","orders"],["oreding","ordering"],["oredred","ordered"],["orgamise","organise"],["organim","organism"],["organisaion","organisation"],["organisaions","organisations"],["organistion","organisation"],["organistions","organisations"],["organizaion","organization"],["organizaions","organizations"],["organiztion","organization"],["organiztions","organizations"],["organsiation","organisation"],["organsiations","organisations"],["organsied","organised"],["organsier","organiser"],["organsiers","organisers"],["organsies","organises"],["organsiing","organising"],["organziation","organization"],["organziations","organizations"],["organzied","organized"],["organzier","organizer"],["organziers","organizers"],["organzies","organizes"],["organziing","organizing"],["orgiginal","original"],["orgiginally","originally"],["orgiginals","originals"],["orginal","original"],["orginally","originally"],["orginals","originals"],["orginate","originate"],["orginated","originated"],["orginates","originates"],["orginating","originating"],["orginial","original"],["orginially","originally"],["orginials","originals"],["orginiate","originate"],["orginiated","originated"],["orginiates","originates"],["orgininal","original"],["orgininals","originals"],["orginisation","organisation"],["orginisations","organisations"],["orginised","organised"],["orginization","organization"],["orginizations","organizations"],["orginized","organized"],["orginx","originx"],["orginy","originy"],["orhpan","orphan"],["oriant","orient"],["oriantate","orientate"],["oriantated","orientated"],["oriantation","orientation"],["oridinarily","ordinarily"],["orieation","orientation"],["orieations","orientations"],["orienatate","orientate"],["orienatated","orientated"],["orienatation","orientation"],["orienation","orientation"],["orientaion","orientation"],["orientatied","orientated"],["oriente","oriented"],["orientiation","orientation"],["orientied","oriented"],["orientned","oriented"],["orietation","orientation"],["orietations","orientations"],["origanaly","originally"],["origial","original"],["origially","originally"],["origianal","original"],["origianally","originally"],["origianaly","originally"],["origianl","original"],["origianls","originals"],["origigin","origin"],["origiginal","original"],["origiginally","originally"],["origiginals","originals"],["originaly","originally"],["originial","original"],["originially","originally"],["originiated","originated"],["originiating","originating"],["origininal","original"],["origininate","originate"],["origininated","originated"],["origininates","originates"],["origininating","originating"],["origining","originating"],["originnally","originally"],["origion","origin"],["origional","original"],["origionally","originally"],["orign","origin"],["orignal","original"],["orignally","originally"],["orignate","originate"],["orignated","originated"],["orignates","originates"],["orignial","original"],["orignially","originally"],["origninal","original"],["oringal","original"],["oringally","originally"],["orpan","orphan"],["orpanage","orphanage"],["orpaned","orphaned"],["orpans","orphans"],["orriginal","original"],["orthagnal","orthogonal"],["orthagonal","orthogonal"],["orthagonalize","orthogonalize"],["orthoganal","orthogonal"],["orthoganalize","orthogonalize"],["orthognal","orthogonal"],["orthonormalizatin","orthonormalization"],["ortogonal","orthogonal"],["ortogonality","orthogonality"],["osbscure","obscure"],["osciallator","oscillator"],["oscilate","oscillate"],["oscilated","oscillated"],["oscilating","oscillating"],["oscilator","oscillator"],["oscilliscope","oscilloscope"],["oscilliscopes","oscilloscopes"],["osffset","offset"],["osffsets","offsets"],["osffsetting","offsetting"],["osicllations","oscillations"],["otain","obtain"],["otained","obtained"],["otains","obtains"],["otehr","other"],["otehrwice","otherwise"],["otehrwise","otherwise"],["otehrwize","otherwise"],["oterwice","otherwise"],["oterwise","otherwise"],["oterwize","otherwise"],["othe","other"],["othere","other"],["otherewise","otherwise"],["otherise","otherwise"],["otheriwse","otherwise"],["otherwaise","otherwise"],["otherways","otherwise"],["otherweis","otherwise"],["otherweise","otherwise"],["otherwhere","elsewhere"],["otherwhile","otherwise"],["otherwhise","otherwise"],["otherwice","otherwise"],["otherwide","otherwise"],["otherwis","otherwise"],["otherwize","otherwise"],["otherwordly","otherworldly"],["otherwose","otherwise"],["otherwrite","overwrite"],["otherws","otherwise"],["otherwse","otherwise"],["otherwsie","otherwise"],["otherwsise","otherwise"],["otherwuise","otherwise"],["otherwwise","otherwise"],["otherwyse","otherwise"],["othewice","otherwise"],["othewise","otherwise"],["othewize","otherwise"],["otho","otoh"],["othographic","orthographic"],["othwerise","otherwise"],["othwerwise","otherwise"],["othwhise","otherwise"],["otification","notification"],["otiginal","original"],["otion","option"],["otionally","optionally"],["otions","options"],["otpion","option"],["otpions","options"],["otput","output"],["otu","out"],["oublisher","publisher"],["ouer","outer"],["ouevre","oeuvre"],["oultinenodes","outlinenodes"],["oultiner","outliner"],["oultline","outline"],["oultlines","outlines"],["ountline","outline"],["ouptut","output"],["ouptuted","outputted"],["ouptuting","outputting"],["ouptuts","outputs"],["ouput","output"],["ouputarea","outputarea"],["ouputs","outputs"],["ouputted","outputted"],["ouputting","outputting"],["ourselfes","ourselves"],["ourselfs","ourselves"],["ourselvs","ourselves"],["ouside","outside"],["oustanding","outstanding"],["oustide","outside"],["outbut","output"],["outbuts","outputs"],["outgoign","outgoing"],["outisde","outside"],["outllook","outlook"],["outoign","outgoing"],["outout","output"],["outperfoem","outperform"],["outperfoeming","outperforming"],["outperfom","outperform"],["outperfome","outperform"],["outperfomeing","outperforming"],["outperfoming","outperforming"],["outperfomr","outperform"],["outperfomring","outperforming"],["outpout","output"],["outpouts","outputs"],["outpupt","output"],["outpusts","outputs"],["outputed","outputted"],["outputing","outputting"],["outselves","ourselves"],["outsid","outside"],["outter","outer"],["outtermost","outermost"],["outupt","output"],["outupts","outputs"],["outuput","output"],["outut","output"],["oututs","outputs"],["outweight","outweigh"],["outweights","outweighs"],["ouur","our"],["ouurs","ours"],["oveerun","overrun"],["oveflow","overflow"],["oveflowed","overflowed"],["oveflowing","overflowing"],["oveflows","overflows"],["ovelap","overlap"],["ovelapping","overlapping"],["over-engeneer","over-engineer"],["over-engeneering","over-engineering"],["overaall","overall"],["overal","overall"],["overcompansate","overcompensate"],["overcompansated","overcompensated"],["overcompansates","overcompensates"],["overcompansating","overcompensating"],["overcompansation","overcompensation"],["overcompansations","overcompensations"],["overengeneer","overengineer"],["overengeneering","overengineering"],["overfl","overflow"],["overfow","overflow"],["overfowed","overflowed"],["overfowing","overflowing"],["overfows","overflows"],["overhread","overhead"],["overiddden","overridden"],["overidden","overridden"],["overide","override"],["overiden","overridden"],["overides","overrides"],["overiding","overriding"],["overlaped","overlapped"],["overlaping","overlapping"],["overlapp","overlap"],["overlayed","overlaid"],["overlflow","overflow"],["overlflowed","overflowed"],["overlflowing","overflowing"],["overlflows","overflows"],["overlfow","overflow"],["overlfowed","overflowed"],["overlfowing","overflowing"],["overlfows","overflows"],["overlodaded","overloaded"],["overloded","overloaded"],["overlodes","overloads"],["overlow","overflow"],["overlowing","overflowing"],["overlows","overflows"],["overreidden","overridden"],["overreide","override"],["overreides","overrides"],["overriabled","overridable"],["overriddable","overridable"],["overriddden","overridden"],["overriddes","overrides"],["overridding","overriding"],["overrideable","overridable"],["overriden","overridden"],["overrident","overridden"],["overridiing","overriding"],["overrids","overrides"],["overrriddden","overridden"],["overrridden","overridden"],["overrride","override"],["overrriden","overridden"],["overrrides","overrides"],["overrriding","overriding"],["overrrun","overrun"],["overshaddowed","overshadowed"],["oversubcribe","oversubscribe"],["oversubcribed","oversubscribed"],["oversubcribes","oversubscribes"],["oversubcribing","oversubscribing"],["oversubscibe","oversubscribe"],["oversubscibed","oversubscribed"],["oversubscirbe","oversubscribe"],["oversubscirbed","oversubscribed"],["overthere","over there"],["overun","overrun"],["overvise","otherwise"],["overvize","otherwise"],["overvride","override"],["overvrides","overrides"],["overvrite","overwrite"],["overvrites","overwrites"],["overwelm","overwhelm"],["overwelming","overwhelming"],["overwheliming","overwhelming"],["overwiew","overview"],["overwirte","overwrite"],["overwirting","overwriting"],["overwirtten","overwritten"],["overwise","otherwise"],["overwite","overwrite"],["overwites","overwrites"],["overwitten","overwritten"],["overwize","otherwise"],["overwride","overwrite"],["overwriteable","overwritable"],["overwriten","overwritten"],["overwritren","overwritten"],["overwrittes","overwrites"],["overwrittin","overwriting"],["overwritting","overwriting"],["ovewrite","overwrite"],["ovewrites","overwrites"],["ovewriting","overwriting"],["ovewritten","overwritten"],["ovewrote","overwrote"],["ovride","override"],["ovrides","overrides"],["ovrlapped","overlapped"],["ovrridable","overridable"],["ovrridables","overridables"],["ovrwrt","overwrite"],["ovservable","observable"],["ovservation","observation"],["ovserve","observe"],["ovveride","override"],["ovverridden","overridden"],["ovverride","override"],["ovverrides","overrides"],["ovverriding","overriding"],["owener","owner"],["owerflow","overflow"],["owerflowed","overflowed"],["owerflowing","overflowing"],["owerflows","overflows"],["owership","ownership"],["owervrite","overwrite"],["owervrites","overwrites"],["owerwrite","overwrite"],["owerwrites","overwrites"],["owful","awful"],["ownder","owner"],["ownerhsip","ownership"],["ownner","owner"],["ownward","onward"],["ownwer","owner"],["ownwership","ownership"],["owrk","work"],["owudl","would"],["oxigen","oxygen"],["oximoron","oxymoron"],["oxzillary","auxiliary"],["oyu","you"],["p0enis","penis"],["paackage","package"],["pacakge","package"],["pacakges","packages"],["pacakging","packaging"],["paceholder","placeholder"],["pachage","package"],["paches","patches"],["pacht","patch"],["pachtches","patches"],["pachtes","patches"],["pacjage","package"],["pacjages","packages"],["packacge","package"],["packaeg","package"],["packaege","package"],["packaeges","packages"],["packaegs","packages"],["packag","package"],["packags","packages"],["packaing","packaging"],["packats","packets"],["packege","package"],["packge","package"],["packged","packaged"],["packgement","packaging"],["packges'","packages'"],["packges","packages"],["packgs","packages"],["packhage","package"],["packhages","packages"],["packtes","packets"],["pactch","patch"],["pactched","patched"],["pactches","patches"],["padam","param"],["padds","pads"],["pading","padding"],["paermission","permission"],["paermissions","permissions"],["paeth","path"],["pagagraph","paragraph"],["pahses","phases"],["paide","paid"],["painiting","painting"],["paintile","painttile"],["paintin","painting"],["paitience","patience"],["paiting","painting"],["pakage","package"],["pakageimpl","packageimpl"],["pakages","packages"],["pakcage","package"],["paket","packet"],["pakge","package"],["pakvage","package"],["palatte","palette"],["paleolitic","paleolithic"],["palete","palette"],["paliamentarian","parliamentarian"],["Palistian","Palestinian"],["Palistinian","Palestinian"],["Palistinians","Palestinians"],["pallete","palette"],["pallette","palette"],["palletted","paletted"],["paltette","palette"],["paltform","platform"],["pamflet","pamphlet"],["pamplet","pamphlet"],["paniced","panicked"],["panicing","panicking"],["pannel","panel"],["pannels","panels"],["pantomine","pantomime"],["paoition","position"],["paor","pair"],["Papanicalou","Papanicolaou"],["paradime","paradigm"],["paradym","paradigm"],["paraemeter","parameter"],["paraemeters","parameters"],["paraeters","parameters"],["parafanalia","paraphernalia"],["paragaph","paragraph"],["paragaraph","paragraph"],["paragarapha","paragraph"],["paragarph","paragraph"],["paragarphs","paragraphs"],["paragph","paragraph"],["paragpraph","paragraph"],["paragraphy","paragraph"],["paragrphs","paragraphs"],["parahaps","perhaps"],["paralel","parallel"],["paralelising","parallelising"],["paralelism","parallelism"],["paralelizing","parallelizing"],["paralell","parallel"],["paralelle","parallel"],["paralellism","parallelism"],["paralellization","parallelization"],["paralelly","parallelly"],["paralely","parallelly"],["paralle","parallel"],["parallell","parallel"],["parallely","parallelly"],["paralles","parallels"],["parallization","parallelization"],["parallize","parallelize"],["parallized","parallelized"],["parallizes","parallelizes"],["parallizing","parallelizing"],["paralllel","parallel"],["paralllels","parallels"],["paramameter","parameter"],["paramameters","parameters"],["paramater","parameter"],["paramaters","parameters"],["paramemeter","parameter"],["paramemeters","parameters"],["paramemter","parameter"],["paramemters","parameters"],["paramenet","parameter"],["paramenets","parameters"],["paramenter","parameter"],["paramenters","parameters"],["paramer","parameter"],["paramert","parameter"],["paramerters","parameters"],["paramerts","parameters"],["paramete","parameter"],["parameteras","parameters"],["parameteres","parameters"],["parameterical","parametrical"],["parameterts","parameters"],["parametes","parameters"],["parametised","parametrised"],["parametr","parameter"],["parametre","parameter"],["parametreless","parameterless"],["parametres","parameters"],["parametrs","parameters"],["parametter","parameter"],["parametters","parameters"],["paramss","params"],["paramter","parameter"],["paramterer","parameter"],["paramterers","parameters"],["paramteres","parameters"],["paramterize","parameterize"],["paramterless","parameterless"],["paramters","parameters"],["paramtrical","parametrical"],["parana","piranha"],["paraniac","paranoiac"],["paranoya","paranoia"],["parant","parent"],["parantheses","parentheses"],["paranthesis","parenthesis"],["parants","parents"],["paraphanalia","paraphernalia"],["paraphenalia","paraphernalia"],["pararagraph","paragraph"],["pararaph","paragraph"],["parareter","parameter"],["parargaph","paragraph"],["parargaphs","paragraphs"],["pararmeter","parameter"],["pararmeters","parameters"],["parastic","parasitic"],["parastics","parasitics"],["paratheses","parentheses"],["paratmers","parameters"],["paravirutalisation","paravirtualisation"],["paravirutalise","paravirtualise"],["paravirutalised","paravirtualised"],["paravirutalization","paravirtualization"],["paravirutalize","paravirtualize"],["paravirutalized","paravirtualized"],["parctical","practical"],["parctically","practically"],["pard","part"],["parellelogram","parallelogram"],["parellels","parallels"],["parem","param"],["paremeter","parameter"],["paremeters","parameters"],["paremter","parameter"],["paremters","parameters"],["parenthese","parentheses"],["parenthesed","parenthesized"],["parenthesies","parentheses"],["parenthises","parentheses"],["parenthsis","parenthesis"],["parge","large"],["parial","partial"],["parially","partially"],["paricular","particular"],["paricularly","particularly"],["parisitic","parasitic"],["paritally","partially"],["paritals","partials"],["paritial","partial"],["parition","partition"],["paritioning","partitioning"],["paritions","partitions"],["paritition","partition"],["parititioned","partitioned"],["parititioner","partitioner"],["parititiones","partitions"],["parititioning","partitioning"],["parititions","partitions"],["paritiy","parity"],["parituclar","particular"],["parliment","parliament"],["parmaeter","parameter"],["parmaeters","parameters"],["parmameter","parameter"],["parmameters","parameters"],["parmaters","parameters"],["parmeter","parameter"],["parmeters","parameters"],["parmter","parameter"],["parmters","parameters"],["parnoia","paranoia"],["parnter","partner"],["parntered","partnered"],["parntering","partnering"],["parnters","partners"],["parntership","partnership"],["parnterships","partnerships"],["parrakeets","parakeets"],["parralel","parallel"],["parrallel","parallel"],["parrallell","parallel"],["parrallelly","parallelly"],["parrallely","parallelly"],["parrent","parent"],["parseing","parsing"],["parsering","parsing"],["parsin","parsing"],["parstree","parse tree"],["partaining","pertaining"],["partcular","particular"],["partcularity","particularity"],["partcularly","particularly"],["parth","path"],["partialy","partially"],["particalar","particular"],["particalarly","particularly"],["particale","particle"],["particales","particles"],["partically","partially"],["particals","particles"],["particaluar","particular"],["particaluarly","particularly"],["particalur","particular"],["particalurly","particularly"],["particant","participant"],["particaular","particular"],["particaularly","particularly"],["particaulr","particular"],["particaulrly","particularly"],["particlar","particular"],["particlars","particulars"],["particually","particularly"],["particualr","particular"],["particuar","particular"],["particuarly","particularly"],["particulaly","particularly"],["particularily","particularly"],["particulary","particularly"],["particuliar","particular"],["partifular","particular"],["partiiton","partition"],["partiitoned","partitioned"],["partiitoning","partitioning"],["partiitons","partitions"],["partioned","partitioned"],["partirion","partition"],["partirioned","partitioned"],["partirioning","partitioning"],["partirions","partitions"],["partision","partition"],["partisioned","partitioned"],["partisioning","partitioning"],["partisions","partitions"],["partitial","partial"],["partiticipant","participant"],["partiticipants","participants"],["partiticular","particular"],["partitinioning","partitioning"],["partitioing","partitioning"],["partitiones","partitions"],["partitionned","partitioned"],["partitionning","partitioning"],["partitionns","partitions"],["partitionss","partitions"],["partiton","partition"],["partitoned","partitioned"],["partitoning","partitioning"],["partitons","partitions"],["partiula","particular"],["partiular","particular"],["partiularly","particularly"],["partiulars","particulars"],["pasengers","passengers"],["paser","parser"],["pasesd","passed"],["pash","hash"],["pasitioning","positioning"],["pasive","passive"],["pasre","parse"],["pasred","parsed"],["pasres","parses"],["passerbys","passersby"],["passin","passing"],["passiv","passive"],["passowrd","password"],["passs","pass"],["passsed","passed"],["passsing","passing"],["passthrought","passthrough"],["passthruogh","passthrough"],["passtime","pastime"],["passtrough","passthrough"],["passwird","password"],["passwirds","passwords"],["passwrod","password"],["passwrods","passwords"],["pasteing","pasting"],["pasttime","pastime"],["pastural","pastoral"],["pasword","password"],["paswords","passwords"],["patameter","parameter"],["patameters","parameters"],["patcket","packet"],["patckets","packets"],["patern","pattern"],["paterns","patterns"],["pathalogical","pathological"],["pathame","pathname"],["pathames","pathnames"],["pathane","pathname"],["pathced","patched"],["pathes","paths"],["pathign","pathing"],["pathnme","pathname"],["patholgoical","pathological"],["patial","spatial"],["paticular","particular"],["paticularly","particularly"],["patition","partition"],["pattented","patented"],["pattersn","patterns"],["pavillion","pavilion"],["pavillions","pavilions"],["pa\xEDnt","paint"],["pblisher","publisher"],["pbulisher","publisher"],["peacd","peace"],["peacefuland","peaceful and"],["peacify","pacify"],["peageant","pageant"],["peaple","people"],["peaples","peoples"],["pecentage","percentage"],["pecularities","peculiarities"],["pecularity","peculiarity"],["peculure","peculiar"],["pedestrain","pedestrian"],["peding","pending"],["pedning","pending"],["pefer","prefer"],["peferable","preferable"],["peferably","preferably"],["pefered","preferred"],["peference","preference"],["peferences","preferences"],["peferential","preferential"],["peferentially","preferentially"],["peferred","preferred"],["peferring","preferring"],["pefers","prefers"],["peform","perform"],["peformance","performance"],["peformed","performed"],["peforming","performing"],["pege","page"],["pehaps","perhaps"],["peice","piece"],["peicemeal","piecemeal"],["peices","pieces"],["peirod","period"],["peirodical","periodical"],["peirodicals","periodicals"],["peirods","periods"],["penalities","penalties"],["penality","penalty"],["penatly","penalty"],["pendantic","pedantic"],["pendig","pending"],["pendning","pending"],["penerator","penetrator"],["penisula","peninsula"],["penisular","peninsular"],["pennal","panel"],["pennals","panels"],["penninsula","peninsula"],["penninsular","peninsular"],["pennisula","peninsula"],["Pennyslvania","Pennsylvania"],["pensinula","peninsula"],["pensle","pencil"],["penultimante","penultimate"],["peom","poem"],["peoms","poems"],["peopel","people"],["peopels","peoples"],["peopl","people"],["peotry","poetry"],["pepare","prepare"],["peprocessor","preprocessor"],["per-interpeter","per-interpreter"],["perade","parade"],["peraphs","perhaps"],["percentange","percentage"],["percentanges","percentages"],["percentil","percentile"],["percepted","perceived"],["percetage","percentage"],["percetages","percentages"],["percievable","perceivable"],["percievabley","perceivably"],["percievably","perceivably"],["percieve","perceive"],["percieved","perceived"],["percise","precise"],["percisely","precisely"],["percision","precision"],["perenially","perennially"],["peretrator","perpetrator"],["perfec","perfect"],["perfecct","perfect"],["perfecctly","perfectly"],["perfeclty","perfectly"],["perfecly","perfectly"],["perfectably","perfectly"],["perfer","prefer"],["perferable","preferable"],["perferably","preferably"],["perferance","preference"],["perferances","preferences"],["perferct","perfect"],["perferctly","perfectly"],["perferect","perfect"],["perferectly","perfectly"],["perfered","preferred"],["perference","preference"],["perferences","preferences"],["perferm","perform"],["perfermance","performance"],["perfermances","performances"],["perfermence","performance"],["perfermences","performances"],["perferr","prefer"],["perferrable","preferable"],["perferrably","preferably"],["perferrance","preference"],["perferrances","preferences"],["perferred","preferred"],["perferrence","preference"],["perferrences","preferences"],["perferrm","perform"],["perferrmance","performance"],["perferrmances","performances"],["perferrmence","performance"],["perferrmences","performances"],["perferrs","prefers"],["perfers","prefers"],["perfix","prefix"],["perfmormance","performance"],["perfoem","perform"],["perfoemamce","performance"],["perfoemamces","performances"],["perfoemance","performance"],["perfoemanse","performance"],["perfoemanses","performances"],["perfoemant","performant"],["perfoemative","performative"],["perfoemed","performed"],["perfoemer","performer"],["perfoemers","performers"],["perfoeming","performing"],["perfoemnace","performance"],["perfoemnaces","performances"],["perfoems","performs"],["perfom","perform"],["perfomamce","performance"],["perfomamces","performances"],["perfomance","performance"],["perfomanse","performance"],["perfomanses","performances"],["perfomant","performant"],["perfomative","performative"],["perfome","perform"],["perfomeamce","performance"],["perfomeamces","performances"],["perfomeance","performance"],["perfomeanse","performance"],["perfomeanses","performances"],["perfomeant","performant"],["perfomeative","performative"],["perfomed","performed"],["perfomeed","performed"],["perfomeer","performer"],["perfomeers","performers"],["perfomeing","performing"],["perfomenace","performance"],["perfomenaces","performances"],["perfomer","performer"],["perfomers","performers"],["perfomes","performs"],["perfoming","performing"],["perfomnace","performance"],["perfomnaces","performances"],["perfomr","perform"],["perfomramce","performance"],["perfomramces","performances"],["perfomrance","performance"],["perfomranse","performance"],["perfomranses","performances"],["perfomrant","performant"],["perfomrative","performative"],["perfomred","performed"],["perfomrer","performer"],["perfomrers","performers"],["perfomring","performing"],["perfomrnace","performance"],["perfomrnaces","performances"],["perfomrs","performs"],["perfoms","performs"],["perfor","perform"],["perforam","perform"],["perforamed","performed"],["perforaming","performing"],["perforamnce","performance"],["perforamnces","performances"],["perforams","performs"],["perford","performed"],["perforemd","performed"],["performace","performance"],["performaed","performed"],["performamce","performance"],["performane","performance"],["performence","performance"],["performnace","performance"],["perfors","performs"],["perfro","perform"],["perfrom","perform"],["perfromance","performance"],["perfromed","performed"],["perfroming","performing"],["perfroms","performs"],["perhabs","perhaps"],["perhas","perhaps"],["perhasp","perhaps"],["perheaps","perhaps"],["perhpas","perhaps"],["peridic","periodic"],["perihperal","peripheral"],["perihperals","peripherals"],["perimetre","perimeter"],["perimetres","perimeters"],["periode","period"],["periodicaly","periodically"],["periodioc","periodic"],["peripathetic","peripatetic"],["peripherial","peripheral"],["peripherials","peripherals"],["perisist","persist"],["perisisted","persisted"],["perisistent","persistent"],["peristent","persistent"],["perjery","perjury"],["perjorative","pejorative"],["perlciritc","perlcritic"],["permable","permeable"],["permament","permanent"],["permamently","permanently"],["permanant","permanent"],["permanantly","permanently"],["permanentely","permanently"],["permanenty","permanently"],["permantly","permanently"],["permenant","permanent"],["permenantly","permanently"],["permessioned","permissioned"],["permision","permission"],["permisions","permissions"],["permisison","permission"],["permisisons","permissions"],["permissable","permissible"],["permissiosn","permissions"],["permisson","permission"],["permissons","permissions"],["permisssion","permission"],["permisssions","permissions"],["permited","permitted"],["permition","permission"],["permitions","permissions"],["permmission","permission"],["permmissions","permissions"],["permormance","performance"],["permssion","permission"],["permssions","permissions"],["permuatate","permutate"],["permuatated","permutated"],["permuatates","permutates"],["permuatating","permutating"],["permuatation","permutation"],["permuatations","permutations"],["permuation","permutation"],["permuations","permutations"],["permutaion","permutation"],["permutaions","permutations"],["permution","permutation"],["permutions","permutations"],["peroendicular","perpendicular"],["perogative","prerogative"],["peroid","period"],["peroidic","periodic"],["peroidical","periodical"],["peroidically","periodically"],["peroidicals","periodicals"],["peroidicity","periodicity"],["peroids","periods"],["peronal","personal"],["peroperly","properly"],["perosnality","personality"],["perpandicular","perpendicular"],["perpandicularly","perpendicularly"],["perperties","properties"],["perpertrated","perpetrated"],["perperty","property"],["perphas","perhaps"],["perpindicular","perpendicular"],["perpsective","perspective"],["perpsectives","perspectives"],["perrror","perror"],["persan","person"],["persepctive","perspective"],["persepective","perspective"],["persepectives","perspectives"],["perserve","preserve"],["perserved","preserved"],["perserverance","perseverance"],["perservere","persevere"],["perservered","persevered"],["perserveres","perseveres"],["perservering","persevering"],["perserves","preserves"],["perserving","preserving"],["perseverence","perseverance"],["persisit","persist"],["persisited","persisted"],["persistance","persistence"],["persistant","persistent"],["persistantly","persistently"],["persisten","persistent"],["persistented","persisted"],["persited","persisted"],["persitent","persistent"],["personalitie","personality"],["personalitites","personalities"],["personalitity","personality"],["personalitys","personalities"],["personaly","personally"],["personell","personnel"],["personnal","personal"],["personnaly","personally"],["personnell","personnel"],["perspecitve","perspective"],["persuded","persuaded"],["persue","pursue"],["persued","pursued"],["persuing","pursuing"],["persuit","pursuit"],["persuits","pursuits"],["persumably","presumably"],["perticular","particular"],["perticularly","particularly"],["perticulars","particulars"],["pertrub","perturb"],["pertrubation","perturbation"],["pertrubations","perturbations"],["pertrubing","perturbing"],["pertub","perturb"],["pertubate","perturb"],["pertubated","perturbed"],["pertubates","perturbs"],["pertubation","perturbation"],["pertubations","perturbations"],["pertubing","perturbing"],["perturbate","perturb"],["perturbates","perturbs"],["pervious","previous"],["perviously","previously"],["pessiary","pessary"],["petetion","petition"],["pevent","prevent"],["pevents","prevents"],["pezier","bezier"],["phanthom","phantom"],["Pharoah","Pharaoh"],["phasepsace","phasespace"],["phasis","phases"],["phenomenom","phenomenon"],["phenomenonal","phenomenal"],["phenomenonly","phenomenally"],["phenomonenon","phenomenon"],["phenomonon","phenomenon"],["phenonmena","phenomena"],["pheriparials","peripherals"],["Philipines","Philippines"],["philisopher","philosopher"],["philisophical","philosophical"],["philisophy","philosophy"],["Phillipine","Philippine"],["phillipines","philippines"],["Phillippines","Philippines"],["phillosophically","philosophically"],["philospher","philosopher"],["philosphies","philosophies"],["philosphy","philosophy"],["phisical","physical"],["phisically","physically"],["phisicaly","physically"],["phisics","physics"],["phisosophy","philosophy"],["Phonecian","Phoenecian"],["phoneticly","phonetically"],["phongraph","phonograph"],["phote","photo"],["photografic","photographic"],["photografical","photographical"],["photografy","photography"],["photograpic","photographic"],["photograpical","photographical"],["phsical","physical"],["phsyically","physically"],["phtread","pthread"],["phtreads","pthreads"],["phyiscal","physical"],["phyiscally","physically"],["phyiscs","physics"],["phylosophical","philosophical"],["physcial","physical"],["physial","physical"],["physicaly","physically"],["physisist","physicist"],["phython","python"],["phyton","python"],["phy_interace","phy_interface"],["piblisher","publisher"],["pice","piece"],["picoseond","picosecond"],["picoseonds","picoseconds"],["piggypack","piggyback"],["piggypacked","piggybacked"],["pilgrimmage","pilgrimage"],["pilgrimmages","pilgrimages"],["pimxap","pixmap"],["pimxaps","pixmaps"],["pinapple","pineapple"],["pinnaple","pineapple"],["pinoneered","pioneered"],["piont","point"],["pionter","pointer"],["pionts","points"],["piority","priority"],["pipeine","pipeline"],["pipeines","pipelines"],["pipelien","pipeline"],["pipeliens","pipelines"],["pipelin","pipeline"],["pipelinining","pipelining"],["pipelins","pipelines"],["pipepline","pipeline"],["pipeplines","pipelines"],["pipiline","pipeline"],["pipilines","pipelines"],["pipleine","pipeline"],["pipleines","pipelines"],["pipleline","pipeline"],["piplelines","pipelines"],["pitty","pity"],["pivott","pivot"],["pivotting","pivoting"],["pixes","pixels"],["placeemnt","placement"],["placeemnts","placements"],["placehoder","placeholder"],["placeholde","placeholder"],["placeholdes","placeholders"],["placeholer","placeholder"],["placeholers","placeholders"],["placemenet","placement"],["placemenets","placements"],["placholder","placeholder"],["placholders","placeholders"],["placmenet","placement"],["placmenets","placements"],["plaform","platform"],["plaforms","platforms"],["plaftorm","platform"],["plaftorms","platforms"],["plagarism","plagiarism"],["plalform","platform"],["plalforms","platforms"],["planation","plantation"],["plantext","plaintext"],["plantiff","plaintiff"],["plasement","placement"],["plasements","placements"],["plateu","plateau"],["platfarm","platform"],["platfarms","platforms"],["platfform","platform"],["platfforms","platforms"],["platflorm","platform"],["platflorms","platforms"],["platfoem","platform"],["platfom","platform"],["platfomr","platform"],["platfomrs","platforms"],["platfoms","platforms"],["platform-spacific","platform-specific"],["platforma","platforms"],["platformt","platforms"],["platfrom","platform"],["platfroms","platforms"],["plathome","platform"],["platofmr","platform"],["platofmrs","platforms"],["platofms","platforms"],["platofmss","platforms"],["platoform","platform"],["platoforms","platforms"],["platofrm","platform"],["platofrms","platforms"],["plattform","platform"],["plattforms","platforms"],["plausability","plausibility"],["plausable","plausible"],["playble","playable"],["playge","plague"],["playgerise","plagiarise"],["playgerize","plagiarize"],["playgropund","playground"],["playist","playlist"],["playists","playlists"],["playright","playwright"],["playwrite","playwright"],["playwrites","playwrights"],["plcae","place"],["plcaebo","placebo"],["plcaed","placed"],["plcaeholder","placeholder"],["plcaeholders","placeholders"],["plcaement","placement"],["plcaements","placements"],["plcaes","places"],["pleaase","please"],["pleacing","placing"],["pleae","please"],["pleaee","please"],["pleaes","please"],["pleasd","pleased"],["pleasent","pleasant"],["pleasently","pleasantly"],["plebicite","plebiscite"],["plecing","placing"],["plent","plenty"],["plesae","please"],["plesant","pleasant"],["plese","please"],["plesently","pleasantly"],["pliars","pliers"],["pllatforms","platforms"],["ploted","plotted"],["ploting","plotting"],["ploynomial","polynomial"],["ploynomials","polynomials"],["pltform","platform"],["pltforms","platforms"],["plugable","pluggable"],["pluged","plugged"],["pluign","plugin"],["pluigns","plugins"],["pluse","pulse"],["plyotropy","pleiotropy"],["pobular","popular"],["pobularity","popularity"],["podule","module"],["poenis","penis"],["poential","potential"],["poentially","potentially"],["poentials","potentials"],["poeoples","peoples"],["poeple","people"],["poety","poetry"],["pogress","progress"],["poicies","policies"],["poicy","policy"],["poiint","point"],["poiints","points"],["poind","point"],["poindcloud","pointcloud"],["poiner","pointer"],["poing","point"],["poinits","points"],["poinnter","pointer"],["poins","points"],["pointeres","pointers"],["pointes","points"],["pointetr","pointer"],["pointetrs","pointers"],["pointeur","pointer"],["pointseta","poinsettia"],["pointss","points"],["pointzer","pointer"],["poinyent","poignant"],["poisin","poison"],["poisition","position"],["poisitioned","positioned"],["poisitioning","positioning"],["poisitionning","positioning"],["poisitions","positions"],["poistion","position"],["poistioned","positioned"],["poistioning","positioning"],["poistions","positions"],["poistive","positive"],["poistively","positively"],["poistives","positives"],["poistivly","positively"],["poit","point"],["poitd","pointed"],["poited","pointed"],["poiter","pointer"],["poiters","pointers"],["poiting","pointing"],["poitless","pointless"],["poitlessly","pointlessly"],["poitn","point"],["poitnd","pointed"],["poitned","pointed"],["poitner","pointer"],["poitnes","points"],["poitning","pointing"],["poitns","points"],["poits","points"],["poiunter","pointer"],["poject","project"],["pojecting","projecting"],["pojnt","point"],["pojrect","project"],["pojrected","projected"],["pojrecting","projecting"],["pojrection","projection"],["pojrections","projections"],["pojrector","projector"],["pojrectors","projectors"],["pojrects","projects"],["poket","pocket"],["polariy","polarity"],["polgon","polygon"],["polgons","polygons"],["polical","political"],["policiy","policy"],["poligon","polygon"],["poligons","polygons"],["polinator","pollinator"],["polinators","pollinators"],["politican","politician"],["politicans","politicians"],["politicing","politicking"],["pollenate","pollinate"],["polltry","poultry"],["polocies","policies"],["polocy","policy"],["polocys","policies"],["pologon","polygon"],["pologons","polygons"],["polotic","politic"],["polotical","political"],["polotics","politics"],["poltical","political"],["poltry","poultry"],["polute","pollute"],["poluted","polluted"],["polutes","pollutes"],["poluting","polluting"],["polution","pollution"],["polyar","polar"],["polyedral","polyhedral"],["polygond","polygons"],["polygone","polygon"],["polymorpic","polymorphic"],["polynomal","polynomial"],["polynomals","polynomials"],["polyphonyic","polyphonic"],["polypoygon","polypolygon"],["polypoylgons","polypolygons"],["polysaccaride","polysaccharide"],["polysaccharid","polysaccharide"],["pomegranite","pomegranate"],["pomotion","promotion"],["pompay","Pompeii"],["ponint","point"],["poninted","pointed"],["poninter","pointer"],["poninting","pointing"],["ponints","points"],["ponit","point"],["ponitd","pointed"],["ponited","pointed"],["poniter","pointer"],["poniters","pointers"],["ponits","points"],["pont","point"],["pontential","potential"],["ponter","pointer"],["ponting","pointing"],["ponts","points"],["pontuation","punctuation"],["pooint","point"],["poointed","pointed"],["poointer","pointer"],["pooints","points"],["poost","post"],["poperee","potpourri"],["poperties","properties"],["popoen","popen"],["popolate","populate"],["popolated","populated"],["popolates","populates"],["popolating","populating"],["poportional","proportional"],["popoulation","population"],["popoup","popup"],["poppup","popup"],["popularaty","popularity"],["populare","popular"],["populer","popular"],["popullate","populate"],["popullated","populated"],["popuplar","popular"],["popuplarity","popularity"],["popuplate","populate"],["popuplated","populated"],["popuplates","populates"],["popuplating","populating"],["popuplation","population"],["porbably","probably"],["porblem","problem"],["porblems","problems"],["porcess","process"],["porcessed","processed"],["porcesses","processes"],["porcessing","processing"],["porcessor","processor"],["porcessors","processors"],["porgram","program"],["porgrammeer","programmer"],["porgrammeers","programmers"],["porgramming","programming"],["porgrams","programs"],["poriferal","peripheral"],["porject","project"],["porjection","projection"],["porjects","projects"],["porotocol","protocol"],["porotocols","protocols"],["porperties","properties"],["porperty","property"],["porportion","proportion"],["porportional","proportional"],["porportionally","proportionally"],["porportioning","proportioning"],["porportions","proportions"],["porsalin","porcelain"],["porshan","portion"],["porshon","portion"],["portait","portrait"],["portaits","portraits"],["portayed","portrayed"],["portected","protected"],["portguese","Portuguese"],["portioon","portion"],["portraing","portraying"],["portugese","Portuguese"],["portuguease","Portuguese"],["portugues","Portuguese"],["porve","prove"],["porved","proved"],["porven","proven"],["porves","proves"],["porvide","provide"],["porvided","provided"],["porvider","provider"],["porvides","provides"],["porviding","providing"],["porvids","provides"],["porving","proving"],["posative","positive"],["posatives","positives"],["posativity","positivity"],["poseesions","possessions"],["posess","possess"],["posessed","possessed"],["posesses","possesses"],["posessing","possessing"],["posession","possession"],["posessions","possessions"],["posibilities","possibilities"],["posibility","possibility"],["posibilties","possibilities"],["posible","possible"],["posiblity","possibility"],["posibly","possibly"],["posiitive","positive"],["posiitives","positives"],["posiitivity","positivity"],["posisition","position"],["posisitioned","positioned"],["posistion","position"],["positionn","position"],["positionned","positioned"],["positionnes","positions"],["positionning","positioning"],["positionns","positions"],["positiv","positive"],["positivie","positive"],["positivies","positives"],["positivly","positively"],["positoin","position"],["positoined","positioned"],["positoins","positions"],["positonal","positional"],["positoned","positioned"],["positoning","positioning"],["positve","positive"],["positves","positives"],["POSIX-complient","POSIX-compliant"],["pospone","postpone"],["posponed","postponed"],["posption","position"],["possabilites","possibilities"],["possabilities","possibilities"],["possability","possibility"],["possabilties","possibilities"],["possabily","possibly"],["possable","possible"],["possably","possibly"],["possbily","possibly"],["possble","possible"],["possbly","possibly"],["posseses","possesses"],["possesing","possessing"],["possesion","possession"],["possesive","possessive"],["possessess","possesses"],["possiable","possible"],["possibbe","possible"],["possibe","possible"],["possibile","possible"],["possibilies","possibilities"],["possibilites","possibilities"],["possibilitities","possibilities"],["possibiliy","possibility"],["possibillity","possibility"],["possibilties","possibilities"],["possibilty","possibility"],["possibily","possibly"],["possibities","possibilities"],["possibity","possibility"],["possiblble","possible"],["possiblec","possible"],["possiblely","possibly"],["possiblility","possibility"],["possiblilty","possibility"],["possiblities","possibilities"],["possiblity","possibility"],["possiblly","possibly"],["possilbe","possible"],["possily","possibly"],["possition","position"],["possitive","positive"],["possitives","positives"],["possobily","possibly"],["possoble","possible"],["possobly","possibly"],["posssible","possible"],["post-morten","post-mortem"],["post-proces","post-process"],["post-procesing","post-processing"],["postcondtion","postcondition"],["postcondtions","postconditions"],["Postdam","Potsdam"],["postgress","PostgreSQL"],["postgressql","PostgreSQL"],["postgrsql","PostgreSQL"],["posthomous","posthumous"],["postiional","positional"],["postiive","positive"],["postincremend","postincrement"],["postion","position"],["postioned","positioned"],["postions","positions"],["postition","position"],["postitive","positive"],["postitives","positives"],["postive","positive"],["postives","positives"],["postmage","postimage"],["postphoned","postponed"],["postpocessing","postprocessing"],["postponinig","postponing"],["postprocesing","postprocessing"],["postscritp","postscript"],["postulat","postulate"],["postuminus","posthumous"],["postumus","posthumous"],["potatoe","potato"],["potatos","potatoes"],["potencial","potential"],["potencially","potentially"],["potencials","potentials"],["potenial","potential"],["potenially","potentially"],["potentail","potential"],["potentailly","potentially"],["potentails","potentials"],["potental","potential"],["potentally","potentially"],["potentatially","potentially"],["potententially","potentially"],["potentiallly","potentially"],["potentialy","potentially"],["potentiel","potential"],["potentiomenter","potentiometer"],["potition","position"],["potocol","protocol"],["potrait","portrait"],["potrayed","portrayed"],["poulations","populations"],["pount","point"],["pounts","points"],["poupular","popular"],["poverful","powerful"],["poweful","powerful"],["powerfull","powerful"],["powerppc","powerpc"],["pozitive","positive"],["pozitively","positively"],["pozitives","positives"],["ppcheck","cppcheck"],["ppeline","pipeline"],["ppelines","pipelines"],["ppolygons","polygons"],["ppublisher","publisher"],["ppyint","pyint"],["praameter","parameter"],["praameters","parameters"],["prabability","probability"],["prabable","probable"],["prabably","probably"],["pracitcal","practical"],["pracitcally","practically"],["practial","practical"],["practially","practically"],["practicaly","practically"],["practicioner","practitioner"],["practicioners","practitioners"],["practicly","practically"],["practictitioner","practitioner"],["practictitioners","practitioners"],["practicval","practical"],["practioner","practitioner"],["practioners","practitioners"],["praefix","prefix"],["pragam","pragma"],["pragmato","pragma to"],["prairy","prairie"],["pramater","parameter"],["prameter","parameter"],["prameters","parameters"],["prarameter","parameter"],["prarameters","parameters"],["prarie","prairie"],["praries","prairies"],["pratical","practical"],["pratically","practically"],["pratice","practice"],["prcess","process"],["prcesses","processes"],["prcessing","processing"],["prcoess","process"],["prcoessed","processed"],["prcoesses","processes"],["prcoessing","processing"],["prctiles","percentiles"],["prdpagate","propagate"],["prdpagated","propagated"],["prdpagates","propagates"],["prdpagating","propagating"],["prdpagation","propagation"],["prdpagations","propagations"],["prdpagator","propagator"],["prdpagators","propagators"],["pre-condifure","pre-configure"],["pre-condifured","pre-configured"],["pre-confifure","pre-configure"],["pre-confifured","pre-configured"],["pre-confure","pre-configure"],["pre-confured","pre-configured"],["pre-congifure","pre-configure"],["pre-congifured","pre-configured"],["pre-defiend","pre-defined"],["pre-defiened","pre-defined"],["pre-empt","preempt"],["pre-pended","prepended"],["pre-pre-realease","pre-pre-release"],["pre-proces","pre-process"],["pre-procesing","pre-processing"],["pre-realease","pre-release"],["pre-registeres","pre-registers"],["prealocate","preallocate"],["prealocated","preallocated"],["prealocates","preallocates"],["prealocating","preallocating"],["preambule","preamble"],["preamle","preamble"],["preample","preamble"],["preaorocessing","preprocessing"],["preapared","prepared"],["preapre","prepare"],["preaprooved","preapproved"],["prebious","previous"],["precacheed","precached"],["precceding","preceding"],["precding","preceding"],["preced","precede"],["precedencs","precedence"],["precedessor","predecessor"],["preceds","precedes"],["preceision","precision"],["precence","presence"],["precendance","precedence"],["precendances","precedences"],["precende","precedence"],["precendece","precedence"],["precendeces","precedences"],["precendence","precedence"],["precendences","precedences"],["precendencies","precedences"],["precendent","precedent"],["precendes","precedences"],["precending","preceding"],["precends","precedence"],["precenences","preferences"],["precense","presence"],["precentage","percentage"],["precentile","percentile"],["precentiles","percentiles"],["precessing","processing"],["precice","precise"],["precicion","precision"],["precidence","precedence"],["precisily","precisely"],["precisionn","precision"],["precisision","precision"],["precisly","precisely"],["precison","precision"],["precize","precise"],["precomuted","precomputed"],["preconditoner","preconditioner"],["preconditoners","preconditioners"],["precondtion","precondition"],["precondtioner","preconditioner"],["precondtioners","preconditioners"],["precondtionner","preconditioner"],["precondtionners","preconditioners"],["precondtions","preconditions"],["preconfiged","preconfigured"],["precsions","precisions"],["precuation","precaution"],["preculde","preclude"],["preculded","precluded"],["preculdes","precludes"],["precumputed","precomputed"],["precurser","precursor"],["precussion","percussion"],["precussions","percussions"],["predecesor","predecessor"],["predecesors","predecessors"],["predeclarnig","predeclaring"],["predefiend","predefined"],["predefiened","predefined"],["predefiined","predefined"],["predefineds","predefined"],["predessor","predecessor"],["predfined","predefined"],["predicat","predicate"],["predicatble","predictable"],["predicitons","predictions"],["predictible","predictable"],["predifined","predefined"],["predomiantly","predominately"],["preeceding","preceding"],["preemptable","preemptible"],["preesnt","present"],["prefectches","prefetches"],["prefecth","prefetch"],["prefectly","perfectly"],["prefence","preference"],["prefences","preferences"],["preferance","preference"],["preferances","preferences"],["preferecne","preference"],["preferecnes","preferences"],["prefered","preferred"],["preferencfe","preference"],["preferencfes","preferences"],["preferes","prefers"],["prefering","preferring"],["prefernce","preference"],["prefernces","preferences"],["prefernec","preference"],["preferr","prefer"],["preferrable","preferable"],["preferrably","preferably"],["preferrence","preference"],["preferrences","preferences"],["preferrred","preferred"],["prefetchs","prefetches"],["prefex","prefix"],["preffer","prefer"],["prefferable","preferable"],["prefferably","preferably"],["preffered","preferred"],["preffix","prefix"],["preffixed","prefixed"],["preffixes","prefixes"],["preffixing","prefixing"],["prefices","prefixes"],["preformance","performance"],["preformances","performances"],["pregancies","pregnancies"],["prehaps","perhaps"],["preiod","period"],["preivew","preview"],["preivous","previous"],["prejected","projected"],["prejection","projection"],["prejections","projections"],["preliferation","proliferation"],["prelimitary","preliminary"],["premeire","premiere"],["premeired","premiered"],["premillenial","premillennial"],["preminence","preeminence"],["premission","permission"],["premit","permit"],["premits","permits"],["Premonasterians","Premonstratensians"],["premption","preemption"],["premptive","preemptive"],["premptively","preemptively"],["preocess","process"],["preocupation","preoccupation"],["preoperty","property"],["prepair","prepare"],["prepaired","prepared"],["prepand","prepend"],["preparetion","preparation"],["preparetions","preparations"],["prepartion","preparation"],["prepartions","preparations"],["prepate","prepare"],["prepated","prepared"],["prepates","prepares"],["prepatory","preparatory"],["prependet","prepended"],["prepented","prepended"],["preperation","preparation"],["preperations","preparations"],["preponderence","preponderance"],["preppend","prepend"],["preppended","prepended"],["preppendet","prepended"],["preppented","prepended"],["preprend","prepend"],["preprended","prepended"],["prepresent","represent"],["prepresented","represented"],["prepresents","represents"],["preproces","preprocess"],["preprocesing","preprocessing"],["preprocesor","preprocessor"],["preprocesser","preprocessor"],["preprocessers","preprocessors"],["preprocesssing","preprocessing"],["prequisite","prerequisite"],["prequisites","prerequisites"],["prerequesite","prerequisite"],["prerequesites","prerequisites"],["prerequisit","prerequisite"],["prerequisities","prerequisites"],["prerequisits","prerequisites"],["prerequiste","prerequisite"],["prerequsite","prerequisite"],["prerequsites","prerequisites"],["preriod","period"],["preriodic","periodic"],["prersistent","persistent"],["presance","presence"],["prescripe","prescribe"],["prescriped","prescribed"],["prescrition","prescription"],["prescritions","prescriptions"],["presearvation","preservation"],["presearvations","preservations"],["presearve","preserve"],["presearved","preserved"],["presearver","preserver"],["presearves","preserves"],["presearving","preserving"],["presedential","presidential"],["presenece","presence"],["presener","presenter"],["presense","presence"],["presentaion","presentation"],["presentaional","presentational"],["presentaions","presentations"],["presernt","present"],["preserrved","preserved"],["preserv","preserve"],["presetation","presentation"],["preseve","preserve"],["preseved","preserved"],["preseverance","perseverance"],["preseverence","perseverance"],["preseves","preserves"],["preseving","preserving"],["presicion","precision"],["presidenital","presidential"],["presidental","presidential"],["presist","persist"],["presistable","persistable"],["presistance","persistence"],["presistant","persistent"],["presistantly","persistently"],["presisted","persisted"],["presistence","persistence"],["presistency","persistency"],["presistent","persistent"],["presistently","persistently"],["presisting","persisting"],["presistion","precision"],["presists","persists"],["presitgious","prestigious"],["presmissions","permissions"],["presntation","presentation"],["presntations","presentations"],["prespective","perspective"],["presreved","preserved"],["pressent","present"],["pressentation","presentation"],["pressented","presented"],["pressre","pressure"],["pressue","pressure"],["pressues","pressures"],["prestigeous","prestigious"],["prestigous","prestigious"],["presuambly","presumably"],["presumabely","presumably"],["presumaby","presumably"],["presumebly","presumably"],["presumely","presumably"],["presumibly","presumably"],["pretaining","pertaining"],["pretect","protect"],["pretected","protected"],["pretecting","protecting"],["pretection","protection"],["pretects","protects"],["pretendend","pretended"],["pretty-printter","pretty-printer"],["preveiw","preview"],["preveiwed","previewed"],["preveiwer","previewer"],["preveiwers","previewers"],["preveiws","previews"],["prevelance","prevalence"],["prevelant","prevalent"],["preven","prevent"],["prevend","prevent"],["preverse","perverse"],["preverses","preserves"],["preverve","preserve"],["prevew","preview"],["prevews","previews"],["previewd","previewed"],["previious","previous"],["previlege","privilege"],["previoous","previous"],["previos","previous"],["previosly","previously"],["previosu","previous"],["previosuly","previously"],["previou","previous"],["previouls","previous"],["previoulsy","previously"],["previouly","previously"],["previouse","previous"],["previousl","previously"],["previousy","previously"],["previsou","previous"],["previsouly","previously"],["previuous","previous"],["previus","previous"],["previvous","previous"],["prevoius","previous"],["prevous","previous"],["prevously","previously"],["prewview","preview"],["prexisting","preexisting"],["prexixed","prefixed"],["prfer","prefer"],["prferable","preferable"],["prferables","preferable"],["prference","preference"],["prferred","preferred"],["prgram","program"],["priave","private"],["pricipal","principal"],["priciple","principle"],["priciples","principles"],["pricision","precision"],["priestood","priesthood"],["primaray","primary"],["primarely","primarily"],["primarly","primarily"],["primative","primitive"],["primatively","primitively"],["primatives","primitives"],["primay","primary"],["primeter","perimeter"],["primitave","primitive"],["primitiv","primitive"],["primitve","primitive"],["primitves","primitives"],["primive","primitive"],["primordal","primordial"],["princeple","principle"],["princeples","principles"],["princible","principle"],["principaly","principality"],["principial","principal"],["principlaity","principality"],["principly","principally"],["princliple","principle"],["prind","print"],["prinicipal","principal"],["prining","printing"],["printting","printing"],["prioirties","priorities"],["prioirty","priority"],["prioritiy","priority"],["priorization","prioritization"],["priorizations","prioritizations"],["priorty","priority"],["priot","prior"],["priotise","prioritise"],["priotised","prioritised"],["priotising","prioritising"],["priotities","priorities"],["priotitize","prioritize"],["priotity","priority"],["priotized","prioritized"],["priotizing","prioritizing"],["priots","priors"],["prirority","priority"],["pris","prise"],["priting","printing"],["privalege","privilege"],["privaleges","privileges"],["privaye","private"],["privcy","privacy"],["privde","provide"],["priveledge","privilege"],["priveledged","privileged"],["priveledges","privileges"],["privelege","privilege"],["priveleged","privileged"],["priveleges","privileges"],["privelige","privilege"],["priveliged","privileged"],["priveliges","privileges"],["privelleges","privileges"],["priviate","private"],["privide","provide"],["privided","provided"],["privides","provides"],["prividing","providing"],["priview","preview"],["privilage","privilege"],["privilaged","privileged"],["privilages","privileges"],["priviledge","privilege"],["priviledged","privileged"],["priviledges","privileges"],["privilidge","privilege"],["privilidged","privileged"],["privilidges","privileges"],["privilige","privilege"],["priviliged","privileged"],["priviliges","privileges"],["privious","previous"],["priviously","previously"],["privision","provision"],["privisional","provisional"],["privisions","provisions"],["privledge","privilege"],["privleges","privileges"],["privte","private"],["prject","project"],["prjecting","projecting"],["prjection","projection"],["prjections","projections"],["prjects","projects"],["prmitive","primitive"],["prmitives","primitives"],["prmopting","prompting"],["proable","probable"],["proably","probably"],["probabalistic","probabilistic"],["probabaly","probably"],["probabilaty","probability"],["probabilisitic","probabilistic"],["probabilites","probabilities"],["probabilty","probability"],["probablay","probably"],["probablistic","probabilistic"],["probablities","probabilities"],["probablity","probability"],["probablly","probably"],["probaby","probably"],["probalby","probably"],["probalibity","probability"],["probaly","probably"],["probbably","probably"],["probbailities","probabilities"],["probbaility","probability"],["probbaly","probably"],["probbed","probed"],["probblem","problem"],["probblems","problems"],["probblez","problem"],["probblezs","problems"],["probbly","probably"],["probelm","problem"],["probelmatic","problematic"],["probelms","problems"],["probem","problem"],["proberly","properly"],["problably","probably"],["problaem","problem"],["problaems","problems"],["problamatic","problematic"],["probleme","problem"],["problemes","problems"],["problimatic","problematic"],["problme","problem"],["problmes","problems"],["probly","probably"],["procceed","proceed"],["proccesor","processor"],["proccesors","processors"],["proccess","process"],["proccessed","processed"],["proccesses","processes"],["proccessing","processing"],["proccessor","processor"],["proccessors","processors"],["procecure","procedure"],["procecures","procedures"],["procedger","procedure"],["procedings","proceedings"],["procedre","procedure"],["procedres","procedures"],["proceedes","proceeds"],["proceedure","procedure"],["proceedures","procedures"],["proceeed","proceed"],["proceeeded","proceeded"],["proceeeding","proceeding"],["proceeeds","proceeds"],["proceeedures","procedures"],["procees","process"],["proceesed","processed"],["proceesor","processor"],["procelain","porcelain"],["procelains","porcelains"],["procentual","percentual"],["proces","process"],["procesed","processed"],["proceses","processes"],["proceshandler","processhandler"],["procesing","processing"],["procesor","processor"],["processeed","processed"],["processees","processes"],["processer","processor"],["processess","processes"],["processessing","processing"],["processig","processing"],["processinf","processing"],["processore","processor"],["processpr","processor"],["processsed","processed"],["processses","processes"],["processsing","processing"],["processsors","processors"],["procesure","procedure"],["procesures","procedures"],["procide","provide"],["procided","provided"],["procides","provides"],["proclaimation","proclamation"],["proclamed","proclaimed"],["proclaming","proclaiming"],["proclomation","proclamation"],["procoess","process"],["procoessed","processed"],["procoessing","processing"],["proctect","protect"],["proctected","protected"],["proctecting","protecting"],["proctects","protects"],["procteted","protected"],["procude","produce"],["procuded","produced"],["prodceding","proceeding"],["prodecure","procedure"],["producable","producible"],["producables","producible"],["produciton","production"],["producitons","productions"],["producted","produced"],["productiviy","productivity"],["produkt","product"],["produse","produce"],["prodused","produced"],["produses","produces"],["proedural","procedural"],["proedure","procedure"],["proedures","procedures"],["proejct","project"],["proejcted","projected"],["proejcting","projecting"],["proejction","projection"],["proepr","proper"],["proeprly","properly"],["proeprties","properties"],["proeprty","property"],["proerties","properties"],["proessing","processing"],["profesional","professional"],["profesionally","professionally"],["profesionals","professionals"],["profesor","professor"],["professer","professor"],["proffesed","professed"],["proffesion","profession"],["proffesional","professional"],["proffesor","professor"],["proffessor","professor"],["profie","profile"],["profied","profiled"],["profier","profiler"],["profies","profiles"],["profilic","prolific"],["profirle","profile"],["profirled","profiled"],["profirler","profiler"],["profirles","profiles"],["profissional","professional"],["proflie","profile"],["proflier","profiler"],["proflies","profiles"],["profling","profiling"],["profund","profound"],["profundly","profoundly"],["progagate","propagate"],["progagated","propagated"],["progagates","propagates"],["progagating","propagating"],["progagation","propagation"],["progagations","propagations"],["progagator","propagator"],["progagators","propagators"],["progam","program"],["progamability","programmability"],["progamable","programmable"],["progamatic","programmatic"],["progamatically","programmatically"],["progamed","programmed"],["progamer","programmer"],["progamers","programmers"],["progaming","programming"],["progamm","program"],["progammability","programmability"],["progammable","programmable"],["progammatic","programmatic"],["progammatically","programmatically"],["progammed","programmed"],["progammer","programmer"],["progammers","programmers"],["progamming","programming"],["progamms","programs"],["progams","programs"],["progapate","propagate"],["progapated","propagated"],["progapates","propagates"],["progapating","propagating"],["progapation","propagation"],["progapations","propagations"],["progapator","propagator"],["progapators","propagators"],["progaramm","program"],["progarammability","programmability"],["progarammable","programmable"],["progarammatic","programmatic"],["progarammatically","programmatically"],["progarammed","programmed"],["progarammer","programmer"],["progarammers","programmers"],["progaramming","programming"],["progaramms","programs"],["progarm","program"],["progarmability","programmability"],["progarmable","programmable"],["progarmatic","programmatic"],["progarmatically","programmatically"],["progarmed","programmed"],["progarmer","programmer"],["progarmers","programmers"],["progarming","programming"],["progarms","programs"],["progate","propagate"],["progated","propagated"],["progates","propagates"],["progating","propagating"],["progation","propagation"],["progations","propagations"],["progess","progress"],["progessbar","progressbar"],["progessed","progressed"],["progesses","progresses"],["progessive","progressive"],["progessor","progressor"],["progesss","progress"],["progesssive","progressive"],["progidy","prodigy"],["programable","programmable"],["programatic","programmatic"],["programatically","programmatically"],["programattically","programmatically"],["programd","programmed"],["programemer","programmer"],["programemers","programmers"],["programers","programmers"],["programmaticaly","programmatically"],["programmend","programmed"],["programmetically","programmatically"],["programmical","programmatical"],["programmign","programming"],["programmming","programming"],["programms","programs"],["progreess","progress"],["progres","progress"],["progresively","progressively"],["progresss","progress"],["progrewss","progress"],["progrmae","program"],["progrss","progress"],["prohabition","prohibition"],["prohibitted","prohibited"],["prohibitting","prohibiting"],["prohibt","prohibit"],["prohibted","prohibited"],["prohibting","prohibiting"],["prohibts","prohibits"],["proirity","priority"],["projct's","project's"],["projct","project"],["projction","projection"],["projctions","projections"],["projctor","projector"],["projctors","projectors"],["projcts","projects"],["projectd","projected"],["projectio","projection"],["projecttion","projection"],["projet","project"],["projetction","projection"],["projeted","projected"],["projeting","projecting"],["projets","projects"],["prolbems","problems"],["prolem","problem"],["prolematic","problematic"],["prolems","problems"],["prologomena","prolegomena"],["prominance","prominence"],["prominant","prominent"],["prominantly","prominently"],["promis","promise"],["promiscous","promiscuous"],["promiss","promise"],["promissed","promised"],["promisses","promises"],["promissing","promising"],["promixity","proximity"],["prommpt","prompt"],["prommpts","prompts"],["promotted","promoted"],["promprted","prompted"],["promps","prompts"],["promt","prompt"],["promts","prompts"],["pronnounced","pronounced"],["pronomial","pronominal"],["prononciation","pronunciation"],["pronouce","pronounce"],["pronouced","pronounced"],["pronounched","pronounced"],["pronounciation","pronunciation"],["pronunce","pronounce"],["proocecure","procedure"],["proocecures","procedures"],["proocedure","procedure"],["proocedures","procedures"],["proocess","process"],["proocessed","processed"],["proocesses","processes"],["proocessing","processing"],["proocol","protocol"],["proocols","protocols"],["prooduce","produce"],["prooduced","produced"],["prooduces","produces"],["prooduct","product"],["prooerties","properties"],["prooerty","property"],["prool","pool"],["prooof","proof"],["prooper","proper"],["prooperly","properly"],["prooperties","properties"],["prooperty","property"],["proose","propose"],["proosed","proposed"],["prooses","proposes"],["proove","prove"],["prooved","proved"],["prooven","proven"],["prooves","proves"],["prooving","proving"],["proovread","proofread"],["prooxies","proxies"],["prooxy","proxy"],["propably","probably"],["propage","propagate"],["propatagion","propagation"],["propator","propagator"],["propators","propagators"],["propbably","probably"],["propely","properly"],["propeoperties","properties"],["propereties","properties"],["properety","property"],["properies","properties"],["properites","properties"],["properities","properties"],["properries","properties"],["properrt","property"],["properrys","properties"],["propert","property"],["properteis","properties"],["propertery","property"],["propertion","proportion"],["propertional","proportional"],["propertions","proportions"],["propertise","properties"],["propertu","property"],["propertus","properties"],["propertys","properties"],["propertyst","properties"],["propeties","properties"],["propetry","property"],["propetrys","properties"],["propety","property"],["propetys","properties"],["propgated","propagated"],["prophacy","prophecy"],["propietary","proprietary"],["propietries","proprietaries"],["propietry","proprietary"],["propigate","propagate"],["propigation","propagation"],["proplem","problem"],["propmt","prompt"],["propmted","prompted"],["propmter","prompter"],["propmts","prompts"],["propoagate","propagate"],["propoerties","properties"],["propoerty","property"],["propoganda","propaganda"],["propogate","propagate"],["propogated","propagated"],["propogates","propagates"],["propogating","propagating"],["propogation","propagation"],["proporpotion","proportion"],["proporpotional","proportional"],["proportianal","proportional"],["proporties","properties"],["proportinal","proportional"],["proporty","property"],["propostion","proposition"],["proppely","properly"],["propper","proper"],["propperly","properly"],["propperties","properties"],["propperty","property"],["proprely","properly"],["propreties","properties"],["proprety","property"],["proprietory","proprietary"],["proproable","probable"],["proproably","probably"],["proprocessed","preprocessed"],["proprogate","propagate"],["proprogated","propagated"],["proprogates","propagates"],["proprogating","propagating"],["proprogation","propagation"],["proprogations","propagations"],["proprogator","propagator"],["proprogators","propagators"],["proproties","properties"],["proprotion","proportion"],["proprotional","proportional"],["proprotionally","proportionally"],["proprotions","proportions"],["proprty","property"],["propt","prompt"],["propteries","properties"],["propterties","properties"],["propterty","property"],["propvider","provider"],["prority","priority"],["prorotype","prototype"],["proseletyzing","proselytizing"],["prosess","process"],["prosessor","processor"],["protable","portable"],["protaganist","protagonist"],["protaganists","protagonists"],["protcol","protocol"],["protcols","protocols"],["protcool","protocol"],["protcools","protocols"],["protcted","protected"],["protecion","protection"],["protectiv","protective"],["protedcted","protected"],["protential","potential"],["protext","protect"],["protocal","protocol"],["protocals","protocols"],["protocl","protocol"],["protocls","protocols"],["protoco","protocol"],["protocoll","protocol"],["protocolls","protocols"],["protocos","protocols"],["protoganist","protagonist"],["protoge","protege"],["protol","protocol"],["protols","protocols"],["prototyes","prototypes"],["protoype","prototype"],["protoyped","prototyped"],["protoypes","prototypes"],["protoyping","prototyping"],["protoytpe","prototype"],["protoytpes","prototypes"],["protrait","portrait"],["protraits","portraits"],["protrayed","portrayed"],["protruberance","protuberance"],["protruberances","protuberances"],["prouncements","pronouncements"],["provacative","provocative"],["provded","provided"],["provder","provider"],["provdided","provided"],["provdie","provide"],["provdied","provided"],["provdies","provides"],["provding","providing"],["provences","provinces"],["provicde","provide"],["provicded","provided"],["provicdes","provides"],["provicial","provincial"],["provideres","providers"],["providewd","provided"],["providfers","providers"],["provieded","provided"],["proviedes","provides"],["provinicial","provincial"],["provisioing","provisioning"],["provisiong","provisioning"],["provisionging","provisioning"],["provisiosn","provision"],["provisonal","provisional"],["provive","provide"],["provived","provided"],["provives","provides"],["proviving","providing"],["provode","provide"],["provoded","provided"],["provoder","provider"],["provodes","provides"],["provoding","providing"],["provods","provides"],["provsioning","provisioning"],["proximty","proximity"],["prozess","process"],["prpeparations","preparations"],["prpose","propose"],["prposed","proposed"],["prposer","proposer"],["prposers","proposers"],["prposes","proposes"],["prposiing","proposing"],["prrcision","precision"],["prrottypes","prototypes"],["prset","preset"],["prsets","presets"],["prtinf","printf"],["prufe","proof"],["prviate","private"],["psaswd","passwd"],["pseude","pseudo"],["pseudononymous","pseudonymous"],["pseudonyn","pseudonym"],["pseudopoential","pseudopotential"],["pseudopoentials","pseudopotentials"],["pseudorinverse","pseudoinverse"],["pseuo-palette","pseudo-palette"],["psitoin","position"],["psitoined","positioned"],["psitoins","positions"],["psot","post"],["psots","posts"],["psrameter","parameter"],["pssed","passed"],["pssibility","possibility"],["psudo","pseudo"],["psudoinverse","pseudoinverse"],["psuedo","pseudo"],["psuedo-fork","pseudo-fork"],["psuedoinverse","pseudoinverse"],["psuedolayer","pseudolayer"],["psuh","push"],["psychadelic","psychedelic"],["psycology","psychology"],["psyhic","psychic"],["ptd","pdf"],["ptherad","pthread"],["ptherads","pthreads"],["pthon","python"],["pthred","pthread"],["pthreds","pthreads"],["ptorions","portions"],["ptrss","press"],["pubilsh","publish"],["pubilshed","published"],["pubilsher","publisher"],["pubilshers","publishers"],["pubilshing","publishing"],["pubish","publish"],["pubished","published"],["pubisher","publisher"],["pubishers","publishers"],["pubishing","publishing"],["publcation","publication"],["publcise","publicise"],["publcize","publicize"],["publiaher","publisher"],["publically","publicly"],["publicaly","publicly"],["publiched","published"],["publicher","publisher"],["publichers","publishers"],["publiches","publishes"],["publiching","publishing"],["publihsed","published"],["publihser","publisher"],["publised","published"],["publisehd","published"],["publisehr","publisher"],["publisehrs","publishers"],["publiser","publisher"],["publisers","publishers"],["publisged","published"],["publisger","publisher"],["publisgers","publishers"],["publishd","published"],["publisheed","published"],["publisherr","publisher"],["publishher","publisher"],["publishor","publisher"],["publishr","publisher"],["publishre","publisher"],["publishrs","publishers"],["publissher","publisher"],["publlisher","publisher"],["publsh","publish"],["publshed","published"],["publsher","publisher"],["publshers","publishers"],["publshing","publishing"],["publsih","publish"],["publsihed","published"],["publsiher","publisher"],["publsihers","publishers"],["publsihes","publishes"],["publsihing","publishing"],["publuc","public"],["publucation","publication"],["publush","publish"],["publusher","publisher"],["publushers","publishers"],["publushes","publishes"],["publushing","publishing"],["puchasing","purchasing"],["Pucini","Puccini"],["Puertorrican","Puerto Rican"],["Puertorricans","Puerto Ricans"],["pulisher","publisher"],["pullrequest","pull request"],["pullrequests","pull requests"],["pumkin","pumpkin"],["punctation","punctuation"],["puplar","popular"],["puplarity","popularity"],["puplate","populate"],["puplated","populated"],["puplates","populates"],["puplating","populating"],["puplation","population"],["puplisher","publisher"],["pupose","purpose"],["puposes","purposes"],["pupulated","populated"],["purcahed","purchased"],["purcahse","purchase"],["purgest","purges"],["puritannical","puritanical"],["purposedly","purposely"],["purpotedly","purportedly"],["purpse","purpose"],["pursuade","persuade"],["pursuaded","persuaded"],["pursuades","persuades"],["pusehd","pushed"],["pususading","persuading"],["puting","putting"],["putpose","purpose"],["putposed","purposed"],["putposes","purposes"],["pwoer","power"],["pxoxied","proxied"],["pxoxies","proxies"],["pxoxy","proxy"],["pyhon","python"],["pyhsical","physical"],["pyhsically","physically"],["pyhsicals","physicals"],["pyhsicaly","physically"],["pyhthon","python"],["pyhton","python"],["pyramide","pyramid"],["pyramides","pyramids"],["pyrhon","python"],["pyscic","psychic"],["pythin","python"],["pythjon","python"],["pytnon","python"],["pytohn","python"],["pyton","python"],["pytyon","python"],["qest","quest"],["qests","quests"],["qeuest","quest"],["qeuests","quests"],["qeueue","queue"],["qeust","quest"],["qeusts","quests"],["qiest","quest"],["qiests","quests"],["qith","with"],["qoute","quote"],["qouted","quoted"],["qoutes","quotes"],["qouting","quoting"],["quadddec","quaddec"],["quadranle","quadrangle"],["quailified","qualified"],["qualfied","qualified"],["qualfy","qualify"],["qualifer","qualifier"],["qualitification","qualification"],["qualitifications","qualifications"],["quanitified","quantified"],["quantaties","quantities"],["quantaty","quantity"],["quantitites","quantities"],["quantititive","quantitative"],["quantitity","quantity"],["quantitiy","quantity"],["quarantaine","quarantine"],["quarentine","quarantine"],["quartenion","quaternion"],["quartenions","quaternions"],["quartically","quadratically"],["quatation","quotation"],["quater","quarter"],["quation","equation"],["quations","equations"],["quckstarter","quickstarter"],["qudrangles","quadrangles"],["quee","queue"],["Queenland","Queensland"],["queing","queueing"],["queiried","queried"],["queisce","quiesce"],["queriable","queryable"],["quering","querying"],["querries","queries"],["queryies","queries"],["queryinterace","queryinterface"],["querys","queries"],["queset","quest"],["quesets","quests"],["quesiton","question"],["quesitonable","questionable"],["quesitons","questions"],["quesr","quest"],["quesrs","quests"],["questionaire","questionnaire"],["questionnair","questionnaire"],["questoin","question"],["questoins","questions"],["questonable","questionable"],["queu","queue"],["queueud","queued"],["queus","queues"],["quew","queue"],["quickier","quicker"],["quicklyu","quickly"],["quickyl","quickly"],["quicly","quickly"],["quiessent","quiescent"],["quiests","quests"],["quikc","quick"],["quinessential","quintessential"],["quiting","quitting"],["quitt","quit"],["quitted","quit"],["quizes","quizzes"],["quotaion","quotation"],["quoteed","quoted"],["quottes","quotes"],["quried","queried"],["quroum","quorum"],["qust","quest"],["qusts","quests"],["rabinnical","rabbinical"],["racaus","raucous"],["ractise","practise"],["radation","radiation"],["radiactive","radioactive"],["radiaton","radiation"],["radify","ratify"],["radiobuttion","radiobutton"],["radis","radix"],["rady","ready"],["raed","read"],["raeding","reading"],["raeds","reads"],["raedy","ready"],["raelly","really"],["raisedd","raised"],["ralation","relation"],["randmom","random"],["randomally","randomly"],["raoming","roaming"],["raotat","rotate"],["raotate","rotate"],["raotated","rotated"],["raotates","rotates"],["raotating","rotating"],["raotation","rotation"],["raotations","rotations"],["raotats","rotates"],["raplace","replace"],["raplacing","replacing"],["rapresent","represent"],["rapresentation","representation"],["rapresented","represented"],["rapresenting","representing"],["rapresents","represents"],["rapsberry","raspberry"],["rarelly","rarely"],["rarified","rarefied"],["rasberry","raspberry"],["rasie","raise"],["rasied","raised"],["rasies","raises"],["rasiing","raising"],["rasing","raising"],["rasons","reasons"],["raspbery","raspberry"],["raspoberry","raspberry"],["rathar","rather"],["rathern","rather"],["rcall","recall"],["rceate","create"],["rceating","creating"],["rduce","reduce"],["re-attachement","re-attachment"],["re-defiend","re-defined"],["re-engeneer","re-engineer"],["re-engeneering","re-engineering"],["re-evaulated","re-evaluated"],["re-impliment","re-implement"],["re-implimenting","re-implementing"],["re-negatiotiable","re-negotiable"],["re-negatiotiate","re-negotiate"],["re-negatiotiated","re-negotiated"],["re-negatiotiates","re-negotiates"],["re-negatiotiating","re-negotiating"],["re-negatiotiation","re-negotiation"],["re-negatiotiations","re-negotiations"],["re-negatiotiator","re-negotiator"],["re-negatiotiators","re-negotiators"],["re-negoable","re-negotiable"],["re-negoate","re-negotiate"],["re-negoated","re-negotiated"],["re-negoates","re-negotiates"],["re-negoatiable","re-negotiable"],["re-negoatiate","re-negotiate"],["re-negoatiated","re-negotiated"],["re-negoatiates","re-negotiates"],["re-negoatiating","re-negotiating"],["re-negoatiation","re-negotiation"],["re-negoatiations","re-negotiations"],["re-negoatiator","re-negotiator"],["re-negoatiators","re-negotiators"],["re-negoating","re-negotiating"],["re-negoation","re-negotiation"],["re-negoations","re-negotiations"],["re-negoator","re-negotiator"],["re-negoators","re-negotiators"],["re-negociable","re-negotiable"],["re-negociate","re-negotiate"],["re-negociated","re-negotiated"],["re-negociates","re-negotiates"],["re-negociating","re-negotiating"],["re-negociation","re-negotiation"],["re-negociations","re-negotiations"],["re-negociator","re-negotiator"],["re-negociators","re-negotiators"],["re-negogtiable","re-negotiable"],["re-negogtiate","re-negotiate"],["re-negogtiated","re-negotiated"],["re-negogtiates","re-negotiates"],["re-negogtiating","re-negotiating"],["re-negogtiation","re-negotiation"],["re-negogtiations","re-negotiations"],["re-negogtiator","re-negotiator"],["re-negogtiators","re-negotiators"],["re-negoitable","re-negotiable"],["re-negoitate","re-negotiate"],["re-negoitated","re-negotiated"],["re-negoitates","re-negotiates"],["re-negoitating","re-negotiating"],["re-negoitation","re-negotiation"],["re-negoitations","re-negotiations"],["re-negoitator","re-negotiator"],["re-negoitators","re-negotiators"],["re-negoptionsotiable","re-negotiable"],["re-negoptionsotiate","re-negotiate"],["re-negoptionsotiated","re-negotiated"],["re-negoptionsotiates","re-negotiates"],["re-negoptionsotiating","re-negotiating"],["re-negoptionsotiation","re-negotiation"],["re-negoptionsotiations","re-negotiations"],["re-negoptionsotiator","re-negotiator"],["re-negoptionsotiators","re-negotiators"],["re-negosiable","re-negotiable"],["re-negosiate","re-negotiate"],["re-negosiated","re-negotiated"],["re-negosiates","re-negotiates"],["re-negosiating","re-negotiating"],["re-negosiation","re-negotiation"],["re-negosiations","re-negotiations"],["re-negosiator","re-negotiator"],["re-negosiators","re-negotiators"],["re-negotable","re-negotiable"],["re-negotaiable","re-negotiable"],["re-negotaiate","re-negotiate"],["re-negotaiated","re-negotiated"],["re-negotaiates","re-negotiates"],["re-negotaiating","re-negotiating"],["re-negotaiation","re-negotiation"],["re-negotaiations","re-negotiations"],["re-negotaiator","re-negotiator"],["re-negotaiators","re-negotiators"],["re-negotaible","re-negotiable"],["re-negotaite","re-negotiate"],["re-negotaited","re-negotiated"],["re-negotaites","re-negotiates"],["re-negotaiting","re-negotiating"],["re-negotaition","re-negotiation"],["re-negotaitions","re-negotiations"],["re-negotaitor","re-negotiator"],["re-negotaitors","re-negotiators"],["re-negotate","re-negotiate"],["re-negotated","re-negotiated"],["re-negotates","re-negotiates"],["re-negotatiable","re-negotiable"],["re-negotatiate","re-negotiate"],["re-negotatiated","re-negotiated"],["re-negotatiates","re-negotiates"],["re-negotatiating","re-negotiating"],["re-negotatiation","re-negotiation"],["re-negotatiations","re-negotiations"],["re-negotatiator","re-negotiator"],["re-negotatiators","re-negotiators"],["re-negotatible","re-negotiable"],["re-negotatie","re-negotiate"],["re-negotatied","re-negotiated"],["re-negotaties","re-negotiates"],["re-negotating","re-negotiating"],["re-negotation","re-negotiation"],["re-negotations","re-negotiations"],["re-negotatior","re-negotiator"],["re-negotatiors","re-negotiators"],["re-negotator","re-negotiator"],["re-negotators","re-negotiators"],["re-negothiable","re-negotiable"],["re-negothiate","re-negotiate"],["re-negothiated","re-negotiated"],["re-negothiates","re-negotiates"],["re-negothiating","re-negotiating"],["re-negothiation","re-negotiation"],["re-negothiations","re-negotiations"],["re-negothiator","re-negotiator"],["re-negothiators","re-negotiators"],["re-negotible","re-negotiable"],["re-negoticable","re-negotiable"],["re-negoticate","re-negotiate"],["re-negoticated","re-negotiated"],["re-negoticates","re-negotiates"],["re-negoticating","re-negotiating"],["re-negotication","re-negotiation"],["re-negotications","re-negotiations"],["re-negoticator","re-negotiator"],["re-negoticators","re-negotiators"],["re-negotioable","re-negotiable"],["re-negotioate","re-negotiate"],["re-negotioated","re-negotiated"],["re-negotioates","re-negotiates"],["re-negotioating","re-negotiating"],["re-negotioation","re-negotiation"],["re-negotioations","re-negotiations"],["re-negotioator","re-negotiator"],["re-negotioators","re-negotiators"],["re-negotioble","re-negotiable"],["re-negotion","re-negotiation"],["re-negotionable","re-negotiable"],["re-negotionate","re-negotiate"],["re-negotionated","re-negotiated"],["re-negotionates","re-negotiates"],["re-negotionating","re-negotiating"],["re-negotionation","re-negotiation"],["re-negotionations","re-negotiations"],["re-negotionator","re-negotiator"],["re-negotionators","re-negotiators"],["re-negotions","re-negotiations"],["re-negotiotable","re-negotiable"],["re-negotiotate","re-negotiate"],["re-negotiotated","re-negotiated"],["re-negotiotates","re-negotiates"],["re-negotiotating","re-negotiating"],["re-negotiotation","re-negotiation"],["re-negotiotations","re-negotiations"],["re-negotiotator","re-negotiator"],["re-negotiotators","re-negotiators"],["re-negotiote","re-negotiate"],["re-negotioted","re-negotiated"],["re-negotiotes","re-negotiates"],["re-negotioting","re-negotiating"],["re-negotiotion","re-negotiation"],["re-negotiotions","re-negotiations"],["re-negotiotor","re-negotiator"],["re-negotiotors","re-negotiators"],["re-negotitable","re-negotiable"],["re-negotitae","re-negotiate"],["re-negotitaed","re-negotiated"],["re-negotitaes","re-negotiates"],["re-negotitaing","re-negotiating"],["re-negotitaion","re-negotiation"],["re-negotitaions","re-negotiations"],["re-negotitaor","re-negotiator"],["re-negotitaors","re-negotiators"],["re-negotitate","re-negotiate"],["re-negotitated","re-negotiated"],["re-negotitates","re-negotiates"],["re-negotitating","re-negotiating"],["re-negotitation","re-negotiation"],["re-negotitations","re-negotiations"],["re-negotitator","re-negotiator"],["re-negotitators","re-negotiators"],["re-negotite","re-negotiate"],["re-negotited","re-negotiated"],["re-negotites","re-negotiates"],["re-negotiting","re-negotiating"],["re-negotition","re-negotiation"],["re-negotitions","re-negotiations"],["re-negotitor","re-negotiator"],["re-negotitors","re-negotiators"],["re-negoziable","re-negotiable"],["re-negoziate","re-negotiate"],["re-negoziated","re-negotiated"],["re-negoziates","re-negotiates"],["re-negoziating","re-negotiating"],["re-negoziation","re-negotiation"],["re-negoziations","re-negotiations"],["re-negoziator","re-negotiator"],["re-negoziators","re-negotiators"],["re-realease","re-release"],["re-uplad","re-upload"],["re-upladed","re-uploaded"],["re-uplader","re-uploader"],["re-upladers","re-uploaders"],["re-uplading","re-uploading"],["re-uplads","re-uploads"],["re-uplaod","re-upload"],["re-uplaoded","re-uploaded"],["re-uplaoder","re-uploader"],["re-uplaoders","re-uploaders"],["re-uplaoding","re-uploading"],["re-uplaods","re-uploads"],["re-uplod","re-upload"],["re-uploded","re-uploaded"],["re-uploder","re-uploader"],["re-uploders","re-uploaders"],["re-uploding","re-uploading"],["re-uplods","re-uploads"],["reaaly","really"],["reaarange","rearrange"],["reaaranges","rearranges"],["reaasigned","reassigned"],["reacahable","reachable"],["reacahble","reachable"],["reaccurring","recurring"],["reaceive","receive"],["reacheable","reachable"],["reachers","readers"],["reachs","reaches"],["reacing","reaching"],["reacll","recall"],["reactquire","reacquire"],["readabilty","readability"],["readanle","readable"],["readapted","re-adapted"],["readble","readable"],["readdrss","readdress"],["readdrssed","readdressed"],["readdrsses","readdresses"],["readdrssing","readdressing"],["readeable","readable"],["reademe","README"],["readiable","readable"],["readibility","readability"],["readible","readable"],["readig","reading"],["readigs","readings"],["readius","radius"],["readl-only","read-only"],["readmition","readmission"],["readnig","reading"],["readning","reading"],["readyness","readiness"],["reaeched","reached"],["reagrding","regarding"],["reaktivate","reactivate"],["reaktivated","reactivated"],["realease","release"],["realeased","released"],["realeases","releases"],["realiable","reliable"],["realitime","realtime"],["realitvely","relatively"],["realiy","really"],["realiztion","realization"],["realiztions","realizations"],["realling","really"],["reallize","realize"],["reallllly","really"],["reallocae","reallocate"],["reallocaes","reallocates"],["reallocaiing","reallocating"],["reallocaing","reallocating"],["reallocaion","reallocation"],["reallocaions","reallocations"],["reallocaite","reallocate"],["reallocaites","reallocates"],["reallocaiting","reallocating"],["reallocaition","reallocation"],["reallocaitions","reallocations"],["reallocaiton","reallocation"],["reallocaitons","reallocations"],["realsitic","realistic"],["realted","related"],["realyl","really"],["reamde","README"],["reamins","remains"],["reander","render"],["reanme","rename"],["reanmed","renamed"],["reanmes","renames"],["reanming","renaming"],["reaon","reason"],["reaons","reasons"],["reapeat","repeat"],["reapeated","repeated"],["reapeater","repeater"],["reapeating","repeating"],["reapeats","repeats"],["reappeares","reappears"],["reapper","reappear"],["reappered","reappeared"],["reappering","reappearing"],["rearely","rarely"],["rearranable","rearrangeable"],["rearrane","rearrange"],["rearraned","rearranged"],["rearranement","rearrangement"],["rearranements","rearrangements"],["rearranent","rearrangement"],["rearranents","rearrangements"],["rearranes","rearranges"],["rearrang","rearrange"],["rearrangable","rearrangeable"],["rearrangaeble","rearrangeable"],["rearrangaelbe","rearrangeable"],["rearrangd","rearranged"],["rearrangde","rearranged"],["rearrangent","rearrangement"],["rearrangents","rearrangements"],["rearrangmeent","rearrangement"],["rearrangmeents","rearrangements"],["rearrangmenet","rearrangement"],["rearrangmenets","rearrangements"],["rearrangment","rearrangement"],["rearrangments","rearrangements"],["rearrangnig","rearranging"],["rearrangning","rearranging"],["rearrangs","rearranges"],["rearrangse","rearranges"],["rearrangt","rearrangement"],["rearrangte","rearrange"],["rearrangteable","rearrangeable"],["rearrangteables","rearrangeables"],["rearrangted","rearranged"],["rearrangtement","rearrangement"],["rearrangtements","rearrangements"],["rearrangtes","rearranges"],["rearrangting","rearranging"],["rearrangts","rearrangements"],["rearraning","rearranging"],["rearranment","rearrangement"],["rearranments","rearrangements"],["rearrant","rearrangement"],["rearrants","rearrangements"],["reasearch","research"],["reasearcher","researcher"],["reasearchers","researchers"],["reasnable","reasonable"],["reasoable","reasonable"],["reasonabily","reasonably"],["reasonble","reasonable"],["reasonbly","reasonably"],["reasonnable","reasonable"],["reasonnably","reasonably"],["reassinging","reassigning"],["reassocition","reassociation"],["reasssign","reassign"],["reatime","realtime"],["reattachement","reattachment"],["rebiulding","rebuilding"],["rebllions","rebellions"],["reboto","reboot"],["rebounce","rebound"],["rebuilded","rebuilt"],["rebuillt","rebuilt"],["rebuils","rebuilds"],["rebuit","rebuilt"],["rebuld","rebuild"],["rebulding","rebuilding"],["rebulds","rebuilds"],["rebulid","rebuild"],["rebuliding","rebuilding"],["rebulids","rebuilds"],["rebulit","rebuilt"],["recahed","reached"],["recal","recall"],["recalcualte","recalculate"],["recalcualted","recalculated"],["recalcualter","re-calculator"],["recalcualtes","recalculates"],["recalcualting","recalculating"],["recalcualtion","recalculation"],["recalcualtions","recalculations"],["recalcuate","recalculate"],["recalcuated","recalculated"],["recalcuates","recalculates"],["recalcuations","recalculations"],["recalculaion","recalculation"],["recalculatble","re-calculable"],["recalcution","recalculation"],["recalulate","recalculate"],["recalulation","recalculation"],["recangle","rectangle"],["recangles","rectangles"],["reccomend","recommend"],["reccomendations","recommendations"],["reccomended","recommended"],["reccomending","recommending"],["reccommend","recommend"],["reccommendation","recommendation"],["reccommendations","recommendations"],["reccommended","recommended"],["reccommending","recommending"],["reccommends","recommends"],["recconecct","reconnect"],["recconeccted","reconnected"],["recconeccting","reconnecting"],["recconecction","reconnection"],["recconecctions","reconnections"],["recconeccts","reconnects"],["recconect","reconnect"],["recconected","reconnected"],["recconecting","reconnecting"],["recconection","reconnection"],["recconections","reconnections"],["recconects","reconnects"],["recconeect","reconnect"],["recconeected","reconnected"],["recconeecting","reconnecting"],["recconeection","reconnection"],["recconeections","reconnections"],["recconeects","reconnects"],["recconenct","reconnect"],["recconencted","reconnected"],["recconencting","reconnecting"],["recconenction","reconnection"],["recconenctions","reconnections"],["recconencts","reconnects"],["recconet","reconnect"],["recconeted","reconnected"],["recconeting","reconnecting"],["recconetion","reconnection"],["recconetions","reconnections"],["recconets","reconnects"],["reccord","record"],["reccorded","recorded"],["reccording","recording"],["reccords","records"],["reccuring","recurring"],["reccursive","recursive"],["reccursively","recursively"],["receeded","receded"],["receeding","receding"],["receied","received"],["receieve","receive"],["receieved","received"],["receieves","receives"],["receieving","receiving"],["receipient","recipient"],["receipients","recipients"],["receiption","reception"],["receiv","receive"],["receivd","received"],["receivedfrom","received from"],["receiveing","receiving"],["receiviing","receiving"],["receivs","receives"],["recenet","recent"],["recenlty","recently"],["recenly","recently"],["recenty","recently"],["recepient","recipient"],["recepients","recipients"],["recepion","reception"],["receve","receive"],["receved","received"],["receves","receives"],["recevie","receive"],["recevied","received"],["recevier","receiver"],["recevies","receives"],["receving","receiving"],["rechable","reachable"],["rechargable","rechargeable"],["recheability","reachability"],["reched","reached"],["rechek","recheck"],["recide","reside"],["recided","resided"],["recident","resident"],["recidents","residents"],["reciding","residing"],["reciepents","recipients"],["reciept","receipt"],["recieve","receive"],["recieved","received"],["reciever","receiver"],["recievers","receivers"],["recieves","receives"],["recieving","receiving"],["recievs","receives"],["recipiant","recipient"],["recipiants","recipients"],["recipie","recipe"],["recipies","recipes"],["reciprocoal","reciprocal"],["reciprocoals","reciprocals"],["recive","receive"],["recived","received"],["reciver","receiver"],["recivers","receivers"],["recivership","receivership"],["recives","receives"],["reciving","receiving"],["reclaimation","reclamation"],["recntly","recently"],["recod","record"],["recofig","reconfig"],["recoginizing-","recognizing"],["recogise","recognise"],["recogize","recognize"],["recogized","recognized"],["recogizes","recognizes"],["recogizing","recognizing"],["recogniced","recognised"],["recogninse","recognise"],["recognizeable","recognizable"],["recognzied","recognized"],["recomend","recommend"],["recomendation","recommendation"],["recomendations","recommendations"],["recomendatoin","recommendation"],["recomendatoins","recommendations"],["recomended","recommended"],["recomending","recommending"],["recomends","recommends"],["recommad","recommend"],["recommaded","recommended"],["recommand","recommend"],["recommandation","recommendation"],["recommanded","recommended"],["recommanding","recommending"],["recommands","recommends"],["recommd","recommend"],["recommdation","recommendation"],["recommded","recommended"],["recommdend","recommend"],["recommdended","recommended"],["recommdends","recommends"],["recommds","recommends"],["recommed","recommend"],["recommedation","recommendation"],["recommedations","recommendations"],["recommeded","recommended"],["recommeding","recommending"],["recommeds","recommends"],["recommened","recommended"],["recommeneded","recommended"],["recommented","recommended"],["recommmend","recommend"],["recommmended","recommended"],["recommmends","recommends"],["recommnd","recommend"],["recommnded","recommended"],["recommnds","recommends"],["recommned","recommend"],["recommneded","recommended"],["recommneds","recommends"],["recommpile","recompile"],["recommpiled","recompiled"],["recompence","recompense"],["recomput","recompute"],["recomputaion","recomputation"],["recompuute","recompute"],["recompuuted","recomputed"],["recompuutes","recomputes"],["recompuuting","recomputing"],["reconaissance","reconnaissance"],["reconcilation","reconciliation"],["recondifure","reconfigure"],["reconecct","reconnect"],["reconeccted","reconnected"],["reconeccting","reconnecting"],["reconecction","reconnection"],["reconecctions","reconnections"],["reconeccts","reconnects"],["reconect","reconnect"],["reconected","reconnected"],["reconecting","reconnecting"],["reconection","reconnection"],["reconections","reconnections"],["reconects","reconnects"],["reconeect","reconnect"],["reconeected","reconnected"],["reconeecting","reconnecting"],["reconeection","reconnection"],["reconeections","reconnections"],["reconeects","reconnects"],["reconenct","reconnect"],["reconencted","reconnected"],["reconencting","reconnecting"],["reconenction","reconnection"],["reconenctions","reconnections"],["reconencts","reconnects"],["reconet","reconnect"],["reconeted","reconnected"],["reconeting","reconnecting"],["reconetion","reconnection"],["reconetions","reconnections"],["reconets","reconnects"],["reconfifure","reconfigure"],["reconfiged","reconfigured"],["reconfugire","reconfigure"],["reconfugre","reconfigure"],["reconfugure","reconfigure"],["reconfure","reconfigure"],["recongifure","reconfigure"],["recongize","recognize"],["recongized","recognized"],["recongnises","recognises"],["recongnizes","recognizes"],["reconize","recognize"],["reconized","recognized"],["reconnaisance","reconnaissance"],["reconnaissence","reconnaissance"],["reconnct","reconnect"],["reconncted","reconnected"],["reconncting","reconnecting"],["reconncts","reconnects"],["reconsidder","reconsider"],["reconstrcut","reconstruct"],["reconstrcuted","reconstructed"],["reconstrcution","reconstruction"],["reconstuct","reconstruct"],["reconstucted","reconstructed"],["reconstucting","reconstructing"],["reconstucts","reconstructs"],["reconsturction","reconstruction"],["recontruct","reconstruct"],["recontructed","reconstructed"],["recontructing","reconstructing"],["recontruction","reconstruction"],["recontructions","reconstructions"],["recontructor","reconstructor"],["recontructors","reconstructors"],["recontructs","reconstructs"],["recordproducer","record producer"],["recordss","records"],["recored","recorded"],["recoriding","recording"],["recourced","resourced"],["recources","resources"],["recourcing","resourcing"],["recpie","recipe"],["recpies","recipes"],["recquired","required"],["recrational","recreational"],["recreateation","recreation"],["recrod","record"],["recrods","records"],["recrusevly","recursively"],["recrusion","recursion"],["recrusive","recursive"],["recrusivelly","recursively"],["recrusively","recursively"],["rectange","rectangle"],["rectanges","rectangles"],["rectanglar","rectangular"],["rectangluar","rectangular"],["rectiinear","rectilinear"],["recude","reduce"],["recuiting","recruiting"],["reculrively","recursively"],["recuring","recurring"],["recurisvely","recursively"],["recurively","recursively"],["recurrance","recurrence"],["recursily","recursively"],["recursivelly","recursively"],["recursivion","recursion"],["recursivley","recursively"],["recursivly","recursively"],["recurssed","recursed"],["recursses","recurses"],["recurssing","recursing"],["recurssion","recursion"],["recurssive","recursive"],["recusrive","recursive"],["recusrively","recursively"],["recusrsive","recursive"],["recustion","recursion"],["recyclying","recycling"],["recylcing","recycling"],["recyle","recycle"],["recyled","recycled"],["recyles","recycles"],["recyling","recycling"],["redability","readability"],["redandant","redundant"],["redeable","readable"],["redeclaation","redeclaration"],["redefiend","redefined"],["redefiende","redefined"],["redefintion","redefinition"],["redefintions","redefinitions"],["redenderer","renderer"],["redered","rendered"],["redict","redirect"],["rediculous","ridiculous"],["redidual","residual"],["redifine","redefine"],["redifinition","redefinition"],["redifinitions","redefinitions"],["redifintion","redefinition"],["redifintions","redefinitions"],["reding","reading"],["redings","readings"],["redircet","redirect"],["redirectd","redirected"],["redirectrion","redirection"],["redisign","redesign"],["redistirbute","redistribute"],["redistirbuted","redistributed"],["redistirbutes","redistributes"],["redistirbuting","redistributing"],["redistirbution","redistribution"],["redistributeable","redistributable"],["redistrubute","redistribute"],["redistrubuted","redistributed"],["redistrubution","redistribution"],["redistrubutions","redistributions"],["redliens","redlines"],["rednerer","renderer"],["redonly","readonly"],["redudancy","redundancy"],["redudant","redundant"],["redunancy","redundancy"],["redunant","redundant"],["redundacy","redundancy"],["redundand","redundant"],["redundat","redundant"],["redundency","redundancy"],["redundent","redundant"],["reduntancy","redundancy"],["reduntant","redundant"],["reease","release"],["reeased","released"],["reeaser","releaser"],["reeasers","releasers"],["reeases","releases"],["reeasing","releasing"],["reedeming","redeeming"],["reegion","region"],["reegions","regions"],["reelation","relation"],["reelease","release"],["reenable","re-enable"],["reenabled","re-enabled"],["reename","rename"],["reencode","re-encode"],["reenfoce","reinforce"],["reenfoced","reinforced"],["reenforced","reinforced"],["reesrved","reserved"],["reesult","result"],["reeturn","return"],["reeturned","returned"],["reeturning","returning"],["reeturns","returns"],["reevalute","reevaluate"],["reevaulating","reevaluating"],["refcound","refcount"],["refcounf","refcount"],["refect","reflect"],["refected","reflected"],["refecting","reflecting"],["refectiv","reflective"],["refector","refactor"],["refectoring","refactoring"],["refects","reflects"],["refedendum","referendum"],["refeinement","refinement"],["refeinements","refinements"],["refelects","reflects"],["refence","reference"],["refences","references"],["refenence","reference"],["refenrenced","referenced"],["referal","referral"],["referance","reference"],["referanced","referenced"],["referances","references"],["referant","referent"],["referebces","references"],["referece","reference"],["referecence","reference"],["referecences","references"],["refereces","references"],["referecne","reference"],["refered","referred"],["referefences","references"],["referemce","reference"],["referemces","references"],["referenace","reference"],["referenc","reference"],["referencable","referenceable"],["referencial","referential"],["referencially","referentially"],["referencs","references"],["referenct","referenced"],["referene","reference"],["referenece","reference"],["refereneced","referenced"],["refereneces","references"],["referened","referenced"],["referenence","reference"],["referenenced","referenced"],["referenences","references"],["referenes","references"],["referennces","references"],["referense","reference"],["referensed","referenced"],["referenses","references"],["referenz","reference"],["referenzes","references"],["refererd","referred"],["refererence","reference"],["referiang","referring"],["refering","referring"],["refernce","reference"],["refernced","referenced"],["referncence","reference"],["referncences","references"],["refernces","references"],["referncial","referential"],["referncing","referencing"],["refernece","reference"],["referneced","referenced"],["referneces","references"],["refernnce","reference"],["referr","refer"],["referrence","reference"],["referrenced","referenced"],["referrences","references"],["referrencing","referencing"],["referreres","referrers"],["referres","refers"],["referrs","refers"],["refertence","reference"],["refertenced","referenced"],["refertences","references"],["refesh","refresh"],["refeshed","refreshed"],["refeshes","refreshes"],["refeshing","refreshing"],["reffered","referred"],["refference","reference"],["reffering","referring"],["refferr","refer"],["reffers","refers"],["refinemenet","refinement"],["refinmenet","refinement"],["refinment","refinement"],["reflet","reflect"],["refleted","reflected"],["refleting","reflecting"],["refletion","reflection"],["refletions","reflections"],["reflets","reflects"],["refocuss","refocus"],["refocussed","refocused"],["reformating","reformatting"],["reformattd","reformatted"],["refreh","refresh"],["refrence","reference"],["refrenced","referenced"],["refrences","references"],["refrencing","referencing"],["refrerence","reference"],["refrerenced","referenced"],["refrerenceing","referencing"],["refrerences","references"],["refrerencial","referential"],["refrers","refers"],["refreshs","refreshes"],["refreshses","refreshes"],["refridgeration","refrigeration"],["refridgerator","refrigerator"],["refromatting","refomatting"],["refromist","reformist"],["refrormatting","reformatting"],["refure","refuse"],["refures","refuses"],["refusla","refusal"],["regalar","regular"],["regalars","regulars"],["regardes","regards"],["regardles","regardless"],["regardlesss","regardless"],["regaring","regarding"],["regarldess","regardless"],["regarless","regardless"],["regart","regard"],["regarted","regarded"],["regarting","regarding"],["regartless","regardless"],["regconized","recognized"],["regeister","register"],["regeistered","registered"],["regeistration","registration"],["regenarated","regenerated"],["regenrated","regenerated"],["regenratet","regenerated"],["regenrating","regenerating"],["regenration","regeneration"],["regenrative","regenerative"],["regession","regression"],["regestered","registered"],["regidstered","registered"],["regio","region"],["regiser","register"],["regisration","registration"],["regist","register"],["registartion","registration"],["registe","register"],["registed","registered"],["registeing","registering"],["registeration","registration"],["registerered","registered"],["registeres","registers"],["registeresd","registered"],["registerred","registered"],["registert","registered"],["registery","registry"],["registes","registers"],["registing","registering"],["registors","registers"],["registrain","registration"],["registraion","registration"],["registraions","registrations"],["registraration","registration"],["registrated","registered"],["registred","registered"],["registrer","register"],["registring","registering"],["registrs","registers"],["registy","registry"],["regiter","register"],["regitered","registered"],["regitering","registering"],["regiters","registers"],["regluar","regular"],["regon","region"],["regons","regions"],["regorded","recorded"],["regresion","regression"],["regresison","regression"],["regresssion","regression"],["regrigerator","refrigerator"],["regsion","region"],["regsions","regions"],["regsiter","register"],["regsitered","registered"],["regsitering","registering"],["regsiters","registers"],["regsitry","registry"],["regster","register"],["regstered","registered"],["regstering","registering"],["regsters","registers"],["regstry","registry"],["regualar","regular"],["regualarly","regularly"],["regualator","regulator"],["regualr","regular"],["regualtor","regulator"],["reguardless","regardless"],["reguarldess","regardless"],["reguarlise","regularise"],["reguarliser","regulariser"],["reguarlize","regularize"],["reguarlizer","regularizer"],["reguarly","regularly"],["reguator","regulator"],["reguire","require"],["reguired","required"],["reguirement","requirement"],["reguirements","requirements"],["reguires","requires"],["reguiring","requiring"],["regulaer","regular"],["regulaion","regulation"],["regulamentation","regulation"],["regulamentations","regulations"],["regulaotrs","regulators"],["regulaotry","regulatory"],["regularily","regularly"],["regulariry","regularly"],["regularlisation","regularisation"],["regularlise","regularise"],["regularlised","regularised"],["regularliser","regulariser"],["regularlises","regularises"],["regularlising","regularising"],["regularlization","regularization"],["regularlize","regularize"],["regularlized","regularized"],["regularlizer","regularizer"],["regularlizes","regularizes"],["regularlizing","regularizing"],["regularlly","regularly"],["regulax","regular"],["reguler","regular"],["regulr","regular"],["regultor","regulator"],["regultors","regulators"],["regultory","regulatory"],["regurlarly","regularly"],["reguster","register"],["rehersal","rehearsal"],["rehersing","rehearsing"],["reicarnation","reincarnation"],["reigining","reigning"],["reigonal","regional"],["reigster","register"],["reigstered","registered"],["reigstering","registering"],["reigsters","registers"],["reigstration","registration"],["reimplemenet","reimplement"],["reimplementaion","reimplementation"],["reimplementaions","reimplementations"],["reimplemention","reimplementation"],["reimplementions","reimplementations"],["reimplented","reimplemented"],["reimplents","reimplements"],["reimpliment","reimplement"],["reimplimenting","reimplementing"],["reimplmenet","reimplement"],["reimplment","reimplement"],["reimplmentation","reimplementation"],["reimplmented","reimplemented"],["reimplmenting","reimplementing"],["reimplments","reimplements"],["reimpplement","reimplement"],["reimpplementating","reimplementing"],["reimpplementation","reimplementation"],["reimpplemented","reimplemented"],["reimpremented","reimplemented"],["reinfoce","reinforce"],["reinfoced","reinforced"],["reinfocement","reinforcement"],["reinfocements","reinforcements"],["reinfoces","reinforces"],["reinfocing","reinforcing"],["reinitailise","reinitialise"],["reinitailised","reinitialised"],["reinitailize","reinitialize"],["reinitalize","reinitialize"],["reinitilize","reinitialize"],["reinitilized","reinitialized"],["reinstatiate","reinstantiate"],["reinstatiated","reinstantiated"],["reinstatiates","reinstantiates"],["reinstatiation","reinstantiation"],["reintantiate","reinstantiate"],["reintantiating","reinstantiating"],["reintepret","reinterpret"],["reintepreted","reinterpreted"],["reister","register"],["reitterate","reiterate"],["reitterated","reiterated"],["reitterates","reiterates"],["reivison","revision"],["rejplace","replace"],["reknown","renown"],["reknowned","renowned"],["rekursed","recursed"],["rekursion","recursion"],["rekursive","recursive"],["relaative","relative"],["relady","ready"],["relaease","release"],["relaese","release"],["relaesed","released"],["relaeses","releases"],["relaesing","releasing"],["relaged","related"],["relaimed","reclaimed"],["relaion","relation"],["relaive","relative"],["relaly","really"],["relase","release"],["relased","released"],["relaser","releaser"],["relases","releases"],["relashionship","relationship"],["relashionships","relationships"],["relasing","releasing"],["relataive","relative"],["relatated","related"],["relatd","related"],["relatdness","relatedness"],["relatibe","relative"],["relatibely","relatively"],["relatievly","relatively"],["relatiopnship","relationship"],["relativ","relative"],["relativly","relatively"],["relavant","relevant"],["relavent","relevant"],["releaase","release"],["releaased","released"],["relead","reload"],["releae","release"],["releaed","released"],["releaeing","releasing"],["releaing","releasing"],["releas","release"],["releasead","released"],["releasse","release"],["releated","related"],["releating","relating"],["releation","relation"],["releations","relations"],["releationship","relationship"],["releationships","relationships"],["releative","relative"],["releavant","relevant"],["relecant","relevant"],["releive","relieve"],["releived","relieved"],["releiver","reliever"],["releoad","reload"],["relese","release"],["relesed","released"],["releses","releases"],["reletive","relative"],["reletively","relatively"],["relevabt","relevant"],["relevane","relevant"],["releveant","relevant"],["relevence","relevance"],["relevent","relevant"],["relfected","reflected"],["relfecting","reflecting"],["relfection","reflection"],["relfections","reflections"],["reliablity","reliability"],["relient","reliant"],["religeous","religious"],["religous","religious"],["religously","religiously"],["relinguish","relinquish"],["relinguishing","relinquishing"],["relinqushment","relinquishment"],["relintquish","relinquish"],["relitavely","relatively"],["relly","really"],["reloade","reload"],["relocae","relocate"],["relocaes","relocates"],["relocaiing","relocating"],["relocaing","relocating"],["relocaion","relocation"],["relocaions","relocations"],["relocaite","relocate"],["relocaites","relocates"],["relocaiting","relocating"],["relocaition","relocation"],["relocaitions","relocations"],["relocaiton","relocation"],["relocaitons","relocations"],["relocateable","relocatable"],["reloccate","relocate"],["reloccated","relocated"],["reloccates","relocates"],["relpacement","replacement"],["relpy","reply"],["reltive","relative"],["relyable","reliable"],["relyably","reliably"],["relyed","relied"],["relys","relies"],["remaing","remaining"],["remainging","remaining"],["remainig","remaining"],["remainst","remains"],["remaning","remaining"],["remaped","remapped"],["remaping","remapping"],["rembember","remember"],["rembembered","remembered"],["rembembering","remembering"],["rembembers","remembers"],["rember","remember"],["remeber","remember"],["remebered","remembered"],["remebering","remembering"],["remebers","remembers"],["rememberable","memorable"],["rememberance","remembrance"],["rememberd","remembered"],["remembrence","remembrance"],["rememeber","remember"],["rememebered","remembered"],["rememebering","remembering"],["rememebers","remembers"],["rememebr","remember"],["rememebred","remembered"],["rememebrs","remembers"],["rememember","remember"],["rememembered","remembered"],["rememembers","remembers"],["rememer","remember"],["rememered","remembered"],["rememers","remembers"],["rememor","remember"],["rememored","remembered"],["rememoring","remembering"],["rememors","remembers"],["rememver","remember"],["remenant","remnant"],["remenber","remember"],["remenicent","reminiscent"],["remian","remain"],["remianed","remained"],["remianing","remaining"],["remians","remains"],["reminent","remnant"],["reminescent","reminiscent"],["remining","remaining"],["reminiscense","reminiscence"],["reminscent","reminiscent"],["reminsicent","reminiscent"],["remmeber","remember"],["remmebered","remembered"],["remmebering","remembering"],["remmebers","remembers"],["remmove","remove"],["remoce","remove"],["remoive","remove"],["remoived","removed"],["remoives","removes"],["remoiving","removing"],["remontly","remotely"],["remoote","remote"],["remore","remote"],["remorted","reported"],["remot","remote"],["removce","remove"],["removeable","removable"],["removefromat","removeformat"],["removeing","removing"],["removerd","removed"],["remve","remove"],["remved","removed"],["remves","removes"],["remvoe","remove"],["remvoed","removed"],["remvoes","removes"],["remvove","remove"],["remvoved","removed"],["remvoves","removes"],["remvs","removes"],["renabled","re-enabled"],["renderadble","renderable"],["renderd","rendered"],["rendereing","rendering"],["rendererd","rendered"],["renderered","rendered"],["renderering","rendering"],["renderning","rendering"],["renderr","render"],["renderring","rendering"],["rendevous","rendezvous"],["rendezous","rendezvous"],["rendired","rendered"],["rendirer","renderer"],["rendirers","renderers"],["rendiring","rendering"],["rendring","rendering"],["renedered","rendered"],["renegatiotiable","renegotiable"],["renegatiotiate","renegotiate"],["renegatiotiated","renegotiated"],["renegatiotiates","renegotiates"],["renegatiotiating","renegotiating"],["renegatiotiation","renegotiation"],["renegatiotiations","renegotiations"],["renegatiotiator","renegotiator"],["renegatiotiators","renegotiators"],["renegoable","renegotiable"],["renegoate","renegotiate"],["renegoated","renegotiated"],["renegoates","renegotiates"],["renegoatiable","renegotiable"],["renegoatiate","renegotiate"],["renegoatiated","renegotiated"],["renegoatiates","renegotiates"],["renegoatiating","renegotiating"],["renegoatiation","renegotiation"],["renegoatiations","renegotiations"],["renegoatiator","renegotiator"],["renegoatiators","renegotiators"],["renegoating","renegotiating"],["renegoation","renegotiation"],["renegoations","renegotiations"],["renegoator","renegotiator"],["renegoators","renegotiators"],["renegociable","renegotiable"],["renegociate","renegotiate"],["renegociated","renegotiated"],["renegociates","renegotiates"],["renegociating","renegotiating"],["renegociation","renegotiation"],["renegociations","renegotiations"],["renegociator","renegotiator"],["renegociators","renegotiators"],["renegogtiable","renegotiable"],["renegogtiate","renegotiate"],["renegogtiated","renegotiated"],["renegogtiates","renegotiates"],["renegogtiating","renegotiating"],["renegogtiation","renegotiation"],["renegogtiations","renegotiations"],["renegogtiator","renegotiator"],["renegogtiators","renegotiators"],["renegoitable","renegotiable"],["renegoitate","renegotiate"],["renegoitated","renegotiated"],["renegoitates","renegotiates"],["renegoitating","renegotiating"],["renegoitation","renegotiation"],["renegoitations","renegotiations"],["renegoitator","renegotiator"],["renegoitators","renegotiators"],["renegoptionsotiable","renegotiable"],["renegoptionsotiate","renegotiate"],["renegoptionsotiated","renegotiated"],["renegoptionsotiates","renegotiates"],["renegoptionsotiating","renegotiating"],["renegoptionsotiation","renegotiation"],["renegoptionsotiations","renegotiations"],["renegoptionsotiator","renegotiator"],["renegoptionsotiators","renegotiators"],["renegosiable","renegotiable"],["renegosiate","renegotiate"],["renegosiated","renegotiated"],["renegosiates","renegotiates"],["renegosiating","renegotiating"],["renegosiation","renegotiation"],["renegosiations","renegotiations"],["renegosiator","renegotiator"],["renegosiators","renegotiators"],["renegotable","renegotiable"],["renegotaiable","renegotiable"],["renegotaiate","renegotiate"],["renegotaiated","renegotiated"],["renegotaiates","renegotiates"],["renegotaiating","renegotiating"],["renegotaiation","renegotiation"],["renegotaiations","renegotiations"],["renegotaiator","renegotiator"],["renegotaiators","renegotiators"],["renegotaible","renegotiable"],["renegotaite","renegotiate"],["renegotaited","renegotiated"],["renegotaites","renegotiates"],["renegotaiting","renegotiating"],["renegotaition","renegotiation"],["renegotaitions","renegotiations"],["renegotaitor","renegotiator"],["renegotaitors","renegotiators"],["renegotate","renegotiate"],["renegotated","renegotiated"],["renegotates","renegotiates"],["renegotatiable","renegotiable"],["renegotatiate","renegotiate"],["renegotatiated","renegotiated"],["renegotatiates","renegotiates"],["renegotatiating","renegotiating"],["renegotatiation","renegotiation"],["renegotatiations","renegotiations"],["renegotatiator","renegotiator"],["renegotatiators","renegotiators"],["renegotatible","renegotiable"],["renegotatie","renegotiate"],["renegotatied","renegotiated"],["renegotaties","renegotiates"],["renegotating","renegotiating"],["renegotation","renegotiation"],["renegotations","renegotiations"],["renegotatior","renegotiator"],["renegotatiors","renegotiators"],["renegotator","renegotiator"],["renegotators","renegotiators"],["renegothiable","renegotiable"],["renegothiate","renegotiate"],["renegothiated","renegotiated"],["renegothiates","renegotiates"],["renegothiating","renegotiating"],["renegothiation","renegotiation"],["renegothiations","renegotiations"],["renegothiator","renegotiator"],["renegothiators","renegotiators"],["renegotible","renegotiable"],["renegoticable","renegotiable"],["renegoticate","renegotiate"],["renegoticated","renegotiated"],["renegoticates","renegotiates"],["renegoticating","renegotiating"],["renegotication","renegotiation"],["renegotications","renegotiations"],["renegoticator","renegotiator"],["renegoticators","renegotiators"],["renegotioable","renegotiable"],["renegotioate","renegotiate"],["renegotioated","renegotiated"],["renegotioates","renegotiates"],["renegotioating","renegotiating"],["renegotioation","renegotiation"],["renegotioations","renegotiations"],["renegotioator","renegotiator"],["renegotioators","renegotiators"],["renegotioble","renegotiable"],["renegotion","renegotiation"],["renegotionable","renegotiable"],["renegotionate","renegotiate"],["renegotionated","renegotiated"],["renegotionates","renegotiates"],["renegotionating","renegotiating"],["renegotionation","renegotiation"],["renegotionations","renegotiations"],["renegotionator","renegotiator"],["renegotionators","renegotiators"],["renegotions","renegotiations"],["renegotiotable","renegotiable"],["renegotiotate","renegotiate"],["renegotiotated","renegotiated"],["renegotiotates","renegotiates"],["renegotiotating","renegotiating"],["renegotiotation","renegotiation"],["renegotiotations","renegotiations"],["renegotiotator","renegotiator"],["renegotiotators","renegotiators"],["renegotiote","renegotiate"],["renegotioted","renegotiated"],["renegotiotes","renegotiates"],["renegotioting","renegotiating"],["renegotiotion","renegotiation"],["renegotiotions","renegotiations"],["renegotiotor","renegotiator"],["renegotiotors","renegotiators"],["renegotitable","renegotiable"],["renegotitae","renegotiate"],["renegotitaed","renegotiated"],["renegotitaes","renegotiates"],["renegotitaing","renegotiating"],["renegotitaion","renegotiation"],["renegotitaions","renegotiations"],["renegotitaor","renegotiator"],["renegotitaors","renegotiators"],["renegotitate","renegotiate"],["renegotitated","renegotiated"],["renegotitates","renegotiates"],["renegotitating","renegotiating"],["renegotitation","renegotiation"],["renegotitations","renegotiations"],["renegotitator","renegotiator"],["renegotitators","renegotiators"],["renegotite","renegotiate"],["renegotited","renegotiated"],["renegotites","renegotiates"],["renegotiting","renegotiating"],["renegotition","renegotiation"],["renegotitions","renegotiations"],["renegotitor","renegotiator"],["renegotitors","renegotiators"],["renegoziable","renegotiable"],["renegoziate","renegotiate"],["renegoziated","renegotiated"],["renegoziates","renegotiates"],["renegoziating","renegotiating"],["renegoziation","renegotiation"],["renegoziations","renegotiations"],["renegoziator","renegotiator"],["renegoziators","renegotiators"],["reneweal","renewal"],["renewl","renewal"],["renforce","reinforce"],["renforced","reinforced"],["renforcement","reinforcement"],["renforcements","reinforcements"],["renforces","reinforces"],["rennovate","renovate"],["rennovated","renovated"],["rennovating","renovating"],["rennovation","renovation"],["rentime","runtime"],["rentors","renters"],["reoadmap","roadmap"],["reoccurrence","recurrence"],["reoder","reorder"],["reomvable","removable"],["reomve","remove"],["reomved","removed"],["reomves","removes"],["reomving","removing"],["reonly","read-only"],["reopended","reopened"],["reoport","report"],["reopsitory","repository"],["reord","record"],["reorded","reorder"],["reorer","reorder"],["reorganision","reorganisation"],["reorginised","reorganised"],["reorginized","reorganized"],["reosnable","reasonable"],["reosne","reason"],["reosurce","resource"],["reosurced","resourced"],["reosurces","resources"],["reosurcing","resourcing"],["reounded","rounded"],["repace","replace"],["repaced","replaced"],["repacement","replacement"],["repacements","replacements"],["repaces","replaces"],["repacing","replacing"],["repackge","repackage"],["repackged","repackaged"],["repaitnt","repaint"],["reparamterization","reparameterization"],["repblic","republic"],["repblican","republican"],["repblicans","republicans"],["repblics","republics"],["repeates","repeats"],["repeatly","repeatedly"],["repect","respect"],["repectable","respectable"],["repected","respected"],["repecting","respecting"],["repective","respective"],["repectively","respectively"],["repects","respects"],["repedability","repeatability"],["repedable","repeatable"],["repeition","repetition"],["repentence","repentance"],["repentent","repentant"],["reperesent","represent"],["reperesentation","representation"],["reperesentational","representational"],["reperesentations","representations"],["reperesented","represented"],["reperesenting","representing"],["reperesents","represents"],["repersentation","representation"],["repertoir","repertoire"],["repesent","represent"],["repesentation","representation"],["repesentational","representational"],["repesented","represented"],["repesenting","representing"],["repesents","represents"],["repet","repeat"],["repetative","repetitive"],["repete","repeat"],["repeteadly","repeatedly"],["repetetion","repetition"],["repetetions","repetitions"],["repetetive","repetitive"],["repeting","repeating"],["repetion","repetition"],["repetions","repetitions"],["repetive","repetitive"],["repid","rapid"],["repition","repetition"],["repitions","repetitions"],["repitition","repetition"],["repititions","repetitions"],["replacability","replaceability"],["replacables","replaceables"],["replacacing","replacing"],["replacalbe","replaceable"],["replacalbes","replaceables"],["replacament","replacement"],["replacaments","replacements"],["replacate","replicate"],["replacated","replicated"],["replacates","replicates"],["replacating","replicating"],["replacation","replication"],["replacd","replaced"],["replaceemnt","replacement"],["replaceemnts","replacements"],["replacemenet","replacement"],["replacmenet","replacement"],["replacment","replacement"],["replacments","replacements"],["replacong","replacing"],["replaint","repaint"],["replasement","replacement"],["replasements","replacements"],["replcace","replace"],["replcaced","replaced"],["replcaof","replicaof"],["replicae","replicate"],["replicaes","replicates"],["replicaiing","replicating"],["replicaion","replication"],["replicaions","replications"],["replicaite","replicate"],["replicaites","replicates"],["replicaiting","replicating"],["replicaition","replication"],["replicaitions","replications"],["replicaiton","replication"],["replicaitons","replications"],["repling","replying"],["replys","replies"],["reponding","responding"],["reponse","response"],["reponses","responses"],["reponsibilities","responsibilities"],["reponsibility","responsibility"],["reponsible","responsible"],["reporing","reporting"],["reporitory","repository"],["reportadly","reportedly"],["reportign","reporting"],["reportresouces","reportresources"],["reposiotory","repository"],["reposiry","repository"],["repositiories","repositories"],["repositiory","repository"],["repositiroes","repositories"],["reposititioning","repositioning"],["repositorry","repository"],["repositotries","repositories"],["repositotry","repository"],["repositry","repository"],["reposoitory","repository"],["reposond","respond"],["reposonder","responder"],["reposonders","responders"],["reposonding","responding"],["reposonse","response"],["reposonses","responses"],["repostiories","repositories"],["repostiory","repository"],["repostories","repositories"],["repostory","repository"],["repport","report"],["reppository","repository"],["repraesentation","representation"],["repraesentational","representational"],["repraesentations","representations"],["reprecussion","repercussion"],["reprecussions","repercussions"],["repreesnt","represent"],["repreesnted","represented"],["repreesnts","represents"],["reprensent","represent"],["reprensentation","representation"],["reprensentational","representational"],["reprensentations","representations"],["reprepresents","represents"],["represantation","representation"],["represantational","representational"],["represantations","representations"],["represantative","representative"],["represenatation","representation"],["represenatational","representational"],["represenatations","representations"],["represenation","representation"],["represenational","representational"],["represenations","representations"],["represend","represent"],["representaion","representation"],["representaional","representational"],["representaions","representations"],["representaiton","representation"],["representated","represented"],["representating","representing"],["representd","represented"],["representiative","representative"],["represention","representation"],["representions","representations"],["representive","representative"],["representives","representatives"],["represet","represent"],["represetation","representation"],["represeted","represented"],["represeting","representing"],["represets","represents"],["represnet","represent"],["represnetated","represented"],["represnetation","representation"],["represnetations","representations"],["represneted","represented"],["represneting","representing"],["represnets","represents"],["represnt","represent"],["represntation","representation"],["represntative","representative"],["represnted","represented"],["represnts","represents"],["repressent","represent"],["repressentation","representation"],["repressenting","representing"],["repressents","represents"],["reprociblbe","reproducible"],["reprocible","reproducible"],["reprodice","reproduce"],["reprodiced","reproduced"],["reprodicibility","reproducibility"],["reprodicible","reproducible"],["reprodicibly","reproducibly"],["reprodicing","reproducing"],["reprodiction","reproduction"],["reproducabely","reproducibly"],["reproducability","reproducibility"],["reproducable","reproducible"],["reproducablitity","reproducibility"],["reproducably","reproducibly"],["reproduciability","reproduceability"],["reproduciable","reproduceable"],["reproduciblity","reproducibility"],["reprot","report"],["reprots","reports"],["reprsent","represent"],["reprsentation","representation"],["reprsentations","representations"],["reprsented","represented"],["reprsenting","representing"],["reprsents","represents"],["reprtoire","repertoire"],["reprucible","reproducible"],["repsectively","respectively"],["repsonse","response"],["repsonses","responses"],["repsonsible","responsible"],["repspectively","respectively"],["repsresents","represents"],["reptition","repetition"],["repubic","republic"],["repubican","republican"],["repubicans","republicans"],["repubics","republics"],["republi","republic"],["republian","republican"],["republians","republicans"],["republis","republics"],["repulic","republic"],["repulican","republican"],["repulicans","republicans"],["repulics","republics"],["reputpose","repurpose"],["reputposed","repurposed"],["reputposes","repurposes"],["reputposing","repurposing"],["reqest","request"],["reqested","requested"],["reqests","requests"],["reqeuest","request"],["reqeust","request"],["reqeusted","requested"],["reqeusting","requesting"],["reqeusts","requests"],["reqiest","request"],["reqire","require"],["reqired","required"],["reqirement","requirement"],["reqirements","requirements"],["reqires","requires"],["reqiring","requiring"],["reqiure","require"],["reqrite","rewrite"],["reqrites","rewrites"],["requencies","frequencies"],["requency","frequency"],["requeried","required"],["requeriment","requirement"],["requeriments","requirements"],["reques","request"],["requesr","request"],["requestd","requested"],["requestesd","requested"],["requestested","requested"],["requestied","requested"],["requestying","requesting"],["requet","request"],["requeted","requested"],["requeting","requesting"],["requets","requests"],["requeum","requiem"],["requied","required"],["requierd","required"],["requiere","require"],["requiered","required"],["requierement","requirement"],["requierements","requirements"],["requieres","requires"],["requiering","requiring"],["requies","requires"],["requiest","request"],["requiested","requested"],["requiesting","requesting"],["requiests","requests"],["requird","required"],["requireing","requiring"],["requiremenet","requirement"],["requiremenets","requirements"],["requiremnt","requirement"],["requirment","requirement"],["requirments","requirements"],["requisit","requisite"],["requisits","requisites"],["requre","require"],["requred","required"],["requrement","requirement"],["requrements","requirements"],["requres","requires"],["requrest","request"],["requrested","requested"],["requresting","requesting"],["requrests","requests"],["requried","required"],["requriement","requirement"],["requriements","requirements"],["requries","requires"],["requriment","requirement"],["requring","requiring"],["requrired","required"],["requrirement","requirement"],["requrirements","requirements"],["requris","require"],["requsite","requisite"],["requsites","requisites"],["requst","request"],["requsted","requested"],["requsting","requesting"],["requsts","requests"],["reregisteration","reregistration"],["rererences","references"],["rerference","reference"],["rerferences","references"],["rerpesentation","representation"],["rertieve","retrieve"],["rertieved","retrieved"],["rertiever","retriever"],["rertievers","retrievers"],["rertieves","retrieves"],["reruirement","requirement"],["reruirements","requirements"],["reruning","rerunning"],["rerwite","rewrite"],["resarch","research"],["resart","restart"],["resarts","restarts"],["resaurant","restaurant"],["resaurants","restaurants"],["rescaned","rescanned"],["rescource","resource"],["rescourced","resourced"],["rescources","resources"],["rescourcing","resourcing"],["rescrition","restriction"],["rescritions","restrictions"],["rescueing","rescuing"],["reseach","research"],["reseached","researched"],["researvation","reservation"],["researvations","reservations"],["researve","reserve"],["researved","reserved"],["researves","reserves"],["researving","reserving"],["reselction","reselection"],["resembelance","resemblance"],["resembes","resembles"],["resemblence","resemblance"],["resently","recently"],["resepect","respect"],["resepected","respected"],["resepecting","respecting"],["resepective","respective"],["resepectively","respectively"],["resepects","respects"],["reseration","reservation"],["reserv","reserve"],["reserverd","reserved"],["reservered","reserved"],["resestatus","resetstatus"],["resetable","resettable"],["reseted","reset"],["reseting","resetting"],["resetted","reset"],["reseved","reserved"],["reseverd","reserved"],["resevered","reserved"],["resevering","reserving"],["resevoir","reservoir"],["resgister","register"],["resgisters","registers"],["residental","residential"],["resierfs","reiserfs"],["resignement","resignment"],["resilence","resilience"],["resistable","resistible"],["resistence","resistance"],["resistent","resistant"],["resitance","resistance"],["resitances","resistances"],["resitor","resistor"],["resitors","resistors"],["resivwar","reservoir"],["resizeable","resizable"],["resizeble","resizable"],["reslection","reselection"],["reslove","resolve"],["resloved","resolved"],["resloves","resolves"],["resloving","resolving"],["reslut","result"],["resluts","results"],["resoect","respect"],["resoective","respective"],["resoiurce","resource"],["resoiurced","resourced"],["resoiurces","resources"],["resoiurcing","resourcing"],["resoltion","resolution"],["resoltuion","resolution"],["resoltuions","resolutions"],["resoluitons","resolutions"],["resolutin","resolution"],["resolutino","resolution"],["resolutinos","resolutions"],["resolutins","resolutions"],["resoluton","resolution"],["resolvinf","resolving"],["reson","reason"],["resonable","reasonable"],["resons","reasons"],["resonse","response"],["resonses","responses"],["resoource","resource"],["resoourced","resourced"],["resoources","resources"],["resoourcing","resourcing"],["resopnse","response"],["resopnses","responses"],["resorce","resource"],["resorced","resourced"],["resorces","resources"],["resorcing","resourcing"],["resore","restore"],["resorece","resource"],["resoreces","resources"],["resoruce","resource"],["resoruced","resourced"],["resoruces","resources"],["resorucing","resourcing"],["resotration","restoration"],["resotrations","restorations"],["resotrative","restorative"],["resotre","restore"],["resotrer","restorer"],["resotrers","restorers"],["resotres","restores"],["resotring","restoring"],["resouce","resource"],["resouced","resourced"],["resouces","resources"],["resoucing","resourcing"],["resoultion","resolution"],["resoultions","resolutions"],["resourcees","resources"],["resourceype","resourcetype"],["resoure","resource"],["resourecs","resources"],["resoured","resourced"],["resoures","resources"],["resourses","resources"],["resoution","resolution"],["resoves","resolves"],["resovle","resolve"],["resovled","resolved"],["resovles","resolves"],["resovling","resolving"],["respawining","respawning"],["respecitve","respective"],["respecitvely","respectively"],["respecive","respective"],["respecively","respectively"],["respectivelly","respectively"],["respectivley","respectively"],["respectivly","respectively"],["respnse","response"],["respnses","responses"],["respoduce","reproduce"],["responce","response"],["responces","responses"],["responibilities","responsibilities"],["responisble","responsible"],["responnsibilty","responsibility"],["responsabilities","responsibilities"],["responsability","responsibility"],["responsable","responsible"],["responsbile","responsible"],["responser's","responder's"],["responser","responder"],["responsers","responders"],["responsess","responses"],["responsibile","responsible"],["responsibilites","responsibilities"],["responsibilty","responsibility"],["responsiblities","responsibilities"],["responsiblity","responsibility"],["responsing","responding"],["respose","response"],["resposes","responses"],["resposibility","responsibility"],["resposible","responsible"],["resposiblity","responsibility"],["respositories","repositories"],["respository","repository"],["resposive","responsive"],["resposiveness","responsiveness"],["resposne","response"],["resposnes","responses"],["respresent","represent"],["respresentation","representation"],["respresentational","representational"],["respresentations","representations"],["respresented","represented"],["respresenting","representing"],["respresents","represents"],["resquest","request"],["resrouce","resource"],["resrouced","resourced"],["resrouces","resources"],["resroucing","resourcing"],["reSructuredText","reStructuredText"],["resrved","reserved"],["ressapee","recipe"],["ressemblance","resemblance"],["ressemble","resemble"],["ressembled","resembled"],["ressemblence","resemblance"],["ressembling","resembling"],["ressemle","resemble"],["resset","reset"],["resseted","reset"],["ressets","resets"],["ressetting","resetting"],["ressize","resize"],["ressizes","resizes"],["ressource","resource"],["ressourced","resourced"],["ressources","resources"],["ressourcing","resourcing"],["resssurecting","resurrecting"],["ressult","result"],["ressurect","resurrect"],["ressurected","resurrected"],["ressurecting","resurrecting"],["ressurection","resurrection"],["ressurects","resurrects"],["ressurrection","resurrection"],["restarant","restaurant"],["restarants","restaurants"],["restaraunt","restaurant"],["restaraunteur","restaurateur"],["restaraunteurs","restaurateurs"],["restaraunts","restaurants"],["restauranteurs","restaurateurs"],["restauration","restoration"],["restauraunt","restaurant"],["restaurnad","restaurant"],["restaurnat","restaurant"],["resteraunt","restaurant"],["resteraunts","restaurants"],["restes","reset"],["restesting","retesting"],["resticted","restricted"],["restoding","restoring"],["restoiring","restoring"],["restor","restore"],["restorated","restored"],["restoreable","restorable"],["restoreble","restorable"],["restoreing","restoring"],["restors","restores"],["restouration","restoration"],["restrcted","restricted"],["restrcuture","restructure"],["restriced","restricted"],["restroing","restoring"],["reStructuredTetx","reStructuredText"],["reStructuredTxet","reStructuredText"],["reStrucuredText","reStructuredText"],["restuarant","restaurant"],["restuarants","restaurants"],["reStucturedText","reStructuredText"],["restucturing","restructuring"],["reStucuredText","reStructuredText"],["resturant","restaurant"],["resturants","restaurants"],["resturaunt","restaurant"],["resturaunts","restaurants"],["resturcturation","restructuration"],["resturcture","restructure"],["resturctured","restructured"],["resturctures","restructures"],["resturcturing","restructuring"],["resturns","returns"],["resuable","reusable"],["resuables","reusables"],["resubstituion","resubstitution"],["resuction","reduction"],["resuilt","result"],["resuilted","resulted"],["resuilting","resulting"],["resuilts","results"],["resul","result"],["resuling","resulting"],["resullt","result"],["resulotion","resolution"],["resulsets","resultsets"],["resulst","results"],["resultion","resolution"],["resultions","resolutions"],["resultung","resulting"],["resulution","resolution"],["resumbmitting","resubmitting"],["resumitted","resubmitted"],["resumt","resume"],["resuorce","resource"],["resuorced","resourced"],["resuorces","resources"],["resuorcing","resourcing"],["resurce","resource"],["resurced","resourced"],["resurces","resources"],["resurcing","resourcing"],["resurecting","resurrecting"],["resursively","recursively"],["resuse","reuse"],["resuts","results"],["resycn","resync"],["retalitated","retaliated"],["retalitation","retaliation"],["retangles","rectangles"],["retanslate","retranslate"],["rether","rather"],["retieve","retrieve"],["retieved","retrieved"],["retieves","retrieves"],["retieving","retrieving"],["retinew","retinue"],["retireve","retrieve"],["retireved","retrieved"],["retirever","retriever"],["retirevers","retrievers"],["retireves","retrieves"],["retireving","retrieving"],["retirned","returned"],["retore","restore"],["retored","restored"],["retores","restores"],["retoric","rhetoric"],["retorical","rhetorical"],["retoring","restoring"],["retourned","returned"],["retpresenting","representing"],["retquirement","requirement"],["retquirements","requirements"],["retquireseek","requireseek"],["retquiresgpos","requiresgpos"],["retquiresgsub","requiresgsub"],["retquiressl","requiressl"],["retranser","retransfer"],["retransferd","retransferred"],["retransfered","retransferred"],["retransfering","retransferring"],["retransferrd","retransferred"],["retransmited","retransmitted"],["retransmition","retransmission"],["retreevable","retrievable"],["retreeval","retrieval"],["retreeve","retrieve"],["retreeved","retrieved"],["retreeves","retrieves"],["retreeving","retrieving"],["retreivable","retrievable"],["retreival","retrieval"],["retreive","retrieve"],["retreived","retrieved"],["retreives","retrieves"],["retreiving","retrieving"],["retrevable","retrievable"],["retreval","retrieval"],["retreve","retrieve"],["retreved","retrieved"],["retreves","retrieves"],["retreving","retrieving"],["retrict","restrict"],["retricted","restricted"],["retriebe","retrieve"],["retriece","retrieve"],["retrieces","retrieves"],["retriev","retrieve"],["retrieveds","retrieved"],["retrive","retrieve"],["retrived","retrieved"],["retrives","retrieves"],["retriving","retrieving"],["retrn","return"],["retrned","returned"],["retrns","returns"],["retrun","return"],["retruned","returned"],["retruns","returns"],["retrvieve","retrieve"],["retrvieved","retrieved"],["retrviever","retriever"],["retrvievers","retrievers"],["retrvieves","retrieves"],["retsart","restart"],["retsarts","restarts"],["retun","return"],["retunrned","returned"],["retunrs","returns"],["retuns","returns"],["retur","return"],["reture","return"],["retured","returned"],["returend","returned"],["retures","returns"],["returing","returning"],["returm","return"],["returmed","returned"],["returming","returning"],["returms","returns"],["returnd","returned"],["returnes","returns"],["returnig","returning"],["returnn","return"],["returnned","returned"],["returnning","returning"],["returs","returns"],["retursn","returns"],["retutning","returning"],["retyring","retrying"],["reudce","reduce"],["reudced","reduced"],["reudces","reduces"],["reudction","reduction"],["reudctions","reductions"],["reuest","request"],["reuests","requests"],["reulator","regulator"],["reundant","redundant"],["reundantly","redundantly"],["reuplad","reupload"],["reupladed","reuploaded"],["reuplader","reuploader"],["reupladers","reuploaders"],["reuplading","reuploading"],["reuplads","reuploads"],["reuplaod","reupload"],["reuplaoded","reuploaded"],["reuplaoder","reuploader"],["reuplaoders","reuploaders"],["reuplaoding","reuploading"],["reuplaods","reuploads"],["reuplod","reupload"],["reuploded","reuploaded"],["reuploder","reuploader"],["reuploders","reuploaders"],["reuploding","reuploading"],["reuplods","reuploads"],["reuqest","request"],["reuqested","requested"],["reuqesting","requesting"],["reuqests","requests"],["reurn","return"],["reursively","recursively"],["reuslt","result"],["reussing","reusing"],["reutnred","returned"],["reutrn","return"],["reutrns","returns"],["revaildating","revalidating"],["revaluated","reevaluated"],["reveiw","review"],["reveiwed","reviewed"],["reveiwer","reviewer"],["reveiwers","reviewers"],["reveiwing","reviewing"],["reveiws","reviews"],["revelent","relevant"],["revelution","revolution"],["revelutions","revolutions"],["reveokes","revokes"],["reverce","reverse"],["reverced","reversed"],["revereces","references"],["reverese","reverse"],["reveresed","reversed"],["reveret","revert"],["revereted","reverted"],["reversable","reversible"],["reverse-engeneer","reverse-engineer"],["reverse-engeneering","reverse-engineering"],["reverse-engieer","reverse-engineer"],["reverseed","reversed"],["reversees","reverses"],["reverve","reserve"],["reverved","reserved"],["revewrse","reverse"],["reviewl","review"],["reviewsectio","reviewsection"],["revisisions","revisions"],["revison","revision"],["revisons","revisions"],["revist","revisit"],["revisted","revisited"],["revisting","revisiting"],["revists","revisits"],["reviwed","reviewed"],["reviwer","reviewer"],["reviwers","reviewers"],["reviwing","reviewing"],["revoluion","revolution"],["revolutionar","revolutionary"],["revrese","reverse"],["revrieve","retrieve"],["revrieved","retrieved"],["revriever","retriever"],["revrievers","retrievers"],["revrieves","retrieves"],["revsion","revision"],["rewiev","review"],["rewieved","reviewed"],["rewiever","reviewer"],["rewieving","reviewing"],["rewievs","reviews"],["rewirtable","rewritable"],["rewirte","rewrite"],["rewirtten","rewritten"],["rewitable","rewritable"],["rewite","rewrite"],["rewitten","rewritten"],["reworkd","reworked"],["rewriet","rewrite"],["rewriite","rewrite"],["rewriten","rewritten"],["rewritting","rewriting"],["rewuired","required"],["rference","reference"],["rferences","references"],["rfeturned","returned"],["rgister","register"],["rhymme","rhyme"],["rhythem","rhythm"],["rhythim","rhythm"],["rhythimcally","rhythmically"],["rhytmic","rhythmic"],["ridiculus","ridiculous"],["righ","right"],["righht","right"],["righmost","rightmost"],["rightt","right"],["rigourous","rigorous"],["rigt","right"],["rigth","right"],["rigths","rights"],["rigurous","rigorous"],["riminder","reminder"],["riminders","reminders"],["riminding","reminding"],["rimitives","primitives"],["rininging","ringing"],["rispective","respective"],["ristrict","restrict"],["ristricted","restricted"],["ristriction","restriction"],["ritable","writable"],["rivised","revised"],["rizes","rises"],["rlation","relation"],["rlse","else"],["rmeote","remote"],["rmeove","remove"],["rmeoved","removed"],["rmeoves","removes"],["rmove","remove"],["rmoved","removed"],["rmoving","removing"],["roataion","rotation"],["roatation","rotation"],["roated","rotated"],["roation","rotation"],["roboustness","robustness"],["robustnes","robustness"],["Rockerfeller","Rockefeller"],["rococco","rococo"],["rocord","record"],["rocorded","recorded"],["rocorder","recorder"],["rocording","recording"],["rocordings","recordings"],["rocords","records"],["roduceer","producer"],["roigin","origin"],["roiginal","original"],["roiginally","originally"],["roiginals","originals"],["roiginating","originating"],["roigins","origins"],["romote","remote"],["romoted","remoted"],["romoteing","remoting"],["romotely","remotely"],["romotes","remotes"],["romoting","remoting"],["romotly","remotely"],["roomate","roommate"],["ropeat","repeat"],["rorated","rotated"],["rosponse","response"],["rosponsive","responsive"],["rotaion","rotation"],["rotaions","rotations"],["rotaiton","rotation"],["rotaitons","rotations"],["rotat","rotate"],["rotataion","rotation"],["rotataions","rotations"],["rotateable","rotatable"],["rouding","rounding"],["roughtly","roughly"],["rougly","roughly"],["rouine","routine"],["rouines","routines"],["round-robbin","round-robin"],["roundign","rounding"],["roung","round"],["rountine","routine"],["rountines","routines"],["routiens","routines"],["routins","routines"],["rovide","provide"],["rovided","provided"],["rovider","provider"],["rovides","provides"],["roviding","providing"],["rqeuested","requested"],["rqeuesting","requesting"],["rquested","requested"],["rquesting","requesting"],["rquire","require"],["rquired","required"],["rquirement","requirement"],["rquires","requires"],["rquiring","requiring"],["rranslation","translation"],["rranslations","translations"],["rrase","erase"],["rrror","error"],["rrrored","errored"],["rrroring","erroring"],["rrrors","errors"],["rubarb","rhubarb"],["rucuperate","recuperate"],["rudimentally","rudimentary"],["rudimentatry","rudimentary"],["rudimentory","rudimentary"],["rudimentry","rudimentary"],["rulle","rule"],["rumatic","rheumatic"],["runn","run"],["runnig","running"],["runnign","running"],["runnigng","running"],["runnin","running"],["runnint","running"],["runnners","runners"],["runnning","running"],["runns","runs"],["runnung","running"],["runting","runtime"],["rurrent","current"],["russina","Russian"],["Russion","Russian"],["rwite","write"],["rysnc","rsync"],["rythem","rhythm"],["rythim","rhythm"],["rythm","rhythm"],["rythmic","rhythmic"],["rythyms","rhythms"],["saame","same"],["sabatage","sabotage"],["sabatour","saboteur"],["sacalar","scalar"],["sacalars","scalars"],["sacarin","saccharin"],["sacle","scale"],["sacrafice","sacrifice"],["sacreligious","sacrilegious"],["Sacremento","Sacramento"],["sacrifical","sacrificial"],["sacrifying","sacrificing"],["sacrilegeous","sacrilegious"],["sacrin","saccharin"],["sade","sad"],["saem","same"],["safe-pooint","safe-point"],["safe-pooints","safe-points"],["safeing","saving"],["safepooint","safepoint"],["safepooints","safepoints"],["safequard","safeguard"],["saferi","Safari"],["safetly","safely"],["safly","safely"],["saftey","safety"],["safty","safety"],["saggital","sagittal"],["sagital","sagittal"],["Sagitarius","Sagittarius"],["sais","says"],["saleries","salaries"],["salery","salary"],["salveof","slaveof"],["samle","sample"],["samled","sampled"],["samll","small"],["samller","smaller"],["sammon","salmon"],["samori","samurai"],["sampel","sample"],["sampeld","sampled"],["sampels","samples"],["samwich","sandwich"],["samwiches","sandwiches"],["sanaty","sanity"],["sanctionning","sanctioning"],["sandobx","sandbox"],["sandwhich","sandwich"],["Sanhedrim","Sanhedrin"],["sanitizisation","sanitization"],["sanizer","sanitizer"],["sanpshot","snapshot"],["sanpsnots","snapshots"],["sansitizer","sanitizer"],["sansitizers","sanitizers"],["santioned","sanctioned"],["santize","sanitize"],["santized","sanitized"],["santizes","sanitizes"],["santizing","sanitizing"],["sanwich","sandwich"],["sanwiches","sandwiches"],["sanytise","sanitise"],["sanytize","sanitize"],["saphire","sapphire"],["saphires","sapphires"],["sargant","sergeant"],["sargeant","sergeant"],["sarted","started"],["sarter","starter"],["sarters","starters"],["sastisfies","satisfies"],["satandard","standard"],["satandards","standards"],["satelite","satellite"],["satelites","satellites"],["satelitte","satellite"],["satellittes","satellites"],["satement","statement"],["satements","statements"],["saterday","Saturday"],["saterdays","Saturdays"],["satified","satisfied"],["satifies","satisfies"],["satifsy","satisfy"],["satify","satisfy"],["satifying","satisfying"],["satisfactority","satisfactorily"],["satisfiabilty","satisfiability"],["satisfing","satisfying"],["satisfyied","satisfied"],["satisifed","satisfied"],["satisified","satisfied"],["satisifies","satisfies"],["satisify","satisfy"],["satisifying","satisfying"],["satistying","satisfying"],["satric","satiric"],["satrical","satirical"],["satrically","satirically"],["sattelite","satellite"],["sattelites","satellites"],["sattellite","satellite"],["sattellites","satellites"],["satuaday","Saturday"],["satuadays","Saturdays"],["saturdey","Saturday"],["satursday","Saturday"],["satus","status"],["saught","sought"],["sav","save"],["savees","saves"],["saveing","saving"],["savely","safely"],["savere","severe"],["savety","safety"],["savgroup","savegroup"],["savy","savvy"],["saxaphone","saxophone"],["sbsampling","subsampling"],["scahr","schar"],["scalarr","scalar"],["scaleability","scalability"],["scaleable","scalable"],["scaleing","scaling"],["scalled","scaled"],["scandanavia","Scandinavia"],["scaned","scanned"],["scaning","scanning"],["scannning","scanning"],["scaricity","scarcity"],["scavange","scavenge"],["scavanged","scavenged"],["scavanger","scavenger"],["scavangers","scavengers"],["scavanges","scavenges"],["sccope","scope"],["sceanrio","scenario"],["sceanrios","scenarios"],["scecified","specified"],["scenarion","scenario"],["scenarions","scenarios"],["scenegraaph","scenegraph"],["scenegraaphs","scenegraphs"],["sceond","second"],["sceonds","seconds"],["scetch","sketch"],["scetched","sketched"],["scetches","sketches"],["scetching","sketching"],["schdule","schedule"],["schduled","scheduled"],["schduleing","scheduling"],["schduler","scheduler"],["schdules","schedules"],["schduling","scheduling"],["schedual","schedule"],["scheduald","scheduled"],["schedualed","scheduled"],["schedualing","scheduling"],["schedulier","scheduler"],["schedulling","scheduling"],["scheduluing","scheduling"],["schem","scheme"],["schemd","schemed"],["schems","schemes"],["schme","scheme"],["schmea","schema"],["schmeas","schemas"],["schmes","schemes"],["scholarhip","scholarship"],["scholarhips","scholarships"],["scholdn't","shouldn't"],["schould","should"],["scientfic","scientific"],["scientfically","scientifically"],["scientficaly","scientifically"],["scientficly","scientifically"],["scientifc","scientific"],["scientifcally","scientifically"],["scientifcaly","scientifically"],["scientifcly","scientifically"],["scientis","scientist"],["scientiss","scientist"],["scince","science"],["scinece","science"],["scintiallation","scintillation"],["scintillatqt","scintillaqt"],["scipted","scripted"],["scipting","scripting"],["sciript","script"],["sciripts","scripts"],["scirpt","script"],["scirpts","scripts"],["scketch","sketch"],["scketched","sketched"],["scketches","sketches"],["scketching","sketching"],["sclar","scalar"],["scneario","scenario"],["scnearios","scenarios"],["scoket","socket"],["scoll","scroll"],["scolling","scrolling"],["scondary","secondary"],["scopeing","scoping"],["scorebord","scoreboard"],["scources","sources"],["scrach","scratch"],["scrached","scratched"],["scraches","scratches"],["scraching","scratching"],["scrachs","scratches"],["scrao","scrap"],["screeb","screen"],["screebs","screens"],["screenchot","screenshot"],["screenchots","screenshots"],["screenwrighter","screenwriter"],["screnn","screen"],["scriopted","scripted"],["scriopting","scripting"],["scriopts","scripts"],["scriopttype","scripttype"],["scriping","scripting"],["scripst","scripts"],["scriptype","scripttype"],["scritp","script"],["scritped","scripted"],["scritping","scripting"],["scritps","scripts"],["scritpt","script"],["scritpts","scripts"],["scroipt","script"],["scroipted","scripted"],["scroipting","scripting"],["scroipts","scripts"],["scroipttype","scripttype"],["scrollablbe","scrollable"],["scrollin","scrolling"],["scroolbar","scrollbar"],["scrpt","script"],["scrpted","scripted"],["scrpting","scripting"],["scrpts","scripts"],["scrren","screen"],["scrutinity","scrutiny"],["scubscribe","subscribe"],["scubscribed","subscribed"],["scubscriber","subscriber"],["scubscribes","subscribes"],["scuccessully","successfully"],["scupt","sculpt"],["scupted","sculpted"],["scupting","sculpting"],["scupture","sculpture"],["scuptures","sculptures"],["seach","search"],["seached","searched"],["seaches","searches"],["seaching","searching"],["seachkey","searchkey"],["seacrchable","searchable"],["seamlessley","seamlessly"],["seamlessy","seamlessly"],["searcahble","searchable"],["searcheable","searchable"],["searchin","searching"],["searchs","searches"],["seatch","search"],["seccond","second"],["secconds","seconds"],["secction","section"],["secene","scene"],["secific","specific"],["secion","section"],["secions","sections"],["secirity","security"],["seciton","section"],["secitons","sections"],["secne","scene"],["secod","second"],["secods","seconds"],["seconadry","secondary"],["seconcary","secondary"],["secondaray","secondary"],["seconday","secondary"],["seconf","second"],["seconfs","seconds"],["seconly","secondly"],["secont","second"],["secontary","secondary"],["secontly","secondly"],["seconts","seconds"],["secord","second"],["secords","seconds"],["secotr","sector"],["secound","second"],["secoundary","secondary"],["secoundly","secondly"],["secounds","seconds"],["secquence","sequence"],["secratary","secretary"],["secretery","secretary"],["secrion","section"],["secruity","security"],["sectin","section"],["sectins","sections"],["sectionning","sectioning"],["secton","section"],["sectoned","sectioned"],["sectoning","sectioning"],["sectons","sections"],["sectopm","section"],["sectopmed","sectioned"],["sectopming","sectioning"],["sectopms","sections"],["sectopn","section"],["sectopned","sectioned"],["sectopning","sectioning"],["sectopns","sections"],["secue","secure"],["secuely","securely"],["secuence","sequence"],["secuenced","sequenced"],["secuences","sequences"],["secuencial","sequential"],["secuencing","sequencing"],["secuirty","security"],["secuity","security"],["secund","second"],["secunds","seconds"],["securiy","security"],["securiyt","security"],["securly","securely"],["securre","secure"],["securrely","securely"],["securrly","securely"],["securtity","security"],["securtiy","security"],["securty","security"],["securuity","security"],["sedereal","sidereal"],["seeem","seem"],["seeen","seen"],["seelect","select"],["seelected","selected"],["seemes","seems"],["seemless","seamless"],["seemlessly","seamlessly"],["seesion","session"],["seesions","sessions"],["seetings","settings"],["seeverities","severities"],["seeverity","severity"],["segault","segfault"],["segaults","segfaults"],["segement","segment"],["segementation","segmentation"],["segemented","segmented"],["segements","segments"],["segemnts","segments"],["segfualt","segfault"],["segfualts","segfaults"],["segmantation","segmentation"],["segmend","segment"],["segmendation","segmentation"],["segmended","segmented"],["segmends","segments"],["segmenet","segment"],["segmenetd","segmented"],["segmeneted","segmented"],["segmenets","segments"],["segmenst","segments"],["segmentaion","segmentation"],["segmente","segment"],["segmentes","segments"],["segmetn","segment"],["segmetned","segmented"],["segmetns","segments"],["segument","segment"],["seguoys","segues"],["seh","she"],["seige","siege"],["seing","seeing"],["seinor","senior"],["seires","series"],["sekect","select"],["sekected","selected"],["sekects","selects"],["selcetion","selection"],["selct","select"],["selctable","selectable"],["selctables","selectable"],["selcted","selected"],["selcting","selecting"],["selction","selection"],["selctions","selections"],["seldomly","seldom"],["selecction","selection"],["selecctions","selections"],["seleced","selected"],["selecetd","selected"],["seleceted","selected"],["selecgt","select"],["selecgted","selected"],["selecgting","selecting"],["selecing","selecting"],["selecrtion","selection"],["selectd","selected"],["selectes","selects"],["selectoin","selection"],["selecton","selection"],["selectons","selections"],["seledted","selected"],["selektions","selections"],["selektor","selector"],["selet","select"],["selets","selects"],["self-comparisson","self-comparison"],["self-contianed","self-contained"],["self-referencial","self-referential"],["self-refering","self-referring"],["selfs","self"],["sellect","select"],["sellected","selected"],["selv","self"],["semaintics","semantics"],["semaphone","semaphore"],["semaphones","semaphores"],["semaphor","semaphore"],["semaphors","semaphores"],["semapthore","semaphore"],["semapthores","semaphores"],["sematic","semantic"],["sematical","semantical"],["sematically","semantically"],["sematics","semantics"],["sematnics","semantics"],["semding","sending"],["sementation","segmentation"],["sementic","semantic"],["sementically","semantically"],["sementics","semantics"],["semgent","segment"],["semgentation","segmentation"],["semicolor","semicolon"],["semicolumn","semicolon"],["semicondutor","semiconductor"],["sempahore","semaphore"],["sempahores","semaphores"],["sempaphore","semaphore"],["sempaphores","semaphores"],["semphore","semaphore"],["semphores","semaphores"],["sempphore","semaphore"],["senaphore","semaphore"],["senaphores","semaphores"],["senario","scenario"],["senarios","scenarios"],["sencond","second"],["sencondary","secondary"],["senconds","seconds"],["sendign","sending"],["sendinging","sending"],["sendinng","sending"],["senfile","sendfile"],["senintels","sentinels"],["senitnel","sentinel"],["senitnels","sentinels"],["senquence","sequence"],["sensative","sensitive"],["sensetive","sensitive"],["sensisble","sensible"],["sensistive","sensitive"],["sensititive","sensitive"],["sensititivies","sensitivities"],["sensititivity","sensitivity"],["sensititivy","sensitivity"],["sensitiv","sensitive"],["sensitiveties","sensitivities"],["sensitivety","sensitivity"],["sensitivites","sensitivities"],["sensitivties","sensitivities"],["sensitivty","sensitivity"],["sensitve","sensitive"],["senstive","sensitive"],["sensure","censure"],["sentance","sentence"],["sentances","sentences"],["senteces","sentences"],["sentense","sentence"],["sentienl","sentinel"],["sentinal","sentinel"],["sentinals","sentinels"],["sention","section"],["sentions","sections"],["sentive","sensitive"],["sentivite","sensitive"],["sepaate","separate"],["separartor","separator"],["separat","separate"],["separatelly","separately"],["separater","separator"],["separatley","separately"],["separatly","separately"],["separato","separator"],["separatos","separators"],["separatring","separating"],["separed","separated"],["separete","separate"],["separeted","separated"],["separetedly","separately"],["separetely","separately"],["separeter","separator"],["separetes","separates"],["separeting","separating"],["separetly","separately"],["separetor","separator"],["separtates","separates"],["separte","separate"],["separted","separated"],["separtes","separates"],["separting","separating"],["sepatae","separate"],["sepatate","separate"],["sepcial","special"],["sepcific","specific"],["sepcifically","specifically"],["sepcification","specification"],["sepcifications","specifications"],["sepcified","specified"],["sepcifier","specifier"],["sepcifies","specifies"],["sepcify","specify"],["sepcifying","specifying"],["sepearable","separable"],["sepearate","separate"],["sepearated","separated"],["sepearately","separately"],["sepearates","separates"],["sepearation","separation"],["sepearator","separator"],["sepearators","separators"],["sepearet","separate"],["sepearetly","separately"],["sepearte","separate"],["sepearted","separated"],["sepeartely","separately"],["sepeartes","separates"],["sepeartor","separator"],["sepeartors","separators"],["sepeate","separate"],["sepeated","separated"],["sepeates","separates"],["sepeator","separator"],["sepeators","separators"],["sepecial","special"],["sepecifed","specified"],["sepecific","specific"],["sepecification","specification"],["sepecified","specified"],["sepecifier","specifier"],["sepecifiers","specifiers"],["sepecifies","specifies"],["sepecify","specify"],["sepectral","spectral"],["sepeicfy","specify"],["sependent","dependent"],["sepending","depending"],["seperable","separable"],["seperad","separate"],["seperadly","separately"],["seperaly","separately"],["seperaor","separator"],["seperaors","separators"],["seperare","separate"],["seperared","separated"],["seperares","separates"],["seperat","separate"],["seperataed","separated"],["seperatally","separately"],["seperataly","separately"],["seperatated","separated"],["seperatd","separated"],["seperate","separate"],["seperated","separated"],["seperatedly","separately"],["seperatedy","separated"],["seperateely","separately"],["seperateing","separating"],["seperatelly","separately"],["seperately","separately"],["seperater","separator"],["seperaters","separators"],["seperates","separates"],["seperating","separating"],["seperation","separation"],["seperations","separations"],["seperatism","separatism"],["seperatist","separatist"],["seperatley","separately"],["seperatly","separately"],["seperato","separator"],["seperator","separator"],["seperators","separators"],["seperatos","separators"],["sepereate","separate"],["sepereated","separated"],["sepereates","separates"],["sepererate","separate"],["sepererated","separated"],["sepererates","separates"],["seperete","separate"],["sepereted","separated"],["seperetes","separates"],["seperratly","separately"],["sepertator","separator"],["sepertators","separators"],["sepertor","separator"],["sepertors","separators"],["sepetaror","separator"],["sepetarors","separators"],["sepetate","separate"],["sepetated","separated"],["sepetately","separately"],["sepetates","separates"],["sepina","subpoena"],["seporate","separate"],["sepparation","separation"],["sepparations","separations"],["sepperate","separate"],["seprarate","separate"],["seprate","separate"],["seprated","separated"],["seprator","separator"],["seprators","separators"],["Septemer","September"],["seqence","sequence"],["seqenced","sequenced"],["seqences","sequences"],["seqencing","sequencing"],["seqense","sequence"],["seqensed","sequenced"],["seqenses","sequences"],["seqensing","sequencing"],["seqenstial","sequential"],["seqential","sequential"],["seqeuence","sequence"],["seqeuencer","sequencer"],["seqeuental","sequential"],["seqeunce","sequence"],["seqeuncer","sequencer"],["seqeuntials","sequentials"],["sequcne","sequence"],["sequece","sequence"],["sequecence","sequence"],["sequecences","sequences"],["sequeces","sequences"],["sequeence","sequence"],["sequelce","sequence"],["sequemce","sequence"],["sequemces","sequences"],["sequencial","sequential"],["sequencially","sequentially"],["sequencies","sequences"],["sequense","sequence"],["sequensed","sequenced"],["sequenses","sequences"],["sequensing","sequencing"],["sequenstial","sequential"],["sequentialy","sequentially"],["sequenzes","sequences"],["sequetial","sequential"],["sequnce","sequence"],["sequnced","sequenced"],["sequncer","sequencer"],["sequncers","sequencers"],["sequnces","sequences"],["sequnece","sequence"],["sequneces","sequences"],["ser","set"],["serach","search"],["serached","searched"],["seracher","searcher"],["seraches","searches"],["seraching","searching"],["serachs","searches"],["serailisation","serialisation"],["serailise","serialise"],["serailised","serialised"],["serailization","serialization"],["serailize","serialize"],["serailized","serialized"],["serailse","serialise"],["serailsed","serialised"],["serailze","serialize"],["serailzed","serialized"],["serch","search"],["serched","searched"],["serches","searches"],["serching","searching"],["sercive","service"],["sercived","serviced"],["sercives","services"],["serciving","servicing"],["sereverless","serverless"],["serevrless","serverless"],["sergent","sergeant"],["serialialisation","serialisation"],["serialialise","serialise"],["serialialised","serialised"],["serialialises","serialises"],["serialialising","serialising"],["serialialization","serialization"],["serialialize","serialize"],["serialialized","serialized"],["serialializes","serializes"],["serialializing","serializing"],["serialiasation","serialisation"],["serialiazation","serialization"],["serialsiation","serialisation"],["serialsie","serialise"],["serialsied","serialised"],["serialsies","serialises"],["serialsing","serialising"],["serialziation","serialization"],["serialzie","serialize"],["serialzied","serialized"],["serialzies","serializes"],["serialzing","serializing"],["serice","service"],["serie","series"],["seriel","serial"],["serieses","series"],["serios","serious"],["seriouly","seriously"],["seriuos","serious"],["serivce","service"],["serivces","services"],["sersies","series"],["sertificate","certificate"],["sertificated","certificated"],["sertificates","certificates"],["sertification","certification"],["servece","service"],["serveced","serviced"],["serveces","services"],["servecing","servicing"],["serveice","service"],["serveiced","serviced"],["serveices","services"],["serveicing","servicing"],["serveless","serverless"],["serveral","several"],["serverite","severity"],["serverites","severities"],["serverities","severities"],["serverity","severity"],["serverles","serverless"],["serverlesss","serverless"],["serverlsss","serverless"],["servicies","services"],["servie","service"],["servies","services"],["servive","service"],["servoce","service"],["servoced","serviced"],["servoces","services"],["servocing","servicing"],["sesion","session"],["sesions","sessions"],["sesitive","sensitive"],["sesitively","sensitively"],["sesitiveness","sensitiveness"],["sesitivity","sensitivity"],["sessio","session"],["sesssion","session"],["sesssions","sessions"],["sestatusbar","setstatusbar"],["sestatusmsg","setstatusmsg"],["setevn","setenv"],["setgit","setgid"],["seting","setting"],["setings","settings"],["setion","section"],["setions","sections"],["setitng","setting"],["setitngs","settings"],["setquential","sequential"],["setted","set"],["settelement","settlement"],["settign","setting"],["settigns","settings"],["settigs","settings"],["settiing","setting"],["settiings","settings"],["settinga","settings"],["settingss","settings"],["settins","settings"],["settlment","settlement"],["settng","setting"],["settter","setter"],["settters","setters"],["settting","setting"],["setttings","settings"],["settup","setup"],["setyp","setup"],["setyps","setups"],["seuence","sequence"],["seuences","sequences"],["sevaral","several"],["severat","several"],["severeal","several"],["severirirty","severity"],["severirities","severities"],["severite","severity"],["severites","severities"],["severiy","severity"],["severl","several"],["severley","severely"],["severly","severely"],["sevice","service"],["sevirity","severity"],["sevral","several"],["sevrally","severally"],["sevrity","severity"],["sewdonim","pseudonym"],["sewdonims","pseudonyms"],["sewrvice","service"],["sfety","safety"],["sgadow","shadow"],["sh1sum","sha1sum"],["shadasloo","shadaloo"],["shaddow","shadow"],["shadhow","shadow"],["shadoloo","shadaloo"],["shal","shall"],["shandeleer","chandelier"],["shandeleers","chandeliers"],["shandow","shadow"],["shaneal","chenille"],["shanghi","Shanghai"],["shapshot","snapshot"],["shapshots","snapshots"],["shapsnot","snapshot"],["shapsnots","snapshots"],["sharable","shareable"],["shareed","shared"],["shareing","sharing"],["sharloton","charlatan"],["sharraid","charade"],["sharraids","charades"],["shashes","slashes"],["shatow","ch\xE2teau"],["shbang","shebang"],["shedule","schedule"],["sheduled","scheduled"],["shedules","schedules"],["sheduling","scheduling"],["sheepherd","shepherd"],["sheepherds","shepherds"],["sheeps","sheep"],["sheild","shield"],["sheilded","shielded"],["sheilding","shielding"],["sheilds","shields"],["shepe","shape"],["shepered","shepherd"],["sheperedly","shepherdly"],["shepereds","shepherds"],["shepes","shapes"],["sheping","shaping"],["shepre","sphere"],["shepres","spheres"],["sherif","sheriff"],["shfit","shift"],["shfited","shifted"],["shfiting","shifting"],["shfits","shifts"],["shfted","shifted"],["shicane","chicane"],["shif","shift"],["shif-tab","shift-tab"],["shineing","shining"],["shiped","shipped"],["shiping","shipping"],["shoftware","software"],["shoild","should"],["shoing","showing"],["sholder","shoulder"],["sholdn't","shouldn't"],["sholuld","should"],["sholuldn't","shouldn't"],["shoould","should"],["shopkeeepers","shopkeepers"],["shorcut","shortcut"],["shorcuts","shortcuts"],["shorly","shortly"],["short-cicruit","short-circuit"],["short-cicruits","short-circuits"],["shortcat","shortcut"],["shortcats","shortcuts"],["shortcomming","shortcoming"],["shortcommings","shortcomings"],["shortcutt","shortcut"],["shortern","shorten"],["shorthly","shortly"],["shortkut","shortcut"],["shortkuts","shortcuts"],["shortwhile","short while"],["shotcut","shortcut"],["shotcuts","shortcuts"],["shotdown","shutdown"],["shoucl","should"],["shoud","should"],["shoudl","should"],["shoudld","should"],["shoudle","should"],["shoudln't","shouldn't"],["shoudlnt","shouldn't"],["shoudn't","shouldn't"],["shoudn","shouldn"],["should'nt","shouldn't"],["should't","shouldn't"],["shouldn;t","shouldn't"],["shouldnt'","shouldn't"],["shouldnt","shouldn't"],["shouldnt;","shouldn't"],["shoule","should"],["shoulld","should"],["shouln't","shouldn't"],["shouls","should"],["shoult","should"],["shouod","should"],["shouw","show"],["shouws","shows"],["showvinism","chauvinism"],["shpae","shape"],["shpaes","shapes"],["shpapes","shapes"],["shpere","sphere"],["shperes","spheres"],["shpped","shipped"],["shreak","shriek"],["shreshold","threshold"],["shriks","shrinks"],["shttp","https"],["shudown","shutdown"],["shufle","shuffle"],["shuld","should"],["shure","sure"],["shurely","surely"],["shutdownm","shutdown"],["shuting","shutting"],["shutodwn","shutdown"],["shwo","show"],["shwon","shown"],["shystem","system"],["shystems","systems"],["sibiling","sibling"],["sibilings","siblings"],["sibtitle","subtitle"],["sibtitles","subtitles"],["sicinct","succinct"],["sicinctly","succinctly"],["sicne","since"],["sidde","side"],["sideral","sidereal"],["siduction","seduction"],["siezure","seizure"],["siezures","seizures"],["siffix","suffix"],["siffixed","suffixed"],["siffixes","suffixes"],["siffixing","suffixing"],["sigaled","signaled"],["siganture","signature"],["sigantures","signatures"],["sigen","sign"],["sigificance","significance"],["siginificant","significant"],["siginificantly","significantly"],["siginify","signify"],["sigit","digit"],["sigits","digits"],["sigleton","singleton"],["signales","signals"],["signall","signal"],["signatue","signature"],["signatur","signature"],["signes","signs"],["signficant","significant"],["signficantly","significantly"],["signficiant","significant"],["signfies","signifies"],["signguature","signature"],["signifanct","significant"],["signifant","significant"],["signifantly","significantly"],["signifcant","significant"],["signifcantly","significantly"],["signifficant","significant"],["significanly","significantly"],["significat","significant"],["significatly","significantly"],["significently","significantly"],["signifigant","significant"],["signifigantly","significantly"],["signitories","signatories"],["signitory","signatory"],["signol","signal"],["signto","sign to"],["signul","signal"],["signular","singular"],["signularity","singularity"],["silentely","silently"],["silenty","silently"],["silouhette","silhouette"],["silouhetted","silhouetted"],["silouhettes","silhouettes"],["silouhetting","silhouetting"],["simeple","simple"],["simetrie","symmetry"],["simetries","symmetries"],["simgle","single"],["simialr","similar"],["simialrity","similarity"],["simialrly","similarly"],["simiar","similar"],["similarily","similarly"],["similary","similarly"],["similat","similar"],["similia","similar"],["similiar","similar"],["similiarity","similarity"],["similiarly","similarly"],["similiarty","similarity"],["similiary","similarity"],["simillar","similar"],["similtaneous","simultaneous"],["simlar","similar"],["simlarlity","similarity"],["simlarly","similarly"],["simliar","similar"],["simliarly","similarly"],["simlicity","simplicity"],["simlified","simplified"],["simmetric","symmetric"],["simmetrical","symmetrical"],["simmetry","symmetry"],["simmilar","similar"],["simpification","simplification"],["simpifications","simplifications"],["simpified","simplified"],["simplei","simply"],["simpley","simply"],["simplfy","simplify"],["simplicitly","simplicity"],["simplicty","simplicity"],["simplier","simpler"],["simpliest","simplest"],["simplifed","simplified"],["simplificaiton","simplification"],["simplificaitons","simplifications"],["simplifiy","simplify"],["simplifys","simplifies"],["simpliifcation","simplification"],["simpliifcations","simplifications"],["simplist","simplest"],["simpy","simply"],["simualte","simulate"],["simualted","simulated"],["simualtes","simulates"],["simualting","simulating"],["simualtion","simulation"],["simualtions","simulations"],["simualtor","simulator"],["simualtors","simulators"],["simulaiton","simulation"],["simulaitons","simulations"],["simulantaneous","simultaneous"],["simulantaneously","simultaneously"],["simulataeous","simultaneous"],["simulataeously","simultaneously"],["simulataneity","simultaneity"],["simulataneous","simultaneous"],["simulataneously","simultaneously"],["simulatanious","simultaneous"],["simulataniously","simultaneously"],["simulatanous","simultaneous"],["simulatanously","simultaneously"],["simulatation","simulation"],["simulatenous","simultaneous"],["simulatenously","simultaneously"],["simultanaeous","simultaneous"],["simultaneos","simultaneous"],["simultaneosly","simultaneously"],["simultanious","simultaneous"],["simultaniously","simultaneously"],["simultanous","simultaneous"],["simultanously","simultaneously"],["simutaneously","simultaneously"],["sinature","signature"],["sincerley","sincerely"],["sincerly","sincerely"],["singaled","signaled"],["singals","signals"],["singature","signature"],["singatures","signatures"],["singelar","singular"],["singelarity","singularity"],["singelarly","singularly"],["singelton","singleton"],["singl","single"],["singlar","singular"],["single-threded","single-threaded"],["singlton","singleton"],["singltons","singletons"],["singluar","singular"],["singlular","singular"],["singlularly","singularly"],["singnal","signal"],["singnalled","signalled"],["singnals","signals"],["singolar","singular"],["singoolar","singular"],["singoolarity","singularity"],["singoolarly","singularly"],["singsog","singsong"],["singuarity","singularity"],["singuarl","singular"],["singulat","singular"],["singulaties","singularities"],["sinlge","single"],["sinlges","singles"],["sinply","simply"],["sintac","syntax"],["sintacks","syntax"],["sintacs","syntax"],["sintact","syntax"],["sintacts","syntax"],["sintak","syntax"],["sintaks","syntax"],["sintakt","syntax"],["sintakts","syntax"],["sintax","syntax"],["Sionist","Zionist"],["Sionists","Zionists"],["siply","simply"],["sircle","circle"],["sircles","circles"],["sircular","circular"],["sirect","direct"],["sirected","directed"],["sirecting","directing"],["sirection","direction"],["sirectional","directional"],["sirectionalities","directionalities"],["sirectionality","directionality"],["sirectionals","directionals"],["sirectionless","directionless"],["sirections","directions"],["sirective","directive"],["sirectives","directives"],["sirectly","directly"],["sirectness","directness"],["sirector","director"],["sirectories","directories"],["sirectors","directors"],["sirectory","directory"],["sirects","directs"],["sisnce","since"],["sistem","system"],["sistematically","systematically"],["sistematics","systematics"],["sistematies","systematies"],["sistematising","systematising"],["sistematizing","systematizing"],["sistematy","systematy"],["sistemed","systemed"],["sistemic","systemic"],["sistemically","systemically"],["sistemics","systemics"],["sistemist","systemist"],["sistemists","systemists"],["sistemize","systemize"],["sistemized","systemized"],["sistemizes","systemizes"],["sistemizing","systemizing"],["sistems","systems"],["sitation","situation"],["sitations","situations"],["sitaution","situation"],["sitautions","situations"],["sitck","stick"],["siteu","site"],["sitill","still"],["sitirring","stirring"],["sitirs","stirs"],["sitl","still"],["sitll","still"],["sitmuli","stimuli"],["situationnal","situational"],["situatuion","situation"],["situatuions","situations"],["situatution","situation"],["situatutions","situations"],["situbbornness","stubbornness"],["situdio","studio"],["situdios","studios"],["situration","situation"],["siturations","situations"],["situtaion","situation"],["situtaions","situations"],["situtation","situation"],["situtations","situations"],["siutable","suitable"],["siute","suite"],["sivible","visible"],["siwtch","switch"],["siwtched","switched"],["siwtching","switching"],["sizre","size"],["Skagerak","Skagerrak"],["skalar","scalar"],["skateing","skating"],["skecth","sketch"],["skecthes","sketches"],["skeep","skip"],["skelton","skeleton"],["skept","skipped"],["sketchs","sketches"],["skipd","skipped"],["skipe","skip"],["skiping","skipping"],["skippd","skipped"],["skippped","skipped"],["skippps","skips"],["slach","slash"],["slaches","slashes"],["slase","slash"],["slases","slashes"],["slashs","slashes"],["slaugterhouses","slaughterhouses"],["slect","select"],["slected","selected"],["slecting","selecting"],["slection","selection"],["sleect","select"],["sleeped","slept"],["sleepp","sleep"],["slicable","sliceable"],["slient","silent"],["sliently","silently"],["slighlty","slightly"],["slighly","slightly"],["slightl","slightly"],["slighty","slightly"],["slignt","slight"],["sligntly","slightly"],["sligth","slight"],["sligthly","slightly"],["sligtly","slightly"],["sliped","slipped"],["sliseshow","slideshow"],["slowy","slowly"],["sluggify","slugify"],["smae","same"],["smal","small"],["smaler","smaller"],["smallar","smaller"],["smalles","smallest"],["smaple","sample"],["smaples","samples"],["smealting","smelting"],["smething","something"],["smller","smaller"],["smoe","some"],["smoot","smooth"],["smooter","smoother"],["smoothign","smoothing"],["smooting","smoothing"],["smouth","smooth"],["smouthness","smoothness"],["smove","move"],["snaped","snapped"],["snaphot","snapshot"],["snaphsot","snapshot"],["snaping","snapping"],["snappng","snapping"],["snapsnot","snapshot"],["snapsnots","snapshots"],["sneeks","sneaks"],["snese","sneeze"],["snipet","snippet"],["snipets","snippets"],["snpashot","snapshot"],["snpashots","snapshots"],["snyc","sync"],["snytax","syntax"],["Soalris","Solaris"],["socail","social"],["socalism","socialism"],["socekts","sockets"],["socities","societies"],["soecialize","specialized"],["soem","some"],["soemthing","something"],["soemwhere","somewhere"],["sofisticated","sophisticated"],["softend","softened"],["softwares","software"],["softwre","software"],["sofware","software"],["sofwtare","software"],["sohw","show"],["soilders","soldiers"],["soiurce","source"],["soket","socket"],["sokets","sockets"],["solarmutx","solarmutex"],["solatary","solitary"],["solate","isolate"],["solated","isolated"],["solates","isolates"],["solating","isolating"],["soley","solely"],["solfed","solved"],["solfes","solves"],["solfing","solving"],["solfs","solves"],["soliders","soldiers"],["solification","solidification"],["soliliquy","soliloquy"],["soltion","solution"],["soltuion","solution"],["soltuions","solutions"],["soluable","soluble"],["solum","solemn"],["soluton","solution"],["solutons","solutions"],["solveable","solvable"],["solveing","solving"],["solwed","solved"],["som","some"],["someboby","somebody"],["somehing","something"],["somehting","something"],["somehwat","somewhat"],["somehwere","somewhere"],["somehwo","somehow"],["somelse","someone else"],["somemore","some more"],["somene","someone"],["somenone","someone"],["someon","someone"],["somethig","something"],["somethign","something"],["somethimes","sometimes"],["somethimg","something"],["somethiong","something"],["sometiems","sometimes"],["sometihing","something"],["sometihng","something"],["sometims","sometimes"],["sometines","sometimes"],["someting","something"],["sometinhg","something"],["sometring","something"],["sometrings","somethings"],["somewere","somewhere"],["somewher","somewhere"],["somewho","somehow"],["somme","some"],["somthign","something"],["somthing","something"],["somthingelse","somethingelse"],["somtimes","sometimes"],["somwhat","somewhat"],["somwhere","somewhere"],["somwho","somehow"],["somwhow","somehow"],["sonething","something"],["songlar","singular"],["sooaside","suicide"],["soodonim","pseudonym"],["soource","source"],["sophicated","sophisticated"],["sophisicated","sophisticated"],["sophisitcated","sophisticated"],["sophisticted","sophisticated"],["sophmore","sophomore"],["sorceror","sorcerer"],["sorkflow","workflow"],["sorrounding","surrounding"],["sortig","sorting"],["sortings","sorting"],["sortlst","sortlist"],["sortner","sorter"],["sortnr","sorter"],["soscket","socket"],["sotfware","software"],["souce","source"],["souces","sources"],["soucre","source"],["soucres","sources"],["soudn","sound"],["soudns","sounds"],["sould'nt","shouldn't"],["souldn't","shouldn't"],["soundard","soundcard"],["sountrack","soundtrack"],["sourc","source"],["sourcedrectory","sourcedirectory"],["sourcee","source"],["sourcees","sources"],["sourct","source"],["sourrounding","surrounding"],["sourth","south"],["sourthern","southern"],["southbrige","southbridge"],["souvenier","souvenir"],["souveniers","souvenirs"],["soveits","soviets"],["sover","solver"],["sovereignity","sovereignty"],["soverign","sovereign"],["soverignity","sovereignty"],["soverignty","sovereignty"],["sovle","solve"],["sovled","solved"],["sovren","sovereign"],["spacific","specific"],["spacification","specification"],["spacifications","specifications"],["spacifics","specifics"],["spacified","specified"],["spacifies","specifies"],["spaece","space"],["spaeced","spaced"],["spaeces","spaces"],["spaecing","spacing"],["spageti","spaghetti"],["spagetti","spaghetti"],["spagheti","spaghetti"],["spagnum","sphagnum"],["spainish","Spanish"],["spaning","spanning"],["sparate","separate"],["sparately","separately"],["spash","splash"],["spashed","splashed"],["spashes","splashes"],["spaw","spawn"],["spawed","spawned"],["spawing","spawning"],["spawining","spawning"],["spaws","spawns"],["spcae","space"],["spcaed","spaced"],["spcaes","spaces"],["spcaing","spacing"],["spcecified","specified"],["spcial","special"],["spcific","specific"],["spcification","specification"],["spcifications","specifications"],["spcified","specified"],["spcifies","specifies"],["spcify","specify"],["speaced","spaced"],["speach","speech"],["speacing","spacing"],["spearator","separator"],["spearators","separators"],["spec-complient","spec-compliant"],["specail","special"],["specefic","specific"],["specefically","specifically"],["speceficly","specifically"],["specefied","specified"],["specfic","specific"],["specfically","specifically"],["specfication","specification"],["specfications","specifications"],["specficication","specification"],["specficications","specifications"],["specficied","specified"],["specficies","specifies"],["specficy","specify"],["specficying","specifying"],["specfied","specified"],["specfield","specified"],["specfies","specifies"],["specfifies","specifies"],["specfify","specify"],["specfifying","specifying"],["specfiied","specified"],["specfy","specify"],["specfying","specifying"],["speciafied","specified"],["specialisaiton","specialisation"],["specialisaitons","specialisations"],["specializaiton","specialization"],["specializaitons","specializations"],["specialy","specially"],["specic","specific"],["specical","special"],["specication","specification"],["specidic","specific"],["specied","specified"],["speciefied","specified"],["specifactions","specifications"],["specifc","specific"],["specifcally","specifically"],["specifcation","specification"],["specifcations","specifications"],["specifcied","specified"],["specifclly","specifically"],["specifed","specified"],["specifes","specifies"],["speciffic","specific"],["speciffically","specifically"],["specifially","specifically"],["specificaiton","specification"],["specificaitons","specifications"],["specificallly","specifically"],["specificaly","specifically"],["specificated","specified"],["specificateion","specification"],["specificatin","specification"],["specificaton","specification"],["specificed","specified"],["specifices","specifies"],["specificially","specifically"],["specificiation","specification"],["specificiations","specifications"],["specificically","specifically"],["specificied","specified"],["specificl","specific"],["specificly","specifically"],["specifiction","specification"],["specifictions","specifications"],["specifid","specified"],["specifiec","specific"],["specifiecally","specifically"],["specifiecation","specification"],["specifiecations","specifications"],["specifiecd","specified"],["specifieced","specified"],["specifiecs","specifics"],["specifieed","specified"],["specifiees","specifies"],["specifig","specific"],["specifigation","specification"],["specifigations","specifications"],["specifing","specifying"],["specifities","specifics"],["specifiy","specify"],["specifiying","specifying"],["specifric","specific"],["specift","specify"],["specifyed","specified"],["specifyied","specified"],["specifyig","specifying"],["specifyinhg","specifying"],["speciic","specific"],["speciied","specified"],["speciifc","specific"],["speciifed","specified"],["specilisation","specialisation"],["specilisations","specialisations"],["specilization","specialization"],["specilizations","specializations"],["specilized","specialized"],["speciman","specimen"],["speciries","specifies"],["speciry","specify"],["specivied","specified"],["speciy","specify"],["speciyfing","specifying"],["speciyfying","specifying"],["speciying","specifying"],["spectauclar","spectacular"],["spectaulars","spectaculars"],["spectification","specification"],["spectifications","specifications"],["spectified","specified"],["spectifies","specifies"],["spectify","specify"],["spectifying","specifying"],["spectular","spectacular"],["spectularly","spectacularly"],["spectum","spectrum"],["specturm","spectrum"],["specualtive","speculative"],["specufies","specifies"],["specufy","specify"],["spedific","specific"],["spedified","specified"],["spedify","specify"],["speeak","speak"],["speeaking","speaking"],["speeling","spelling"],["speelling","spelling"],["speep","sleep"],["speep-up","speed-up"],["speeped","sped"],["speeping","sleeping"],["spefcifiable","specifiable"],["spefcific","specific"],["spefcifically","specifically"],["spefcification","specification"],["spefcifications","specifications"],["spefcifics","specifics"],["spefcifieid","specified"],["spefcifieir","specifier"],["spefcifieirs","specifiers"],["spefcifieis","specifies"],["spefcifiy","specify"],["spefcifiying","specifying"],["spefeid","specified"],["spefeir","specifier"],["spefeirs","specifiers"],["spefeis","specifies"],["spefiable","specifiable"],["spefial","special"],["spefic","specific"],["speficable","specifiable"],["spefically","specifically"],["spefication","specification"],["spefications","specifications"],["speficed","specified"],["speficeid","specified"],["speficeir","specifier"],["speficeirs","specifiers"],["speficeis","specifies"],["speficer","specifier"],["speficers","specifiers"],["spefices","specifies"],["speficiable","specifiable"],["speficiallally","specifically"],["speficiallation","specification"],["speficiallations","specifications"],["speficialleid","specified"],["speficialleir","specifier"],["speficialleirs","specifiers"],["speficialleis","specifies"],["speficialliable","specifiable"],["speficiallic","specific"],["speficiallically","specifically"],["speficiallication","specification"],["speficiallications","specifications"],["speficiallics","specifics"],["speficiallied","specified"],["speficiallier","specifier"],["speficialliers","specifiers"],["speficiallies","specifies"],["speficiallifed","specified"],["speficiallifer","specifier"],["speficiallifers","specifiers"],["speficiallifes","specifies"],["speficially","specifically"],["speficiation","specification"],["speficiations","specifications"],["speficic","specific"],["speficically","specifically"],["speficication","specification"],["speficications","specifications"],["speficics","specifics"],["speficied","specified"],["speficieid","specified"],["speficieir","specifier"],["speficieirs","specifiers"],["speficieis","specifies"],["speficier","specifier"],["speficiers","specifiers"],["speficies","specifies"],["speficifally","specifically"],["speficifation","specification"],["speficifations","specifications"],["speficifc","specific"],["speficifcally","specifically"],["speficifcation","specification"],["speficifcations","specifications"],["speficifcs","specifics"],["speficifed","specified"],["speficifeid","specified"],["speficifeir","specifier"],["speficifeirs","specifiers"],["speficifeis","specifies"],["speficifer","specifier"],["speficifers","specifiers"],["speficifes","specifies"],["speficifiable","specifiable"],["speficific","specific"],["speficifically","specifically"],["speficification","specification"],["speficifications","specifications"],["speficifics","specifics"],["speficified","specified"],["speficifier","specifier"],["speficifiers","specifiers"],["speficifies","specifies"],["speficififed","specified"],["speficififer","specifier"],["speficififers","specifiers"],["speficififes","specifies"],["speficify","specify"],["speficifying","specifying"],["speficiiable","specifiable"],["speficiic","specific"],["speficiically","specifically"],["speficiication","specification"],["speficiications","specifications"],["speficiics","specifics"],["speficiied","specified"],["speficiier","specifier"],["speficiiers","specifiers"],["speficiies","specifies"],["speficiifed","specified"],["speficiifer","specifier"],["speficiifers","specifiers"],["speficiifes","specifies"],["speficillally","specifically"],["speficillation","specification"],["speficillations","specifications"],["speficilleid","specified"],["speficilleir","specifier"],["speficilleirs","specifiers"],["speficilleis","specifies"],["speficilliable","specifiable"],["speficillic","specific"],["speficillically","specifically"],["speficillication","specification"],["speficillications","specifications"],["speficillics","specifics"],["speficillied","specified"],["speficillier","specifier"],["speficilliers","specifiers"],["speficillies","specifies"],["speficillifed","specified"],["speficillifer","specifier"],["speficillifers","specifiers"],["speficillifes","specifies"],["speficilly","specifically"],["speficitally","specifically"],["speficitation","specification"],["speficitations","specifications"],["speficiteid","specified"],["speficiteir","specifier"],["speficiteirs","specifiers"],["speficiteis","specifies"],["speficitiable","specifiable"],["speficitic","specific"],["speficitically","specifically"],["speficitication","specification"],["speficitications","specifications"],["speficitics","specifics"],["speficitied","specified"],["speficitier","specifier"],["speficitiers","specifiers"],["speficities","specificities"],["speficitifed","specified"],["speficitifer","specifier"],["speficitifers","specifiers"],["speficitifes","specifies"],["speficity","specificity"],["speficiy","specify"],["speficiying","specifying"],["spefics","specifics"],["speficy","specify"],["speficying","specifying"],["spefied","specified"],["spefier","specifier"],["spefiers","specifiers"],["spefies","specifies"],["spefifally","specifically"],["spefifation","specification"],["spefifations","specifications"],["spefifed","specified"],["spefifeid","specified"],["spefifeir","specifier"],["spefifeirs","specifiers"],["spefifeis","specifies"],["spefifer","specifier"],["spefifers","specifiers"],["spefifes","specifies"],["spefifiable","specifiable"],["spefific","specific"],["spefifically","specifically"],["spefification","specification"],["spefifications","specifications"],["spefifics","specifics"],["spefified","specified"],["spefifier","specifier"],["spefifiers","specifiers"],["spefifies","specifies"],["spefififed","specified"],["spefififer","specifier"],["spefififers","specifiers"],["spefififes","specifies"],["spefify","specify"],["spefifying","specifying"],["spefiiable","specifiable"],["spefiic","specific"],["spefiically","specifically"],["spefiication","specification"],["spefiications","specifications"],["spefiics","specifics"],["spefiied","specified"],["spefiier","specifier"],["spefiiers","specifiers"],["spefiies","specifies"],["spefiifally","specifically"],["spefiifation","specification"],["spefiifations","specifications"],["spefiifeid","specified"],["spefiifeir","specifier"],["spefiifeirs","specifiers"],["spefiifeis","specifies"],["spefiifiable","specifiable"],["spefiific","specific"],["spefiifically","specifically"],["spefiification","specification"],["spefiifications","specifications"],["spefiifics","specifics"],["spefiified","specified"],["spefiifier","specifier"],["spefiifiers","specifiers"],["spefiifies","specifies"],["spefiififed","specified"],["spefiififer","specifier"],["spefiififers","specifiers"],["spefiififes","specifies"],["spefiify","specify"],["spefiifying","specifying"],["spefixally","specifically"],["spefixation","specification"],["spefixations","specifications"],["spefixeid","specified"],["spefixeir","specifier"],["spefixeirs","specifiers"],["spefixeis","specifies"],["spefixiable","specifiable"],["spefixic","specific"],["spefixically","specifically"],["spefixication","specification"],["spefixications","specifications"],["spefixics","specifics"],["spefixied","specified"],["spefixier","specifier"],["spefixiers","specifiers"],["spefixies","specifies"],["spefixifed","specified"],["spefixifer","specifier"],["spefixifers","specifiers"],["spefixifes","specifies"],["spefixy","specify"],["spefixying","specifying"],["spefiy","specify"],["spefiying","specifying"],["spefy","specify"],["spefying","specifying"],["speherical","spherical"],["speical","special"],["speices","species"],["speicfied","specified"],["speicific","specific"],["speicified","specified"],["speicify","specify"],["speling","spelling"],["spellshecking","spellchecking"],["spendour","splendour"],["speparate","separate"],["speparated","separated"],["speparating","separating"],["speparation","separation"],["speparator","separator"],["spepc","spec"],["speperatd","separated"],["speperate","separate"],["speperateing","separating"],["speperater","separator"],["speperates","separates"],["speperating","separating"],["speperator","separator"],["speperats","separates"],["sperate","separate"],["sperately","separately"],["sperhical","spherical"],["spermatozoan","spermatozoon"],["speshal","special"],["speshel","special"],["spesialisation","specialization"],["spesific","specific"],["spesifical","specific"],["spesifically","specifically"],["spesificaly","specifically"],["spesifics","specifics"],["spesified","specified"],["spesifities","specifics"],["spesify","specify"],["spezialisation","specialization"],["spezific","specific"],["spezified","specified"],["spezify","specify"],["spicific","specific"],["spicified","specified"],["spicify","specify"],["spiltting","splitting"],["spindel","spindle"],["spindels","spindles"],["spinlcok","spinlock"],["spinock","spinlock"],["spligs","splits"],["spliiter","splitter"],["spliitting","splitting"],["spliting","splitting"],["splitted","split"],["splittng","splitting"],["spllitting","splitting"],["spoace","space"],["spoaced","spaced"],["spoaces","spaces"],["spoacing","spacing"],["sponser","sponsor"],["sponsered","sponsored"],["sponsers","sponsors"],["sponsership","sponsorship"],["spontanous","spontaneous"],["sponzored","sponsored"],["spoonfulls","spoonfuls"],["sporatic","sporadic"],["sporious","spurious"],["sppeches","speeches"],["spport","support"],["spported","supported"],["spporting","supporting"],["spports","supports"],["spreaded","spread"],["spreadhseet","spreadsheet"],["spreadhseets","spreadsheets"],["spreadsheat","spreadsheet"],["spreadsheats","spreadsheets"],["spreasheet","spreadsheet"],["spreasheets","spreadsheets"],["sprech","speech"],["sprecial","special"],["sprecialized","specialized"],["sprecially","specially"],["spred","spread"],["spredsheet","spreadsheet"],["spreedsheet","spreadsheet"],["sprinf","sprintf"],["spririous","spurious"],["spriritual","spiritual"],["spritual","spiritual"],["sproon","spoon"],["spsace","space"],["spsaced","spaced"],["spsaces","spaces"],["spsacing","spacing"],["sptintf","sprintf"],["spurios","spurious"],["spurrious","spurious"],["sqare","square"],["sqared","squared"],["sqares","squares"],["sqash","squash"],["sqashed","squashed"],["sqashing","squashing"],["sqaure","square"],["sqaured","squared"],["sqaures","squares"],["sqeuence","sequence"],["squashgin","squashing"],["squence","sequence"],["squirel","squirrel"],["squirl","squirrel"],["squrared","squared"],["srcipt","script"],["srcipts","scripts"],["sreampropinfo","streampropinfo"],["sreenshot","screenshot"],["sreenshots","screenshots"],["sreturns","returns"],["srikeout","strikeout"],["sring","string"],["srings","strings"],["srink","shrink"],["srinkd","shrunk"],["srinked","shrunk"],["srinking","shrinking"],["sript","script"],["sripts","scripts"],["srollbar","scrollbar"],["srouce","source"],["srtifact","artifact"],["srtifacts","artifacts"],["srtings","strings"],["srtructure","structure"],["srttings","settings"],["sructure","structure"],["sructures","structures"],["srunk","shrunk"],["srunken","shrunken"],["srunkn","shrunken"],["ssame","same"],["ssee","see"],["ssoaiating","associating"],["ssome","some"],["stabalization","stabilization"],["stabilitation","stabilization"],["stabilite","stabilize"],["stabilited","stabilized"],["stabilites","stabilizes"],["stabiliting","stabilizing"],["stabillity","stability"],["stabilty","stability"],["stablility","stability"],["stablilization","stabilization"],["stablize","stabilize"],["stach","stack"],["stacionary","stationary"],["stackk","stack"],["stadnard","standard"],["stadnardisation","standardisation"],["stadnardised","standardised"],["stadnardising","standardising"],["stadnardization","standardization"],["stadnardized","standardized"],["stadnardizing","standardizing"],["stadnards","standards"],["stae","state"],["staement","statement"],["staically","statically"],["stainlees","stainless"],["staion","station"],["staions","stations"],["staition","station"],["staitions","stations"],["stalagtite","stalactite"],["standar","standard"],["standarad","standard"],["standard-complient","standard-compliant"],["standardss","standards"],["standarisation","standardisation"],["standarise","standardise"],["standarised","standardised"],["standarises","standardises"],["standarising","standardising"],["standarization","standardization"],["standarize","standardize"],["standarized","standardized"],["standarizes","standardizes"],["standarizing","standardizing"],["standart","standard"],["standartd","standard"],["standartds","standards"],["standartisation","standardisation"],["standartisator","standardiser"],["standartised","standardised"],["standartization","standardization"],["standartizator","standardizer"],["standartized","standardized"],["standarts","standards"],["standatd","standard"],["standrat","standard"],["standrats","standards"],["standtard","standard"],["stange","strange"],["stanp","stamp"],["staration","starvation"],["stard","start"],["stardard","standard"],["stardardize","standardize"],["stardardized","standardized"],["stardardizes","standardizes"],["stardardizing","standardizing"],["stardards","standards"],["staright","straight"],["startd","started"],["startegic","strategic"],["startegies","strategies"],["startegy","strategy"],["startet","started"],["startign","starting"],["startin","starting"],["startlisteneing","startlistening"],["startnig","starting"],["startparanthesis","startparentheses"],["startted","started"],["startting","starting"],["starup","startup"],["starups","startups"],["statamenet","statement"],["statamenets","statements"],["stategies","strategies"],["stategise","strategise"],["stategised","strategised"],["stategize","strategize"],["stategized","strategized"],["stategy","strategy"],["stateman","statesman"],["statemanet","statement"],["statememts","statements"],["statemen","statement"],["statemenet","statement"],["statemenets","statements"],["statemet","statement"],["statemnts","statements"],["stati","statuses"],["staticly","statically"],["statictic","statistic"],["statictics","statistics"],["statisfied","satisfied"],["statisfies","satisfies"],["statisfy","satisfy"],["statisfying","satisfying"],["statisitics","statistics"],["statistices","statistics"],["statitic","statistic"],["statitics","statistics"],["statmenet","statement"],["statmenmt","statement"],["statment","statement"],["statments","statements"],["statrt","start"],["stattistic","statistic"],["statubar","statusbar"],["statuline","statusline"],["statulines","statuslines"],["statup","startup"],["staturday","Saturday"],["statuss","status"],["statusses","statuses"],["statustics","statistics"],["staulk","stalk"],["stauration","saturation"],["staus","status"],["stawberries","strawberries"],["stawberry","strawberry"],["stawk","stalk"],["stcokbrush","stockbrush"],["stdanard","standard"],["stdanards","standards"],["stength","strength"],["steram","stream"],["steramed","streamed"],["steramer","streamer"],["steraming","streaming"],["sterams","streams"],["sterio","stereo"],["steriods","steroids"],["sterotype","stereotype"],["sterotypes","stereotypes"],["stickness","stickiness"],["stickyness","stickiness"],["stiffneing","stiffening"],["stiky","sticky"],["stil","still"],["stilus","stylus"],["stingent","stringent"],["stipped","stripped"],["stiring","stirring"],["stirng","string"],["stirngs","strings"],["stirr","stir"],["stirrs","stirs"],["stivk","stick"],["stivks","sticks"],["stle","style"],["stlye","style"],["stlyes","styles"],["stnad","stand"],["stndard","standard"],["stoage","storage"],["stoages","storages"],["stocahstic","stochastic"],["stocastic","stochastic"],["stoer","store"],["stoers","stores"],["stomache","stomach"],["stompted","stomped"],["stong","strong"],["stoped","stopped"],["stoping","stopping"],["stopp","stop"],["stoppped","stopped"],["stoppping","stopping"],["stopps","stops"],["stopry","story"],["storag","storage"],["storeable","storable"],["storeage","storage"],["stoream","stream"],["storeble","storable"],["storeing","storing"],["storge","storage"],["storise","stories"],["stornegst","strongest"],["stoyr","story"],["stpo","stop"],["stradegies","strategies"],["stradegy","strategy"],["stragegy","strategy"],["strageties","strategies"],["stragety","strategy"],["straigh-forward","straightforward"],["straighforward","straightforward"],["straightfoward","straightforward"],["straigt","straight"],["straigth","straight"],["straines","strains"],["strangness","strangeness"],["strart","start"],["strarted","started"],["strarting","starting"],["strarts","starts"],["stratagically","strategically"],["strcture","structure"],["strctures","structures"],["strcutre","structure"],["strcutural","structural"],["strcuture","structure"],["strcutures","structures"],["streamm","stream"],["streammed","streamed"],["streamming","streaming"],["streatched","stretched"],["strech","stretch"],["streched","stretched"],["streches","stretches"],["streching","stretching"],["strectch","stretch"],["strecth","stretch"],["strecthed","stretched"],["strecthes","stretches"],["strecthing","stretching"],["streem","stream"],["streemlining","streamlining"],["stregth","strength"],["streightish","straightish"],["streightly","straightly"],["streightness","straightness"],["streigtish","straightish"],["streigtly","straightly"],["streigtness","straightness"],["strem","stream"],["strema","stream"],["strengh","strength"],["strenghen","strengthen"],["strenghened","strengthened"],["strenghening","strengthening"],["strenght","strength"],["strenghten","strengthen"],["strenghtened","strengthened"],["strenghtening","strengthening"],["strenghts","strengths"],["strengtened","strengthened"],["strenous","strenuous"],["strentgh","strength"],["strenth","strength"],["strerrror","strerror"],["striaght","straight"],["striaghten","straighten"],["striaghtens","straightens"],["striaghtforward","straightforward"],["striaghts","straights"],["striclty","strictly"],["stricly","strictly"],["stricteir","stricter"],["strictier","stricter"],["strictiest","strictest"],["strictist","strictest"],["strig","string"],["strigification","stringification"],["strigifying","stringifying"],["striing","string"],["striings","strings"],["strikely","strikingly"],["stringifed","stringified"],["strinsg","strings"],["strippen","stripped"],["stript","stripped"],["strirngification","stringification"],["strnad","strand"],["strng","string"],["stroage","storage"],["stroe","store"],["stroing","storing"],["stronlgy","strongly"],["stronly","strongly"],["strore","store"],["strored","stored"],["strores","stores"],["stroring","storing"],["strotage","storage"],["stroyboard","storyboard"],["struc","struct"],["strucrure","structure"],["strucrured","structured"],["strucrures","structures"],["structed","structured"],["structer","structure"],["structere","structure"],["structered","structured"],["structeres","structures"],["structetr","structure"],["structire","structure"],["structre","structure"],["structred","structured"],["structres","structures"],["structrual","structural"],["structrue","structure"],["structrued","structured"],["structrues","structures"],["structual","structural"],["structue","structure"],["structued","structured"],["structues","structures"],["structur","structure"],["structurs","structures"],["strucur","structure"],["strucure","structure"],["strucured","structured"],["strucures","structures"],["strucuring","structuring"],["strucurs","structures"],["strucutre","structure"],["strucutred","structured"],["strucutres","structures"],["strucuture","structure"],["struggel","struggle"],["struggeled","struggled"],["struggeling","struggling"],["struggels","struggles"],["struttural","structural"],["strutture","structure"],["struture","structure"],["ststion","station"],["ststionary","stationary"],["ststioned","stationed"],["ststionery","stationery"],["ststions","stations"],["ststr","strstr"],["stteting","setting"],["sttetings","settings"],["stubborness","stubbornness"],["stucked","stuck"],["stuckt","stuck"],["stuct","struct"],["stucts","structs"],["stucture","structure"],["stuctured","structured"],["stuctures","structures"],["studdy","study"],["studetn","student"],["studetns","students"],["studing","studying"],["studoi","studio"],["studois","studios"],["stuggling","struggling"],["stuido","studio"],["stuidos","studios"],["stuill","still"],["stummac","stomach"],["sturctural","structural"],["sturcture","structure"],["sturctures","structures"],["sturture","structure"],["sturtured","structured"],["sturtures","structures"],["sturucture","structure"],["stutdown","shutdown"],["stutus","status"],["styhe","style"],["styilistic","stylistic"],["stylessheets","stylesheets"],["sub-lcuase","sub-clause"],["subbtle","subtle"],["subcatagories","subcategories"],["subcatagory","subcategory"],["subcirucit","subcircuit"],["subcommannd","subcommand"],["subcommnad","subcommand"],["subconchus","subconscious"],["subconsiously","subconsciously"],["subcribe","subscribe"],["subcribed","subscribed"],["subcribes","subscribes"],["subcribing","subscribing"],["subdirectoires","subdirectories"],["subdirectorys","subdirectories"],["subdirecty","subdirectory"],["subdivisio","subdivision"],["subdivisiond","subdivisioned"],["subdoamin","subdomain"],["subdoamins","subdomains"],["subelemet","subelement"],["subelemets","subelements"],["subexperesion","subexpression"],["subexperesions","subexpressions"],["subexperession","subexpression"],["subexperessions","subexpressions"],["subexpersion","subexpression"],["subexpersions","subexpressions"],["subexperssion","subexpression"],["subexperssions","subexpressions"],["subexpession","subexpression"],["subexpessions","subexpressions"],["subexpresssion","subexpression"],["subexpresssions","subexpressions"],["subfolfer","subfolder"],["subfolfers","subfolders"],["subfromat","subformat"],["subfromats","subformats"],["subfroms","subforms"],["subgregion","subregion"],["subirectory","subdirectory"],["subjec","subject"],["subjet","subject"],["subjudgation","subjugation"],["sublass","subclass"],["sublasse","subclasse"],["sublasses","subclasses"],["sublcasses","subclasses"],["sublcuase","subclause"],["suble","subtle"],["submachne","submachine"],["submision","submission"],["submisson","submission"],["submited","submitted"],["submition","submission"],["submitions","submissions"],["submittted","submitted"],["submoule","submodule"],["submti","submit"],["subnegatiotiation","subnegotiation"],["subnegatiotiations","subnegotiations"],["subnegoatiation","subnegotiation"],["subnegoatiations","subnegotiations"],["subnegoation","subnegotiation"],["subnegoations","subnegotiations"],["subnegociation","subnegotiation"],["subnegociations","subnegotiations"],["subnegogtiation","subnegotiation"],["subnegogtiations","subnegotiations"],["subnegoitation","subnegotiation"],["subnegoitations","subnegotiations"],["subnegoptionsotiation","subnegotiation"],["subnegoptionsotiations","subnegotiations"],["subnegosiation","subnegotiation"],["subnegosiations","subnegotiations"],["subnegotaiation","subnegotiation"],["subnegotaiations","subnegotiations"],["subnegotaition","subnegotiation"],["subnegotaitions","subnegotiations"],["subnegotatiation","subnegotiation"],["subnegotatiations","subnegotiations"],["subnegotation","subnegotiation"],["subnegotations","subnegotiations"],["subnegothiation","subnegotiation"],["subnegothiations","subnegotiations"],["subnegotication","subnegotiation"],["subnegotications","subnegotiations"],["subnegotioation","subnegotiation"],["subnegotioations","subnegotiations"],["subnegotion","subnegotiation"],["subnegotionation","subnegotiation"],["subnegotionations","subnegotiations"],["subnegotions","subnegotiations"],["subnegotiotation","subnegotiation"],["subnegotiotations","subnegotiations"],["subnegotiotion","subnegotiation"],["subnegotiotions","subnegotiations"],["subnegotitaion","subnegotiation"],["subnegotitaions","subnegotiations"],["subnegotitation","subnegotiation"],["subnegotitations","subnegotiations"],["subnegotition","subnegotiation"],["subnegotitions","subnegotiations"],["subnegoziation","subnegotiation"],["subnegoziations","subnegotiations"],["subobjecs","subobjects"],["suborutine","subroutine"],["suborutines","subroutines"],["suboutine","subroutine"],["subpackge","subpackage"],["subpackges","subpackages"],["subpecies","subspecies"],["subporgram","subprogram"],["subproccese","subprocess"],["subpsace","subspace"],["subquue","subqueue"],["subract","subtract"],["subracted","subtracted"],["subraction","subtraction"],["subree","subtree"],["subresoure","subresource"],["subresoures","subresources"],["subroutie","subroutine"],["subrouties","subroutines"],["subsceptible","susceptible"],["subscibe","subscribe"],["subscibed","subscribed"],["subsciber","subscriber"],["subscibers","subscribers"],["subscirbe","subscribe"],["subscirbed","subscribed"],["subscirber","subscriber"],["subscirbers","subscribers"],["subscirbes","subscribes"],["subscirbing","subscribing"],["subscirpt","subscript"],["subscirption","subscription"],["subscirptions","subscriptions"],["subscritpion","subscription"],["subscritpions","subscriptions"],["subscritpiton","subscription"],["subscritpitons","subscriptions"],["subscritpt","subscript"],["subscritption","subscription"],["subscritptions","subscriptions"],["subsctitution","substitution"],["subsecrion","subsection"],["subsedent","subsequent"],["subseqence","subsequence"],["subseqent","subsequent"],["subsequest","subsequent"],["subsequnce","subsequence"],["subsequnt","subsequent"],["subsequntly","subsequently"],["subseuqent","subsequent"],["subshystem","subsystem"],["subshystems","subsystems"],["subsidary","subsidiary"],["subsiduary","subsidiary"],["subsiquent","subsequent"],["subsiquently","subsequently"],["subsituent","substituent"],["subsituents","substituents"],["subsitutable","substitutable"],["subsitutatble","substitutable"],["subsitute","substitute"],["subsituted","substituted"],["subsitutes","substitutes"],["subsituting","substituting"],["subsitution","substitution"],["subsitutions","substitutions"],["subsitutuent","substituent"],["subsitutuents","substituents"],["subsitutute","substitute"],["subsitututed","substituted"],["subsitututes","substitutes"],["subsitututing","substituting"],["subsitutution","substitution"],["subsquent","subsequent"],["subsquently","subsequently"],["subsriber","subscriber"],["substace","substance"],["substact","subtract"],["substaintially","substantially"],["substancial","substantial"],["substantialy","substantially"],["substantivly","substantively"],["substask","subtask"],["substasks","subtasks"],["substatial","substantial"],["substential","substantial"],["substentially","substantially"],["substition","substitution"],["substitions","substitutions"],["substitition","substitution"],["substititions","substitutions"],["substituation","substitution"],["substituations","substitutions"],["substitude","substitute"],["substituded","substituted"],["substitudes","substitutes"],["substituding","substituting"],["substitue","substitute"],["substitues","substitutes"],["substituing","substituting"],["substituion","substitution"],["substituions","substitutions"],["substiution","substitution"],["substract","subtract"],["substracted","subtracted"],["substracting","subtracting"],["substraction","subtraction"],["substracts","subtracts"],["substucture","substructure"],["substuctures","substructures"],["substutite","substitute"],["subsysthem","subsystem"],["subsysthems","subsystems"],["subsystyem","subsystem"],["subsystyems","subsystems"],["subsysytem","subsystem"],["subsysytems","subsystems"],["subsytem","subsystem"],["subsytems","subsystems"],["subtabels","subtables"],["subtak","subtask"],["subtances","substances"],["subterranian","subterranean"],["subtitute","substitute"],["subtituted","substituted"],["subtitutes","substitutes"],["subtituting","substituting"],["subtitution","substitution"],["subtitutions","substitutions"],["subtrafuge","subterfuge"],["subtrate","substrate"],["subtrates","substrates"],["subtring","substring"],["subtrings","substrings"],["subtsitutable","substitutable"],["subtsitutatble","substitutable"],["suburburban","suburban"],["subystem","subsystem"],["subystems","subsystems"],["succceeded","succeeded"],["succcess","success"],["succcesses","successes"],["succcessful","successful"],["succcessfully","successfully"],["succcessor","successor"],["succcessors","successors"],["succcessul","successful"],["succcessully","successfully"],["succecful","successful"],["succed","succeed"],["succedd","succeed"],["succedded","succeeded"],["succedding","succeeding"],["succedds","succeeds"],["succede","succeed"],["succeded","succeeded"],["succedes","succeeds"],["succedfully","successfully"],["succeding","succeeding"],["succeds","succeeds"],["succee","succeed"],["succeedde","succeeded"],["succeedes","succeeds"],["succeess","success"],["succeesses","successes"],["succes","success"],["succesful","successful"],["succesfull","successful"],["succesfully","successfully"],["succesfuly","successfully"],["succesion","succession"],["succesive","successive"],["succesor","successor"],["succesors","successors"],["successfui","successful"],["successfule","successful"],["successfull","successful"],["successfullies","successfully"],["successfullly","successfully"],["successfulln","successful"],["successfullness","successfulness"],["successfullt","successfully"],["successfuly","successfully"],["successing","successive"],["successs","success"],["successsfully","successfully"],["successsion","succession"],["successul","successful"],["successully","successfully"],["succesully","successfully"],["succicently","sufficiently"],["succint","succinct"],["succseeded","succeeded"],["succsess","success"],["succsessfull","successful"],["succsessive","successive"],["succssful","successful"],["succussfully","successfully"],["suceed","succeed"],["suceeded","succeeded"],["suceeding","succeeding"],["suceeds","succeeds"],["suceessfully","successfully"],["suces","success"],["suceses","successes"],["sucesful","successful"],["sucesfull","successful"],["sucesfully","successfully"],["sucesfuly","successfully"],["sucesion","succession"],["sucesive","successive"],["sucess","success"],["sucesscient","sufficient"],["sucessed","succeeded"],["sucessefully","successfully"],["sucesses","successes"],["sucessess","success"],["sucessflly","successfully"],["sucessfually","successfully"],["sucessfukk","successful"],["sucessful","successful"],["sucessfull","successful"],["sucessfully","successfully"],["sucessfuly","successfully"],["sucession","succession"],["sucessiv","successive"],["sucessive","successive"],["sucessively","successively"],["sucessor","successor"],["sucessors","successors"],["sucessot","successor"],["sucesss","success"],["sucessses","successes"],["sucesssful","successful"],["sucesssfull","successful"],["sucesssfully","successfully"],["sucesssfuly","successfully"],["sucessufll","successful"],["sucessuflly","successfully"],["sucessully","successfully"],["sucide","suicide"],["sucidial","suicidal"],["sucome","succumb"],["sucsede","succeed"],["sucsess","success"],["sudent","student"],["sudents","students"],["sudmobule","submodule"],["sudmobules","submodules"],["sueful","useful"],["sueprset","superset"],["suface","surface"],["sufaces","surfaces"],["sufface","surface"],["suffaces","surfaces"],["suffciency","sufficiency"],["suffcient","sufficient"],["suffciently","sufficiently"],["sufferage","suffrage"],["sufferred","suffered"],["sufferring","suffering"],["sufficate","suffocate"],["sufficated","suffocated"],["sufficates","suffocates"],["sufficating","suffocating"],["suffication","suffocation"],["sufficency","sufficiency"],["sufficent","sufficient"],["sufficently","sufficiently"],["sufficiancy","sufficiency"],["sufficiant","sufficient"],["sufficiantly","sufficiently"],["sufficiennt","sufficient"],["sufficienntly","sufficiently"],["suffiency","sufficiency"],["suffient","sufficient"],["suffiently","sufficiently"],["suffisticated","sophisticated"],["suficate","suffocate"],["suficated","suffocated"],["suficates","suffocates"],["suficating","suffocating"],["sufication","suffocation"],["suficcient","sufficient"],["suficient","sufficient"],["suficiently","sufficiently"],["sufocate","suffocate"],["sufocated","suffocated"],["sufocates","suffocates"],["sufocating","suffocating"],["sufocation","suffocation"],["sugested","suggested"],["sugestion","suggestion"],["sugestions","suggestions"],["sugests","suggests"],["suggesst","suggest"],["suggessted","suggested"],["suggessting","suggesting"],["suggesstion","suggestion"],["suggesstions","suggestions"],["suggessts","suggests"],["suggestes","suggests"],["suggestin","suggestion"],["suggestins","suggestions"],["suggestsed","suggested"],["suggestted","suggested"],["suggesttion","suggestion"],["suggesttions","suggestions"],["sugget","suggest"],["suggeted","suggested"],["suggetsed","suggested"],["suggetsing","suggesting"],["suggetsion","suggestion"],["sugggest","suggest"],["sugggested","suggested"],["sugggesting","suggesting"],["sugggestion","suggestion"],["sugggestions","suggestions"],["sugguest","suggest"],["sugguested","suggested"],["sugguesting","suggesting"],["sugguestion","suggestion"],["sugguestions","suggestions"],["suh","such"],["suiete","suite"],["suiteable","suitable"],["sumamry","summary"],["sumarize","summarize"],["sumary","summary"],["sumbitted","submitted"],["sumed-up","summed-up"],["summarizen","summarize"],["summay","summary"],["summerised","summarised"],["summerized","summarized"],["summersalt","somersault"],["summmaries","summaries"],["summmarisation","summarisation"],["summmarised","summarised"],["summmarization","summarization"],["summmarized","summarized"],["summmary","summary"],["sumodules","submodules"],["sumulate","simulate"],["sumulated","simulated"],["sumulates","simulates"],["sumulation","simulation"],["sumulations","simulations"],["sundey","Sunday"],["sunglases","sunglasses"],["sunsday","Sunday"],["suntask","subtask"],["suop","soup"],["supeblock","superblock"],["supeena","subpoena"],["superbock","superblock"],["superbocks","superblocks"],["supercalifragilisticexpialidoceous","supercalifragilisticexpialidocious"],["supercede","supersede"],["superceded","superseded"],["supercedes","supersedes"],["superceding","superseding"],["superceed","supersede"],["superceeded","superseded"],["superflouous","superfluous"],["superflous","superfluous"],["superflouse","superfluous"],["superfluious","superfluous"],["superfluos","superfluous"],["superfulous","superfluous"],["superintendant","superintendent"],["superopeator","superoperator"],["supersed","superseded"],["superseedd","superseded"],["superseede","supersede"],["superseeded","superseded"],["suphisticated","sophisticated"],["suplant","supplant"],["suplanted","supplanted"],["suplanting","supplanting"],["suplants","supplants"],["suplementary","supplementary"],["suplied","supplied"],["suplimented","supplemented"],["supllies","supplies"],["suport","support"],["suported","supported"],["suporting","supporting"],["suports","supports"],["suportted","supported"],["suposable","supposable"],["supose","suppose"],["suposeable","supposable"],["suposed","supposed"],["suposedly","supposedly"],["suposes","supposes"],["suposing","supposing"],["suposse","suppose"],["suppied","supplied"],["suppier","supplier"],["suppies","supplies"],["supplamented","supplemented"],["suppliad","supplied"],["suppliementing","supplementing"],["suppliment","supplement"],["supplyed","supplied"],["suppoed","supposed"],["suppoert","support"],["suppoort","support"],["suppoorts","supports"],["suppopose","suppose"],["suppoprt","support"],["suppoprted","supported"],["suppor","support"],["suppored","supported"],["supporession","suppression"],["supporing","supporting"],["supportd","supported"],["supportes","supports"],["supportin","supporting"],["supportt","support"],["supportted","supported"],["supportting","supporting"],["supportts","supports"],["supposeable","supposable"],["supposeded","supposed"],["supposedely","supposedly"],["supposeds","supposed"],["supposedy","supposedly"],["supposingly","supposedly"],["suppossed","supposed"],["suppoted","supported"],["suppplied","supplied"],["suppport","support"],["suppported","supported"],["suppporting","supporting"],["suppports","supports"],["suppres","suppress"],["suppresed","suppressed"],["suppresion","suppression"],["suppresions","suppressions"],["suppressingd","suppressing"],["supprot","support"],["supproted","supported"],["supproter","supporter"],["supproters","supporters"],["supproting","supporting"],["supprots","supports"],["supprt","support"],["supprted","supported"],["suppurt","support"],["suppurted","supported"],["suppurter","supporter"],["suppurters","supporters"],["suppurting","supporting"],["suppurtive","supportive"],["suppurts","supports"],["suppy","supply"],["suppying","supplying"],["suprassing","surpassing"],["supres","suppress"],["supresed","suppressed"],["supreses","suppresses"],["supresing","suppressing"],["supresion","suppression"],["supress","suppress"],["supressed","suppressed"],["supresses","suppresses"],["supressible","suppressible"],["supressing","suppressing"],["supression","suppression"],["supressions","suppressions"],["supressor","suppressor"],["supressors","suppressors"],["supresssion","suppression"],["suprious","spurious"],["suprise","surprise"],["suprised","surprised"],["suprises","surprises"],["suprising","surprising"],["suprisingly","surprisingly"],["suprize","surprise"],["suprized","surprised"],["suprizing","surprising"],["suprizingly","surprisingly"],["supsend","suspend"],["supspect","suspect"],["supspected","suspected"],["supspecting","suspecting"],["supspects","suspects"],["surbert","sherbet"],["surfce","surface"],["surgest","suggest"],["surgested","suggested"],["surgestion","suggestion"],["surgestions","suggestions"],["surgests","suggests"],["suround","surround"],["surounded","surrounded"],["surounding","surrounding"],["suroundings","surroundings"],["surounds","surrounds"],["surpise","surprise"],["surpises","surprises"],["surplanted","supplanted"],["surport","support"],["surported","supported"],["surpress","suppress"],["surpressed","suppressed"],["surpresses","suppresses"],["surpressing","suppressing"],["surprisinlgy","surprisingly"],["surprize","surprise"],["surprized","surprised"],["surprizing","surprising"],["surprizingly","surprisingly"],["surregat","surrogate"],["surrepetitious","surreptitious"],["surrepetitiously","surreptitiously"],["surreptious","surreptitious"],["surreptiously","surreptitiously"],["surrogage","surrogate"],["surronded","surrounded"],["surrouded","surrounded"],["surrouding","surrounding"],["surrrounded","surrounded"],["surrundering","surrendering"],["survay","survey"],["survays","surveys"],["surveilence","surveillance"],["surveill","surveil"],["surveyer","surveyor"],["surviver","survivor"],["survivers","survivors"],["survivied","survived"],["susbcribed","subscribed"],["susbsystem","subsystem"],["susbsystems","subsystems"],["susbsytem","subsystem"],["susbsytems","subsystems"],["suscribe","subscribe"],["suscribed","subscribed"],["suscribes","subscribes"],["suscript","subscript"],["susepect","suspect"],["suseptable","susceptible"],["suseptible","susceptible"],["susinctly","succinctly"],["susinkt","succinct"],["suspedn","suspend"],["suspeneded","suspended"],["suspention","suspension"],["suspicios","suspicious"],["suspicioulsy","suspiciously"],["suspicous","suspicious"],["suspicously","suspiciously"],["suspision","suspicion"],["suspsend","suspend"],["sussinct","succinct"],["sustainaiblity","sustainability"],["sustem","system"],["sustems","systems"],["sustitution","substitution"],["sustitutions","substitutions"],["susupend","suspend"],["sutdown","shutdown"],["sutisfaction","satisfaction"],["sutisfied","satisfied"],["sutisfies","satisfies"],["sutisfy","satisfy"],["sutisfying","satisfying"],["suttled","shuttled"],["suttles","shuttles"],["suttlety","subtlety"],["suttling","shuttling"],["suuport","support"],["suuported","supported"],["suuporting","supporting"],["suuports","supports"],["suvenear","souvenir"],["suystem","system"],["suystemic","systemic"],["suystems","systems"],["svelt","svelte"],["swaer","swear"],["swaers","swears"],["swalloed","swallowed"],["swaped","swapped"],["swapiness","swappiness"],["swaping","swapping"],["swarmin","swarming"],["swcloumns","swcolumns"],["swepth","swept"],["swich","switch"],["swiched","switched"],["swiching","switching"],["swicth","switch"],["swicthed","switched"],["swicthing","switching"],["swiming","swimming"],["switchs","switches"],["switcht","switched"],["switchting","switching"],["swith","switch"],["swithable","switchable"],["swithc","switch"],["swithcboard","switchboard"],["swithced","switched"],["swithces","switches"],["swithch","switch"],["swithches","switches"],["swithching","switching"],["swithcing","switching"],["swithcover","switchover"],["swithed","switched"],["swither","switcher"],["swithes","switches"],["swithing","switching"],["switiches","switches"],["swown","shown"],["swtich","switch"],["swtichable","switchable"],["swtichback","switchback"],["swtichbacks","switchbacks"],["swtichboard","switchboard"],["swtichboards","switchboards"],["swtiched","switched"],["swticher","switcher"],["swtichers","switchers"],["swtiches","switches"],["swtiching","switching"],["swtichover","switchover"],["swtichs","switches"],["sxl","xsl"],["syantax","syntax"],["syas","says"],["syatem","system"],["syatems","systems"],["sybsystem","subsystem"],["sybsystems","subsystems"],["sychronisation","synchronisation"],["sychronise","synchronise"],["sychronised","synchronised"],["sychroniser","synchroniser"],["sychronises","synchronises"],["sychronisly","synchronously"],["sychronization","synchronization"],["sychronize","synchronize"],["sychronized","synchronized"],["sychronizer","synchronizer"],["sychronizes","synchronizes"],["sychronmode","synchronmode"],["sychronous","synchronous"],["sychronously","synchronously"],["sycle","cycle"],["sycled","cycled"],["sycles","cycles"],["sycling","cycling"],["sycn","sync"],["sycology","psychology"],["sycronise","synchronise"],["sycronised","synchronised"],["sycronises","synchronises"],["sycronising","synchronising"],["sycronization","synchronization"],["sycronizations","synchronizations"],["sycronize","synchronize"],["sycronized","synchronized"],["sycronizes","synchronizes"],["sycronizing","synchronizing"],["sycronous","synchronous"],["sycronously","synchronously"],["sycronus","synchronous"],["sylabus","syllabus"],["syle","style"],["syles","styles"],["sylibol","syllable"],["sylinder","cylinder"],["sylinders","cylinders"],["sylistic","stylistic"],["sylog","syslog"],["symantics","semantics"],["symblic","symbolic"],["symbo","symbol"],["symboles","symbols"],["symboll","symbol"],["symbonname","symbolname"],["symbsol","symbol"],["symbsols","symbols"],["symemetric","symmetric"],["symetri","symmetry"],["symetric","symmetric"],["symetrical","symmetrical"],["symetrically","symmetrically"],["symetry","symmetry"],["symettric","symmetric"],["symmetic","symmetric"],["symmetral","symmetric"],["symmetri","symmetry"],["symmetricaly","symmetrically"],["symnol","symbol"],["symnols","symbols"],["symobilic","symbolic"],["symobl","symbol"],["symoblic","symbolic"],["symoblically","symbolically"],["symobls","symbols"],["symobolic","symbolic"],["symobolical","symbolical"],["symol","symbol"],["symols","symbols"],["synagouge","synagogue"],["synamic","dynamic"],["synax","syntax"],["synching","syncing"],["synchonisation","synchronisation"],["synchonise","synchronise"],["synchonised","synchronised"],["synchonises","synchronises"],["synchonising","synchronising"],["synchonization","synchronization"],["synchonize","synchronize"],["synchonized","synchronized"],["synchonizes","synchronizes"],["synchonizing","synchronizing"],["synchonous","synchronous"],["synchonrous","synchronous"],["synchrnization","synchronization"],["synchrnonization","synchronization"],["synchroizing","synchronizing"],["synchromized","synchronized"],["synchroneous","synchronous"],["synchroneously","synchronously"],["synchronious","synchronous"],["synchroniously","synchronously"],["synchronizaton","synchronization"],["synchronsouly","synchronously"],["synchronuous","synchronous"],["synchronuously","synchronously"],["synchronus","synchronous"],["syncrhonise","synchronise"],["syncrhonised","synchronised"],["syncrhonize","synchronize"],["syncrhonized","synchronized"],["syncronise","synchronise"],["syncronised","synchronised"],["syncronises","synchronises"],["syncronising","synchronising"],["syncronization","synchronization"],["syncronizations","synchronizations"],["syncronize","synchronize"],["syncronized","synchronized"],["syncronizes","synchronizes"],["syncronizing","synchronizing"],["syncronous","synchronous"],["syncronously","synchronously"],["syncronus","synchronous"],["syncting","syncing"],["syndonic","syntonic"],["syndrom","syndrome"],["syndroms","syndromes"],["synomym","synonym"],["synonim","synonym"],["synonomous","synonymous"],["synonymns","synonyms"],["synopis","synopsis"],["synopsys","synopsis"],["synoym","synonym"],["synphony","symphony"],["synposis","synopsis"],["synronous","synchronous"],["syntac","syntax"],["syntacks","syntax"],["syntacs","syntax"],["syntact","syntax"],["syntactally","syntactically"],["syntacts","syntax"],["syntak","syntax"],["syntaks","syntax"],["syntakt","syntax"],["syntakts","syntax"],["syntatic","syntactic"],["syntatically","syntactically"],["syntaxe","syntax"],["syntaxg","syntax"],["syntaxt","syntax"],["syntehsise","synthesise"],["syntehsised","synthesised"],["syntehsize","synthesize"],["syntehsized","synthesized"],["syntesis","synthesis"],["syntethic","synthetic"],["syntethically","synthetically"],["syntethics","synthetics"],["syntetic","synthetic"],["syntetize","synthesize"],["syntetized","synthesized"],["synthethic","synthetic"],["synthetize","synthesize"],["synthetized","synthesized"],["synthetizes","synthesizes"],["synthtic","synthetic"],["syphyllis","syphilis"],["sypmtoms","symptoms"],["sypport","support"],["syrap","syrup"],["sysbols","symbols"],["syschronize","synchronize"],["sysem","system"],["sysematic","systematic"],["sysems","systems"],["sysmatically","systematically"],["sysmbol","symbol"],["sysmograph","seismograph"],["sysmte","system"],["sysmtes","systems"],["systax","syntax"],["syste","system"],["systen","system"],["systens","systems"],["systesm","systems"],["systhem","system"],["systhems","systems"],["systm","system"],["systme","system"],["systmes","systems"],["systms","systems"],["systyem","system"],["systyems","systems"],["sysyem","system"],["sysyems","systems"],["sytax","syntax"],["sytem","system"],["sytematic","systematic"],["sytemd","systemd"],["syteme","system"],["sytems","systems"],["sythesis","synthesis"],["sytle","style"],["sytled","styled"],["sytles","styles"],["sytlesheet","stylesheet"],["sytling","styling"],["sytnax","syntax"],["sytntax","syntax"],["sytsem","system"],["sytsemic","systemic"],["sytsems","systems"],["szenario","scenario"],["szenarios","scenarios"],["szes","sizes"],["szie","size"],["szied","sized"],["szies","sizes"],["tabacco","tobacco"],["tabbaray","taboret"],["tabblow","tableau"],["tabe","table"],["tabel","table"],["tabeles","tables"],["tabels","tables"],["tabeview","tabview"],["tabke","table"],["tabl","table"],["tablepsace","tablespace"],["tablepsaces","tablespaces"],["tablle","table"],["tabluar","tabular"],["tabluate","tabulate"],["tabluated","tabulated"],["tabluates","tabulates"],["tabluating","tabulating"],["tabualte","tabulate"],["tabualted","tabulated"],["tabualtes","tabulates"],["tabualting","tabulating"],["tabualtor","tabulator"],["tabualtors","tabulators"],["taged","tagged"],["taget","target"],["tageted","targeted"],["tageting","targeting"],["tagets","targets"],["tagggen","taggen"],["tagnet","tangent"],["tagnetial","tangential"],["tagnets","tangents"],["tagued","tagged"],["tahn","than"],["taht","that"],["takslet","tasklet"],["talbe","table"],["talekd","talked"],["tallerable","tolerable"],["tamplate","template"],["tamplated","templated"],["tamplates","templates"],["tamplating","templating"],["tangeant","tangent"],["tangeantial","tangential"],["tangeants","tangents"],["tangenet","tangent"],["tangensial","tangential"],["tangentailly","tangentially"],["tanget","tangent"],["tangetial","tangential"],["tangetially","tangentially"],["tangets","tangents"],["tansact","transact"],["tansaction","transaction"],["tansactional","transactional"],["tansactions","transactions"],["tanseint","transient"],["tansfomed","transformed"],["tansient","transient"],["tanslate","translate"],["tanslated","translated"],["tanslates","translates"],["tanslation","translation"],["tanslations","translations"],["tanslator","translator"],["tansmit","transmit"],["tansverse","transverse"],["tarbal","tarball"],["tarbals","tarballs"],["tarce","trace"],["tarced","traced"],["tarces","traces"],["tarcing","tracing"],["targed","target"],["targer","target"],["targest","targets"],["targetted","targeted"],["targetting","targeting"],["targettting","targeting"],["targt","target"],["targte","target"],["tarmigan","ptarmigan"],["tarnsparent","transparent"],["tarpolin","tarpaulin"],["tarvis","Travis"],["tarvisci","TravisCI"],["tasbar","taskbar"],["taskelt","tasklet"],["tast","taste"],["tatgert","target"],["tatgerted","targeted"],["tatgerting","targeting"],["tatgerts","targets"],["tath","that"],["tatoo","tattoo"],["tatoos","tattoos"],["tattooes","tattoos"],["tawk","talk"],["taxanomic","taxonomic"],["taxanomy","taxonomy"],["taxnomy","taxonomy"],["taxomonmy","taxonomy"],["taxonmy","taxonomy"],["taxonoy","taxonomy"],["taylored","tailored"],["tbe","the"],["tbey","they"],["tcahce","cache"],["tcahces","caches"],["tcheckout","checkout"],["tcpdumpp","tcpdump"],["tcppcheck","cppcheck"],["teacer","teacher"],["teacers","teachers"],["teached","taught"],["teachnig","teaching"],["teaher","teacher"],["teahers","teachers"],["teamplate","template"],["teamplates","templates"],["teated","treated"],["teched","taught"],["techer","teacher"],["techers","teachers"],["teches","teaches"],["techical","technical"],["techician","technician"],["techicians","technicians"],["techincal","technical"],["techincally","technically"],["teching","teaching"],["techinically","technically"],["techinique","technique"],["techiniques","techniques"],["techinque","technique"],["techinques","techniques"],["techique","technique"],["techiques","techniques"],["techneek","technique"],["technic","technique"],["technics","techniques"],["technik","technique"],["techniks","techniques"],["techniquest","techniques"],["techniquet","technique"],["technitian","technician"],["technition","technician"],["technlogy","technology"],["technnology","technology"],["technolgy","technology"],["technoloiges","technologies"],["tecnic","technique"],["tecnical","technical"],["tecnically","technically"],["tecnician","technician"],["tecnicians","technicians"],["tecnique","technique"],["tecniques","techniques"],["tedeous","tedious"],["tefine","define"],["teh","the"],["tehy","they"],["tekst","text"],["teksts","texts"],["telegramm","telegram"],["telelevision","television"],["televsion","television"],["telocom","telecom"],["telphony","telephony"],["temaplate","template"],["temaplates","templates"],["temeprature","temperature"],["temepratures","temperatures"],["temerature","temperature"],["teminal","terminal"],["teminals","terminals"],["teminate","terminate"],["teminated","terminated"],["teminating","terminating"],["temination","termination"],["temlate","template"],["temorarily","temporarily"],["temorary","temporary"],["tempalte","template"],["tempaltes","templates"],["temparal","temporal"],["tempararily","temporarily"],["temparary","temporary"],["temparate","temperate"],["temparature","temperature"],["temparily","temporarily"],["tempate","template"],["tempated","templated"],["tempates","templates"],["tempatied","templatized"],["tempation","temptation"],["tempatised","templatised"],["tempatized","templatized"],["tempature","temperature"],["tempdate","template"],["tempearture","temperature"],["tempeartures","temperatures"],["tempearure","temperature"],["tempelate","template"],["temperarily","temporarily"],["temperarure","temperature"],["temperary","temporary"],["temperatur","temperature"],["tempereature","temperature"],["temperment","temperament"],["tempertaure","temperature"],["temperture","temperature"],["templaced","templated"],["templaces","templates"],["templacing","templating"],["templaet","template"],["templat","template"],["templateas","templates"],["templete","template"],["templeted","templated"],["templetes","templates"],["templeting","templating"],["tempoaray","temporary"],["tempopary","temporary"],["temporaere","temporary"],["temporafy","temporary"],["temporalily","temporarily"],["temporarely","temporarily"],["temporarilly","temporarily"],["temporarilty","temporarily"],["temporarilu","temporary"],["temporarirly","temporarily"],["temporay","temporary"],["tempories","temporaries"],["temporily","temporarily"],["tempororaries","temporaries"],["tempororarily","temporarily"],["tempororary","temporary"],["temporories","temporaries"],["tempororily","temporarily"],["temporory","temporary"],["temporraies","temporaries"],["temporraily","temporarily"],["temporraries","temporaries"],["temporrarily","temporarily"],["temporrary","temporary"],["temporray","temporary"],["temporries","temporaries"],["temporrily","temporarily"],["temporry","temporary"],["temportal","temporal"],["temportaries","temporaries"],["temportarily","temporarily"],["temportary","temporary"],["tempory","temporary"],["temporyries","temporaries"],["temporyrily","temporarily"],["temporyry","temporary"],["tempraaily","temporarily"],["tempraal","temporal"],["tempraarily","temporarily"],["tempraarly","temporarily"],["tempraary","temporary"],["tempraay","temporary"],["tempraily","temporarily"],["tempral","temporal"],["temprament","temperament"],["tempramental","temperamental"],["tempraraily","temporarily"],["tempraral","temporal"],["temprararily","temporarily"],["temprararly","temporarily"],["temprarary","temporary"],["tempraray","temporary"],["temprarily","temporarily"],["temprature","temperature"],["tempratures","temperatures"],["tempray","temporary"],["tempreature","temperature"],["tempreatures","temperatures"],["temprement","temperament"],["tempremental","temperamental"],["temproaily","temporarily"],["temproal","temporal"],["temproarily","temporarily"],["temproarly","temporarily"],["temproary","temporary"],["temproay","temporary"],["temprol","temporal"],["temproment","temperament"],["tempromental","temperamental"],["temproraily","temporarily"],["temproral","temporal"],["temproraly","temporarily"],["temprorarily","temporarily"],["temprorarly","temporarily"],["temprorary","temporary"],["temproray","temporary"],["temprorily","temporarily"],["temprory","temporary"],["temproy","temporary"],["temptatation","temptation"],["tempurature","temperature"],["tempurture","temperature"],["temr","term"],["temrinal","terminal"],["temselves","themselves"],["temtation","temptation"],["tenacle","tentacle"],["tenacles","tentacles"],["tenanet","tenant"],["tenanets","tenants"],["tenatious","tenacious"],["tenatiously","tenaciously"],["tenative","tentative"],["tenatively","tentatively"],["tendacy","tendency"],["tendancies","tendencies"],["tendancy","tendency"],["tennisplayer","tennis player"],["tentaive","tentative"],["tentaively","tentatively"],["tention","tension"],["teplmate","template"],["teplmated","templated"],["teplmates","templates"],["tepmorarily","temporarily"],["teraform","terraform"],["teraformed","terraformed"],["teraforming","terraforming"],["teraforms","terraforms"],["terfform","terraform"],["terfformed","terraformed"],["terfforming","terraforming"],["terfforms","terraforms"],["teridactyl","pterodactyl"],["terific","terrific"],["terimnate","terminate"],["termial","terminal"],["termials","terminals"],["termianted","terminated"],["termimal","terminal"],["termimals","terminals"],["terminater","terminator"],["terminaters","terminators"],["terminats","terminates"],["termindate","terminate"],["termine","determine"],["termined","terminated"],["terminte","terminate"],["termintor","terminator"],["termniate","terminate"],["termniated","terminated"],["termniates","terminates"],["termniating","terminating"],["termniation","termination"],["termniations","terminations"],["termniator","terminator"],["termniators","terminators"],["termo","thermo"],["termostat","thermostat"],["termperatue","temperature"],["termperatues","temperatures"],["termperature","temperature"],["termperatures","temperatures"],["termplate","template"],["termplated","templated"],["termplates","templates"],["termporal","temporal"],["termporaries","temporaries"],["termporarily","temporarily"],["termporary","temporary"],["ternament","tournament"],["ternimate","terminate"],["terninal","terminal"],["terninals","terminals"],["terrable","terrible"],["terrestial","terrestrial"],["terrform","terraform"],["terrformed","terraformed"],["terrforming","terraforming"],["terrforms","terraforms"],["terriffic","terrific"],["terriories","territories"],["terriory","territory"],["territorist","terrorist"],["territoy","territory"],["terroist","terrorist"],["terurn","return"],["terurns","returns"],["tescase","testcase"],["tescases","testcases"],["tesellate","tessellate"],["tesellated","tessellated"],["tesellation","tessellation"],["tesellator","tessellator"],["tesited","tested"],["tessealte","tessellate"],["tessealted","tessellated"],["tesselatad","tessellated"],["tesselate","tessellate"],["tesselated","tessellated"],["tesselation","tessellation"],["tesselator","tessellator"],["tessleate","tessellate"],["tessleated","tessellated"],["tessleating","tessellating"],["tessleator","tessellator"],["testeing","testing"],["testiclular","testicular"],["testin","testing"],["testng","testing"],["testof","test of"],["testomony","testimony"],["testsing","testing"],["tetrahedran","tetrahedron"],["tetrahedrans","tetrahedrons"],["tetry","retry"],["tetss","tests"],["tetxture","texture"],["teusday","Tuesday"],["texchnically","technically"],["texline","textline"],["textfrme","textframe"],["texual","textual"],["texually","textually"],["texure","texture"],["texured","textured"],["texures","textures"],["texxt","text"],["tey","they"],["tghe","the"],["thansk","thanks"],["thansparent","transparent"],["thant","than"],["thare","there"],["that;s","that's"],["thats'","that's"],["thats","that's"],["thats;","that's"],["thck","thick"],["theard","thread"],["thearding","threading"],["theards","threads"],["theared","threaded"],["theather","theater"],["theef","thief"],["theer","there"],["theery","theory"],["theese","these"],["thefore","therefore"],["theif","thief"],["theifs","thieves"],["theive","thief"],["theives","thieves"],["themplate","template"],["themselces","themselves"],["themselfes","themselves"],["themselfs","themselves"],["themselvs","themselves"],["themslves","themselves"],["thenes","themes"],["thenn","then"],["theorectical","theoretical"],["theoreticall","theoretically"],["theoreticaly","theoretically"],["theorical","theoretical"],["theorically","theoretically"],["theoritical","theoretical"],["theoritically","theoretically"],["therafter","thereafter"],["therapudic","therapeutic"],["therby","thereby"],["thereads","threads"],["thereom","theorem"],["thererin","therein"],["theres","there's"],["thereshold","threshold"],["theresholds","thresholds"],["therfore","therefore"],["thermisor","thermistor"],["thermisors","thermistors"],["thermostast","thermostat"],["thermostasts","thermostats"],["therstat","thermostat"],["therwise","otherwise"],["theshold","threshold"],["thesholds","thresholds"],["thest","test"],["thetraedral","tetrahedral"],["thetrahedron","tetrahedron"],["thev","the"],["theves","thieves"],["thgat","that"],["thge","the"],["thhese","these"],["thhis","this"],["thid","this"],["thier","their"],["thign","thing"],["thigns","things"],["thigny","thingy"],["thigsn","things"],["thikn","think"],["thikness","thickness"],["thiknesses","thicknesses"],["thikns","thinks"],["thiks","thinks"],["thimngs","things"],["thinigs","things"],["thinkabel","thinkable"],["thinn","thin"],["thirtyth","thirtieth"],["this'd","this would"],["thisle","thistle"],["thist","this"],["thisy","this"],["thiunk","think"],["thjese","these"],["thme","them"],["thn","then"],["thna","than"],["thnak","thank"],["thnaks","thanks"],["thne","then"],["thnig","thing"],["thnigs","things"],["thonic","chthonic"],["thoroidal","toroidal"],["thoroughty","thoroughly"],["thoruoghly","thoroughly"],["thoses","those"],["thouch","touch"],["thoughout","throughout"],["thougth","thought"],["thounsands","thousands"],["thourghly","thoroughly"],["thourough","thorough"],["thouroughly","thoroughly"],["thq","the"],["thrad","thread"],["threadsave","threadsafe"],["threashold","threshold"],["threasholds","thresholds"],["threatend","threatened"],["threatment","treatment"],["threatments","treatments"],["threatning","threatening"],["thred","thread"],["threded","threaded"],["thredhold","threshold"],["threding","threading"],["threds","threads"],["three-dimenional","three-dimensional"],["three-dimenionsal","three-dimensional"],["threedimenional","three-dimensional"],["threedimenionsal","three-dimensional"],["threee","three"],["threhold","threshold"],["threrefore","therefore"],["threshhold","threshold"],["threshholds","thresholds"],["threshod","threshold"],["threshods","thresholds"],["threshol","threshold"],["thresold","threshold"],["thresshold","threshold"],["thrid","third"],["throen","thrown"],["throgh","through"],["throrough","thorough"],["throttoling","throttling"],["throug","through"],["througg","through"],["throughly","thoroughly"],["throughtout","throughout"],["througout","throughout"],["througt","through"],["througth","through"],["throuh","through"],["throuhg","through"],["throuhgout","throughout"],["throuhgput","throughput"],["throuth","through"],["throwgh","through"],["thrreshold","threshold"],["thrresholds","thresholds"],["thrue","through"],["thrugh","through"],["thruogh","through"],["thruoghout","throughout"],["thruoghput","throughput"],["thruout","throughout"],["thses","these"],["thsi","this"],["thsnk","thank"],["thsnked","thanked"],["thsnkful","thankful"],["thsnkfully","thankfully"],["thsnkfulness","thankfulness"],["thsnking","thanking"],["thsnks","thanks"],["thsnkyou","thank you"],["thsoe","those"],["thsose","those"],["thsould","should"],["thst","that"],["thta","that"],["thtat","that"],["thumbbnail","thumbnail"],["thumbnal","thumbnail"],["thumbnals","thumbnails"],["thundebird","thunderbird"],["thurday","Thursday"],["thurough","thorough"],["thurrow","thorough"],["thursdey","Thursday"],["thurver","further"],["thyat","that"],["tichened","thickened"],["tichness","thickness"],["tickness","thickness"],["tidibt","tidbit"],["tidibts","tidbits"],["tieing","tying"],["tiemout","timeout"],["tiemstamp","timestamp"],["tiemstamped","timestamped"],["tiemstamps","timestamps"],["tieth","tithe"],["tigger","trigger"],["tiggered","triggered"],["tiggering","triggering"],["tiggers","triggers"],["tighly","tightly"],["tightely","tightly"],["tigth","tight"],["tigthen","tighten"],["tigthened","tightened"],["tigthening","tightening"],["tigthens","tightens"],["tigthly","tightly"],["tihkn","think"],["tihs","this"],["tiitle","title"],["tillt","tilt"],["tillted","tilted"],["tillts","tilts"],["timdelta","timedelta"],["timedlta","timedelta"],["timeing","timing"],["timemout","timeout"],["timeot","timeout"],["timeoutted","timed out"],["timere","timer"],["timesamp","timestamp"],["timesamped","timestamped"],["timesamps","timestamps"],["timeschedule","time schedule"],["timespanp","timespan"],["timespanps","timespans"],["timestan","timespan"],["timestans","timespans"],["timestap","timestamp"],["timestaped","timestamped"],["timestaping","timestamping"],["timestaps","timestamps"],["timestemp","timestamp"],["timestemps","timestamps"],["timestmap","timestamp"],["timestmaps","timestamps"],["timetamp","timestamp"],["timetamps","timestamps"],["timmestamp","timestamp"],["timmestamps","timestamps"],["timne","time"],["timoeut","timeout"],["timout","timeout"],["timtout","timeout"],["timzeone","timezone"],["timzeones","timezones"],["timzezone","timezone"],["timzezones","timezones"],["tinterrupts","interrupts"],["tipically","typically"],["tirangle","triangle"],["tirangles","triangles"],["titel","title"],["titels","titles"],["titile","title"],["tittled","titled"],["tittling","titling"],["tje","the"],["tjhe","the"],["tjpanishad","upanishad"],["tkae","take"],["tkaes","takes"],["tkaing","taking"],["tlaking","talking"],["tmis","this"],["tne","the"],["toally","totally"],["tobbaco","tobacco"],["tobot","robot"],["toches","touches"],["tocksen","toxin"],["todya","today"],["toekn","token"],["togehter","together"],["togeter","together"],["togeterness","togetherness"],["toggel","toggle"],["toggeles","toggles"],["toggeling","toggling"],["toggels","toggles"],["toggleing","toggling"],["togheter","together"],["toghether","together"],["togle","toggle"],["togled","toggled"],["togling","toggling"],["toglle","toggle"],["toglled","toggled"],["togther","together"],["tolarable","tolerable"],["tolelerance","tolerance"],["tolen","token"],["tolens","tokens"],["toleranz","tolerance"],["tolerence","tolerance"],["tolerences","tolerances"],["tolerent","tolerant"],["tolernce","tolerance"],["Tolkein","Tolkien"],["tollerable","tolerable"],["tollerance","tolerance"],["tollerances","tolerances"],["tolorance","tolerance"],["tolorances","tolerances"],["tolorant","tolerant"],["tomatoe","tomato"],["tomatos","tomatoes"],["tommorow","tomorrow"],["tommorrow","tomorrow"],["tomorrrow","tomorrow"],["tongiht","tonight"],["tonihgt","tonight"],["tood","todo"],["toogle","toggle"],["toogling","toggling"],["tookits","toolkits"],["toolar","toolbar"],["toolsbox","toolbox"],["toom","tomb"],["toos","tools"],["tootonic","teutonic"],["topicaizer","topicalizer"],["topologie","topology"],["torerable","tolerable"],["toriodal","toroidal"],["tork","torque"],["tormenters","tormentors"],["tornadoe","tornado"],["torpeados","torpedoes"],["torpedos","torpedoes"],["tortilini","tortellini"],["tortise","tortoise"],["torward","toward"],["torwards","towards"],["totaly","totally"],["totat","total"],["totation","rotation"],["totats","totals"],["tothe","to the"],["tothiba","toshiba"],["totol","total"],["totorial","tutorial"],["totorials","tutorials"],["touble","trouble"],["toubles","troubles"],["toubling","troubling"],["toughtful","thoughtful"],["toughtly","tightly"],["toughts","thoughts"],["tounge","tongue"],["touple","tuple"],["towords","towards"],["towrad","toward"],["toxen","toxin"],["tpye","type"],["tpyed","typed"],["tpyes","types"],["tpyo","typo"],["trabsform","transform"],["traceablity","traceability"],["trackign","tracking"],["trackling","tracking"],["tracsode","transcode"],["tracsoded","transcoded"],["tracsoder","transcoder"],["tracsoders","transcoders"],["tracsodes","transcodes"],["tracsoding","transcoding"],["traddition","tradition"],["tradditional","traditional"],["tradditions","traditions"],["tradgic","tragic"],["tradionally","traditionally"],["traditilnal","traditional"],["traditiona","traditional"],["traditionaly","traditionally"],["traditionnal","traditional"],["traditionnally","traditionally"],["traditition","tradition"],["tradtional","traditional"],["tradtionally","traditionally"],["trafficed","trafficked"],["trafficing","trafficking"],["trafic","traffic"],["tragectory","trajectory"],["traget","target"],["trageted","targeted"],["trageting","targeting"],["tragets","targets"],["traige","triage"],["traiger","triager"],["traigers","triagers"],["traiges","triages"],["traiging","triaging"],["trailins","trailing"],["traingle","triangle"],["traingles","triangles"],["traingular","triangular"],["traingulate","triangulate"],["traingulated","triangulated"],["traingulates","triangulates"],["traingulating","triangulating"],["traingulation","triangulation"],["traingulations","triangulations"],["trainig","training"],["trainigs","training"],["trainng","training"],["trainngs","training"],["traked","tracked"],["traker","tracker"],["trakers","trackers"],["traking","tracking"],["tramsmit","transmit"],["tramsmits","transmits"],["tramsmitted","transmitted"],["tramsmitting","transmitting"],["tranaction","transaction"],["tranactional","transactional"],["tranactions","transactions"],["tranalating","translating"],["tranalation","translation"],["tranalations","translations"],["tranasction","transaction"],["tranasctions","transactions"],["tranceiver","transceiver"],["tranceivers","transceivers"],["trancendent","transcendent"],["trancending","transcending"],["tranclate","translate"],["trandional","traditional"],["tranfer","transfer"],["tranfered","transferred"],["tranfering","transferring"],["tranferred","transferred"],["tranfers","transfers"],["tranform","transform"],["tranformable","transformable"],["tranformation","transformation"],["tranformations","transformations"],["tranformative","transformative"],["tranformed","transformed"],["tranforming","transforming"],["tranforms","transforms"],["tranient","transient"],["tranients","transients"],["tranistion","transition"],["tranistioned","transitioned"],["tranistioning","transitioning"],["tranistions","transitions"],["tranition","transition"],["tranitioned","transitioned"],["tranitioning","transitioning"],["tranitions","transitions"],["tranlatable","translatable"],["tranlate","translate"],["tranlated","translated"],["tranlates","translates"],["tranlating","translating"],["tranlation","translation"],["tranlations","translations"],["tranlsation","translation"],["tranlsations","translations"],["tranmission","transmission"],["tranmist","transmit"],["tranmitted","transmitted"],["tranmitting","transmitting"],["tranparent","transparent"],["tranparently","transparently"],["tranport","transport"],["tranported","transported"],["tranporting","transporting"],["tranports","transports"],["transacion","transaction"],["transacions","transactions"],["transaciton","transaction"],["transacitons","transactions"],["transacrtion","transaction"],["transacrtions","transactions"],["transaction-spacific","transaction-specific"],["transactoin","transaction"],["transactoins","transactions"],["transalation","translation"],["transalations","translations"],["transalt","translate"],["transalte","translate"],["transalted","translated"],["transaltes","translates"],["transaltion","translation"],["transaltions","translations"],["transaltor","translator"],["transaltors","translators"],["transcendance","transcendence"],["transcendant","transcendent"],["transcendentational","transcendental"],["transcevier","transceiver"],["transciever","transceiver"],["transcievers","transceivers"],["transcocde","transcode"],["transcocded","transcoded"],["transcocder","transcoder"],["transcocders","transcoders"],["transcocdes","transcodes"],["transcocding","transcoding"],["transcocdings","transcodings"],["transconde","transcode"],["transconded","transcoded"],["transconder","transcoder"],["transconders","transcoders"],["transcondes","transcodes"],["transconding","transcoding"],["transcondings","transcodings"],["transcorde","transcode"],["transcorded","transcoded"],["transcorder","transcoder"],["transcorders","transcoders"],["transcordes","transcodes"],["transcording","transcoding"],["transcordings","transcodings"],["transcoser","transcoder"],["transcosers","transcoders"],["transction","transaction"],["transctions","transactions"],["transeint","transient"],["transending","transcending"],["transer","transfer"],["transesxuals","transsexuals"],["transferd","transferred"],["transfered","transferred"],["transfering","transferring"],["transferrd","transferred"],["transfom","transform"],["transfomation","transformation"],["transfomational","transformational"],["transfomations","transformations"],["transfomed","transformed"],["transfomer","transformer"],["transfomm","transform"],["transfoprmation","transformation"],["transforation","transformation"],["transforations","transformations"],["transformated","transformed"],["transformates","transforms"],["transformaton","transformation"],["transformatted","transformed"],["transfrom","transform"],["transfromation","transformation"],["transfromations","transformations"],["transfromed","transformed"],["transfromer","transformer"],["transfroming","transforming"],["transfroms","transforms"],["transiet","transient"],["transiets","transients"],["transision","transition"],["transisioning","transitioning"],["transisions","transitions"],["transisition","transition"],["transisitioned","transitioned"],["transisitioning","transitioning"],["transisitions","transitions"],["transistion","transition"],["transistioning","transitioning"],["transistions","transitions"],["transitionnal","transitional"],["transitionned","transitioned"],["transitionning","transitioning"],["transitionns","transitions"],["transiton","transition"],["transitoning","transitioning"],["transitons","transitions"],["transitor","transistor"],["transitors","transistors"],["translater","translator"],["translaters","translators"],["translatied","translated"],["translatoin","translation"],["translatoins","translations"],["translteration","transliteration"],["transmision","transmission"],["transmisive","transmissive"],["transmissable","transmissible"],["transmissione","transmission"],["transmist","transmit"],["transmited","transmitted"],["transmiter","transmitter"],["transmiters","transmitters"],["transmiting","transmitting"],["transmition","transmission"],["transmitsion","transmission"],["transmittd","transmitted"],["transmittion","transmission"],["transmitts","transmits"],["transmmit","transmit"],["transocde","transcode"],["transocded","transcoded"],["transocder","transcoder"],["transocders","transcoders"],["transocdes","transcodes"],["transocding","transcoding"],["transocdings","transcodings"],["transofrm","transform"],["transofrmation","transformation"],["transofrmations","transformations"],["transofrmed","transformed"],["transofrmer","transformer"],["transofrmers","transformers"],["transofrming","transforming"],["transofrms","transforms"],["transolate","translate"],["transolated","translated"],["transolates","translates"],["transolating","translating"],["transolation","translation"],["transolations","translations"],["transorm","transform"],["transormed","transformed"],["transorming","transforming"],["transorms","transforms"],["transpable","transposable"],["transpacencies","transparencies"],["transpacency","transparency"],["transpaernt","transparent"],["transpaerntly","transparently"],["transpancies","transparencies"],["transpancy","transparency"],["transpant","transplant"],["transparaent","transparent"],["transparaently","transparently"],["transparanceies","transparencies"],["transparancey","transparency"],["transparancies","transparencies"],["transparancy","transparency"],["transparanet","transparent"],["transparanetly","transparently"],["transparanies","transparencies"],["transparant","transparent"],["transparantly","transparently"],["transparany","transparency"],["transpararent","transparent"],["transpararently","transparently"],["transparcencies","transparencies"],["transparcency","transparency"],["transparcenies","transparencies"],["transparceny","transparency"],["transparecy","transparency"],["transpareny","transparency"],["transparities","transparencies"],["transparity","transparency"],["transparnecies","transparencies"],["transparnecy","transparency"],["transparnt","transparent"],["transparntly","transparently"],["transparren","transparent"],["transparrenly","transparently"],["transparrent","transparent"],["transparrently","transparently"],["transpart","transport"],["transparts","transports"],["transpatrent","transparent"],["transpatrently","transparently"],["transpencies","transparencies"],["transpency","transparency"],["transpeorted","transported"],["transperancies","transparencies"],["transperancy","transparency"],["transperant","transparent"],["transperantly","transparently"],["transperencies","transparencies"],["transperency","transparency"],["transperent","transparent"],["transperently","transparently"],["transporation","transportation"],["transportatin","transportation"],["transprencies","transparencies"],["transprency","transparency"],["transprent","transparent"],["transprently","transparently"],["transprot","transport"],["transproted","transported"],["transproting","transporting"],["transprots","transports"],["transprt","transport"],["transprted","transported"],["transprting","transporting"],["transprts","transports"],["transpsition","transposition"],["transsend","transcend"],["transtion","transition"],["transtioned","transitioned"],["transtioning","transitioning"],["transtions","transitions"],["transtition","transition"],["transtitioned","transitioned"],["transtitioning","transitioning"],["transtitions","transitions"],["transtorm","transform"],["transtormed","transformed"],["transvorm","transform"],["transvormation","transformation"],["transvormed","transformed"],["transvorming","transforming"],["transvorms","transforms"],["tranversing","traversing"],["trapeziod","trapezoid"],["trapeziodal","trapezoidal"],["trasaction","transaction"],["trascation","transaction"],["trasfer","transfer"],["trasferred","transferred"],["trasfers","transfers"],["trasform","transform"],["trasformable","transformable"],["trasformation","transformation"],["trasformations","transformations"],["trasformative","transformative"],["trasformed","transformed"],["trasformer","transformer"],["trasformers","transformers"],["trasforming","transforming"],["trasforms","transforms"],["traslalate","translate"],["traslalated","translated"],["traslalating","translating"],["traslalation","translation"],["traslalations","translations"],["traslate","translate"],["traslated","translated"],["traslates","translates"],["traslating","translating"],["traslation","translation"],["traslations","translations"],["traslucency","translucency"],["trasmission","transmission"],["trasmit","transmit"],["trasnaction","transaction"],["trasnfer","transfer"],["trasnfered","transferred"],["trasnferred","transferred"],["trasnfers","transfers"],["trasnform","transform"],["trasnformation","transformation"],["trasnformed","transformed"],["trasnformer","transformer"],["trasnformers","transformers"],["trasnforms","transforms"],["trasnlate","translate"],["trasnlated","translated"],["trasnlation","translation"],["trasnlations","translations"],["trasnparencies","transparencies"],["trasnparency","transparency"],["trasnparent","transparent"],["trasnport","transport"],["trasnports","transports"],["trasnsmit","transmit"],["trasparency","transparency"],["trasparent","transparent"],["trasparently","transparently"],["trasport","transport"],["trasportable","transportable"],["trasported","transported"],["trasporter","transporter"],["trasports","transports"],["traspose","transpose"],["trasposed","transposed"],["trasposing","transposing"],["trasposition","transposition"],["traspositions","transpositions"],["traved","traversed"],["traveersal","traversal"],["traveerse","traverse"],["traveersed","traversed"],["traveerses","traverses"],["traveersing","traversing"],["traveral","traversal"],["travercal","traversal"],["traverce","traverse"],["traverced","traversed"],["traverces","traverses"],["travercing","traversing"],["travere","traverse"],["travered","traversed"],["traveres","traverse"],["traveresal","traversal"],["traveresed","traversed"],["travereses","traverses"],["traveresing","traversing"],["travering","traversing"],["traverssal","traversal"],["travesal","traversal"],["travese","traverse"],["travesed","traversed"],["traveses","traverses"],["travesing","traversing"],["tre","tree"],["treate","treat"],["treatement","treatment"],["treatements","treatments"],["treates","treats"],["tremelo","tremolo"],["tremelos","tremolos"],["trempoline","trampoline"],["treshhold","threshold"],["treshold","threshold"],["tressle","trestle"],["treting","treating"],["trgistration","registration"],["trhe","the"],["triancle","triangle"],["triancles","triangles"],["trianed","trained"],["triange","triangle"],["triangel","triangle"],["triangels","triangles"],["trianglular","triangular"],["trianglutaion","triangulation"],["triangulataion","triangulation"],["triangultaion","triangulation"],["trianing","training"],["trianlge","triangle"],["trianlges","triangles"],["trians","trains"],["trigered","triggered"],["trigerred","triggered"],["trigerring","triggering"],["trigers","triggers"],["trigged","triggered"],["triggerd","triggered"],["triggeres","triggers"],["triggerred","triggered"],["triggerring","triggering"],["triggerrs","triggers"],["triggger","trigger"],["trignometric","trigonometric"],["trignometry","trigonometry"],["triguered","triggered"],["triked","tricked"],["trikery","trickery"],["triky","tricky"],["trilineal","trilinear"],["trimed","trimmed"],["trimmng","trimming"],["trinagle","triangle"],["trinagles","triangles"],["triniy","trinity"],["triology","trilogy"],["tripel","triple"],["tripeld","tripled"],["tripels","triples"],["tripple","triple"],["triuangulate","triangulate"],["trival","trivial"],["trivally","trivially"],["trivias","trivia"],["trivival","trivial"],["trnasfers","transfers"],["trnasmit","transmit"],["trnasmited","transmitted"],["trnasmits","transmits"],["trnsfer","transfer"],["trnsfered","transferred"],["trnsfers","transfers"],["troling","trolling"],["trottle","throttle"],["troubeshoot","troubleshoot"],["troubeshooted","troubleshooted"],["troubeshooter","troubleshooter"],["troubeshooting","troubleshooting"],["troubeshoots","troubleshoots"],["troublehshoot","troubleshoot"],["troublehshooting","troubleshooting"],["troublshoot","troubleshoot"],["troublshooting","troubleshooting"],["trought","through"],["troup","troupe"],["trriger","trigger"],["trrigered","triggered"],["trrigering","triggering"],["trrigers","triggers"],["trrigger","trigger"],["trriggered","triggered"],["trriggering","triggering"],["trriggers","triggers"],["trubble","trouble"],["trubbled","troubled"],["trubbles","troubles"],["truble","trouble"],["trubled","troubled"],["trubles","troubles"],["trubling","troubling"],["trucate","truncate"],["trucated","truncated"],["trucates","truncates"],["trucating","truncating"],["trucnate","truncate"],["trucnated","truncated"],["trucnating","truncating"],["truct","struct"],["truelly","truly"],["truely","truly"],["truied","tried"],["trully","truly"],["trun","turn"],["trunacted","truncated"],["truncat","truncate"],["trunctate","truncate"],["trunctated","truncated"],["trunctating","truncating"],["trunctation","truncation"],["truncted","truncated"],["truned","turned"],["truns","turns"],["trustworthly","trustworthy"],["trustworthyness","trustworthiness"],["trustworty","trustworthy"],["trustwortyness","trustworthiness"],["trustwothy","trustworthy"],["truw","true"],["tryed","tried"],["tryes","tries"],["tryig","trying"],["tryinng","trying"],["trys","tries"],["tryying","trying"],["ttests","tests"],["tthe","the"],["tuesdey","Tuesday"],["tuesdsy","Tuesday"],["tufure","future"],["tuhmbnail","thumbnail"],["tunelled","tunnelled"],["tunelling","tunneling"],["tunned","tuned"],["tunnell","tunnel"],["tuotiral","tutorial"],["tuotirals","tutorials"],["tupel","tuple"],["tupple","tuple"],["tupples","tuples"],["ture","true"],["turle","turtle"],["turly","truly"],["turorial","tutorial"],["turorials","tutorials"],["turtleh","turtle"],["turtlehs","turtles"],["turtorial","tutorial"],["turtorials","tutorials"],["Tuscon","Tucson"],["tusday","Tuesday"],["tuseday","Tuesday"],["tust","trust"],["tution","tuition"],["tutoriel","tutorial"],["tutoriels","tutorials"],["tweleve","twelve"],["twelth","twelfth"],["two-dimenional","two-dimensional"],["two-dimenionsal","two-dimensional"],["twodimenional","two-dimensional"],["twodimenionsal","two-dimensional"],["twon","town"],["twpo","two"],["tyep","type"],["tyhat","that"],["tyies","tries"],["tymecode","timecode"],["tyope","type"],["typcast","typecast"],["typcasting","typecasting"],["typcasts","typecasts"],["typcial","typical"],["typcially","typically"],["typechek","typecheck"],["typecheking","typechecking"],["typesrript","typescript"],["typicallly","typically"],["typicaly","typically"],["typicially","typically"],["typle","tuple"],["typles","tuples"],["typographc","typographic"],["typpe","type"],["typped","typed"],["typpes","types"],["typpical","typical"],["typpically","typically"],["tyranies","tyrannies"],["tyrany","tyranny"],["tyring","trying"],["tyrranies","tyrannies"],["tyrrany","tyranny"],["ubelieveble","unbelievable"],["ubelievebly","unbelievably"],["ubernetes","Kubernetes"],["ubiquitious","ubiquitous"],["ubiquituously","ubiquitously"],["ubitquitous","ubiquitous"],["ublisher","publisher"],["ubunut","Ubuntu"],["ubutu","Ubuntu"],["ubutunu","Ubuntu"],["udpatable","updatable"],["udpate","update"],["udpated","updated"],["udpater","updater"],["udpates","updates"],["udpating","updating"],["ueful","useful"],["uegister","unregister"],["uesd","used"],["ueses","uses"],["uesful","useful"],["uesfull","useful"],["uesfulness","usefulness"],["uesless","useless"],["ueslessness","uselessness"],["uest","quest"],["uests","quests"],["uffer","buffer"],["uffered","buffered"],["uffering","buffering"],["uffers","buffers"],["uggly","ugly"],["ugglyness","ugliness"],["uglyness","ugliness"],["uique","unique"],["uise","use"],["uisng","using"],["uites","suites"],["uknown","unknown"],["uknowns","unknowns"],["Ukranian","Ukrainian"],["uless","unless"],["ulimited","unlimited"],["ulter","alter"],["ulteration","alteration"],["ulterations","alterations"],["ultered","altered"],["ultering","altering"],["ulters","alters"],["ultimatly","ultimately"],["ultimely","ultimately"],["umambiguous","unambiguous"],["umark","unmark"],["umarked","unmarked"],["umbrealla","umbrella"],["uminportant","unimportant"],["umit","unit"],["umless","unless"],["ummark","unmark"],["umoutn","umount"],["un-complete","incomplete"],["unabailable","unavailable"],["unabale","unable"],["unabel","unable"],["unablet","unable"],["unacceptible","unacceptable"],["unaccesible","inaccessible"],["unaccessable","inaccessible"],["unacknowleged","unacknowledged"],["unacompanied","unaccompanied"],["unadvertantly","inadvertently"],["unadvertedly","inadvertently"],["unadvertent","inadvertent"],["unadvertently","inadvertently"],["unahppy","unhappy"],["unalllowed","unallowed"],["unambigious","unambiguous"],["unambigous","unambiguous"],["unambigously","unambiguously"],["unamed","unnamed"],["unanimuous","unanimous"],["unanymous","unanimous"],["unappretiated","unappreciated"],["unappretiative","unappreciative"],["unapprieciated","unappreciated"],["unapprieciative","unappreciative"],["unapretiated","unappreciated"],["unapretiative","unappreciative"],["unaquired","unacquired"],["unarchving","unarchiving"],["unassing","unassign"],["unassinged","unassigned"],["unassinging","unassigning"],["unassings","unassigns"],["unathenticated","unauthenticated"],["unathorised","unauthorised"],["unathorized","unauthorized"],["unatteded","unattended"],["unauthenicated","unauthenticated"],["unauthenticed","unauthenticated"],["unavaiable","unavailable"],["unavaialable","unavailable"],["unavaialbale","unavailable"],["unavaialbe","unavailable"],["unavaialbel","unavailable"],["unavaialbility","unavailability"],["unavaialble","unavailable"],["unavaible","unavailable"],["unavailabel","unavailable"],["unavailiability","unavailability"],["unavailible","unavailable"],["unavaliable","unavailable"],["unavaoidable","unavoidable"],["unavilable","unavailable"],["unballance","unbalance"],["unbeknowst","unbeknownst"],["unbeleifable","unbelievable"],["unbeleivable","unbelievable"],["unbeliefable","unbelievable"],["unbelivable","unbelievable"],["unbeliveable","unbelievable"],["unbeliveably","unbelievably"],["unbelivebly","unbelievably"],["unborned","unborn"],["unbouind","unbound"],["unbouinded","unbounded"],["unboun","unbound"],["unbounad","unbound"],["unbounaded","unbounded"],["unbouned","unbounded"],["unbounnd","unbound"],["unbounnded","unbounded"],["unbouund","unbound"],["unbouunded","unbounded"],["uncahnged","unchanged"],["uncalcualted","uncalculated"],["unce","once"],["uncehck","uncheck"],["uncehcked","unchecked"],["uncerain","uncertain"],["uncerainties","uncertainties"],["uncerainty","uncertainty"],["uncertaincy","uncertainty"],["uncertainities","uncertainties"],["uncertainity","uncertainty"],["uncessarily","unnecessarily"],["uncetain","uncertain"],["uncetainties","uncertainties"],["uncetainty","uncertainty"],["unchache","uncache"],["unchached","uncached"],["unchaged","unchanged"],["unchainged","unchanged"],["unchallengable","unchallengeable"],["unchaned","unchanged"],["unchaneged","unchanged"],["unchangable","unchangeable"],["uncheked","unchecked"],["unchenged","unchanged"],["uncognized","unrecognized"],["uncoment","uncomment"],["uncomented","uncommented"],["uncomenting","uncommenting"],["uncoments","uncomments"],["uncomitted","uncommitted"],["uncommited","uncommitted"],["uncommment","uncomment"],["uncommmented","uncommented"],["uncommmenting","uncommenting"],["uncommments","uncomments"],["uncommmitted","uncommitted"],["uncommmon","uncommon"],["uncommpresed","uncompressed"],["uncommpresion","uncompression"],["uncommpressd","uncompressed"],["uncommpressed","uncompressed"],["uncommpression","uncompression"],["uncommtited","uncommitted"],["uncomon","uncommon"],["uncompetetive","uncompetitive"],["uncompetive","uncompetitive"],["uncomplete","incomplete"],["uncompleteness","incompleteness"],["uncompletness","incompleteness"],["uncompres","uncompress"],["uncompresed","uncompressed"],["uncompreses","uncompresses"],["uncompresing","uncompressing"],["uncompresor","uncompressor"],["uncompresors","uncompressors"],["uncompressible","incompressible"],["uncomprss","uncompress"],["unconcious","unconscious"],["unconciousness","unconsciousness"],["unconcistencies","inconsistencies"],["unconcistency","inconsistency"],["unconcistent","inconsistent"],["uncondisional","unconditional"],["uncondisionaly","unconditionally"],["uncondisionnal","unconditional"],["uncondisionnaly","unconditionally"],["unconditial","unconditional"],["unconditially","unconditionally"],["unconditialy","unconditionally"],["unconditianal","unconditional"],["unconditianally","unconditionally"],["unconditianaly","unconditionally"],["unconditinally","unconditionally"],["unconditinaly","unconditionally"],["unconditionaly","unconditionally"],["unconditionnal","unconditional"],["unconditionnally","unconditionally"],["unconditionnaly","unconditionally"],["uncondtional","unconditional"],["uncondtionally","unconditionally"],["unconfiged","unconfigured"],["unconfortability","discomfort"],["unconsisntency","inconsistency"],["unconsistent","inconsistent"],["uncontitutional","unconstitutional"],["uncontrained","unconstrained"],["uncontrolable","uncontrollable"],["unconvential","unconventional"],["unconventionnal","unconventional"],["uncorectly","incorrectly"],["uncorelated","uncorrelated"],["uncorrect","incorrect"],["uncorrectly","incorrectly"],["uncorrolated","uncorrelated"],["uncoverted","unconverted"],["uncrypted","unencrypted"],["undecideable","undecidable"],["undefied","undefined"],["undefien","undefine"],["undefiend","undefined"],["undefinied","undefined"],["undeflow","underflow"],["undeflows","underflows"],["undefuned","undefined"],["undelying","underlying"],["underfiend","undefined"],["underfined","undefined"],["underfow","underflow"],["underfowed","underflowed"],["underfowing","underflowing"],["underfows","underflows"],["underlayed","underlaid"],["underlaying","underlying"],["underlflow","underflow"],["underlflowed","underflowed"],["underlflowing","underflowing"],["underlflows","underflows"],["underlfow","underflow"],["underlfowed","underflowed"],["underlfowing","underflowing"],["underlfows","underflows"],["underlow","underflow"],["underlowed","underflowed"],["underlowing","underflowing"],["underlows","underflows"],["underlyng","underlying"],["underneeth","underneath"],["underrrun","underrun"],["undersacn","underscan"],["understadn","understand"],["understadnable","understandable"],["understadning","understanding"],["understadns","understands"],["understoon","understood"],["understoud","understood"],["undertand","understand"],["undertandable","understandable"],["undertanded","understood"],["undertanding","understanding"],["undertands","understands"],["undertsand","understand"],["undertsanding","understanding"],["undertsands","understands"],["undertsood","understood"],["undertstand","understand"],["undertstands","understands"],["underun","underrun"],["underuns","underruns"],["underware","underwear"],["underying","underlying"],["underyling","underlying"],["undescore","underscore"],["undescored","underscored"],["undescores","underscores"],["undesireable","undesirable"],["undesitable","undesirable"],["undestand","understand"],["undestood","understood"],["undet","under"],["undetecable","undetectable"],["undetstand","understand"],["undetware","underwear"],["undetwater","underwater"],["undfine","undefine"],["undfined","undefined"],["undfines","undefines"],["undistinghable","indistinguishable"],["undocummented","undocumented"],["undorder","unorder"],["undordered","unordered"],["undoubtely","undoubtedly"],["undreground","underground"],["undupplicated","unduplicated"],["uneccesary","unnecessary"],["uneccessarily","unnecessarily"],["uneccessary","unnecessary"],["unecessarily","unnecessarily"],["unecessary","unnecessary"],["uneforceable","unenforceable"],["uneform","uniform"],["unencrpt","unencrypt"],["unencrpted","unencrypted"],["unenforcable","unenforceable"],["unepected","unexpected"],["unepectedly","unexpectedly"],["unequalities","inequalities"],["unequality","inequality"],["uner","under"],["unesacpe","unescape"],["unesacped","unescaped"],["unessecarry","unnecessary"],["unessecary","unnecessary"],["unevaluted","unevaluated"],["unexcected","unexpected"],["unexcectedly","unexpectedly"],["unexcpected","unexpected"],["unexcpectedly","unexpectedly"],["unexecpted","unexpected"],["unexecptedly","unexpectedly"],["unexected","unexpected"],["unexectedly","unexpectedly"],["unexepcted","unexpected"],["unexepctedly","unexpectedly"],["unexepected","unexpected"],["unexepectedly","unexpectedly"],["unexpacted","unexpected"],["unexpactedly","unexpectedly"],["unexpcted","unexpected"],["unexpctedly","unexpectedly"],["unexpecetd","unexpected"],["unexpecetdly","unexpectedly"],["unexpect","unexpected"],["unexpectd","unexpected"],["unexpectdly","unexpectedly"],["unexpecte","unexpected"],["unexpectely","unexpectedly"],["unexpectend","unexpected"],["unexpectendly","unexpectedly"],["unexpectly","unexpectedly"],["unexpeected","unexpected"],["unexpeectedly","unexpectedly"],["unexpepected","unexpected"],["unexpepectedly","unexpectedly"],["unexpepted","unexpected"],["unexpeptedly","unexpectedly"],["unexpercted","unexpected"],["unexperctedly","unexpectedly"],["unexpested","unexpected"],["unexpestedly","unexpectedly"],["unexpetced","unexpected"],["unexpetcedly","unexpectedly"],["unexpetct","unexpected"],["unexpetcted","unexpected"],["unexpetctedly","unexpectedly"],["unexpetctly","unexpectedly"],["unexpetect","unexpected"],["unexpetected","unexpected"],["unexpetectedly","unexpectedly"],["unexpetectly","unexpectedly"],["unexpeted","unexpected"],["unexpetedly","unexpectedly"],["unexpexcted","unexpected"],["unexpexctedly","unexpectedly"],["unexpexted","unexpected"],["unexpextedly","unexpectedly"],["unexspected","unexpected"],["unexspectedly","unexpectedly"],["unfilp","unflip"],["unfilpped","unflipped"],["unfilpping","unflipping"],["unfilps","unflips"],["unflaged","unflagged"],["unflexible","inflexible"],["unforetunately","unfortunately"],["unforgetable","unforgettable"],["unforgiveable","unforgivable"],["unformated","unformatted"],["unforseen","unforeseen"],["unforttunately","unfortunately"],["unfortuante","unfortunate"],["unfortuantely","unfortunately"],["unfortunaltely","unfortunately"],["unfortunaly","unfortunately"],["unfortunat","unfortunate"],["unfortunatelly","unfortunately"],["unfortunatetly","unfortunately"],["unfortunatley","unfortunately"],["unfortunatly","unfortunately"],["unfortunetly","unfortunately"],["unfortuntaly","unfortunately"],["unforunate","unfortunate"],["unforunately","unfortunately"],["unforutunate","unfortunate"],["unforutunately","unfortunately"],["unfotunately","unfortunately"],["unfourtunately","unfortunately"],["unfourtunetly","unfortunately"],["unfurtunately","unfortunately"],["ungeneralizeable","ungeneralizable"],["ungly","ugly"],["unhandeled","unhandled"],["unhilight","unhighlight"],["unhilighted","unhighlighted"],["unhilights","unhighlights"],["Unicde","Unicode"],["unich","unix"],["unidentifiedly","unidentified"],["unidimensionnal","unidimensional"],["unifform","uniform"],["unifforms","uniforms"],["unifiy","unify"],["uniformely","uniformly"],["unifrom","uniform"],["unifromed","uniformed"],["unifromity","uniformity"],["unifroms","uniforms"],["unigned","unsigned"],["unihabited","uninhabited"],["unilateraly","unilaterally"],["unilatreal","unilateral"],["unilatreally","unilaterally"],["unimpemented","unimplemented"],["unimplemeneted","unimplemented"],["unimplimented","unimplemented"],["uninitailised","uninitialised"],["uninitailized","uninitialized"],["uninitalise","uninitialise"],["uninitalised","uninitialised"],["uninitalises","uninitialises"],["uninitalize","uninitialize"],["uninitalized","uninitialized"],["uninitalizes","uninitializes"],["uniniteresting","uninteresting"],["uninitializaed","uninitialized"],["uninitialse","uninitialise"],["uninitialsed","uninitialised"],["uninitialses","uninitialises"],["uninitialze","uninitialize"],["uninitialzed","uninitialized"],["uninitialzes","uninitializes"],["uninstalable","uninstallable"],["uninstatiated","uninstantiated"],["uninstlal","uninstall"],["uninstlalation","uninstallation"],["uninstlalations","uninstallations"],["uninstlaled","uninstalled"],["uninstlaler","uninstaller"],["uninstlaling","uninstalling"],["uninstlals","uninstalls"],["unint8_t","uint8_t"],["unintelligable","unintelligible"],["unintentially","unintentionally"],["uninteressting","uninteresting"],["uninterpretted","uninterpreted"],["uninterruped","uninterrupted"],["uninterruptable","uninterruptible"],["unintersting","uninteresting"],["uninteruppted","uninterrupted"],["uninterupted","uninterrupted"],["unintesting","uninteresting"],["unintialised","uninitialised"],["unintialized","uninitialized"],["unintiallised","uninitialised"],["unintiallized","uninitialized"],["unintialsied","uninitialised"],["unintialzied","uninitialized"],["unio","union"],["unios","unions"],["uniqe","unique"],["uniqu","unique"],["uniquness","uniqueness"],["unistalled","uninstalled"],["uniterrupted","uninterrupted"],["UnitesStates","UnitedStates"],["unitialize","uninitialize"],["unitialized","uninitialized"],["unitilised","uninitialised"],["unitilising","uninitialising"],["unitilities","utilities"],["unitility","utility"],["unitilized","uninitialized"],["unitilizing","uninitializing"],["unitilties","utilities"],["unitilty","utility"],["unititialized","uninitialized"],["unitl","until"],["unitled","untitled"],["unitss","units"],["univeral","universal"],["univerally","universally"],["univeriality","universality"],["univeristies","universities"],["univeristy","university"],["univerities","universities"],["univerity","university"],["universial","universal"],["universiality","universality"],["universirty","university"],["universtal","universal"],["universtiy","university"],["univesities","universities"],["univesity","university"],["univiersal","universal"],["univrsal","universal"],["unkmown","unknown"],["unknon","unknown"],["unknonw","unknown"],["unknonwn","unknown"],["unknonws","unknowns"],["unknwn","unknown"],["unknwns","unknowns"],["unknwoing","unknowing"],["unknwoingly","unknowingly"],["unknwon","unknown"],["unknwons","unknowns"],["unknwown","unknown"],["unknwowns","unknowns"],["unkonwn","unknown"],["unkonwns","unknowns"],["unkown","unknown"],["unkowns","unknowns"],["unkwown","unknown"],["unlcear","unclear"],["unles","unless"],["unlikey","unlikely"],["unlikley","unlikely"],["unlimeted","unlimited"],["unlimitied","unlimited"],["unlimted","unlimited"],["unline","unlike"],["unloadins","unloading"],["unmached","unmatched"],["unmainted","unmaintained"],["unmaping","unmapping"],["unmappend","unmapped"],["unmarsalling","unmarshalling"],["unmaximice","unmaximize"],["unmistakeably","unmistakably"],["unmodfide","unmodified"],["unmodfided","unmodified"],["unmodfied","unmodified"],["unmodfieid","unmodified"],["unmodfified","unmodified"],["unmodfitied","unmodified"],["unmodifable","unmodifiable"],["unmodifed","unmodified"],["unmoutned","unmounted"],["unnacquired","unacquired"],["unncessary","unnecessary"],["unneccecarily","unnecessarily"],["unneccecary","unnecessary"],["unneccesarily","unnecessarily"],["unneccesary","unnecessary"],["unneccessarily","unnecessarily"],["unneccessary","unnecessary"],["unneceesarily","unnecessarily"],["unnecesarily","unnecessarily"],["unnecesarrily","unnecessarily"],["unnecesarry","unnecessary"],["unnecesary","unnecessary"],["unnecesasry","unnecessary"],["unnecessar","unnecessary"],["unnecessarilly","unnecessarily"],["unnecesserily","unnecessarily"],["unnecessery","unnecessary"],["unnecessiarlly","unnecessarily"],["unnecssary","unnecessary"],["unnedded","unneeded"],["unneded","unneeded"],["unneedingly","unnecessarily"],["unnescessarily","unnecessarily"],["unnescessary","unnecessary"],["unnesesarily","unnecessarily"],["unnessarily","unnecessarily"],["unnessasary","unnecessary"],["unnessecarily","unnecessarily"],["unnessecarry","unnecessary"],["unnessecary","unnecessary"],["unnessesarily","unnecessarily"],["unnessesary","unnecessary"],["unnessessarily","unnecessarily"],["unnessessary","unnecessary"],["unning","running"],["unnnecessary","unnecessary"],["unnown","unknown"],["unnowns","unknowns"],["unnsupported","unsupported"],["unnused","unused"],["unobstrusive","unobtrusive"],["unocde","Unicode"],["unoffical","unofficial"],["unoin","union"],["unompress","uncompress"],["unoperational","nonoperational"],["unorderd","unordered"],["unoredered","unordered"],["unorotated","unrotated"],["unoticeable","unnoticeable"],["unpacke","unpacked"],["unpacket","unpacked"],["unparseable","unparsable"],["unpertubated","unperturbed"],["unperturb","unperturbed"],["unperturbated","unperturbed"],["unperturbe","unperturbed"],["unplease","displease"],["unpleasent","unpleasant"],["unplesant","unpleasant"],["unplesent","unpleasant"],["unprecendented","unprecedented"],["unprecidented","unprecedented"],["unprecise","imprecise"],["unpredicatable","unpredictable"],["unpredicatble","unpredictable"],["unpredictablity","unpredictability"],["unpredictible","unpredictable"],["unpriviledged","unprivileged"],["unpriviliged","unprivileged"],["unprmopted","unprompted"],["unqiue","unique"],["unqoute","unquote"],["unqouted","unquoted"],["unqoutes","unquotes"],["unqouting","unquoting"],["unque","unique"],["unreacahable","unreachable"],["unreacahble","unreachable"],["unreacheable","unreachable"],["unrealeased","unreleased"],["unreasonabily","unreasonably"],["unrechable","unreachable"],["unrecocnized","unrecognized"],["unrecoginized","unrecognized"],["unrecogized","unrecognized"],["unrecognixed","unrecognized"],["unrecongized","unrecognized"],["unreconized","unrecognized"],["unrecovable","unrecoverable"],["unrecovarable","unrecoverable"],["unrecoverd","unrecovered"],["unregester","unregister"],["unregiste","unregister"],["unregisted","unregistered"],["unregisteing","registering"],["unregisterd","unregistered"],["unregistert","unregistered"],["unregistes","unregisters"],["unregisting","unregistering"],["unregistred","unregistered"],["unregistrs","unregisters"],["unregiter","unregister"],["unregiters","unregisters"],["unregnized","unrecognized"],["unregognised","unrecognised"],["unregsiter","unregister"],["unregsitered","unregistered"],["unregsitering","unregistering"],["unregsiters","unregisters"],["unregster","unregister"],["unregstered","unregistered"],["unregstering","unregistering"],["unregsters","unregisters"],["unreigister","unregister"],["unreigster","unregister"],["unreigstered","unregistered"],["unreigstering","unregistering"],["unreigsters","unregisters"],["unrelatd","unrelated"],["unreleated","unrelated"],["unrelted","unrelated"],["unrelyable","unreliable"],["unrelying","underlying"],["unrepentent","unrepentant"],["unrepetant","unrepentant"],["unrepetent","unrepentant"],["unreplacable","unreplaceable"],["unreplacalbe","unreplaceable"],["unreproducable","unreproducible"],["unresgister","unregister"],["unresgisterd","unregistered"],["unresgistered","unregistered"],["unresgisters","unregisters"],["unresolvabvle","unresolvable"],["unresonable","unreasonable"],["unresposive","unresponsive"],["unrestrcited","unrestricted"],["unrgesiter","unregister"],["unroated","unrotated"],["unrosponsive","unresponsive"],["unsanfe","unsafe"],["unsccessful","unsuccessful"],["unscubscribe","subscribe"],["unscubscribed","subscribed"],["unsearcahble","unsearchable"],["unselct","unselect"],["unselcted","unselected"],["unselctes","unselects"],["unselcting","unselecting"],["unselcts","unselects"],["unselecgt","unselect"],["unselecgted","unselected"],["unselecgtes","unselects"],["unselecgting","unselecting"],["unselecgts","unselects"],["unselectabe","unselectable"],["unsepcified","unspecified"],["unseting","unsetting"],["unsetset","unset"],["unsettin","unsetting"],["unsharable","unshareable"],["unshfit","unshift"],["unshfited","unshifted"],["unshfiting","unshifting"],["unshfits","unshifts"],["unsiged","unsigned"],["unsigend","unsigned"],["unsignd","unsigned"],["unsignificant","insignificant"],["unsinged","unsigned"],["unsoclicited","unsolicited"],["unsolicitied","unsolicited"],["unsolicted","unsolicited"],["unsollicited","unsolicited"],["unspecificed","unspecified"],["unspecifiec","unspecific"],["unspecifiecd","unspecified"],["unspecifieced","unspecified"],["unspefcifieid","unspecified"],["unspefeid","unspecified"],["unspeficed","unspecified"],["unspeficeid","unspecified"],["unspeficialleid","unspecified"],["unspeficiallied","unspecified"],["unspeficiallifed","unspecified"],["unspeficied","unspecified"],["unspeficieid","unspecified"],["unspeficifed","unspecified"],["unspeficifeid","unspecified"],["unspeficified","unspecified"],["unspeficififed","unspecified"],["unspeficiied","unspecified"],["unspeficiifed","unspecified"],["unspeficilleid","unspecified"],["unspeficillied","unspecified"],["unspeficillifed","unspecified"],["unspeficiteid","unspecified"],["unspeficitied","unspecified"],["unspeficitifed","unspecified"],["unspefied","unspecified"],["unspefifed","unspecified"],["unspefifeid","unspecified"],["unspefified","unspecified"],["unspefififed","unspecified"],["unspefiied","unspecified"],["unspefiifeid","unspecified"],["unspefiified","unspecified"],["unspefiififed","unspecified"],["unspefixeid","unspecified"],["unspefixied","unspecified"],["unspefixifed","unspecified"],["unspported","unsupported"],["unstabel","unstable"],["unstalbe","unstable"],["unsuable","unusable"],["unsual","unusual"],["unsubscibe","unsubscribe"],["unsubscibed","unsubscribed"],["unsubscibing","unsubscribing"],["unsubscirbe","unsubscribe"],["unsubscirbed","unsubscribed"],["unsubscirbing","unsubscribing"],["unsubscirption","unsubscription"],["unsubscirptions","unsubscriptions"],["unsubscritpion","unsubscription"],["unsubscritpions","unsubscriptions"],["unsubscritpiton","unsubscription"],["unsubscritpitons","unsubscriptions"],["unsubscritption","unsubscription"],["unsubscritptions","unsubscriptions"],["unsubstanciated","unsubstantiated"],["unsucccessful","unsuccessful"],["unsucccessfully","unsuccessfully"],["unsucccessul","unsuccessful"],["unsucccessully","unsuccessfully"],["unsuccee","unsuccessful"],["unsucceed","unsuccessful"],["unsucceedde","unsuccessful"],["unsucceeded","unsuccessful"],["unsucceeds","unsuccessful"],["unsucceeed","unsuccessful"],["unsuccees","unsuccessful"],["unsuccesful","unsuccessful"],["unsuccesfull","unsuccessful"],["unsuccesfully","unsuccessfully"],["unsuccess","unsuccessful"],["unsuccessfull","unsuccessful"],["unsuccessfullly","unsuccessfully"],["unsucesful","unsuccessful"],["unsucesfull","unsuccessful"],["unsucesfully","unsuccessfully"],["unsucesfuly","unsuccessfully"],["unsucessefully","unsuccessfully"],["unsucessflly","unsuccessfully"],["unsucessfually","unsuccessfully"],["unsucessful","unsuccessful"],["unsucessfull","unsuccessful"],["unsucessfully","unsuccessfully"],["unsucessfuly","unsuccessfully"],["unsucesssful","unsuccessful"],["unsucesssfull","unsuccessful"],["unsucesssfully","unsuccessfully"],["unsucesssfuly","unsuccessfully"],["unsucessufll","unsuccessful"],["unsucessuflly","unsuccessfully"],["unsucessully","unsuccessfully"],["unsued","unused"],["unsufficient","insufficient"],["unsuportable","unsupportable"],["unsuported","unsupported"],["unsupport","unsupported"],["unsupproted","unsupported"],["unsupress","unsuppress"],["unsupressed","unsuppressed"],["unsupresses","unsuppresses"],["unsuprised","unsurprised"],["unsuprising","unsurprising"],["unsuprisingly","unsurprisingly"],["unsuprized","unsurprised"],["unsuprizing","unsurprising"],["unsuprizingly","unsurprisingly"],["unsurprized","unsurprised"],["unsurprizing","unsurprising"],["unsurprizingly","unsurprisingly"],["unsused","unused"],["unswithced","unswitched"],["unsychronise","unsynchronise"],["unsychronised","unsynchronised"],["unsychronize","unsynchronize"],["unsychronized","unsynchronized"],["untargetted","untargeted"],["unter","under"],["untill","until"],["untintuitive","unintuitive"],["untoched","untouched"],["untqueue","unqueue"],["untrached","untracked"],["untranslateable","untranslatable"],["untrasformed","untransformed"],["untrasposed","untransposed"],["untrustworty","untrustworthy"],["unued","unused"],["ununsed","unused"],["ununsual","unusual"],["unusal","unusual"],["unusally","unusually"],["unuseable","unusable"],["unuseful","useless"],["unusre","unsure"],["unusuable","unusable"],["unusued","unused"],["unvailable","unavailable"],["unvalid","invalid"],["unvalidate","invalidate"],["unverfified","unverified"],["unversionned","unversioned"],["unversoned","unversioned"],["unviersity","university"],["unwarrented","unwarranted"],["unweildly","unwieldy"],["unwieldly","unwieldy"],["unwraped","unwrapped"],["unwrritten","unwritten"],["unx","unix"],["unxepected","unexpected"],["unxepectedly","unexpectedly"],["unxpected","unexpected"],["unziped","unzipped"],["upadate","update"],["upadated","updated"],["upadater","updater"],["upadates","updates"],["upadating","updating"],["upadte","update"],["upadted","updated"],["upadter","updater"],["upadters","updaters"],["upadtes","updates"],["upagrade","upgrade"],["upagraded","upgraded"],["upagrades","upgrades"],["upagrading","upgrading"],["upate","update"],["upated","updated"],["upater","updater"],["upates","updates"],["upating","updating"],["upcomming","upcoming"],["updaing","updating"],["updat","update"],["updateded","updated"],["updateed","updated"],["updatees","updates"],["updateing","updating"],["updatess","updates"],["updatig","updating"],["updats","updates"],["updgrade","upgrade"],["updgraded","upgraded"],["updgrades","upgrades"],["updgrading","upgrading"],["updrage","upgrade"],["updraged","upgraded"],["updrages","upgrades"],["updraging","upgrading"],["updte","update"],["upercase","uppercase"],["uperclass","upperclass"],["upgade","upgrade"],["upgaded","upgraded"],["upgades","upgrades"],["upgading","upgrading"],["upgarade","upgrade"],["upgaraded","upgraded"],["upgarades","upgrades"],["upgarading","upgrading"],["upgarde","upgrade"],["upgarded","upgraded"],["upgardes","upgrades"],["upgarding","upgrading"],["upgarte","upgrade"],["upgarted","upgraded"],["upgartes","upgrades"],["upgarting","upgrading"],["upgerade","upgrade"],["upgeraded","upgraded"],["upgerades","upgrades"],["upgerading","upgrading"],["upgradablilty","upgradability"],["upgradde","upgrade"],["upgradded","upgraded"],["upgraddes","upgrades"],["upgradding","upgrading"],["upgradei","upgrade"],["upgradingn","upgrading"],["upgrate","upgrade"],["upgrated","upgraded"],["upgrates","upgrades"],["upgrating","upgrading"],["upholstry","upholstery"],["uplad","upload"],["upladaded","uploaded"],["upladed","uploaded"],["uplader","uploader"],["upladers","uploaders"],["uplading","uploading"],["uplads","uploads"],["uplaod","upload"],["uplaodaded","uploaded"],["uplaoded","uploaded"],["uplaoder","uploader"],["uplaoders","uploaders"],["uplaodes","uploads"],["uplaoding","uploading"],["uplaods","uploads"],["upliad","upload"],["uplod","upload"],["uplodaded","uploaded"],["uploded","uploaded"],["uploder","uploader"],["uploders","uploaders"],["uploding","uploading"],["uplods","uploads"],["uppler","upper"],["uppon","upon"],["upported","supported"],["upporterd","supported"],["uppper","upper"],["uppstream","upstream"],["uppstreamed","upstreamed"],["uppstreamer","upstreamer"],["uppstreaming","upstreaming"],["uppstreams","upstreams"],["uppwards","upwards"],["uprade","upgrade"],["upraded","upgraded"],["uprades","upgrades"],["uprading","upgrading"],["uprgade","upgrade"],["uprgaded","upgraded"],["uprgades","upgrades"],["uprgading","upgrading"],["upsream","upstream"],["upsreamed","upstreamed"],["upsreamer","upstreamer"],["upsreaming","upstreaming"],["upsreams","upstreams"],["upsrteam","upstream"],["upsrteamed","upstreamed"],["upsrteamer","upstreamer"],["upsrteaming","upstreaming"],["upsrteams","upstreams"],["upsteam","upstream"],["upsteamed","upstreamed"],["upsteamer","upstreamer"],["upsteaming","upstreaming"],["upsteams","upstreams"],["upsteram","upstream"],["upsteramed","upstreamed"],["upsteramer","upstreamer"],["upsteraming","upstreaming"],["upsterams","upstreams"],["upstread","upstream"],["upstreamedd","upstreamed"],["upstreammed","upstreamed"],["upstreammer","upstreamer"],["upstreamming","upstreaming"],["upstreem","upstream"],["upstreemed","upstreamed"],["upstreemer","upstreamer"],["upstreeming","upstreaming"],["upstreems","upstreams"],["upstrema","upstream"],["upsupported","unsupported"],["uptadeable","updatable"],["uptdate","update"],["uptim","uptime"],["uptions","options"],["uptodate","up-to-date"],["uptodateness","up-to-dateness"],["uptream","upstream"],["uptreamed","upstreamed"],["uptreamer","upstreamer"],["uptreaming","upstreaming"],["uptreams","upstreams"],["uqest","quest"],["uqests","quests"],["urrlib","urllib"],["usag","usage"],["usal","usual"],["usally","usually"],["uscaled","unscaled"],["useability","usability"],["useable","usable"],["useage","usage"],["usebility","usability"],["useble","usable"],["useed","used"],["usees","uses"],["usefl","useful"],["usefule","useful"],["usefulfor","useful for"],["usefull","useful"],["usefullness","usefulness"],["usefult","useful"],["usefuly","usefully"],["usefutl","useful"],["usege","usage"],["useing","using"],["user-defiend","user-defined"],["user-defiened","user-defined"],["usera","users"],["userame","username"],["userames","usernames"],["userapace","userspace"],["userful","useful"],["userpace","userspace"],["userpsace","userspace"],["usersapce","userspace"],["userspase","userspace"],["usesfull","useful"],["usespace","userspace"],["usetnet","Usenet"],["usibility","usability"],["usible","usable"],["usig","using"],["usigned","unsigned"],["usiing","using"],["usin","using"],["usind","using"],["usinging","using"],["usinng","using"],["usng","using"],["usnig","using"],["usptart","upstart"],["usptarts","upstarts"],["usseful","useful"],["ussual","usual"],["ussuall","usual"],["ussually","usually"],["usuable","usable"],["usuage","usage"],["usuallly","usually"],["usualy","usually"],["usualyl","usually"],["usue","use"],["usued","used"],["usueful","useful"],["usuer","user"],["usuing","using"],["usupported","unsupported"],["ususal","usual"],["ususally","usually"],["UTF8ness","UTF-8-ness"],["utiilties","utilities"],["utilies","utilities"],["utililties","utilities"],["utilis","utilise"],["utilisa","utilise"],["utilisaton","utilisation"],["utilites","utilities"],["utilitisation","utilisation"],["utilitise","utilise"],["utilitises","utilises"],["utilitising","utilising"],["utilitiy","utility"],["utilitization","utilization"],["utilitize","utilize"],["utilitizes","utilizes"],["utilitizing","utilizing"],["utiliz","utilize"],["utiliza","utilize"],["utilizaton","utilization"],["utillities","utilities"],["utilties","utilities"],["utiltities","utilities"],["utiltity","utility"],["utilty","utility"],["utitity","utility"],["utitlities","utilities"],["utitlity","utility"],["utitlty","utility"],["utlities","utilities"],["utlity","utility"],["utput","output"],["utputs","outputs"],["uupload","upload"],["uupper","upper"],["vaalues","values"],["vaccum","vacuum"],["vaccume","vacuum"],["vaccuum","vacuum"],["vacinity","vicinity"],["vactor","vector"],["vactors","vectors"],["vacumme","vacuum"],["vacuosly","vacuously"],["vaelues","values"],["vaguaries","vagaries"],["vaiable","variable"],["vaiables","variables"],["vaiant","variant"],["vaiants","variants"],["vaidate","validate"],["vaieties","varieties"],["vailable","available"],["vaild","valid"],["vailidity","validity"],["vailidty","validity"],["vairable","variable"],["vairables","variables"],["vairous","various"],["vakue","value"],["vakued","valued"],["vakues","values"],["valailable","available"],["valdate","validate"],["valetta","valletta"],["valeu","value"],["valiator","validator"],["validade","validate"],["validata","validate"],["validataion","validation"],["validaterelase","validaterelease"],["valide","valid"],["valididty","validity"],["validing","validating"],["validte","validate"],["validted","validated"],["validtes","validates"],["validting","validating"],["validtion","validation"],["valied","valid"],["valies","values"],["valif","valid"],["valitdity","validity"],["valkues","values"],["vallgrind","valgrind"],["vallid","valid"],["vallidation","validation"],["vallidity","validity"],["vallue","value"],["vallues","values"],["valsues","values"],["valtage","voltage"],["valtages","voltages"],["valu","value"],["valuble","valuable"],["valudes","values"],["value-to-pack","value to pack"],["valueable","valuable"],["valuess","values"],["valuie","value"],["valulation","valuation"],["valulations","valuations"],["valule","value"],["valuled","valued"],["valules","values"],["valuling","valuing"],["vanishs","vanishes"],["varable","variable"],["varables","variables"],["varaiable","variable"],["varaiables","variables"],["varaiance","variance"],["varaiation","variation"],["varaible","variable"],["varaibles","variables"],["varaint","variant"],["varaints","variants"],["varation","variation"],["varations","variations"],["variabble","variable"],["variabbles","variables"],["variabe","variable"],["variabel","variable"],["variabele","variable"],["variabes","variables"],["variabla","variable"],["variablen","variable"],["varialbe","variable"],["varialbes","variables"],["varialbles","variables"],["varian","variant"],["variantions","variations"],["variatinos","variations"],["variationnal","variational"],["variatoin","variation"],["variatoins","variations"],["variavle","variable"],["variavles","variables"],["varibable","variable"],["varibables","variables"],["varibale","variable"],["varibales","variables"],["varibaless","variables"],["varibel","variable"],["varibels","variables"],["varibility","variability"],["variblae","variable"],["variblaes","variables"],["varible","variable"],["varibles","variables"],["varience","variance"],["varient","variant"],["varients","variants"],["varierty","variety"],["variey","variety"],["varify","verify"],["variing","varying"],["varing","varying"],["varities","varieties"],["varity","variety"],["variuos","various"],["variuous","various"],["varius","various"],["varn","warn"],["varned","warned"],["varning","warning"],["varnings","warnings"],["varns","warns"],["varoius","various"],["varous","various"],["varously","variously"],["varriance","variance"],["varriances","variances"],["vartical","vertical"],["vartically","vertically"],["vas","was"],["vasall","vassal"],["vasalls","vassals"],["vaue","value"],["vaule","value"],["vauled","valued"],["vaules","values"],["vauling","valuing"],["vavle","valve"],["vavlue","value"],["vavriable","variable"],["vavriables","variables"],["vbsrcript","vbscript"],["vebrose","verbose"],["vecotr","vector"],["vecotrs","vectors"],["vectices","vertices"],["vectore","vector"],["vectores","vectors"],["vectorss","vectors"],["vectror","vector"],["vectrors","vectors"],["vecvtor","vector"],["vecvtors","vectors"],["vedio","video"],["vefiry","verify"],["vegatarian","vegetarian"],["vegeterian","vegetarian"],["vegitable","vegetable"],["vegitables","vegetables"],["vegtable","vegetable"],["vehicule","vehicle"],["veify","verify"],["veiw","view"],["veiwed","viewed"],["veiwer","viewer"],["veiwers","viewers"],["veiwing","viewing"],["veiwings","viewings"],["veiws","views"],["vektor","vector"],["vektors","vectors"],["velidate","validate"],["vell","well"],["velociries","velocities"],["velociry","velocity"],["vender","vendor"],["venders","vendors"],["venemous","venomous"],["vengance","vengeance"],["vengence","vengeance"],["verbaitm","verbatim"],["verbatum","verbatim"],["verbous","verbose"],["verbouse","verbose"],["verbously","verbosely"],["verbse","verbose"],["verctor","vector"],["verctors","vectors"],["veresion","version"],["veresions","versions"],["verfication","verification"],["verficiation","verification"],["verfier","verifier"],["verfies","verifies"],["verfifiable","verifiable"],["verfification","verification"],["verfifications","verifications"],["verfified","verified"],["verfifier","verifier"],["verfifiers","verifiers"],["verfifies","verifies"],["verfify","verify"],["verfifying","verifying"],["verfires","verifies"],["verfiy","verify"],["verfiying","verifying"],["verfy","verify"],["verfying","verifying"],["verical","vertical"],["verifcation","verification"],["verifiaction","verification"],["verificaion","verification"],["verificaions","verifications"],["verificiation","verification"],["verificiations","verifications"],["verifieing","verifying"],["verifing","verifying"],["verifiy","verify"],["verifiying","verifying"],["verifty","verify"],["veriftying","verifying"],["verifyied","verified"],["verion","version"],["verions","versions"],["veriosn","version"],["veriosns","versions"],["verious","various"],["verison","version"],["verisoned","versioned"],["verisoner","versioner"],["verisoners","versioners"],["verisoning","versioning"],["verisons","versions"],["veritcal","vertical"],["veritcally","vertically"],["veritical","vertical"],["verly","very"],["vermillion","vermilion"],["verndor","vendor"],["verrical","vertical"],["verry","very"],["vershin","version"],["versin","version"],["versino","version"],["versinos","versions"],["versins","versions"],["versio","version"],["versiob","version"],["versioed","versioned"],["versioing","versioning"],["versiom","version"],["versionaddded","versionadded"],["versionm","version"],["versionms","versions"],["versionned","versioned"],["versionning","versioning"],["versios","versions"],["versitilaty","versatility"],["versitile","versatile"],["versitlity","versatility"],["versoin","version"],["versoion","version"],["versoions","versions"],["verson","version"],["versoned","versioned"],["versons","versions"],["vertextes","vertices"],["vertexts","vertices"],["vertial","vertical"],["verticall","vertical"],["verticaly","vertically"],["verticies","vertices"],["verticla","vertical"],["verticlealign","verticalalign"],["vertiece","vertex"],["vertieces","vertices"],["vertifiable","verifiable"],["vertification","verification"],["vertifications","verifications"],["vertify","verify"],["vertikal","vertical"],["vertix","vertex"],["vertixes","vertices"],["vertixs","vertices"],["vertx","vertex"],["veryfieng","verifying"],["veryfy","verify"],["veryified","verified"],["veryifies","verifies"],["veryify","verify"],["veryifying","verifying"],["vesion","version"],["vesions","versions"],["vetex","vertex"],["vetexes","vertices"],["vetod","vetoed"],["vetween","between"],["vew","view"],["veyr","very"],["vhild","child"],["viatnamese","Vietnamese"],["vice-fersa","vice-versa"],["vice-wersa","vice-versa"],["vicefersa","vice-versa"],["viceversa","vice-versa"],["vicewersa","vice-versa"],["videostreamming","videostreaming"],["viee","view"],["viees","views"],["vieport","viewport"],["vieports","viewports"],["vietnamesea","Vietnamese"],["viewtransfromation","viewtransformation"],["vigilence","vigilance"],["vigourous","vigorous"],["vill","will"],["villian","villain"],["villification","vilification"],["villify","vilify"],["vincinity","vicinity"],["vinrator","vibrator"],["vioalte","violate"],["vioaltion","violation"],["violentce","violence"],["violoated","violated"],["violoating","violating"],["violoation","violation"],["violoations","violations"],["virtal","virtual"],["virtaul","virtual"],["virtical","vertical"],["virtiual","virtual"],["virttual","virtual"],["virttually","virtually"],["virtualisaion","virtualisation"],["virtualisaiton","virtualisation"],["virtualizaion","virtualization"],["virtualizaiton","virtualization"],["virtualiziation","virtualization"],["virtualy","virtually"],["virtualzation","virtualization"],["virtuell","virtual"],["virtural","virtual"],["virture","virtue"],["virutal","virtual"],["virutalenv","virtualenv"],["virutalisation","virtualisation"],["virutalise","virtualise"],["virutalised","virtualised"],["virutalization","virtualization"],["virutalize","virtualize"],["virutalized","virtualized"],["virutally","virtually"],["virutals","virtuals"],["virutual","virtual"],["visability","visibility"],["visable","visible"],["visably","visibly"],["visbility","visibility"],["visble","visible"],["visblie","visible"],["visbly","visibly"],["visiable","visible"],["visiably","visibly"],["visibale","visible"],["visibibilty","visibility"],["visibile","visible"],["visibililty","visibility"],["visibilit","visibility"],["visibilty","visibility"],["visibl","visible"],["visibleable","visible"],["visibles","visible"],["visiblities","visibilities"],["visiblity","visibility"],["visiblle","visible"],["visinble","visible"],["visious","vicious"],["visisble","visible"],["visiter","visitor"],["visiters","visitors"],["visitng","visiting"],["visivble","visible"],["vissible","visible"],["visted","visited"],["visting","visiting"],["vistors","visitors"],["visuab","visual"],["visuabisation","visualisation"],["visuabise","visualise"],["visuabised","visualised"],["visuabises","visualises"],["visuabization","visualization"],["visuabize","visualize"],["visuabized","visualized"],["visuabizes","visualizes"],["visuables","visuals"],["visuably","visually"],["visuabs","visuals"],["visuaisation","visualisation"],["visuaise","visualise"],["visuaised","visualised"],["visuaises","visualises"],["visuaization","visualization"],["visuaize","visualize"],["visuaized","visualized"],["visuaizes","visualizes"],["visuale","visual"],["visuales","visuals"],["visualizaion","visualization"],["visualizaiton","visualization"],["visualizaitons","visualizations"],["visualizaton","visualization"],["visualizatons","visualizations"],["visuallisation","visualisation"],["visuallization","visualization"],["visualy","visually"],["visualzation","visualization"],["vitories","victories"],["vitrual","virtual"],["vitrually","virtually"],["vitual","virtual"],["viusally","visually"],["viusualisation","visualisation"],["viwe","view"],["viwed","viewed"],["viweed","viewed"],["viwer","viewer"],["viwers","viewers"],["viwes","views"],["vizualisation","visualisation"],["vizualise","visualise"],["vizualised","visualised"],["vizualize","visualize"],["vizualized","visualized"],["vlarge","large"],["vlaue","value"],["vlaues","values"],["vlone","clone"],["vloned","cloned"],["vlones","clones"],["vlues","values"],["voif","void"],["volatage","voltage"],["volatages","voltages"],["volatge","voltage"],["volatges","voltages"],["volcanoe","volcano"],["volenteer","volunteer"],["volenteered","volunteered"],["volenteers","volunteers"],["voleyball","volleyball"],["volontary","voluntary"],["volonteer","volunteer"],["volonteered","volunteered"],["volonteering","volunteering"],["volonteers","volunteers"],["volounteer","volunteer"],["volounteered","volunteered"],["volounteering","volunteering"],["volounteers","volunteers"],["volumn","volume"],["volumne","volume"],["volums","volume"],["volxel","voxel"],["volxels","voxels"],["vonfig","config"],["vould","would"],["vreity","variety"],["vresion","version"],["vrey","very"],["vriable","variable"],["vriables","variables"],["vriety","variety"],["vrifier","verifier"],["vrifies","verifies"],["vrify","verify"],["vrilog","Verilog"],["vritual","virtual"],["vritualenv","virtualenv"],["vritualisation","virtualisation"],["vritualise","virtualise"],["vritualization","virtualization"],["vritualize","virtualize"],["vrituoso","virtuoso"],["vrsion","version"],["vrsions","versions"],["Vulacn","Vulcan"],["Vulakn","Vulkan"],["vulbearable","vulnerable"],["vulbearabule","vulnerable"],["vulbearbilities","vulnerabilities"],["vulbearbility","vulnerability"],["vulbearbuilities","vulnerabilities"],["vulbearbuility","vulnerability"],["vulberabilility","vulnerability"],["vulberabilites","vulnerabilities"],["vulberabiliti","vulnerability"],["vulberabilitie","vulnerability"],["vulberabilitis","vulnerabilities"],["vulberabilitiy","vulnerability"],["vulberabillities","vulnerabilities"],["vulberabillity","vulnerability"],["vulberabilties","vulnerabilities"],["vulberabilty","vulnerability"],["vulberablility","vulnerability"],["vulberabuilility","vulnerability"],["vulberabuilites","vulnerabilities"],["vulberabuiliti","vulnerability"],["vulberabuilitie","vulnerability"],["vulberabuilities","vulnerabilities"],["vulberabuilitis","vulnerabilities"],["vulberabuilitiy","vulnerability"],["vulberabuility","vulnerability"],["vulberabuillities","vulnerabilities"],["vulberabuillity","vulnerability"],["vulberabuilties","vulnerabilities"],["vulberabuilty","vulnerability"],["vulberabule","vulnerable"],["vulberabulility","vulnerability"],["vulberbilities","vulnerabilities"],["vulberbility","vulnerability"],["vulberbuilities","vulnerabilities"],["vulberbuility","vulnerability"],["vulerabilities","vulnerabilities"],["vulerability","vulnerability"],["vulerable","vulnerable"],["vulerabuilities","vulnerabilities"],["vulerabuility","vulnerability"],["vulerabule","vulnerable"],["vulernabilities","vulnerabilities"],["vulernability","vulnerability"],["vulernable","vulnerable"],["vulnarabilities","vulnerabilities"],["vulnarability","vulnerability"],["vulneabilities","vulnerabilities"],["vulneability","vulnerability"],["vulneable","vulnerable"],["vulnearabilities","vulnerabilities"],["vulnearability","vulnerability"],["vulnearable","vulnerable"],["vulnearabule","vulnerable"],["vulnearbilities","vulnerabilities"],["vulnearbility","vulnerability"],["vulnearbuilities","vulnerabilities"],["vulnearbuility","vulnerability"],["vulnerabilies","vulnerabilities"],["vulnerabiliies","vulnerabilities"],["vulnerabilility","vulnerability"],["vulnerabilites","vulnerabilities"],["vulnerabiliti","vulnerability"],["vulnerabilitie","vulnerability"],["vulnerabilitis","vulnerabilities"],["vulnerabilitiy","vulnerability"],["vulnerabilitu","vulnerability"],["vulnerabiliy","vulnerability"],["vulnerabillities","vulnerabilities"],["vulnerabillity","vulnerability"],["vulnerabilties","vulnerabilities"],["vulnerabilty","vulnerability"],["vulnerablility","vulnerability"],["vulnerablities","vulnerabilities"],["vulnerablity","vulnerability"],["vulnerabuilility","vulnerability"],["vulnerabuilites","vulnerabilities"],["vulnerabuiliti","vulnerability"],["vulnerabuilitie","vulnerability"],["vulnerabuilities","vulnerabilities"],["vulnerabuilitis","vulnerabilities"],["vulnerabuilitiy","vulnerability"],["vulnerabuility","vulnerability"],["vulnerabuillities","vulnerabilities"],["vulnerabuillity","vulnerability"],["vulnerabuilties","vulnerabilities"],["vulnerabuilty","vulnerability"],["vulnerabule","vulnerable"],["vulnerabulility","vulnerability"],["vulnerarbilities","vulnerabilities"],["vulnerarbility","vulnerability"],["vulnerarble","vulnerable"],["vulnerbilities","vulnerabilities"],["vulnerbility","vulnerability"],["vulnerbuilities","vulnerabilities"],["vulnerbuility","vulnerability"],["vulnreabilities","vulnerabilities"],["vulnreability","vulnerability"],["vunerabilities","vulnerabilities"],["vunerability","vulnerability"],["vunerable","vulnerable"],["vyer","very"],["vyre","very"],["waht","what"],["wainting","waiting"],["waisline","waistline"],["waislines","waistlines"],["waitting","waiting"],["wakup","wakeup"],["wallthickness","wall thickness"],["want;s","wants"],["wantto","want to"],["wappers","wrappers"],["warantee","warranty"],["waranties","warranties"],["waranty","warranty"],["wardobe","wardrobe"],["waring","warning"],["warings","warnings"],["warinigs","warnings"],["warining","warning"],["warinings","warnings"],["warks","works"],["warlking","walking"],["warnibg","warning"],["warnibgs","warnings"],["warnig","warning"],["warnign","warning"],["warnigns","warnings"],["warnigs","warnings"],["warniing","warning"],["warniings","warnings"],["warnin","warning"],["warnind","warning"],["warninds","warnings"],["warninf","warning"],["warninfs","warnings"],["warningss","warnings"],["warninig","warning"],["warninigs","warnings"],["warnining","warning"],["warninings","warnings"],["warninng","warning"],["warninngs","warnings"],["warnins","warnings"],["warninsg","warnings"],["warninsgs","warnings"],["warniong","warning"],["warniongs","warnings"],["warnkng","warning"],["warnkngs","warnings"],["warrent","warrant"],["warrents","warrants"],["warrn","warn"],["warrned","warned"],["warrning","warning"],["warrnings","warnings"],["warrriors","warriors"],["was'nt","wasn't"],["was't","wasn't"],["was;t","wasn't"],["wasn;t","wasn't"],["wasnt'","wasn't"],["wasnt","wasn't"],["wasnt;","wasn't"],["wass","was"],["wastefullness","wastefulness"],["watchdong","watchdog"],["watchog","watchdog"],["watermask","watermark"],["wathc","watch"],["wathdog","watchdog"],["wathever","whatever"],["wating","waiting"],["watn","want"],["wavelengh","wavelength"],["wavelenghs","wavelengths"],["wavelenght","wavelength"],["wavelenghts","wavelengths"],["wavelnes","wavelines"],["wayoint","waypoint"],["wayoints","waypoints"],["wayword","wayward"],["weahter","weather"],["weahters","weathers"],["weaponary","weaponry"],["weas","was"],["webage","webpage"],["webbased","web-based"],["webiste","website"],["wedensday","Wednesday"],["wednesay","Wednesday"],["wednesdaay","Wednesday"],["wednesdey","Wednesday"],["wednessday","Wednesday"],["wednsday","Wednesday"],["wege","wedge"],["wehere","where"],["wehn","when"],["wehther","whether"],["weigth","weight"],["weigthed","weighted"],["weigths","weights"],["weilded","wielded"],["weill","will"],["weired","weird"],["weitght","weight"],["wel","well"],["wendesday","Wednesday"],["wendsay","Wednesday"],["wendsday","Wednesday"],["wensday","Wednesday"],["were'nt","weren't"],["wereabouts","whereabouts"],["wereas","whereas"],["weree","were"],["werent","weren't"],["werever","wherever"],["wew","we"],["whant","want"],["whants","wants"],["whataver","whatever"],["whatepsace","whitespace"],["whatepsaces","whitespaces"],["whathever","whatever"],["whch","which"],["whcich","which"],["whcih","which"],["wheh","when"],["whehter","whether"],["wheigh","weigh"],["whem","when"],["whenevery","whenever"],["whenn","when"],["whenver","whenever"],["wheras","whereas"],["wherease","whereas"],["whereever","wherever"],["wherether","whether"],["whery","where"],["wheteher","whether"],["whetehr","whether"],["wheter","whether"],["whethe","whether"],["whethter","whether"],["whever","wherever"],["whheel","wheel"],["whhen","when"],["whic","which"],["whicg","which"],["which;s","which's"],["whichs","which's"],["whicht","which"],["whih","which"],["whihc","which"],["whihch","which"],["whike","while"],["whilest","whilst"],["whiltelist","whitelist"],["whiltelisted","whitelisted"],["whiltelisting","whitelisting"],["whiltelists","whitelists"],["whilw","while"],["whioch","which"],["whishlist","wishlist"],["whitch","which"],["whitchever","whichever"],["whitepsace","whitespace"],["whitepsaces","whitespaces"],["whith","with"],["whithin","within"],["whithout","without"],["whitre","white"],["whitspace","whitespace"],["whitspaces","whitespace"],["whlch","which"],["whle","while"],["whlie","while"],["whn","when"],["whne","when"],["whoes","whose"],["whoknows","who knows"],["wholey","wholly"],["whoose","whose"],["whould","would"],["whre","where"],["whta","what"],["whther","whether"],["whtihin","within"],["whyth","with"],["whythout","without"],["wiat","wait"],["wice","vice"],["wice-versa","vice-versa"],["wice-wersa","vice-versa"],["wiceversa","vice-versa"],["wicewersa","vice-versa"],["wich","which"],["widder","wider"],["widesread","widespread"],["widgect","widget"],["widged","widget"],["widghet","widget"],["widghets","widgets"],["widgit","widget"],["widgtes","widgets"],["widht","width"],["widhtpoint","widthpoint"],["widhtpoints","widthpoints"],["widthn","width"],["widthout","without"],["wief","wife"],["wieghed","weighed"],["wieght","weight"],["wieghts","weights"],["wieh","view"],["wierd","weird"],["wierdly","weirdly"],["wierdness","weirdness"],["wieth","width"],["wiew","view"],["wigdet","widget"],["wigdets","widgets"],["wih","with"],["wihch","which"],["wihich","which"],["wihite","white"],["wihle","while"],["wihout","without"],["wiht","with"],["wihtin","within"],["wihtout","without"],["wiil","will"],["wikpedia","wikipedia"],["wilcard","wildcard"],["wilcards","wildcards"],["wilh","will"],["wille","will"],["willingless","willingness"],["willk","will"],["willl","will"],["windo","window"],["windoes","windows"],["windoow","window"],["windoows","windows"],["windos","windows"],["windowz","windows"],["windwo","window"],["windwos","windows"],["winn","win"],["winndow","window"],["winndows","windows"],["winodw","window"],["wipoing","wiping"],["wirh","with"],["wirte","write"],["wirter","writer"],["wirters","writers"],["wirtes","writes"],["wirting","writing"],["wirtten","written"],["wirtual","virtual"],["witable","writeable"],["witdh","width"],["witdhs","widths"],["witdth","width"],["witdths","widths"],["witheld","withheld"],["withh","with"],["withih","within"],["withinn","within"],["withion","within"],["witho","with"],["withoit","without"],["withold","withhold"],["witholding","withholding"],["withon","within"],["withoout","without"],["withot","without"],["withotu","without"],["withou","without"],["withoud","without"],["withoug","without"],["withough","without"],["withought","without"],["withouht","without"],["withount","without"],["withourt","without"],["withous","without"],["withouth","without"],["withouyt","without"],["withput","without"],["withrawal","withdrawal"],["witht","with"],["withthe","with the"],["withtin","within"],["withun","within"],["withuout","without"],["witin","within"],["witk","with"],["witn","with"],["witout","without"],["witrh","with"],["witth","with"],["wiull","will"],["wiyh","with"],["wiyhout","without"],["wiyth","with"],["wizzard","wizard"],["wjat","what"],["wll","will"],["wlll","will"],["wnated","wanted"],["wnating","wanting"],["wnats","wants"],["woh","who"],["wohle","whole"],["woill","will"],["woithout","without"],["wokr","work"],["wokring","working"],["wolrd","world"],["wolrdly","worldly"],["wolrdwide","worldwide"],["wolwide","worldwide"],["won;t","won't"],["wonderfull","wonderful"],["wonderig","wondering"],["wont't","won't"],["woraround","workaround"],["worarounds","workarounds"],["worbench","workbench"],["worbenches","workbenches"],["worchester","Worcester"],["wordlwide","worldwide"],["wordpres","wordpress"],["worfklow","workflow"],["worfklows","workflows"],["worflow","workflow"],["worflows","workflows"],["workaorund","workaround"],["workaorunds","workarounds"],["workaound","workaround"],["workaounds","workarounds"],["workaraound","workaround"],["workaraounds","workarounds"],["workarbound","workaround"],["workaroud","workaround"],["workaroudn","workaround"],["workaroudns","workarounds"],["workarouds","workarounds"],["workarould","workaround"],["workaroung","workaround"],["workaroungs","workarounds"],["workarround","workaround"],["workarrounds","workarounds"],["workarund","workaround"],["workarunds","workarounds"],["workbanch","workbench"],["workbanches","workbenches"],["workbanchs","workbenches"],["workbenchs","workbenches"],["workbennch","workbench"],["workbennches","workbenches"],["workbnech","workbench"],["workbneches","workbenches"],["workboos","workbooks"],["workes","works"],["workfow","workflow"],["workfows","workflows"],["workign","working"],["worklfow","workflow"],["worklfows","workflows"],["workpsace","workspace"],["workpsaces","workspaces"],["workround","workaround"],["workrounds","workarounds"],["workspce","workspace"],["workspsace","workspace"],["workspsaces","workspaces"],["workstaion","workstation"],["workstaions","workstations"],["workstaition","workstation"],["workstaitions","workstations"],["workstaiton","workstation"],["workstaitons","workstations"],["workststion","workstation"],["workststions","workstations"],["worl","world"],["world-reknown","world renown"],["world-reknowned","world renowned"],["worload","workload"],["worloads","workloads"],["worls","world"],["wornged","wronged"],["worngs","wrongs"],["worrry","worry"],["worser","worse"],["worstened","worsened"],["worthwile","worthwhile"],["woth","worth"],["wothout","without"],["wotk","work"],["wotked","worked"],["wotking","working"],["wotks","works"],["woud","would"],["woudl","would"],["woudn't","wouldn't"],["would'nt","wouldn't"],["would't","wouldn't"],["wouldent","wouldn't"],["woulden`t","wouldn't"],["wouldn;t","wouldn't"],["wouldnt'","wouldn't"],["wouldnt","wouldn't"],["wouldnt;","wouldn't"],["wounderful","wonderful"],["wouold","would"],["wouuld","would"],["wqs","was"],["wraapp","wrap"],["wraapped","wrapped"],["wraapper","wrapper"],["wraappers","wrappers"],["wraapping","wrapping"],["wraapps","wraps"],["wraning","warning"],["wranings","warnings"],["wrapepd","wrapped"],["wraper","wrapper"],["wrapp","wrap"],["wrappered","wrapped"],["wrappng","wrapping"],["wrapps","wraps"],["wresters","wrestlers"],["wriet","write"],["writebufer","writebuffer"],["writechetque","writecheque"],["writeing","writing"],["writen","written"],["writet","writes"],["writewr","writer"],["writingm","writing"],["writters","writers"],["writting","writing"],["writtten","written"],["wrkload","workload"],["wrkloads","workloads"],["wrod","word"],["wroet","wrote"],["wrog","wrong"],["wrok","work"],["wroked","worked"],["wrokflow","workflow"],["wrokflows","workflows"],["wroking","working"],["wrokload","workload"],["wrokloads","workloads"],["wroks","works"],["wron","wrong"],["wronf","wrong"],["wront","wrong"],["wrtie","write"],["wrting","writing"],["wsee","see"],["wser","user"],["wth","with"],["wtih","with"],["wtyle","style"],["wuold","would"],["wupport","support"],["wuth","with"],["wuthin","within"],["wya","way"],["wyth","with"],["wythout","without"],["xdescribe","describe"],["xdpf","xpdf"],["xenophoby","xenophobia"],["xepect","expect"],["xepected","expected"],["xepectedly","expectedly"],["xepecting","expecting"],["xepects","expects"],["xgetttext","xgettext"],["xinitiazlize","xinitialize"],["xmdoel","xmodel"],["xour","your"],["xwindows","X"],["xyou","you"],["yaching","yachting"],["yaer","year"],["yaerly","yearly"],["yaers","years"],["yatch","yacht"],["yearm","year"],["yeasr","years"],["yeild","yield"],["yeilded","yielded"],["yeilding","yielding"],["yeilds","yields"],["yeld","yield"],["yelded","yielded"],["yelding","yielding"],["yelds","yields"],["yello","yellow"],["yera","year"],["yeras","years"],["yersa","years"],["yhe","the"],["yieldin","yielding"],["ymbols","symbols"],["yoman","yeoman"],["yomen","yeomen"],["yot","yacht"],["yotube","youtube"],["youforic","euphoric"],["youforically","euphorically"],["youlogy","eulogy"],["yourselfes","yourselves"],["youself","yourself"],["youthinasia","euthanasia"],["ypes","types"],["yrea","year"],["ytou","you"],["yuforic","euphoric"],["yuforically","euphorically"],["yugoslac","yugoslav"],["yuo","you"],["yuor","your"],["yur","your"],["zar","czar"],["zars","czars"],["zeebra","zebra"],["zefer","zephyr"],["zefers","zephyrs"],["zellot","zealot"],["zellots","zealots"],["zemporary","temporary"],["zick-zack","zig-zag"],["zimmap","zipmap"],["zimpaps","zipmaps"],["zink","zinc"],["ziped","zipped"],["ziper","zipper"],["ziping","zipping"],["zlot","slot"],["zombe","zombie"],["zomebie","zombie"],["zoocheenei","zucchinis"],["zoocheeni","zucchini"],["zoocheinei","zucchinis"],["zoocheini","zucchini"],["zookeenee","zucchini"],["zookeenees","zucchinis"],["zookeenei","zucchinis"],["zookeeni","zucchini"],["zookeinee","zucchini"],["zookeinees","zucchinis"],["zookeinei","zucchinis"],["zookeini","zucchini"],["zucheenei","zucchinis"],["zucheeni","zucchini"],["zukeenee","zucchini"],["zukeenees","zucchinis"],["zukeenei","zucchinis"],["zukeeni","zucchini"],["zuser","user"],["zylophone","xylophone"],["zylophones","xylophone"],["__attribyte__","__attribute__"],["__cpluspus","__cplusplus"],["__cpusplus","__cplusplus"],["\xE9valuate","evaluate"],["\u0441ontain","contain"],["\u0441ontained","contained"],["\u0441ontainer","container"],["\u0441ontainers","containers"],["\u0441ontaining","containing"],["\u0441ontainor","container"],["\u0441ontainors","containers"],["\u0441ontains","contains"]]);var Ir=class{constructor(){this.ignoreWords=[];this.extraAutoCorrectFiles=[]}},qr=class extends y{constructor(){super({nameKey:"rules.auto-correct-common-misspellings.name",descriptionKey:"rules.auto-correct-common-misspellings.description",type:"Content",ruleIgnoreTypes:[h.yaml,h.code,h.inlineCode,h.math,h.inlineMath,h.link,h.wikiLink,h.tag,h.image,h.url]})}get OptionsClass(){return Ir}apply(t,i){return t.replaceAll(kp,n=>this.replaceWordWithCorrectCasing(n,i))}replaceWordWithCorrectCasing(t,i){let n=t.toLowerCase();if(i.ignoreWords.includes(n))return t;if(uc.has(n))return this.determineCorrectedWord(t,uc.get(n));if(i.extraAutoCorrectFiles){for(let r=0;rthis.updateBlockquoteLines(n,this.addSpaceToIndicator)):Pl(t,n=>this.updateBlockquoteLines(n,this.removeSpaceFromIndicator))}removeSpaceFromIndicator(t,i){return i?t.replace(/>[ \t]+>/g,">>"):t.replace(/>[ \t]+/g,">")}addSpaceToIndicator(t,i){let n=t.replace(/>([^ ]|$)/g,"> $1").replace(/>>/g,"> >");return i?n:n.replace(/>(?:[ \t]{2,}|\t+)/g,"> ")}updateBlockquoteLines(t,i){let n=0,r=0,a="",s="",o=0,l=t,c=!1;do{r=l.indexOf(` +`,n),r===-1&&(r=l.length-1,c=!0),[a,o]=xn(l,r-1);let d=o+a.length+1,u=r;c&&u++;let m=l.substring(d,u);if(m.includes(h.math.placeholder)||m.includes(h.code.placeholder)){n++;continue}let p=Ts.test(m);s=i(a,p),o++,l=le(l,o,o+a.length,s),n=r+1+s.length-a.length}while(!c);return l}get optionBuilders(){return[new ee({OptionsClass:Xs,nameKey:"rules.blockquote-style.style.name",descriptionKey:"rules.blockquote-style.style.description",optionsKey:"style",records:[{value:"space",description:"> indicator is followed by a space"},{value:"no space",description:">indicator is not followed by a space"}]})]}};jt=z([y.register],jt);var eo=class{};z([y.noSettingControl()],eo.prototype,"lineContent",2);var Yt=class extends y{constructor(){super({nameKey:"rules.add-blockquote-indentation-on-paste.name",descriptionKey:"rules.add-blockquote-indentation-on-paste.description",type:"Paste"})}get OptionsClass(){return eo}apply(t,i){let n=/^(\s*)((> ?)+) .*/,r=i.lineContent.match(n);if(!r)return t;let a=r[1]??"",s=r[2]??"";return t.trim().replace(/\n/gm,` +${a}${s} `)}get optionBuilders(){return[]}};Yt=z([y.register],Yt);var Pt=class{constructor(){this.style="Title Case";this.ignoreWords=["macOS","iOS","iPhone","iPad","JavaScript","TypeScript","AppleScript","I"];this.lowercaseWords=["a","an","the","aboard","about","abt.","above","abreast","absent","across","after","against","along","aloft","alongside","amid","amidst","mid","midst","among","amongst","anti","apropos","around","round","as","aslant","astride","at","atop","ontop","bar","barring","before","B4","behind","below","beneath","neath","beside","besides","between","'tween","beyond","but","by","chez","circa","c.","ca.","come","concerning","contra","counting","cum","despite","spite","down","during","effective","ere","except","excepting","excluding","failing","following","for","from","in","including","inside","into","less","like","minus","modulo","mod","near","nearer","nearest","next","notwithstanding","of","o'","off","offshore","on","onto","opposite","out","outside","over","o'er","pace","past","pending","per","plus","post","pre","pro","qua","re","regarding","respecting","sans","save","saving","short","since","sub","than","through","thru","throughout","thruout","till","times","to","t'","touching","toward","towards","under","underneath","unlike","until","unto","up","upon","versus","vs.","v.","via","vice","vis-\xE0-vis","wanting","with","w/","w.","c\u0304","within","w/i","without","'thout","w/o","abroad","adrift","aft","afterward","afterwards","ahead","apart","ashore","aside","away","back","backward","backwards","beforehand","downhill","downstage","downstairs","downstream","downward","downwards","downwind","east","eastward","eastwards","forth","forward","forwards","heavenward","heavenwards","hence","henceforth","here","hereby","herein","hereof","hereto","herewith","home","homeward","homewards","indoors","inward","inwards","leftward","leftwards","north","northeast","northward","northwards","northwest","now","onward","onwards","outdoors","outward","outwards","overboard","overhead","overland","overseas","rightward","rightwards","seaward","seawards","skywards","skyward","south","southeast","southwards","southward","southwest","then","thence","thenceforth","there","thereby","therein","thereof","thereto","therewith","together","underfoot","underground","uphill","upstage","upstairs","upstream","upward","upwards","upwind","west","westward","westwards","when","whence","where","whereby","wherein","whereto","wherewith","although","because","considering","given","granted","if","lest","once","provided","providing","seeing","so","supposing","though","unless","whenever","whereas","wherever","while","whilst","ago","according to","as regards","counter to","instead of","owing to","pertaining to","at the behest of","at the expense of","at the hands of","at risk of","at the risk of","at variance with","by dint of","by means of","by virtue of","by way of","for the sake of","for sake of","for lack of","for want of","from want of","in accordance with","in addition to","in case of","in charge of","in compliance with","in conformity with","in contact with","in exchange for","in favor of","in front of","in lieu of","in light of","in the light of","in line with","in place of","in point of","in quest of","in relation to","in regard to","with regard to","in respect to","with respect to","in return for","in search of","in step with","in touch with","in terms of","in the name of","in view of","on account of","on behalf of","on grounds of","on the grounds of","on the part of","on top of","with a view to","with the exception of","\xE0 la","a la","as soon as","as well as","close to","due to","far from","in case","other than","prior to","pursuant to","regardless of","subsequent to","as long as","as much as","as far as","by the time","in as much as","inasmuch","in order to","in order that","even","provide that","if only","whether","whose","whoever","why","how","or not","whatever","what","both","and","or","not only","but also","either","neither","nor","just","rather","no sooner","such","that","yet","is","it"];this.ignoreCasedWords=!0}},Ht=class extends y{constructor(){super({nameKey:"rules.capitalize-headings.name",descriptionKey:"rules.capitalize-headings.description",type:"Heading",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[h.code,h.inlineCode,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Pt}apply(t,i){return t.replace(rt,n=>{if(i.style==="ALL CAPS")return n.toUpperCase();let r=i.style==="First letter",a=n.match(/\S+/g),s=i.ignoreWords,o=i.lowercaseWords,l=!0;for(let c=1;c(n=n.replace(/^---\n+/,`--- `),n=n.replace(/\n+---/,` ---`),i.innerNewLines&&(n=n.replaceAll(/\n{2,}/g,` -`)),n))}get exampleBuilders(){return[new y({description:"Remove blank lines at the start and end of the YAML",before:p` - --- - ${""} - date: today - ${""} - title: unchanged without inner new lines turned on - ${""} - --- - `,after:p` - --- - date: today - ${""} - title: unchanged without inner new lines turned on - --- - `}),new y({description:"Remove blank lines anywhere in YAML with inner new lines set to true",before:p` - --- - ${""} - date: today - ${""} - ${""} - title: remove inner new lines - ${""} - --- - ${""} - # Header 1 - ${""} - ${""} - Body content here. - `,after:p` - --- - date: today - title: remove inner new lines - --- - ${""} - # Header 1 - ${""} - ${""} - Body content here. - `,options:{innerNewLines:!0}})]}get optionBuilders(){return[new U({OptionsClass:gs,nameKey:"rules.compact-yaml.inner-new-lines.name",descriptionKey:"rules.compact-yaml.inner-new-lines.description",optionsKey:"innerNewLines"})]}};Qn=A([b.register],Qn);var ol=class{},Zn=class extends b{constructor(){super({nameKey:"rules.consecutive-blank-lines.name",descriptionKey:"rules.consecutive-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ol}apply(t,i){return t.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` +`)),n))}get optionBuilders(){return[new H({OptionsClass:io,nameKey:"rules.compact-yaml.inner-new-lines.name",descriptionKey:"rules.compact-yaml.inner-new-lines.description",optionsKey:"innerNewLines"})]}};Br=z([y.register],Br);var pc=class{},Fr=class extends y{constructor(){super({nameKey:"rules.consecutive-blank-lines.name",descriptionKey:"rules.consecutive-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return pc}apply(t,i){return t.replace(/(\n([\t\v\f\r \u00a0\u2000-\u200b\u2028-\u2029\u3000]+)?){2,}\n/g,` -`)}get exampleBuilders(){return[new y({description:"Consecutive blank lines are removed",before:p` - Some text - ${""} - ${""} - Some more text - `,after:p` - Some text - ${""} - Some more text - `})]}get optionBuilders(){return[]}};Zn=A([b.register],Zn);var ll=class{},Jn=class extends b{constructor(){super({nameKey:"rules.convert-bullet-list-markers.name",descriptionKey:"rules.convert-bullet-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return ll}apply(t,i){return t.replace(/^([^\S\n]*)([•§])([^\S\n]*)/gm,"$1-$3")}get exampleBuilders(){return[new y({description:"Converts \u2022",before:p` - • item 1 - • item 2 - `,after:p` - - item 1 - - item 2 - `}),new y({description:"Converts \xA7",before:p` - • item 1 - § item 2 - § item 3 - `,after:p` - - item 1 - - item 2 - - item 3 - `})]}get optionBuilders(){return[]}};Jn=A([b.register],Jn);var hs=class{constructor(){this.tabsize=4}},Xn=class extends b{constructor(){super({nameKey:"rules.convert-spaces-to-tabs.name",descriptionKey:"rules.convert-spaces-to-tabs.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return hs}apply(t,i){let n=String(i.tabsize),r=new RegExp("^( *) {"+n+"}","gm");t=this.replaceAllRegexMatches(t,r);let a=new RegExp("^((>( | *))*(>( | )) *) {"+n+"}","gm");return t=this.replaceAllRegexMatches(t,a),t}replaceAllRegexMatches(t,i){for(;t.match(i)!=null;)t=t.replace(i,"$1 ");return t}get exampleBuilders(){return[new y({description:"Converting spaces to tabs with `tabsize = 3`",before:p` - - text with no indention - - text indented with 3 spaces - - text with no indention - - text indented with 6 spaces - `,after:p` - - text with no indention - \t- text indented with 3 spaces - - text with no indention - \t\t- text indented with 6 spaces - `,options:{tabsize:3}}),new y({description:"Converting spaces to tabs with `tabsize = 3` works in blockquotes",before:p` - > - text with no indention - > - text indented with 3 spaces - > - text with no indention - > - text indented with 6 spaces - `,after:p` - > - text with no indention - > \t- text indented with 3 spaces - > - text with no indention - > \t\t- text indented with 6 spaces - `,options:{tabsize:3}})]}get optionBuilders(){return[new cs({OptionsClass:hs,nameKey:"rules.convert-spaces-to-tabs.tabsize.name",descriptionKey:"rules.convert-spaces-to-tabs.tabsize.description",optionsKey:"tabsize"})]}};Xn=A([b.register],Xn);var fs=class{constructor(){this.style="consistent"}},er=class extends b{constructor(){super({nameKey:"rules.emphasis-style.name",descriptionKey:"rules.emphasis-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return fs}apply(t,i){return Pa(t,i.style,"emphasis")}get exampleBuilders(){return[new y({description:"Emphasis indicators should use underscores when style is set to 'underscore'",before:p` - # Emphasis Cases - ${""} - *Test emphasis* - * Test not emphasized * - This is *emphasized* mid sentence - This is *emphasized* mid sentence with a second *emphasis* on the same line - This is ***bold and emphasized*** - This is ***nested bold** and ending emphasized* - This is ***nested emphasis* and ending bold** - ${""} - **Test bold** - ${""} - * List Item1 with *emphasized text* - * List Item2 - `,after:p` - # Emphasis Cases - ${""} - _Test emphasis_ - * Test not emphasized * - This is _emphasized_ mid sentence - This is _emphasized_ mid sentence with a second _emphasis_ on the same line - This is _**bold and emphasized**_ - This is _**nested bold** and ending emphasized_ - This is **_nested emphasis_ and ending bold** - ${""} - **Test bold** - ${""} - * List Item1 with _emphasized text_ - * List Item2 - `,options:{style:"underscore"}}),new y({description:"Emphasis indicators should use asterisks when style is set to 'asterisk'",before:p` - # Emphasis Cases - ${""} - _Test emphasis_ - _ Test not emphasized _ - This is _emphasized_ mid sentence - This is _emphasized_ mid sentence with a second _emphasis_ on the same line - This is ___bold and emphasized___ - This is ___nested bold__ and ending emphasized_ - This is ___nested emphasis_ and ending bold__ - ${""} - __Test bold__ - `,after:p` - # Emphasis Cases - ${""} - *Test emphasis* - _ Test not emphasized _ - This is *emphasized* mid sentence - This is *emphasized* mid sentence with a second *emphasis* on the same line - This is *__bold and emphasized__* - This is *__nested bold__ and ending emphasized* - This is __*nested emphasis* and ending bold__ - ${""} - __Test bold__ - `,options:{style:"asterisk"}}),new y({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:p` - # Emphasis First Emphasis Is an Asterisk - ${""} - *First emphasis* - This is _emphasized_ mid sentence - This is *emphasized* mid sentence with a second _emphasis_ on the same line - This is *__bold and emphasized__* - This is *__nested bold__ and ending emphasized* - This is **_nested emphasis_ and ending bold** - ${""} - __Test bold__ - `,after:p` - # Emphasis First Emphasis Is an Asterisk - ${""} - *First emphasis* - This is *emphasized* mid sentence - This is *emphasized* mid sentence with a second *emphasis* on the same line - This is *__bold and emphasized__* - This is *__nested bold__ and ending emphasized* - This is ***nested emphasis* and ending bold** - ${""} - __Test bold__ - `,options:{style:"consistent"}}),new y({description:"Emphasis indicators should use consistent style based on first emphasis indicator in a file when style is set to 'consistent'",before:p` - # Emphasis First Emphasis Is an Underscore - ${""} - **_First emphasis_** - This is _emphasized_ mid sentence - This is *emphasized* mid sentence with a second _emphasis_ on the same line - This is *__bold and emphasized__* - This is _**nested bold** and ending emphasized_ - This is __*nested emphasis* and ending bold__ - ${""} - __Test bold__ - `,after:p` - # Emphasis First Emphasis Is an Underscore - ${""} - **_First emphasis_** - This is _emphasized_ mid sentence - This is _emphasized_ mid sentence with a second _emphasis_ on the same line - This is ___bold and emphasized___ - This is _**nested bold** and ending emphasized_ - This is ___nested emphasis_ and ending bold__ - ${""} - __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:fs,nameKey:"rules.emphasis-style.style.name",descriptionKey:"rules.emphasis-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};er=A([b.register],er);var cl=class{},ir=class extends b{constructor(){super({nameKey:"rules.empty-line-around-blockquotes.name",descriptionKey:"rules.empty-line-around-blockquotes.description",type:"Spacing"})}get OptionsClass(){return cl}apply(t,i){return Su(t)}get exampleBuilders(){return[new y({description:"Blockquotes that start a document do not get an empty line before them.",before:p` - > Quote content here - > quote content continued - # Title here - `,after:p` - > Quote content here - > quote content continued - ${""} - # Title here - `}),new y({description:"Blockquotes that end a document do not get an empty line after them.",before:p` - # Heading 1 - > Quote content here - > quote content continued - `,after:p` - # Heading 1 - ${""} - > Quote content here - > quote content continued - `}),new y({description:"Blockquotes that are nested have the proper empty line added",before:p` - # Make sure that nested blockquotes are accounted for correctly - > Quote content here - > quote content continued - > > Nested Blockquote - > > content continued - ${""} - **Note that the empty line is either one less blockquote indicator if followed/proceeded by more blockquote content or it is an empty line** - ${""} - # Doubly nested code block - ${""} - > > Quote content here - > > quote content continued - `,after:p` - # Make sure that nested blockquotes are accounted for correctly - ${""} - > Quote content here - > quote content continued - > - > > Nested Blockquote - > > content continued - ${""} - **Note that the empty line is either one less blockquote indicator if followed/proceeded by more blockquote content or it is an empty line** - ${""} - # Doubly nested code block - ${""} - > > Quote content here - > > quote content continued - `})]}get optionBuilders(){return[]}};ir=A([b.register],ir);var dl=class{},tr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-code-fences.name",descriptionKey:"rules.empty-line-around-code-fences.description",type:"Spacing"})}get OptionsClass(){return dl}apply(t,i){return ku(t)}get exampleBuilders(){return[new y({description:"Fenced code blocks that start a document do not get an empty line before them.",before:p` - \`\`\` js - var temp = 'text'; - // this is a code block - \`\`\` - Text after code block. - `,after:p` - \`\`\` js - var temp = 'text'; - // this is a code block - \`\`\` - ${""} - Text after code block. - `}),new y({description:"Fenced code blocks that end a document do not get an empty line after them.",before:p` - # Heading 1 - \`\`\` - Here is a code block - \`\`\` - `,after:p` - # Heading 1 - ${""} - \`\`\` - Here is a code block - \`\`\` - `}),new y({description:"Fenced code blocks that are in a blockquote have the proper empty line added",before:p` - # Make sure that code blocks in blockquotes are accounted for correctly - > \`\`\`js - > var text = 'this is some text'; - > \`\`\` - > - > \`\`\`js - > var other text = 'this is more text'; - > \`\`\` - ${""} - **Note that the blanks blockquote lines added do not have whitespace after them** - ${""} - # Doubly nested code block - ${""} - > > \`\`\`js - > > var other text = 'this is more text'; - > > \`\`\` - `,after:p` - # Make sure that code blocks in blockquotes are accounted for correctly - - > \`\`\`js - > var text = 'this is some text'; - > \`\`\` - > - > \`\`\`js - > var other text = 'this is more text'; - > \`\`\` - ${""} - **Note that the blanks blockquote lines added do not have whitespace after them** - ${""} - # Doubly nested code block - ${""} - > > \`\`\`js - > > var other text = 'this is more text'; - > > \`\`\` - `}),new y({description:"Nested fenced code blocks get empty lines added around them",before:p` - \`\`\`markdown - # Header - ${""} - \`\`\`\`JavaScript - var text = 'some string'; - \`\`\`\` - \`\`\` - `,after:p` - \`\`\`markdown - # Header - ${""} - \`\`\`\`JavaScript - var text = 'some string'; - \`\`\`\` - ${""} - \`\`\` - `})]}get optionBuilders(){return[]}};tr=A([b.register],tr);var ys=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([b.noSettingControl()],ys.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var nr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-math-blocks.name",descriptionKey:"rules.empty-line-around-math-blocks.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code]})}get OptionsClass(){return ys}apply(t,i){return zu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Math blocks that start a document do not get an empty line before them.",before:p` - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - some more text - `,after:p` - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - ${""} - some more text - `}),new y({description:"Math blocks that are singe-line are updated based on the value of `Number of Dollar Signs to Indicate a Math Block` (in this case its value is 2)",before:p` - $$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ - some more text - `,after:p` - $$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ - ${""} - some more text - `}),new y({description:"Math blocks that end a document do not get an empty line after them.",before:p` - Some text - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - `,after:p` - Some text - ${""} - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - `}),new y({description:"Math blocks that are not at the start or the end of the document will have an empty line added before and after them",before:p` - Some text - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - some more text - `,after:p` - Some text - ${""} - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - ${""} - some more text - `}),new y({description:"Math blocks in callouts or blockquotes have the appropriately formatted blank lines added",before:p` - > Math block in blockquote - > $$ - > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - > $$ - ${""} - More content here - ${""} - > Math block doubly nested in blockquote - > > $$ - > > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - > > $$ - `,after:p` - > Math block in blockquote - > - > $$ - > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - > $$ - ${""} - More content here - ${""} - > Math block doubly nested in blockquote - > - > > $$ - > > \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - > > $$ - `})]}get optionBuilders(){return[]}};nr=A([b.register],nr);var ul=class{},rr=class extends b{constructor(){super({nameKey:"rules.empty-line-around-tables.name",descriptionKey:"rules.empty-line-around-tables.description",type:"Spacing",ruleIgnoreTypes:[f.yaml,f.code,f.math,f.inlineMath,f.wikiLink,f.link]})}get OptionsClass(){return ul}apply(t,i){return $u(t)}get exampleBuilders(){return[new y({description:"Tables that start a document do not get an empty line before them.",before:p` - | Column 1 | Column 2 | - |----------|----------| - | foo | bar | - | baz | qux | - | quux | quuz | - More text. - # Heading - ${""} - **Note that text directly following a table is considered part of a table according to github markdown** - `,after:p` - | Column 1 | Column 2 | - |----------|----------| - | foo | bar | - | baz | qux | - | quux | quuz | - ${""} - More text. - # Heading - ${""} - **Note that text directly following a table is considered part of a table according to github markdown** - `}),new y({description:"Tables that end a document do not get an empty line after them.",before:p` - # Heading 1 - | Column 1 | Column 2 | - |----------|----------| - | foo | bar | - | baz | qux | - | quux | quuz | - `,after:p` - # Heading 1 - ${""} - | Column 1 | Column 2 | - |----------|----------| - | foo | bar | - | baz | qux | - | quux | quuz | - `}),new y({description:"Tables that are not at the start or the end of the document will have an empty line added before and after them",before:p` - # Table 1 - | Column 1 | Column 2 | Column 3 | - |----------|----------|----------| - | foo | bar | blob | - | baz | qux | trust | - | quux | quuz | glob | - # Table 2 without Pipe at Start and End - | Column 1 | Column 2 | - :-: | -----------: - bar | baz - foo | bar - # Header for more content - New paragraph. - `,after:p` - # Table 1 - ${""} - | Column 1 | Column 2 | Column 3 | - |----------|----------|----------| - | foo | bar | blob | - | baz | qux | trust | - | quux | quuz | glob | - ${""} - # Table 2 without Pipe at Start and End - ${""} - | Column 1 | Column 2 | - :-: | -----------: - bar | baz - foo | bar - ${""} - # Header for more content - New paragraph. - `}),new y({description:"Tables in callouts or blockquotes have the appropriately formatted blank lines added",before:p` - > Table in blockquote - > | Column 1 | Column 2 | Column 3 | - > |----------|----------|----------| - > | foo | bar | blob | - > | baz | qux | trust | - > | quux | quuz | glob | - ${""} - More content here - ${""} - > Table doubly nested in blockquote - > > | Column 1 | Column 2 | Column 3 | - > > |----------|----------|----------| - > > | foo | bar | blob | - > > | baz | qux | trust | - > > | quux | quuz | glob | - `,after:p` - > Table in blockquote - > - > | Column 1 | Column 2 | Column 3 | - > |----------|----------|----------| - > | foo | bar | blob | - > | baz | qux | trust | - > | quux | quuz | glob | - ${""} - More content here - ${""} - > Table doubly nested in blockquote - > - > > | Column 1 | Column 2 | Column 3 | - > > |----------|----------|----------| - > > | foo | bar | blob | - > > | baz | qux | trust | - > > | quux | quuz | glob | - `})]}get optionBuilders(){return[]}};rr=A([b.register],rr);var ar=class{constructor(){this.defaultEscapeCharacter='"';this.tryToEscapeSingleLineArrays=!1}};A([b.noSettingControl()],ar.prototype,"defaultEscapeCharacter",2);var bt=class extends b{constructor(){super({nameKey:"rules.escape-yaml-special-characters.name",descriptionKey:"rules.escape-yaml-special-characters.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return ar}apply(t,i){return Ae(t,n=>{let r=n.split(` -`),a=r.length;if(a<1)return n;for(let s=0;s=o.length,c=o.startsWith("-"),u=c&&o.length<2;if(d&&u)continue;let m=1;if(!c)m+=l;else if(l!==-1&&s+1( | *))*(>( | )) *) {"+n+"}","gm");return t=this.replaceAllRegexMatches(t,a),t}replaceAllRegexMatches(t,i){for(;t.match(i)!=null;)t=t.replace(i,"$1 ");return t}get optionBuilders(){return[new Qs({OptionsClass:to,nameKey:"rules.convert-spaces-to-tabs.tabsize.name",descriptionKey:"rules.convert-spaces-to-tabs.tabsize.description",optionsKey:"tabsize"})]}};Dr=z([y.register],Dr);var zi=class{constructor(){this.aliasArrayStyle="single-line";this.dedupeAliasKey=!0;this.tagArrayStyle="single-line";this.dedupeTagKey=!0;this.dedupeArrayKeys=!0;this.ignoreDedupeArrayKeys=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};z([y.noSettingControl()],zi.prototype,"aliasArrayStyle",2),z([y.noSettingControl()],zi.prototype,"tagArrayStyle",2),z([y.noSettingControl()],zi.prototype,"defaultEscapeCharacter",2),z([y.noSettingControl()],zi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Kr=class extends y{constructor(){super({nameKey:"rules.dedupe-yaml-array-values.name",descriptionKey:"rules.dedupe-yaml-array-values.description",type:"YAML"})}get OptionsClass(){return zi}apply(t,i){return he(t,n=>{let r=ri(n.replace(`--- +`,"").replace(` +---`,""));if(!r)return n;for(let a of bi)if(i.dedupeAliasKey&&Object.keys(r).includes(a)){n=ae(n,a,be(ot(this.getUniqueArray(qe(de(n,a)))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of yi)if(i.dedupeTagKey&&Object.keys(r).includes(a)){n=ae(n,a,be(st(this.getUniqueArray(qe(de(n,a)))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.dedupeArrayKeys){let a=[...bi,...yi,...i.ignoreDedupeArrayKeys];for(let s of Object.keys(r)){if(a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null)continue;let o=de(n,s),l="single-line";o.includes(` +`)&&(l="multi-line");let c=this.getUniqueArray(qe(o));n=ae(n,s,be(c,l,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}}return n})}getUniqueArray(t){return t==null||typeof t=="string"||t.length<=1?t:[...new Set(t)]}get optionBuilders(){return[new H({OptionsClass:zi,nameKey:"rules.dedupe-yaml-array-values.dedupe-alias-key.name",descriptionKey:"rules.dedupe-yaml-array-values.dedupe-alias-key.description",optionsKey:"dedupeAliasKey"}),new H({OptionsClass:zi,nameKey:"rules.dedupe-yaml-array-values.dedupe-tag-key.name",descriptionKey:"rules.dedupe-yaml-array-values.dedupe-tag-key.description",optionsKey:"dedupeTagKey"}),new H({OptionsClass:zi,nameKey:"rules.dedupe-yaml-array-values.dedupe-array-keys.name",descriptionKey:"rules.dedupe-yaml-array-values.dedupe-array-keys.description",optionsKey:"dedupeArrayKeys"}),new pe({OptionsClass:zi,nameKey:"rules.dedupe-yaml-array-values.ignore-keys.name",descriptionKey:"rules.dedupe-yaml-array-values.ignore-keys.description",optionsKey:"ignoreDedupeArrayKeys"})]}};Kr=z([y.register],Kr);var no=class{constructor(){this.defaultLanguage=""}},_r=class extends y{constructor(){super({nameKey:"rules.default-language-for-code-fences.name",descriptionKey:"rules.default-language-for-code-fences.description",type:"Content",ruleIgnoreTypes:[h.yaml,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return no}apply(t,i){return up(t,i.defaultLanguage)}get optionBuilders(){return[new xe({OptionsClass:no,nameKey:"rules.default-language-for-code-fences.default-language.name",descriptionKey:"rules.default-language-for-code-fences.default-language.description",optionsKey:"defaultLanguage"})]}};_r=z([y.register],_r);var ro=class{constructor(){this.style="consistent"}},Nr=class extends y{constructor(){super({nameKey:"rules.emphasis-style.name",descriptionKey:"rules.emphasis-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.math,h.inlineMath]})}get OptionsClass(){return ro}apply(t,i){return Ss(t,i.style,"emphasis")}get optionBuilders(){return[new ee({OptionsClass:ro,nameKey:"rules.emphasis-style.style.name",descriptionKey:"rules.emphasis-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of emphasis is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure * is the emphasis indicator"},{value:"underscore",description:"Makes sure _ is the emphasis indicator"}]})]}};Nr=z([y.register],Nr);var gc=class{},jr=class extends y{constructor(){super({nameKey:"rules.empty-line-around-blockquotes.name",descriptionKey:"rules.empty-line-around-blockquotes.description",type:"Spacing"})}get OptionsClass(){return gc}apply(t,i){return sp(t)}get optionBuilders(){return[]}};jr=z([y.register],jr);var hc=class{},Yr=class extends y{constructor(){super({nameKey:"rules.empty-line-around-code-fences.name",descriptionKey:"rules.empty-line-around-code-fences.description",type:"Spacing"})}get OptionsClass(){return hc}apply(t,i){return rp(t)}get optionBuilders(){return[]}};Yr=z([y.register],Yr);var ao=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};z([y.noSettingControl()],ao.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var Pr=class extends y{constructor(){super({nameKey:"rules.empty-line-around-math-blocks.name",descriptionKey:"rules.empty-line-around-math-blocks.description",type:"Spacing",ruleIgnoreTypes:[h.yaml,h.code]})}get OptionsClass(){return ao}apply(t,i){return ap(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get optionBuilders(){return[]}};Pr=z([y.register],Pr);var fc=class{},Hr=class extends y{constructor(){super({nameKey:"rules.empty-line-around-tables.name",descriptionKey:"rules.empty-line-around-tables.description",type:"Spacing",ruleIgnoreTypes:[h.yaml,h.code,h.math,h.inlineMath,h.wikiLink,h.link]})}get OptionsClass(){return fc}apply(t,i){return Cp(t)}get optionBuilders(){return[]}};Hr=z([y.register],Hr);var Ur=class{constructor(){this.defaultEscapeCharacter='"';this.tryToEscapeSingleLineArrays=!1}};z([y.noSettingControl()],Ur.prototype,"defaultEscapeCharacter",2);var Ut=class extends y{constructor(){super({nameKey:"rules.escape-yaml-special-characters.name",descriptionKey:"rules.escape-yaml-special-characters.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Ur}apply(t,i){return he(t,n=>{let r=n.split(` +`),a=r.length;if(a<1)return n;for(let s=0;s=o.length,d=o.startsWith("-"),u=d&&o.length<2;if(c&&u)continue;let m=1;if(!d)m+=l;else if(l!==-1&&s+1{for(let r of i.forceYamlEscape){let a=Ce(n,r);if(a!=null){if(a.includes(` -`)||a.startsWith(" [")||tn(a))continue;a=li(a,i.defaultEscapeCharacter,!0),n=Le(n,r," "+a)}}return n})}get exampleBuilders(){return[new y({description:"YAML without anything to escape",before:p` - --- - key: value - otherKey: [] - --- - `,after:p` - --- - key: value - otherKey: [] - --- - `}),new y({description:"Force YAML keys to be escaped with double quotes where not already escaped with `Force YAML Escape on Keys = 'key'\\n'title'\\n'bool'`",before:p` - --- - key: 'Already escaped value' - title: This is a title - bool: false - unaffected: value - --- - ${""} - _Note that the force YAML key option should not be used with arrays._ - `,after:p` - --- - key: 'Already escaped value' - title: "This is a title" - bool: "false" - unaffected: value - --- - ${""} - _Note that the force YAML key option should not be used with arrays._ - `,options:{forceYamlEscape:["key","title","bool"],defaultEscapeCharacter:'"'}})]}get optionBuilders(){return[new be({OptionsClass:lr,nameKey:"rules.force-yaml-escape.force-yaml-escape-keys.name",descriptionKey:"rules.force-yaml-escape.force-yaml-escape-keys.description",optionsKey:"forceYamlEscape"})]}};vt=A([b.register],vt);var ml=class{},xt=class extends b{constructor(){super({nameKey:"rules.format-tags-in-yaml.name",descriptionKey:"rules.format-tags-in-yaml.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return ml}apply(t,i){return Ae(t,n=>n.replace(new RegExp(`\\n(${Hn}|${tl}):(.*?)(?=\\n(?:[A-Za-z-]+?:|---))`,"s"),function(r){return r.replaceAll("#","")}))}get exampleBuilders(){return[new y({description:"Format Tags in YAML frontmatter",before:p` - --- - tags: #one #two #three #nested/four/five - --- - `,after:p` - --- - tags: one two three nested/four/five - --- - `}),new y({description:"Format tags in array",before:p` - --- - tags: [#one #two #three] - --- - `,after:p` - --- - tags: [one two three] - --- - `}),new y({description:"Format tags in array with `tag` as the tags key",before:p` - --- - tag: [#one #two #three] - --- - `,after:p` - --- - tag: [one two three] - --- - `}),new y({description:"Format tags in list",before:p` - --- - tags: - - #tag1 - - #tag2 - --- - `,after:p` - --- - tags: - - tag1 - - tag2 - --- - `})]}get optionBuilders(){return[]}};xt=A([b.register],xt);var Ze=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],Ze.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],Ze.prototype,"tagArrayStyle",2),A([b.noSettingControl()],Ze.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],Ze.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var cr=class extends b{constructor(){super({nameKey:"rules.format-yaml-array.name",descriptionKey:"rules.format-yaml-array.description",type:"YAML"})}get OptionsClass(){return Ze}apply(t,i){return Ae(t,n=>{let r=Mi(n.replace(`--- +`+s),At(t,a,s)}get optionBuilders(){return[]}};Wr=z([y.register],Wr);var yc=class{},Vr=class extends y{constructor(){super({nameKey:"rules.footnote-after-punctuation.name",descriptionKey:"rules.footnote-after-punctuation.description",type:"Footnote",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.footnoteAtStartOfLine,h.footnoteAfterATask]})}get OptionsClass(){return yc}apply(t,i){return t.replace(/(\[\^[^\]]+\]) ?([,.;!:?])/gm,"$2$1")}get optionBuilders(){return[]}};Vr=z([y.register],Vr);var $r=class{constructor(){this.defaultEscapeCharacter='"';this.forceYamlEscape=[]}};z([y.noSettingControl()],$r.prototype,"defaultEscapeCharacter",2);var Wt=class extends y{constructor(){super({nameKey:"rules.force-yaml-escape.name",descriptionKey:"rules.force-yaml-escape.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return $r}apply(t,i){return he(t,n=>{for(let r of i.forceYamlEscape){let a=de(n,r);if(a!=null){if(a.includes(` +`)||a.startsWith(" [")||Tn(a))continue;a=vi(a,i.defaultEscapeCharacter,!0),n=ae(n,r," "+a)}}return n})}get optionBuilders(){return[new pe({OptionsClass:$r,nameKey:"rules.force-yaml-escape.force-yaml-escape-keys.name",descriptionKey:"rules.force-yaml-escape.force-yaml-escape-keys.description",optionsKey:"forceYamlEscape"})]}};Wt=z([y.register],Wt);var bc=class{},Vt=class extends y{constructor(){super({nameKey:"rules.format-tags-in-yaml.name",descriptionKey:"rules.format-tags-in-yaml.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return bc}apply(t,i){return he(t,n=>n.replace(new RegExp(`^(${wr}|${Ul}):[ \\t]*(\\S.*|(?:(?:\\n *- \\S.*)|((?:\\n *- *))*|(\\n([ \\t]+[^\\n]*))*)*)\\n`,"m"),function(r){return r.replaceAll("#","")}))}get optionBuilders(){return[]}};Vt=z([y.register],Vt);var ai=class{constructor(){this.aliasArrayStyle="single-line";this.formatAliasKey=!0;this.tagArrayStyle="single-line";this.formatTagKey=!0;this.defaultArrayStyle="single-line";this.formatArrayKeys=!0;this.forceSingleLineArrayStyle=[];this.forceMultiLineArrayStyle=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};z([y.noSettingControl()],ai.prototype,"aliasArrayStyle",2),z([y.noSettingControl()],ai.prototype,"tagArrayStyle",2),z([y.noSettingControl()],ai.prototype,"defaultEscapeCharacter",2),z([y.noSettingControl()],ai.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Gr=class extends y{constructor(){super({nameKey:"rules.format-yaml-array.name",descriptionKey:"rules.format-yaml-array.description",type:"YAML"})}get OptionsClass(){return ai}apply(t,i){return he(t,n=>{let r=ri(n.replace(`--- `,"").replace(` ----`,""));if(!r)return n;for(let a of Wn)if(i.formatAliasKey&&Object.keys(r).includes(a)){n=Le(n,a,Qe(es(vi(Ce(n,a))),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of $n)if(i.formatTagKey&&Object.keys(r).includes(a)){n=Le(n,a,Qe(Xa(vi(Ce(n,a))),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.formatArrayKeys){let a=[...Wn,...$n,...i.forceMultiLineArrayStyle,...i.forceSingleLineArrayStyle];for(let s of Object.keys(r))a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null||(n=Le(n,s,Qe(vi(Ce(n,s)),i.defaultArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)))}for(let a of i.forceSingleLineArrayStyle)Object.keys(r).includes(a)&&(n=Le(n,a,Qe(vi(Ce(n,a)),"single-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));for(let a of i.forceMultiLineArrayStyle)Object.keys(r).includes(a)&&(n=Le(n,a,Qe(vi(Ce(n,a)),"multi-line",i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays)));return n})}get exampleBuilders(){return[new y({description:"Format tags as a single-line array delimited by spaces and aliases as a multi-line array and format the key `test` to be a single-line array",before:p` - --- - tags: - - computer - - research - aliases: Title 1, Title2 - test: this is a value - --- - ${""} - # Notes: - ${""} - Nesting YAML arrays may result in unexpected results. - ${""} - Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid YAML unless it comes as the last entry in the array. - `,after:p` - --- - tags: [computer, research] - aliases: - - Title 1 - - Title2 - test: [this is a value] - --- - ${""} - # Notes: - ${""} - Nesting YAML arrays may result in unexpected results. - ${""} - Multi-line arrays will have empty values removed only leaving one if it is completely empty. The same is not true for single-line arrays as that is invalid YAML unless it comes as the last entry in the array. - `,options:{aliasArrayStyle:"multi-line",forceSingleLineArrayStyle:["test"]}}),new y({description:"Format tags as a single string with space delimiters, ignore aliases, and format regular YAML arrays as single-line arrays",before:p` - --- - aliases: Typescript - types: - - thought provoking - - peer reviewed - tags: [computer, science, trajectory] - --- - `,after:p` - --- - aliases: Typescript - types: [thought provoking, peer reviewed] - tags: computer science trajectory - --- - `,options:{formatAliasKey:!1,tagArrayStyle:"single string space delimited"}}),new y({description:"Arrays with dictionaries in them are ignored",before:p` - --- - gists: - - id: test123 - url: 'some_url' - filename: file.md - isPublic: true - --- - `,after:p` - --- - gists: - - id: test123 - url: 'some_url' - filename: file.md - isPublic: true - --- - `,options:{formatArrayKeys:!0,defaultArrayStyle:"single-line"}})]}get optionBuilders(){return[new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.alias-key.name",descriptionKey:"rules.format-yaml-array.alias-key.description",optionsKey:"formatAliasKey"}),new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.tag-key.name",descriptionKey:"rules.format-yaml-array.tag-key.description",optionsKey:"formatTagKey"}),new ne({OptionsClass:Ze,nameKey:"rules.format-yaml-array.default-array-style.name",descriptionKey:"rules.format-yaml-array.default-array-style.description",optionsKey:"defaultArrayStyle",records:[{value:"multi-line",description:"```key:\\n - value```"},{value:"single-line",description:"```key: [value]```"}]}),new U({OptionsClass:Ze,nameKey:"rules.format-yaml-array.default-array-keys.name",descriptionKey:"rules.format-yaml-array.default-array-keys.description",optionsKey:"formatArrayKeys"}),new be({OptionsClass:Ze,nameKey:"rules.format-yaml-array.force-single-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-single-line-array-style.description",optionsKey:"forceSingleLineArrayStyle"}),new be({OptionsClass:Ze,nameKey:"rules.format-yaml-array.force-multi-line-array-style.name",descriptionKey:"rules.format-yaml-array.force-multi-line-array-style.description",optionsKey:"forceMultiLineArrayStyle"})]}};cr=A([b.register],cr);var xs=class{constructor(){this.startAtH2=!1}},dr=class extends b{constructor(){super({nameKey:"rules.header-increment.name",descriptionKey:"rules.header-increment.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return xs}apply(t,i){let n=0,r=i.startAtH2?2:1,a=[],s=[0,0,0,0,0,0],o=s.length;return t.replace(Pi,(l,d="",c="",u="",m="",g="")=>{let h=c.length;if(h=h<=o?h:o,s[h-1]>=0&&h=v;x--)s[x]=0}if(s[h-1]<=0){let v=n,x=a.length+r;x=x<=o?x:o;for(let w=v;w{let g=d.length;if(g=g<=o?g:o,s[g-1]>=0&&g=b;f--)s[f]=0}if(s[g-1]<=0){let b=n,f=a.length+r;f=f<=o?f:o;for(let x=b;xn.trimStart())}get exampleBuilders(){return[new y({description:"Removes spaces prior to a heading",before:p` - ${""} ## Other heading preceded by 2 spaces ## - _Note that if the spacing is enough for the header to be considered to be part of a codeblock it will not be affected by this rule._ - `,after:p` - ## Other heading preceded by 2 spaces ## - _Note that if the spacing is enough for the header to be considered to be part of a codeblock it will not be affected by this rule._ - `}),new y({description:"Tags are not affected by this",before:p` - ${""} #test - ${""} # Heading & - `,after:p` - ${""} #test - # Heading & - `})]}get optionBuilders(){return[]}};mr=A([b.register],mr);var ws=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},gr=class extends b{constructor(){super({nameKey:"rules.insert-yaml-attributes.name",descriptionKey:"rules.insert-yaml-attributes.description",type:"YAML"})}get OptionsClass(){return ws}apply(t,i){return t=bi(t),Ae(t,n=>{let r=i.textToInsert.reverse(),a=Mi(n.match(Ge)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,Ke(`--- +$2`),t=t.replace(/^\n+(#+\s.*)/,"$1"),t=t.replace(/(#+\s.*)\n+$/,"$1"),i.emptyLineAfterYaml||(t=t.replace(new RegExp("("+Ge.source+")\\n+(#+\\s.*)"),`$1 +$5`)),t}get optionBuilders(){return[new H({OptionsClass:Jr,nameKey:"rules.heading-blank-lines.bottom.name",descriptionKey:"rules.heading-blank-lines.bottom.description",optionsKey:"bottom"}),new H({OptionsClass:Jr,nameKey:"rules.heading-blank-lines.empty-line-after-yaml.name",descriptionKey:"rules.heading-blank-lines.empty-line-after-yaml.description",optionsKey:"emptyLineAfterYaml"})]}};Zr=z([y.register],Zr);var vc=class{},Xr=class extends y{constructor(){super({nameKey:"rules.headings-start-line.name",descriptionKey:"rules.headings-start-line.description",type:"Heading",ruleIgnoreTypes:[h.code,h.math,h.yaml]})}get OptionsClass(){return vc}apply(t,i){return t.replaceAll(rt,n=>n.trimStart())}get optionBuilders(){return[]}};Xr=z([y.register],Xr);var lo=class{constructor(){this.textToInsert=["aliases: ","tags: "]}},ea=class extends y{constructor(){super({nameKey:"rules.insert-yaml-attributes.name",descriptionKey:"rules.insert-yaml-attributes.description",type:"YAML"})}get OptionsClass(){return lo}apply(t,i){return t=Ci(t),he(t,n=>{let r=i.textToInsert.reverse(),a=ri(n.match(Ge)[1]);for(let s of r){let o=s.split(":")[0];Object.prototype.hasOwnProperty.call(a,o)||(n=n.replace(/^---\n/,Qe(`--- ${s} -`)))}return n})}get exampleBuilders(){return[new y({description:"Insert static lines into YAML frontmatter. Text to insert: `aliases:\ntags: doc\nanimal: dog`",before:p` - --- - animal: cat - --- - `,after:p` - --- - aliases: - tags: doc - animal: cat - --- - `,options:{textToInsert:["aliases:","tags: doc","animal: dog"]}})]}get optionBuilders(){return[new be({OptionsClass:ws,nameKey:"rules.insert-yaml-attributes.text-to-insert.name",descriptionKey:"rules.insert-yaml-attributes.text-to-insert.description",optionsKey:"textToInsert"})]}};gr=A([b.register],gr);var hl=class{},hr=class extends b{constructor(){super({nameKey:"rules.line-break-at-document-end.name",descriptionKey:"rules.line-break-at-document-end.description",type:"Spacing"})}get OptionsClass(){return hl}apply(t,i){return t=t.replace(/\n+$/g,""),t+=` -`,t}get exampleBuilders(){return[new y({description:"Appending a line break to the end of the document.",before:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - `,after:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - ${""} - `}),new y({description:"Removing trailing line breaks to the end of the document, except one.",before:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - ${""} - ${""} - ${""} - `,after:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit. - ${""} - `})]}get optionBuilders(){return[]}};hr=A([b.register],hr);var fl=class{},fr=class extends b{constructor(){super({nameKey:"rules.move-footnotes-to-the-bottom.name",descriptionKey:"rules.move-footnotes-to-the-bottom.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml]})}get OptionsClass(){return fl}apply(t,i){return gu(t)}get exampleBuilders(){return[new y({description:"Moving footnotes to the bottom",before:p` - Lorem ipsum, consectetur adipiscing elit. [^1] Donec dictum turpis quis ipsum pellentesque. - ${""} - [^1]: first footnote - ${""} - Quisque lorem est, fringilla sed enim at, sollicitudin lacinia nisi.[^2] - [^2]: second footnote - ${""} - Maecenas malesuada dignissim purus ac volutpat. - `,after:p` - Lorem ipsum, consectetur adipiscing elit. [^1] Donec dictum turpis quis ipsum pellentesque. - ${""} - Quisque lorem est, fringilla sed enim at, sollicitudin lacinia nisi.[^2] - Maecenas malesuada dignissim purus ac volutpat. - ${""} - [^1]: first footnote - [^2]: second footnote - `})]}get optionBuilders(){return[]}};fr=A([b.register],fr);var ks=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};A([b.noSettingControl()],ks.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var wt=class extends b{constructor(){super({nameKey:"rules.move-math-block-indicators-to-their-own-line.name",descriptionKey:"rules.move-math-block-indicators-to-their-own-line.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode],hasSpecialExecutionOrder:!0})}get OptionsClass(){return ks}apply(t,i){return Tu(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get exampleBuilders(){return[new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2",before:p` - This is left alone: - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - The following is updated: - $$L = \\frac{1}{2} \\rho v^2 S C_L$$ - `,after:p` - This is left alone: - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - The following is updated: - $$ - L = \\frac{1}{2} \\rho v^2 S C_L - $$ - `}),new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 3 and opening indicator is on the same line as the start of the content",before:p` - $$$\\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$$ - `,after:p` - $$$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$$ - `}),new y({description:"Moving math block indicator to its own line when `Number of Dollar Signs to Indicate a Math Block` = 2 and ending indicator is on the same line as the ending line of the content",before:p` - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix}$$ - `,after:p` - $$ - \\boldsymbol{a}=\\begin{bmatrix}a_x \\\\ a_y\\end{bmatrix} - $$ - `})]}get optionBuilders(){return[]}};wt=A([b.register],wt);var Vi=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],Vi.prototype,"tagArrayStyle",2),A([b.noSettingControl()],Vi.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],Vi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var yr=class extends b{constructor(){super({nameKey:"rules.move-tags-to-yaml.name",descriptionKey:"rules.move-tags-to-yaml.description",type:"YAML",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.html,f.wikiLink,f.link]})}get OptionsClass(){return Vi}apply(t,i){let n;return we([f.yaml],t,r=>(n=Wu(r),r)),n.length===0||(t=bi(t),t=Ae(t,r=>{r=r.replace(`--- -`,"").replace("---","");let a=[],s=Hn;for(let d of $n){let c=Ce(r,d);if(c!=null){a=Xa(vi(c)),s=d;break}}let o=new Set;if(typeof a=="string")o.add(a),a=[a];else if(a!=null)for(let d of a)o.add(d);else a=[];for(let d of n){let c=d.trim().substring(1);!o.has(c)&&!i.tagsToIgnore.includes(c)&&(o.add(c),a.push(c))}return`--- -${Le(r,s,Qe(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t=we([f.yaml],t,r=>(i.howToHandleExistingTags!=="Nothing"&&(r=r.replace(jn,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return i.tagsToIgnore.includes(o)?a:i.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),r)),t=t.replace(/(\n---)( |\t)+/,"$1")),t}get exampleBuilders(){return[new y({description:"Move tags from body to YAML with `Tags to ignore = 'ignored-tag'`",before:p` - Text has to do with #test and #markdown - ${""} - #test content here - \`\`\` - #ignored - Code block content is ignored - \`\`\` - ${""} - This inline code \`#ignored content\` - ${""} - #ignored-tag is ignored since it is in the ignored list - `,after:p` - --- - tags: [test, markdown] - --- - Text has to do with #test and #markdown - ${""} - #test content here - \`\`\` - #ignored - Code block content is ignored - \`\`\` - ${""} - This inline code \`#ignored content\` - ${""} - #ignored-tag is ignored since it is in the ignored list - `,options:{tagsToIgnore:["ignored-tag"]}}),new y({description:"Move tags from body to YAML with existing tags retains the already existing ones and only adds new ones",before:p` - --- - tags: [test, tag2] - --- - Text has to do with #test and #markdown - `,after:p` - --- - tags: [test, tag2, markdown] - --- - Text has to do with #test and #markdown - `}),new y({description:"Move tags to YAML frontmatter and then remove hashtags in body content tags when `Body tag operation = 'Remove hashtag'` and `Tags to ignore = 'yet-another-ignored-tag'`.",before:p` - --- - tags: [test, tag2] - --- - Text has to do with #test and #markdown - ${""} - The tag at the end of this line stays as a tag since it is ignored #yet-another-ignored-tag - `,after:p` - --- - tags: [test, tag2, markdown] - --- - Text has to do with test and markdown - ${""} - The tag at the end of this line stays as a tag since it is ignored #yet-another-ignored-tag - `,options:{howToHandleExistingTags:"Remove hashtag",tagsToIgnore:["yet-another-ignored-tag"]}}),new y({description:"Move tags to YAML frontmatter and then remove body content tags when `Body tag operation = 'Remove whole tag'`.",before:p` - --- - tags: [test, tag2] - --- - This document will have #tags removed and spacing around tags is left alone except for the space prior to the hashtag #warning - `,after:p` - --- - tags: [test, tag2, tags, warning] - --- - This document will have removed and spacing around tags is left alone except for the space prior to the hashtag - `,options:{howToHandleExistingTags:"Remove whole tag"}})]}get optionBuilders(){return[new ne({OptionsClass:Vi,nameKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.name",descriptionKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.description",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new be({OptionsClass:Vi,nameKey:"rules.move-tags-to-yaml.tags-to-ignore.name",descriptionKey:"rules.move-tags-to-yaml.tags-to-ignore.description",optionsKey:"tagsToIgnore"})]}};yr=A([b.register],yr);var Ss=class{constructor(){this.noBareURIs=!1}},zs="'\"\u2018\u2019\u201C\u201D`[]",vb=["http","ftp","https","smtp"],br=class extends b{constructor(){super({nameKey:"rules.no-bare-urls.name",descriptionKey:"rules.no-bare-urls.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image,f.inlineCode,f.anchorTag,f.html]})}get OptionsClass(){return Ss}apply(t,i){let n=t.match(Zt);if(n&&(t=this.handleMatches(t,n,!1)),i.noBareURIs){let r=t.match(_u);r&&(t=this.handleMatches(t,r,!0))}return t}handleMatches(t,i,n){let r=0,a=i.length;for(let s=0;s"&&(o=o.substring(0,o.length-1),d--);let c=l===0?void 0:t.charAt(l-1),u=d>=t.length?void 0:t.charAt(d);if(this.skipMatch(c,u,o,n)){r=l+o.length;continue}if(c!=null&&c==="<"&&u!=null&&u===">"){let m=l-1;for(;m>0&&t.charAt(m-1)==="<";)m--;let g=d;for(;g";)g++;t=fe(t,m,g+1,"<"+o+">"),r=l+o.length;continue}t=fe(t,l,l+o.length,"<"+o+">"),r=l+o.length+2}return t}skipMatch(t,i,n,r){let a=t!=null&&zs.includes(t)||zs.includes(n.charAt(0)),s=i!=null&&zs.includes(i)||zs.includes(n.charAt(n.length-1));return a&&s?!0:r?vb.includes(n.substring(0,n.indexOf(":"))):!1}get exampleBuilders(){return[new y({description:"Make sure that links are inside of angle brackets when not in single quotes('), double quotes(\"), or backticks(`)",before:p` - https://github.com - braces around url should stay the same: [https://github.com] - backticks around url should stay the same: \`https://github.com\` - Links mid-sentence should be updated like https://google.com will be. - 'https://github.com' - "https://github.com" - - links should stay the same: [](https://github.com) - https://gitlab.com - `,after:p` - - braces around url should stay the same: [https://github.com] - backticks around url should stay the same: \`https://github.com\` - Links mid-sentence should be updated like will be. - 'https://github.com' - "https://github.com" - - links should stay the same: [](https://github.com) - - `}),new y({description:`Angle brackets are added if the url is not the only text in the single quotes(') or double quotes(")`,before:p` - [https://github.com some text here] - backticks around a url should stay the same: \`https://github.com some text here\` - single quotes around a url should stay the same, but only if the contents of the single quotes is the url: 'https://github.com some text here' - double quotes around a url should stay the same, but only if the contents of the double quotes is the url: "https://github.com some text here" - `,after:p` - [ some text here] - backticks around a url should stay the same: \`https://github.com some text here\` - single quotes around a url should stay the same, but only if the contents of the single quotes is the url: ' some text here' - double quotes around a url should stay the same, but only if the contents of the double quotes is the url: " some text here" - `}),new y({description:"Multiple angle brackets at the start and or end of a url will be reduced down to 1",before:p` - < - > - <> - `,after:p` - - - - `}),new y({description:"Puts angle brackets around URIs when `No Bare URIs` is enabled",before:p` - obsidian://show-plugin?id=cycle-in-sidebar - `,after:p` - - `,options:{noBareURIs:!0}})]}get optionBuilders(){return[new U({OptionsClass:Ss,nameKey:"rules.no-bare-urls.no-bare-uris.name",descriptionKey:"rules.no-bare-urls.no-bare-uris.description",optionsKey:"noBareURIs"})]}};br=A([b.register],br);var xr=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},vr=class extends b{constructor(){super({nameKey:"rules.ordered-list-style.name",descriptionKey:"rules.ordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return xr}apply(t,i){return Au(t,i.numberStyle,i.listEndStyle)}get exampleBuilders(){return[new y({description:"Ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` - 1. Item 1 - 2. Item 2 - 4. Item 3 - ${""} - Some text here - ${""} - 1. Item 1 - 1. Item 2 - 1. Item 3 - `,after:p` - 1. Item 1 - 2. Item 2 - 3. Item 3 - ${""} - Some text here - ${""} - 1. Item 1 - 2. Item 2 - 3. Item 3 - `}),new y({description:"Nested ordered lists have list items set to ascending numerical order when Number Style is `ascending`.",before:p` - 1. Item 1 - 2. Item 2 - 1. Subitem 1 - 5. Subitem 2 - 2. Subitem 3 - 4. Item 3 - `,after:p` - 1. Item 1 - 2. Item 2 - 1. Subitem 1 - 2. Subitem 2 - 3. Subitem 3 - 3. Item 3 - `}),new y({description:"Ordered list in blockquote has list items set to '1.' when Number Style is `lazy`.",before:p` - > 1. Item 1 - > 4. Item 2 - > > 1. Subitem 1 - > > 5. Subitem 2 - > > 2. Subitem 3 - `,after:p` - > 1. Item 1 - > 1. Item 2 - > > 1. Subitem 1 - > > 1. Subitem 2 - > > 1. Subitem 3 - `,options:{numberStyle:"lazy"}}),new y({description:"Ordered list in blockquote has list items set to ascending numerical order when Number Style is `ascending`.",before:p` - > 1. Item 1 - > 4. Item 2 - > > 1. Subitem 1 - > > 5. Subitem 2 - > > 2. Subitem 3 - `,after:p` - > 1. Item 1 - > 2. Item 2 - > > 1. Subitem 1 - > > 2. Subitem 2 - > > 3. Subitem 3 - `}),new y({description:"Nested ordered list has list items set to '1)' when Number Style is `lazy` and Ordered List Indicator End Style is `)`.",before:p` - 1. Item 1 - 2. Item 2 - 1. Subitem 1 - 5. Subitem 2 - 2. Subitem 3 - 4. Item 3 - `,after:p` - 1) Item 1 - 1) Item 2 - 1) Subitem 1 - 1) Subitem 2 - 1) Subitem 3 - 1) Item 3 - `,options:{listEndStyle:")",numberStyle:"lazy"}})]}get optionBuilders(){return[new ne({OptionsClass:xr,nameKey:"rules.ordered-list-style.number-style.name",descriptionKey:"rules.ordered-list-style.number-style.description",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ne({OptionsClass:xr,nameKey:"rules.ordered-list-style.list-end-style.name",descriptionKey:"rules.ordered-list-style.list-end-style.description",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};vr=A([b.register],vr);var yl=class{},wr=class extends b{constructor(){super({nameKey:"rules.paragraph-blank-lines.name",descriptionKey:"rules.paragraph-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return yl}apply(t,i){return bu(t)}get exampleBuilders(){return[new y({description:"Paragraphs should be surrounded by blank lines",before:p` - # H1 - Newlines are inserted. - A paragraph is a line that starts with a letter. - `,after:p` - # H1 - ${""} - Newlines are inserted. - ${""} - A paragraph is a line that starts with a letter. - `}),new y({description:"Paragraphs can be extended via the use of 2 or more spaces at the end of a line or line break html",before:p` - # H1 - Content${" "} - Paragraph content continued
- Paragraph content continued once more
- Last line of paragraph - A new paragraph - # H2 - `,after:p` - # H1 - ${""} - Content${" "} - Paragraph content continued
- Paragraph content continued once more
- Last line of paragraph - ${""} - A new paragraph - ${""} - # H2 - `})]}get optionBuilders(){return[]}};wr=A([b.register],wr);var kr=class{};A([b.noSettingControl()],kr.prototype,"lineContent",2),A([b.noSettingControl()],kr.prototype,"selectedText",2);var kt=class extends b{constructor(){super({nameKey:"rules.prevent-double-checklist-indicator-on-paste.name",descriptionKey:"rules.prevent-double-checklist-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return kr}apply(t,i){let n=Pu.test(i.lineContent),r=Ga.test(t),a=Ga.test(i.selectedText);return!n||!r||a?t:t.replace(Ga,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no checklist indicator in it: `Regular text here`",before:p` - - [ ] Checklist item being pasted - `,after:p` - - [ ] Checklist item being pasted - `,options:{lineContent:"Regular text here",selectedText:""}}),new y({description:"Line being pasted into a blockquote without a checklist indicator is left alone when it lacks a checklist indicator: `> > `",before:p` - - [ ] Checklist item contents here - More content here - `,after:p` - - [ ] Checklist item contents here - More content here - `,options:{lineContent:"> > ",selectedText:""}}),new y({description:"Line being pasted into a blockquote with a checklist indicator has its checklist indicator removed when current line is: `> - [x] `",before:p` - - [ ] Checklist item contents here - More content here - `,after:p` - Checklist item contents here - More content here - `,options:{lineContent:"> - [x] ",selectedText:""}}),new y({description:"Line being pasted with a checklist indicator has its checklist indicator removed when current line is: `- [ ] `",before:p` - - [x] Checklist item 1 - - [ ] Checklist item 2 - `,after:p` - Checklist item 1 - - [ ] Checklist item 2 - `,options:{lineContent:"- [ ] ",selectedText:""}}),new y({description:"Line being pasted as a checklist indicator has its checklist indicator removed when current line is: `- [!] `",before:p` - - [x] Checklist item 1 - - [ ] Checklist item 2 - `,after:p` - Checklist item 1 - - [ ] Checklist item 2 - `,options:{lineContent:"- [!] ",selectedText:""}}),new y({description:"When pasting a checklist and the selected text starts with a checklist, the text to paste should still start with a checklist",before:p` - - [x] Checklist item 1 - - [ ] Checklist item 2 - `,after:p` - - [x] Checklist item 1 - - [ ] Checklist item 2 - `,options:{lineContent:"- [!] Some text here",selectedText:"- [!] Some text here"}})]}get optionBuilders(){return[]}};kt=A([b.register],kt);var zr=class{};A([b.noSettingControl()],zr.prototype,"lineContent",2),A([b.noSettingControl()],zr.prototype,"selectedText",2);var zt=class extends b{constructor(){super({nameKey:"rules.prevent-double-list-item-indicator-on-paste.name",descriptionKey:"rules.prevent-double-list-item-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return zr}apply(t,i){let n=new RegExp(`^${Yn}[*+-] `),r=/^\s*[*+-] /,a=n.test(i.lineContent),s=n.test(i.selectedText),o=r.test(t);return s||!a||!o?t:t.replace(r,"")}get exampleBuilders(){return[new y({description:"Line being pasted is left alone when current line has no list indicator in it: `Regular text here`",before:p` - - List item being pasted - `,after:p` - - List item being pasted - `,options:{lineContent:"Regular text here",selectedText:""}}),new y({description:"Line being pasted into a blockquote without a list indicator is left alone when it lacks a list indicator: `> > `",before:p` - * List item contents here - More content here - `,after:p` - * List item contents here - More content here - `,options:{lineContent:"> > ",selectedText:""}}),new y({description:"Line being pasted into a blockquote with a list indicator is has its list indicator removed when current line is: `> * `",before:p` - + List item contents here - More content here - `,after:p` - List item contents here - More content here - `,options:{lineContent:"> * ",selectedText:""}}),new y({description:"Line being pasted with a list indicator is has its list indicator removed when current line is: `+ `",before:p` - - List item 1 - - List item 2 - `,after:p` - List item 1 - - List item 2 - `,options:{lineContent:"+ ",selectedText:""}}),new y({description:"When pasting a list item and the selected text starts with a list item indicator, the text to paste should still start with a list item indicator",before:p` - - List item 1 - - List item 2 - `,after:p` - - List item 1 - - List item 2 - `,options:{lineContent:"+ ",selectedText:"+ "}})]}get optionBuilders(){return[]}};zt=A([b.register],zt);var bl=class{},St=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis-on-paste.name",descriptionKey:"rules.proper-ellipsis-on-paste.description",type:"Paste"})}get OptionsClass(){return bl}apply(t,i){return t.replaceAll(Ua,"\u2026")}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis even if spaces are present",before:p` - Lorem (...) Impsum. - Lorem (. ..) Impsum. - Lorem (. . .) Impsum. - `,after:p` - Lorem (…) Impsum. - Lorem (…) Impsum. - Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};St=A([b.register],St);var vl=class{},Sr=class extends b{constructor(){super({nameKey:"rules.proper-ellipsis.name",descriptionKey:"rules.proper-ellipsis.description",type:"Content"})}get OptionsClass(){return vl}apply(t,i){return we([f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.image],t,n=>n.replaceAll(Ua,"\u2026"))}get exampleBuilders(){return[new y({description:"Replacing three consecutive dots with an ellipsis.",before:p` - Lorem (...) Impsum. - `,after:p` - Lorem (…) Impsum. - `})]}get optionBuilders(){return[]}};Sr=A([b.register],Sr);var Tb=["a'ight","ain't","amn't","'n'","aren't","'bout","boy's","can't","cap'n","'cause","'cept","could've","couldn't","couldn't've","daren't","daresn't","dasn't","didn't","doesn't","don't","d'ye","d'ya","e'en","e'er","'em","everybody's","everyone's","everything's","fo'c'sle","'gainst","g'day","girl's","giv'n","gi'z","gon't","guy's","hadn't","had've","hasn't","haven't","he'd","he'll","he's","here's","how'd","how'll","how're","how's","I'd","I'd've","I'd'nt","I'd'nt've","If'n","I'll","I'm","I'm'o","I've","isn't","it'd","it'll","it's","let's","loven't","ma'am","mayn't","may've","mightn't","might've","mine's","mustn't","mustn't've","must've","'neath","needn't","ne'er","o'clock","o'er","ol'","ought've","oughtn't","oughtn't've","'round","shalln't","shan'","shan't","she'd","she'll","she's","should've","shouldn't","shouldn't've","somebody's","someone's","something's","so're","so's","so've","that'll","that're","that's","that'd","there'd","there'll","there're","there's","these're","these've","they'd","they'd've","they'll","they're","they've","this's","those're","those've","'thout","'til","'tis","to've","'twas","'tween","'twere","w'all","w'at","wasn't","we'd","we'd've","we'll","we're","we've","weren't","what'd","what'll","what're","what's","what've","when's","where'd","where'll","where're","where's","where've","which'd","which'll","which're","which's","which've","who'd","who'd've","who'll","who're","who's","who've","why'd","why're","why's","willn't","won't","would've","wouldn't","wouldn't've","y'ain't","y'all","y'all'd've","y'all'd'n't've","y'all're","y'all'ren't","y'at","yes'm","y'know","you'd","you'll","you're","you've","when'd","willn't"],At=class{constructor(){this.singleQuoteStyleEnabled=!0;this.singleQuoteStyle="''";this.doubleQuoteStyleEnabled=!0;this.doubleQuoteStyle='""'}},Ar=class extends b{constructor(){super({nameKey:"rules.quote-style.name",descriptionKey:"rules.quote-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.math,f.inlineMath,f.html,f.templaterCommand]})}get OptionsClass(){return At}apply(t,i){let n=t;return i.doubleQuoteStyleEnabled&&(i.doubleQuoteStyle==='""'?n=this.convertSmartDoubleQuotesToStraightQuotes(n):n=this.convertStraightDoubleQuotesToDoubleSmartQuotes(n)),i.singleQuoteStyleEnabled&&(i.singleQuoteStyle==="''"?n=this.convertSmartSingleQuotesToStraightQuotes(n):n=this.convertStraightSingleQuotesToSingleSmartQuotes(n)),n}convertSmartSingleQuotesToStraightQuotes(t){return t.replace(Ku,"'")}convertSmartDoubleQuotesToStraightQuotes(t){return t.replace(ju,'"')}convertStraightDoubleQuotesToDoubleSmartQuotes(t){this.throwErrorIfNotEqualNumberOfQuotes(t,'"');let i="\u201C\u201D"[0],n="\u201C\u201D"[1],r=0;return t=t.replaceAll('"',()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertStraightSingleQuotesToSingleSmartQuotes(t){let i="\u2018\u2019"[0],n="\u2018\u2019"[1];t=this.convertContractionStraightQuotesToSmartQuotes(t,i,n),t=this.convertPossessiveStraightQuotesToSmartQuotes(t,n),this.throwErrorIfNotEqualNumberOfQuotes(t,"'");let r=0;return t=t.replaceAll("'",()=>{let a=i;return r%2===1&&(a=n),r++,a}),t}convertContractionStraightQuotesToSmartQuotes(t,i,n){let r=function(a){return a[0]==="'"&&(a=i+a.substring(1)),a.replaceAll("'",n)};for(let a of Tb)t=t.replace(new RegExp(a,"gi"),r);return t}convertPossessiveStraightQuotesToSmartQuotes(t,i){return t.replace(/([a-zA-Z0-9]'s|s')/g,n=>n.replace("'",i))}throwErrorIfNotEqualNumberOfQuotes(t,i){if(qn(t,i)%2!==0)throw new Error(T("logs.uneven-amount-of-quotes").replace("{QUOTE}",i))}get exampleBuilders(){return[new y({description:"Smart quotes used in file are converted to straight quotes when styles are set to `Straight`",before:p` - # Double Quote Cases - “There are a bunch of different kinds of smart quote indicators” - „More than you would think” - «Including this one for Spanish» - # Single Quote Cases - ‘Simple smart quotes get replaced’ - ‚Another single style smart quote also gets replaced’ - ‹Even this style of single smart quotes is replaced› - `,after:p` - # Double Quote Cases - "There are a bunch of different kinds of smart quote indicators" - "More than you would think" - "Including this one for Spanish" - # Single Quote Cases - 'Simple smart quotes get replaced' - 'Another single style smart quote also gets replaced' - 'Even this style of single smart quotes is replaced' - `}),new y({description:"Straight quotes used in file are converted to smart quotes when styles are set to `Smart`",before:p` - "As you can see, these double quotes will be converted to smart quotes" - "Common contractions are handled as well. For example can't is updated to smart quotes." - "Nesting a quote in a quote like so: 'here I am' is handled correctly" - 'Single quotes by themselves are handled correctly' - Possessives are handled correctly: Pam's dog is really cool! - Templater commands are ignored: <% tp.date.now("YYYY-MM-DD", 7) %> - ${""} - Be careful as converting straight quotes to smart quotes requires you to have an even amount of quotes - once possessives and common contractions have been dealt with. If not, it will throw an error. - `,after:p` - “As you can see, these double quotes will be converted to smart quotes” - “Common contractions are handled as well. For example can’t is updated to smart quotes.” - “Nesting a quote in a quote like so: ‘here I am’ is handled correctly” - ‘Single quotes by themselves are handled correctly’ - Possessives are handled correctly: Pam’s dog is really cool! - Templater commands are ignored: <% tp.date.now("YYYY-MM-DD", 7) %> - ${""} - Be careful as converting straight quotes to smart quotes requires you to have an even amount of quotes - once possessives and common contractions have been dealt with. If not, it will throw an error. - `,options:{singleQuoteStyle:"\u2018\u2019",doubleQuoteStyle:"\u201C\u201D"}})]}get optionBuilders(){return[new U({OptionsClass:At,nameKey:"rules.quote-style.single-quote-enabled.name",descriptionKey:"rules.quote-style.single-quote-enabled.description",optionsKey:"singleQuoteStyleEnabled"}),new ne({OptionsClass:At,nameKey:"rules.quote-style.single-quote-style.name",descriptionKey:"rules.quote-style.single-quote-style.description",optionsKey:"singleQuoteStyle",records:[{value:"''",description:`Uses "'" instead of smart single quotes`},{value:"\u2018\u2019",description:'Uses "\u2018" and "\u2019" instead of straight single quotes'}]}),new U({OptionsClass:At,nameKey:"rules.quote-style.double-quote-enabled.name",descriptionKey:"rules.quote-style.double-quote-enabled.description",optionsKey:"doubleQuoteStyleEnabled"}),new ne({OptionsClass:At,nameKey:"rules.quote-style.double-quote-style.name",descriptionKey:"rules.quote-style.double-quote-style.description",optionsKey:"doubleQuoteStyle",records:[{value:'""',description:`Uses '"' instead of smart double quotes`},{value:"\u201C\u201D",description:"Uses '\u201C' and '\u201D' instead of straight double quotes"}]})]}};Ar=A([b.register],Ar);var xl=class{},Lr=class extends b{constructor(){super({nameKey:"rules.re-index-footnotes.name",descriptionKey:"rules.re-index-footnotes.description",type:"Footnote",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return xl}apply(t,i){return hu(t)}get exampleBuilders(){return[new y({description:"Re-indexing footnotes after having deleted previous footnotes",before:p` - Lorem ipsum at aliquet felis.[^3] Donec dictum turpis quis pellentesque,[^5] et iaculis tortor condimentum. - ${""} - [^3]: first footnote - [^5]: second footnote - `,after:p` - Lorem ipsum at aliquet felis.[^1] Donec dictum turpis quis pellentesque,[^2] et iaculis tortor condimentum. - ${""} - [^1]: first footnote - [^2]: second footnote - `}),new y({description:"Re-indexing footnotes after inserting a footnote between",before:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^1a] Vestibulum nec blandit felis, vulputate finibus purus.[^2] Praesent quis iaculis diam. - ${""} - [^1]: first footnote - [^1a]: third footnote, inserted later - [^2]: second footnotes - `,after:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^2] Vestibulum nec blandit felis, vulputate finibus purus.[^3] Praesent quis iaculis diam. - ${""} - [^1]: first footnote - [^2]: third footnote, inserted later - [^3]: second footnotes - `}),new y({description:"Re-indexing footnotes preserves multiple references to the same footnote index",before:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^1a] Vestibulum nec blandit felis, vulputate finibus purus.[^2] Praesent quis iaculis diam.[^1] - ${""} - [^1]: first footnote - [^1a]: third footnote, inserted later - [^2]: second footnotes - `,after:p` - Lorem ipsum dolor sit amet, consectetur adipiscing elit.[^1] Aenean at aliquet felis. Donec dictum turpis quis ipsum pellentesque, et iaculis tortor condimentum.[^2] Vestibulum nec blandit felis, vulputate finibus purus.[^3] Praesent quis iaculis diam.[^1] - ${""} - [^1]: first footnote - [^2]: third footnote, inserted later - [^3]: second footnotes - `}),new y({description:"Re-indexing footnotes condense duplicate footnotes into 1 when key and footnote are the same",before:p` - bla[^1], bla[^1], bla[^2] - [^1]: bla - [^1]: bla - [^2]: bla - `,after:p` - bla[^1], bla[^1], bla[^2] - ${""} - [^1]: bla - [^2]: bla - `})]}get optionBuilders(){return[]}};Lr=A([b.register],Lr);var wl=class{},Tr=class extends b{constructor(){super({nameKey:"rules.remove-consecutive-list-markers.name",descriptionKey:"rules.remove-consecutive-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return wl}apply(t,i){return t.replace(/^([ |\t]*)- - \b/gm,"$1- ")}get exampleBuilders(){return[new y({description:"Removing consecutive list markers.",before:p` - - item 1 - - - copypasted item A - - item 2 - - indented item - - - copypasted item B - `,after:p` - - item 1 - - copypasted item A - - item 2 - - indented item - - copypasted item B - `})]}get optionBuilders(){return[]}};Tr=A([b.register],Tr);var kl=class{},Er=class extends b{constructor(){super({nameKey:"rules.remove-empty-lines-between-list-markers-and-checklists.name",descriptionKey:"rules.remove-empty-lines-between-list-markers-and-checklists.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag,f.thematicBreak]});this.replaceEmptyLinesBetweenList=function(i,n){let r=new RegExp(`^${n} +`)))}return n})}get optionBuilders(){return[new pe({OptionsClass:lo,nameKey:"rules.insert-yaml-attributes.text-to-insert.name",descriptionKey:"rules.insert-yaml-attributes.text-to-insert.description",optionsKey:"textToInsert"})]}};ea=z([y.register],ea);var xc=class{},ia=class extends y{constructor(){super({nameKey:"rules.line-break-at-document-end.name",descriptionKey:"rules.line-break-at-document-end.description",type:"Spacing"})}get OptionsClass(){return xc}apply(t,i){return t=t.replace(/\n+$/g,""),t+=` +`,t}get optionBuilders(){return[]}};ia=z([y.register],ia);var wc=class{},ta=class extends y{constructor(){super({nameKey:"rules.move-footnotes-to-the-bottom.name",descriptionKey:"rules.move-footnotes-to-the-bottom.description",type:"Footnote",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml]})}get OptionsClass(){return wc}apply(t,i){return Zu(t)}get optionBuilders(){return[]}};ta=z([y.register],ta);var co=class{constructor(){this.minimumNumberOfDollarSignsToBeAMathBlock=2}};z([y.noSettingControl()],co.prototype,"minimumNumberOfDollarSignsToBeAMathBlock",2);var $t=class extends y{constructor(){super({nameKey:"rules.move-math-block-indicators-to-their-own-line.name",descriptionKey:"rules.move-math-block-indicators-to-their-own-line.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.inlineCode],hasSpecialExecutionOrder:!0})}get OptionsClass(){return co}apply(t,i){return cp(t,i.minimumNumberOfDollarSignsToBeAMathBlock)}get optionBuilders(){return[]}};$t=z([y.register],$t);var gt=class{constructor(){this.tagArrayStyle="single-line";this.howToHandleExistingTags="Nothing";this.tagsToIgnore=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};z([y.noSettingControl()],gt.prototype,"tagArrayStyle",2),z([y.noSettingControl()],gt.prototype,"defaultEscapeCharacter",2),z([y.noSettingControl()],gt.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var na=class extends y{constructor(){super({nameKey:"rules.move-tags-to-yaml.name",descriptionKey:"rules.move-tags-to-yaml.description",type:"YAML",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.html,h.wikiLink,h.link]})}get OptionsClass(){return gt}apply(t,i){let n;return Ee([h.yaml],t,r=>(n=Op(r),r)),n.length===0||(t=Ci(t),t=he(t,r=>{r=r.replace(`--- +`,"").replace("---","");let a=[],s=wr;for(let c of yi){let d=de(r,c);if(d!=null){a=st(qe(d)),s=c;break}}let o=new Set;if(typeof a=="string")o.add(a),a=[a];else if(a!=null)for(let c of a)o.add(c);else a=[];for(let c of n){let d=c.trim().substring(1);!o.has(d)&&!i.tagsToIgnore.includes(d)&&(o.add(d),a.push(d))}return`--- +${ae(r,s,be(a,i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}---`}),t=Ee([h.yaml],t,r=>(i.howToHandleExistingTags!=="Nothing"&&(r=r.replace(br,a=>{let s=a.indexOf("#"),o=a.substring(s+1);return i.tagsToIgnore.includes(o)?a:i.howToHandleExistingTags==="Remove hashtag"?a.substring(0,s)+o:""})),r)),t=t.replace(/(\n---)( |\t)+/,"$1")),t}get optionBuilders(){return[new ee({OptionsClass:gt,nameKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.name",descriptionKey:"rules.move-tags-to-yaml.how-to-handle-existing-tags.description",optionsKey:"howToHandleExistingTags",records:[{value:"Nothing",description:"Leaves tags in the body of the file alone"},{value:"Remove hashtag",description:"Removes `#` from tags in content body after moving them to the YAML frontmatter"},{value:"Remove whole tag",description:"Removes the whole tag in content body after moving them to the YAML frontmatter. _Note that this removes the first space prior to the tag as well_"}]}),new pe({OptionsClass:gt,nameKey:"rules.move-tags-to-yaml.tags-to-ignore.name",descriptionKey:"rules.move-tags-to-yaml.tags-to-ignore.description",optionsKey:"tagsToIgnore"})]}};na=z([y.register],na);var po=class{constructor(){this.noBareURIs=!1}},uo="'\"\u2018\u2019\u201C\u201D`[]",nx=["http","ftp","https","smtp"],ra=class extends y{constructor(){super({nameKey:"rules.no-bare-urls.name",descriptionKey:"rules.no-bare-urls.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.image,h.inlineCode,h.anchorTag,h.html]})}get OptionsClass(){return po}apply(t,i){let n=t.match(Ct);if(n&&(t=this.handleMatches(t,n,!1)),i.noBareURIs){let r=t.match(xp);r&&(t=this.handleMatches(t,r,!0))}return t}handleMatches(t,i,n){let r=0,a=i.length;for(let s=0;s"&&(o=o.substring(0,o.length-1),c--);let d=l===0?void 0:t.charAt(l-1),u=c>=t.length?void 0:t.charAt(c),m=Xi(o,"(");if(m!=0&&m!=Xi(o,")")&&u==")"?(o+=u,c++,u=c>=t.length?void 0:t.charAt(c)):m==0&&o.endsWith(")")&&(u=")",c--,o=o.substring(0,o.length-1)),this.skipMatch(d,u,o,n)){r=l+o.length;continue}if(d!=null&&d==="<"&&u!=null&&u===">"){let p=l-1;for(;p>0&&t.charAt(p-1)==="<";)p--;let g=c;for(;g";)g++;t=le(t,p,g+1,"<"+o+">"),r=l+o.length;continue}t=le(t,l,l+o.length,"<"+o+">"),r=l+o.length+2}return t}skipMatch(t,i,n,r){let a=t!=null&&uo.includes(t)||uo.includes(n.charAt(0)),s=i!=null&&uo.includes(i)||uo.includes(n.charAt(n.length-1));return a&&s?!0:r?nx.includes(n.substring(0,n.indexOf(":"))):!1}get optionBuilders(){return[new H({OptionsClass:po,nameKey:"rules.no-bare-urls.no-bare-uris.name",descriptionKey:"rules.no-bare-urls.no-bare-uris.description",optionsKey:"noBareURIs"})]}};ra=z([y.register],ra);var sa=class{constructor(){this.numberStyle="ascending";this.listEndStyle="."}},aa=class extends y{constructor(){super({nameKey:"rules.ordered-list-style.name",descriptionKey:"rules.ordered-list-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.tag]})}get OptionsClass(){return sa}apply(t,i){return op(t,i.numberStyle,i.listEndStyle)}get optionBuilders(){return[new ee({OptionsClass:sa,nameKey:"rules.ordered-list-style.number-style.name",descriptionKey:"rules.ordered-list-style.number-style.description",optionsKey:"numberStyle",records:[{value:"ascending",description:"Makes sure ordered list items are ascending (i.e. 1, 2, 3, etc.)"},{value:"lazy",description:"Makes sure ordered list item indicators all are the number 1"}]}),new ee({OptionsClass:sa,nameKey:"rules.ordered-list-style.list-end-style.name",descriptionKey:"rules.ordered-list-style.list-end-style.description",optionsKey:"listEndStyle",records:[{value:".",description:"Makes sure ordered list items indicators end in '.' (i.e `1.`)"},{value:")",description:"Makes sure ordered list item indicators end in ')' (i.e. `1)`)"}]})]}};aa=z([y.register],aa);var kc=class{},oa=class extends y{constructor(){super({nameKey:"rules.paragraph-blank-lines.name",descriptionKey:"rules.paragraph-blank-lines.description",type:"Spacing",ruleIgnoreTypes:[h.obsidianMultiLineComments,h.yaml,h.table]})}get OptionsClass(){return kc}apply(t,i){return ep(t)}get optionBuilders(){return[]}};oa=z([y.register],oa);var la=class{};z([y.noSettingControl()],la.prototype,"lineContent",2),z([y.noSettingControl()],la.prototype,"selectedText",2);var Gt=class extends y{constructor(){super({nameKey:"rules.prevent-double-checklist-indicator-on-paste.name",descriptionKey:"rules.prevent-double-checklist-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return la}apply(t,i){let n=Tp.test(i.lineContent),r=Ms.test(t),a=Ms.test(i.selectedText);return!n||!r||a?t:t.replace(Ms,"")}get optionBuilders(){return[]}};Gt=z([y.register],Gt);var ca=class{};z([y.noSettingControl()],ca.prototype,"lineContent",2),z([y.noSettingControl()],ca.prototype,"selectedText",2);var Qt=class extends y{constructor(){super({nameKey:"rules.prevent-double-list-item-indicator-on-paste.name",descriptionKey:"rules.prevent-double-list-item-indicator-on-paste.description",type:"Paste"})}get OptionsClass(){return ca}apply(t,i){let n=new RegExp(`^${xr}[*+-] `),r=/^\s*[*+-] /,a=n.test(i.lineContent),s=n.test(i.selectedText),o=r.test(t);return s||!a||!o?t:t.replace(r,"")}get optionBuilders(){return[]}};Qt=z([y.register],Qt);var zc=class{},Zt=class extends y{constructor(){super({nameKey:"rules.proper-ellipsis-on-paste.name",descriptionKey:"rules.proper-ellipsis-on-paste.description",type:"Paste"})}get OptionsClass(){return zc}apply(t,i){return t.replaceAll(Os,"\u2026")}get optionBuilders(){return[]}};Zt=z([y.register],Zt);var Ac=class{},da=class extends y{constructor(){super({nameKey:"rules.proper-ellipsis.name",descriptionKey:"rules.proper-ellipsis.description",type:"Content"})}get OptionsClass(){return Ac}apply(t,i){return Ee([h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.image],t,n=>n.replaceAll(Os,"\u2026"))}get optionBuilders(){return[]}};da=z([y.register],da);var Jt=class{constructor(){this.singleQuoteStyleEnabled=!0;this.singleQuoteStyle="''";this.doubleQuoteStyleEnabled=!0;this.doubleQuoteStyle='""'}},ua=class extends y{constructor(){super({nameKey:"rules.quote-style.name",descriptionKey:"rules.quote-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.math,h.inlineMath,h.html,h.link,h.wikiLink,h.templaterCommand,h.image]})}get OptionsClass(){return Jt}apply(t,i){let n=t;return i.doubleQuoteStyleEnabled&&(i.doubleQuoteStyle==='""'?n=this.convertSmartDoubleQuotesToStraightQuotes(n):n=this.convertStraightQuoteToSmartQuote(n,'"',"\u201C\u201D"[0],"\u201C\u201D"[1],!1)),i.singleQuoteStyleEnabled&&(i.singleQuoteStyle==="''"?n=this.convertSmartSingleQuotesToStraightQuotes(n):n=this.convertStraightQuoteToSmartQuote(n,"'","\u2018\u2019"[0],"\u2018\u2019"[1],!0)),n}convertSmartSingleQuotesToStraightQuotes(t){return t.replace(Sp,"'")}convertSmartDoubleQuotesToStraightQuotes(t){return t.replace(Ap,'"')}convertStraightQuoteToSmartQuote(t,i,n,r,a){let s=mu(i,t);if(s.length===0)return t;let o=t.length-1,l,c="",d="",u=!1,m=!1,p=!1,g=!1,b=!1,f="";for(let x of s)c=x==0?"":t.charAt(x-1),d=x===o?"":t.charAt(x+1),u=Hl.test(c),m=Hl.test(d),b=u&&m,p=c!=""&&c.trim()==="",g=d!=""&&d.trim()==="",b&&a?l=r:g&&!p?(l=r,f=l):p&&!g?(l=n,f=l):(f===""||f===r?l=n:l=r,f=l),t=le(t,x,x+1,l);return t}get optionBuilders(){return[new H({OptionsClass:Jt,nameKey:"rules.quote-style.single-quote-enabled.name",descriptionKey:"rules.quote-style.single-quote-enabled.description",optionsKey:"singleQuoteStyleEnabled"}),new ee({OptionsClass:Jt,nameKey:"rules.quote-style.single-quote-style.name",descriptionKey:"rules.quote-style.single-quote-style.description",optionsKey:"singleQuoteStyle",records:[{value:"''",description:`Uses "'" instead of smart single quotes`},{value:"\u2018\u2019",description:'Uses "\u2018" and "\u2019" instead of straight single quotes'}]}),new H({OptionsClass:Jt,nameKey:"rules.quote-style.double-quote-enabled.name",descriptionKey:"rules.quote-style.double-quote-enabled.description",optionsKey:"doubleQuoteStyleEnabled"}),new ee({OptionsClass:Jt,nameKey:"rules.quote-style.double-quote-style.name",descriptionKey:"rules.quote-style.double-quote-style.description",optionsKey:"doubleQuoteStyle",records:[{value:'""',description:`Uses '"' instead of smart double quotes`},{value:"\u201C\u201D",description:"Uses '\u201C' and '\u201D' instead of straight double quotes"}]})]}};ua=z([y.register],ua);var Sc=class{},pa=class extends y{constructor(){super({nameKey:"rules.re-index-footnotes.name",descriptionKey:"rules.re-index-footnotes.description",type:"Footnote",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.tag]})}get OptionsClass(){return Sc}apply(t,i){return Ju(t)}get optionBuilders(){return[]}};pa=z([y.register],pa);var Lc=class{},ma=class extends y{constructor(){super({nameKey:"rules.remove-consecutive-list-markers.name",descriptionKey:"rules.remove-consecutive-list-markers.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Lc}apply(t,i){return t.replace(/^([ |\t]*)- - \b/gm,"$1- ")}get optionBuilders(){return[]}};ma=z([y.register],ma);var Tc=class{},ga=class extends y{constructor(){super({nameKey:"rules.remove-empty-lines-between-list-markers-and-checklists.name",descriptionKey:"rules.remove-empty-lines-between-list-markers-and-checklists.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag,h.thematicBreak]});this.replaceEmptyLinesBetweenList=function(i,n){let r=new RegExp(`^${n} {2,}${n}$`,"gm"),a,s=i;do a=s.match(r),s=s.replaceAll(r,`$1 -$4`);while(a);return s}}get OptionsClass(){return kl}apply(i,n){let r=`(( |\\t)*- ${Jt}( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,r);let a="(( |\\t)*\\d+\\.( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,a);let s="(( |\\t)*\\+( |\\t)+.+)";i=this.replaceEmptyLinesBetweenList(i,s);let o=`(( |\\t)*-(?! ${Jt})( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,o);let l="(( |\\t)*\\*( |\\t)+.+)";return this.replaceEmptyLinesBetweenList(i,l)}get exampleBuilders(){return[new y({description:"Blank lines are removed between ordered list items",before:p` - 1. Item 1 - ${""} - 2. Item 2 - `,after:p` - 1. Item 1 - 2. Item 2 - `}),new y({description:"Blank lines are removed between list items when the list indicator is '-'",before:p` - - Item 1 - ${""} - \t- Subitem 1 - ${""} - - Item 2 - `,after:p` - - Item 1 - \t- Subitem 1 - - Item 2 - `}),new y({description:"Blank lines are removed between checklist items",before:p` - - [x] Item 1 - ${""} - \t- [!] Subitem 1 - ${""} - - [ ] Item 2 - `,after:p` - - [x] Item 1 - \t- [!] Subitem 1 - - [ ] Item 2 - `}),new y({description:"Blank lines are removed between list items when the list indicator is '+'",before:p` - + Item 1 - ${""} - \t+ Subitem 1 - ${""} - + Item 2 - `,after:p` - + Item 1 - \t+ Subitem 1 - + Item 2 - `}),new y({description:"Blank lines are removed between list items when the list indicator is '*'",before:p` - * Item 1 - ${""} - \t* Subitem 1 - ${""} - * Item 2 - `,after:p` - * Item 1 - \t* Subitem 1 - * Item 2 - `}),new y({description:"Blanks lines are removed between like list types (ordered, specific list item indicators, and checklists) while blanks are left between different kinds of list item indicators",before:p` - 1. Item 1 - ${""} - 2. Item 2 - ${""} - - Item 1 - ${""} - \t- Subitem 1 - ${""} - - Item 2 - ${""} - - [x] Item 1 - ${""} - \t- [f] Subitem 1 - ${""} - - [ ] Item 2 - ${""} - + Item 1 - ${""} - \t+ Subitem 1 - ${""} - + Item 2 - ${""} - * Item 1 - ${""} - \t* Subitem 1 - ${""} - * Item 2 - `,after:p` - 1. Item 1 - 2. Item 2 - ${""} - - Item 1 - \t- Subitem 1 - - Item 2 - ${""} - - [x] Item 1 - \t- [f] Subitem 1 - - [ ] Item 2 - ${""} - + Item 1 - \t+ Subitem 1 - + Item 2 - ${""} - * Item 1 - \t* Subitem 1 - * Item 2 - `})]}get optionBuilders(){return[]}};Er=A([b.register],Er);var zl=class{},Or=class extends b{constructor(){super({nameKey:"rules.remove-empty-list-markers.name",descriptionKey:"rules.remove-empty-list-markers.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return zl}apply(t,i){let n=new RegExp(`^${Yn}(-|\\*|\\+|\\d+[.)]|- (\\[( |x)\\]))\\s*?$`,"gm");return t=t.replace(new RegExp(n.source+"\\n","gm"),""),t=t.replace(new RegExp("\\n"+n.source,"gm"),""),t.replace(n,"")}get exampleBuilders(){return[new y({description:"Removes empty list markers.",before:p` - - item 1 - - - - item 2 - ${""} - * list 2 item 1 - * - * list 2 item 2 - ${""} - + list 3 item 1 - + - + list 3 item 2 - `,after:p` - - item 1 - - item 2 - ${""} - * list 2 item 1 - * list 2 item 2 - ${""} - + list 3 item 1 - + list 3 item 2 - `}),new y({description:"Removes empty ordered list markers.",before:p` - 1. item 1 - 2. - 3. item 2 - ${""} - 1. list 2 item 1 - 2. list 2 item 2 - 3. ${""} - ${""} - _Note that this rule does not make sure that the ordered list is sequential after removal_ - `,after:p` - 1. item 1 - 3. item 2 - ${""} - 1. list 2 item 1 - 2. list 2 item 2 - ${""} - _Note that this rule does not make sure that the ordered list is sequential after removal_ - `}),new y({description:"Removes empty checklist markers.",before:p` - - [ ] item 1 - - [x] - - [ ] item 2 - - [ ] ${""} - ${""} - _Note that this will affect checked and uncheck checked list items_ - `,after:p` - - [ ] item 1 - - [ ] item 2 - ${""} - _Note that this will affect checked and uncheck checked list items_ - `}),new y({description:"Removes empty list, checklist, and ordered list markers in callouts/blockquotes",before:p` - > Checklist in blockquote - > - [ ] item 1 - > - [x] - > - [ ] item 2 - > - [ ] ${""} - ${""} - > Ordered List in blockquote - > > 1. item 1 - > > 2. - > > 3. item 2 - > > 4. ${""} - ${""} - > Regular lists in blockquote - > - > - item 1 - > - - > - item 2 - > - > List 2 - > - > * item 1 - > * - > * list 2 item 2 - > - > List 3 - > - > + item 1 - > + - > + item 2 - `,after:p` - > Checklist in blockquote - > - [ ] item 1 - > - [ ] item 2 - ${""} - > Ordered List in blockquote - > > 1. item 1 - > > 3. item 2 - ${""} - > Regular lists in blockquote - > - > - item 1 - > - item 2 - > - > List 2 - > - > * item 1 - > * list 2 item 2 - > - > List 3 - > - > + item 1 - > + item 2 - `})]}get optionBuilders(){return[]}};Or=A([b.register],Or);var Sl=class{},Cr=class extends b{constructor(){super({nameKey:"rules.remove-hyphenated-line-breaks.name",descriptionKey:"rules.remove-hyphenated-line-breaks.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Sl}apply(t,i){return t.replace(/\b[-‐] \b/g,"")}get exampleBuilders(){return[new y({description:"Removing hyphenated line breaks.",before:p` - This text has a linebr‐ eak. - `,after:p` - This text has a linebreak. - `})]}get optionBuilders(){return[]}};Cr=A([b.register],Cr);var Al=class{},Lt=class extends b{constructor(){super({nameKey:"rules.remove-hyphens-on-paste.name",descriptionKey:"rules.remove-hyphens-on-paste.description",type:"Paste"})}get OptionsClass(){return Al}apply(t,i){return t.replace(/([^\s-])[-‐]\s+\n?(?=\w)/g,"$1")}get exampleBuilders(){return[new y({description:"Remove hyphen in content to paste",before:p` - Text that was cool but hyper- - tension made it uncool. - `,after:p` - Text that was cool but hypertension made it uncool. - `})]}get optionBuilders(){return[]}};Lt=A([b.register],Lt);var Ll=class{},Tt=class extends b{constructor(){super({nameKey:"rules.remove-leading-or-trailing-whitespace-on-paste.name",descriptionKey:"rules.remove-leading-or-trailing-whitespace-on-paste.description",type:"Paste"})}get OptionsClass(){return Ll}apply(t,i){return t.replace(/^[\n ]+|\s+$/g,"")}get exampleBuilders(){return[new y({description:"Removes leading spaces and newline characters",before:p` - ${""} - ${""} - This text was really indented - ${""} - `,after:p` - This text was really indented - `}),new y({description:"Leaves leading tabs alone",before:p` - ${""} - ${""} - \t\tThis text is really indented - ${""} - `,after:" This text is really indented"})]}get optionBuilders(){return[]}};Tt=A([b.register],Tt);var Tl=class{},Et=class extends b{constructor(){super({nameKey:"rules.remove-leftover-footnotes-from-quote-on-paste.name",descriptionKey:"rules.remove-leftover-footnotes-from-quote-on-paste.description",ruleIgnoreTypes:[f.wikiLink,f.link,f.image],type:"Paste"})}get OptionsClass(){return Tl}apply(t,i){return t.replace(/(\D)[.,]\d+/g,"$1")}get exampleBuilders(){return[new y({description:"Footnote reference removed",before:p` - He was sure that he would get off without doing any time, but the cops had other plans.50 - ${""} - _Note that the format for footnote references to remove is a dot or comma followed by any number of digits_ - `,after:p` - He was sure that he would get off without doing any time, but the cops had other plans - ${""} - _Note that the format for footnote references to remove is a dot or comma followed by any number of digits_ - `}),new y({description:"Footnote reference removal does not affect links",before:p` - [[Half is .5]] - [Half is .5](HalfIs.5.md) - ![](HalfIs.5.jpg) - ![[Half is .5.jpg]] - `,after:p` - [[Half is .5]] - [Half is .5](HalfIs.5.md) - ![](HalfIs.5.jpg) - ![[Half is .5.jpg]] - `})]}get optionBuilders(){return[]}};Et=A([b.register],Et);var El=class{},Mr=class extends b{constructor(){super({nameKey:"rules.remove-link-spacing.name",descriptionKey:"rules.remove-link-spacing.description",type:"Spacing"})}get OptionsClass(){return El}apply(t,i){return t=vu(t),Hu(t)}get exampleBuilders(){return[new y({description:"Space in regular markdown link text",before:p` - [ here is link text1 ](link_here) - [ here is link text2](link_here) - [here is link text3 ](link_here) - [here is link text4](link_here) - [\there is link text5\t](link_here) - [](link_here) - **Note that image markdown syntax does not get affected even if it is transclusion:** - ![\there is link text6 ](link_here) - `,after:p` - [here is link text1](link_here) - [here is link text2](link_here) - [here is link text3](link_here) - [here is link text4](link_here) - [here is link text5](link_here) - [](link_here) - **Note that image markdown syntax does not get affected even if it is transclusion:** - ![\there is link text6 ](link_here) - `}),new y({description:"Space in wiki link text",before:p` - [[link_here| here is link text1 ]] - [[link_here|here is link text2 ]] - [[link_here| here is link text3]] - [[link_here|here is link text4]] - [[link_here|\there is link text5\t]] - ![[link_here|\there is link text6\t]] - [[link_here]] - `,after:p` - [[link_here|here is link text1]] - [[link_here|here is link text2]] - [[link_here|here is link text3]] - [[link_here|here is link text4]] - [[link_here|here is link text5]] - ![[link_here|here is link text6]] - [[link_here]] - `})]}get optionBuilders(){return[]}};Mr=A([b.register],Mr);var Ol=class{},Ot=class extends b{constructor(){super({nameKey:"rules.remove-multiple-blank-lines-on-paste.name",descriptionKey:"rules.remove-multiple-blank-lines-on-paste.description",type:"Paste"})}get OptionsClass(){return Ol}apply(t,i){return t.replace(/\n{3,}/g,` +$4`);while(a);return s}}get OptionsClass(){return Tc}apply(i,n){let r=`(( |\\t)*- ${Ot}( |\\t)+.+)`;i=this.replaceEmptyLinesBetweenList(i,r),i=this.replaceEmptyLinesBetweenList(i,"(( |\\t)*\\d+\\.( |\\t)+.+)"),i=this.replaceEmptyLinesBetweenList(i,"(( |\\t)*\\+( |\\t)+.+)");let o=`(( |\\t)*-(?! ${Ot})( |\\t)+.+)`;return i=this.replaceEmptyLinesBetweenList(i,o),this.replaceEmptyLinesBetweenList(i,"(( |\\t)*\\*( |\\t)+.+)")}get optionBuilders(){return[]}};ga=z([y.register],ga);var Ec=class{},ha=class extends y{constructor(){super({nameKey:"rules.remove-empty-list-markers.name",descriptionKey:"rules.remove-empty-list-markers.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Ec}apply(t,i){let n=new RegExp(`^${xr}(-|\\*|\\+|\\d+[.)]|- (\\[(.)\\]))\\s*?$`,"gm");return t=t.replace(new RegExp(n.source+"\\n","gm"),""),t=t.replace(new RegExp("\\n"+n.source,"gm"),""),t.replace(n,"")}get optionBuilders(){return[]}};ha=z([y.register],ha);var Cc=class{},fa=class extends y{constructor(){super({nameKey:"rules.remove-hyphenated-line-breaks.name",descriptionKey:"rules.remove-hyphenated-line-breaks.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Cc}apply(t,i){return t.replace(/\b[-‐] \b/g,"")}get optionBuilders(){return[]}};fa=z([y.register],fa);var Oc=class{},Xt=class extends y{constructor(){super({nameKey:"rules.remove-hyphens-on-paste.name",descriptionKey:"rules.remove-hyphens-on-paste.description",type:"Paste"})}get OptionsClass(){return Oc}apply(t,i){return t.replace(/([^\s-])[-‐]\s+\n?(?=\w)/g,"$1")}get optionBuilders(){return[]}};Xt=z([y.register],Xt);var Mc=class{},en=class extends y{constructor(){super({nameKey:"rules.remove-leading-or-trailing-whitespace-on-paste.name",descriptionKey:"rules.remove-leading-or-trailing-whitespace-on-paste.description",type:"Paste"})}get OptionsClass(){return Mc}apply(t,i){return t.replace(/^[\n ]+|\s+$/g,"")}get optionBuilders(){return[]}};en=z([y.register],en);var qc=class{},tn=class extends y{constructor(){super({nameKey:"rules.remove-leftover-footnotes-from-quote-on-paste.name",descriptionKey:"rules.remove-leftover-footnotes-from-quote-on-paste.description",ruleIgnoreTypes:[h.wikiLink,h.link,h.image],type:"Paste"})}get OptionsClass(){return qc}apply(t,i){return t.replace(/(\D)[.,]\d+/g,"$1")}get optionBuilders(){return[]}};tn=z([y.register],tn);var Ic=class{},ya=class extends y{constructor(){super({nameKey:"rules.remove-link-spacing.name",descriptionKey:"rules.remove-link-spacing.description",type:"Spacing"})}get OptionsClass(){return Ic}apply(t,i){return t=ip(t),Ep(t)}get optionBuilders(){return[]}};ya=z([y.register],ya);var Bc=class{},nn=class extends y{constructor(){super({nameKey:"rules.remove-multiple-blank-lines-on-paste.name",descriptionKey:"rules.remove-multiple-blank-lines-on-paste.description",type:"Paste"})}get OptionsClass(){return Bc}apply(t,i){return t.replace(/\n{3,}/g,` -`)}get exampleBuilders(){return[new y({description:"Multiple blanks lines condensed down to one",before:p` - Here is the first line. - ${""} - ${""} - ${""} - ${""} - Here is some more text. - `,after:p` - Here is the first line. - ${""} - Here is some more text. - `}),new y({description:"Text with only one blank line in a row is left alone",before:p` - First line. - ${""} - Last line. - `,after:p` - First line. - ${""} - Last line. - `})]}get optionBuilders(){return[]}};Ot=A([b.register],Ot);var Cl=class{},qr=class extends b{constructor(){super({nameKey:"rules.remove-multiple-spaces.name",descriptionKey:"rules.remove-multiple-spaces.description",type:"Content",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.inlineMath,f.yaml,f.link,f.wikiLink,f.tag,f.table]})}get OptionsClass(){return Cl}apply(t,i){return t=t.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),t}get exampleBuilders(){return[new y({description:"Removing double and triple space.",before:p` - Lorem ipsum dolor sit amet. - `,after:p` - Lorem ipsum dolor sit amet. - `})]}get optionBuilders(){return[]}};qr=A([b.register],qr);var Ct=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},Ir=class extends b{constructor(){super({nameKey:"rules.remove-space-around-characters.name",descriptionKey:"rules.remove-space-around-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ct}apply(t,i){let n="";if(i.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),i.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u30FF"),i.includeDashes&&(n+="\u2013\u2014"),n+=Pn(i.otherSymbols),!n)return t;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=we([f.list],t,s);return o=Ha(o,s),o}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs around Fullwidth Characters",before:p` - Full list of affected characters: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.:;!?"'`^~ ̄_&@#%+-*=<>()[]{}⦅⦆|¦/\¬$£¢₩¥。、「」『』〔〕【】—…–《》〈〉 - This is a fullwidth period\t 。 with text after it. - This is a fullwidth comma\t, with text after it. - This is a fullwidth left parenthesis ( \twith text after it. - This is a fullwidth right parenthesis ) with text after it. - This is a fullwidth colon : with text after it. - This is a fullwidth semicolon ; with text after it. - Removes space at start of line - `,after:p` - Full list of affected characters:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.:;!?"'`^~ ̄_&@#%+-*=<>()[]{}⦅⦆|¦/\¬$£¢₩¥。、「」『』〔〕【】—…–《》〈〉 - This is a fullwidth period。with text after it. - This is a fullwidth comma,with text after it. - This is a fullwidth left parenthesis(with text after it. - This is a fullwidth right parenthesis)with text after it. - This is a fullwidth colon:with text after it. - This is a fullwidth semicolon;with text after it. - Removes space at start of line - `}),new y({description:"Fullwidth Characters in List Do not Affect List Markdown Syntax",before:p` - # List indicators should not have the space after them removed if they are followed by a fullwidth character - ${""} - - [ contents here] - - [ more contents here] more text here - + [ another item here] - * [ one last item here] - ${""} - # Nested in a blockquote - ${""} - > - [ contents here] - > - [ more contents here] more text here - > + [ another item here] - > * [ one last item here] - ${""} - # Doubly nested in a blockquote - ${""} - > The following is doubly nested - > > - [ contents here] - > > - [ more contents here] more text here - > > + [ another item here] - > > * [ one last item here] - `,after:p` - # List indicators should not have the space after them removed if they are followed by a fullwidth character - ${""} - - [contents here] - - [more contents here]more text here - + [another item here] - * [one last item here] - ${""} - # Nested in a blockquote - ${""} - > - [contents here] - > - [more contents here]more text here - > + [another item here] - > * [one last item here] - ${""} - # Doubly nested in a blockquote - ${""} - > The following is doubly nested - > > - [contents here] - > > - [more contents here]more text here - > > + [another item here] - > > * [one last item here] - `})]}get optionBuilders(){return[new U({nameKey:"rules.remove-space-around-characters.include-fullwidth-forms.name",descriptionKey:"rules.remove-space-around-characters.include-fullwidth-forms.description",OptionsClass:Ct,optionsKey:"includeFullwidthForms"}),new U({nameKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.name",descriptionKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.description",OptionsClass:Ct,optionsKey:"includeCJKSymbolsAndPunctuation"}),new U({nameKey:"rules.remove-space-around-characters.include-dashes.name",descriptionKey:"rules.remove-space-around-characters.include-dashes.description",OptionsClass:Ct,optionsKey:"includeDashes"}),new We({nameKey:"rules.remove-space-around-characters.other-symbols.name",descriptionKey:"rules.remove-space-around-characters.other-symbols.description",OptionsClass:Ct,optionsKey:"otherSymbols"})]}};Ir=A([b.register],Ir);var Fr=class{constructor(){this.charactersToRemoveSpacesBefore=",!?;:).\u2019\u201D]";this.charactersToRemoveSpacesAfter="\xBF\xA1\u2018\u201C(["}},Br=class extends b{constructor(){super({nameKey:"rules.remove-space-before-or-after-characters.name",descriptionKey:"rules.remove-space-before-or-after-characters.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Fr}apply(t,i){let n=Pn(i.charactersToRemoveSpacesBefore),r=Pn(i.charactersToRemoveSpacesAfter);if(!n&&!r)return t;let a=new RegExp(`([ ])+([${n}])`,"g"),s=new RegExp(`([${r}])([ ])+`,"g"),o=function(d){return d.replace(a,"$2").replace(s,"$1")},l=we([f.list,f.html],t,o);return l=Ha(l,o),l}get exampleBuilders(){return[new y({description:"Remove Spaces and Tabs Before and After Default Symbol Set",before:p` - In the end , the space gets removed\t . - The space before the question mark was removed right ? - The space before the exclamation point gets removed ! - A semicolon ; and colon : have spaces removed before them - ‘ Text in single quotes ’ - “ Text in double quotes ” - [ Text in square braces ] - ( Text in parenthesis ) - `,after:p` - In the end, the space gets removed. - The space before the question mark was removed right? - The space before the exclamation point gets removed! - A semicolon; and colon: have spaces removed before them - ‘Text in single quotes’ - “Text in double quotes” - [Text in square braces] - (Text in parenthesis) - `})]}get optionBuilders(){return[new We({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.description",OptionsClass:Fr,optionsKey:"charactersToRemoveSpacesBefore"}),new We({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.description",OptionsClass:Fr,optionsKey:"charactersToRemoveSpacesAfter"})]}};Br=A([b.register],Br);var As=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},_r=class extends b{constructor(){super({nameKey:"rules.remove-trailing-punctuation-in-heading.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.description",type:"Heading",ruleIgnoreTypes:[f.code,f.math,f.yaml]})}get OptionsClass(){return As}apply(t,i){return t.replaceAll(Pi,(n,r="",a="",s="",o="",l="")=>{if(o==""||o.match(Nu))return n;let d=o.trimEnd(),c=d.charAt(d.length-1);return i.punctuationToRemove.includes(c)?r+a+s+o.substring(0,d.length-1)+o.substring(d.length)+l:n})}get exampleBuilders(){return[new y({description:"Removes punctuation from the end of a heading",before:p` - # Heading ends in a period. - ## Other heading ends in an exclamation mark! ## - `,after:p` - # Heading ends in a period - ## Other heading ends in an exclamation mark ## - `}),new y({description:"HTML Entities at the end of a heading is ignored",before:p` - # Heading 1 - ## Heading & - `,after:p` - # Heading 1 - ## Heading & - `}),new y({description:"Removes punctuation from the end of a heading when followed by whitespace",before:p` - # Heading 1!${" "} - ## Heading 2.\t - `,after:p` - # Heading 1${" "} - ## Heading 2\t - `})]}get optionBuilders(){return[new We({OptionsClass:As,nameKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.description",optionsKey:"punctuationToRemove"})]}};_r=A([b.register],_r);var Ls=class{constructor(){this.yamlKeysToRemove=[]}},Rr=class extends b{constructor(){super({nameKey:"rules.remove-yaml-keys.name",descriptionKey:"rules.remove-yaml-keys.description",type:"YAML"})}get OptionsClass(){return Ls}apply(t,i){let n=i.yamlKeysToRemove;if(n.length===0)return t;let r=en(t);if(r===null)return t;let a=r;for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=ut(a,o)}return t.replace(r,a)}get exampleBuilders(){return[new y({description:'Removes the values specified in `YAML Keys to Remove` = "status:\nkeywords\ndate"',before:p` - --- - language: Typescript - type: programming - tags: computer - keywords: - - keyword1 - - keyword2 - status: WIP - date: 02/15/2022 - --- - ${""} - # Header Context - ${""} - Text - `,after:p` - --- - language: Typescript - type: programming - tags: computer - --- - ${""} - # Header Context - ${""} - Text - `,options:{yamlKeysToRemove:["status:","keywords","date"]}})]}get optionBuilders(){return[new be({OptionsClass:Ls,nameKey:"rules.remove-yaml-keys.yaml-keys-to-remove.name",descriptionKey:"rules.remove-yaml-keys.yaml-keys-to-remove.description",optionsKey:"yamlKeysToRemove"})]}};Rr=A([b.register],Rr);var Ml=class{},Dr=class extends b{constructor(){super({nameKey:"rules.space-after-list-markers.name",descriptionKey:"rules.space-after-list-markers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Ml}apply(t,i){return t=t.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),t.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")}get exampleBuilders(){return[new y({description:"A single space is left between the list marker and the text of the list item",before:p` - 1. Item 1 - 2. Item 2 - ${""} - - [ ] Item 1 - - [x] Item 2 - \t- [ ] Item 3 - `,after:p` - 1. Item 1 - 2. Item 2 - ${""} - - [ ] Item 1 - - [x] Item 2 - \t- [ ] Item 3 - `})]}get optionBuilders(){return[]}};Dr=A([b.register],Dr);var ql=class{},Nr=class extends b{constructor(){super({nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.inlineCode,f.yaml,f.image,f.link,f.wikiLink,f.tag,f.math,f.inlineMath,f.html]})}get OptionsClass(){return ql}apply(t,i){let n=/(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})( *)(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+'"([¥$]|\*[^*])/gmu,r=/(\[[^[]*\]\(.*\)|`[^`]*`|\w+|[-+;:'"°%$)\]]|[^*]\*)( *)(\p{sc=Han}|\p{sc=Katakana}|\p{sc=Hiragana}|\p{sc=Hangul})/gmu,a=`${f.link.placeholder}|${f.inlineMath.placeholder}|${f.inlineCode.placeholder}|${f.wikiLink.placeholder}`.replaceAll("{","\\{").replaceAll("}","\\}"),s=new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(${a})`,"gmu"),o=new RegExp(`(${a})( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu"),l=function(c){return c.replace(n,"$1 $3").replace(r,"$1 $3")},d=we([f.italics,f.bold],t,l);return d=d.replace(s,"$1 $3").replace(o,"$1 $3"),d=xu(d,l),d=wu(d,l),d}get exampleBuilders(){return[new y({description:"Space between Chinese and English",before:p` - 中文字符串english中文字符串。 - `,after:p` - 中文字符串 english 中文字符串。 - `}),new y({description:"Space between Chinese and link",before:p` - 中文字符串[english](http://example.com)中文字符串。 - `,after:p` - 中文字符串 [english](http://example.com) 中文字符串。 - `}),new y({description:"Space between Chinese and inline code block",before:p` - 中文字符串\`code\`中文字符串。 - `,after:p` - 中文字符串 \`code\` 中文字符串。 - `}),new y({description:"No space between Chinese and English in tag",before:p` - #标签A #标签2标签 - `,after:p` - #标签A #标签2标签 - `}),new y({description:"Make sure that spaces are not added between italics and chinese characters to preserve markdown syntax",before:p` - _这是一个数学公式_ - *这是一个数学公式english* - ${""} - # Handling bold and italics nested in each other is not supported at this time - ${""} - **_这是一_个数学公式** - *这是一hello__个数学world公式__* - `,after:p` - _这是一个数学公式_ - *这是一个数学公式 english* - ${""} - # Handling bold and italics nested in each other is not supported at this time - ${""} - **_ 这是一 _ 个数学公式** - *这是一 hello__ 个数学 world 公式 __* - `}),new y({description:"Images and links are ignored",before:p` - [[这是一个数学公式english]] - ![[这是一个数学公式english.jpg]] - [这是一个数学公式english](这是一个数学公式english.md) - ![这是一个数学公式english](这是一个数学公式english.jpg) - `,after:p` - [[这是一个数学公式english]] - ![[这是一个数学公式english.jpg]] - [这是一个数学公式english](这是一个数学公式english.md) - ![这是一个数学公式english](这是一个数学公式english.jpg) - `}),new y({description:"Space between CJK and English",before:p` - 日本語englishひらがな - カタカナenglishカタカナ - ハンカクカタカナenglish123全角数字 - 한글english한글 - `,after:p` - 日本語 english ひらがな - カタカナ english カタカナ - ハンカクカタカナ english123全角数字 - 한글 english 한글 - `})]}get optionBuilders(){return[]}};Nr=A([b.register],Nr);var Ts=class{constructor(){this.style="consistent"}},jr=class extends b{constructor(){super({nameKey:"rules.strong-style.name",descriptionKey:"rules.strong-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.yaml,f.link,f.wikiLink,f.tag,f.math,f.inlineMath]})}get OptionsClass(){return Ts}apply(t,i){return Pa(t,i.style,"strong")}get exampleBuilders(){return[new y({description:"Strong indicators should use underscores when style is set to 'underscore'",before:p` - # Strong/Bold Cases - ${""} - **Test bold** - ** Test not bold ** - This is **bold** mid sentence - This is **bold** mid sentence with a second **bold** on the same line - This is ***bold and emphasized*** - This is ***nested bold** and ending emphasized* - This is ***nested emphasis* and ending bold** - ${""} - *Test emphasis* - ${""} - * List Item1 with **bold text** - * List Item2 - `,after:p` - # Strong/Bold Cases - ${""} - __Test bold__ - ** Test not bold ** - This is __bold__ mid sentence - This is __bold__ mid sentence with a second __bold__ on the same line - This is *__bold and emphasized__* - This is *__nested bold__ and ending emphasized* - This is __*nested emphasis* and ending bold__ - ${""} - *Test emphasis* - ${""} - * List Item1 with __bold text__ - * List Item2 - `,options:{style:"underscore"}}),new y({description:"Strong indicators should use asterisks when style is set to 'asterisk'",before:p` - # Strong/Bold Cases - ${""} - __Test bold__ - __ Test not bold __ - This is __bold__ mid sentence - This is __bold__ mid sentence with a second __bold__ on the same line - This is ___bold and emphasized___ - This is ___nested bold__ and ending emphasized_ - This is ___nested emphasis_ and ending bold__ - ${""} - _Test emphasis_ - `,after:p` - # Strong/Bold Cases - ${""} - **Test bold** - __ Test not bold __ - This is **bold** mid sentence - This is **bold** mid sentence with a second **bold** on the same line - This is _**bold and emphasized**_ - This is _**nested bold** and ending emphasized_ - This is **_nested emphasis_ and ending bold** - ${""} - _Test emphasis_ - `,options:{style:"asterisk"}}),new y({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:p` - # Strong First Strong Is an Asterisk - ${""} - **First bold** - This is __bold__ mid sentence - This is __bold__ mid sentence with a second **bold** on the same line - This is ___bold and emphasized___ - This is *__nested bold__ and ending emphasized* - This is **_nested emphasis_ and ending bold** - ${""} - __Test bold__ - `,after:p` - # Strong First Strong Is an Asterisk - ${""} - **First bold** - This is **bold** mid sentence - This is **bold** mid sentence with a second **bold** on the same line - This is _**bold and emphasized**_ - This is ***nested bold** and ending emphasized* - This is **_nested emphasis_ and ending bold** - ${""} - **Test bold** - `,options:{style:"consistent"}}),new y({description:"Strong indicators should use consistent style based on first strong indicator in a file when style is set to 'consistent'",before:p` - # Strong First Strong Is an Underscore - ${""} - __First bold__ - This is **bold** mid sentence - This is **bold** mid sentence with a second __bold__ on the same line - This is **_bold and emphasized_** - This is ***nested bold** and ending emphasized* - This is ___nested emphasis_ and ending bold__ - ${""} - **Test bold** - `,after:p` - # Strong First Strong Is an Underscore - ${""} - __First bold__ - This is __bold__ mid sentence - This is __bold__ mid sentence with a second __bold__ on the same line - This is ___bold and emphasized___ - This is *__nested bold__ and ending emphasized* - This is ___nested emphasis_ and ending bold__ - ${""} - __Test bold__ - `,options:{style:"consistent"}})]}get optionBuilders(){return[new ne({OptionsClass:Ts,nameKey:"rules.strong-style.style.name",descriptionKey:"rules.strong-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};jr=A([b.register],jr);var Es=class{constructor(){this.twoSpaceLineBreak=!1}},Kr=class extends b{constructor(){super({nameKey:"rules.trailing-spaces.name",descriptionKey:"rules.trailing-spaces.description",type:"Spacing",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.link,f.wikiLink,f.tag]})}get OptionsClass(){return Es}apply(t,i){return i.twoSpaceLineBreak?(t=t.replace(/(\S)[ \t]$/gm,"$1"),t=t.replace(/(\S)[ \t]{3,}$/gm,"$1"),t=t.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),t):t.replace(/[ \t]+$/gm,"")}get exampleBuilders(){return[new y({description:"Removes trailing spaces and tabs.",before:p` - # H1 - Line with trailing spaces and tabs. ${""} - `,after:p` - # H1 - Line with trailing spaces and tabs. - `}),new y({description:"With `Two Space Linebreak = true`",before:p` - # H1 - Line with trailing spaces and tabs. ${""} - `,after:p` - # H1 - Line with trailing spaces and tabs. ${""} - `,options:{twoSpaceLineBreak:!0}})]}get optionBuilders(){return[new U({OptionsClass:Es,nameKey:"rules.trailing-spaces.twp-space-line-break.name",descriptionKey:"rules.trailing-spaces.twp-space-line-break.description",optionsKey:"twoSpaceLineBreak"})]}};Kr=A([b.register],Kr);var Il=class{},Yr=class extends b{constructor(){super({nameKey:"rules.two-spaces-between-lines-with-content.name",descriptionKey:"rules.two-spaces-between-lines-with-content.description",type:"Content",ruleIgnoreTypes:[f.obsidianMultiLineComments,f.yaml,f.table]})}get OptionsClass(){return Il}apply(t,i){return yu(t)}get exampleBuilders(){return[new y({description:"Make sure two spaces are added to the ends of lines that have content on it and the next line for lists, blockquotes, and paragraphs",before:p` - # Heading 1 - First paragraph stays as the first paragraph - ${""} - - list item 1 - - list item 2 - Continuation of list item 2 - - list item 3 - ${""} - 1. Item 1 - 2. Item 2 - Continuation of item 3 - 3. Item 3 - ${""} - Paragraph for with link [[other file name]]. - Continuation *of* the paragraph has \`inline code block\` __in it__. - Even more continuation - ${""} - Paragraph lines that end in
- Or lines that end in
- Are left alone - Since they mean the same thing - ${""} - \`\`\` text - Code blocks are ignored - Even with multiple lines - \`\`\` - Another paragraph here - ${""} - > Blockquotes are affected - > More content here - Content here - ${""} -
- html content - should be ignored -
- Even more content here - ${""} - `,after:p` - # Heading 1 - First paragraph stays as the first paragraph - ${""} - - list item 1 - - list item 2 ${""} - Continuation of list item 2 - - list item 3 - ${""} - 1. Item 1 - 2. Item 2 ${""} - Continuation of item 3 - 3. Item 3 - ${""} - Paragraph for with link [[other file name]]. ${""} - Continuation *of* the paragraph has \`inline code block\` __in it__. ${""} - Even more continuation - ${""} - Paragraph lines that end in
- Or lines that end in
- Are left alone ${""} - Since they mean the same thing - ${""} - \`\`\` text - Code blocks are ignored - Even with multiple lines - \`\`\` - Another paragraph here - ${""} - > Blockquotes are affected ${""} - > More content here ${""} - Content here - ${""} -
- html content - should be ignored -
- Even more content here - ${""} - `})]}get optionBuilders(){return[]}};Yr=A([b.register],Yr);var Os=class{constructor(){this.listStyle="consistent"}},Pr=class extends b{constructor(){super({nameKey:"rules.unordered-list-style.name",descriptionKey:"rules.unordered-list-style.description",type:"Content",ruleIgnoreTypes:[f.code,f.math,f.yaml,f.tag]})}get OptionsClass(){return Os}apply(t,i){return Lu(t,i.listStyle)}get exampleBuilders(){return[new y({description:"Unordered lists have their indicator updated to `*` when `List item style = 'consistent'` and `*` is the first unordered list indicator",before:p` - 1. ordered item 1 - 2. ordered item 2 - ${""} - Checklists should be ignored - - [ ] Checklist item 1 - - [x] completed item - ${""} - * Item 1 - - Sublist 1 item 1 - - Sublist 1 item 2 - - Item 2 - + Sublist 2 item 1 - + Sublist 2 item 2 - + Item 3 - * Sublist 3 item 1 - * Sublist 3 item 2 - ${""} - `,after:p` - 1. ordered item 1 - 2. ordered item 2 - ${""} - Checklists should be ignored - - [ ] Checklist item 1 - - [x] completed item - ${""} - * Item 1 - * Sublist 1 item 1 - * Sublist 1 item 2 - * Item 2 - * Sublist 2 item 1 - * Sublist 2 item 2 - * Item 3 - * Sublist 3 item 1 - * Sublist 3 item 2 - ${""} - `}),new y({description:"Unordered lists have their indicator updated to `-` when `List item style = '-'`",before:p` - - Item 1 - * Sublist 1 item 1 - * Sublist 1 item 2 - * Item 2 - + Sublist 2 item 1 - + Sublist 2 item 2 - + Item 3 - - Sublist 3 item 1 - - Sublist 3 item 2 - ${""} - See that the ordered list is ignored, but its sublist is not - ${""} - 1. Item 1 - - Sub item 1 - 1. Item 2 - * Sub item 2 - 1. Item 3 - + Sub item 3 - `,after:p` - - Item 1 - - Sublist 1 item 1 - - Sublist 1 item 2 - - Item 2 - - Sublist 2 item 1 - - Sublist 2 item 2 - - Item 3 - - Sublist 3 item 1 - - Sublist 3 item 2 - ${""} - See that the ordered list is ignored, but its sublist is not - ${""} - 1. Item 1 - - Sub item 1 - 1. Item 2 - - Sub item 2 - 1. Item 3 - - Sub item 3 - `,options:{listStyle:"-"}}),new y({description:"Unordered lists have their indicator updated to `*` when `List item style = '*'`",before:p` - - Item 1 - * Sublist 1 item 1 - * Sublist 1 item 2 - * Item 2 - + Sublist 2 item 1 - + Sublist 2 item 2 - + Item 3 - - Sublist 3 item 1 - - Sublist 3 item 2 - ${""} - `,after:p` - * Item 1 - * Sublist 1 item 1 - * Sublist 1 item 2 - * Item 2 - * Sublist 2 item 1 - * Sublist 2 item 2 - * Item 3 - * Sublist 3 item 1 - * Sublist 3 item 2 - ${""} - `,options:{listStyle:"*"}}),new y({description:"Unordered list in blockquote has list item indicators set to `+` when `List item style = '-'`",before:p` - > - Item 1 - > + Item 2 - > > * Subitem 1 - > > + Subitem 2 - > > - Sub sub item 1 - > > - Subitem 3 - `,after:p` - > + Item 1 - > + Item 2 - > > + Subitem 1 - > > + Subitem 2 - > > + Sub sub item 1 - > > + Subitem 3 - `,options:{listStyle:"+"}})]}get optionBuilders(){return[new ne({OptionsClass:Os,nameKey:"rules.unordered-list-style.list-style.name",descriptionKey:"rules.unordered-list-style.list-style.description",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};Pr=A([b.register],Pr);var qi=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};A([b.noSettingControl()],qi.prototype,"dateModifiedKey",2),A([b.noSettingControl()],qi.prototype,"currentTimeFormatted",2),A([b.noSettingControl()],qi.prototype,"yamlTimestampDateModifiedEnabled",2);var Mt=class extends b{constructor(){super({nameKey:"rules.yaml-key-sort.name",descriptionKey:"rules.yaml-key-sort.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return qi}apply(t,i){let n=en(t);if(n===null)return t;let r=n,a=i.priorityKeysAtStartOfYaml,s=i.yamlKeyPrioritySortOrder,o=0;for(let v of s)v.endsWith(":")&&(s[o]=v.substring(0,v.length-1)),o++;let l=this.getYAMLKeysSorted(r,s),d=l.sortedYamlKeyValues;r=l.remainingYaml;let c=i.yamlSortOrderForOtherKeys,u=Mi(r);if(u==null)return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);let m=Object.keys(u),g;if(c==="Ascending Alphabetical")g=this.sortAlphabeticallyAsc;else if(c==="Descending Alphabetical")g=this.sortAlphabeticallyDesc;else return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);m=m.sort(g);let h=this.getYAMLKeysSorted(r,m);return this.getTextWithNewYamlFrontmatter(t,n,d,h.sortedYamlKeyValues,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled)}getYAMLKeysSorted(t,i){let n="";for(let r of i){let a=Ce(t,r);a!==null&&(a.includes(` -`)?n+=`${r}:${a} -`:n+=`${r}: ${a} -`,t=ut(t,r))}return{remainingYaml:t,sortedYamlKeyValues:n}}updateDateModifiedIfYamlChanged(t,i,n,r){return t==i?i:Le(i,n," "+r)}getTextWithNewYamlFrontmatter(t,i,n,r,a,s,o,l){let d=`${r}${n}`;return a&&(d=`${n}${r}`),l&&(d=this.updateDateModifiedIfYamlChanged(i,d,s,o)),t.replace(i,d)}sortAlphabeticallyAsc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),ti?-1:i>t?1:0}get exampleBuilders(){return[new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language`",before:p` - --- - language: Typescript - type: programming - tags: computer - keywords: [] - status: WIP - date: 02/15/2022 - --- - `,after:p` - --- - date: 02/15/2022 - type: programming - language: Typescript - tags: computer - keywords: [] - status: WIP - --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"None",priorityKeysAtStartOfYaml:!0}}),new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Ascending Alphabetical`",before:p` - --- - language: Typescript - type: programming - tags: computer - keywords: [] - status: WIP - date: 02/15/2022 - --- - `,after:p` - --- - date: 02/15/2022 - type: programming - language: Typescript - keywords: [] - status: WIP - tags: computer - --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Ascending Alphabetical"}}),new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Descending Alphabetical`",before:p` - --- - language: Typescript - type: programming - tags: computer - keywords: [] - status: WIP - date: 02/15/2022 - --- - `,after:p` - --- - date: 02/15/2022 - type: programming - language: Typescript - tags: computer - status: WIP - keywords: [] - --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!0}}),new y({description:"Sorts YAML keys in order specified by `YAML Key Priority Sort Order` has a sort order of `date type language` with `'YAML Sort Order for Other Keys' = Descending Alphabetical` and `'Priority Keys at Start of YAML' = false`",before:p` - --- - language: Typescript - type: programming - tags: computer - keywords: [] - ${""} - status: WIP - date: 02/15/2022 - --- - `,after:p` - --- - tags: computer - status: WIP - keywords: [] - date: 02/15/2022 - type: programming - language: Typescript - --- - `,options:{yamlKeyPrioritySortOrder:["date","type","language"],yamlSortOrderForOtherKeys:"Descending Alphabetical",priorityKeysAtStartOfYaml:!1}})]}get optionBuilders(){return[new be({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.name",descriptionKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.description",optionsKey:"yamlKeyPrioritySortOrder"}),new U({OptionsClass:qi,nameKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.name",descriptionKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.description",optionsKey:"priorityKeysAtStartOfYaml"}),new ne({OptionsClass:qi,nameKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.name",descriptionKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.description",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}};Mt=A([b.register],Mt);var Je=require("obsidian");var up=da(dp());var Ye=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.forceRetentionOfCreatedValue=!1;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.locale="en"}};A([b.noSettingControl()],Ye.prototype,"alreadyModified",2),A([b.noSettingControl()],Ye.prototype,"fileCreatedTime",2),A([b.noSettingControl()],Ye.prototype,"fileModifiedTime",2),A([b.noSettingControl()],Ye.prototype,"locale",2),A([b.noSettingControl()],Ye.prototype,"currentTime",2),A([b.noSettingControl()],Ye.prototype,"fileName",2);var Ui=class extends b{constructor(){super({nameKey:"rules.yaml-timestamp.name",descriptionKey:"rules.yaml-timestamp.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Ye}apply(t,i){let n=i.alreadyModified,r=bi(t);return n=n||r!==t,i.format=i.format.trimEnd(),Ae(r,a=>{if(i.dateCreated){let s=!1;[a,s]=this.handleDateCreatedValue(a,i),n=n||s}return i.dateModified&&(a=this.handleDateModifiedValue(a,n,i)),a})}handleDateCreatedValue(t,i){let n=!1,r=` +`)}get optionBuilders(){return[]}};nn=z([y.register],nn);var Fc=class{},ba=class extends y{constructor(){super({nameKey:"rules.remove-multiple-spaces.name",descriptionKey:"rules.remove-multiple-spaces.description",type:"Content",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.inlineMath,h.yaml,h.link,h.wikiLink,h.tag,h.table]})}get OptionsClass(){return Fc}apply(t,i){return t=t.replace(/(?!^>)([^\s])( ){2,}([^\s])/gm,"$1 $3"),t}get optionBuilders(){return[]}};ba=z([y.register],ba);var rn=class{constructor(){this.includeFullwidthForms=!0;this.includeCJKSymbolsAndPunctuation=!0;this.includeDashes=!0;this.otherSymbols=""}},va=class extends y{constructor(){super({nameKey:"rules.remove-space-around-characters.name",descriptionKey:"rules.remove-space-around-characters.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.inlineCode,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return rn}apply(t,i){let n="";if(i.includeFullwidthForms&&(n+="\uFF01-\uFF5E"),i.includeCJKSymbolsAndPunctuation&&(n+="\u3000-\u303F"),i.includeDashes&&(n+="\u2013\u2014"),n+=at(i.otherSymbols),!n)return t;let r=new RegExp(`([ ])+([${n}])`,"g"),a=new RegExp(`([${n}])([ ])+`,"g"),s=function(l){return l.replace(r,"$2").replace(a,"$1")},o=Ee([h.list],t,s);return o=Ls(o,s),o}get optionBuilders(){return[new H({nameKey:"rules.remove-space-around-characters.include-fullwidth-forms.name",descriptionKey:"rules.remove-space-around-characters.include-fullwidth-forms.description",OptionsClass:rn,optionsKey:"includeFullwidthForms"}),new H({nameKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.name",descriptionKey:"rules.remove-space-around-characters.include-cjk-symbols-and-punctuation.description",OptionsClass:rn,optionsKey:"includeCJKSymbolsAndPunctuation"}),new H({nameKey:"rules.remove-space-around-characters.include-dashes.name",descriptionKey:"rules.remove-space-around-characters.include-dashes.description",OptionsClass:rn,optionsKey:"includeDashes"}),new xe({nameKey:"rules.remove-space-around-characters.other-symbols.name",descriptionKey:"rules.remove-space-around-characters.other-symbols.description",OptionsClass:rn,optionsKey:"otherSymbols"})]}};va=z([y.register],va);var wa=class{constructor(){this.charactersToRemoveSpacesBefore=",!?;:).\u2019\u201D]";this.charactersToRemoveSpacesAfter="\xBF\xA1\u2018\u201C(["}},xa=class extends y{constructor(){super({nameKey:"rules.remove-space-before-or-after-characters.name",descriptionKey:"rules.remove-space-before-or-after-characters.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return wa}apply(t,i){let n=at(i.charactersToRemoveSpacesBefore),r=at(i.charactersToRemoveSpacesAfter);if(!n&&!r)return t;let a=new RegExp(`([ ])+([${n}])`,"g"),s=new RegExp(`([${r}])([ ])+`,"g"),o=function(c){return c.replace(a,"$2").replace(s,"$1")},l=Ee([h.list,h.html],t,o);return l=Ls(l,o),l}get optionBuilders(){return[new xe({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-before.description",OptionsClass:wa,optionsKey:"charactersToRemoveSpacesBefore"}),new xe({nameKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.name",descriptionKey:"rules.remove-space-before-or-after-characters.characters-to-remove-space-after.description",OptionsClass:wa,optionsKey:"charactersToRemoveSpacesAfter"})]}};xa=z([y.register],xa);var mo=class{constructor(){this.punctuationToRemove=".,;:!\u3002\uFF0C\uFF1B\uFF1A\uFF01"}},ka=class extends y{constructor(){super({nameKey:"rules.remove-trailing-punctuation-in-heading.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.description",type:"Heading",ruleIgnoreTypes:[h.code,h.math,h.yaml]})}get OptionsClass(){return mo}apply(t,i){return t.replaceAll(rt,(n,r="",a="",s="",o="",l="")=>{if(o==""||o.match(zp))return n;let c=o.trimEnd(),d=c.charAt(c.length-1);return i.punctuationToRemove.includes(d)?r+a+s+o.substring(0,c.length-1)+o.substring(c.length)+l:n})}get optionBuilders(){return[new xe({OptionsClass:mo,nameKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.name",descriptionKey:"rules.remove-trailing-punctuation-in-heading.punctuation-to-remove.description",optionsKey:"punctuationToRemove"})]}};ka=z([y.register],ka);var go=class{constructor(){this.yamlKeysToRemove=[]}},za=class extends y{constructor(){super({nameKey:"rules.remove-yaml-keys.name",descriptionKey:"rules.remove-yaml-keys.description",type:"YAML"})}get OptionsClass(){return go}apply(t,i){let n=i.yamlKeysToRemove;if(n.length===0)return t;let r=Ln(t);if(r===null)return t;let a=r;for(let s of n){let o=s.trim();o.endsWith(":")&&(o=o.substring(0,o.length-1)),a=Mt(a,o)}return t.replace(r,a)}get optionBuilders(){return[new pe({OptionsClass:go,nameKey:"rules.remove-yaml-keys.yaml-keys-to-remove.name",descriptionKey:"rules.remove-yaml-keys.yaml-keys-to-remove.description",optionsKey:"yamlKeysToRemove"})]}};za=z([y.register],za);var gi=class{constructor(){this.aliasArrayStyle="single-line";this.sortAliasKey=!0;this.tagArrayStyle="single-line";this.sortTagKey=!0;this.sortArrayKeys=!0;this.sortOrder="Ascending Alphabetical";this.ignoreSortArrayKeys=[];this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};z([y.noSettingControl()],gi.prototype,"aliasArrayStyle",2),z([y.noSettingControl()],gi.prototype,"tagArrayStyle",2),z([y.noSettingControl()],gi.prototype,"defaultEscapeCharacter",2),z([y.noSettingControl()],gi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Aa=class extends y{constructor(){super({nameKey:"rules.sort-yaml-array-values.name",descriptionKey:"rules.sort-yaml-array-values.description",type:"YAML"})}get OptionsClass(){return gi}apply(t,i){return he(t,n=>{let r=ri(n.replace(`--- +`,"").replace(` +---`,""));if(!r)return n;for(let a of bi)if(i.sortAliasKey&&Object.keys(r).includes(a)){n=ae(n,a,be(ot(this.sortArray(qe(de(n,a)),i.sortOrder)),i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0));break}for(let a of yi)if(i.sortTagKey&&Object.keys(r).includes(a)){n=ae(n,a,be(st(this.sortArray(qe(de(n,a)),i.sortOrder)),i.tagArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays));break}if(i.sortArrayKeys){let a=[...bi,...yi,...i.ignoreSortArrayKeys];for(let s of Object.keys(r)){if(a.includes(s)||!Array.isArray(r[s])||r[s].length!==0&&typeof r[s][0]=="object"&&r[s][0]!==null)continue;let o=de(n,s),l="single-line";o.includes(` +`)&&(l="multi-line");let c=this.sortArray(qe(o),i.sortOrder);n=ae(n,s,be(c,l,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays))}}return n})}sortArray(t,i){return t==null||typeof t=="string"||t.length<=1||(t.sort(function(n,r){let a=n.toLowerCase().localeCompare(r.toLowerCase());return a===0?n.localeCompare(r):a}),i==="Ascending Alphabetical")||t.reverse(),t}get optionBuilders(){return[new H({OptionsClass:gi,nameKey:"rules.sort-yaml-array-values.sort-alias-key.name",descriptionKey:"rules.sort-yaml-array-values.sort-alias-key.description",optionsKey:"sortAliasKey"}),new H({OptionsClass:gi,nameKey:"rules.sort-yaml-array-values.sort-tag-key.name",descriptionKey:"rules.sort-yaml-array-values.sort-tag-key.description",optionsKey:"sortTagKey"}),new H({OptionsClass:gi,nameKey:"rules.sort-yaml-array-values.sort-array-keys.name",descriptionKey:"rules.sort-yaml-array-values.sort-array-keys.description",optionsKey:"sortArrayKeys"}),new pe({OptionsClass:gi,nameKey:"rules.sort-yaml-array-values.ignore-keys.name",descriptionKey:"rules.sort-yaml-array-values.ignore-keys.description",optionsKey:"ignoreSortArrayKeys"}),new ee({OptionsClass:gi,nameKey:"rules.sort-yaml-array-values.sort-order.name",descriptionKey:"rules.sort-yaml-array-values.sort-order.description",optionsKey:"sortOrder",records:[{value:"Ascending Alphabetical",description:"Sorts the array values from a to z"},{value:"Descending Alphabetical",description:"Sorts the array values from z to a"}]})]}};Aa=z([y.register],Aa);var Rc=class{},Sa=class extends y{constructor(){super({nameKey:"rules.space-after-list-markers.name",descriptionKey:"rules.space-after-list-markers.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return Rc}apply(t,i){return t=t.replace(/^(\s*\d+\.|\s*[-+*])[^\S\r\n]+/gm,"$1 "),t.replace(/^(\s*\d+\.|\s*[-+*]\s+\[[ xX]\])[^\S\r\n]+/gm,"$1 ")}get optionBuilders(){return[]}};Sa=z([y.register],Sa);var Ta=class{constructor(){this.englishNonLetterCharactersAfterCJKCharacters=`-+'"([\xA5$`;this.englishNonLetterCharactersBeforeCJKCharacters=`-+;:'"\xB0%$)]`}},La=class extends y{constructor(){super({nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.description",type:"Spacing",ruleIgnoreTypes:[h.code,h.inlineCode,h.yaml,h.image,h.link,h.wikiLink,h.tag,h.math,h.inlineMath,h.html]})}get OptionsClass(){return Ta}apply(t,i){let n=this.buildHeadRegex(i.englishNonLetterCharactersAfterCJKCharacters),r=this.buildTailRegex(i.englishNonLetterCharactersBeforeCJKCharacters),a=`${h.link.placeholder}|${h.inlineMath.placeholder}|${h.inlineCode.placeholder}|${h.wikiLink.placeholder}`.replaceAll("{","\\{").replaceAll("}","\\}"),s=new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(${a})`,"gmu"),o=new RegExp(`(${a})( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu"),l=function(d){return d.replace(n,"$1 $3").replace(r,"$1 $3")},c=Ee([h.italics,h.bold],t,l);return c=c.replace(s,"$1 $3").replace(o,"$1 $3"),c=tp(c,l),c=np(c,l),c}buildHeadRegex(t){t&&t!==""&&(t=t.replaceAll(/\s/g,""));let i="";return t&&t.length!=0&&(i=`|[${at(t)}]`),new RegExp(`(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})( *)(\\[[^[]*\\]\\(.*\\)|\`[^\`]*\`|\\w+${i}|\\*[^*])`,"gmu")}buildTailRegex(t){t&&t!==""&&(t=t.replaceAll(/\s/g,""));let i="";return t&&t.length!=0&&(i=`|[${at(t)}]`),new RegExp(`(\\[[^[]*\\]\\(.*\\)|\`[^\`]*\`|\\w+${i}|[^*]\\*)( *)(\\p{sc=Han}|\\p{sc=Katakana}|\\p{sc=Hiragana}|\\p{sc=Hangul})`,"gmu")}get optionBuilders(){return[new xe({OptionsClass:Ta,nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.english-symbols-punctuation-before.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.english-symbols-punctuation-before.description",optionsKey:"englishNonLetterCharactersBeforeCJKCharacters"}),new xe({OptionsClass:Ta,nameKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.english-symbols-punctuation-after.name",descriptionKey:"rules.space-between-chinese-japanese-or-korean-and-english-or-numbers.english-symbols-punctuation-after.description",optionsKey:"englishNonLetterCharactersAfterCJKCharacters"})]}};La=z([y.register],La);var ho=class{constructor(){this.style="consistent"}},Ea=class extends y{constructor(){super({nameKey:"rules.strong-style.name",descriptionKey:"rules.strong-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.yaml,h.link,h.wikiLink,h.tag,h.math,h.inlineMath]})}get OptionsClass(){return ho}apply(t,i){return Ss(t,i.style,"strong")}get optionBuilders(){return[new ee({OptionsClass:ho,nameKey:"rules.strong-style.style.name",descriptionKey:"rules.strong-style.style.description",optionsKey:"style",records:[{value:"consistent",description:"Makes sure the first instance of strong is the style that will be used throughout the document"},{value:"asterisk",description:"Makes sure ** is the strong indicator"},{value:"underscore",description:"Makes sure __ is the strong indicator"}]})]}};Ea=z([y.register],Ea);var fo=class{constructor(){this.twoSpaceLineBreak=!1}},an=class extends y{constructor(){super({nameKey:"rules.trailing-spaces.name",descriptionKey:"rules.trailing-spaces.description",type:"Spacing",hasSpecialExecutionOrder:!0,ruleIgnoreTypes:[h.code,h.math,h.yaml,h.link,h.wikiLink,h.tag]})}get OptionsClass(){return fo}apply(t,i){return i.twoSpaceLineBreak?(t=t.replace(/(\S)[ \t]$/gm,"$1"),t=t.replace(/(\S)[ \t]{3,}$/gm,"$1"),t=t.replace(/(\S)( ?\t\t? ?)$/gm,"$1"),t):t.replace(/[ \t]+$/gm,"")}get optionBuilders(){return[new H({OptionsClass:fo,nameKey:"rules.trailing-spaces.twp-space-line-break.name",descriptionKey:"rules.trailing-spaces.twp-space-line-break.description",optionsKey:"twoSpaceLineBreak"})]}};an=z([y.register],an);var yo=class{constructor(){this.lineBreakIndicator=" "}},Ca=class extends y{constructor(){super({nameKey:"rules.two-spaces-between-lines-with-content.name",descriptionKey:"rules.two-spaces-between-lines-with-content.description",type:"Content",ruleIgnoreTypes:[h.obsidianMultiLineComments,h.yaml,h.table]})}get OptionsClass(){return yo}apply(t,i){return Xu(t,i.lineBreakIndicator)}get optionBuilders(){return[new ee({OptionsClass:yo,nameKey:"rules.two-spaces-between-lines-with-content.line-break-indicator.name",descriptionKey:"rules.two-spaces-between-lines-with-content.line-break-indicator.description",optionsKey:"lineBreakIndicator",records:[{value:" ",description:" "},{value:"
",description:"
"},{value:"
",description:"
"},{value:"\\",description:"\\"}]})]}};Ca=z([y.register],Ca);var bo=class{constructor(){this.listStyle="consistent"}},Oa=class extends y{constructor(){super({nameKey:"rules.unordered-list-style.name",descriptionKey:"rules.unordered-list-style.description",type:"Content",ruleIgnoreTypes:[h.code,h.math,h.yaml,h.tag]})}get OptionsClass(){return bo}apply(t,i){return lp(t,i.listStyle)}get optionBuilders(){return[new ee({OptionsClass:bo,nameKey:"rules.unordered-list-style.list-style.name",descriptionKey:"rules.unordered-list-style.list-style.description",optionsKey:"listStyle",records:[{value:"consistent",description:"Makes sure unordered list items use a consistent list item indicator in the file which will be based on the first list item found"},{value:"-",description:"Makes sure unordered list items use `-` as their indicator"},{value:"*",description:"Makes sure unordered list items use `*` as their indicator"},{value:"+",description:"Makes sure unordered list items use `+` as their indicator"}]})]}};Oa=z([y.register],Oa);var Vi=class{constructor(){this.priorityKeysAtStartOfYaml=!0;this.yamlKeyPrioritySortOrder=[];this.yamlSortOrderForOtherKeys="None"}};z([y.noSettingControl()],Vi.prototype,"dateModifiedKey",2),z([y.noSettingControl()],Vi.prototype,"currentTimeFormatted",2),z([y.noSettingControl()],Vi.prototype,"yamlTimestampDateModifiedEnabled",2);var sn=class extends y{constructor(){super({nameKey:"rules.yaml-key-sort.name",descriptionKey:"rules.yaml-key-sort.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Vi}apply(t,i){let n=Ln(t);if(n===null)return t;let r=n,a=i.priorityKeysAtStartOfYaml,s=i.yamlKeyPrioritySortOrder,o=0;for(let b of s)b.endsWith(":")&&(s[o]=b.substring(0,b.length-1)),o++;let l=ri(r),c=this.getYAMLKeysSorted(r,s,l),d=c.sortedYamlKeyValues;r=c.remainingYaml;let u=i.yamlSortOrderForOtherKeys;if(l==null)return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);let m=Object.keys(l),p;if(u==="Ascending Alphabetical")p=this.sortAlphabeticallyAsc;else if(u==="Descending Alphabetical")p=this.sortAlphabeticallyDesc;else return this.getTextWithNewYamlFrontmatter(t,n,d,r,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled);m=m.sort(p);let g=this.getYAMLKeysSorted(r,m,l);return this.getTextWithNewYamlFrontmatter(t,n,d,g.sortedYamlKeyValues,a,i.dateModifiedKey,i.currentTimeFormatted,i.yamlTimestampDateModifiedEnabled)}getYAMLKeysSorted(t,i,n){let r="";for(let a of i){if(!(a in n))continue;let s=de(t,a,!1);s!==null&&(s.includes(` +`)?r+=`${a}:${s} +`:r+=`${a}: ${s} +`,t=Mt(t,a,!1))}return{remainingYaml:t,sortedYamlKeyValues:r}}updateDateModifiedIfYamlChanged(t,i,n,r){return t==i?i:ae(i,n," "+r)}getTextWithNewYamlFrontmatter(t,i,n,r,a,s,o,l){let c=`${r}${n}`;return a&&(c=`${n}${r}`),l&&(c=this.updateDateModifiedIfYamlChanged(i,c,s,o)),t.replace(i,c)}sortAlphabeticallyAsc(t,i){return t=t.toLowerCase(),i=i.toLowerCase(),ti?-1:i>t?1:0}get optionBuilders(){return[new pe({OptionsClass:Vi,nameKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.name",descriptionKey:"rules.yaml-key-sort.yaml-key-priority-sort-order.description",optionsKey:"yamlKeyPrioritySortOrder"}),new H({OptionsClass:Vi,nameKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.name",descriptionKey:"rules.yaml-key-sort.priority-keys-at-start-of-yaml.description",optionsKey:"priorityKeysAtStartOfYaml"}),new ee({OptionsClass:Vi,nameKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.name",descriptionKey:"rules.yaml-key-sort.yaml-sort-order-for-other-keys.description",optionsKey:"yamlSortOrderForOtherKeys",records:[{value:"None",description:"No sorting other than what is in the YAML Key Priority Sort Order text area"},{value:"Ascending Alphabetical",description:"Sorts the keys based on key value from a to z"},{value:"Descending Alphabetical",description:"Sorts the keys based on key value from z to a"}]})]}};sn=z([y.register],sn);var Ai=require("obsidian");var Nc=gn(xm());var He=class{constructor(){this.dateCreatedKey="date created";this.dateCreated=!0;this.forceRetentionOfCreatedValue=!1;this.format="dddd, MMMM Do YYYY, h:mm:ss a";this.dateModified=!0;this.dateModifiedKey="date modified";this.convertToUTC=!1;this.locale="en"}};z([y.noSettingControl()],He.prototype,"alreadyModified",2),z([y.noSettingControl()],He.prototype,"fileCreatedTime",2),z([y.noSettingControl()],He.prototype,"fileModifiedTime",2),z([y.noSettingControl()],He.prototype,"locale",2),z([y.noSettingControl()],He.prototype,"currentTime",2),z([y.noSettingControl()],He.prototype,"fileName",2);var ht=class extends y{constructor(){super({nameKey:"rules.yaml-timestamp.name",descriptionKey:"rules.yaml-timestamp.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return He}apply(t,i){let n=i.alreadyModified,r=Ci(t);return n=n||r!==t,i.format=i.format.trimEnd(),he(r,a=>{if(i.dateCreated){let s=!1;[a,s]=this.handleDateCreatedValue(a,i),n=n||s}return i.dateModified&&(a=this.handleDateModifiedValue(a,n,i)),a})}handleDateCreatedValue(t,i){let n=!1,r=` ${i.dateCreatedKey}: [^ ]+ `,a=` ${i.dateCreatedKey}:[ ]* -`,s=new RegExp(a),o=new RegExp(r),l=(0,Je.moment)(i.fileCreatedTime);l.locale(i.locale);let d=l.format(i.format),c=` -${i.dateCreatedKey}: ${d}`,u=o.test(t);if(!u&&s.test(t))t=t.replace(s,Ke(c)+` -`),n=!0;else if(u){if(u){let m=this.getYAMLTimestampString(t,o,i.dateCreatedKey);if(i.forceRetentionOfCreatedValue){let g=this.parseValueToCurrentFormatIfPossible(m,i.format,i.locale);if(g==null)throw new Error(T("logs.invalid-date-format-error").replace("{DATE}",m).replace("{FILE_NAME}",i.fileName));if(g.format(i.format)!==m){let h=` -${i.dateCreatedKey}: ${g.format(i.format)}`;t=t.replace(o,Ke(h)+` -`),n=!0}}else{let g=(0,Je.moment)(m,i.format,i.locale,!0);(g==null||!g.isValid())&&(t=t.replace(o,Ke(c)+` +`,s=new RegExp(a),o=new RegExp(r),l=(0,Ai.moment)(i.fileCreatedTime);l.locale(i.locale);let c=i.convertToUTC?l.utc().format(i.format):l.format(i.format),d=` +${i.dateCreatedKey}: ${c}`,u=o.test(t);if(!u&&s.test(t))t=t.replace(s,Qe(d)+` +`),n=!0;else if(u){if(u){let m=this.getYAMLTimestampString(t,o,i.dateCreatedKey),p=(0,Nc.default)(m);if(i.forceRetentionOfCreatedValue&&i.format!==p){let g=this.parseValueToCurrentFormatIfPossible(m,i.format,i.locale,i.convertToUTC);if(g==null)throw new Error(A("logs.invalid-date-format-error").replace("{DATE}",m).replace("{FILE_NAME}",i.fileName));let b=i.convertToUTC?g.utc().format(i.format):g.format(i.format);if(b!==m){let f=` +${i.dateCreatedKey}: ${b}`;t=t.replace(o,Qe(f)+` +`),n=!0}}else if(!i.forceRetentionOfCreatedValue){let g=(0,Ai.moment)(m,i.format,i.locale,!0);(g==null||!g.isValid())&&(t=t.replace(o,Qe(d)+` `),n=!0)}}}else{let m=t.indexOf(` ----`);t=st(t,m,` -${i.dateCreatedKey}: ${d}`),n=!0}return[t,n]}handleDateModifiedValue(t,i,n){let r=` +---`);t=At(t,m,` +${i.dateCreatedKey}: ${c}`),n=!0}return[t,n]}handleDateModifiedValue(t,i,n){let r=` ${n.dateModifiedKey}: [^ ]+ `,a=` ${n.dateModifiedKey}:[ ]* -`,s=new RegExp(a),o=new RegExp(r),l=(0,Je.moment)(n.fileModifiedTime);l.locale(n.locale);let d=n.currentTime.format(n.format),c=` -${n.dateModifiedKey}: ${d}`,u=o.test(t);if(u){let m=(0,Je.moment)(t.match(o)[0].replace(n.dateModifiedKey+":","").trim(),n.format,n.locale,!0);(i||m==null||!m.isValid()||this.getTimeDifferenceInSeconds(m,l,n)>5)&&(t=t.replace(o,Ke(c)+` -`))}else if(s.test(t))t=t.replace(s,Ke(c)+` +`,s=new RegExp(a),o=new RegExp(r),l=(0,Ai.moment)(n.fileModifiedTime);l.locale(n.locale);let c=n.convertToUTC?n.currentTime.utc().format(n.format):n.currentTime.format(n.format),d=` +${n.dateModifiedKey}: ${c}`,u=o.test(t);if(u){let m=(0,Ai.moment)(t.match(o)[0].replace(n.dateModifiedKey+":","").trim(),n.format,n.locale,!0);(i||m==null||!m.isValid()||this.getTimeDifferenceInSeconds(m,l,n)>5)&&(t=t.replace(o,Qe(d)+` +`))}else if(s.test(t))t=t.replace(s,Qe(d)+` `);else if(!u){let m=t.indexOf(` ----`);t=st(t,m,c)}return t}parseValueToCurrentFormatIfPossible(t,i,n){if(t==null)return null;let r=(0,Je.moment)(t,i,n,!0);if(r!=null&&r.isValid())return r;let a=(0,up.default)(t);if(a!=null){let s=(0,Je.moment)(t,a);return s.locale(n),(0,Je.moment)(s.format(i),i,n,!0)}return null}getYAMLTimestampString(t,i,n){return t.match(i)[0].replace(n+":","").trim()}getTimeDifferenceInSeconds(t,i,n){let r=(0,Je.moment)(i.format(n.format),n.format,n.locale,!0);return Math.abs(t.diff(r,"seconds"))}get exampleBuilders(){return[new y({description:"Adds a header with the date.",before:p` - # H1 - `,after:p` - --- - date created: Wednesday, January 1st 2020, 12:00:00 am - date modified: Thursday, January 2nd 2020, 12:00:05 am - --- - # H1 - `,options:{fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-02T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"dateCreated option is false",before:p` - # H1 - `,after:p` - --- - date modified: Thursday, January 2nd 2020, 12:00:05 am - --- - # H1 - `,options:{dateCreated:!1,fileCreatedTime:"2020-01-01T00:00:00-00:00",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:05 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Created Key is set",before:p` - # H1 - `,after:p` - --- - created: Wednesday, January 1st 2020, 12:00:00 am - --- - # H1 - `,options:{dateCreated:!0,dateModified:!1,dateCreatedKey:"created",fileCreatedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Thursday, January 2nd 2020, 12:00:03 am","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}}),new y({description:"Date Modified Key is set",before:p` - # H1 - `,after:p` - --- - modified: Wednesday, January 1st 2020, 4:00:00 pm - --- - # H1 - `,options:{dateCreated:!1,dateModified:!0,dateModifiedKey:"modified",fileModifiedTime:"2020-01-01T00:00:00-00:00",currentTime:(0,Je.moment)("Wednesday, January 1st 2020, 4:00:00 pm","dddd, MMMM Do YYYY, h:mm:ss a"),alreadyModified:!1}})]}get optionBuilders(){return[new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-created.name",descriptionKey:"rules.yaml-timestamp.date-created.description",optionsKey:"dateCreated"}),new We({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-created-key.name",descriptionKey:"rules.yaml-timestamp.date-created-key.description",optionsKey:"dateCreatedKey"}),new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.force-retention-of-create-value.name",descriptionKey:"rules.yaml-timestamp.force-retention-of-create-value.description",optionsKey:"forceRetentionOfCreatedValue"}),new U({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-modified.name",descriptionKey:"rules.yaml-timestamp.date-modified.description",optionsKey:"dateModified"}),new We({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.date-modified-key.name",descriptionKey:"rules.yaml-timestamp.date-modified-key.description",optionsKey:"dateModifiedKey"}),new ds({OptionsClass:Ye,nameKey:"rules.yaml-timestamp.format.name",descriptionKey:"rules.yaml-timestamp.format.description",optionsKey:"format"})]}};Ui=A([b.register],Ui);var zi=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};A([b.noSettingControl()],zi.prototype,"aliasArrayStyle",2),A([b.noSettingControl()],zi.prototype,"fileName",2),A([b.noSettingControl()],zi.prototype,"defaultEscapeCharacter",2),A([b.noSettingControl()],zi.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var Hr=class extends b{constructor(){super({nameKey:"rules.yaml-title-alias.name",descriptionKey:"rules.yaml-title-alias.description",type:"YAML"})}get OptionsClass(){return zi}apply(t,i){t=bi(t);let[n,r]=this.getTitleInfo(t,i.fileName,i.aliasArrayStyle,i.defaultEscapeCharacter),a=null,s=t.match(Ge)[1],o=!i.keepAliasThatMatchesTheFilename&&n===i.fileName,l=s.replace(`--- +---`);t=At(t,m,d)}return t}parseValueToCurrentFormatIfPossible(t,i,n,r){if(t==null)return null;let a=r?Ai.moment.utc(t,i,n,!0):(0,Ai.moment)(t,i,n,!0);if(a!=null&&a.isValid())return a;let s=(0,Nc.default)(t);if(s!=null){let o=r?Ai.moment.utc(t,s):(0,Ai.moment)(t,s);o.locale(n);let l=r?o.utc().format(i):o.format(i);return(0,Ai.moment)(l,i,n,!0)}return null}getYAMLTimestampString(t,i,n){return t.match(i)[0].replace(n+":","").trim()}getTimeDifferenceInSeconds(t,i,n){let r=(0,Ai.moment)(i.format(n.format),n.format,n.locale,!0);return Math.abs(t.diff(r,"seconds"))}get optionBuilders(){return[new H({OptionsClass:He,nameKey:"rules.yaml-timestamp.date-created.name",descriptionKey:"rules.yaml-timestamp.date-created.description",optionsKey:"dateCreated"}),new xe({OptionsClass:He,nameKey:"rules.yaml-timestamp.date-created-key.name",descriptionKey:"rules.yaml-timestamp.date-created-key.description",optionsKey:"dateCreatedKey"}),new H({OptionsClass:He,nameKey:"rules.yaml-timestamp.force-retention-of-create-value.name",descriptionKey:"rules.yaml-timestamp.force-retention-of-create-value.description",optionsKey:"forceRetentionOfCreatedValue"}),new H({OptionsClass:He,nameKey:"rules.yaml-timestamp.date-modified.name",descriptionKey:"rules.yaml-timestamp.date-modified.description",optionsKey:"dateModified"}),new xe({OptionsClass:He,nameKey:"rules.yaml-timestamp.date-modified-key.name",descriptionKey:"rules.yaml-timestamp.date-modified-key.description",optionsKey:"dateModifiedKey"}),new Zs({OptionsClass:He,nameKey:"rules.yaml-timestamp.format.name",descriptionKey:"rules.yaml-timestamp.format.description",optionsKey:"format"}),new H({OptionsClass:He,nameKey:"rules.yaml-timestamp.convert-to-utc.name",descriptionKey:"rules.yaml-timestamp.convert-to-utc.description",optionsKey:"convertToUTC"})]}};ht=z([y.register],ht);var Si=class{constructor(){this.preserveExistingAliasesSectionStyle=!0;this.keepAliasThatMatchesTheFilename=!1;this.useYamlKeyToKeepTrackOfOldFilenameOrHeading=!0;this.aliasHelperKey=Vl;this.aliasArrayStyle="multi-line";this.defaultEscapeCharacter='"';this.removeUnnecessaryEscapeCharsForMultiLineArrays=!1}};z([y.noSettingControl()],Si.prototype,"aliasArrayStyle",2),z([y.noSettingControl()],Si.prototype,"fileName",2),z([y.noSettingControl()],Si.prototype,"defaultEscapeCharacter",2),z([y.noSettingControl()],Si.prototype,"removeUnnecessaryEscapeCharsForMultiLineArrays",2);var on=class extends y{constructor(){super({nameKey:"rules.yaml-title-alias.name",descriptionKey:"rules.yaml-title-alias.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return Si}apply(t,i){t=Ci(t);let[n,r]=this.getTitleInfo(t,i.fileName,i.aliasArrayStyle,i.defaultEscapeCharacter),a=null,s=t.match(Ge)[1],o=!i.keepAliasThatMatchesTheFilename&&n===i.fileName,l=s.replace(`--- `,"").replace(` ----`,""),d=Mi(s);a=d[Ja]??null,a!=null&&(a=a+"",a=li(a,i.defaultEscapeCharacter,this.forceEscape(a,i.aliasArrayStyle)));let c=null,u=Object.keys(d);for(let m of Wn)if(u.includes(m)){c=m;break}if(c!=null){let m=Ce(l,c),g="multi-line",h=m==="",v=!1;m.includes(` -`)||(m.match(/^\[.*\]/)===null?(g="single string to single-line",v=!0):g="single-line");let x=es(vi(m)),w=this.getNewAliasValue(x,o,r,a);w===""?l=ut(l,c):i.preserveExistingAliasesSectionStyle?!h&&(v&&r==w||!v||x==w)?l=Le(l,c,Qe(w,g,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=Le(l,c,Qe(w,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=Le(l,c,Qe(w,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0))}else o||(l=Le(l,nl,Qe(r,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)));return!i.useYamlKeyToKeepTrackOfOldFilenameOrHeading||o?l=ut(l,Ja):l=Le(l,Ja,` ${r}`),t=t.replace(`--- +---`,""),c=ri(s),d=i.aliasHelperKey??Vl;d.endsWith(":")&&(d=d.substring(0,d.length-1)),a=c[d]??null,a!=null&&(a=a+"",a=vi(a,i.defaultEscapeCharacter,this.forceEscape(a,i.aliasArrayStyle)));let u=null,m=Object.keys(c);for(let p of bi)if(m.includes(p)){u=p;break}if(u!=null){let p=de(l,u),g="multi-line",b=p==="",f=!1;!p.includes(` +`)&&!(p==="[]"&&i.aliasArrayStyle==="multi-line")&&(p.match(/^\[.*\]/)===null?(g="single string to single-line",f=!0):g="single-line");let x=ot(qe(p)),k=this.getNewAliasValue(x,o,r,a);k===""?l=Mt(l,u):i.preserveExistingAliasesSectionStyle?!b&&(f&&r==k||!f||x==k)?l=ae(l,u,be(k,g,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=ae(l,u,be(k,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)):l=ae(l,u,be(k,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0))}else o||(l=ae(l,Wl,be(r,i.aliasArrayStyle,i.defaultEscapeCharacter,i.removeUnnecessaryEscapeCharsForMultiLineArrays,!0)));return!i.useYamlKeyToKeepTrackOfOldFilenameOrHeading||o?l=Mt(l,d):l=ae(l,d,` ${r}`),t=t.replace(`--- ${s}---`,`--- -${l}---`),t}getTitleInfo(t,i,n,r){let a=we([f.code,f.math,f.yaml,f.tag],t,Qa);a=a||i;let s=li(a,r,this.forceEscape(a,n));return[a,s]}forceEscape(t,i){return Ca(t)||t.includes(",")&&(i==="single-line"||i==="single string to single-line"||i==="single string comma delimited")}getNewAliasValue(t,i,n,r){if(t==null)return i?"":n;if(typeof t=="string")i?t===n&&(t=""):r===t?t=n:t=[n,t];else if(r!==null){let a=t.indexOf(r);a===-1&&tn(r)&&(a=t.indexOf(r.substring(1,r.length-1))),a!==-1?i?t.splice(a,1):t[a]=n:t=[n,...t]}else{let a=t.indexOf(n);a!==-1?i&&t.splice(a,1):i||(t=[n,...t])}return t===""||t.length===0?"":t}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading.",before:p` - # Obsidian - `,after:p` - --- - aliases: - - Obsidian - linter-yaml-title-alias: Obsidian - --- - # Obsidian - `}),new y({description:"Adds a header with the title from heading without YAML key when the use of the YAML key is set to false.",before:p` - # Obsidian - `,after:p` - --- - aliases: - - Obsidian - --- - # Obsidian - `,options:{useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new y({description:"Adds a header with the title.",before:p` - ${""} - `,after:p` - --- - aliases: - - Filename - linter-yaml-title-alias: Filename - --- - ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new y({description:"Adds a header with the title without YAML key when the use of the YAML key is set to false.",before:p` - ${""} - `,after:p` - --- - aliases: - - Filename - --- - ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0,useYamlKeyToKeepTrackOfOldFilenameOrHeading:!1}}),new y({description:"Replaces old filename with new filename when no header is present and filename is different than the old one listed in `linter-yaml-title-alias`.",before:p` - --- - aliases: - - Old Filename - - Alias 2 - linter-yaml-title-alias: Old Filename - --- - ${""} - `,after:p` - --- - aliases: - - Filename - - Alias 2 - linter-yaml-title-alias: Filename - --- - ${""} - `,options:{fileName:"Filename",keepAliasThatMatchesTheFilename:!0}}),new y({description:"Make sure that markdown and wiki links in first H1 get their values converted to text",before:p` - # This is a [Heading](markdown.md) - `,after:p` - --- - aliases: - - This is a Heading - linter-yaml-title-alias: This is a Heading - --- - # This is a [Heading](markdown.md) - `,options:{aliasArrayStyle:"multi-line"}})]}get optionBuilders(){return[new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.name",descriptionKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.description",optionsKey:"preserveExistingAliasesSectionStyle"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.name",descriptionKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.description",optionsKey:"keepAliasThatMatchesTheFilename"}),new U({OptionsClass:zi,nameKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.name",descriptionKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.description",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"})]}};Hr=A([b.register],Hr);var qt=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title";this.mode="first-h1-or-filename-if-h1-missing"}};A([b.noSettingControl()],qt.prototype,"fileName",2),A([b.noSettingControl()],qt.prototype,"defaultEscapeCharacter",2);var $r=class extends b{constructor(){super({nameKey:"rules.yaml-title.name",descriptionKey:"rules.yaml-title.description",type:"YAML"})}get OptionsClass(){return qt}apply(t,i){t=bi(t);let n="";switch(i.mode){case"filename":n=i.fileName;break;case"first-h1":n=this.getFirstH1Header(t);break;default:n=this.getFirstH1Header(t),n=n||i.fileName}return n=li(n,i.defaultEscapeCharacter),Ae(t,r=>{let a=` +${l}---`),t}getTitleInfo(t,i,n,r){let a=Ee([h.code,h.math,h.yaml,h.tag],t,qs);a=a||i;let s=vi(a,r,this.forceEscape(a,n));return[a,s]}forceEscape(t,i){return cs(t)||t.includes(",")&&(i==="single-line"||i==="single string to single-line"||i==="single string comma delimited")}getNewAliasValue(t,i,n,r){if(t==null)return i?"":n;if(typeof t=="string")i?t===n&&(t=""):r===t?t=n:t=[n,t];else if(r!==null){let a=t.indexOf(r);a===-1&&Tn(r)&&(a=t.indexOf(r.substring(1,r.length-1))),a!==-1?i?t.splice(a,1):t[a]=n:t=[n,...t]}else{let a=t.indexOf(n);a!==-1?i&&t.splice(a,1):i||(t=[n,...t])}return t===""||t.length===0?"":t}get optionBuilders(){return[new H({OptionsClass:Si,nameKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.name",descriptionKey:"rules.yaml-title-alias.preserve-existing-alias-section-style.description",optionsKey:"preserveExistingAliasesSectionStyle"}),new H({OptionsClass:Si,nameKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.name",descriptionKey:"rules.yaml-title-alias.keep-alias-that-matches-the-filename.description",optionsKey:"keepAliasThatMatchesTheFilename"}),new H({OptionsClass:Si,nameKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.name",descriptionKey:"rules.yaml-title-alias.use-yaml-key-to-keep-track-of-old-filename-or-heading.description",optionsKey:"useYamlKeyToKeepTrackOfOldFilenameOrHeading"}),new xe({OptionsClass:Si,nameKey:"rules.yaml-title-alias.alias-helper-key.name",descriptionKey:"rules.yaml-title-alias.alias-helper-key.description",optionsKey:"aliasHelperKey"})]}};on=z([y.register],on);var ln=class{constructor(){this.defaultEscapeCharacter='"';this.titleKey="title";this.mode="first-h1-or-filename-if-h1-missing"}};z([y.noSettingControl()],ln.prototype,"fileName",2),z([y.noSettingControl()],ln.prototype,"defaultEscapeCharacter",2);var cn=class extends y{constructor(){super({nameKey:"rules.yaml-title.name",descriptionKey:"rules.yaml-title.description",type:"YAML",hasSpecialExecutionOrder:!0})}get OptionsClass(){return ln}apply(t,i){t=Ci(t);let n="";switch(i.mode){case"filename":n=i.fileName;break;case"first-h1":n=this.getFirstH1Header(t);break;default:n=this.getFirstH1Header(t),n=n||i.fileName}return n=vi(n,i.defaultEscapeCharacter),he(t,r=>{let a=` ${i.titleKey}.* -`,s=new RegExp(a);if(s.test(r))r=r.replace(s,Ke(` +`,s=new RegExp(a);if(s.test(r))r=r.replace(s,Qe(` ${i.titleKey}: ${n} `));else{let o=r.indexOf(` ----`);r=st(r,o,` -${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return we([f.code,f.math,f.yaml,f.tag],t,Qa)}get exampleBuilders(){return[new y({description:"Adds a header with the title from heading when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` - # Obsidian - `,after:p` - --- - title: Obsidian - --- - # Obsidian - `,options:{fileName:"Filename"}}),new y({description:"Adds a header with the title when `mode = 'First H1 or Filename if H1 Missing'`.",before:p` - ${""} - `,after:p` - --- - title: Filename - --- - ${""} - `,options:{fileName:"Filename"}}),new y({description:"Make sure that markdown links in headings are properly copied to the YAML as just the text when `mode = 'First H1 or Filename if H1 Missing'`",before:p` - # This is a [Heading](test heading.md) - `,after:p` - --- - title: This is a Heading - --- - # This is a [Heading](test heading.md) - `}),new y({description:"When `mode = 'First H1'`, title does not have a value if no H1 is present",before:p` - ## This is a Heading - `,after:p` - --- - title: "" - --- - ## This is a Heading - `,options:{mode:"first-h1",fileName:"Filename"}}),new y({description:"When `mode = 'Filename'`, title uses the filename ignoring all H1s. Note: the filename is \"Filename\" in this example.",before:p` - # This is a Heading - `,after:p` - --- - title: Filename - --- - # This is a Heading - `,options:{mode:"filename",fileName:"Filename"}})]}get optionBuilders(){return[new We({OptionsClass:qt,nameKey:"rules.yaml-title.title-key.name",descriptionKey:"rules.yaml-title.title-key.description",optionsKey:"titleKey"}),new ne({OptionsClass:qt,nameKey:"rules.yaml-title.mode.name",descriptionKey:"rules.yaml-title.mode.description",optionsKey:"mode",records:[{value:"first-h1-or-filename-if-h1-missing",description:"Uses the first H1 in the file or the filename of the file if there is not H1"},{value:"filename",description:"Uses the filename as the title"},{value:"first-h1",description:"Uses the first H1 in the file as the title"}]})]}};$r=A([b.register],$r);var ox=` - - - - - -`,lx=` - - - - - - - -`,cx=` - - - - - - - - - - - - -`,dx=` - -`,ux=` - -`,px=` - -`,mx=` - -`,gx=` - -`,hx=` - -`,fx=` - -`,yx=` - -`,bx=` - -`,vx=` - - - - -`,xx=` - - -`,wx=` - - -`,ke={folder:{id:"lint-folder",source:lx},file:{id:"lint-file",source:ox},vault:{id:"lint-vault",source:cx},whitespace:{id:"lint-whitespace",source:dx},math:{id:"lint-math",source:ux},content:{id:"lint-content",source:px},paste:{id:"lint-paste",source:mx},custom:{id:"lint-custom",source:gx},heading:{id:"lint-heading",source:hx},footer:{id:"lint-footer",source:fx},yaml:{id:"lint-yaml",source:yx},general:{id:"lint-general",source:bx},debug:{id:"lint-debug",source:vx},clipboard:{id:"linter-clipboard",source:xx},success:{id:"linter-success",source:wx}};var cn=require("obsidian");var Is=class{constructor(){this.disabledRules=[]}lintText(t){this.skipFile=!1;let i=t.oldText;if([this.disabledRules,this.skipFile]=os(i),this.skipFile)return i;at(T("logs.rule-running"));let n=T("logs.pre-rules");at(n);let r=this.runBeforeRegularRules(t);ji(n);let a=T("logs.disabled-text");for(let o of ki){if(this.disabledRules.includes(o.alias)){oi(o.alias+" "+a);continue}else if(o.hasSpecialExecutionOrder||o.type==="Paste")continue;[r]=ci.applyIfEnabledBase(o,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:t.settings.commonStyles.aliasArrayStyle,tagArrayStyle:t.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:t.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays})}let s=T("logs.custom-regex");return at(s),r=this.runCustomRegexReplacement(t.settings.customRegexes,r),ji(s),t.oldText=r,this.runAfterRegularRules(i,t)}runBeforeRegularRules(t){let i=t.oldText;return[i]=xt.applyIfEnabled(i,t.settings,this.disabledRules),[i]=bt.applyIfEnabled(i,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter}),[i]=wt.applyIfEnabled(i,t.settings,this.disabledRules,{minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock}),i}runAfterRegularRules(t,i){let n=i.oldText,r=T("logs.post-rules");at(r),[n]=yt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=gt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=vt.applyIfEnabled(n,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter});let a=i.getCurrentTime(),s;[n,s]=Ui.applyIfEnabled(n,i.settings,this.disabledRules,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,currentTime:a,alreadyModified:t!=n,locale:i.momentLocale});let o=Ui.getRuleOptions(i.settings);return a=i.getCurrentTime(),[n]=Mt.applyIfEnabled(n,i.settings,this.disabledRules,{currentTimeFormatted:a.format(o.format.trimEnd()),yamlTimestampDateModifiedEnabled:s&&o.dateModified,dateModifiedKey:o.dateModifiedKey}),ji(r),ji(T("logs.rule-running")),n}runCustomCommands(t,i){if(this.skipFile)return;oi(T("logs.running-custom-lint-command"));let n=new Set;for(let r of t){if(r.id){if(n.has(r.id)){rt(T("logs.custom-lint-duplicate-warning").replace("{COMMAND_NAME}",r.name));continue}}else continue;try{n.add(r.id),i.executeCommandById(r.id)}catch(a){ls(a,`${T("logs.custom-lint-error-message")} ${r.id}`)}}}runCustomRegexReplacement(t,i){return we([f.customIgnore],i,n=>{oi(T("logs.running-custom-regex"));let r=n;for(let a of t){let s=a.find===void 0||a.find==""||a.find===null,o=a.replace===void 0||a.replace===null;if(s||o)continue;let l=new RegExp(`${a.find}`,a.flags);r=r.replace(l,zd(a.replace))}return r})}runPasteLint(t,i,n){let r=n.oldText;return[r]=Lt.applyIfEnabled(r,n.settings,[]),[r]=Ot.applyIfEnabled(r,n.settings,[]),[r]=Et.applyIfEnabled(r,n.settings,[]),[r]=St.applyIfEnabled(r,n.settings,[]),[r]=Tt.applyIfEnabled(r,n.settings,[]),[r]=kt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=zt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=ht.applyIfEnabled(r,n.settings,[],{lineContent:t}),r}};function Wr(e,t=null,i,n){let r=t?(0,cn.moment)(t.stat.ctime):(0,cn.moment)();r.locale(i);let a=t?(0,cn.moment)(t.stat.mtime):(0,cn.moment)();a.locale(i);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:t?t.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:i,getCurrentTime:()=>{let l=(0,cn.moment)();return l.locale(i),l}}}var Bs=require("obsidian");var Vr=class extends Bs.Modal{constructor(t,i,n,r,a){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:T("warning-text")}).style.textAlign="center",this.contentEl.createEl("p",{text:i+" "+T("file-backup-text")}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",s=>{s.createEl("button",{text:"Cancel"}).addEventListener("click",()=>this.close());let o=s.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});o.addEventListener("click",async l=>{new Bs.Notice(r),this.close(),await a()}),setTimeout(()=>{o.focus()},50)})}};var Xi=require("obsidian");var pp=require("obsidian");var kx={General:ke.general.id,Custom:ke.custom.id,YAML:ke.yaml.id,Heading:ke.heading.id,Footnote:ke.footer.id,Content:ke.content.id,Spacing:ke.whitespace.id,Paste:ke.paste.id,Debug:ke.debug.id},zx={General:"tabs.names.general",Custom:"tabs.names.custom",YAML:"tabs.names.yaml",Heading:"tabs.names.heading",Footnote:"tabs.names.footnote",Content:"tabs.names.content",Spacing:"tabs.names.spacing",Paste:"tabs.names.paste",Debug:"tabs.names.debug"},Si=class{constructor(t,i,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=t.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,pp.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),kx[n]);let o=T(zx[n]);this.navButton.createSpan().setText(o),this.contentEl=i.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:o}),Xe(this.headingEl)}addSettingSearchInfo(t,i="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:t,name:i.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}addSettingSearchInfoForGeneralSettings(t){this.searchSettingInfo.push({containerEl:t.containerEl,name:t.name.toLowerCase(),description:t.description.toLowerCase(),options:null,alias:null})}updateTabDisplayMode(t,i="the status is still the same"){switch(t?(this.navButton.addClass("linter-navigation-item-selected"),wi(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),Xe(this.contentEl)),i){case"entering search mode by focusing on the search input box":wi(this.contentEl),wi(this.headingEl);for(let n of this.searchSettingInfo)wi(n.containerEl);break;case"leaving search mode by selecting a tab":Xe(this.headingEl);for(let n of this.searchSettingInfo)wi(n.containerEl);break}}};var Kp=require("obsidian");var mp=require("obsidian");var Ur={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,lintOnFileChange:!1,displayLintOnFileChangeNotice:!1,settingsConvertedToConfigKeyValues:!1,foldersToIgnore:[],linterLocale:"system-default",logLevel:"ERROR",lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}};var Gi=class{constructor(t,i,n,r,a,s=null){this.containerEl=t;this.keyToUpdate=r;this.plugin=a;this.beforeSave=s;this.name=T(i),this.description=T(n)}async saveValue(t){let i=this.keyToUpdate.split(".");i.length===2?this.plugin.settings[i[0]][i[1]]=t:this.plugin.settings[this.keyToUpdate]=t,this.beforeSave&&this.beforeSave(),await this.plugin.saveSettings()}getDefaultValue(){let t=this.keyToUpdate.split(".");return t.length===2?Ur[t[0]][t[1]]:Ur[this.keyToUpdate]}getString(){return On(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getBoolean(){return Wc(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getNumber(){return $c(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}parseNameAndDescription(){xi(this.name,this.setting.nameEl,this.plugin.settingsTab.component),xi(this.description,this.setting.descEl,this.plugin.settingsTab.component)}};var Ii=class extends Gi{constructor(i,n,r,a,s,o,l=null){super(i,n,r,a,s,l);this.dropdownRecords=o;this.display()}display(){this.setting=new mp.Setting(this.containerEl).setName(this.name).setDesc(this.description).addDropdown(i=>{this.addDropdownRecords(i),i.setValue(this.getString()),i.onChange(async n=>{this.saveValue(n)})})}addDropdownRecords(i){if(this.dropdownRecords.isForEnum){for(let n of this.dropdownRecords.values){let r="enums."+n;i.addOption(n,T(r))}return}for(let n=0;n{i.inputEl.type="number",i.setValue(this.getNumber().toString()).onChange(async n=>{this.saveValue(parseInt(n))})})}};var hp=require("obsidian");var Ai=class extends Gi{constructor(i,n,r,a,s){super(i,n,r,a,s);this.display()}display(){this.setting=new hp.Setting(this.containerEl).addToggle(i=>{i.setValue(this.getBoolean()).onChange(async n=>{this.saveValue(n)})}),this.parseNameAndDescription()}};var jp=require("obsidian");var fp=require("obsidian");var Qi=class{constructor(t,i,n,r,a,s,o,l){this.containerEl=t;this.parentComponent=i;this.name=n;this.description=r;this.warning=a;this.addInputBtnText=s;this.saveSettings=o;this.onAddInput=l}display(){this.containerEl.createDiv({cls:"setting-item-name",text:this.name});let t=this.containerEl.createDiv({cls:"setting-item-description"});xi(this.description,t.createEl("p",{cls:"custom-row-description"}),this.parentComponent),this.warning!=null&&this.warning.trim()!=""&&t.createEl("p",{text:this.warning,cls:"mod-warning"}),new fp.Setting(this.containerEl).addButton(i=>{i.setButtonText(this.addInputBtnText).setCta().onClick(()=>this.onAddInput())}),this.inputElDiv=this.containerEl.createDiv(),this.showInputEls()}resetInputEls(){this.inputElDiv.empty(),this.showInputEls()}};var Dp=require("obsidian");var pe="top",ze="bottom",ve="right",ge="left",_s="auto",Zi=[pe,ze,ve,ge],Bi="start",It="end",yp="clippingParents",Rs="viewport",dn="popper",bp="reference",Rl=Zi.reduce(function(e,t){return e.concat([t+"-"+Bi,t+"-"+It])},[]),Ds=[].concat(Zi,[_s]).reduce(function(e,t){return e.concat([t,t+"-"+Bi,t+"-"+It])},[]),Sx="beforeRead",Ax="read",Lx="afterRead",Tx="beforeMain",Ex="main",Ox="afterMain",Cx="beforeWrite",Mx="write",qx="afterWrite",vp=[Sx,Ax,Lx,Tx,Ex,Ox,Cx,Mx,qx];function Te(e){return e?(e.nodeName||"").toLowerCase():null}function le(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function ii(e){var t=le(e).Element;return e instanceof t||e instanceof Element}function Se(e){var t=le(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function un(e){if(typeof ShadowRoot>"u")return!1;var t=le(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Ix(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var n=t.styles[i]||{},r=t.attributes[i]||{},a=t.elements[i];!Se(a)||!Te(a)||(Object.assign(a.style,n),Object.keys(r).forEach(function(s){var o=r[s];o===!1?a.removeAttribute(s):a.setAttribute(s,o===!0?"":o)}))})}function Bx(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(n){var r=t.elements[n],a=t.attributes[n]||{},s=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:i[n]),o=s.reduce(function(l,d){return l[d]="",l},{});!Se(r)||!Te(r)||(Object.assign(r.style,o),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var xp={name:"applyStyles",enabled:!0,phase:"write",fn:Ix,effect:Bx,requires:["computeStyles"]};function Ee(e){return e.split("-")[0]}var di=Math.max,Bt=Math.min,Fi=Math.round;function pn(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Gr(){return!/^((?!chrome|android).)*safari/i.test(pn())}function ti(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var n=e.getBoundingClientRect(),r=1,a=1;t&&Se(e)&&(r=e.offsetWidth>0&&Fi(n.width)/e.offsetWidth||1,a=e.offsetHeight>0&&Fi(n.height)/e.offsetHeight||1);var s=ii(e)?le(e):window,o=s.visualViewport,l=!Gr()&&i,d=(n.left+(l&&o?o.offsetLeft:0))/r,c=(n.top+(l&&o?o.offsetTop:0))/a,u=n.width/r,m=n.height/a;return{width:u,height:m,top:c,right:d+u,bottom:c+m,left:d,x:d,y:c}}function Ft(e){var t=ti(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function Qr(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&un(i)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Pe(e){return le(e).getComputedStyle(e)}function Dl(e){return["table","td","th"].indexOf(Te(e))>=0}function Me(e){return((ii(e)?e.ownerDocument:e.document)||window.document).documentElement}function _i(e){return Te(e)==="html"?e:e.assignedSlot||e.parentNode||(un(e)?e.host:null)||Me(e)}function wp(e){return!Se(e)||Pe(e).position==="fixed"?null:e.offsetParent}function Fx(e){var t=/firefox/i.test(pn()),i=/Trident/i.test(pn());if(i&&Se(e)){var n=Pe(e);if(n.position==="fixed")return null}var r=_i(e);for(un(r)&&(r=r.host);Se(r)&&["html","body"].indexOf(Te(r))<0;){var a=Pe(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function ui(e){for(var t=le(e),i=wp(e);i&&Dl(i)&&Pe(i).position==="static";)i=wp(i);return i&&(Te(i)==="html"||Te(i)==="body"&&Pe(i).position==="static")?t:i||Fx(e)||t}function _t(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Rt(e,t,i){return di(e,Bt(t,i))}function kp(e,t,i){var n=Rt(e,t,i);return n>i?i:n}function Zr(){return{top:0,right:0,bottom:0,left:0}}function Jr(e){return Object.assign({},Zr(),e)}function Xr(e,t){return t.reduce(function(i,n){return i[n]=e,i},{})}var _x=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Jr(typeof t!="number"?t:Xr(t,Zi))};function Rx(e){var t,i=e.state,n=e.name,r=e.options,a=i.elements.arrow,s=i.modifiersData.popperOffsets,o=Ee(i.placement),l=_t(o),d=[ge,ve].indexOf(o)>=0,c=d?"height":"width";if(!(!a||!s)){var u=_x(r.padding,i),m=Ft(a),g=l==="y"?pe:ge,h=l==="y"?ze:ve,v=i.rects.reference[c]+i.rects.reference[l]-s[l]-i.rects.popper[c],x=s[l]-i.rects.reference[l],w=ui(a),S=w?l==="y"?w.clientHeight||0:w.clientWidth||0:0,E=v/2-x/2,M=u[g],B=S-m[c]-u[h],L=S/2-m[c]/2+E,_=Rt(M,L,B),q=l;i.modifiersData[n]=(t={},t[q]=_,t.centerOffset=_-L,t)}}function Dx(e){var t=e.state,i=e.options,n=i.element,r=n===void 0?"[data-popper-arrow]":n;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||Qr(t.elements.popper,r)&&(t.elements.arrow=r))}var zp={name:"arrow",enabled:!0,phase:"main",fn:Rx,effect:Dx,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ni(e){return e.split("-")[1]}var Nx={top:"auto",right:"auto",bottom:"auto",left:"auto"};function jx(e,t){var i=e.x,n=e.y,r=t.devicePixelRatio||1;return{x:Fi(i*r)/r||0,y:Fi(n*r)/r||0}}function Sp(e){var t,i=e.popper,n=e.popperRect,r=e.placement,a=e.variation,s=e.offsets,o=e.position,l=e.gpuAcceleration,d=e.adaptive,c=e.roundOffsets,u=e.isFixed,m=s.x,g=m===void 0?0:m,h=s.y,v=h===void 0?0:h,x=typeof c=="function"?c({x:g,y:v}):{x:g,y:v};g=x.x,v=x.y;var w=s.hasOwnProperty("x"),S=s.hasOwnProperty("y"),E=ge,M=pe,B=window;if(d){var L=ui(i),_="clientHeight",q="clientWidth";if(L===le(i)&&(L=Me(i),Pe(L).position!=="static"&&o==="absolute"&&(_="scrollHeight",q="scrollWidth")),L=L,r===pe||(r===ge||r===ve)&&a===It){M=ze;var D=u&&L===B&&B.visualViewport?B.visualViewport.height:L[_];v-=D-n.height,v*=l?1:-1}if(r===ge||(r===pe||r===ze)&&a===It){E=ve;var H=u&&L===B&&B.visualViewport?B.visualViewport.width:L[q];g-=H-n.width,g*=l?1:-1}}var j=Object.assign({position:o},d&&Nx),V=c===!0?jx({x:g,y:v},le(i)):{x:g,y:v};if(g=V.x,v=V.y,l){var R;return Object.assign({},j,(R={},R[M]=S?"0":"",R[E]=w?"0":"",R.transform=(B.devicePixelRatio||1)<=1?"translate("+g+"px, "+v+"px)":"translate3d("+g+"px, "+v+"px, 0)",R))}return Object.assign({},j,(t={},t[M]=S?v+"px":"",t[E]=w?g+"px":"",t.transform="",t))}function Kx(e){var t=e.state,i=e.options,n=i.gpuAcceleration,r=n===void 0?!0:n,a=i.adaptive,s=a===void 0?!0:a,o=i.roundOffsets,l=o===void 0?!0:o;if(!1)var d;var c={placement:Ee(t.placement),variation:ni(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Sp(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Sp(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Ap={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Kx,data:{}};var Ns={passive:!0};function Yx(e){var t=e.state,i=e.instance,n=e.options,r=n.scroll,a=r===void 0?!0:r,s=n.resize,o=s===void 0?!0:s,l=le(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach(function(c){c.addEventListener("scroll",i.update,Ns)}),o&&l.addEventListener("resize",i.update,Ns),function(){a&&d.forEach(function(c){c.removeEventListener("scroll",i.update,Ns)}),o&&l.removeEventListener("resize",i.update,Ns)}}var Lp={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Yx,data:{}};var Px={left:"right",right:"left",bottom:"top",top:"bottom"};function mn(e){return e.replace(/left|right|bottom|top/g,function(t){return Px[t]})}var Hx={start:"end",end:"start"};function js(e){return e.replace(/start|end/g,function(t){return Hx[t]})}function Dt(e){var t=le(e),i=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:i,scrollTop:n}}function Nt(e){return ti(Me(e)).left+Dt(e).scrollLeft}function Nl(e,t){var i=le(e),n=Me(e),r=i.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;var d=Gr();(d||!d&&t==="fixed")&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o+Nt(e),y:l}}function jl(e){var t,i=Me(e),n=Dt(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=di(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),s=di(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),o=-n.scrollLeft+Nt(e),l=-n.scrollTop;return Pe(r||i).direction==="rtl"&&(o+=di(i.clientWidth,r?r.clientWidth:0)-a),{width:a,height:s,x:o,y:l}}function jt(e){var t=Pe(e),i=t.overflow,n=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+r+n)}function Ks(e){return["html","body","#document"].indexOf(Te(e))>=0?e.ownerDocument.body:Se(e)&&jt(e)?e:Ks(_i(e))}function Ji(e,t){var i;t===void 0&&(t=[]);var n=Ks(e),r=n===((i=e.ownerDocument)==null?void 0:i.body),a=le(n),s=r?[a].concat(a.visualViewport||[],jt(n)?n:[]):n,o=t.concat(s);return r?o:o.concat(Ji(_i(s)))}function gn(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function $x(e,t){var i=ti(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function Tp(e,t,i){return t===Rs?gn(Nl(e,i)):ii(t)?$x(t,i):gn(jl(Me(e)))}function Wx(e){var t=Ji(_i(e)),i=["absolute","fixed"].indexOf(Pe(e).position)>=0,n=i&&Se(e)?ui(e):e;return ii(n)?t.filter(function(r){return ii(r)&&Qr(r,n)&&Te(r)!=="body"}):[]}function Kl(e,t,i,n){var r=t==="clippingParents"?Wx(e):[].concat(t),a=[].concat(r,[i]),s=a[0],o=a.reduce(function(l,d){var c=Tp(e,d,n);return l.top=di(c.top,l.top),l.right=Bt(c.right,l.right),l.bottom=Bt(c.bottom,l.bottom),l.left=di(c.left,l.left),l},Tp(e,s,n));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function ea(e){var t=e.reference,i=e.element,n=e.placement,r=n?Ee(n):null,a=n?ni(n):null,s=t.x+t.width/2-i.width/2,o=t.y+t.height/2-i.height/2,l;switch(r){case pe:l={x:s,y:t.y-i.height};break;case ze:l={x:s,y:t.y+t.height};break;case ve:l={x:t.x+t.width,y:o};break;case ge:l={x:t.x-i.width,y:o};break;default:l={x:t.x,y:t.y}}var d=r?_t(r):null;if(d!=null){var c=d==="y"?"height":"width";switch(a){case Bi:l[d]=l[d]-(t[c]/2-i[c]/2);break;case It:l[d]=l[d]+(t[c]/2-i[c]/2);break;default:}}return l}function pi(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=n===void 0?e.placement:n,a=i.strategy,s=a===void 0?e.strategy:a,o=i.boundary,l=o===void 0?yp:o,d=i.rootBoundary,c=d===void 0?Rs:d,u=i.elementContext,m=u===void 0?dn:u,g=i.altBoundary,h=g===void 0?!1:g,v=i.padding,x=v===void 0?0:v,w=Jr(typeof x!="number"?x:Xr(x,Zi)),S=m===dn?bp:dn,E=e.rects.popper,M=e.elements[h?S:m],B=Kl(ii(M)?M:M.contextElement||Me(e.elements.popper),l,c,s),L=ti(e.elements.reference),_=ea({reference:L,element:E,strategy:"absolute",placement:r}),q=gn(Object.assign({},E,_)),D=m===dn?q:L,H={top:B.top-D.top+w.top,bottom:D.bottom-B.bottom+w.bottom,left:B.left-D.left+w.left,right:D.right-B.right+w.right},j=e.modifiersData.offset;if(m===dn&&j){var V=j[r];Object.keys(H).forEach(function(R){var $=[ve,ze].indexOf(R)>=0?1:-1,re=[pe,ze].indexOf(R)>=0?"y":"x";H[R]+=V[re]*$})}return H}function Yl(e,t){t===void 0&&(t={});var i=t,n=i.placement,r=i.boundary,a=i.rootBoundary,s=i.padding,o=i.flipVariations,l=i.allowedAutoPlacements,d=l===void 0?Ds:l,c=ni(n),u=c?o?Rl:Rl.filter(function(h){return ni(h)===c}):Zi,m=u.filter(function(h){return d.indexOf(h)>=0});m.length===0&&(m=u);var g=m.reduce(function(h,v){return h[v]=pi(e,{placement:v,boundary:r,rootBoundary:a,padding:s})[Ee(v)],h},{});return Object.keys(g).sort(function(h,v){return g[h]-g[v]})}function Vx(e){if(Ee(e)===_s)return[];var t=mn(e);return[js(e),t,js(t)]}function Ux(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!0:s,l=i.fallbackPlacements,d=i.padding,c=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.flipVariations,h=g===void 0?!0:g,v=i.allowedAutoPlacements,x=t.options.placement,w=Ee(x),S=w===x,E=l||(S||!h?[mn(x)]:Vx(x)),M=[x].concat(E).reduce(function(He,_e){return He.concat(Ee(_e)===_s?Yl(t,{placement:_e,boundary:c,rootBoundary:u,padding:d,flipVariations:h,allowedAutoPlacements:v}):_e)},[]),B=t.rects.reference,L=t.rects.popper,_=new Map,q=!0,D=M[0],H=0;H=0,re=$?"width":"height",Q=pi(t,{placement:j,boundary:c,rootBoundary:u,altBoundary:m,padding:d}),ce=$?R?ve:ge:R?ze:pe;B[re]>L[re]&&(ce=mn(ce));var de=mn(ce),ue=[];if(a&&ue.push(Q[V]<=0),o&&ue.push(Q[ce]<=0,Q[de]<=0),ue.every(function(He){return He})){D=j,q=!1;break}_.set(j,ue)}if(q)for(var ae=h?3:1,z=function(_e){var ri=M.find(function(Re){var se=_.get(Re);if(se)return se.slice(0,_e).every(function(Li){return Li})});if(ri)return D=ri,"break"},k=ae;k>0;k--){var mi=z(k);if(mi==="break")break}t.placement!==D&&(t.modifiersData[n]._skip=!0,t.placement=D,t.reset=!0)}}var Ep={name:"flip",enabled:!0,phase:"main",fn:Ux,requiresIfExists:["offset"],data:{_skip:!1}};function Op(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function Cp(e){return[pe,ve,ze,ge].some(function(t){return e[t]>=0})}function Gx(e){var t=e.state,i=e.name,n=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,s=pi(t,{elementContext:"reference"}),o=pi(t,{altBoundary:!0}),l=Op(s,n),d=Op(o,r,a),c=Cp(l),u=Cp(d);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:c,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":u})}var Mp={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Gx};function Qx(e,t,i){var n=Ee(e),r=[ge,pe].indexOf(n)>=0?-1:1,a=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,s=a[0],o=a[1];return s=s||0,o=(o||0)*r,[ge,ve].indexOf(n)>=0?{x:o,y:s}:{x:s,y:o}}function Zx(e){var t=e.state,i=e.options,n=e.name,r=i.offset,a=r===void 0?[0,0]:r,s=Ds.reduce(function(c,u){return c[u]=Qx(u,t.rects,a),c},{}),o=s[t.placement],l=o.x,d=o.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[n]=s}var qp={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Zx};function Jx(e){var t=e.state,i=e.name;t.modifiersData[i]=ea({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var Ip={name:"popperOffsets",enabled:!0,phase:"read",fn:Jx,data:{}};function Pl(e){return e==="x"?"y":"x"}function Xx(e){var t=e.state,i=e.options,n=e.name,r=i.mainAxis,a=r===void 0?!0:r,s=i.altAxis,o=s===void 0?!1:s,l=i.boundary,d=i.rootBoundary,c=i.altBoundary,u=i.padding,m=i.tether,g=m===void 0?!0:m,h=i.tetherOffset,v=h===void 0?0:h,x=pi(t,{boundary:l,rootBoundary:d,padding:u,altBoundary:c}),w=Ee(t.placement),S=ni(t.placement),E=!S,M=_t(w),B=Pl(M),L=t.modifiersData.popperOffsets,_=t.rects.reference,q=t.rects.popper,D=typeof v=="function"?v(Object.assign({},t.rects,{placement:t.placement})):v,H=typeof D=="number"?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(L){if(a){var R,$=M==="y"?pe:ge,re=M==="y"?ze:ve,Q=M==="y"?"height":"width",ce=L[M],de=ce+x[$],ue=ce-x[re],ae=g?-q[Q]/2:0,z=S===Bi?_[Q]:q[Q],k=S===Bi?-q[Q]:-_[Q],mi=t.elements.arrow,He=g&&mi?Ft(mi):{width:0,height:0},_e=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Zr(),ri=_e[$],Re=_e[re],se=Rt(0,_[Q],He[Q]),Li=E?_[Q]/2-ae-se-ri-H.mainAxis:z-se-ri-H.mainAxis,ai=E?-_[Q]/2+ae+se+Re+H.mainAxis:k+se+Re+H.mainAxis,gi=t.elements.arrow&&ui(t.elements.arrow),Ti=gi?M==="y"?gi.clientTop||0:gi.clientLeft||0:0,Kt=(R=j?.[M])!=null?R:0,eo=ce+Li-Kt-Ti,io=ce+ai-Kt,bn=Rt(g?Bt(de,eo):de,ce,g?di(ue,io):ue);L[M]=bn,V[M]=bn-ce}if(o){var vn,ra=M==="x"?pe:ge,to=M==="x"?ze:ve,hi=L[B],it=B==="y"?"height":"width",aa=hi+x[ra],sa=hi-x[to],xn=[pe,ge].indexOf(w)!==-1,oa=(vn=j?.[B])!=null?vn:0,la=xn?aa:hi-_[it]-q[it]-oa+H.altAxis,O=xn?hi+_[it]+q[it]-oa-H.altAxis:sa,I=g&&xn?kp(la,hi,O):Rt(g?la:aa,hi,g?O:sa);L[B]=I,V[B]=I-hi}t.modifiersData[n]=V}}var Bp={name:"preventOverflow",enabled:!0,phase:"main",fn:Xx,requiresIfExists:["offset"]};function Hl(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function $l(e){return e===le(e)||!Se(e)?Dt(e):Hl(e)}function ew(e){var t=e.getBoundingClientRect(),i=Fi(t.width)/e.offsetWidth||1,n=Fi(t.height)/e.offsetHeight||1;return i!==1||n!==1}function Wl(e,t,i){i===void 0&&(i=!1);var n=Se(t),r=Se(t)&&ew(t),a=Me(t),s=ti(e,r,i),o={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((Te(t)!=="body"||jt(a))&&(o=$l(t)),Se(t)?(l=ti(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Nt(a))),{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function iw(e){var t=new Map,i=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function r(a){i.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(o){if(!i.has(o)){var l=t.get(o);l&&r(l)}}),n.push(a)}return e.forEach(function(a){i.has(a.name)||r(a)}),n}function Vl(e){var t=iw(e);return vp.reduce(function(i,n){return i.concat(t.filter(function(r){return r.phase===n}))},[])}function Ul(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Gl(e){var t=e.reduce(function(i,n){var r=i[n.name];return i[n.name]=r?Object.assign({},r,n,{options:Object.assign({},r.options,n.options),data:Object.assign({},r.data,n.data)}):n,i},{});return Object.keys(t).map(function(i){return t[i]})}var Fp={placement:"bottom",modifiers:[],strategy:"absolute"};function _p(){for(var e=arguments.length,t=new Array(e),i=0;i(e%t+t)%t,Zl=class{constructor(t,i,n){this.owner=t,this.containerEl=i,i.on("click",".suggestion-item",this.onSuggestionClick.bind(this)),i.on("mousemove",".suggestion-item",this.onSuggestionMouseover.bind(this)),n.register([],"ArrowUp",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem-1,!0),!1}),n.register([],"ArrowDown",r=>{if(!r.isComposing)return this.setSelectedItem(this.selectedItem+1,!0),!1}),n.register([],"Enter",r=>{if(!r.isComposing)return this.useSelectedItem(r),!1})}onSuggestionClick(t,i){t.preventDefault();let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1),this.useSelectedItem(t)}onSuggestionMouseover(t,i){let n=this.suggestions.indexOf(i);this.setSelectedItem(n,!1)}setSuggestions(t){this.containerEl.empty();let i=[];t.forEach(n=>{let r=this.containerEl.createDiv("suggestion-item");this.owner.renderSuggestion(n,r),i.push(r)}),this.values=t,this.suggestions=i,this.setSelectedItem(0,!1)}useSelectedItem(t){let i=this.values[this.selectedItem];i&&this.owner.selectSuggestion(i,t)}setSelectedItem(t,i){let n=nw(t,this.suggestions.length),r=this.suggestions[this.selectedItem],a=this.suggestions[n];r?.removeClass("is-selected"),a?.addClass("is-selected"),this.selectedItem=n,i&&a.scrollIntoView(!1)}},hn=class{constructor(t,i){this.app=t,this.inputEl=i,this.scope=new Dp.Scope,this.suggestEl=createDiv("suggestion-container");let n=this.suggestEl.createDiv("suggestion");this.suggest=new Zl(this,n,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",r=>{r.preventDefault()})}onInputChanged(){let t=this.inputEl.value,i=this.getSuggestions(t);if(!i){this.close();return}i.length>0?(this.suggest.setSuggestions(i),this.open(this.app.dom.appContainerEl,this.inputEl)):this.close()}open(t,i){this.app.keymap.pushScope(this.scope),t.appendChild(this.suggestEl),this.popper=Ql(i,this.suggestEl,{placement:"bottom-start",modifiers:[{name:"sameWidth",enabled:!0,fn:({state:n,instance:r})=>{let a=`${n.rects.reference.width}px`;n.styles.popper.width!==a&&(n.styles.popper.width=a,r.update())},phase:"beforeWrite",requires:["computeStyles"]}]})}close(){this.app.keymap.popScope(this.scope),this.suggest.setSuggestions([]),this.popper&&this.popper.destroy(),this.suggestEl.detach()}};var Np=require("obsidian"),ia=class extends hn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.vault.getAllLoadedFiles().filter(o=>o instanceof Np.TFolder&&o.path!=="/").map(o=>o.path);if(!n)return[];let r=n.filter(o=>!this.valuesToExclude.includes(o)||o===this.inputEl.getAttribute("folderExists")),a=[],s=i.toLowerCase();return r.forEach(o=>{o.toLowerCase().contains(s)&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i)}selectSuggestion(i){this.inputEl.setAttribute("folderName",i),this.inputEl.value=i,this.inputEl.trigger("input"),this.close()}};var Ys=class extends Qi{constructor(i,n,r,a,s){super(i,n,T("tabs.general.folders-to-ignore.name"),T("tabs.general.folders-to-ignore.description"),null,T("tabs.general.folders-to-ignore.add-input-button-text"),s,()=>{let o="";this.foldersToIgnore.push(o),this.saveSettings(),this.addFolderToIgnore(o,this.foldersToIgnore.length-1,!0)});this.foldersToIgnore=r;this.app=a;this.display(),this.inputElDiv.addClass("linter-folder-ignore-container")}showInputEls(){this.foldersToIgnore.forEach((i,n)=>{this.addFolderToIgnore(i,n)})}addFolderToIgnore(i,n,r=!1){new jp.Setting(this.inputElDiv).addSearch(s=>{new ia(this.app,s.inputEl,this.foldersToIgnore),s.setPlaceholder(T("tabs.general.folders-to-ignore.folder-search-placeholder-text")).setValue(i).onChange(o=>{let l=o;(l===""||l===s.inputEl.getAttribute("folderName"))&&(this.foldersToIgnore[n]=l,this.saveSettings())}),s.inputEl.setAttr("tabIndex",n),s.inputEl.addClass("linter-folder-ignore"),r&&s.inputEl.focus()}).addExtraButton(s=>{s.setIcon("cross").setTooltip(T("tabs.general.folders-to-ignore.delete-tooltip")).onClick(()=>{this.foldersToIgnore.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-no-border")}};var Ps=class extends Si{constructor(i,n,r,a,s){super(i,n,"General",r,a);this.app=s;this.display()}display(){let i=this.contentEl.createDiv();this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.lint-on-save.name","tabs.general.lint-on-save.description","lintOnSave",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.display-message.name","tabs.general.display-message.description","displayChanged",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.lint-on-file-change.name","tabs.general.lint-on-file-change.description","lintOnFileChange",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.display-lint-on-file-change-message.name","tabs.general.display-lint-on-file-change-message.description","displayLintOnFileChangeNotice",this.plugin));let n=navigator.language?.toLowerCase(),r=["system-default"],a=[T("tabs.general.same-as-system-locale").replace("{SYS_LOCALE}",n)];for(let g of Kp.moment.locales())r.push(g),a.push(g);let s={isForEnum:!1,values:r,descriptions:a};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.override-locale.name","tabs.general.override-locale.description","linterLocale",this.plugin,s,async()=>{await this.plugin.setOrUpdateMomentInstance()}));let o={isForEnum:!0,values:["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.yaml-aliases-section-style.name","tabs.general.yaml-aliases-section-style.description","commonStyles.aliasArrayStyle",this.plugin,o));let l={isForEnum:!0,values:["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.yaml-tags-section-style.name","tabs.general.yaml-tags-section-style.description","commonStyles.tagArrayStyle",this.plugin,l));let d=['"',"'"],c={isForEnum:!1,values:d,descriptions:d};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ii(i,"tabs.general.default-escape-character.name","tabs.general.default-escape-character.description","commonStyles.escapeCharacter",this.plugin,c)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(i,"tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.name","tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.description","commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Fs(i,"tabs.general.number-of-dollar-signs-to-indicate-math-block.name","tabs.general.number-of-dollar-signs-to-indicate-math-block.description","commonStyles.minimumNumberOfDollarSignsToBeAMathBlock",this.plugin));let u=this.contentEl.createDiv(),m=new Ys(u,this.plugin.settingsTab.component,this.plugin.settings.foldersToIgnore,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(u,m.name,m.description.replaceAll(` -`," "))}};var Hs=class extends Si{constructor(i,n,r,a,s,o){super(i,n,r,s,o);this.rules=a;this.display()}display(){for(let i of this.rules){let n=this.contentEl.createDiv();n.id=i.alias,n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`${i.getName()}`});let r=[];for(let a of i.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.getSearchInfo());this.addSettingSearchInfo(n,i.getName().toLowerCase(),i.getDescription().toLowerCase(),r,n.id)}}};var Yp=require("obsidian");var ta=class extends hn{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=i.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i.name)}selectSuggestion(i){this.inputEl.value=i.name,this.inputEl.setAttribute("commandId",i.id),this.inputEl.trigger("input"),this.close()}};var $s=class extends Qi{constructor(i,n,r,a,s){super(i,n,T("options.custom-command.name"),T("options.custom-command.description"),T("options.custom-command.warning"),T("options.custom-command.add-input-button-text"),s,()=>{let o={id:"",name:""};this.lintCommands.push(o),this.saveSettings(),this.addCommand(o,this.lintCommands.length-1,!0)});this.lintCommands=r;this.app=a;this.display()}showInputEls(){this.lintCommands.forEach((i,n)=>{this.addCommand(i,n)})}addCommand(i,n,r=!1){new Yp.Setting(this.inputElDiv).addSearch(a=>{new ta(this.app,a.inputEl,this.lintCommands),a.setPlaceholder(T("options.custom-command.command-search-placeholder-text")).setValue(i.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip(T("options.custom-command.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip(T("options.custom-command.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip(T("options.custom-command.delete-tooltip")).onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(i,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[i];this.lintCommands[i]=this.lintCommands[n],this.lintCommands[n]=r}};var Jl=require("obsidian");var rw="gm",Ws=class extends Qi{constructor(i,n,r,a){super(i,n,T("options.custom-replace.name"),T("options.custom-replace.description"),T("options.custom-replace.warning"),T("options.custom-replace.add-input-button-text"),a,()=>{let s={label:"",find:"",replace:"",flags:rw};this.regexes.push(s),this.saveSettings(),this.addRegex(s,this.regexes.length-1,!0)});this.regexes=r;this.display(),this.inputElDiv.addClass("linter-custom-regex-replacement-container")}showInputEls(){this.regexes.forEach((i,n)=>{this.addRegex(i,n)})}addRegex(i,n,r=!1){let a=this.inputElDiv.createDiv({cls:"linter-custom-regex-replacement"}),s=a.createDiv(),o=new Jl.Setting(s).addText(c=>{c.setPlaceholder(T("options.custom-replace.label-placeholder-text")).setValue(i.label).onChange(u=>{this.regexes[n].label=u,this.saveSettings()}),c.inputEl.setAttr("inputIndex",n),c.inputEl.addClass("linter-custom-regex-replacement-label-input"),r&&c.inputEl.focus()});o.controlEl.addClass("linter-custom-regex-replacement-label"),o.descEl.remove(),o.infoEl.remove(),o.nameEl.remove();let l=a.createDiv();new Jl.Setting(l).addText(c=>{c.setPlaceholder(T("options.custom-replace.regex-to-find-placeholder-text")).setValue(i.find).onChange(u=>{this.regexes[n].find=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addText(c=>{c.setPlaceholder(T("options.custom-replace.flags-placeholder-text")).setValue(i.flags).onChange(u=>{this.regexes[n].flags=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-flags")}).addText(c=>{c.setPlaceholder(T("options.custom-replace.regex-to-replace-placeholder-text")).setValue(i.replace).onChange(u=>{this.regexes[n].replace=u,this.saveSettings()}),c.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addExtraButton(c=>{c.setIcon("up-chevron-glyph").setTooltip(T("options.custom-replace.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(c=>{c.setIcon("down-chevron-glyph").setTooltip(T("options.custom-replace.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(c=>{c.setIcon("cross").setTooltip(T("options.custom-replace.delete-tooltip")).onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-custom-regex-replacement-row2")}arrayMove(i,n){if(n<0||n===this.regexes.length)return;let r=this.regexes[i];this.regexes[i]=this.regexes[n],this.regexes[n]=r}};var Vs=class extends Si{constructor(i,n,r,a,s){super(i,n,"Custom",r,s);this.app=a;this.display()}display(){let i=this.contentEl.createDiv(),n=new $s(i,this.plugin.settingsTab.component,this.plugin.settings.lintCommands,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(i,n.name,n.description.replaceAll(` +---`);r=At(r,o,` +${i.titleKey}: ${n}`)}return r})}getFirstH1Header(t){return Ee([h.code,h.math,h.yaml,h.tag],t,qs)}get optionBuilders(){return[new xe({OptionsClass:ln,nameKey:"rules.yaml-title.title-key.name",descriptionKey:"rules.yaml-title.title-key.description",optionsKey:"titleKey"}),new ee({OptionsClass:ln,nameKey:"rules.yaml-title.mode.name",descriptionKey:"rules.yaml-title.mode.description",optionsKey:"mode",records:[{value:"first-h1-or-filename-if-h1-missing",description:"Uses the first H1 in the file or the filename of the file if there is not H1"},{value:"filename",description:"Uses the filename as the title"},{value:"first-h1",description:"Uses the first H1 in the file as the title"}]})]}};cn=z([y.register],cn);var Uw=` + + + + + + + + + + + +`,Ww=` + + + + + + + + + + +`,Vw=` + + + + + + + + + + + +`,$w=` + + + +`,Gw=` + + + +`,Qw=` + + + + +`,Zw=` + + + + + + +`,Jw=` + + + +`,Xw=` + + + + +`,ek=` + + + +`,ik=` + + + + +`,tk=` + + +`,nk=` + + + + + + + + + +`,rk=` + + +`,ak=` + +`,Ce={folder:{id:"lint-folder",source:Ww},file:{id:"lint-file",source:Uw},vault:{id:"lint-vault",source:Vw},whitespace:{id:"lint-whitespace",source:$w},math:{id:"lint-math",source:Gw},content:{id:"lint-content",source:Qw},paste:{id:"lint-paste",source:Zw},custom:{id:"lint-custom",source:Jw},heading:{id:"lint-heading",source:Xw},footer:{id:"lint-footer",source:ek},yaml:{id:"lint-yaml",source:ik},general:{id:"lint-general",source:tk},debug:{id:"lint-debug",source:nk},clipboard:{id:"linter-clipboard",source:rk},success:{id:"linter-success",source:ak}};var Yn=require("obsidian");var ko=class{constructor(){this.disabledRules=[]}lintText(t){this.skipFile=!1;let i=t.oldText;if([this.disabledRules,this.skipFile]=$s(i),this.skipFile)return i;zt(A("logs.rule-running"));let n=A("logs.pre-rules");zt(n);let r=this.runBeforeRegularRules(t);Ji(n);let a=A("logs.disabled-text");for(let o of qi){if(this.disabledRules.includes(o.alias)){ii(o.alias+" "+a);continue}else if(o.hasSpecialExecutionOrder||o.type==="Paste")continue;[r]=mt.applyIfEnabledBase(o,r,t.settings,{fileCreatedTime:t.fileInfo.createdAtFormatted,fileModifiedTime:t.fileInfo.modifiedAtFormatted,fileName:t.fileInfo.name,locale:t.momentLocale,minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock,aliasArrayStyle:t.settings.commonStyles.aliasArrayStyle,tagArrayStyle:t.settings.commonStyles.tagArrayStyle,defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:t.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays})}let s=A("logs.custom-regex");return zt(s),r=this.runCustomRegexReplacement(t.settings.customRegexes,r),Ji(s),t.oldText=r,this.runAfterRegularRules(i,t)}runBeforeRegularRules(t){let i=t.oldText;return[i]=Vt.applyIfEnabled(i,t.settings,this.disabledRules),[i]=Ut.applyIfEnabled(i,t.settings,this.disabledRules,{defaultEscapeCharacter:t.settings.commonStyles.escapeCharacter}),[i]=$t.applyIfEnabled(i,t.settings,this.disabledRules,{minimumNumberOfDollarSignsToBeAMathBlock:t.settings.commonStyles.minimumNumberOfDollarSignsToBeAMathBlock}),i}runAfterRegularRules(t,i){let n=i.oldText,r=A("logs.post-rules");zt(r),[n]=Ht.applyIfEnabled(n,i.settings,this.disabledRules),[n]=cn.applyIfEnabled(n,i.settings,this.disabledRules,{fileName:i.fileInfo.name,defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter}),[n]=on.applyIfEnabled(n,i.settings,this.disabledRules,{fileName:i.fileInfo.name,aliasArrayStyle:i.settings.commonStyles.aliasArrayStyle,defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter,removeUnnecessaryEscapeCharsForMultiLineArrays:i.settings.commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays}),[n]=jt.applyIfEnabled(n,i.settings,this.disabledRules),[n]=Wt.applyIfEnabled(n,i.settings,this.disabledRules,{defaultEscapeCharacter:i.settings.commonStyles.escapeCharacter}),[n]=an.applyIfEnabled(n,i.settings,this.disabledRules);let a=i.getCurrentTime(),s;[n,s]=ht.applyIfEnabled(n,i.settings,this.disabledRules,{fileCreatedTime:i.fileInfo.createdAtFormatted,fileModifiedTime:i.fileInfo.modifiedAtFormatted,currentTime:a,alreadyModified:t!=n,locale:i.momentLocale});let o=ht.getRuleOptions(i.settings);return a=i.getCurrentTime(),o.convertToUTC&&(a=a.utc()),[n]=sn.applyIfEnabled(n,i.settings,this.disabledRules,{currentTimeFormatted:a.format(o.format.trimEnd()),yamlTimestampDateModifiedEnabled:s&&o.dateModified,dateModifiedKey:o.dateModifiedKey}),Ji(r),Ji(A("logs.rule-running")),n}runCustomCommands(t,i){if(this.skipFile)return;ii(A("logs.running-custom-lint-command"));let n=new Set;for(let r of t){if(r.id){if(n.has(r.id)){Yi(A("logs.custom-lint-duplicate-warning").replace("{COMMAND_NAME}",r.name));continue}}else continue;try{n.add(r.id),i.executeCommandById(r.id)}catch(a){Gs(a,`${A("logs.custom-lint-error-message")} ${r.id}`)}}}runCustomRegexReplacement(t,i){return Ee([h.customIgnore],i,n=>{ii(A("logs.running-custom-regex"));let r=n,a=n;for(let s of t){let o=s.find===void 0||s.find==""||s.find===null,l=s.replace===void 0||s.replace===null;if(o||l)continue;let c=s.label;c&&c.trim()!=""&&(c+=`: +`),c+=`/${s.find}/${s.flags}/${s.replace}/`,ii(c);let d=new RegExp(`${s.find}`,s.flags);r=r.replace(d,uu(s.replace)),a!=r&&ii(r),a=r}return r})}runPasteLint(t,i,n){let r=n.oldText;return[r]=Xt.applyIfEnabled(r,n.settings,[]),[r]=nn.applyIfEnabled(r,n.settings,[]),[r]=tn.applyIfEnabled(r,n.settings,[]),[r]=Zt.applyIfEnabled(r,n.settings,[]),[r]=en.applyIfEnabled(r,n.settings,[]),[r]=Gt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=Qt.applyIfEnabled(r,n.settings,[],{lineContent:t,selectedText:i}),[r]=Yt.applyIfEnabled(r,n.settings,[],{lineContent:t}),r}};function Ma(e,t=null,i,n){let r=t?(0,Yn.moment)(t.stat.ctime):(0,Yn.moment)();r.locale(i);let a=t?(0,Yn.moment)(t.stat.mtime):(0,Yn.moment)();a.locale(i);let s=a.format(),o=r.format();return{oldText:e,fileInfo:{name:t?t.basename:"",createdAtFormatted:o,modifiedAtFormatted:s},settings:n,momentLocale:i,getCurrentTime:()=>{let l=(0,Yn.moment)();return l.locale(i),l}}}var zo=require("obsidian");var qa=class extends zo.Modal{constructor(t,i,n,r,a,s=!1){super(t),this.modalEl.addClass("confirm-modal"),this.contentEl.createEl("h3",{text:A("warning-text")}).style.textAlign="center",s&&(this.contentEl.createEl("p",{text:A("custom-command-warning")}).style.fontWeight="bold"),this.contentEl.createEl("p",{text:i+" "+A("file-backup-text")}).id="confirm-dialog",this.contentEl.createDiv("modal-button-container",o=>{o.createEl("button",{text:A("cancel-button-text")}).addEventListener("click",()=>this.close());let l=o.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:n});l.addEventListener("click",async c=>{new zo.Notice(r),this.close(),await a()}),setTimeout(()=>{l.focus()},50)})}};var yt=require("obsidian");var wm=require("obsidian");var sk={General:Ce.general.id,Custom:Ce.custom.id,YAML:Ce.yaml.id,Heading:Ce.heading.id,Footnote:Ce.footer.id,Content:Ce.content.id,Spacing:Ce.whitespace.id,Paste:Ce.paste.id,Debug:Ce.debug.id},ok={General:"tabs.names.general",Custom:"tabs.names.custom",YAML:"tabs.names.yaml",Heading:"tabs.names.heading",Footnote:"tabs.names.footnote",Content:"tabs.names.content",Spacing:"tabs.names.spacing",Paste:"tabs.names.paste",Debug:"tabs.names.debug"},Ii=class{constructor(t,i,n,r,a){this.name=n;this.isMobile=r;this.plugin=a;this.searchSettingInfo=[];this.navButton=t.createDiv("linter-navigation-item");let s="linter-desktop";r&&(s="linter-mobile"),this.navButton.addClass(s),(0,wm.setIcon)(this.navButton.createSpan({cls:"linter-navigation-item-icon"}),sk[n]);let o=A(ok[n]);this.navButton.createSpan().setText(o),this.contentEl=i.createDiv("linter-tab-settings"),this.contentEl.id=n.toLowerCase().replace(" ","-"),this.headingEl=this.contentEl.createEl("h2",{text:o}),ci(this.headingEl)}addSettingSearchInfo(t,i="",n="",r=null,a=null){this.searchSettingInfo.push({containerEl:t,name:i.toLowerCase(),description:n.toLowerCase(),options:r,alias:a})}addSettingSearchInfoForGeneralSettings(t){this.searchSettingInfo.push({containerEl:t.containerEl,name:t.name.toLowerCase(),description:t.description.toLowerCase(),options:null,alias:null})}updateTabDisplayMode(t,i="the status is still the same"){switch(t?(this.navButton.addClass("linter-navigation-item-selected"),Mi(this.contentEl)):(this.navButton.removeClass("linter-navigation-item-selected"),ci(this.contentEl)),i){case"entering search mode by focusing on the search input box":Mi(this.contentEl),Mi(this.headingEl);for(let n of this.searchSettingInfo)Mi(n.containerEl);break;case"leaving search mode by selecting a tab":ci(this.headingEl);for(let n of this.searchSettingInfo)Mi(n.containerEl);break}}};var Em=require("obsidian");var km=require("obsidian");var Ia={ruleConfigs:{},lintOnSave:!1,recordLintOnSaveLogs:!1,displayChanged:!0,lintOnFileChange:!1,displayLintOnFileChangeNotice:!1,settingsConvertedToConfigKeyValues:!1,foldersToIgnore:[],filesToIgnore:[],linterLocale:"system-default",logLevel:"ERROR",lintCommands:[],customRegexes:[],commonStyles:{aliasArrayStyle:"single-line",tagArrayStyle:"single-line",minimumNumberOfDollarSignsToBeAMathBlock:2,escapeCharacter:'"',removeUnnecessaryEscapeCharsForMultiLineArrays:!1}};var ft=class{constructor(t,i,n,r,a,s=null){this.containerEl=t;this.keyToUpdate=r;this.plugin=a;this.beforeSave=s;this.name=A(i),this.description=A(n)}async saveValue(t){let i=this.keyToUpdate.split(".");i.length===2?this.plugin.settings[i[0]][i[1]]=t:this.plugin.settings[this.keyToUpdate]=t,this.beforeSave&&this.beforeSave(),await this.plugin.saveSettings()}getDefaultValue(){let t=this.keyToUpdate.split(".");return t.length===2?Ia[t[0]][t[1]]:Ia[this.keyToUpdate]}getString(){return er(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getBoolean(){return Id(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}getNumber(){return qd(this.plugin.settings,this.keyToUpdate)??this.getDefaultValue()}parseNameAndDescription(){Oi(this.name,this.setting.nameEl,this.plugin.settingsTab.component),Oi(this.description,this.setting.descEl,this.plugin.settingsTab.component)}};var $i=class extends ft{constructor(i,n,r,a,s,o,l=null){super(i,n,r,a,s,l);this.dropdownRecords=o;this.display()}display(){this.setting=new km.Setting(this.containerEl).setName(this.name).setDesc(this.description).addDropdown(i=>{this.addDropdownRecords(i),i.setValue(this.getString()),i.onChange(async n=>{this.saveValue(n)})})}addDropdownRecords(i){if(this.dropdownRecords.isForEnum){for(let n of this.dropdownRecords.values){let r="enums."+n;i.addOption(n,A(r))}return}for(let n=0;n{t.inputEl.type="number",t.setValue(this.getNumber().toString()).onChange(async i=>{this.saveValue(parseInt(i))})})}};var Am=require("obsidian");var Bi=class extends ft{constructor(t,i,n,r,a){super(t,i,n,r,a),this.display()}display(){this.setting=new Am.Setting(this.containerEl).addToggle(t=>{t.setValue(this.getBoolean()).onChange(async i=>{this.saveValue(i)})}),this.parseNameAndDescription()}};var Lm=require("obsidian");var Sm=require("obsidian"),Ba=class extends dt{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.vault.getAllLoadedFiles().filter(o=>o instanceof Sm.TFolder&&o.path!=="/").map(o=>o.path);if(!n)return[];let r=n.filter(o=>!this.valuesToExclude.includes(o)||o===this.inputEl.getAttribute("folderName")),a=[],s=i.toLowerCase();return r.forEach(o=>{o.toLowerCase().contains(s)&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i)}selectSuggestion(i){this.inputEl.setAttribute("folderName",i),this.inputEl.value=i,this.inputEl.trigger("input"),this.close()}};var So=class extends di{constructor(i,n,r,a,s){super(i,n,A("tabs.general.folders-to-ignore.name"),A("tabs.general.folders-to-ignore.description"),null,A("tabs.general.folders-to-ignore.add-input-button-text"),s,()=>{let o="";this.foldersToIgnore.push(o),this.saveSettings(),this.addFolderToIgnore(o,this.foldersToIgnore.length-1,!0)});this.foldersToIgnore=r;this.app=a;this.display(),this.inputElDiv.addClass("linter-folder-ignore-container")}showInputEls(){this.foldersToIgnore.forEach((i,n)=>{this.addFolderToIgnore(i,n)})}addFolderToIgnore(i,n,r=!1){new Lm.Setting(this.inputElDiv).addSearch(s=>{new Ba(this.app,s.inputEl,this.foldersToIgnore),s.setPlaceholder(A("tabs.general.folders-to-ignore.folder-search-placeholder-text")).setValue(i).onChange(o=>{let l=o;(l===""||l===s.inputEl.getAttribute("folderName"))&&(this.foldersToIgnore[n]=l,this.saveSettings())}),s.inputEl.setAttr("tabIndex",n),s.inputEl.addClass("linter-folder-ignore"),r&&s.inputEl.focus()}).addExtraButton(s=>{s.setIcon("cross").setTooltip(A("tabs.general.folders-to-ignore.delete-tooltip")).onClick(()=>{this.foldersToIgnore.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-no-border")}};var Tm=require("obsidian");var lk="i",Lo=class extends di{constructor(i,n,r,a){super(i,n,A("tabs.general.files-to-ignore.name"),A("tabs.general.files-to-ignore.description"),A("tabs.general.files-to-ignore.warning"),A("tabs.general.files-to-ignore.add-input-button-text"),a,()=>{let s={label:"",match:"",flags:lk};this.filesToIgnore.push(s),this.saveSettings(),this.addFileToIgnore(s,this.filesToIgnore.length-1,!0)});this.filesToIgnore=r;this.display(),this.inputElDiv.addClass("linter-files-to-ignore-container")}showInputEls(){this.filesToIgnore.forEach((i,n)=>{this.addFileToIgnore(i,n)})}addFileToIgnore(i,n,r=!1){let a=this.inputElDiv.createDiv({cls:"linter-files-to-ignore"});new Tm.Setting(a).addText(s=>{s.setPlaceholder(A("tabs.general.files-to-ignore.label-placeholder-text")).setValue(i.label).onChange(o=>{this.filesToIgnore[n].label=o,this.saveSettings()}),s.inputEl.addClass("linter-files-to-ignore-normal-input"),r&&s.inputEl.focus()}).addText(s=>{s.setPlaceholder(A("tabs.general.files-to-ignore.file-search-placeholder-text")).setValue(i.match).onChange(o=>{this.filesToIgnore[n].match=o,this.saveSettings()}),s.inputEl.addClass("linter-files-to-ignore-normal-input")}).addText(s=>{s.setPlaceholder(A("tabs.general.files-to-ignore.flags-placeholder-text")).setValue(i.flags).onChange(o=>{this.filesToIgnore[n].flags=o,this.saveSettings()}),s.inputEl.addClass("linter-files-to-ignore-flags")}).addExtraButton(s=>{s.setIcon("cross").setTooltip(A("tabs.general.files-to-ignore.delete-tooltip")).onClick(()=>{this.filesToIgnore.splice(n,1),this.saveSettings(),this.resetInputEls()})})}};var To=class extends Ii{constructor(i,n,r,a,s){super(i,n,"General",r,a);this.app=s;this.display()}display(){let i=this.contentEl.createDiv();this.addSettingSearchInfoForGeneralSettings(new Bi(i,"tabs.general.lint-on-save.name","tabs.general.lint-on-save.description","lintOnSave",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Bi(i,"tabs.general.display-message.name","tabs.general.display-message.description","displayChanged",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Bi(i,"tabs.general.lint-on-file-change.name","tabs.general.lint-on-file-change.description","lintOnFileChange",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Bi(i,"tabs.general.display-lint-on-file-change-message.name","tabs.general.display-lint-on-file-change-message.description","displayLintOnFileChangeNotice",this.plugin));let n=navigator.language?.toLowerCase(),r=["system-default"],a=[A("tabs.general.same-as-system-locale").replace("{SYS_LOCALE}",n)];for(let b of Em.moment.locales())r.push(b),a.push(b);let s={isForEnum:!1,values:r,descriptions:a};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new $i(i,"tabs.general.override-locale.name","tabs.general.override-locale.description","linterLocale",this.plugin,s,async()=>{await this.plugin.setOrUpdateMomentInstance()}));let o={isForEnum:!0,values:["multi-line","single-line","single string comma delimited","single string to single-line","single string to multi-line"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new $i(i,"tabs.general.yaml-aliases-section-style.name","tabs.general.yaml-aliases-section-style.description","commonStyles.aliasArrayStyle",this.plugin,o));let l={isForEnum:!0,values:["multi-line","single-line","single string to single-line","single string to multi-line","single-line space delimited","single string space delimited","single string comma delimited"],descriptions:[]};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new $i(i,"tabs.general.yaml-tags-section-style.name","tabs.general.yaml-tags-section-style.description","commonStyles.tagArrayStyle",this.plugin,l));let c=['"',"'"],d={isForEnum:!1,values:c,descriptions:c};i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new $i(i,"tabs.general.default-escape-character.name","tabs.general.default-escape-character.description","commonStyles.escapeCharacter",this.plugin,d)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Bi(i,"tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.name","tabs.general.remove-unnecessary-escape-chars-in-multi-line-arrays.description","commonStyles.removeUnnecessaryEscapeCharsForMultiLineArrays",this.plugin)),i=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ao(i,"tabs.general.number-of-dollar-signs-to-indicate-math-block.name","tabs.general.number-of-dollar-signs-to-indicate-math-block.description","commonStyles.minimumNumberOfDollarSignsToBeAMathBlock",this.plugin));let u=this.contentEl.createDiv(),m=new So(u,this.plugin.settingsTab.component,this.plugin.settings.foldersToIgnore,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(u,m.name,m.description.replaceAll(` +`," "));let p=this.contentEl.createDiv(),g=new Lo(p,this.plugin.settingsTab.component,this.plugin.settings.filesToIgnore,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(p,g.name,g.description.replaceAll(` +`," "))}};var Eo=class extends Ii{constructor(i,n,r,a,s,o){super(i,n,r,s,o);this.rules=a;this.display()}display(){for(let i of this.rules){let n=this.contentEl.createDiv();n.id=i.alias,n.createEl(this.isMobile?"h4":"h3",{},a=>{a.innerHTML=`${i.getName()}`});let r=[];for(let a of i.options)a.display(n,this.plugin.settings,this.plugin),r.push(a.getSearchInfo());this.addSettingSearchInfo(n,i.getName().toLowerCase(),i.getDescription().toLowerCase(),r,n.id)}}};var Cm=require("obsidian");var Fa=class extends dt{constructor(i,n,r=[]){super(i,n);this.app=i;this.inputEl=n;this.valuesToExclude=r}getSuggestions(i){let n=this.app.commands.listCommands();if(!n)return[];let r=n.filter(o=>{for(let l of this.valuesToExclude)if(l.id==o.id&&!(this.inputEl.hasAttribute("commandId")&&this.inputEl.getAttribute("commandId")==o.id))return!1;return!0}),a=[],s=i.toLowerCase();return r.forEach(o=>{(o.id.contains(s)||o.name.toLowerCase().contains(s))&&a.push(o)}),a}renderSuggestion(i,n){n.setText(i.name)}selectSuggestion(i){this.inputEl.value=i.name,this.inputEl.setAttribute("commandId",i.id),this.inputEl.trigger("input"),this.close()}};var Co=class extends di{constructor(i,n,r,a,s){super(i,n,A("options.custom-command.name"),A("options.custom-command.description"),A("options.custom-command.warning"),A("options.custom-command.add-input-button-text"),s,()=>{let o={id:"",name:""};this.lintCommands.push(o),this.saveSettings(),this.addCommand(o,this.lintCommands.length-1,!0)});this.lintCommands=r;this.app=a;this.display()}showInputEls(){this.lintCommands.forEach((i,n)=>{this.addCommand(i,n)})}addCommand(i,n,r=!1){new Cm.Setting(this.inputElDiv).addSearch(a=>{new Fa(this.app,a.inputEl,this.lintCommands),a.setPlaceholder(A("options.custom-command.command-search-placeholder-text")).setValue(i.name).onChange(s=>{let o={id:a.inputEl.getAttribute("commandId"),name:s};o.name&&o.id?(this.lintCommands[n]=o,this.saveSettings()):!o.name&&!o.id&&(this.lintCommands[n]=o,this.saveSettings())}),a.inputEl.setAttr("tabIndex",n),a.inputEl.addClass("linter-custom-command"),r&&a.inputEl.focus()}).addExtraButton(a=>{a.setIcon("up-chevron-glyph").setTooltip(A("options.custom-command.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("down-chevron-glyph").setTooltip(A("options.custom-command.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(a=>{a.setIcon("cross").setTooltip(A("options.custom-command.delete-tooltip")).onClick(()=>{this.lintCommands.splice(n,1),this.saveSettings(),this.resetInputEls()})})}arrayMove(i,n){if(n<0||n===this.lintCommands.length)return;let r=this.lintCommands[i];this.lintCommands[i]=this.lintCommands[n],this.lintCommands[n]=r}};var jc=require("obsidian");var ck="gm",Oo=class extends di{constructor(i,n,r,a){super(i,n,A("options.custom-replace.name"),A("options.custom-replace.description"),A("options.custom-replace.warning"),A("options.custom-replace.add-input-button-text"),a,()=>{let s={label:"",find:"",replace:"",flags:ck};this.regexes.push(s),this.saveSettings(),this.addRegex(s,this.regexes.length-1,!0)});this.regexes=r;this.display(),this.inputElDiv.addClass("linter-custom-regex-replacement-container")}showInputEls(){this.regexes.forEach((i,n)=>{this.addRegex(i,n)})}addRegex(i,n,r=!1){let a=this.inputElDiv.createDiv({cls:"linter-custom-regex-replacement"}),s=a.createDiv(),o=new jc.Setting(s).addText(d=>{d.setPlaceholder(A("options.custom-replace.label-placeholder-text")).setValue(i.label).onChange(u=>{this.regexes[n].label=u,this.saveSettings()}),d.inputEl.setAttr("inputIndex",n),d.inputEl.addClass("linter-custom-regex-replacement-label-input"),r&&d.inputEl.focus()});o.controlEl.addClass("linter-custom-regex-replacement-label"),o.descEl.remove(),o.infoEl.remove(),o.nameEl.remove();let l=a.createDiv();new jc.Setting(l).addText(d=>{d.setPlaceholder(A("options.custom-replace.regex-to-find-placeholder-text")).setValue(i.find).onChange(u=>{this.regexes[n].find=u,this.saveSettings()}),d.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addText(d=>{d.setPlaceholder(A("options.custom-replace.flags-placeholder-text")).setValue(i.flags).onChange(u=>{this.regexes[n].flags=u,this.saveSettings()}),d.inputEl.addClass("linter-custom-regex-replacement-flags")}).addText(d=>{d.setPlaceholder(A("options.custom-replace.regex-to-replace-placeholder-text")).setValue(i.replace).onChange(u=>{this.regexes[n].replace=u,this.saveSettings()}),d.inputEl.addClass("linter-custom-regex-replacement-normal-input")}).addExtraButton(d=>{d.setIcon("up-chevron-glyph").setTooltip(A("options.custom-replace.move-up-tooltip")).onClick(()=>{this.arrayMove(n,n-1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(d=>{d.setIcon("down-chevron-glyph").setTooltip(A("options.custom-replace.move-down-tooltip")).onClick(()=>{this.arrayMove(n,n+1),this.saveSettings(),this.resetInputEls()})}).addExtraButton(d=>{d.setIcon("cross").setTooltip(A("options.custom-replace.delete-tooltip")).onClick(()=>{this.regexes.splice(n,1),this.saveSettings(),this.resetInputEls()})}).settingEl.addClass("linter-custom-regex-replacement-row2")}arrayMove(i,n){if(n<0||n===this.regexes.length)return;let r=this.regexes[i];this.regexes[i]=this.regexes[n],this.regexes[n]=r}};var Mo=class extends Ii{constructor(i,n,r,a,s){super(i,n,"Custom",r,s);this.app=a;this.display()}display(){let i=this.contentEl.createDiv(),n=new Co(i,this.plugin.settingsTab.component,this.plugin.settings.lintCommands,this.app,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(i,n.name,n.description.replaceAll(` `," ")+n.warning.replaceAll(` -`," "));let r=this.contentEl.createDiv(),a=new Ws(r,this.plugin.settingsTab.component,this.plugin.settings.customRegexes,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` +`," "));let r=this.contentEl.createDiv(),a=new Oo(r,this.plugin.settingsTab.component,this.plugin.settings.customRegexes,()=>{this.plugin.saveSettings()});this.addSettingSearchInfo(r,a.name,a.description.replaceAll(` `," ")+a.warning.replaceAll(` -`," "))}};var Pp=require("obsidian");var Us=class{constructor(t,i,n,r){this.containerEl=t;this.searchZeroState=i;this.tabNameToTab=n;this.onFocus=r;this.searchSettingInfo=new Map;for(let[a,s]of n)this.searchSettingInfo.set(a,s.searchSettingInfo);this.display()}display(){let t=new Pp.Setting(this.containerEl);t.settingEl.style.border="none",t.addSearch(i=>{this.search=i}),this.search.setPlaceholder(T("tabs.default-search-bar-text")),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}searchSettings(t){let i=new Set,n=function(r,a){wi(r),i.has(a)||i.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(t.trim()===""||s.alias?.includes(t)||s.description.includes(t)||s.name.includes(t))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(t)||o.name.toLowerCase().includes(t)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(t)||l.value.toLowerCase().includes(t)){n(s.containerEl,r);break}}Xe(s.containerEl)}else Xe(s.containerEl);for(let[r,a]of this.tabNameToTab)i.has(r)?wi(a.headingEl):Xe(a.headingEl);i.size===0?wi(this.searchZeroState):Xe(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var Hp=da(wo());var fn=require("obsidian");var na=class{constructor(t,i,n,r=!0){this.containerEl=t;this.name=i;this.description=n;this.disabled=r;this.display()}display(){let t=this.containerEl.createDiv(),i=t.createDiv("setting-item-info");this.nameEl=i.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=i.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputContainerEl=t.createDiv("full-width-textbox-input-wrapper"),this.inputContainerEl.onmouseover=()=>{this.getInput().trim()!=""&&this.copyEl.removeClass("linter-visually-hidden")},this.inputContainerEl.onmouseleave=()=>{this.copyEl.addClass("linter-visually-hidden")},this.inputEl=this.inputContainerEl.createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled,this.copyEl=this.inputContainerEl.createDiv({cls:"settings-copy-button linter-visually-hidden ",attr:{"aria-label":T("copy-aria-label")}}),this.copyIconEl=this.copyEl.createSpan(),(0,fn.setIcon)(this.copyIconEl,"linter-clipboard"),this.copyIconEl.onclick=()=>{this.handleCopy(this.copyIconEl)}}getInput(){return this.inputEl.value}handleCopy(t){navigator.clipboard.writeText(this.getInput()).then(()=>{(0,fn.setIcon)(t,"linter-success"),setTimeout(()=>{(0,fn.setIcon)(t,"linter-clipboard")},1500)},i=>{new fn.Notice(`${T("notice-text.copy-to-clipboard-failed")+i}`,0)})}};var aw=Object.keys(Hp.default.levels),Gs=class extends Si{constructor(t,i,n,r){super(t,i,"Debug",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i={isForEnum:!0,values:aw,descriptions:[]};this.addSettingSearchInfoForGeneralSettings(new Ii(t,"tabs.debug.log-level.name","tabs.debug.log-level.description","logLevel",this.plugin,i,async()=>{wa(this.plugin.settings.logLevel)})),t=this.contentEl.createDiv();let n=T("tabs.debug.linter-config.name"),r=T("tabs.debug.linter-config.description");new na(t,n,r).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(t,n,r),t=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Ai(t,"tabs.debug.log-collection.name","tabs.debug.log-collection.description","recordLintOnSaveLogs",this.plugin)),t=this.contentEl.createDiv(),n=T("tabs.debug.linter-logs.name"),r=T("tabs.debug.linter-logs.description");let s=new na(t,n,"");s.inputEl.setText(va.join(` -`)),xi(r,s.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,n,r)}};var Qs=class extends Xi.PluginSettingTab{constructor(i,n){super(i,n);this.plugin=n;this.tabNameToTab=new Map;this.selectedTab="General";this.component=new Xi.Component}display(){let{containerEl:i}=this;this.component.load(),i.empty();let n=i.createDiv("linter-setting-title");Xi.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText(T("linter-title")),this.navContainer=i.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=i.createDiv("linter-setting-content"),this.addTabs(Xi.Platform.isMobile),this.createSearchZeroState(Xi.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}hide(){this.component.unload()}addTabs(i){this.addTab(new Ps(this.tabNavEl,this.settingsContentEl,i,this.plugin,this.app));for(let n of Object.values(N))this.addTab(new Hs(this.tabNavEl,this.settingsContentEl,n,mt.get(n),i,this.plugin));this.addTab(new Vs(this.tabNavEl,this.settingsContentEl,i,this.app,this.plugin)),this.addTab(new Gs(this.tabNavEl,this.settingsContentEl,i,this.plugin))}generateSearchBar(i){this.tabSearcher=new Us(i,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(i){this.searchZeroState=this.settingsContentEl.createDiv(),Xe(this.searchZeroState),this.searchZeroState.createEl(i?"h3":"h2",{text:T("empty-search-results-text")}).style.textAlign="center"}addTab(i){i.navButton.onclick=()=>{this.onTabClick(i.name)},i.updateTabDisplayMode(this.selectedTab===i.name,"the status is still the same"),this.tabNameToTab.set(i.name,i)}onTabClick(i){if(this.selectedTab!==i){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===i,"leaving search mode by selecting a tab");else Xe(this.searchZeroState),this.tabNameToTab.get(i).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=i}}};var Wp=require("obsidian");var sw=/^---\n/gm,$p=`${Xt}:`,Zs=class extends Wp.EditorSuggest{constructor(i){super(i.app);this.plugin=i;this.inline=!1;let n=T("all-rules-option");this.ruleInfo=[{displayName:n,name:n.toLowerCase(),alias:"all"}];for(let r of ki){let a=r.getName();this.ruleInfo.push({displayName:a,name:a.toLowerCase(),alias:r.alias})}}onTrigger(i,n,r){let a=n.getLine(i.line).toLowerCase();if(a.startsWith($p)||this.disabledRulesIsEndOfStartOfFileToCursor(n.getRange({line:0,ch:0},i))){this.inline=a.startsWith($p);let o=n.getLine(i.line).substring(0,i.ch),l=o.match(/(\S+)$/)?.first().replaceAll("[","").replaceAll("]","");if(l)return{end:i,start:{ch:o.lastIndexOf(l),line:i.line},query:l}}return null}getSuggestions(i){let[n,r]=os(i.editor.getValue());if(r)return[];let a=i.query.toLowerCase();return this.ruleInfo.filter(o=>(o.name.contains(a)||o.alias.contains(a))&&!n.includes(o.alias))}renderSuggestion(i,n){n.addClass("mod-complex");let r=n.createDiv({cls:"suggestion-content"});r.createDiv({cls:"suggestion-title"}).setText(`${i.displayName}`),r.createDiv({cls:"suggestion-note"}).setText(`${i.alias}`)}selectSuggestion(i){if(this.context){let n=i.alias;this.inline?n=`${n},`:n=`${n} - -`,this.context.editor.replaceRange(`${n} `,this.context.start,this.context.end)}}disabledRulesIsEndOfStartOfFileToCursor(i){if(!i||!i.length||i.match(sw)?.length!=1)return!1;let n=Ce(i+` -`,Xt)?.trimEnd();return n===null?!1:i.trimEnd().endsWith(n)}};var ow={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},et=0,Xs=class extends oe.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new Is;this.overridePaste=!1}async onload(){Aa(window.localStorage.getItem("language")),Vt(T("logs.plugin-load")),this.isEnabled=!0;for(let i in ke){let n=ke[i];(0,oe.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.registerEditorSuggest(new Zs(this)),this.settingsTab=new Qs(this.app,this),this.addSettingTab(this.settingsTab)}async onunload(){Vt(T("logs.plugin-unload")),this.isEnabled=!1;for(let i of this.eventRefs)this.app.workspace.offref(i)}async loadSettings(){let i=await this.loadData();this.settings=Object.assign({},Ur,i),typeof this.settings.logLevel=="number"&&(this.settings.logLevel=Qc(this.settings.logLevel)),wa(this.settings.logLevel),this.setOrUpdateMomentInstance(),this.settings.settingsConvertedToConfigKeyValues||this.moveConfigValuesToKeyBasedFormat();for(let n of ki)this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]=n.getDefaultOptions());this.updatePasteOverrideStatus()}async saveSettings(){await this.saveData(this.settings),this.updatePasteOverrideStatus()}addCommands(){let i=this;this.addCommand({id:"lint-file",name:T("commands.lint-file.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.runLinterEditor(r)},icon:ke.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:T("commands.lint-file-unless-ignored.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.shouldIgnoreFile(a.file)||i.runLinterEditor(r)},icon:ke.file.id}),this.addCommand({id:"lint-all-files",name:T("commands.lint-all-files.name"),icon:ke.vault.id,callback:()=>{let n=T("commands.lint-all-files.start-message"),r=T("commands.lint-all-files.submit-button-text"),a=T("commands.lint-all-files.submit-button-notice-text");new Vr(this.app,n,r,a,()=>this.runLinterAllFiles(this.app)).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:T("commands.lint-all-files-in-folder.name"),icon:ke.folder.id,editorCheckCallback:(n,r,a)=>{if(n)return!a.file.parent.isRoot();this.createFolderLintModal(a.file.parent)}}),this.addCommand({id:"paste-as-plain-text",name:T("commands.paste-as-plain-text.name"),editorCheckCallback:(n,r)=>{if(n)return this.overridePaste;this.pasteAsPlainText(r)}})}registerEventsAndSaveCallback(){let i=this.app.workspace.on("editor-paste",s=>{s.defaultPrevented||!this.overridePaste||this.modifyPasteEvent(s)});this.registerEvent(i),this.eventRefs.push(i),i=this.app.workspace.on("file-menu",(s,o,l)=>this.onMenuOpenCallback(s,o,l)),this.registerEvent(i),this.eventRefs.push(i),this.lastActiveFile=this.app.workspace.getActiveFile(),i=this.app.workspace.on("active-leaf-change",()=>this.onActiveLeafChange()),this.registerEvent(i),this.eventRefs.push(i);let n=this.app.commands?.commands?.["editor:save-file"];typeof n?.callback=="function"&&(n.callback=()=>{if(this.settings.lintOnSave&&this.isEnabled){let s=this.getEditor();if(!s)return;let o=this.app.workspace.getActiveFile();!this.shouldIgnoreFile(o)&&this.isMarkdownFile(o)&&this.runLinterEditor(s)}});let a=this;window.CodeMirrorAdapter.commands.save=()=>{a.app.commands.executeCommandById("editor:save-file")}}onMenuOpenCallback(i,n,r){n instanceof oe.TFile&&this.isMarkdownFile(n)?i.addItem(a=>{a.setIcon(ke.file.id).setTitle(T("commands.lint-file-pop-up-menu-text.name")).onClick(async()=>{let s=this.app.workspace.getActiveFile(),o=this.getEditor();s===n&&o?this.runLinterEditor(o):this.runLinterFile(n)})}):n instanceof oe.TFolder&&i.addItem(a=>{a.setTitle(T("commands.lint-folder-pop-up-menu-text.name")).setIcon(ke.folder.id).onClick(()=>this.createFolderLintModal(n))})}async onActiveLeafChange(){if(!this.isEnabled)return;let i=this.app.workspace.getActiveFile(),n=this.lastActiveFile==null?!1:await this.app.vault.adapter.exists(this.lastActiveFile.path);if(!this.settings.lintOnFileChange||!n||this.lastActiveFile===i||!this.isMarkdownFile(this.lastActiveFile)||this.shouldIgnoreFile(this.lastActiveFile)){this.lastActiveFile=i;return}try{await this.runLinterFile(this.lastActiveFile,!0)}catch(r){this.handleLintError(this.lastActiveFile,r,T("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}finally{this.lastActiveFile=i}}shouldIgnoreFile(i){for(let n of this.settings.foldersToIgnore)if(n.length>0&&i.path.startsWith(n))return!0;return!1}isMarkdownFile(i){return i&&i.extension==="md"}async runLinterFile(i,n=!1){let r=vd(await this.app.vault.read(i)),a=this.rulesRunner.lintText(Wr(r,i,this.momentLocale,this.settings));if(r!=a&&(await this.app.vault.modify(i,a),n)){let s=T("logs.file-change-lint-message-start")+" "+this.lastActiveFile.path;this.settings.displayLintOnFileChangeNotice&&new oe.Notice(s),Vt(s)}}async runLinterAllFiles(i){let n=0;if(await Promise.all(i.vault.getMarkdownFiles().map(async r=>{if(!this.shouldIgnoreFile(r))try{await this.runLinterFile(r)}catch(a){this.handleLintError(r,a,T("commands.lint-all-files.error-message")+" '{FILE_PATH}'"),n+=1}})),n===0)new oe.Notice(T("commands.lint-all-files.success-message"),et);else{let r=n===1?T("commands.lint-all-files.errors-message-singular"):T("commands.lint-all-files.errors-message-plural").replace("{NUM}",n.toString());new oe.Notice(r,et)}}async runLinterAllFilesInFolder(i){Vt(T("logs.folder-lint")+i.name);let n=0,r=0,a=this.getAllFilesInFolder(i);if(await Promise.all(a.map(async s=>{if(!this.shouldIgnoreFile(s)){try{await this.runLinterFile(s)}catch(o){this.handleLintError(s,o,T("commands.lint-all-files-in-folder.error-message")+" '{FILE_PATH}'"),n+=1}r++}})),n===0)new oe.Notice(T("commands.lint-all-files-in-folder.success-message").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name),et);else{let s=n===1?T("commands.lint-all-files-in-folder.message-singular").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name):T("commands.lint-all-files-in-folder.message-plural").replace("{FILE_COUNT}",r.toString()).replace("{FOLDER_NAME}",i.name).replace("{ERROR_COUNT}",n.toString());new oe.Notice(s,et)}}createFolderLintModal(i){let n=T("commands.lint-all-files-in-folder.start-message").replace("{FOLDER_NAME}",i.name),r=T("commands.lint-all-files-in-folder.submit-button-text").replace("{FOLDER_NAME}",i.name),a=T("commands.lint-all-files-in-folder.submit-button-notice-text").replace("{FOLDER_NAME}",i.name);new Vr(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(i)).open()}runLinterEditor(i){zo(this.settings.recordLintOnSaveLogs),Gc(),Vt(T("logs.linter-run"));let n=this.app.workspace.getActiveFile(),r=i.getValue(),a;try{a=this.rulesRunner.lintText(Wr(r,n,this.momentLocale,this.settings))}catch(u){this.handleLintError(n,u,T("commands.lint-file.error-message")+" '{FILE_PATH}'",!1);return}let o=new yn.default.diff_match_patch().diff_main(r,a),l="";o.forEach(u=>{function m(v){let x=v.split(` -`);return{line:x.length-1,ch:x[x.length-1].length}}let[g,h]=u;if(g==yn.default.DIFF_INSERT)i.replaceRange(h,m(l)),l+=h;else if(g==yn.default.DIFF_DELETE){let v=m(l),x=l;x+=h;let w=m(x);i.replaceRange("",v,w)}else l+=h});let d=o.map(u=>u[0]==yn.default.DIFF_INSERT?u[1].length:0).reduce((u,m)=>u+m,0),c=o.map(u=>u[0]==yn.default.DIFF_DELETE?u[1].length:0).reduce((u,m)=>u+m,0);this.displayChangedMessage(d,c);try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(u){this.handleLintError(n,u,T("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}zo(!1)}async setOrUpdateMomentInstance(){let i=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=ow[i];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(i)&&(r=n),this.momentLocale=r;let a=Js.moment.locale(),s=Js.moment.locale(r);oi(T("logs.moment-locale-not-found").replace("{MOMENT_LOCALE}",r).replace("{CURRENT_LOCALE}",s)),Js.moment.locale(a)}displayChangedMessage(i,n){if(this.settings.displayChanged){let r=p` - ${i} ${T("notice-text.characters-added")} - ${n} ${T("notice-text.characters-removed")} - `;new oe.Notice(r)}}handleLintError(i,n,r,a=!0){let s=r.replace("{FILE_PATH}",i.path),o=T("logs.see-console");n instanceof Hi?a?new oe.Notice(`${s} ${n.message}. -${o}`,et):new oe.Notice(`${n.message}. -${o}`,et):new oe.Notice(`${T("logs.unknown-error")} ${o}`,et),Uc(s,n)}async modifyPasteEvent(i){let n=this.getEditor();if(!n)return;let r=i.clipboardData.getData("text/plain");if(!r)return;if(Zt.test(r.trim())){rt(T("logs.paste-link-warning"));return}if(i.stopPropagation(),i.preventDefault(),!i.defaultPrevented)return;let a=this.app.vault.getConfig("autoConvertHtml"),s=i.clipboardData.getData("text/html"),o=s&&a?(0,oe.htmlToMarkdown)(s):r,l=n.listSelections();if(l.length===1){let d=l[0];o=this.rulesRunner.runPasteLint(this.getLineContent(n,d),n.getSelection()??"",Wr(o,null,this.momentLocale,this.settings)),n.replaceSelection(o)}else this.handleMultiCursorPaste(n,l,o)}handleMultiCursorPaste(i,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(i,o),i.getRange(o.anchor,o.head)??"",Wr(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),i.transaction({changes:s})}convertContentIntoProperPasteContent(i,n){let r=n.split(` -`),a=[];if(r.length%i.length!==0)for(let s=0;s{this.search=i}),this.search.setPlaceholder(A("tabs.default-search-bar-text")),this.search.inputEl.onfocus=()=>{this.onFocus()},this.search.onChange(i=>{this.searchSettings(i.toLowerCase())})}searchSettings(t){let i=new Set,n=function(r,a){Mi(r),i.has(a)||i.add(a)};for(let[r,a]of this.searchSettingInfo)for(let s of a)if(t.trim()===""||s.alias?.includes(t)||s.description.includes(t)||s.name.includes(t))n(s.containerEl,r);else if(s.options)for(let o of s.options){if(o.description.toLowerCase().includes(t)||o.name.toLowerCase().includes(t)){n(s.containerEl,r);break}else if(o.options){for(let l of o.options)if(l.description.toLowerCase().includes(t)||l.value.toLowerCase().includes(t)){n(s.containerEl,r);break}}ci(s.containerEl)}else ci(s.containerEl);for(let[r,a]of this.tabNameToTab)i.has(r)?Mi(a.headingEl):ci(a.headingEl);i.size===0?Mi(this.searchZeroState):ci(this.searchZeroState)}focusOnInput(){this.search.inputEl.focus()}};var Mm=gn(Za());var Pn=require("obsidian");var Ra=class{constructor(t,i,n,r=!0){this.containerEl=t;this.name=i;this.description=n;this.disabled=r;this.display()}display(){let t=this.containerEl.createDiv(),i=t.createDiv("setting-item-info");this.nameEl=i.createDiv("setting-item-name"),this.nameEl.setText(this.name),this.descEl=i.createDiv("setting-item-description"),this.descEl.setText(this.description),this.inputContainerEl=t.createDiv("full-width-textbox-input-wrapper"),this.inputContainerEl.onmouseover=()=>{this.getInput().trim()!=""&&this.copyEl.removeClass("linter-visually-hidden")},this.inputContainerEl.onmouseleave=()=>{this.copyEl.addClass("linter-visually-hidden")},this.inputEl=this.inputContainerEl.createEl("textarea",{cls:"full-width"}),this.inputEl.spellcheck=!1,this.inputEl.disabled=this.disabled,this.copyEl=this.inputContainerEl.createDiv({cls:"settings-copy-button linter-visually-hidden ",attr:{"aria-label":A("copy-aria-label")}}),this.copyIconEl=this.copyEl.createSpan(),(0,Pn.setIcon)(this.copyIconEl,"linter-clipboard"),this.copyIconEl.onclick=()=>{this.handleCopy(this.copyIconEl)}}getInput(){return this.inputEl.value}handleCopy(t){navigator.clipboard.writeText(this.getInput()).then(()=>{(0,Pn.setIcon)(t,"linter-success"),setTimeout(()=>{(0,Pn.setIcon)(t,"linter-clipboard")},1500)},i=>{new Pn.Notice(`${A("notice-text.copy-to-clipboard-failed")+i}`,0)})}};var dk=Object.keys(Mm.default.levels),Io=class extends Ii{constructor(t,i,n,r){super(t,i,"Debug",n,r),this.display()}display(){let t=this.contentEl.createDiv(),i={isForEnum:!0,values:dk,descriptions:[]};this.addSettingSearchInfoForGeneralSettings(new $i(t,"tabs.debug.log-level.name","tabs.debug.log-level.description","logLevel",this.plugin,i,async()=>{is(this.plugin.settings.logLevel)})),t=this.contentEl.createDiv();let n=A("tabs.debug.linter-config.name"),r=A("tabs.debug.linter-config.description");new Ra(t,n,r).inputEl.setText(JSON.stringify(this.plugin.settings,null,2)),this.addSettingSearchInfo(t,n,r),t=this.contentEl.createDiv(),this.addSettingSearchInfoForGeneralSettings(new Bi(t,"tabs.debug.log-collection.name","tabs.debug.log-collection.description","recordLintOnSaveLogs",this.plugin)),t=this.contentEl.createDiv(),n=A("tabs.debug.linter-logs.name"),r=A("tabs.debug.linter-logs.description");let s=new Ra(t,n,"");s.inputEl.setText(Xa.join(` +`)),Oi(r,s.descEl,this.plugin.settingsTab.component),this.addSettingSearchInfo(t,n,r)}};var Bo=class extends yt.PluginSettingTab{constructor(i,n){super(i,n);this.plugin=n;this.tabNameToTab=new Map;this.selectedTab="General";this.component=new yt.Component}display(){let{containerEl:i}=this;this.component.load(),i.empty();let n=i.createDiv("linter-setting-title");yt.Platform.isMobile?n.addClass("linter-mobile"):n.createEl("h1").setText(A("linter-title")),this.navContainer=i.createEl("nav",{cls:"linter-setting-header"}),this.tabNavEl=this.navContainer.createDiv("linter-setting-tab-group"),this.settingsContentEl=i.createDiv("linter-setting-content"),this.addTabs(yt.Platform.isMobile),this.createSearchZeroState(yt.Platform.isMobile),this.generateSearchBar(n),this.selectedTab==""&&this.tabSearcher.focusOnInput()}hide(){this.component.unload()}addTabs(i){this.addTab(new To(this.tabNavEl,this.settingsContentEl,i,this.plugin,this.app));for(let n of Object.values(R))this.addTab(new Eo(this.tabNavEl,this.settingsContentEl,n,Nt.get(n),i,this.plugin));this.addTab(new Mo(this.tabNavEl,this.settingsContentEl,i,this.app,this.plugin)),this.addTab(new Io(this.tabNavEl,this.settingsContentEl,i,this.plugin))}generateSearchBar(i){this.tabSearcher=new qo(i,this.searchZeroState,this.tabNameToTab,()=>{for(let n of this.tabNameToTab.values()){n.updateTabDisplayMode(!1,"entering search mode by focusing on the search input box");let r=this.tabSearcher.search.getValue();this.selectedTab==""&&r.trim()!=""&&this.tabSearcher.searchSettings(r.toLowerCase()),this.selectedTab=""}})}createSearchZeroState(i){this.searchZeroState=this.settingsContentEl.createDiv(),ci(this.searchZeroState),this.searchZeroState.createEl(i?"h3":"h2",{text:A("empty-search-results-text")}).style.textAlign="center"}addTab(i){i.navButton.onclick=()=>{this.onTabClick(i.name)},i.updateTabDisplayMode(this.selectedTab===i.name,"the status is still the same"),this.tabNameToTab.set(i.name,i)}onTabClick(i){if(this.selectedTab!==i){if(this.selectedTab=="")for(let[n,r]of this.tabNameToTab)r.updateTabDisplayMode(n===i,"leaving search mode by selecting a tab");else ci(this.searchZeroState),this.tabNameToTab.get(i).updateTabDisplayMode(!0),this.tabNameToTab.get(this.selectedTab).updateTabDisplayMode(!1);this.selectedTab=i}}};var Im=require("obsidian");var uk=/^---\n/gm,qm=`${Sn}:`,Fo=class extends Im.EditorSuggest{constructor(i){super(i.app);this.plugin=i;this.inline=!1;let n=A("all-rules-option");this.ruleInfo=[{displayName:n,name:n.toLowerCase(),alias:"all"}];for(let r of qi){let a=r.getName();this.ruleInfo.push({displayName:a,name:a.toLowerCase(),alias:r.alias})}}onTrigger(i,n,r){let a=n.getLine(i.line).toLowerCase();if(a.startsWith(qm)||this.disabledRulesIsEndOfStartOfFileToCursor(n.getRange({line:0,ch:0},i))){this.inline=a.startsWith(qm);let o=n.getLine(i.line).substring(0,i.ch),l=o.match(/(\S+)$/)?.first().replaceAll("[","").replaceAll("]","");if(l)return{end:i,start:{ch:o.lastIndexOf(l),line:i.line},query:l}}return null}getSuggestions(i){let[n,r]=$s(i.editor.getValue());if(r)return[];let a=i.query.toLowerCase();return this.ruleInfo.filter(o=>(o.name.contains(a)||o.alias.contains(a))&&!n.includes(o.alias))}renderSuggestion(i,n){n.addClass("mod-complex");let r=n.createDiv({cls:"suggestion-content"});r.createDiv({cls:"suggestion-title"}).setText(`${i.displayName}`),r.createDiv({cls:"suggestion-note"}).setText(`${i.alias}`)}selectSuggestion(i){if(this.context){let n=i.alias;this.inline?n=`${n},`:n=`${n} + -`,this.context.editor.replaceRange(`${n} `,this.context.start,this.context.end)}}disabledRulesIsEndOfStartOfFileToCursor(i){if(!i||!i.length||i.match(uk)?.length!=1)return!1;let n=de(i+` +`,Sn)?.trimEnd();return n===null?!1:i.trimEnd().endsWith(n)}};var Km=gn(Dm()),_m=gn(Za()),pk={en:"en-gb",zh:"zh-cn","zh-TW":"zh-tw",ru:"ru",ko:"ko",it:"it",id:"id",ro:"ro","pt-BR":"pt-br",cz:"cs",da:"da",de:"de",es:"es",fr:"fr",no:"nn",pl:"pl",pt:"pt",tr:"tr",hi:"hi",nl:"nl",ar:"ar",ja:"ja"},bt=0,Do=class extends X.Plugin{constructor(){super(...arguments);this.eventRefs=[];this.isEnabled=!0;this.rulesRunner=new ko;this.overridePaste=!1;this.hasCustomCommands=!1;this.hasLoadedFiles=!1;this.customCommandsLock=new Km.default;this.originalSaveCallback=null;this.editorLintFiles=[];this.fileLintFiles=new Set;this.customCommandsCallback=null;this.currentlyOpeningSidebar=!1}async onload(){rs(window.localStorage.getItem("language")),vn(A("logs.plugin-load")),this.isEnabled=!0;for(let i in Ce){let n=Ce[i];(0,X.addIcon)(n.id,n.source)}await this.loadSettings(),this.addCommands(),this.registerEventsAndSaveCallback(),this.registerEditorSuggest(new Fo(this)),this.settingsTab=new Bo(this.app,this),this.addSettingTab(this.settingsTab)}async onunload(){vn(A("logs.plugin-unload")),this.isEnabled=!1;for(let n of this.eventRefs)this.app.workspace.offref(n);let i=this.app.commands?.commands?.["editor:save-file"];i&&i.callback&&this.originalSaveCallback&&(i.callback=this.originalSaveCallback)}async loadSettings(){let i=await this.loadData();this.settings=Object.assign({},Ia,i),typeof this.settings.logLevel=="number"&&(this.settings.logLevel=Dd(this.settings.logLevel)),is(this.settings.logLevel),this.setOrUpdateMomentInstance(),this.settings.settingsConvertedToConfigKeyValues||this.moveConfigValuesToKeyBasedFormat();for(let n of qi)if(this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]=n.getDefaultOptions()),n.alias=="space-between-chinese-japanese-or-korean-and-english-or-numbers"){let r=n.getDefaultOptions();"english-symbols-punctuation-before"in this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]["english-symbols-punctuation-before"]=r["english-symbols-punctuation-before"]),"english-symbols-punctuation-after"in this.settings.ruleConfigs[n.alias]||(this.settings.ruleConfigs[n.alias]["english-symbols-punctuation-after"]=r["english-symbols-punctuation-after"])}this.updatePasteOverrideStatus(),this.updateHasCustomCommandStatus()}async saveSettings(){await this.saveData(this.settings),this.updatePasteOverrideStatus(),this.updateHasCustomCommandStatus()}addCommands(){let i=this;this.addCommand({id:"lint-file",name:A("commands.lint-file.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.runLinterEditor(r)},icon:Ce.file.id,hotkeys:[{modifiers:["Mod","Alt"],key:"L"}]}),this.addCommand({id:"lint-file-unless-ignored",name:A("commands.lint-file-unless-ignored.name"),editorCheckCallback(n,r,a){if(n)return i.isMarkdownFile(a.file);i.shouldIgnoreFile(a.file)||i.runLinterEditor(r)},icon:Ce.file.id}),this.addCommand({id:"lint-all-files",name:A("commands.lint-all-files.name"),icon:Ce.vault.id,callback:()=>{let n=A("commands.lint-all-files.start-message"),r=A("commands.lint-all-files.submit-button-text"),a=A("commands.lint-all-files.submit-button-notice-text");new qa(this.app,n,r,a,()=>this.runLinterAllFiles(this.app),this.settings.lintCommands&&this.settings.lintCommands.length>0).open()}}),this.addCommand({id:"lint-all-files-in-folder",name:A("commands.lint-all-files-in-folder.name"),icon:Ce.folder.id,editorCheckCallback:(n,r,a)=>{if(n)return!a.file.parent.isRoot();this.createFolderLintModal(a.file.parent)}}),this.addCommand({id:"paste-as-plain-text",name:A("commands.paste-as-plain-text.name"),editorCheckCallback:(n,r)=>{if(n)return this.overridePaste;this.pasteAsPlainText(r)}})}registerEventsAndSaveCallback(){let i=this.app.workspace.on("editor-paste",a=>{a.defaultPrevented||!this.overridePaste||this.modifyPasteEvent(a)});this.registerEvent(i),this.eventRefs.push(i),i=this.app.workspace.on("file-menu",(a,s,o)=>this.onMenuOpenCallback(a,s,o)),this.registerEvent(i),this.eventRefs.push(i),this.lastActiveFile=this.app.workspace.getActiveFile(),i=this.app.workspace.on("active-leaf-change",()=>this.onActiveLeafChange()),this.registerEvent(i),this.eventRefs.push(i),i=this.app.metadataCache.on("changed",a=>this.onMetadataCacheUpdatedCallback(a)),this.registerEvent(i),this.eventRefs.push(i);let n=this.app.commands?.commands?.["editor:save-file"];this.originalSaveCallback=n?.callback,typeof this.originalSaveCallback=="function"&&(n.callback=()=>{if(this.originalSaveCallback(),this.settings.lintOnSave&&this.isEnabled){let a=this.getEditor();if(a){let s=this.app.workspace.getActiveFile();!this.shouldIgnoreFile(s)&&this.isMarkdownFile(s)&&this.runLinterEditor(a)}}});let r=this;window.CodeMirrorAdapter.commands.save=()=>{r.app.commands.executeCommandById("editor:save-file")}}async onMetadataCacheUpdatedCallback(i){this.editorLintFiles.includes(i)?(this.editorLintFiles.remove(i),this.runCustomCommands(i)):this.fileLintFiles.has(i)&&(this.fileLintFiles.delete(i),this.runCustomCommandsInSidebar(i))}onMenuOpenCallback(i,n,r){n instanceof X.TFile&&this.isMarkdownFile(n)?i.addItem(a=>{a.setIcon(Ce.file.id).setTitle(A("commands.lint-file-pop-up-menu-text.name")).onClick(()=>{let s=this.app.workspace.getActiveFile(),o=this.getEditor();s===n&&o?this.runLinterEditor(o):this.runLinterFile(n)})}):n instanceof X.TFolder&&i.addItem(a=>{a.setTitle(A("commands.lint-folder-pop-up-menu-text.name")).setIcon(Ce.folder.id).onClick(()=>this.createFolderLintModal(n))})}async onActiveLeafChange(){if(!this.isEnabled||this.currentlyOpeningSidebar)return;let i=this.app.workspace.getActiveFile(),n=this.lastActiveFile==null?!1:await this.app.vault.adapter.exists(this.lastActiveFile.path);if(!this.settings.lintOnFileChange||!n||this.lastActiveFile===i||!this.isMarkdownFile(this.lastActiveFile)||this.shouldIgnoreFile(this.lastActiveFile)){this.lastActiveFile=i;return}try{await this.runLinterFile(this.lastActiveFile,!0)}catch(r){this.handleLintError(this.lastActiveFile,r,A("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}finally{this.lastActiveFile=i}}shouldIgnoreFile(i){for(let n of this.settings.foldersToIgnore)if(n.length>0&&i.path.startsWith(n))return!0;for(let n of this.settings.filesToIgnore){if(!n.match)continue;if(new RegExp(`${n.match}`,n.flags).test(i.path))return!0}return!1}isMarkdownFile(i){return i&&i.extension==="md"}async runLinterFile(i,n=!1){this.hasLoadedFiles||await this.loadCustomReplacements();let r=nr(await this.app.vault.read(i)),a=this.rulesRunner.lintText(Ma(r,i,this.momentLocale,this.settings));if(r!=a){if(await this.app.vault.modify(i,a),n){let s=A("logs.file-change-lint-message-start")+" "+this.lastActiveFile.path;this.settings.displayLintOnFileChangeNotice&&new X.Notice(s),vn(s)}this.fileLintFiles.add(i);return}await this.runCustomCommandsInSidebar(i)}async runLinterAllFiles(i){let n=0;if(await Promise.all(i.vault.getMarkdownFiles().map(async r=>{if(!this.shouldIgnoreFile(r))try{await this.runLinterFile(r)}catch(a){this.handleLintError(r,a,A("commands.lint-all-files.error-message")+" '{FILE_PATH}'"),n+=1}})),n===0)new X.Notice(A("commands.lint-all-files.success-message"),bt);else{let r=n===1?A("commands.lint-all-files.errors-message-singular"):A("commands.lint-all-files.errors-message-plural").replace("{NUM}",n.toString());new X.Notice(r,bt)}}async runLinterAllFilesInFolder(i){vn(A("logs.folder-lint")+i.name);let n=0,r=0,a=this.getAllFilesInFolder(i);if(await Promise.all(a.map(async s=>{if(!this.shouldIgnoreFile(s)){try{await this.runLinterFile(s)}catch(o){this.handleLintError(s,o,A("commands.lint-all-files-in-folder.error-message")+" '{FILE_PATH}'"),n+=1}r++}})),n===0)new X.Notice(A("commands.lint-all-files-in-folder.success-message").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name),bt);else{let s=n===1?A("commands.lint-all-files-in-folder.message-singular").replace("{NUM}",r.toString()).replace("{FOLDER_NAME}",i.name):A("commands.lint-all-files-in-folder.message-plural").replace("{FILE_COUNT}",r.toString()).replace("{FOLDER_NAME}",i.name).replace("{ERROR_COUNT}",n.toString());new X.Notice(s,bt)}}createFolderLintModal(i){let n=A("commands.lint-all-files-in-folder.start-message").replace("{FOLDER_NAME}",i.name),r=A("commands.lint-all-files-in-folder.submit-button-text").replace("{FOLDER_NAME}",i.name),a=A("commands.lint-all-files-in-folder.submit-button-notice-text").replace("{FOLDER_NAME}",i.name);new qa(this.app,n,r,a,()=>this.runLinterAllFilesInFolder(i),this.settings.lintCommands&&this.settings.lintCommands.length>0).open()}async runLinterEditor(i){nl(this.settings.recordLintOnSaveLogs),Rd(),vn(A("logs.linter-run")),this.hasLoadedFiles||await this.loadCustomReplacements();let n=this.app.workspace.getActiveFile(),r=i.getValue(),a;try{a=this.rulesRunner.lintText(Ma(r,n,this.momentLocale,this.settings))}catch(g){this.handleLintError(n,g,A("commands.lint-file.error-message")+" '{FILE_PATH}'",!1);return}let s=this.getCurrentMode(),l=new vt.default.diff_match_patch().diff_main(r,a),c="",d=0;if(s==="preview"){let g=(0,X.getFrontMatterInfo)(r),b=(0,X.getFrontMatterInfo)(a);if(g.exists!=b.exists||g.from!=b.from||g.to!=b.to||g.frontmatter!=b.frontmatter){let f,x=0;g.exists==!1?f=`--- +${b.frontmatter}---`:(f=b.frontmatter,x+=3),i.replaceRange(f,i.offsetToPos(g.from),i.offsetToPos(g.to)),d=g.from+f.length+x}}let u=!1;l.forEach(g=>{let[b,f]=g;if(u=c.length=d&&b==vt.default.DIFF_INSERT){let x=d-c.length;c+=f.substring(0,x),f=f.substring(x),u=!1}if(!u){if(b==vt.default.DIFF_INSERT)i.replaceRange(f,this.endOfDocument(c));else if(b==vt.default.DIFF_DELETE){let x=this.endOfDocument(c),k=c;k+=f;let L=this.endOfDocument(k);i.replaceRange("",x,L)}}b!=vt.default.DIFF_DELETE&&(c+=f)});let m=l.map(g=>g[0]==vt.default.DIFF_INSERT?g[1].length:0).reduce((g,b)=>g+b,0),p=l.map(g=>g[0]==vt.default.DIFF_DELETE?g[1].length:0).reduce((g,b)=>g+b,0);this.displayChangedMessage(m,p),!m&&!p?this.runCustomCommands(n):this.editorLintFiles.push(n),nl(!1)}async setOrUpdateMomentInstance(){let i=localStorage.getItem("language")||"en",n=navigator.language?.toLowerCase(),r=pk[i];this.settings.linterLocale!=="system-default"?r=this.settings.linterLocale:n.startsWith(i)&&(r=n),this.momentLocale=r;let a=Ro.moment.locale(),s=Ro.moment.locale(r);ii(A("logs.moment-locale-not-found").replace("{MOMENT_LOCALE}",r).replace("{CURRENT_LOCALE}",s)),Ro.moment.locale(a)}displayChangedMessage(i,n){if(this.settings.displayChanged){let r=dm` + ${i} ${A("notice-text.characters-added")} + ${n} ${A("notice-text.characters-removed")} + `;new X.Notice(r)}}handleLintError(i,n,r,a=!0){let s=r.replace("{FILE_PATH}",i.path),o=A("logs.see-console");n instanceof Rn?a?new X.Notice(`${s} ${n.message}. +${o}`,bt):new X.Notice(`${n.message}. +${o}`,bt):new X.Notice(`${A("logs.unknown-error")} ${o}`,bt),Fd(s,n)}async modifyPasteEvent(i){let n=this.getEditor();if(!n)return;let r=i.clipboardData.getData("text/plain");if(!r)return;let a=r.trim();if(Ct.test(a)){console.log('failed: "'+a+'"'),Yi(A("logs.paste-link-warning"));return}if(console.log('passed: "'+a+'"'),i.stopPropagation(),i.preventDefault(),!i.defaultPrevented)return;let s=this.app.vault.getConfig("autoConvertHtml"),o=i.clipboardData.getData("text/html"),l=o&&s?(0,X.htmlToMarkdown)(o):r,c=n.listSelections();if(c.length===1){let d=c[0];l=this.rulesRunner.runPasteLint(this.getLineContent(n,d),n.getSelection()??"",Ma(l,null,this.momentLocale,this.settings)),n.replaceSelection(l)}else this.handleMultiCursorPaste(n,c,l)}handleMultiCursorPaste(i,n,r){let a=this.convertContentIntoProperPasteContent(n,r),s=[];n.forEach((o,l)=>{r=this.rulesRunner.runPasteLint(this.getLineContent(i,o),i.getRange(o.anchor,o.head)??"",Ma(a[l],null,this.momentLocale,this.settings)),s.push({text:r,from:o.anchor,to:o.head})}),i.transaction({changes:s})}convertContentIntoProperPasteContent(i,n){let r=n.split(` +`),a=[];if(r.length%i.length!==0)for(let s=0;s{this.currentlyOpeningSidebar=!0,await n.openFile(i),this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands),this.customCommandsCallback&&await this.customCommandsCallback(i)}),n.detach(),r&&r.focus(),this.currentlyOpeningSidebar=!1}async runCustomCommands(i){!this.settings.lintCommands||this.settings.lintCommands.length==0||!this.hasCustomCommands||await this.customCommandsLock.acquire("command",async()=>{try{this.rulesRunner.runCustomCommands(this.settings.lintCommands,this.app.commands)}catch(n){this.handleLintError(i,n,A("commands.lint-file.error-message")+" '{FILE_PATH}'",!1)}this.customCommandsCallback&&await this.customCommandsCallback(i)})}getEditor(){let i=this.app.workspace.getActiveViewOfType(X.MarkdownView);return i?i.editor:null}getCurrentMode(){let i=this.app.workspace.getActiveFileView();if(!i)return;let n=i.getState();return Object.hasOwn(n,"source")?n.source?"source":"preview":null}getLineContent(i,n){return i.getLine(n.anchor.line)}moveConfigValuesToKeyBasedFormat(){rs("en");for(let i of qi){let n=A("rules."+i.alias+".name"),r=this.settings.ruleConfigs[n];if(r!=null){let a=A("rules."+i.alias+".description"),s={enabled:r[a]??!1};for(let o of i.options){if(o.configKey==="enabled")continue;let l=A("rules."+i.alias+"."+o.configKey+".name");s[o.configKey]=r[l]??o.defaultValue}this.settings.ruleConfigs[i.alias]=s,delete this.settings.ruleConfigs[n]}}this.settings.settingsConvertedToConfigKeyValues=!0,this.saveSettings(),rs(window.localStorage.getItem("language"))}getAllFilesInFolder(i){let n=[],r=[i];for(let a of r)for(let s of a.children)s instanceof X.TFile&&this.isMarkdownFile(s)?n.push(s):s instanceof X.TFolder&&r.push(s);return n}updatePasteOverrideStatus(){for(let i of Nt.get("Paste"))if(i.getOptions(this.settings).enabled){this.overridePaste=!0;return}this.overridePaste=!1}updateHasCustomCommandStatus(){for(let i of this.settings.lintCommands)if(i.id&&i.id.trim()!=""){this.hasCustomCommands=!0;return}this.hasCustomCommands=!1}endOfDocument(i){let n=i.split(` +`);return{line:n.length-1,ch:n[n.length-1].length}}async loadCustomReplacements(){for(let i of this.settings.ruleConfigs["auto-correct-common-misspellings"]["extra-auto-correct-files"]??[])if(i.filePath!=""){let n=this.getFileFromPath(i.filePath);n&&(i.customReplacements=ds(nr(await this.app.vault.cachedRead(n))))}this.hasLoadedFiles=!0}getFileFromPath(i){let n=this.app.vault.getAbstractFileByPath((0,X.normalizePath)(i));return n instanceof X.TFile?n:null}}; /*! Bundled license information: js-yaml/dist/js-yaml.mjs: diff --git a/.obsidian/plugins/obsidian-linter/manifest.json b/.obsidian/plugins/obsidian-linter/manifest.json index af6b74f..059926f 100644 --- a/.obsidian/plugins/obsidian-linter/manifest.json +++ b/.obsidian/plugins/obsidian-linter/manifest.json @@ -1,10 +1,11 @@ { "id": "obsidian-linter", "name": "Linter", - "version": "1.20.0", - "minAppVersion": "0.15.6", + "version": "1.26.0", + "minAppVersion": "1.5.7", "description": "Formats and styles your notes. It can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular markdown contents like list, italics, and bold styles; and more with the use of custom rule options as well.", "author": "Victor Tao", "authorUrl": "https://github.com/platers", + "helpUrl": "https://platers.github.io/obsidian-linter/", "isDesktopOnly": false } diff --git a/.obsidian/plugins/obsidian-linter/styles.css b/.obsidian/plugins/obsidian-linter/styles.css index 39f902e..a3a6054 100644 --- a/.obsidian/plugins/obsidian-linter/styles.css +++ b/.obsidian/plugins/obsidian-linter/styles.css @@ -185,7 +185,7 @@ textarea.full-width { /** * Custom regex replacement */ -.linter-custom-regex-replacement-container div:last-child{ +.linter-custom-regex-replacement-container div:last-child { border: none; } .linter-custom-regex-replacement { @@ -210,6 +210,25 @@ textarea.full-width { width: 50%; } +/** +* Files to ignore +*/ +.linter-files-to-ignore-container div:last-child { + border: none; +} +.linter-files-to-ignore { + margin-bottom: 15px; + border: none; + border-bottom: var(--hr-thickness) solid; + border-color: var(--hr-color); +} +.linter-files-to-ignore-normal-input { + width: 40%; +} +.linter-files-to-ignore-flags { + width: 15%; +} + /** * Setting item no border */ diff --git a/.obsidian/plugins/obsidian-style-settings/main.js b/.obsidian/plugins/obsidian-style-settings/main.js index b7e0ea0..0e0ed28 100644 --- a/.obsidian/plugins/obsidian-style-settings/main.js +++ b/.obsidian/plugins/obsidian-style-settings/main.js @@ -1,9858 +1,163 @@ /* -THIS IS A GENERATED/BUNDLED FILE BY ROLLUP -if you want to view the source visit the plugins github repository +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin */ -'use strict'; - -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. -***************************************************************************** */ - -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()); - }); -} - -class ExportModal extends obsidian.Modal { - constructor(app, plugin, section, config) { - super(app); - this.plugin = plugin; - this.config = config; - this.section = section; - } - onOpen() { - const { contentEl, modalEl } = this; - modalEl.addClass('modal-style-settings'); - new obsidian.Setting(contentEl) - .setName(`Export settings for: ${this.section}`) - .then((setting) => { - const output = JSON.stringify(this.config, null, 2); - // Build a copy to clipboard link - setting.controlEl.createEl('a', { - cls: 'style-settings-copy', - text: 'Copy to clipboard', - href: '#', - }, (copyButton) => { - new obsidian.TextAreaComponent(contentEl) - .setValue(output) - .then((textarea) => { - copyButton.addEventListener('click', (e) => { - e.preventDefault(); - // Select the textarea contents and copy them to the clipboard - textarea.inputEl.select(); - textarea.inputEl.setSelectionRange(0, 99999); - document.execCommand('copy'); - copyButton.addClass('success'); - setTimeout(() => { - // If the button is still in the dom, remove the success class - if (copyButton.parentNode) { - copyButton.removeClass('success'); - } - }, 2000); - }); - }); - }); - // Build a download link - setting.controlEl.createEl('a', { - cls: 'style-settings-download', - text: 'Download', - attr: { - download: 'style-settings.json', - href: `data:application/json;charset=utf-8,${encodeURIComponent(output)}`, - }, - }); - }); - } - onClose() { - const { contentEl } = this; - contentEl.empty(); - } -} - -class ImportModal extends obsidian.Modal { - constructor(app, plugin) { - super(app); - this.plugin = plugin; - } - onOpen() { - const { contentEl, modalEl } = this; - modalEl.addClass('modal-style-settings'); - new obsidian.Setting(contentEl) - .setName('Import style setting') - .setDesc('Import an entire or partial configuration. Warning: this may override existing settings'); - new obsidian.Setting(contentEl).then((setting) => { - // Build an error message container - const errorSpan = createSpan({ - cls: 'style-settings-import-error', - text: 'Error importing config', - }); - setting.nameEl.appendChild(errorSpan); - // Attempt to parse the imported data and close if successful - const importAndClose = (str) => __awaiter(this, void 0, void 0, function* () { - if (str) { - try { - const importedSettings = JSON.parse(str); - yield this.plugin.settingsManager.setSettings(importedSettings); - this.plugin.settingsTab.display(); - this.close(); - } - catch (e) { - errorSpan.addClass('active'); - errorSpan.setText(`Error importing style settings: ${e}`); - } - } - else { - errorSpan.addClass('active'); - errorSpan.setText(`Error importing style settings: config is empty`); - } - }); - // Build a file input - setting.controlEl.createEl('input', { - cls: 'style-settings-import-input', - attr: { - id: 'style-settings-import-input', - name: 'style-settings-import-input', - type: 'file', - accept: '.json', - }, - }, (importInput) => { - // Set up a FileReader so we can parse the file contents - importInput.addEventListener('change', (e) => { - const reader = new FileReader(); - reader.onload = (e) => __awaiter(this, void 0, void 0, function* () { - yield importAndClose(e.target.result.toString().trim()); - }); - reader.readAsText(e.target.files[0]); - }); - }); - // Build a label we will style as a link - setting.controlEl.createEl('label', { - cls: 'style-settings-import-label', - text: 'Import from file', - attr: { - for: 'style-settings-import-input', - }, - }); - new obsidian.TextAreaComponent(contentEl) - .setPlaceholder('Paste config here...') - .then((ta) => { - new obsidian.ButtonComponent(contentEl) - .setButtonText('Save') - .onClick(() => __awaiter(this, void 0, void 0, function* () { - yield importAndClose(ta.getValue().trim()); - })); - }); - }); - } - onClose() { - const { contentEl } = this; - contentEl.empty(); - } -} - -const SettingType = { - HEADING: 'heading', - INFO_TEXT: 'info-text', - CLASS_TOGGLE: 'class-toggle', - CLASS_SELECT: 'class-select', - VARIABLE_TEXT: 'variable-text', - VARIABLE_NUMBER: 'variable-number', - VARIABLE_NUMBER_SLIDER: 'variable-number-slider', - VARIABLE_SELECT: 'variable-select', - VARIABLE_COLOR: 'variable-color', - VARIABLE_THEMED_COLOR: 'variable-themed-color', - COLOR_GRADIENT: 'color-gradient', -}; - -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 createCommonjsModule(fn, basedir, module) { - return module = { - path: basedir, - exports: {}, - require: function (path, base) { - return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); - } - }, fn(module, module.exports), module.exports; -} - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); -} - -var chroma = createCommonjsModule(function (module, exports) { -/** - * chroma.js - JavaScript library for color conversions - * - * Copyright (c) 2011-2019, Gregor Aisch - * 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. The name Gregor Aisch may not 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 GREGOR AISCH 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. - * - * ------------------------------------------------------- - * - * chroma.js includes colors from colorbrewer2.org, which are released under - * the following license: - * - * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, - * and The Pennsylvania State University. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, - * either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - * - * ------------------------------------------------------ - * - * Named colors are taken from X11 Color Names. - * http://www.w3.org/TR/css3-color/#svg-color - * - * @preserve - */ - -(function (global, factory) { - module.exports = factory() ; -}(commonjsGlobal, (function () { - var limit = function (x, min, max) { - if ( min === void 0 ) min=0; - if ( max === void 0 ) max=1; - - return x < min ? min : x > max ? max : x; - }; - - var clip_rgb = function (rgb) { - rgb._clipped = false; - rgb._unclipped = rgb.slice(0); - for (var i=0; i<=3; i++) { - if (i < 3) { - if (rgb[i] < 0 || rgb[i] > 255) { rgb._clipped = true; } - rgb[i] = limit(rgb[i], 0, 255); - } else if (i === 3) { - rgb[i] = limit(rgb[i], 0, 1); - } - } - return rgb; - }; - - // ported from jQuery's $.type - var classToType = {}; - for (var i = 0, list = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']; i < list.length; i += 1) { - var name = list[i]; - - classToType[("[object " + name + "]")] = name.toLowerCase(); - } - var type = function(obj) { - return classToType[Object.prototype.toString.call(obj)] || "object"; - }; - - var unpack = function (args, keyOrder) { - if ( keyOrder === void 0 ) keyOrder=null; - - // if called with more than 3 arguments, we return the arguments - if (args.length >= 3) { return Array.prototype.slice.call(args); } - // with less than 3 args we check if first arg is object - // and use the keyOrder string to extract and sort properties - if (type(args[0]) == 'object' && keyOrder) { - return keyOrder.split('') - .filter(function (k) { return args[0][k] !== undefined; }) - .map(function (k) { return args[0][k]; }); - } - // otherwise we just return the first argument - // (which we suppose is an array of args) - return args[0]; - }; - - var last = function (args) { - if (args.length < 2) { return null; } - var l = args.length-1; - if (type(args[l]) == 'string') { return args[l].toLowerCase(); } - return null; - }; - - var PI = Math.PI; - - var utils = { - clip_rgb: clip_rgb, - limit: limit, - type: type, - unpack: unpack, - last: last, - PI: PI, - TWOPI: PI*2, - PITHIRD: PI/3, - DEG2RAD: PI / 180, - RAD2DEG: 180 / PI - }; - - var input = { - format: {}, - autodetect: [] - }; - - var last$1 = utils.last; - var clip_rgb$1 = utils.clip_rgb; - var type$1 = utils.type; - - - var Color = function Color() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var me = this; - if (type$1(args[0]) === 'object' && - args[0].constructor && - args[0].constructor === this.constructor) { - // the argument is already a Color instance - return args[0]; - } - - // last argument could be the mode - var mode = last$1(args); - var autodetect = false; - - if (!mode) { - autodetect = true; - if (!input.sorted) { - input.autodetect = input.autodetect.sort(function (a,b) { return b.p - a.p; }); - input.sorted = true; - } - // auto-detect format - for (var i = 0, list = input.autodetect; i < list.length; i += 1) { - var chk = list[i]; - - mode = chk.test.apply(chk, args); - if (mode) { break; } - } - } - - if (input.format[mode]) { - var rgb = input.format[mode].apply(null, autodetect ? args : args.slice(0,-1)); - me._rgb = clip_rgb$1(rgb); - } else { - throw new Error('unknown format: '+args); - } - - // add alpha channel - if (me._rgb.length === 3) { me._rgb.push(1); } - }; - - Color.prototype.toString = function toString () { - if (type$1(this.hex) == 'function') { return this.hex(); } - return ("[" + (this._rgb.join(',')) + "]"); - }; - - var Color_1 = Color; - - var chroma = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( chroma.Color, [ null ].concat( args) )); - }; - - chroma.Color = Color_1; - chroma.version = '2.1.2'; - - var chroma_1 = chroma; - - var unpack$1 = utils.unpack; - var max = Math.max; - - var rgb2cmyk = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack$1(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - r = r / 255; - g = g / 255; - b = b / 255; - var k = 1 - max(r,max(g,b)); - var f = k < 1 ? 1 / (1-k) : 0; - var c = (1-r-k) * f; - var m = (1-g-k) * f; - var y = (1-b-k) * f; - return [c,m,y,k]; - }; - - var rgb2cmyk_1 = rgb2cmyk; - - var unpack$2 = utils.unpack; - - var cmyk2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$2(args, 'cmyk'); - var c = args[0]; - var m = args[1]; - var y = args[2]; - var k = args[3]; - var alpha = args.length > 4 ? args[4] : 1; - if (k === 1) { return [0,0,0,alpha]; } - return [ - c >= 1 ? 0 : 255 * (1-c) * (1-k), // r - m >= 1 ? 0 : 255 * (1-m) * (1-k), // g - y >= 1 ? 0 : 255 * (1-y) * (1-k), // b - alpha - ]; - }; - - var cmyk2rgb_1 = cmyk2rgb; - - var unpack$3 = utils.unpack; - var type$2 = utils.type; - - - - Color_1.prototype.cmyk = function() { - return rgb2cmyk_1(this._rgb); - }; - - chroma_1.cmyk = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['cmyk']) )); - }; - - input.format.cmyk = cmyk2rgb_1; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$3(args, 'cmyk'); - if (type$2(args) === 'array' && args.length === 4) { - return 'cmyk'; - } - } - }); - - var unpack$4 = utils.unpack; - var last$2 = utils.last; - var rnd = function (a) { return Math.round(a*100)/100; }; - - /* - * supported arguments: - * - hsl2css(h,s,l) - * - hsl2css(h,s,l,a) - * - hsl2css([h,s,l], mode) - * - hsl2css([h,s,l,a], mode) - * - hsl2css({h,s,l,a}, mode) - */ - var hsl2css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var hsla = unpack$4(args, 'hsla'); - var mode = last$2(args) || 'lsa'; - hsla[0] = rnd(hsla[0] || 0); - hsla[1] = rnd(hsla[1]*100) + '%'; - hsla[2] = rnd(hsla[2]*100) + '%'; - if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) { - hsla[3] = hsla.length > 3 ? hsla[3] : 1; - mode = 'hsla'; - } else { - hsla.length = 3; - } - return (mode + "(" + (hsla.join(',')) + ")"); - }; - - var hsl2css_1 = hsl2css; - - var unpack$5 = utils.unpack; - - /* - * supported arguments: - * - rgb2hsl(r,g,b) - * - rgb2hsl(r,g,b,a) - * - rgb2hsl([r,g,b]) - * - rgb2hsl([r,g,b,a]) - * - rgb2hsl({r,g,b,a}) - */ - var rgb2hsl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$5(args, 'rgba'); - var r = args[0]; - var g = args[1]; - var b = args[2]; - - r /= 255; - g /= 255; - b /= 255; - - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - - var l = (max + min) / 2; - var s, h; - - if (max === min){ - s = 0; - h = Number.NaN; - } else { - s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min); - } - - if (r == max) { h = (g - b) / (max - min); } - else if (g == max) { h = 2 + (b - r) / (max - min); } - else if (b == max) { h = 4 + (r - g) / (max - min); } - - h *= 60; - if (h < 0) { h += 360; } - if (args.length>3 && args[3]!==undefined) { return [h,s,l,args[3]]; } - return [h,s,l]; - }; - - var rgb2hsl_1 = rgb2hsl; - - var unpack$6 = utils.unpack; - var last$3 = utils.last; - - - var round = Math.round; - - /* - * supported arguments: - * - rgb2css(r,g,b) - * - rgb2css(r,g,b,a) - * - rgb2css([r,g,b], mode) - * - rgb2css([r,g,b,a], mode) - * - rgb2css({r,g,b,a}, mode) - */ - var rgb2css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgba = unpack$6(args, 'rgba'); - var mode = last$3(args) || 'rgb'; - if (mode.substr(0,3) == 'hsl') { - return hsl2css_1(rgb2hsl_1(rgba), mode); - } - rgba[0] = round(rgba[0]); - rgba[1] = round(rgba[1]); - rgba[2] = round(rgba[2]); - if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) { - rgba[3] = rgba.length > 3 ? rgba[3] : 1; - mode = 'rgba'; - } - return (mode + "(" + (rgba.slice(0,mode==='rgb'?3:4).join(',')) + ")"); - }; - - var rgb2css_1 = rgb2css; - - var unpack$7 = utils.unpack; - var round$1 = Math.round; - - var hsl2rgb = function () { - var assign; - - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - args = unpack$7(args, 'hsl'); - var h = args[0]; - var s = args[1]; - var l = args[2]; - var r,g,b; - if (s === 0) { - r = g = b = l*255; - } else { - var t3 = [0,0,0]; - var c = [0,0,0]; - var t2 = l < 0.5 ? l * (1+s) : l+s-l*s; - var t1 = 2 * l - t2; - var h_ = h / 360; - t3[0] = h_ + 1/3; - t3[1] = h_; - t3[2] = h_ - 1/3; - for (var i=0; i<3; i++) { - if (t3[i] < 0) { t3[i] += 1; } - if (t3[i] > 1) { t3[i] -= 1; } - if (6 * t3[i] < 1) - { c[i] = t1 + (t2 - t1) * 6 * t3[i]; } - else if (2 * t3[i] < 1) - { c[i] = t2; } - else if (3 * t3[i] < 2) - { c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6; } - else - { c[i] = t1; } - } - (assign = [round$1(c[0]*255),round$1(c[1]*255),round$1(c[2]*255)], r = assign[0], g = assign[1], b = assign[2]); - } - if (args.length > 3) { - // keep alpha channel - return [r,g,b,args[3]]; - } - return [r,g,b,1]; - }; - - var hsl2rgb_1 = hsl2rgb; - - var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; - var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; - var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; - var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; - var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; - var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; - - var round$2 = Math.round; - - var css2rgb = function (css) { - css = css.toLowerCase().trim(); - var m; - - if (input.format.named) { - try { - return input.format.named(css); - } catch (e) { - // eslint-disable-next-line - } - } - - // rgb(250,20,0) - if ((m = css.match(RE_RGB))) { - var rgb = m.slice(1,4); - for (var i=0; i<3; i++) { - rgb[i] = +rgb[i]; - } - rgb[3] = 1; // default alpha - return rgb; - } - - // rgba(250,20,0,0.4) - if ((m = css.match(RE_RGBA))) { - var rgb$1 = m.slice(1,5); - for (var i$1=0; i$1<4; i$1++) { - rgb$1[i$1] = +rgb$1[i$1]; - } - return rgb$1; - } - - // rgb(100%,0%,0%) - if ((m = css.match(RE_RGB_PCT))) { - var rgb$2 = m.slice(1,4); - for (var i$2=0; i$2<3; i$2++) { - rgb$2[i$2] = round$2(rgb$2[i$2] * 2.55); - } - rgb$2[3] = 1; // default alpha - return rgb$2; - } - - // rgba(100%,0%,0%,0.4) - if ((m = css.match(RE_RGBA_PCT))) { - var rgb$3 = m.slice(1,5); - for (var i$3=0; i$3<3; i$3++) { - rgb$3[i$3] = round$2(rgb$3[i$3] * 2.55); - } - rgb$3[3] = +rgb$3[3]; - return rgb$3; - } - - // hsl(0,100%,50%) - if ((m = css.match(RE_HSL))) { - var hsl = m.slice(1,4); - hsl[1] *= 0.01; - hsl[2] *= 0.01; - var rgb$4 = hsl2rgb_1(hsl); - rgb$4[3] = 1; - return rgb$4; - } - - // hsla(0,100%,50%,0.5) - if ((m = css.match(RE_HSLA))) { - var hsl$1 = m.slice(1,4); - hsl$1[1] *= 0.01; - hsl$1[2] *= 0.01; - var rgb$5 = hsl2rgb_1(hsl$1); - rgb$5[3] = +m[4]; // default alpha = 1 - return rgb$5; - } - }; - - css2rgb.test = function (s) { - return RE_RGB.test(s) || - RE_RGBA.test(s) || - RE_RGB_PCT.test(s) || - RE_RGBA_PCT.test(s) || - RE_HSL.test(s) || - RE_HSLA.test(s); - }; - - var css2rgb_1 = css2rgb; - - var type$3 = utils.type; - - - - - Color_1.prototype.css = function(mode) { - return rgb2css_1(this._rgb, mode); - }; - - chroma_1.css = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['css']) )); - }; - - input.format.css = css2rgb_1; - - input.autodetect.push({ - p: 5, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if (!rest.length && type$3(h) === 'string' && css2rgb_1.test(h)) { - return 'css'; - } - } - }); - - var unpack$8 = utils.unpack; - - input.format.gl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgb = unpack$8(args, 'rgba'); - rgb[0] *= 255; - rgb[1] *= 255; - rgb[2] *= 255; - return rgb; - }; - - chroma_1.gl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['gl']) )); - }; - - Color_1.prototype.gl = function() { - var rgb = this._rgb; - return [rgb[0]/255, rgb[1]/255, rgb[2]/255, rgb[3]]; - }; - - var unpack$9 = utils.unpack; - - var rgb2hcg = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack$9(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - var delta = max - min; - var c = delta * 100 / 255; - var _g = min / (255 - delta) * 100; - var h; - if (delta === 0) { - h = Number.NaN; - } else { - if (r === max) { h = (g - b) / delta; } - if (g === max) { h = 2+(b - r) / delta; } - if (b === max) { h = 4+(r - g) / delta; } - h *= 60; - if (h < 0) { h += 360; } - } - return [h, c, _g]; - }; - - var rgb2hcg_1 = rgb2hcg; - - var unpack$a = utils.unpack; - var floor = Math.floor; - - /* - * this is basically just HSV with some minor tweaks - * - * hue.. [0..360] - * chroma .. [0..1] - * grayness .. [0..1] - */ - - var hcg2rgb = function () { - var assign, assign$1, assign$2, assign$3, assign$4, assign$5; - - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - args = unpack$a(args, 'hcg'); - var h = args[0]; - var c = args[1]; - var _g = args[2]; - var r,g,b; - _g = _g * 255; - var _c = c * 255; - if (c === 0) { - r = g = b = _g; - } else { - if (h === 360) { h = 0; } - if (h > 360) { h -= 360; } - if (h < 0) { h += 360; } - h /= 60; - var i = floor(h); - var f = h - i; - var p = _g * (1 - c); - var q = p + _c * (1 - f); - var t = p + _c * f; - var v = p + _c; - switch (i) { - case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break - case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break - case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break - case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break - case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break - case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break - } - } - return [r, g, b, args.length > 3 ? args[3] : 1]; - }; - - var hcg2rgb_1 = hcg2rgb; - - var unpack$b = utils.unpack; - var type$4 = utils.type; - - - - - - - Color_1.prototype.hcg = function() { - return rgb2hcg_1(this._rgb); - }; - - chroma_1.hcg = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcg']) )); - }; - - input.format.hcg = hcg2rgb_1; - - input.autodetect.push({ - p: 1, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$b(args, 'hcg'); - if (type$4(args) === 'array' && args.length === 3) { - return 'hcg'; - } - } - }); - - var unpack$c = utils.unpack; - var last$4 = utils.last; - var round$3 = Math.round; - - var rgb2hex = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack$c(args, 'rgba'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var a = ref[3]; - var mode = last$4(args) || 'auto'; - if (a === undefined) { a = 1; } - if (mode === 'auto') { - mode = a < 1 ? 'rgba' : 'rgb'; - } - r = round$3(r); - g = round$3(g); - b = round$3(b); - var u = r << 16 | g << 8 | b; - var str = "000000" + u.toString(16); //#.toUpperCase(); - str = str.substr(str.length - 6); - var hxa = '0' + round$3(a * 255).toString(16); - hxa = hxa.substr(hxa.length - 2); - switch (mode.toLowerCase()) { - case 'rgba': return ("#" + str + hxa); - case 'argb': return ("#" + hxa + str); - default: return ("#" + str); - } - }; - - var rgb2hex_1 = rgb2hex; - - var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; - var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; - - var hex2rgb = function (hex) { - if (hex.match(RE_HEX)) { - // remove optional leading # - if (hex.length === 4 || hex.length === 7) { - hex = hex.substr(1); - } - // expand short-notation to full six-digit - if (hex.length === 3) { - hex = hex.split(''); - hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; - } - var u = parseInt(hex, 16); - var r = u >> 16; - var g = u >> 8 & 0xFF; - var b = u & 0xFF; - return [r,g,b,1]; - } - - // match rgba hex format, eg #FF000077 - if (hex.match(RE_HEXA)) { - if (hex.length === 5 || hex.length === 9) { - // remove optional leading # - hex = hex.substr(1); - } - // expand short-notation to full eight-digit - if (hex.length === 4) { - hex = hex.split(''); - hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3]; - } - var u$1 = parseInt(hex, 16); - var r$1 = u$1 >> 24 & 0xFF; - var g$1 = u$1 >> 16 & 0xFF; - var b$1 = u$1 >> 8 & 0xFF; - var a = Math.round((u$1 & 0xFF) / 0xFF * 100) / 100; - return [r$1,g$1,b$1,a]; - } - - // we used to check for css colors here - // if _input.css? and rgb = _input.css hex - // return rgb - - throw new Error(("unknown hex color: " + hex)); - }; - - var hex2rgb_1 = hex2rgb; - - var type$5 = utils.type; - - - - - Color_1.prototype.hex = function(mode) { - return rgb2hex_1(this._rgb, mode); - }; - - chroma_1.hex = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hex']) )); - }; - - input.format.hex = hex2rgb_1; - input.autodetect.push({ - p: 4, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if (!rest.length && type$5(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) { - return 'hex'; - } - } - }); - - var unpack$d = utils.unpack; - var TWOPI = utils.TWOPI; - var min = Math.min; - var sqrt = Math.sqrt; - var acos = Math.acos; - - var rgb2hsi = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - /* - borrowed from here: - http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp - */ - var ref = unpack$d(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - r /= 255; - g /= 255; - b /= 255; - var h; - var min_ = min(r,g,b); - var i = (r+g+b) / 3; - var s = i > 0 ? 1 - min_/i : 0; - if (s === 0) { - h = NaN; - } else { - h = ((r-g)+(r-b)) / 2; - h /= sqrt((r-g)*(r-g) + (r-b)*(g-b)); - h = acos(h); - if (b > g) { - h = TWOPI - h; - } - h /= TWOPI; - } - return [h*360,s,i]; - }; - - var rgb2hsi_1 = rgb2hsi; - - var unpack$e = utils.unpack; - var limit$1 = utils.limit; - var TWOPI$1 = utils.TWOPI; - var PITHIRD = utils.PITHIRD; - var cos = Math.cos; - - /* - * hue [0..360] - * saturation [0..1] - * intensity [0..1] - */ - var hsi2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - /* - borrowed from here: - http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp - */ - args = unpack$e(args, 'hsi'); - var h = args[0]; - var s = args[1]; - var i = args[2]; - var r,g,b; - - if (isNaN(h)) { h = 0; } - if (isNaN(s)) { s = 0; } - // normalize hue - if (h > 360) { h -= 360; } - if (h < 0) { h += 360; } - h /= 360; - if (h < 1/3) { - b = (1-s)/3; - r = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3; - g = 1 - (b+r); - } else if (h < 2/3) { - h -= 1/3; - r = (1-s)/3; - g = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3; - b = 1 - (r+g); - } else { - h -= 2/3; - g = (1-s)/3; - b = (1+s*cos(TWOPI$1*h)/cos(PITHIRD-TWOPI$1*h))/3; - r = 1 - (g+b); - } - r = limit$1(i*r*3); - g = limit$1(i*g*3); - b = limit$1(i*b*3); - return [r*255, g*255, b*255, args.length > 3 ? args[3] : 1]; - }; - - var hsi2rgb_1 = hsi2rgb; - - var unpack$f = utils.unpack; - var type$6 = utils.type; - - - - - - - Color_1.prototype.hsi = function() { - return rgb2hsi_1(this._rgb); - }; - - chroma_1.hsi = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsi']) )); - }; - - input.format.hsi = hsi2rgb_1; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$f(args, 'hsi'); - if (type$6(args) === 'array' && args.length === 3) { - return 'hsi'; - } - } - }); - - var unpack$g = utils.unpack; - var type$7 = utils.type; - - - - - - - Color_1.prototype.hsl = function() { - return rgb2hsl_1(this._rgb); - }; - - chroma_1.hsl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsl']) )); - }; - - input.format.hsl = hsl2rgb_1; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$g(args, 'hsl'); - if (type$7(args) === 'array' && args.length === 3) { - return 'hsl'; - } - } - }); - - var unpack$h = utils.unpack; - var min$1 = Math.min; - var max$1 = Math.max; - - /* - * supported arguments: - * - rgb2hsv(r,g,b) - * - rgb2hsv([r,g,b]) - * - rgb2hsv({r,g,b}) - */ - var rgb2hsl$1 = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$h(args, 'rgb'); - var r = args[0]; - var g = args[1]; - var b = args[2]; - var min_ = min$1(r, g, b); - var max_ = max$1(r, g, b); - var delta = max_ - min_; - var h,s,v; - v = max_ / 255.0; - if (max_ === 0) { - h = Number.NaN; - s = 0; - } else { - s = delta / max_; - if (r === max_) { h = (g - b) / delta; } - if (g === max_) { h = 2+(b - r) / delta; } - if (b === max_) { h = 4+(r - g) / delta; } - h *= 60; - if (h < 0) { h += 360; } - } - return [h, s, v] - }; - - var rgb2hsv = rgb2hsl$1; - - var unpack$i = utils.unpack; - var floor$1 = Math.floor; - - var hsv2rgb = function () { - var assign, assign$1, assign$2, assign$3, assign$4, assign$5; - - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - args = unpack$i(args, 'hsv'); - var h = args[0]; - var s = args[1]; - var v = args[2]; - var r,g,b; - v *= 255; - if (s === 0) { - r = g = b = v; - } else { - if (h === 360) { h = 0; } - if (h > 360) { h -= 360; } - if (h < 0) { h += 360; } - h /= 60; - - var i = floor$1(h); - var f = h - i; - var p = v * (1 - s); - var q = v * (1 - s * f); - var t = v * (1 - s * (1 - f)); - - switch (i) { - case 0: (assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]); break - case 1: (assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]); break - case 2: (assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]); break - case 3: (assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]); break - case 4: (assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]); break - case 5: (assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]); break - } - } - return [r,g,b,args.length > 3?args[3]:1]; - }; - - var hsv2rgb_1 = hsv2rgb; - - var unpack$j = utils.unpack; - var type$8 = utils.type; - - - - - - - Color_1.prototype.hsv = function() { - return rgb2hsv(this._rgb); - }; - - chroma_1.hsv = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hsv']) )); - }; - - input.format.hsv = hsv2rgb_1; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$j(args, 'hsv'); - if (type$8(args) === 'array' && args.length === 3) { - return 'hsv'; - } - } - }); - - var labConstants = { - // Corresponds roughly to RGB brighter/darker - Kn: 18, - - // D65 standard referent - Xn: 0.950470, - Yn: 1, - Zn: 1.088830, - - t0: 0.137931034, // 4 / 29 - t1: 0.206896552, // 6 / 29 - t2: 0.12841855, // 3 * t1 * t1 - t3: 0.008856452, // t1 * t1 * t1 - }; - - var unpack$k = utils.unpack; - var pow = Math.pow; - - var rgb2lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack$k(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = rgb2xyz(r,g,b); - var x = ref$1[0]; - var y = ref$1[1]; - var z = ref$1[2]; - var l = 116 * y - 16; - return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; - }; - - var rgb_xyz = function (r) { - if ((r /= 255) <= 0.04045) { return r / 12.92; } - return pow((r + 0.055) / 1.055, 2.4); - }; - - var xyz_lab = function (t) { - if (t > labConstants.t3) { return pow(t, 1 / 3); } - return t / labConstants.t2 + labConstants.t0; - }; - - var rgb2xyz = function (r,g,b) { - r = rgb_xyz(r); - g = rgb_xyz(g); - b = rgb_xyz(b); - var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / labConstants.Xn); - var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / labConstants.Yn); - var z = xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / labConstants.Zn); - return [x,y,z]; - }; - - var rgb2lab_1 = rgb2lab; - - var unpack$l = utils.unpack; - var pow$1 = Math.pow; - - /* - * L* [0..100] - * a [-100..100] - * b [-100..100] - */ - var lab2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$l(args, 'lab'); - var l = args[0]; - var a = args[1]; - var b = args[2]; - var x,y,z, r,g,b_; - - y = (l + 16) / 116; - x = isNaN(a) ? y : y + a / 500; - z = isNaN(b) ? y : y - b / 200; - - y = labConstants.Yn * lab_xyz(y); - x = labConstants.Xn * lab_xyz(x); - z = labConstants.Zn * lab_xyz(z); - - r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB - g = xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z); - b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); - - return [r,g,b_,args.length > 3 ? args[3] : 1]; - }; - - var xyz_rgb = function (r) { - return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * pow$1(r, 1 / 2.4) - 0.055) - }; - - var lab_xyz = function (t) { - return t > labConstants.t1 ? t * t * t : labConstants.t2 * (t - labConstants.t0) - }; - - var lab2rgb_1 = lab2rgb; - - var unpack$m = utils.unpack; - var type$9 = utils.type; - - - - - - - Color_1.prototype.lab = function() { - return rgb2lab_1(this._rgb); - }; - - chroma_1.lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lab']) )); - }; - - input.format.lab = lab2rgb_1; - - input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$m(args, 'lab'); - if (type$9(args) === 'array' && args.length === 3) { - return 'lab'; - } - } - }); - - var unpack$n = utils.unpack; - var RAD2DEG = utils.RAD2DEG; - var sqrt$1 = Math.sqrt; - var atan2 = Math.atan2; - var round$4 = Math.round; - - var lab2lch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack$n(args, 'lab'); - var l = ref[0]; - var a = ref[1]; - var b = ref[2]; - var c = sqrt$1(a * a + b * b); - var h = (atan2(b, a) * RAD2DEG + 360) % 360; - if (round$4(c*10000) === 0) { h = Number.NaN; } - return [l, c, h]; - }; - - var lab2lch_1 = lab2lch; - - var unpack$o = utils.unpack; - - - - var rgb2lch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack$o(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - var ref$1 = rgb2lab_1(r,g,b); - var l = ref$1[0]; - var a = ref$1[1]; - var b_ = ref$1[2]; - return lab2lch_1(l,a,b_); - }; - - var rgb2lch_1 = rgb2lch; - - var unpack$p = utils.unpack; - var DEG2RAD = utils.DEG2RAD; - var sin = Math.sin; - var cos$1 = Math.cos; - - var lch2lab = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - /* - Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel. - These formulas were invented by David Dalrymple to obtain maximum contrast without going - out of gamut if the parameters are in the range 0-1. - - A saturation multiplier was added by Gregor Aisch - */ - var ref = unpack$p(args, 'lch'); - var l = ref[0]; - var c = ref[1]; - var h = ref[2]; - if (isNaN(h)) { h = 0; } - h = h * DEG2RAD; - return [l, cos$1(h) * c, sin(h) * c] - }; - - var lch2lab_1 = lch2lab; - - var unpack$q = utils.unpack; - - - - var lch2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$q(args, 'lch'); - var l = args[0]; - var c = args[1]; - var h = args[2]; - var ref = lch2lab_1 (l,c,h); - var L = ref[0]; - var a = ref[1]; - var b_ = ref[2]; - var ref$1 = lab2rgb_1 (L,a,b_); - var r = ref$1[0]; - var g = ref$1[1]; - var b = ref$1[2]; - return [r, g, b, args.length > 3 ? args[3] : 1]; - }; - - var lch2rgb_1 = lch2rgb; - - var unpack$r = utils.unpack; - - - var hcl2rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var hcl = unpack$r(args, 'hcl').reverse(); - return lch2rgb_1.apply(void 0, hcl); - }; - - var hcl2rgb_1 = hcl2rgb; - - var unpack$s = utils.unpack; - var type$a = utils.type; - - - - - - - Color_1.prototype.lch = function() { return rgb2lch_1(this._rgb); }; - Color_1.prototype.hcl = function() { return rgb2lch_1(this._rgb).reverse(); }; - - chroma_1.lch = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['lch']) )); - }; - chroma_1.hcl = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['hcl']) )); - }; - - input.format.lch = lch2rgb_1; - input.format.hcl = hcl2rgb_1; - - ['lch','hcl'].forEach(function (m) { return input.autodetect.push({ - p: 2, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$s(args, m); - if (type$a(args) === 'array' && args.length === 3) { - return m; - } - } - }); }); - - /** - X11 color names - - http://www.w3.org/TR/css3-color/#svg-color - */ - - var w3cx11 = { - 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' - }; - - var w3cx11_1 = w3cx11; - - var type$b = utils.type; - - - - - - Color_1.prototype.name = function() { - var hex = rgb2hex_1(this._rgb, 'rgb'); - for (var i = 0, list = Object.keys(w3cx11_1); i < list.length; i += 1) { - var n = list[i]; - - if (w3cx11_1[n] === hex) { return n.toLowerCase(); } - } - return hex; - }; - - input.format.named = function (name) { - name = name.toLowerCase(); - if (w3cx11_1[name]) { return hex2rgb_1(w3cx11_1[name]); } - throw new Error('unknown color name: '+name); - }; - - input.autodetect.push({ - p: 5, - test: function (h) { - var rest = [], len = arguments.length - 1; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 1 ]; - - if (!rest.length && type$b(h) === 'string' && w3cx11_1[h.toLowerCase()]) { - return 'named'; - } - } - }); - - var unpack$t = utils.unpack; - - var rgb2num = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var ref = unpack$t(args, 'rgb'); - var r = ref[0]; - var g = ref[1]; - var b = ref[2]; - return (r << 16) + (g << 8) + b; - }; - - var rgb2num_1 = rgb2num; - - var type$c = utils.type; - - var num2rgb = function (num) { - if (type$c(num) == "number" && num >= 0 && num <= 0xFFFFFF) { - var r = num >> 16; - var g = (num >> 8) & 0xFF; - var b = num & 0xFF; - return [r,g,b,1]; - } - throw new Error("unknown num color: "+num); - }; - - var num2rgb_1 = num2rgb; - - var type$d = utils.type; - - - - Color_1.prototype.num = function() { - return rgb2num_1(this._rgb); - }; - - chroma_1.num = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['num']) )); - }; - - input.format.num = num2rgb_1; - - input.autodetect.push({ - p: 5, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (args.length === 1 && type$d(args[0]) === 'number' && args[0] >= 0 && args[0] <= 0xFFFFFF) { - return 'num'; - } - } - }); - - var unpack$u = utils.unpack; - var type$e = utils.type; - var round$5 = Math.round; - - Color_1.prototype.rgb = function(rnd) { - if ( rnd === void 0 ) rnd=true; - - if (rnd === false) { return this._rgb.slice(0,3); } - return this._rgb.slice(0,3).map(round$5); - }; - - Color_1.prototype.rgba = function(rnd) { - if ( rnd === void 0 ) rnd=true; - - return this._rgb.slice(0,4).map(function (v,i) { - return i<3 ? (rnd === false ? v : round$5(v)) : v; - }); - }; - - chroma_1.rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['rgb']) )); - }; - - input.format.rgb = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgba = unpack$u(args, 'rgba'); - if (rgba[3] === undefined) { rgba[3] = 1; } - return rgba; - }; - - input.autodetect.push({ - p: 3, - test: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - args = unpack$u(args, 'rgba'); - if (type$e(args) === 'array' && (args.length === 3 || - args.length === 4 && type$e(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) { - return 'rgb'; - } - } - }); - - /* - * Based on implementation by Neil Bartlett - * https://github.com/neilbartlett/color-temperature - */ - - var log = Math.log; - - var temperature2rgb = function (kelvin) { - var temp = kelvin / 100; - var r,g,b; - if (temp < 66) { - r = 255; - g = -155.25485562709179 - 0.44596950469579133 * (g = temp-2) + 104.49216199393888 * log(g); - b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp-10) + 115.67994401066147 * log(b); - } else { - r = 351.97690566805693 + 0.114206453784165 * (r = temp-55) - 40.25366309332127 * log(r); - g = 325.4494125711974 + 0.07943456536662342 * (g = temp-50) - 28.0852963507957 * log(g); - b = 255; - } - return [r,g,b,1]; - }; - - var temperature2rgb_1 = temperature2rgb; - - /* - * Based on implementation by Neil Bartlett - * https://github.com/neilbartlett/color-temperature - **/ - - - var unpack$v = utils.unpack; - var round$6 = Math.round; - - var rgb2temperature = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - var rgb = unpack$v(args, 'rgb'); - var r = rgb[0], b = rgb[2]; - var minTemp = 1000; - var maxTemp = 40000; - var eps = 0.4; - var temp; - while (maxTemp - minTemp > eps) { - temp = (maxTemp + minTemp) * 0.5; - var rgb$1 = temperature2rgb_1(temp); - if ((rgb$1[2] / rgb$1[0]) >= (b / r)) { - maxTemp = temp; - } else { - minTemp = temp; - } - } - return round$6(temp); - }; - - var rgb2temperature_1 = rgb2temperature; - - Color_1.prototype.temp = - Color_1.prototype.kelvin = - Color_1.prototype.temperature = function() { - return rgb2temperature_1(this._rgb); - }; - - chroma_1.temp = - chroma_1.kelvin = - chroma_1.temperature = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - return new (Function.prototype.bind.apply( Color_1, [ null ].concat( args, ['temp']) )); - }; - - input.format.temp = - input.format.kelvin = - input.format.temperature = temperature2rgb_1; - - var type$f = utils.type; - - Color_1.prototype.alpha = function(a, mutate) { - if ( mutate === void 0 ) mutate=false; - - if (a !== undefined && type$f(a) === 'number') { - if (mutate) { - this._rgb[3] = a; - return this; - } - return new Color_1([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb'); - } - return this._rgb[3]; - }; - - Color_1.prototype.clipped = function() { - return this._rgb._clipped || false; - }; - - Color_1.prototype.darken = function(amount) { - if ( amount === void 0 ) amount=1; - - var me = this; - var lab = me.lab(); - lab[0] -= labConstants.Kn * amount; - return new Color_1(lab, 'lab').alpha(me.alpha(), true); - }; - - Color_1.prototype.brighten = function(amount) { - if ( amount === void 0 ) amount=1; - - return this.darken(-amount); - }; - - Color_1.prototype.darker = Color_1.prototype.darken; - Color_1.prototype.brighter = Color_1.prototype.brighten; - - Color_1.prototype.get = function(mc) { - var ref = mc.split('.'); - var mode = ref[0]; - var channel = ref[1]; - var src = this[mode](); - if (channel) { - var i = mode.indexOf(channel); - if (i > -1) { return src[i]; } - throw new Error(("unknown channel " + channel + " in mode " + mode)); - } else { - return src; - } - }; - - var type$g = utils.type; - var pow$2 = Math.pow; - - var EPS = 1e-7; - var MAX_ITER = 20; - - Color_1.prototype.luminance = function(lum) { - if (lum !== undefined && type$g(lum) === 'number') { - if (lum === 0) { - // return pure black - return new Color_1([0,0,0,this._rgb[3]], 'rgb'); - } - if (lum === 1) { - // return pure white - return new Color_1([255,255,255,this._rgb[3]], 'rgb'); - } - // compute new color using... - var cur_lum = this.luminance(); - var mode = 'rgb'; - var max_iter = MAX_ITER; - - var test = function (low, high) { - var mid = low.interpolate(high, 0.5, mode); - var lm = mid.luminance(); - if (Math.abs(lum - lm) < EPS || !max_iter--) { - // close enough - return mid; - } - return lm > lum ? test(low, mid) : test(mid, high); - }; - - var rgb = (cur_lum > lum ? test(new Color_1([0,0,0]), this) : test(this, new Color_1([255,255,255]))).rgb(); - return new Color_1(rgb.concat( [this._rgb[3]])); - } - return rgb2luminance.apply(void 0, (this._rgb).slice(0,3)); - }; - - - var rgb2luminance = function (r,g,b) { - // relative luminance - // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef - r = luminance_x(r); - g = luminance_x(g); - b = luminance_x(b); - return 0.2126 * r + 0.7152 * g + 0.0722 * b; - }; - - var luminance_x = function (x) { - x /= 255; - return x <= 0.03928 ? x/12.92 : pow$2((x+0.055)/1.055, 2.4); - }; - - var interpolator = {}; - - var type$h = utils.type; - - - var mix = function (col1, col2, f) { - if ( f === void 0 ) f=0.5; - var rest = [], len = arguments.length - 3; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 3 ]; - - var mode = rest[0] || 'lrgb'; - if (!interpolator[mode] && !rest.length) { - // fall back to the first supported mode - mode = Object.keys(interpolator)[0]; - } - if (!interpolator[mode]) { - throw new Error(("interpolation mode " + mode + " is not defined")); - } - if (type$h(col1) !== 'object') { col1 = new Color_1(col1); } - if (type$h(col2) !== 'object') { col2 = new Color_1(col2); } - return interpolator[mode](col1, col2, f) - .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha())); - }; - - Color_1.prototype.mix = - Color_1.prototype.interpolate = function(col2, f) { - if ( f === void 0 ) f=0.5; - var rest = [], len = arguments.length - 2; - while ( len-- > 0 ) rest[ len ] = arguments[ len + 2 ]; - - return mix.apply(void 0, [ this, col2, f ].concat( rest )); - }; - - Color_1.prototype.premultiply = function(mutate) { - if ( mutate === void 0 ) mutate=false; - - var rgb = this._rgb; - var a = rgb[3]; - if (mutate) { - this._rgb = [rgb[0]*a, rgb[1]*a, rgb[2]*a, a]; - return this; - } else { - return new Color_1([rgb[0]*a, rgb[1]*a, rgb[2]*a, a], 'rgb'); - } - }; - - Color_1.prototype.saturate = function(amount) { - if ( amount === void 0 ) amount=1; - - var me = this; - var lch = me.lch(); - lch[1] += labConstants.Kn * amount; - if (lch[1] < 0) { lch[1] = 0; } - return new Color_1(lch, 'lch').alpha(me.alpha(), true); - }; - - Color_1.prototype.desaturate = function(amount) { - if ( amount === void 0 ) amount=1; - - return this.saturate(-amount); - }; - - var type$i = utils.type; - - Color_1.prototype.set = function(mc, value, mutate) { - if ( mutate === void 0 ) mutate=false; - - var ref = mc.split('.'); - var mode = ref[0]; - var channel = ref[1]; - var src = this[mode](); - if (channel) { - var i = mode.indexOf(channel); - if (i > -1) { - if (type$i(value) == 'string') { - switch(value.charAt(0)) { - case '+': src[i] += +value; break; - case '-': src[i] += +value; break; - case '*': src[i] *= +(value.substr(1)); break; - case '/': src[i] /= +(value.substr(1)); break; - default: src[i] = +value; - } - } else if (type$i(value) === 'number') { - src[i] = value; - } else { - throw new Error("unsupported value for Color.set"); - } - var out = new Color_1(src, mode); - if (mutate) { - this._rgb = out._rgb; - return this; - } - return out; - } - throw new Error(("unknown channel " + channel + " in mode " + mode)); - } else { - return src; - } - }; - - var rgb$1 = function (col1, col2, f) { - var xyz0 = col1._rgb; - var xyz1 = col2._rgb; - return new Color_1( - xyz0[0] + f * (xyz1[0]-xyz0[0]), - xyz0[1] + f * (xyz1[1]-xyz0[1]), - xyz0[2] + f * (xyz1[2]-xyz0[2]), - 'rgb' - ) - }; - - // register interpolator - interpolator.rgb = rgb$1; - - var sqrt$2 = Math.sqrt; - var pow$3 = Math.pow; - - var lrgb = function (col1, col2, f) { - var ref = col1._rgb; - var x1 = ref[0]; - var y1 = ref[1]; - var z1 = ref[2]; - var ref$1 = col2._rgb; - var x2 = ref$1[0]; - var y2 = ref$1[1]; - var z2 = ref$1[2]; - return new Color_1( - sqrt$2(pow$3(x1,2) * (1-f) + pow$3(x2,2) * f), - sqrt$2(pow$3(y1,2) * (1-f) + pow$3(y2,2) * f), - sqrt$2(pow$3(z1,2) * (1-f) + pow$3(z2,2) * f), - 'rgb' - ) - }; - - // register interpolator - interpolator.lrgb = lrgb; - - var lab$1 = function (col1, col2, f) { - var xyz0 = col1.lab(); - var xyz1 = col2.lab(); - return new Color_1( - xyz0[0] + f * (xyz1[0]-xyz0[0]), - xyz0[1] + f * (xyz1[1]-xyz0[1]), - xyz0[2] + f * (xyz1[2]-xyz0[2]), - 'lab' - ) - }; - - // register interpolator - interpolator.lab = lab$1; - - var _hsx = function (col1, col2, f, m) { - var assign, assign$1; - - var xyz0, xyz1; - if (m === 'hsl') { - xyz0 = col1.hsl(); - xyz1 = col2.hsl(); - } else if (m === 'hsv') { - xyz0 = col1.hsv(); - xyz1 = col2.hsv(); - } else if (m === 'hcg') { - xyz0 = col1.hcg(); - xyz1 = col2.hcg(); - } else if (m === 'hsi') { - xyz0 = col1.hsi(); - xyz1 = col2.hsi(); - } else if (m === 'lch' || m === 'hcl') { - m = 'hcl'; - xyz0 = col1.hcl(); - xyz1 = col2.hcl(); - } - - var hue0, hue1, sat0, sat1, lbv0, lbv1; - if (m.substr(0, 1) === 'h') { - (assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]); - (assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]); - } - - var sat, hue, lbv, dh; - - if (!isNaN(hue0) && !isNaN(hue1)) { - // both colors have hue - if (hue1 > hue0 && hue1 - hue0 > 180) { - dh = hue1-(hue0+360); - } else if (hue1 < hue0 && hue0 - hue1 > 180) { - dh = hue1+360-hue0; - } else { - dh = hue1 - hue0; - } - hue = hue0 + f * dh; - } else if (!isNaN(hue0)) { - hue = hue0; - if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') { sat = sat0; } - } else if (!isNaN(hue1)) { - hue = hue1; - if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') { sat = sat1; } - } else { - hue = Number.NaN; - } - - if (sat === undefined) { sat = sat0 + f * (sat1 - sat0); } - lbv = lbv0 + f * (lbv1-lbv0); - return new Color_1([hue, sat, lbv], m); - }; - - var lch$1 = function (col1, col2, f) { - return _hsx(col1, col2, f, 'lch'); - }; - - // register interpolator - interpolator.lch = lch$1; - interpolator.hcl = lch$1; - - var num$1 = function (col1, col2, f) { - var c1 = col1.num(); - var c2 = col2.num(); - return new Color_1(c1 + f * (c2-c1), 'num') - }; - - // register interpolator - interpolator.num = num$1; - - var hcg$1 = function (col1, col2, f) { - return _hsx(col1, col2, f, 'hcg'); - }; - - // register interpolator - interpolator.hcg = hcg$1; - - var hsi$1 = function (col1, col2, f) { - return _hsx(col1, col2, f, 'hsi'); - }; - - // register interpolator - interpolator.hsi = hsi$1; - - var hsl$1 = function (col1, col2, f) { - return _hsx(col1, col2, f, 'hsl'); - }; - - // register interpolator - interpolator.hsl = hsl$1; - - var hsv$1 = function (col1, col2, f) { - return _hsx(col1, col2, f, 'hsv'); - }; - - // register interpolator - interpolator.hsv = hsv$1; - - var clip_rgb$2 = utils.clip_rgb; - var pow$4 = Math.pow; - var sqrt$3 = Math.sqrt; - var PI$1 = Math.PI; - var cos$2 = Math.cos; - var sin$1 = Math.sin; - var atan2$1 = Math.atan2; - - var average = function (colors, mode, weights) { - if ( mode === void 0 ) mode='lrgb'; - if ( weights === void 0 ) weights=null; - - var l = colors.length; - if (!weights) { weights = Array.from(new Array(l)).map(function () { return 1; }); } - // normalize weights - var k = l / weights.reduce(function(a, b) { return a + b; }); - weights.forEach(function (w,i) { weights[i] *= k; }); - // convert colors to Color objects - colors = colors.map(function (c) { return new Color_1(c); }); - if (mode === 'lrgb') { - return _average_lrgb(colors, weights) - } - var first = colors.shift(); - var xyz = first.get(mode); - var cnt = []; - var dx = 0; - var dy = 0; - // initial color - for (var i=0; i= 360) { A$1 -= 360; } - xyz[i$1] = A$1; - } else { - xyz[i$1] = xyz[i$1]/cnt[i$1]; - } - } - alpha /= l; - return (new Color_1(xyz, mode)).alpha(alpha > 0.99999 ? 1 : alpha, true); - }; - - - var _average_lrgb = function (colors, weights) { - var l = colors.length; - var xyz = [0,0,0,0]; - for (var i=0; i < colors.length; i++) { - var col = colors[i]; - var f = weights[i] / l; - var rgb = col._rgb; - xyz[0] += pow$4(rgb[0],2) * f; - xyz[1] += pow$4(rgb[1],2) * f; - xyz[2] += pow$4(rgb[2],2) * f; - xyz[3] += rgb[3] * f; - } - xyz[0] = sqrt$3(xyz[0]); - xyz[1] = sqrt$3(xyz[1]); - xyz[2] = sqrt$3(xyz[2]); - if (xyz[3] > 0.9999999) { xyz[3] = 1; } - return new Color_1(clip_rgb$2(xyz)); - }; - - // minimal multi-purpose interface - - // @requires utils color analyze - - - var type$j = utils.type; - - var pow$5 = Math.pow; - - var scale = function(colors) { - - // constructor - var _mode = 'rgb'; - var _nacol = chroma_1('#ccc'); - var _spread = 0; - // const _fixed = false; - var _domain = [0, 1]; - var _pos = []; - var _padding = [0,0]; - var _classes = false; - var _colors = []; - var _out = false; - var _min = 0; - var _max = 1; - var _correctLightness = false; - var _colorCache = {}; - var _useCache = true; - var _gamma = 1; - - // private methods - - var setColors = function(colors) { - colors = colors || ['#fff', '#000']; - if (colors && type$j(colors) === 'string' && chroma_1.brewer && - chroma_1.brewer[colors.toLowerCase()]) { - colors = chroma_1.brewer[colors.toLowerCase()]; - } - if (type$j(colors) === 'array') { - // handle single color - if (colors.length === 1) { - colors = [colors[0], colors[0]]; - } - // make a copy of the colors - colors = colors.slice(0); - // convert to chroma classes - for (var c=0; c= _classes[i]) { - i++; - } - return i-1; - } - return 0; - }; - - var tMapLightness = function (t) { return t; }; - var tMapDomain = function (t) { return t; }; - - // const classifyValue = function(value) { - // let val = value; - // if (_classes.length > 2) { - // const n = _classes.length-1; - // const i = getClass(value); - // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class - // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class - // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min)); - // } - // return val; - // }; - - var getColor = function(val, bypassMap) { - var col, t; - if (bypassMap == null) { bypassMap = false; } - if (isNaN(val) || (val === null)) { return _nacol; } - if (!bypassMap) { - if (_classes && (_classes.length > 2)) { - // find the class - var c = getClass(val); - t = c / (_classes.length-2); - } else if (_max !== _min) { - // just interpolate between min/max - t = (val - _min) / (_max - _min); - } else { - t = 1; - } - } else { - t = val; - } - - // domain map - t = tMapDomain(t); - - if (!bypassMap) { - t = tMapLightness(t); // lightness correction - } - - if (_gamma !== 1) { t = pow$5(t, _gamma); } - - t = _padding[0] + (t * (1 - _padding[0] - _padding[1])); - - t = Math.min(1, Math.max(0, t)); - - var k = Math.floor(t * 10000); - - if (_useCache && _colorCache[k]) { - col = _colorCache[k]; - } else { - if (type$j(_colors) === 'array') { - //for i in [0.._pos.length-1] - for (var i=0; i<_pos.length; i++) { - var p = _pos[i]; - if (t <= p) { - col = _colors[i]; - break; - } - if ((t >= p) && (i === (_pos.length-1))) { - col = _colors[i]; - break; - } - if (t > p && t < _pos[i+1]) { - t = (t-p)/(_pos[i+1]-p); - col = chroma_1.interpolate(_colors[i], _colors[i+1], t, _mode); - break; - } - } - } else if (type$j(_colors) === 'function') { - col = _colors(t); - } - if (_useCache) { _colorCache[k] = col; } - } - return col; - }; - - var resetCache = function () { return _colorCache = {}; }; - - setColors(colors); - - // public interface - - var f = function(v) { - var c = chroma_1(getColor(v)); - if (_out && c[_out]) { return c[_out](); } else { return c; } - }; - - f.classes = function(classes) { - if (classes != null) { - if (type$j(classes) === 'array') { - _classes = classes; - _domain = [classes[0], classes[classes.length-1]]; - } else { - var d = chroma_1.analyze(_domain); - if (classes === 0) { - _classes = [d.min, d.max]; - } else { - _classes = chroma_1.limits(d, 'e', classes); - } - } - return f; - } - return _classes; - }; - - - f.domain = function(domain) { - if (!arguments.length) { - return _domain; - } - _min = domain[0]; - _max = domain[domain.length-1]; - _pos = []; - var k = _colors.length; - if ((domain.length === k) && (_min !== _max)) { - // update positions - for (var i = 0, list = Array.from(domain); i < list.length; i += 1) { - var d = list[i]; - - _pos.push((d-_min) / (_max-_min)); - } - } else { - for (var c=0; c 2) { - // set domain map - var tOut = domain.map(function (d,i) { return i/(domain.length-1); }); - var tBreaks = domain.map(function (d) { return (d - _min) / (_max - _min); }); - if (!tBreaks.every(function (val, i) { return tOut[i] === val; })) { - tMapDomain = function (t) { - if (t <= 0 || t >= 1) { return t; } - var i = 0; - while (t >= tBreaks[i+1]) { i++; } - var f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]); - var out = tOut[i] + f * (tOut[i+1] - tOut[i]); - return out; - }; - } - - } - } - _domain = [_min, _max]; - return f; - }; - - f.mode = function(_m) { - if (!arguments.length) { - return _mode; - } - _mode = _m; - resetCache(); - return f; - }; - - f.range = function(colors, _pos) { - setColors(colors); - return f; - }; - - f.out = function(_o) { - _out = _o; - return f; - }; - - f.spread = function(val) { - if (!arguments.length) { - return _spread; - } - _spread = val; - return f; - }; - - f.correctLightness = function(v) { - if (v == null) { v = true; } - _correctLightness = v; - resetCache(); - if (_correctLightness) { - tMapLightness = function(t) { - var L0 = getColor(0, true).lab()[0]; - var L1 = getColor(1, true).lab()[0]; - var pol = L0 > L1; - var L_actual = getColor(t, true).lab()[0]; - var L_ideal = L0 + ((L1 - L0) * t); - var L_diff = L_actual - L_ideal; - var t0 = 0; - var t1 = 1; - var max_iter = 20; - while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) { - (function() { - if (pol) { L_diff *= -1; } - if (L_diff < 0) { - t0 = t; - t += (t1 - t) * 0.5; - } else { - t1 = t; - t += (t0 - t) * 0.5; - } - L_actual = getColor(t, true).lab()[0]; - return L_diff = L_actual - L_ideal; - })(); - } - return t; - }; - } else { - tMapLightness = function (t) { return t; }; - } - return f; - }; - - f.padding = function(p) { - if (p != null) { - if (type$j(p) === 'number') { - p = [p,p]; - } - _padding = p; - return f; - } else { - return _padding; - } - }; - - f.colors = function(numColors, out) { - // If no arguments are given, return the original colors that were provided - if (arguments.length < 2) { out = 'hex'; } - var result = []; - - if (arguments.length === 0) { - result = _colors.slice(0); - - } else if (numColors === 1) { - result = [f(0.5)]; - - } else if (numColors > 1) { - var dm = _domain[0]; - var dd = _domain[1] - dm; - result = __range__(0, numColors, false).map(function (i) { return f( dm + ((i/(numColors-1)) * dd) ); }); - - } else { // returns all colors based on the defined classes - colors = []; - var samples = []; - if (_classes && (_classes.length > 2)) { - for (var i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) { - samples.push((_classes[i-1]+_classes[i])*0.5); - } - } else { - samples = _domain; - } - result = samples.map(function (v) { return f(v); }); - } - - if (chroma_1[out]) { - result = result.map(function (c) { return c[out](); }); - } - return result; - }; - - f.cache = function(c) { - if (c != null) { - _useCache = c; - return f; - } else { - return _useCache; - } - }; - - f.gamma = function(g) { - if (g != null) { - _gamma = g; - return f; - } else { - return _gamma; - } - }; - - f.nodata = function(d) { - if (d != null) { - _nacol = chroma_1(d); - return f; - } else { - return _nacol; - } - }; - - return f; - }; - - function __range__(left, right, inclusive) { - var range = []; - var ascending = left < right; - var end = !inclusive ? right : ascending ? right + 1 : right - 1; - for (var i = left; ascending ? i < end : i > end; ascending ? i++ : i--) { - range.push(i); - } - return range; - } - - // - // interpolates between a set of colors uzing a bezier spline - // - - // @requires utils lab - - - - - var bezier = function(colors) { - var assign, assign$1, assign$2; - - var I, lab0, lab1, lab2; - colors = colors.map(function (c) { return new Color_1(c); }); - if (colors.length === 2) { - // linear interpolation - (assign = colors.map(function (c) { return c.lab(); }), lab0 = assign[0], lab1 = assign[1]); - I = function(t) { - var lab = ([0, 1, 2].map(function (i) { return lab0[i] + (t * (lab1[i] - lab0[i])); })); - return new Color_1(lab, 'lab'); - }; - } else if (colors.length === 3) { - // quadratic bezier interpolation - (assign$1 = colors.map(function (c) { return c.lab(); }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]); - I = function(t) { - var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t) * lab0[i]) + (2 * (1-t) * t * lab1[i]) + (t * t * lab2[i]); })); - return new Color_1(lab, 'lab'); - }; - } else if (colors.length === 4) { - // cubic bezier interpolation - var lab3; - (assign$2 = colors.map(function (c) { return c.lab(); }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]); - I = function(t) { - var lab = ([0, 1, 2].map(function (i) { return ((1-t)*(1-t)*(1-t) * lab0[i]) + (3 * (1-t) * (1-t) * t * lab1[i]) + (3 * (1-t) * t * t * lab2[i]) + (t*t*t * lab3[i]); })); - return new Color_1(lab, 'lab'); - }; - } else if (colors.length === 5) { - var I0 = bezier(colors.slice(0, 3)); - var I1 = bezier(colors.slice(2, 5)); - I = function(t) { - if (t < 0.5) { - return I0(t*2); - } else { - return I1((t-0.5)*2); - } - }; - } - return I; - }; - - var bezier_1 = function (colors) { - var f = bezier(colors); - f.scale = function () { return scale(f); }; - return f; - }; - - /* - * interpolates between a set of colors uzing a bezier spline - * blend mode formulas taken from http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/ - */ - - - - - var blend = function (bottom, top, mode) { - if (!blend[mode]) { - throw new Error('unknown blend mode ' + mode); - } - return blend[mode](bottom, top); - }; - - var blend_f = function (f) { return function (bottom,top) { - var c0 = chroma_1(top).rgb(); - var c1 = chroma_1(bottom).rgb(); - return chroma_1.rgb(f(c0, c1)); - }; }; - - var each = function (f) { return function (c0, c1) { - var out = []; - out[0] = f(c0[0], c1[0]); - out[1] = f(c0[1], c1[1]); - out[2] = f(c0[2], c1[2]); - return out; - }; }; - - var normal = function (a) { return a; }; - var multiply = function (a,b) { return a * b / 255; }; - var darken$1 = function (a,b) { return a > b ? b : a; }; - var lighten = function (a,b) { return a > b ? a : b; }; - var screen = function (a,b) { return 255 * (1 - (1-a/255) * (1-b/255)); }; - var overlay = function (a,b) { return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255 ) * ( 1 - b / 255 )); }; - var burn = function (a,b) { return 255 * (1 - (1 - b / 255) / (a/255)); }; - var dodge = function (a,b) { - if (a === 255) { return 255; } - a = 255 * (b / 255) / (1 - a / 255); - return a > 255 ? 255 : a - }; - - // # add = (a,b) -> - // # if (a + b > 255) then 255 else a + b - - blend.normal = blend_f(each(normal)); - blend.multiply = blend_f(each(multiply)); - blend.screen = blend_f(each(screen)); - blend.overlay = blend_f(each(overlay)); - blend.darken = blend_f(each(darken$1)); - blend.lighten = blend_f(each(lighten)); - blend.dodge = blend_f(each(dodge)); - blend.burn = blend_f(each(burn)); - // blend.add = blend_f(each(add)); - - var blend_1 = blend; - - // cubehelix interpolation - // based on D.A. Green "A colour scheme for the display of astronomical intensity images" - // http://astron-soc.in/bulletin/11June/289392011.pdf - - var type$k = utils.type; - var clip_rgb$3 = utils.clip_rgb; - var TWOPI$2 = utils.TWOPI; - var pow$6 = Math.pow; - var sin$2 = Math.sin; - var cos$3 = Math.cos; - - - var cubehelix = function(start, rotations, hue, gamma, lightness) { - if ( start === void 0 ) start=300; - if ( rotations === void 0 ) rotations=-1.5; - if ( hue === void 0 ) hue=1; - if ( gamma === void 0 ) gamma=1; - if ( lightness === void 0 ) lightness=[0,1]; - - var dh = 0, dl; - if (type$k(lightness) === 'array') { - dl = lightness[1] - lightness[0]; - } else { - dl = 0; - lightness = [lightness, lightness]; - } - - var f = function(fract) { - var a = TWOPI$2 * (((start+120)/360) + (rotations * fract)); - var l = pow$6(lightness[0] + (dl * fract), gamma); - var h = dh !== 0 ? hue[0] + (fract * dh) : hue; - var amp = (h * l * (1-l)) / 2; - var cos_a = cos$3(a); - var sin_a = sin$2(a); - var r = l + (amp * ((-0.14861 * cos_a) + (1.78277* sin_a))); - var g = l + (amp * ((-0.29227 * cos_a) - (0.90649* sin_a))); - var b = l + (amp * (+1.97294 * cos_a)); - return chroma_1(clip_rgb$3([r*255,g*255,b*255,1])); - }; - - f.start = function(s) { - if ((s == null)) { return start; } - start = s; - return f; - }; - - f.rotations = function(r) { - if ((r == null)) { return rotations; } - rotations = r; - return f; - }; - - f.gamma = function(g) { - if ((g == null)) { return gamma; } - gamma = g; - return f; - }; - - f.hue = function(h) { - if ((h == null)) { return hue; } - hue = h; - if (type$k(hue) === 'array') { - dh = hue[1] - hue[0]; - if (dh === 0) { hue = hue[1]; } - } else { - dh = 0; - } - return f; - }; - - f.lightness = function(h) { - if ((h == null)) { return lightness; } - if (type$k(h) === 'array') { - lightness = h; - dl = h[1] - h[0]; - } else { - lightness = [h,h]; - dl = 0; - } - return f; - }; - - f.scale = function () { return chroma_1.scale(f); }; - - f.hue(hue); - - return f; - }; - - var digits = '0123456789abcdef'; - - var floor$2 = Math.floor; - var random = Math.random; - - var random_1 = function () { - var code = '#'; - for (var i=0; i<6; i++) { - code += digits.charAt(floor$2(random() * 16)); - } - return new Color_1(code, 'hex'); - }; - - var log$1 = Math.log; - var pow$7 = Math.pow; - var floor$3 = Math.floor; - var abs = Math.abs; - - - var analyze = function (data, key) { - if ( key === void 0 ) key=null; - - var r = { - min: Number.MAX_VALUE, - max: Number.MAX_VALUE*-1, - sum: 0, - values: [], - count: 0 - }; - if (type(data) === 'object') { - data = Object.values(data); - } - data.forEach(function (val) { - if (key && type(val) === 'object') { val = val[key]; } - if (val !== undefined && val !== null && !isNaN(val)) { - r.values.push(val); - r.sum += val; - if (val < r.min) { r.min = val; } - if (val > r.max) { r.max = val; } - r.count += 1; - } - }); - - r.domain = [r.min, r.max]; - - r.limits = function (mode, num) { return limits(r, mode, num); }; - - return r; - }; - - - var limits = function (data, mode, num) { - if ( mode === void 0 ) mode='equal'; - if ( num === void 0 ) num=7; - - if (type(data) == 'array') { - data = analyze(data); - } - var min = data.min; - var max = data.max; - var values = data.values.sort(function (a,b) { return a-b; }); - - if (num === 1) { return [min,max]; } - - var limits = []; - - if (mode.substr(0,1) === 'c') { // continuous - limits.push(min); - limits.push(max); - } - - if (mode.substr(0,1) === 'e') { // equal interval - limits.push(min); - for (var i=1; i 0'); - } - var min_log = Math.LOG10E * log$1(min); - var max_log = Math.LOG10E * log$1(max); - limits.push(min); - for (var i$1=1; i$1 pb - var pr = p - pb; - limits.push((values[pb]*(1-pr)) + (values[pb+1]*pr)); - } - } - limits.push(max); - - } - - else if (mode.substr(0,1) === 'k') { // k-means clustering - /* - implementation based on - http://code.google.com/p/figue/source/browse/trunk/figue.js#336 - simplified for 1-d input values - */ - var cluster; - var n = values.length; - var assignments = new Array(n); - var clusterSizes = new Array(num); - var repeat = true; - var nb_iters = 0; - var centroids = null; - - // get seed values - centroids = []; - centroids.push(min); - for (var i$3=1; i$3 200) { - repeat = false; - } - } - - // finished k-means clustering - // the next part is borrowed from gabrielflor.it - var kClusters = {}; - for (var j$5=0; j$5 l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); - }; - - var sqrt$4 = Math.sqrt; - var atan2$2 = Math.atan2; - var abs$1 = Math.abs; - var cos$4 = Math.cos; - var PI$2 = Math.PI; - - var deltaE = function(a, b, L, C) { - if ( L === void 0 ) L=1; - if ( C === void 0 ) C=1; - - // Delta E (CMC) - // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CMC.html - a = new Color_1(a); - b = new Color_1(b); - var ref = Array.from(a.lab()); - var L1 = ref[0]; - var a1 = ref[1]; - var b1 = ref[2]; - var ref$1 = Array.from(b.lab()); - var L2 = ref$1[0]; - var a2 = ref$1[1]; - var b2 = ref$1[2]; - var c1 = sqrt$4((a1 * a1) + (b1 * b1)); - var c2 = sqrt$4((a2 * a2) + (b2 * b2)); - var sl = L1 < 16.0 ? 0.511 : (0.040975 * L1) / (1.0 + (0.01765 * L1)); - var sc = ((0.0638 * c1) / (1.0 + (0.0131 * c1))) + 0.638; - var h1 = c1 < 0.000001 ? 0.0 : (atan2$2(b1, a1) * 180.0) / PI$2; - while (h1 < 0) { h1 += 360; } - while (h1 >= 360) { h1 -= 360; } - var t = (h1 >= 164.0) && (h1 <= 345.0) ? (0.56 + abs$1(0.2 * cos$4((PI$2 * (h1 + 168.0)) / 180.0))) : (0.36 + abs$1(0.4 * cos$4((PI$2 * (h1 + 35.0)) / 180.0))); - var c4 = c1 * c1 * c1 * c1; - var f = sqrt$4(c4 / (c4 + 1900.0)); - var sh = sc * (((f * t) + 1.0) - f); - var delL = L1 - L2; - var delC = c1 - c2; - var delA = a1 - a2; - var delB = b1 - b2; - var dH2 = ((delA * delA) + (delB * delB)) - (delC * delC); - var v1 = delL / (L * sl); - var v2 = delC / (C * sc); - var v3 = sh; - return sqrt$4((v1 * v1) + (v2 * v2) + (dH2 / (v3 * v3))); - }; - - // simple Euclidean distance - var distance = function(a, b, mode) { - if ( mode === void 0 ) mode='lab'; - - // Delta E (CIE 1976) - // see http://www.brucelindbloom.com/index.html?Equations.html - a = new Color_1(a); - b = new Color_1(b); - var l1 = a.get(mode); - var l2 = b.get(mode); - var sum_sq = 0; - for (var i in l1) { - var d = (l1[i] || 0) - (l2[i] || 0); - sum_sq += d*d; - } - return Math.sqrt(sum_sq); - }; - - var valid = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - try { - new (Function.prototype.bind.apply( Color_1, [ null ].concat( args) )); - return true; - } catch (e) { - return false; - } - }; - - // some pre-defined color scales: - - - - - var scales = { - cool: function cool() { return scale([chroma_1.hsl(180,1,.9), chroma_1.hsl(250,.7,.4)]) }, - hot: function hot() { return scale(['#000','#f00','#ff0','#fff']).mode('rgb') } - }; - - /** - ColorBrewer colors for chroma.js - - Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The - Pennsylvania State University. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for the - specific language governing permissions and limitations under the License. - */ - - var colorbrewer = { - // sequential - 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'], - - // diverging - - 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'], - - // qualitative - - 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'], - }; - - // add lowercase aliases for case-insensitive matches - for (var i$1 = 0, list$1 = Object.keys(colorbrewer); i$1 < list$1.length; i$1 += 1) { - var key = list$1[i$1]; - - colorbrewer[key.toLowerCase()] = colorbrewer[key]; - } - - var colorbrewer_1 = colorbrewer; - - // feel free to comment out anything to rollup - // a smaller chroma.js built - - // io --> convert colors - - - - - - - - - - - - - - - - // operators --> modify existing Colors - - - - - - - - - - - // interpolators - - - - - - - - - - - // generators -- > create new colors - chroma_1.average = average; - chroma_1.bezier = bezier_1; - chroma_1.blend = blend_1; - chroma_1.cubehelix = cubehelix; - chroma_1.mix = chroma_1.interpolate = mix; - chroma_1.random = random_1; - chroma_1.scale = scale; - - // other utility methods - chroma_1.analyze = analyze_1.analyze; - chroma_1.contrast = contrast; - chroma_1.deltaE = deltaE; - chroma_1.distance = distance; - chroma_1.limits = analyze_1.limits; - chroma_1.valid = valid; - - // scale - chroma_1.scales = scales; - - // colors - chroma_1.colors = w3cx11_1; - chroma_1.brewer = colorbrewer_1; - - var chroma_js = chroma_1; - - return chroma_js; - -}))); -}); - -function generateColorVariables(key, format, colorStr, opacity, altFormats = []) { - const parsedColor = chroma(colorStr); - const alts = altFormats.reduce((a, alt) => { - a.push(...generateColorVariables(alt.id, alt.format, colorStr, opacity)); - return a; - }, []); - switch (format) { - case 'hex': - return [{ key, value: colorStr }, ...alts]; - case 'hsl': - return [ - { - key, - value: parsedColor.css('hsl'), - }, - ...alts, - ]; - case 'hsl-values': { - const hsl = parsedColor.hsl(); - const alpha = opacity ? `,${parsedColor.alpha()}` : ''; - const h = isNaN(hsl[0]) ? 0 : hsl[0]; - return [ - { - key, - value: `${h},${hsl[1] * 100}%,${hsl[2] * 100}%${alpha}`, - }, - ...alts, - ]; - } - case 'hsl-split': { - const hsl = parsedColor.hsl(); - const h = isNaN(hsl[0]) ? 0 : hsl[0]; - const out = [ - { - key: `${key}-h`, - value: h.toString(), - }, - { - key: `${key}-s`, - value: (hsl[1] * 100).toString() + '%', - }, - { - key: `${key}-l`, - value: (hsl[2] * 100).toString() + '%', - }, - ...alts, - ]; - if (opacity) - out.push({ - key: `${key}-a`, - value: parsedColor.alpha().toString(), - }); - return out; - } - case 'hsl-split-decimal': { - const hsl = parsedColor.hsl(); - const h = isNaN(hsl[0]) ? 0 : hsl[0]; - const out = [ - { - key: `${key}-h`, - value: h.toString(), - }, - { - key: `${key}-s`, - value: hsl[1].toString(), - }, - { - key: `${key}-l`, - value: hsl[2].toString(), - }, - ...alts, - ]; - if (opacity) - out.push({ - key: `${key}-a`, - value: parsedColor.alpha().toString(), - }); - return out; - } - case 'rgb': - return [ - { - key, - value: parsedColor.css(), - }, - ...alts, - ]; - case 'rgb-values': { - const rgb = parsedColor.rgb(); - const alpha = opacity ? `,${parsedColor.alpha()}` : ''; - return [ - { - key, - value: `${rgb[0]},${rgb[1]},${rgb[2]}${alpha}`, - }, - ...alts, - ]; - } - case 'rgb-split': { - const rgb = parsedColor.rgb(); - const out = [ - { - key: `${key}-r`, - value: rgb[0].toString(), - }, - { - key: `${key}-g`, - value: rgb[1].toString(), - }, - { - key: `${key}-b`, - value: rgb[2].toString(), - }, - ...alts, - ]; - if (opacity) - out.push({ - key: `${key}-a`, - value: parsedColor.alpha().toString(), - }); - return out; - } - } -} -function pushColors(arr, id, from, to, format, step, pad) { - const scale = chroma.scale([from.trim(), to.trim()]).domain([0, 100]); - for (let i = 0; i <= 100; i++) { - if (i % step === 0) { - const c = scale(i); - arr.push(...generateColorVariables(`${id}-${i.toString().padStart(pad, '0')}`, format, c.css(), c.alpha() !== 1)); - } - } -} -function getCSSVariables(settings, config, gradients, settingsManager) { - const vars = []; - const themedLight = []; - const themedDark = []; - const gradientCandidates = {}; - const gradientCandidatesLight = {}; - const gradientCandidatesDark = {}; - const seenGradientSections = new Set(); - for (const key in settings) { - const [sectionId, settingId, modifier] = key.split('@@'); - const section = config[sectionId]; - if (!section) - continue; - const setting = config[sectionId][settingId]; - if (!setting) - continue; - const value = settings[key]; - switch (setting.type) { - case SettingType.VARIABLE_NUMBER: - case SettingType.VARIABLE_NUMBER_SLIDER: { - const format = setting - .format; - const val = value !== undefined - ? value - : setting.default; - vars.push({ - key: setting.id, - value: `${val}${format || ''}`, - }); - continue; - } - case SettingType.VARIABLE_TEXT: - case SettingType.VARIABLE_SELECT: { - const format_text = setting; - let text = value !== undefined - ? value.toString() - : format_text.default.toString(); - if (format_text.quotes) { - if (text !== `""`) { - text = `'${text}'`; - } - else { - text = ``; - } - } - vars.push({ - key: setting.id, - value: text, - }); - continue; - } - case SettingType.VARIABLE_COLOR: { - if (!seenGradientSections.has(sectionId)) - seenGradientSections.add(sectionId); - const colorSetting = setting; - const color = value !== undefined ? value.toString() : colorSetting.default; - vars.push(...generateColorVariables(setting.id, colorSetting.format, color, colorSetting.opacity, colorSetting['alt-format'])); - generateColorVariables(setting.id, 'rgb', color, colorSetting.opacity).forEach((kv) => { - gradientCandidates[kv.key] = kv.value; - }); - continue; - } - case SettingType.VARIABLE_THEMED_COLOR: { - if (!seenGradientSections.has(sectionId)) - seenGradientSections.add(sectionId); - const colorSetting = setting; - const colorKey = modifier === 'light' ? 'default-light' : 'default-dark'; - const color = value !== undefined ? value.toString() : colorSetting[colorKey]; - (modifier === 'light' ? themedLight : themedDark).push(...generateColorVariables(setting.id, colorSetting.format, color, colorSetting.opacity, colorSetting['alt-format'])); - generateColorVariables(setting.id, 'rgb', color, colorSetting.opacity).forEach((kv) => { - if (modifier === 'light') { - gradientCandidatesLight[kv.key] = kv.value; - } - else { - gradientCandidatesDark[kv.key] = kv.value; - } - }); - continue; - } - } - } - seenGradientSections.forEach((sectionId) => { - const g = gradients[sectionId]; - if (!g) - return; - g.forEach((def) => { - var _a, _b, _c; - const { from, to, format, step, id, pad = 0 } = def; - if (gradientCandidatesLight[from]) { - const fromColor = gradientCandidatesLight[from]; - const toColor = gradientCandidatesLight[to] || - ((_a = settingsManager.plugin.getCSSVar(to).light) === null || _a === void 0 ? void 0 : _a.trim()); - if (toColor) { - pushColors(themedLight, id, fromColor, toColor, format, step, pad); - } - } - if (gradientCandidatesDark[from]) { - const fromColor = gradientCandidatesDark[from]; - const toColor = gradientCandidatesDark[to] || - ((_b = settingsManager.plugin.getCSSVar(to).dark) === null || _b === void 0 ? void 0 : _b.trim()); - if (toColor) { - pushColors(themedDark, id, fromColor, toColor, format, step, pad); - } - } - if (gradientCandidates[from]) { - const fromColor = gradientCandidates[from]; - const toColor = gradientCandidates[to] || - ((_c = settingsManager.plugin.getCSSVar(to).current) === null || _c === void 0 ? void 0 : _c.trim()); - if (toColor) { - pushColors(vars, id, fromColor, toColor, format, step, pad); - } - } - }); - }); - return [vars, themedLight, themedDark]; -} -class CSSSettingsManager { - constructor(plugin) { - this.config = {}; - this.gradients = {}; - this.plugin = plugin; - this.settings = {}; - this.styleTag = document.createElement('style'); - this.styleTag.id = 'css-settings-manager'; - document.getElementsByTagName('head')[0].appendChild(this.styleTag); - } - cleanup() { - this.styleTag.remove(); - this.removeClasses(); - } - save() { - return __awaiter(this, void 0, void 0, function* () { - yield this.plugin.saveData(this.settings); - this.setCSSVariables(); - }); - } - load() { - return __awaiter(this, void 0, void 0, function* () { - this.settings = Object.assign({}, yield this.plugin.loadData()); - }); - } - initClasses() { - Object.keys(this.config).forEach((section) => { - const config = this.config[section]; - Object.keys(config).forEach((settingId) => { - const setting = config[settingId]; - if (setting.type === SettingType.CLASS_TOGGLE) { - const classToggle = setting; - const value = this.getSetting(section, settingId); - if (value === true || - (value === undefined && classToggle.default === true)) { - document.body.classList.add(setting.id); - } - } - else if (setting.type === SettingType.CLASS_SELECT) { - const multiToggle = setting; - let value = this.getSetting(section, settingId); - if (value === undefined && !!multiToggle.default) { - value = multiToggle.default; - } - else if (value === undefined) { - value = 'none'; - } - if (value !== 'none') { - document.body.classList.add(value); - } - } - }); - }); - } - removeClasses() { - Object.keys(this.config).forEach((section) => { - const config = this.config[section]; - Object.keys(config).forEach((settingId) => { - const setting = config[settingId]; - if (setting.type === SettingType.CLASS_TOGGLE) { - document.body.classList.remove(setting.id); - } - else if (setting.type === SettingType.CLASS_SELECT) { - const multiToggle = setting; - multiToggle.options.forEach((v) => { - if (typeof v === 'string') { - document.body.classList.remove(v); - } - else { - document.body.classList.remove(v.value); - } - }); - } - }); - }); - } - setCSSVariables() { - const [vars, themedLight, themedDark] = getCSSVariables(this.settings, this.config, this.gradients, this); - this.styleTag.innerText = ` +var al=Object.create;var Kt=Object.defineProperty;var sl=Object.getOwnPropertyDescriptor;var ol=Object.getOwnPropertyNames;var ll=Object.getPrototypeOf,cl=Object.prototype.hasOwnProperty;var Zr=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),ul=(e,n)=>{for(var t in n)Kt(e,t,{get:n[t],enumerable:!0})},Zn=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of ol(n))!cl.call(e,i)&&i!==t&&Kt(e,i,{get:()=>n[i],enumerable:!(a=sl(n,i))||a.enumerable});return e};var Xt=(e,n,t)=>(t=e!=null?al(ll(e)):{},Zn(n||!e||!e.__esModule?Kt(t,"default",{value:e,enumerable:!0}):t,e)),fl=e=>Zn(Kt({},"__esModule",{value:!0}),e);var Jn=Zr((Jr,en)=>{(function(e,n){typeof Jr=="object"&&typeof en!="undefined"?en.exports=n():typeof define=="function"&&define.amd?define(n):e.chroma=n()})(Jr,function(){"use strict";for(var e=function(r,s,o){return s===void 0&&(s=0),o===void 0&&(o=1),ro?o:r},n=function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var s=0;s<=3;s++)s<3?((r[s]<0||r[s]>255)&&(r._clipped=!0),r[s]=e(r[s],0,255)):s===3&&(r[s]=e(r[s],0,1));return r},t={},a=0,i=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];a=3?Array.prototype.slice.call(r):c(r[0])=="object"&&s?s.split("").filter(function(o){return r[0][o]!==void 0}).map(function(o){return r[0][o]}):r[0]},p=function(r){if(r.length<2)return null;var s=r.length-1;return c(r[s])=="string"?r[s].toLowerCase():null},w=Math.PI,S={clip_rgb:n,limit:e,type:c,unpack:f,last:p,PI:w,TWOPI:w*2,PITHIRD:w/3,DEG2RAD:w/180,RAD2DEG:180/w},E={format:{},autodetect:[]},B=S.last,Y=S.clip_rgb,K=S.type,Q=function(){for(var s=[],o=arguments.length;o--;)s[o]=arguments[o];var g=this;if(K(s[0])==="object"&&s[0].constructor&&s[0].constructor===this.constructor)return s[0];var b=B(s),y=!1;if(!b){y=!0,E.sorted||(E.autodetect=E.autodetect.sort(function(R,O){return O.p-R.p}),E.sorted=!0);for(var d=0,A=E.autodetect;d4?r[4]:1;return y===1?[0,0,0,d]:[o>=1?0:255*(1-o)*(1-y),g>=1?0:255*(1-g)*(1-y),b>=1?0:255*(1-b)*(1-y),d]},Pe=xe,Qe=S.unpack,ie=S.type;L.prototype.cmyk=function(){return qe(this._rgb)},F.cmyk=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["cmyk"])))},E.format.cmyk=Pe,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=Qe(r,"cmyk"),ie(r)==="array"&&r.length===4)return"cmyk"}});var Tt=S.unpack,Ve=S.last,V=function(r){return Math.round(r*100)/100},M=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Tt(r,"hsla"),g=Ve(r)||"lsa";return o[0]=V(o[0]||0),o[1]=V(o[1]*100)+"%",o[2]=V(o[2]*100)+"%",g==="hsla"||o.length>3&&o[3]<1?(o[3]=o.length>3?o[3]:1,g="hsla"):o.length=3,g+"("+o.join(",")+")"},_=M,u=S.unpack,h=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=u(r,"rgba");var o=r[0],g=r[1],b=r[2];o/=255,g/=255,b/=255;var y=Math.min(o,g,b),d=Math.max(o,g,b),A=(d+y)/2,k,N;return d===y?(k=0,N=Number.NaN):k=A<.5?(d-y)/(d+y):(d-y)/(2-d-y),o==d?N=(g-b)/(d-y):g==d?N=2+(b-o)/(d-y):b==d&&(N=4+(o-g)/(d-y)),N*=60,N<0&&(N+=360),r.length>3&&r[3]!==void 0?[N,k,A,r[3]]:[N,k,A]},m=h,C=S.unpack,v=S.last,x=Math.round,T=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=C(r,"rgba"),g=v(r)||"rgb";return g.substr(0,3)=="hsl"?_(m(o),g):(o[0]=x(o[0]),o[1]=x(o[1]),o[2]=x(o[2]),(g==="rgba"||o.length>3&&o[3]<1)&&(o[3]=o.length>3?o[3]:1,g="rgba"),g+"("+o.slice(0,g==="rgb"?3:4).join(",")+")")},I=T,D=S.unpack,P=Math.round,G=function(){for(var r,s=[],o=arguments.length;o--;)s[o]=arguments[o];s=D(s,"hsl");var g=s[0],b=s[1],y=s[2],d,A,k;if(b===0)d=A=k=y*255;else{var N=[0,0,0],R=[0,0,0],O=y<.5?y*(1+b):y+b-y*b,j=2*y-O,H=g/360;N[0]=H+1/3,N[1]=H,N[2]=H-1/3;for(var X=0;X<3;X++)N[X]<0&&(N[X]+=1),N[X]>1&&(N[X]-=1),6*N[X]<1?R[X]=j+(O-j)*6*N[X]:2*N[X]<1?R[X]=O:3*N[X]<2?R[X]=j+(O-j)*(2/3-N[X])*6:R[X]=j;r=[P(R[0]*255),P(R[1]*255),P(R[2]*255)],d=r[0],A=r[1],k=r[2]}return s.length>3?[d,A,k,s[3]]:[d,A,k,1]},q=G,U=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,fe=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,le=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Oe=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ye=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Se=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ae=Math.round,Re=function(r){r=r.toLowerCase().trim();var s;if(E.format.named)try{return E.format.named(r)}catch(X){}if(s=r.match(U)){for(var o=s.slice(1,4),g=0;g<3;g++)o[g]=+o[g];return o[3]=1,o}if(s=r.match(fe)){for(var b=s.slice(1,5),y=0;y<4;y++)b[y]=+b[y];return b}if(s=r.match(le)){for(var d=s.slice(1,4),A=0;A<3;A++)d[A]=ae(d[A]*2.55);return d[3]=1,d}if(s=r.match(Oe)){for(var k=s.slice(1,5),N=0;N<3;N++)k[N]=ae(k[N]*2.55);return k[3]=+k[3],k}if(s=r.match(ye)){var R=s.slice(1,4);R[1]*=.01,R[2]*=.01;var O=q(R);return O[3]=1,O}if(s=r.match(Se)){var j=s.slice(1,4);j[1]*=.01,j[2]*=.01;var H=q(j);return H[3]=+s[4],H}};Re.test=function(r){return U.test(r)||fe.test(r)||le.test(r)||Oe.test(r)||ye.test(r)||Se.test(r)};var _e=Re,Ke=S.type;L.prototype.css=function(r){return I(this._rgb,r)},F.css=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["css"])))},E.format.css=_e,E.autodetect.push({p:5,test:function(r){for(var s=[],o=arguments.length-1;o-- >0;)s[o]=arguments[o+1];if(!s.length&&Ke(r)==="string"&&_e.test(r))return"css"}});var Le=S.unpack;E.format.gl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Le(r,"rgba");return o[0]*=255,o[1]*=255,o[2]*=255,o},F.gl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["gl"])))},L.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var et=S.unpack,gt=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=et(r,"rgb"),g=o[0],b=o[1],y=o[2],d=Math.min(g,b,y),A=Math.max(g,b,y),k=A-d,N=k*100/255,R=d/(255-k)*100,O;return k===0?O=Number.NaN:(g===A&&(O=(b-y)/k),b===A&&(O=2+(y-g)/k),y===A&&(O=4+(g-b)/k),O*=60,O<0&&(O+=360)),[O,N,R]},tt=gt,Ar=S.unpack,kr=Math.floor,Tr=function(){for(var r,s,o,g,b,y,d=[],A=arguments.length;A--;)d[A]=arguments[A];d=Ar(d,"hcg");var k=d[0],N=d[1],R=d[2],O,j,H;R=R*255;var X=N*255;if(N===0)O=j=H=R;else{k===360&&(k=0),k>360&&(k-=360),k<0&&(k+=360),k/=60;var ee=kr(k),Z=k-ee,se=R*(1-N),ge=se+X*(1-Z),Me=se+X*Z,Ie=se+X;switch(ee){case 0:r=[Ie,Me,se],O=r[0],j=r[1],H=r[2];break;case 1:s=[ge,Ie,se],O=s[0],j=s[1],H=s[2];break;case 2:o=[se,Ie,Me],O=o[0],j=o[1],H=o[2];break;case 3:g=[se,ge,Ie],O=g[0],j=g[1],H=g[2];break;case 4:b=[Me,se,Ie],O=b[0],j=b[1],H=b[2];break;case 5:y=[Ie,se,ge],O=y[0],j=y[1],H=y[2];break}}return[O,j,H,d.length>3?d[3]:1]},Lr=Tr,Mr=S.unpack,Ir=S.type;L.prototype.hcg=function(){return tt(this._rgb)},F.hcg=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hcg"])))},E.format.hcg=Lr,E.autodetect.push({p:1,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=Mr(r,"hcg"),Ir(r)==="array"&&r.length===3)return"hcg"}});var jt=S.unpack,Lt=S.last,Gt=Math.round,ja=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=jt(r,"rgba"),g=o[0],b=o[1],y=o[2],d=o[3],A=Lt(r)||"auto";d===void 0&&(d=1),A==="auto"&&(A=d<1?"rgba":"rgb"),g=Gt(g),b=Gt(b),y=Gt(y);var k=g<<16|b<<8|y,N="000000"+k.toString(16);N=N.substr(N.length-6);var R="0"+Gt(d*255).toString(16);switch(R=R.substr(R.length-2),A.toLowerCase()){case"rgba":return"#"+N+R;case"argb":return"#"+R+N;default:return"#"+N}},An=ja,Ga=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Ya=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Ua=function(r){if(r.match(Ga)){(r.length===4||r.length===7)&&(r=r.substr(1)),r.length===3&&(r=r.split(""),r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var s=parseInt(r,16),o=s>>16,g=s>>8&255,b=s&255;return[o,g,b,1]}if(r.match(Ya)){(r.length===5||r.length===9)&&(r=r.substr(1)),r.length===4&&(r=r.split(""),r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var y=parseInt(r,16),d=y>>24&255,A=y>>16&255,k=y>>8&255,N=Math.round((y&255)/255*100)/100;return[d,A,k,N]}throw new Error("unknown hex color: "+r)},kn=Ua,Wa=S.type;L.prototype.hex=function(r){return An(this._rgb,r)},F.hex=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hex"])))},E.format.hex=kn,E.autodetect.push({p:4,test:function(r){for(var s=[],o=arguments.length-1;o-- >0;)s[o]=arguments[o+1];if(!s.length&&Wa(r)==="string"&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var qa=S.unpack,Tn=S.TWOPI,za=Math.min,Ka=Math.sqrt,Xa=Math.acos,Qa=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=qa(r,"rgb"),g=o[0],b=o[1],y=o[2];g/=255,b/=255,y/=255;var d,A=za(g,b,y),k=(g+b+y)/3,N=k>0?1-A/k:0;return N===0?d=NaN:(d=(g-b+(g-y))/2,d/=Ka((g-b)*(g-b)+(g-y)*(b-y)),d=Xa(d),y>b&&(d=Tn-d),d/=Tn),[d*360,N,k]},Za=Qa,Ja=S.unpack,Fr=S.limit,pt=S.TWOPI,Nr=S.PITHIRD,ht=Math.cos,es=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=Ja(r,"hsi");var o=r[0],g=r[1],b=r[2],y,d,A;return isNaN(o)&&(o=0),isNaN(g)&&(g=0),o>360&&(o-=360),o<0&&(o+=360),o/=360,o<1/3?(A=(1-g)/3,y=(1+g*ht(pt*o)/ht(Nr-pt*o))/3,d=1-(A+y)):o<2/3?(o-=1/3,y=(1-g)/3,d=(1+g*ht(pt*o)/ht(Nr-pt*o))/3,A=1-(y+d)):(o-=2/3,d=(1-g)/3,A=(1+g*ht(pt*o)/ht(Nr-pt*o))/3,y=1-(d+A)),y=Fr(b*y*3),d=Fr(b*d*3),A=Fr(b*A*3),[y*255,d*255,A*255,r.length>3?r[3]:1]},ts=es,rs=S.unpack,ns=S.type;L.prototype.hsi=function(){return Za(this._rgb)},F.hsi=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hsi"])))},E.format.hsi=ts,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=rs(r,"hsi"),ns(r)==="array"&&r.length===3)return"hsi"}});var is=S.unpack,as=S.type;L.prototype.hsl=function(){return m(this._rgb)},F.hsl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hsl"])))},E.format.hsl=q,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=is(r,"hsl"),as(r)==="array"&&r.length===3)return"hsl"}});var ss=S.unpack,os=Math.min,ls=Math.max,cs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=ss(r,"rgb");var o=r[0],g=r[1],b=r[2],y=os(o,g,b),d=ls(o,g,b),A=d-y,k,N,R;return R=d/255,d===0?(k=Number.NaN,N=0):(N=A/d,o===d&&(k=(g-b)/A),g===d&&(k=2+(b-o)/A),b===d&&(k=4+(o-g)/A),k*=60,k<0&&(k+=360)),[k,N,R]},us=cs,fs=S.unpack,gs=Math.floor,ps=function(){for(var r,s,o,g,b,y,d=[],A=arguments.length;A--;)d[A]=arguments[A];d=fs(d,"hsv");var k=d[0],N=d[1],R=d[2],O,j,H;if(R*=255,N===0)O=j=H=R;else{k===360&&(k=0),k>360&&(k-=360),k<0&&(k+=360),k/=60;var X=gs(k),ee=k-X,Z=R*(1-N),se=R*(1-N*ee),ge=R*(1-N*(1-ee));switch(X){case 0:r=[R,ge,Z],O=r[0],j=r[1],H=r[2];break;case 1:s=[se,R,Z],O=s[0],j=s[1],H=s[2];break;case 2:o=[Z,R,ge],O=o[0],j=o[1],H=o[2];break;case 3:g=[Z,se,R],O=g[0],j=g[1],H=g[2];break;case 4:b=[ge,Z,R],O=b[0],j=b[1],H=b[2];break;case 5:y=[R,Z,se],O=y[0],j=y[1],H=y[2];break}}return[O,j,H,d.length>3?d[3]:1]},hs=ps,ds=S.unpack,vs=S.type;L.prototype.hsv=function(){return us(this._rgb)},F.hsv=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hsv"])))},E.format.hsv=hs,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=ds(r,"hsv"),vs(r)==="array"&&r.length===3)return"hsv"}});var Be={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ms=S.unpack,Ln=Math.pow,bs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=ms(r,"rgb"),g=o[0],b=o[1],y=o[2],d=ys(g,b,y),A=d[0],k=d[1],N=d[2],R=116*k-16;return[R<0?0:R,500*(A-k),200*(k-N)]},Or=function(r){return(r/=255)<=.04045?r/12.92:Ln((r+.055)/1.055,2.4)},Dr=function(r){return r>Be.t3?Ln(r,1/3):r/Be.t2+Be.t0},ys=function(r,s,o){r=Or(r),s=Or(s),o=Or(o);var g=Dr((.4124564*r+.3575761*s+.1804375*o)/Be.Xn),b=Dr((.2126729*r+.7151522*s+.072175*o)/Be.Yn),y=Dr((.0193339*r+.119192*s+.9503041*o)/Be.Zn);return[g,b,y]},Mn=bs,Ss=S.unpack,Cs=Math.pow,xs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=Ss(r,"lab");var o=r[0],g=r[1],b=r[2],y,d,A,k,N,R;return d=(o+16)/116,y=isNaN(g)?d:d+g/500,A=isNaN(b)?d:d-b/200,d=Be.Yn*$r(d),y=Be.Xn*$r(y),A=Be.Zn*$r(A),k=Rr(3.2404542*y-1.5371385*d-.4985314*A),N=Rr(-.969266*y+1.8760108*d+.041556*A),R=Rr(.0556434*y-.2040259*d+1.0572252*A),[k,N,R,r.length>3?r[3]:1]},Rr=function(r){return 255*(r<=.00304?12.92*r:1.055*Cs(r,1/2.4)-.055)},$r=function(r){return r>Be.t1?r*r*r:Be.t2*(r-Be.t0)},In=xs,ws=S.unpack,Es=S.type;L.prototype.lab=function(){return Mn(this._rgb)},F.lab=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["lab"])))},E.format.lab=In,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=ws(r,"lab"),Es(r)==="array"&&r.length===3)return"lab"}});var _s=S.unpack,As=S.RAD2DEG,ks=Math.sqrt,Ts=Math.atan2,Ls=Math.round,Ms=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=_s(r,"lab"),g=o[0],b=o[1],y=o[2],d=ks(b*b+y*y),A=(Ts(y,b)*As+360)%360;return Ls(d*1e4)===0&&(A=Number.NaN),[g,d,A]},Is=Ms,Fs=S.unpack,Ns=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Fs(r,"rgb"),g=o[0],b=o[1],y=o[2],d=Mn(g,b,y),A=d[0],k=d[1],N=d[2];return Is(A,k,N)},Fn=Ns,Os=S.unpack,Ds=S.DEG2RAD,Rs=Math.sin,$s=Math.cos,Ps=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Os(r,"lch"),g=o[0],b=o[1],y=o[2];return isNaN(y)&&(y=0),y=y*Ds,[g,$s(y)*b,Rs(y)*b]},Vs=Ps,Bs=S.unpack,Hs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=Bs(r,"lch");var o=r[0],g=r[1],b=r[2],y=Vs(o,g,b),d=y[0],A=y[1],k=y[2],N=In(d,A,k),R=N[0],O=N[1],j=N[2];return[R,O,j,r.length>3?r[3]:1]},Nn=Hs,js=S.unpack,Gs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=js(r,"hcl").reverse();return Nn.apply(void 0,o)},Ys=Gs,Us=S.unpack,Ws=S.type;L.prototype.lch=function(){return Fn(this._rgb)},L.prototype.hcl=function(){return Fn(this._rgb).reverse()},F.lch=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["lch"])))},F.hcl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hcl"])))},E.format.lch=Nn,E.format.hcl=Ys,["lch","hcl"].forEach(function(r){return E.autodetect.push({p:2,test:function(){for(var s=[],o=arguments.length;o--;)s[o]=arguments[o];if(s=Us(s,r),Ws(s)==="array"&&s.length===3)return r}})});var qs={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"},dt=qs,zs=S.type;L.prototype.name=function(){for(var r=An(this._rgb,"rgb"),s=0,o=Object.keys(dt);s0;)s[o]=arguments[o+1];if(!s.length&&zs(r)==="string"&&dt[r.toLowerCase()])return"named"}});var Ks=S.unpack,Xs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Ks(r,"rgb"),g=o[0],b=o[1],y=o[2];return(g<<16)+(b<<8)+y},Qs=Xs,Zs=S.type,Js=function(r){if(Zs(r)=="number"&&r>=0&&r<=16777215){var s=r>>16,o=r>>8&255,g=r&255;return[s,o,g,1]}throw new Error("unknown num color: "+r)},eo=Js,to=S.type;L.prototype.num=function(){return Qs(this._rgb)},F.num=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["num"])))},E.format.num=eo,E.autodetect.push({p:5,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r.length===1&&to(r[0])==="number"&&r[0]>=0&&r[0]<=16777215)return"num"}});var On=S.unpack,Dn=S.type,Rn=Math.round;L.prototype.rgb=function(r){return r===void 0&&(r=!0),r===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Rn)},L.prototype.rgba=function(r){return r===void 0&&(r=!0),this._rgb.slice(0,4).map(function(s,o){return o<3?r===!1?s:Rn(s):s})},F.rgb=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["rgb"])))},E.format.rgb=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=On(r,"rgba");return o[3]===void 0&&(o[3]=1),o},E.autodetect.push({p:3,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=On(r,"rgba"),Dn(r)==="array"&&(r.length===3||r.length===4&&Dn(r[3])=="number"&&r[3]>=0&&r[3]<=1))return"rgb"}});var Yt=Math.log,ro=function(r){var s=r/100,o,g,b;return s<66?(o=255,g=-155.25485562709179-.44596950469579133*(g=s-2)+104.49216199393888*Yt(g),b=s<20?0:-254.76935184120902+.8274096064007395*(b=s-10)+115.67994401066147*Yt(b)):(o=351.97690566805693+.114206453784165*(o=s-55)-40.25366309332127*Yt(o),g=325.4494125711974+.07943456536662342*(g=s-50)-28.0852963507957*Yt(g),b=255),[o,g,b,1]},$n=ro,no=S.unpack,io=Math.round,ao=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];for(var o=no(r,"rgb"),g=o[0],b=o[2],y=1e3,d=4e4,A=.4,k;d-y>A;){k=(d+y)*.5;var N=$n(k);N[2]/N[0]>=b/g?d=k:y=k}return io(k)},so=ao;L.prototype.temp=L.prototype.kelvin=L.prototype.temperature=function(){return so(this._rgb)},F.temp=F.kelvin=F.temperature=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["temp"])))},E.format.temp=E.format.kelvin=E.format.temperature=$n;var oo=S.type;L.prototype.alpha=function(r,s){return s===void 0&&(s=!1),r!==void 0&&oo(r)==="number"?s?(this._rgb[3]=r,this):new L([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},L.prototype.clipped=function(){return this._rgb._clipped||!1},L.prototype.darken=function(r){r===void 0&&(r=1);var s=this,o=s.lab();return o[0]-=Be.Kn*r,new L(o,"lab").alpha(s.alpha(),!0)},L.prototype.brighten=function(r){return r===void 0&&(r=1),this.darken(-r)},L.prototype.darker=L.prototype.darken,L.prototype.brighter=L.prototype.brighten,L.prototype.get=function(r){var s=r.split("."),o=s[0],g=s[1],b=this[o]();if(g){var y=o.indexOf(g);if(y>-1)return b[y];throw new Error("unknown channel "+g+" in mode "+o)}else return b};var lo=S.type,co=Math.pow,uo=1e-7,fo=20;L.prototype.luminance=function(r){if(r!==void 0&&lo(r)==="number"){if(r===0)return new L([0,0,0,this._rgb[3]],"rgb");if(r===1)return new L([255,255,255,this._rgb[3]],"rgb");var s=this.luminance(),o="rgb",g=fo,b=function(d,A){var k=d.interpolate(A,.5,o),N=k.luminance();return Math.abs(r-N)r?b(d,k):b(k,A)},y=(s>r?b(new L([0,0,0]),this):b(this,new L([255,255,255]))).rgb();return new L(y.concat([this._rgb[3]]))}return go.apply(void 0,this._rgb.slice(0,3))};var go=function(r,s,o){return r=Pr(r),s=Pr(s),o=Pr(o),.2126*r+.7152*s+.0722*o},Pr=function(r){return r/=255,r<=.03928?r/12.92:co((r+.055)/1.055,2.4)},He={},Pn=S.type,Vn=function(r,s,o){o===void 0&&(o=.5);for(var g=[],b=arguments.length-3;b-- >0;)g[b]=arguments[b+3];var y=g[0]||"lrgb";if(!He[y]&&!g.length&&(y=Object.keys(He)[0]),!He[y])throw new Error("interpolation mode "+y+" is not defined");return Pn(r)!=="object"&&(r=new L(r)),Pn(s)!=="object"&&(s=new L(s)),He[y](r,s,o).alpha(r.alpha()+o*(s.alpha()-r.alpha()))};L.prototype.mix=L.prototype.interpolate=function(r,s){s===void 0&&(s=.5);for(var o=[],g=arguments.length-2;g-- >0;)o[g]=arguments[g+2];return Vn.apply(void 0,[this,r,s].concat(o))},L.prototype.premultiply=function(r){r===void 0&&(r=!1);var s=this._rgb,o=s[3];return r?(this._rgb=[s[0]*o,s[1]*o,s[2]*o,o],this):new L([s[0]*o,s[1]*o,s[2]*o,o],"rgb")},L.prototype.saturate=function(r){r===void 0&&(r=1);var s=this,o=s.lch();return o[1]+=Be.Kn*r,o[1]<0&&(o[1]=0),new L(o,"lch").alpha(s.alpha(),!0)},L.prototype.desaturate=function(r){return r===void 0&&(r=1),this.saturate(-r)};var Bn=S.type;L.prototype.set=function(r,s,o){o===void 0&&(o=!1);var g=r.split("."),b=g[0],y=g[1],d=this[b]();if(y){var A=b.indexOf(y);if(A>-1){if(Bn(s)=="string")switch(s.charAt(0)){case"+":d[A]+=+s;break;case"-":d[A]+=+s;break;case"*":d[A]*=+s.substr(1);break;case"/":d[A]/=+s.substr(1);break;default:d[A]=+s}else if(Bn(s)==="number")d[A]=s;else throw new Error("unsupported value for Color.set");var k=new L(d,b);return o?(this._rgb=k._rgb,this):k}throw new Error("unknown channel "+y+" in mode "+b)}else return d};var po=function(r,s,o){var g=r._rgb,b=s._rgb;return new L(g[0]+o*(b[0]-g[0]),g[1]+o*(b[1]-g[1]),g[2]+o*(b[2]-g[2]),"rgb")};He.rgb=po;var Vr=Math.sqrt,vt=Math.pow,ho=function(r,s,o){var g=r._rgb,b=g[0],y=g[1],d=g[2],A=s._rgb,k=A[0],N=A[1],R=A[2];return new L(Vr(vt(b,2)*(1-o)+vt(k,2)*o),Vr(vt(y,2)*(1-o)+vt(N,2)*o),Vr(vt(d,2)*(1-o)+vt(R,2)*o),"rgb")};He.lrgb=ho;var vo=function(r,s,o){var g=r.lab(),b=s.lab();return new L(g[0]+o*(b[0]-g[0]),g[1]+o*(b[1]-g[1]),g[2]+o*(b[2]-g[2]),"lab")};He.lab=vo;var Mt=function(r,s,o,g){var b,y,d,A;g==="hsl"?(d=r.hsl(),A=s.hsl()):g==="hsv"?(d=r.hsv(),A=s.hsv()):g==="hcg"?(d=r.hcg(),A=s.hcg()):g==="hsi"?(d=r.hsi(),A=s.hsi()):(g==="lch"||g==="hcl")&&(g="hcl",d=r.hcl(),A=s.hcl());var k,N,R,O,j,H;g.substr(0,1)==="h"&&(b=d,k=b[0],R=b[1],j=b[2],y=A,N=y[0],O=y[1],H=y[2]);var X,ee,Z,se;return!isNaN(k)&&!isNaN(N)?(N>k&&N-k>180?se=N-(k+360):N180?se=N+360-k:se=N-k,ee=k+o*se):isNaN(k)?isNaN(N)?ee=Number.NaN:(ee=N,(j==1||j==0)&&g!="hsv"&&(X=O)):(ee=k,(H==1||H==0)&&g!="hsv"&&(X=R)),X===void 0&&(X=R+o*(O-R)),Z=j+o*(H-j),new L([ee,X,Z],g)},Hn=function(r,s,o){return Mt(r,s,o,"lch")};He.lch=Hn,He.hcl=Hn;var mo=function(r,s,o){var g=r.num(),b=s.num();return new L(g+o*(b-g),"num")};He.num=mo;var bo=function(r,s,o){return Mt(r,s,o,"hcg")};He.hcg=bo;var yo=function(r,s,o){return Mt(r,s,o,"hsi")};He.hsi=yo;var So=function(r,s,o){return Mt(r,s,o,"hsl")};He.hsl=So;var Co=function(r,s,o){return Mt(r,s,o,"hsv")};He.hsv=Co;var xo=S.clip_rgb,Br=Math.pow,Hr=Math.sqrt,jr=Math.PI,jn=Math.cos,Gn=Math.sin,wo=Math.atan2,Eo=function(r,s,o){s===void 0&&(s="lrgb"),o===void 0&&(o=null);var g=r.length;o||(o=Array.from(new Array(g)).map(function(){return 1}));var b=g/o.reduce(function(ee,Z){return ee+Z});if(o.forEach(function(ee,Z){o[Z]*=b}),r=r.map(function(ee){return new L(ee)}),s==="lrgb")return _o(r,o);for(var y=r.shift(),d=y.get(s),A=[],k=0,N=0,R=0;R=360;)X-=360;d[H]=X}else d[H]=d[H]/A[H];return j/=g,new L(d,s).alpha(j>.99999?1:j,!0)},_o=function(r,s){for(var o=r.length,g=[0,0,0,0],b=0;b.9999999&&(g[3]=1),new L(xo(g))},mt=S.type,Ao=Math.pow,Ut=function(r){var s="rgb",o=F("#ccc"),g=0,b=[0,1],y=[],d=[0,0],A=!1,k=[],N=!1,R=0,O=1,j=!1,H={},X=!0,ee=1,Z=function($){if($=$||["#fff","#000"],$&&mt($)==="string"&&F.brewer&&F.brewer[$.toLowerCase()]&&($=F.brewer[$.toLowerCase()]),mt($)==="array"){$.length===1&&($=[$[0],$[0]]),$=$.slice(0);for(var z=0;z<$.length;z++)$[z]=F($[z]);y.length=0;for(var te=0;te<$.length;te++)y.push(te/($.length-1))}return Ue(),k=$},se=function($){if(A!=null){for(var z=A.length-1,te=0;te=A[te];)te++;return te-1}return 0},ge=function($){return $},Me=function($){return $},Ie=function($,z){var te,J;if(z==null&&(z=!1),isNaN($)||$===null)return o;if(z)J=$;else if(A&&A.length>2){var je=se($);J=je/(A.length-2)}else O!==R?J=($-R)/(O-R):J=1;J=Me(J),z||(J=ge(J)),ee!==1&&(J=Ao(J,ee)),J=d[0]+J*(1-d[0]-d[1]),J=Math.min(1,Math.max(0,J));var be=Math.floor(J*1e4);if(X&&H[be])te=H[be];else{if(mt(k)==="array")for(var ce=0;ce=ue&&ce===y.length-1){te=k[ce];break}if(J>ue&&J2){var ce=$.map(function(we,pe){return pe/($.length-1)}),ue=$.map(function(we){return(we-R)/(O-R)});ue.every(function(we,pe){return ce[pe]===we})||(Me=function(we){if(we<=0||we>=1)return we;for(var pe=0;we>=ue[pe+1];)pe++;var it=(we-ue[pe])/(ue[pe+1]-ue[pe]),bt=ce[pe]+it*(ce[pe+1]-ce[pe]);return bt})}}return b=[R,O],ne},ne.mode=function($){return arguments.length?(s=$,Ue(),ne):s},ne.range=function($,z){return Z($,z),ne},ne.out=function($){return N=$,ne},ne.spread=function($){return arguments.length?(g=$,ne):g},ne.correctLightness=function($){return $==null&&($=!0),j=$,Ue(),j?ge=function(z){for(var te=Ie(0,!0).lab()[0],J=Ie(1,!0).lab()[0],je=te>J,be=Ie(z,!0).lab()[0],ce=te+(J-te)*z,ue=be-ce,we=0,pe=1,it=20;Math.abs(ue)>.01&&it-- >0;)(function(){return je&&(ue*=-1),ue<0?(we=z,z+=(pe-z)*.5):(pe=z,z+=(we-z)*.5),be=Ie(z,!0).lab()[0],ue=be-ce})();return z}:ge=function(z){return z},ne},ne.padding=function($){return $!=null?(mt($)==="number"&&($=[$,$]),d=$,ne):d},ne.colors=function($,z){arguments.length<2&&(z="hex");var te=[];if(arguments.length===0)te=k.slice(0);else if($===1)te=[ne(.5)];else if($>1){var J=b[0],je=b[1]-J;te=ko(0,$,!1).map(function(pe){return ne(J+pe/($-1)*je)})}else{r=[];var be=[];if(A&&A.length>2)for(var ce=1,ue=A.length,we=1<=ue;we?ceue;we?ce++:ce--)be.push((A[ce-1]+A[ce])*.5);else be=b;te=be.map(function(pe){return ne(pe)})}return F[z]&&(te=te.map(function(pe){return pe[z]()})),te},ne.cache=function($){return $!=null?(X=$,ne):X},ne.gamma=function($){return $!=null?(ee=$,ne):ee},ne.nodata=function($){return $!=null?(o=F($),ne):o},ne};function ko(r,s,o){for(var g=[],b=ry;b?d++:d--)g.push(d);return g}var Gr=function(r){var s,o,g,b,y,d,A;if(r=r.map(function(O){return new L(O)}),r.length===2)s=r.map(function(O){return O.lab()}),y=s[0],d=s[1],b=function(O){var j=[0,1,2].map(function(H){return y[H]+O*(d[H]-y[H])});return new L(j,"lab")};else if(r.length===3)o=r.map(function(O){return O.lab()}),y=o[0],d=o[1],A=o[2],b=function(O){var j=[0,1,2].map(function(H){return(1-O)*(1-O)*y[H]+2*(1-O)*O*d[H]+O*O*A[H]});return new L(j,"lab")};else if(r.length===4){var k;g=r.map(function(O){return O.lab()}),y=g[0],d=g[1],A=g[2],k=g[3],b=function(O){var j=[0,1,2].map(function(H){return(1-O)*(1-O)*(1-O)*y[H]+3*(1-O)*(1-O)*O*d[H]+3*(1-O)*O*O*A[H]+O*O*O*k[H]});return new L(j,"lab")}}else if(r.length===5){var N=Gr(r.slice(0,3)),R=Gr(r.slice(2,5));b=function(O){return O<.5?N(O*2):R((O-.5)*2)}}return b},To=function(r){var s=Gr(r);return s.scale=function(){return Ut(s)},s},ze=function(r,s,o){if(!ze[o])throw new Error("unknown blend mode "+o);return ze[o](r,s)},rt=function(r){return function(s,o){var g=F(o).rgb(),b=F(s).rgb();return F.rgb(r(g,b))}},nt=function(r){return function(s,o){var g=[];return g[0]=r(s[0],o[0]),g[1]=r(s[1],o[1]),g[2]=r(s[2],o[2]),g}},Lo=function(r){return r},Mo=function(r,s){return r*s/255},Io=function(r,s){return r>s?s:r},Fo=function(r,s){return r>s?r:s},No=function(r,s){return 255*(1-(1-r/255)*(1-s/255))},Oo=function(r,s){return s<128?2*r*s/255:255*(1-2*(1-r/255)*(1-s/255))},Do=function(r,s){return 255*(1-(1-s/255)/(r/255))},Ro=function(r,s){return r===255?255:(r=255*(s/255)/(1-r/255),r>255?255:r)};ze.normal=rt(nt(Lo)),ze.multiply=rt(nt(Mo)),ze.screen=rt(nt(No)),ze.overlay=rt(nt(Oo)),ze.darken=rt(nt(Io)),ze.lighten=rt(nt(Fo)),ze.dodge=rt(nt(Ro)),ze.burn=rt(nt(Do));for(var $o=ze,Yr=S.type,Po=S.clip_rgb,Vo=S.TWOPI,Bo=Math.pow,Ho=Math.sin,jo=Math.cos,Go=function(r,s,o,g,b){r===void 0&&(r=300),s===void 0&&(s=-1.5),o===void 0&&(o=1),g===void 0&&(g=1),b===void 0&&(b=[0,1]);var y=0,d;Yr(b)==="array"?d=b[1]-b[0]:(d=0,b=[b,b]);var A=function(k){var N=Vo*((r+120)/360+s*k),R=Bo(b[0]+d*k,g),O=y!==0?o[0]+k*y:o,j=O*R*(1-R)/2,H=jo(N),X=Ho(N),ee=R+j*(-.14861*H+1.78277*X),Z=R+j*(-.29227*H-.90649*X),se=R+j*(1.97294*H);return F(Po([ee*255,Z*255,se*255,1]))};return A.start=function(k){return k==null?r:(r=k,A)},A.rotations=function(k){return k==null?s:(s=k,A)},A.gamma=function(k){return k==null?g:(g=k,A)},A.hue=function(k){return k==null?o:(o=k,Yr(o)==="array"?(y=o[1]-o[0],y===0&&(o=o[1])):y=0,A)},A.lightness=function(k){return k==null?b:(Yr(k)==="array"?(b=k,d=k[1]-k[0]):(b=[k,k],d=0),A)},A.scale=function(){return F.scale(A)},A.hue(o),A},Yo="0123456789abcdef",Uo=Math.floor,Wo=Math.random,qo=function(){for(var r="#",s=0;s<6;s++)r+=Yo.charAt(Uo(Wo()*16));return new L(r,"hex")},Yn=Math.log,zo=Math.pow,Ko=Math.floor,Xo=Math.abs,Un=function(r,s){s===void 0&&(s=null);var o={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return c(r)==="object"&&(r=Object.values(r)),r.forEach(function(g){s&&c(g)==="object"&&(g=g[s]),g!=null&&!isNaN(g)&&(o.values.push(g),o.sum+=g,go.max&&(o.max=g),o.count+=1)}),o.domain=[o.min,o.max],o.limits=function(g,b){return Wn(o,g,b)},o},Wn=function(r,s,o){s===void 0&&(s="equal"),o===void 0&&(o=7),c(r)=="array"&&(r=Un(r));var g=r.min,b=r.max,y=r.values.sort(function(Xr,Qr){return Xr-Qr});if(o===1)return[g,b];var d=[];if(s.substr(0,1)==="c"&&(d.push(g),d.push(b)),s.substr(0,1)==="e"){d.push(g);for(var A=1;A 0");var k=Math.LOG10E*Yn(g),N=Math.LOG10E*Yn(b);d.push(g);for(var R=1;R200&&(Me=!1)}for(var It={},qr=0;qrg?(o+.05)/(g+.05):(g+.05)/(o+.05)},Wt=Math.sqrt,Zo=Math.atan2,zn=Math.abs,Kn=Math.cos,Ur=Math.PI,Jo=function(r,s,o,g){o===void 0&&(o=1),g===void 0&&(g=1),r=new L(r),s=new L(s);for(var b=Array.from(r.lab()),y=b[0],d=b[1],A=b[2],k=Array.from(s.lab()),N=k[0],R=k[1],O=k[2],j=Wt(d*d+A*A),H=Wt(R*R+O*O),X=y<16?.511:.040975*y/(1+.01765*y),ee=.0638*j/(1+.0131*j)+.638,Z=j<1e-6?0:Zo(A,d)*180/Ur;Z<0;)Z+=360;for(;Z>=360;)Z-=360;var se=Z>=164&&Z<=345?.56+zn(.2*Kn(Ur*(Z+168)/180)):.36+zn(.4*Kn(Ur*(Z+35)/180)),ge=j*j*j*j,Me=Wt(ge/(ge+1900)),Ie=ee*(Me*se+1-Me),Ue=y-N,ne=j-H,$=d-R,z=A-O,te=$*$+z*z-ne*ne,J=Ue/(o*X),je=ne/(g*ee),be=Ie;return Wt(J*J+je*je+te/(be*be))},el=function(r,s,o){o===void 0&&(o="lab"),r=new L(r),s=new L(s);var g=r.get(o),b=s.get(o),y=0;for(var d in g){var A=(g[d]||0)-(b[d]||0);y+=A*A}return Math.sqrt(y)},tl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];try{return new(Function.prototype.bind.apply(L,[null].concat(r))),!0}catch(o){return!1}},rl={cool:function(){return Ut([F.hsl(180,1,.9),F.hsl(250,.7,.4)])},hot:function(){return Ut(["#000","#f00","#ff0","#fff"],[0,.25,.75,1]).mode("rgb")}},qt={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"]},Wr=0,Xn=Object.keys(qt);Wr{((e,n)=>{typeof define=="function"&&define.amd?define([],n):typeof er=="object"&&er.exports?er.exports=n():e.fuzzysort=n()})(_i,e=>{"use strict";var n=(V,M)=>{if(V=="farzher")return{target:"farzher was here (^-^*)/",score:0,_indexes:[0]};if(!V||!M)return ie;var _=w(V);Te(M)||(M=p(M));var u=_.bitflags;return(u&M._bitflags)!==u?ie:E(_,M)},t=(V,M,_)=>{if(V=="farzher")return[{target:"farzher was here (^-^*)/",score:0,_indexes:[0],obj:M?M[0]:ie}];if(!V)return _&&_.all?S(V,M,_):Qe;var u=w(V),h=u.bitflags,m=u.containsSpace,C=_&&_.threshold||Pe,v=_&&_.limit||xe,x=0,T=0,I=M.length;if(_&&_.key)for(var D=_.key,P=0;PVe.peek().score&&Ve.replaceTop(U))))}}else if(_&&_.keys)for(var fe=_.scoreFn||Ye,le=_.keys,Oe=le.length,P=0;PVe.peek().score&&Ve.replaceTop(ye))))}else for(var P=0;PVe.peek().score&&Ve.replaceTop(U))))}}if(x===0)return Qe;for(var Re=new Array(x),P=x-1;P>=0;--P)Re[P]=Ve.poll();return Re.total=x+T,Re},a=(V,M,_)=>{if(typeof M=="function")return i(V,M);if(V===ie)return ie;M===void 0&&(M=""),_===void 0&&(_="");var u="",h=0,m=!1,C=V.target,v=C.length,x=V._indexes;x=x.slice(0,x.len).sort((D,P)=>D-P);for(var T=0;T{if(T===ie)return ie;var _=T.target,u=_.length,h=T._indexes;h=h.slice(0,h.len).sort((P,G)=>P-G);for(var m="",C=0,v=0,x=!1,T=[],I=0;IV._indexes.slice(0,V._indexes.len).sort((M,_)=>M-_),c=V=>{typeof V!="string"&&(V="");var M=Y(V);return{target:V,_targetLower:M._lower,_targetLowerCodes:M.lowerCodes,_nextBeginningIndexes:ie,_bitflags:M.bitflags,score:ie,_indexes:[0],obj:ie}},f=V=>{typeof V!="string"&&(V=""),V=V.trim();var M=Y(V),_=[];if(M.containsSpace){var u=V.split(/\s+/);u=[...new Set(u)];for(var h=0;h{if(V.length>999)return c(V);var M=re.get(V);return M!==void 0||(M=c(V),re.set(V,M)),M},w=V=>{if(V.length>999)return f(V);var M=F.get(V);return M!==void 0||(M=f(V),F.set(V,M)),M},S=(V,M,_)=>{var u=[];u.total=M.length;var h=_&&_.limit||xe;if(_&&_.key)for(var m=0;m=h)return u}}else if(_&&_.keys)for(var m=0;m=0;--I){var v=qe(C,_.keys[I]);if(!v){T[I]=ie;continue}Te(v)||(v=p(v)),v.score=Pe,v._indexes.len=0,T[I]=v}if(T.obj=C,T.score=Pe,u.push(T),u.length>=h)return u}else for(var m=0;m=h))return u}return u},E=(V,M,_=!1)=>{if(_===!1&&V.containsSpace)return B(V,M);for(var u=V._lower,h=V.lowerCodes,m=h[0],C=M._targetLowerCodes,v=h.length,x=C.length,P=0,T=0,I=0;;){var D=m===C[T];if(D){if(oe[I++]=T,++P,P===v)break;m=h[P]}if(++T,T>=x)return ie}var P=0,G=!1,q=0,U=M._nextBeginningIndexes;U===ie&&(U=M._nextBeginningIndexes=Q(M.target));var fe=T=oe[0]===0?0:U[oe[0]-1],le=0;if(T!==x)for(;;)if(T>=x){if(P<=0||(++le,le>200))break;--P;var Oe=ke[--q];T=U[Oe]}else{var D=h[P]===C[T];if(D){if(ke[q++]=T,++P,P===v){G=!0;break}++T}else T=U[T]}var ye=M._targetLower.indexOf(u,oe[0]),Se=~ye;if(Se&&!G)for(var ae=0;ae24&&(Le*=(tt-24)*10)}Se&&(Le/=1+v*v*1),Re&&(Le/=1+v*v*1),Le-=x-v,M.score=Le;for(var ae=0;ae{for(var _=new Set,u=0,h=ie,m=0,C=V.spaceSearches,I=0;Iu)return T;h.score=u;var I=0;for(let D of _)h._indexes[I++]=D;return h._indexes.len=I,h},Y=V=>{for(var M=V.length,_=V.toLowerCase(),u=[],h=0,m=!1,C=0;C=97&&v<=122?v-97:v>=48&&v<=57?26:v<=127?30:31;h|=1<{for(var M=V.length,_=[],u=0,h=!1,m=!1,C=0;C=65&&v<=90,T=x||v>=97&&v<=122||v>=48&&v<=57,I=x&&!h||!m||!T;h=x,m=T,I&&(_[u++]=C)}return _},Q=V=>{for(var M=V.length,_=K(V),u=[],h=_[0],m=0,C=0;CC?u[C]=h:(h=_[++m],u[C]=h===void 0?M:h);return u},L=()=>{re.clear(),F.clear(),oe=[],ke=[]},re=new Map,F=new Map,oe=[],ke=[],Ye=V=>{for(var M=Pe,_=V.length,u=0;u<_;++u){var h=V[u];if(h!==ie){var m=h.score;m>M&&(M=m)}}return M===Pe?ie:M},qe=(V,M)=>{var _=V[M];if(_!==void 0)return _;var u=M;Array.isArray(M)||(u=M.split("."));for(var h=u.length,m=-1;V&&++mtypeof V=="object",xe=1/0,Pe=-xe,Qe=[];Qe.total=0;var ie=null,Tt=V=>{var M=[],_=0,u={},h=m=>{for(var C=0,v=M[C],x=1;x<_;){var T=x+1;C=x,T<_&&M[T].score>1]=M[C],x=1+(C<<1)}for(var I=C-1>>1;C>0&&v.score>1)M[C]=M[I];M[C]=v};return u.add=m=>{var C=_;M[_++]=m;for(var v=C-1>>1;C>0&&m.score>1)M[C]=M[v];M[C]=m},u.poll=m=>{if(_!==0){var C=M[0];return M[0]=M[--_],h(),C}},u.peek=m=>{if(_!==0)return M[0]},u.replaceTop=m=>{M[0]=m,h()},u},Ve=Tt();return{single:n,go:t,highlight:a,prepare:c,indexes:l,cleanup:L}})});var cn=Zr((ar,ln)=>{(function(e,n){typeof ar=="object"&&typeof ln=="object"?ln.exports=n():typeof define=="function"&&define.amd?define([],n):typeof ar=="object"?ar.Pickr=n():e.Pickr=n()})(self,function(){return(()=>{"use strict";var e={d:(_,u)=>{for(var h in u)e.o(u,h)&&!e.o(_,h)&&Object.defineProperty(_,h,{enumerable:!0,get:u[h]})},o:(_,u)=>Object.prototype.hasOwnProperty.call(_,u),r:_=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(_,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(_,"__esModule",{value:!0})}},n={};e.d(n,{default:()=>M});var t={};function a(_,u,h,m){let C=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{};u instanceof HTMLCollection||u instanceof NodeList?u=Array.from(u):Array.isArray(u)||(u=[u]),Array.isArray(h)||(h=[h]);for(let v of u)for(let x of h)v[_](x,m,{capture:!1,...C});return Array.prototype.slice.call(arguments,1)}e.r(t),e.d(t,{adjustableInputNumbers:()=>S,createElementFromString:()=>c,createFromTemplate:()=>f,eventPath:()=>p,off:()=>l,on:()=>i,resolveElement:()=>w});let i=a.bind(null,"addEventListener"),l=a.bind(null,"removeEventListener");function c(_){let u=document.createElement("div");return u.innerHTML=_.trim(),u.firstElementChild}function f(_){let u=(m,C)=>{let v=m.getAttribute(C);return m.removeAttribute(C),v},h=function(m){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},v=u(m,":obj"),x=u(m,":ref"),T=v?C[v]={}:C;x&&(C[x]=m);for(let I of Array.from(m.children)){let D=u(I,":arr"),P=h(I,D?{}:T);D&&(T[D]||(T[D]=[])).push(Object.keys(P).length?P:I)}return C};return h(c(_))}function p(_){let u=_.path||_.composedPath&&_.composedPath();if(u)return u;let h=_.target.parentElement;for(u=[_.target,h];h=h.parentElement;)u.push(h);return u.push(document,window),u}function w(_){return _ instanceof Element?_:typeof _=="string"?_.split(/>>/g).reduce((u,h,m,C)=>(u=u.querySelector(h),m1&&arguments[1]!==void 0?arguments[1]:m=>m;function h(m){let C=[.001,.01,.1][Number(m.shiftKey||2*m.ctrlKey)]*(m.deltaY<0?1:-1),v=0,x=_.selectionStart;_.value=_.value.replace(/[\d.]+/g,(T,I)=>I<=x&&I+T.length>=x?(x=I,u(Number(T),C,v)):(v++,T)),_.focus(),_.setSelectionRange(x,x),m.preventDefault(),_.dispatchEvent(new Event("input"))}i(_,"focus",()=>i(window,"wheel",h,{passive:!1})),i(_,"blur",()=>l(window,"wheel",h))}let{min:E,max:B,floor:Y,round:K}=Math;function Q(_,u,h){u/=100,h/=100;let m=Y(_=_/360*6),C=_-m,v=h*(1-u),x=h*(1-C*u),T=h*(1-(1-C)*u),I=m%6;return[255*[h,x,v,v,T,h][I],255*[T,h,h,x,v,v][I],255*[v,v,T,h,h,x][I]]}function L(_,u,h){return Q(_,u,h).map(m=>K(m).toString(16).padStart(2,"0"))}function re(_,u,h){let m=Q(_,u,h),C=m[0]/255,v=m[1]/255,x=m[2]/255,T=E(1-C,1-v,1-x);return[100*(T===1?0:(1-C-T)/(1-T)),100*(T===1?0:(1-v-T)/(1-T)),100*(T===1?0:(1-x-T)/(1-T)),100*T]}function F(_,u,h){let m=(2-(u/=100))*(h/=100)/2;return m!==0&&(u=m===1?0:m<.5?u*h/(2*m):u*h/(2-2*m)),[_,100*u,100*m]}function oe(_,u,h){let m=E(_/=255,u/=255,h/=255),C=B(_,u,h),v=C-m,x,T;if(v===0)x=T=0;else{T=v/C;let I=((C-_)/6+v/2)/v,D=((C-u)/6+v/2)/v,P=((C-h)/6+v/2)/v;_===C?x=P-D:u===C?x=1/3+I-P:h===C&&(x=2/3+D-I),x<0?x+=1:x>1&&(x-=1)}return[360*x,100*T,100*C]}function ke(_,u,h,m){return u/=100,h/=100,[...oe(255*(1-E(1,(_/=100)*(1-(m/=100))+m)),255*(1-E(1,u*(1-m)+m)),255*(1-E(1,h*(1-m)+m)))]}function Ye(_,u,h){u/=100;let m=2*(u*=(h/=100)<.5?h:1-h)/(h+u)*100,C=100*(h+u);return[_,isNaN(m)?0:m,C]}function qe(_){return oe(..._.match(/.{2}/g).map(u=>parseInt(u,16)))}function Te(_){_=_.match(/^[a-zA-Z]+$/)?function(C){if(C.toLowerCase()==="black")return"#000";let v=document.createElement("canvas").getContext("2d");return v.fillStyle=C,v.fillStyle==="#000"?null:v.fillStyle}(_):_;let u={cmyk:/^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i,rgba:/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsla:/^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsva:/^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hexa:/^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i},h=C=>C.map(v=>/^(|\d+)\.\d+|\d+$/.test(v)?Number(v):void 0),m;e:for(let C in u){if(!(m=u[C].exec(_)))continue;let v=x=>!!m[2]==(typeof x=="number");switch(C){case"cmyk":{let[,x,T,I,D]=h(m);if(x>100||T>100||I>100||D>100)break e;return{values:ke(x,T,I,D),type:C}}case"rgba":{let[,,,x,T,I,D]=h(m);if(x>255||T>255||I>255||D<0||D>1||!v(D))break e;return{values:[...oe(x,T,I),D],a:D,type:C}}case"hexa":{let[,x]=m;x.length!==4&&x.length!==3||(x=x.split("").map(D=>D+D).join(""));let T=x.substring(0,6),I=x.substring(6);return I=I?parseInt(I,16)/255:void 0,{values:[...qe(T),I],a:I,type:C}}case"hsla":{let[,,,x,T,I,D]=h(m);if(x>360||T>100||I>100||D<0||D>1||!v(D))break e;return{values:[...Ye(x,T,I),D],a:D,type:C}}case"hsva":{let[,,,x,T,I,D]=h(m);if(x>360||T>100||I>100||D<0||D>1||!v(D))break e;return{values:[x,T,I,D],a:D,type:C}}}}return{values:null,type:null}}function xe(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1,C=(x,T)=>function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:-1;return T(~I?x.map(D=>Number(D.toFixed(I))):x)},v={h:_,s:u,v:h,a:m,toHSVA(){let x=[v.h,v.s,v.v,v.a];return x.toString=C(x,T=>`hsva(${T[0]}, ${T[1]}%, ${T[2]}%, ${v.a})`),x},toHSLA(){let x=[...F(v.h,v.s,v.v),v.a];return x.toString=C(x,T=>`hsla(${T[0]}, ${T[1]}%, ${T[2]}%, ${v.a})`),x},toRGBA(){let x=[...Q(v.h,v.s,v.v),v.a];return x.toString=C(x,T=>`rgba(${T[0]}, ${T[1]}, ${T[2]}, ${v.a})`),x},toCMYK(){let x=re(v.h,v.s,v.v);return x.toString=C(x,T=>`cmyk(${T[0]}%, ${T[1]}%, ${T[2]}%, ${T[3]}%)`),x},toHEXA(){let x=L(v.h,v.s,v.v),T=v.a>=1?"":Number((255*v.a).toFixed(0)).toString(16).toUpperCase().padStart(2,"0");return T&&x.push(T),x.toString=()=>`#${x.join("").toUpperCase()}`,x},clone:()=>xe(v.h,v.s,v.v,v.a)};return v}let Pe=_=>Math.max(Math.min(_,1),0);function Qe(_){let u={options:Object.assign({lock:null,onchange:()=>0,onstop:()=>0},_),_keyboard(v){let{options:x}=u,{type:T,key:I}=v;if(document.activeElement===x.wrapper){let{lock:D}=u.options,P=I==="ArrowUp",G=I==="ArrowRight",q=I==="ArrowDown",U=I==="ArrowLeft";if(T==="keydown"&&(P||G||q||U)){let fe=0,le=0;D==="v"?fe=P||G?1:-1:D==="h"?fe=P||G?-1:1:(le=P?-1:q?1:0,fe=U?-1:G?1:0),u.update(Pe(u.cache.x+.01*fe),Pe(u.cache.y+.01*le)),v.preventDefault()}else I.startsWith("Arrow")&&(u.options.onstop(),v.preventDefault())}},_tapstart(v){i(document,["mouseup","touchend","touchcancel"],u._tapstop),i(document,["mousemove","touchmove"],u._tapmove),v.cancelable&&v.preventDefault(),u._tapmove(v)},_tapmove(v){let{options:x,cache:T}=u,{lock:I,element:D,wrapper:P}=x,G=P.getBoundingClientRect(),q=0,U=0;if(v){let Oe=v&&v.touches&&v.touches[0];q=v?(Oe||v).clientX:0,U=v?(Oe||v).clientY:0,qG.left+G.width&&(q=G.left+G.width),UG.top+G.height&&(U=G.top+G.height),q-=G.left,U-=G.top}else T&&(q=T.x*G.width,U=T.y*G.height);I!=="h"&&(D.style.left=`calc(${q/G.width*100}% - ${D.offsetWidth/2}px)`),I!=="v"&&(D.style.top=`calc(${U/G.height*100}% - ${D.offsetHeight/2}px)`),u.cache={x:q/G.width,y:U/G.height};let fe=Pe(q/G.width),le=Pe(U/G.height);switch(I){case"v":return x.onchange(fe);case"h":return x.onchange(le);default:return x.onchange(fe,le)}},_tapstop(){u.options.onstop(),l(document,["mouseup","touchend","touchcancel"],u._tapstop),l(document,["mousemove","touchmove"],u._tapmove)},trigger(){u._tapmove()},update(){let v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,{left:T,top:I,width:D,height:P}=u.options.wrapper.getBoundingClientRect();u.options.lock==="h"&&(x=v),u._tapmove({clientX:T+D*v,clientY:I+P*x})},destroy(){let{options:v,_tapstart:x,_keyboard:T}=u;l(document,["keydown","keyup"],T),l([v.wrapper,v.element],"mousedown",x),l([v.wrapper,v.element],"touchstart",x,{passive:!1})}},{options:h,_tapstart:m,_keyboard:C}=u;return i([h.wrapper,h.element],"mousedown",m),i([h.wrapper,h.element],"touchstart",m,{passive:!1}),i(document,["keydown","keyup"],C),u}function ie(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};_=Object.assign({onchange:()=>0,className:"",elements:[]},_);let u=i(_.elements,"click",h=>{_.elements.forEach(m=>m.classList[h.target===m?"add":"remove"](_.className)),_.onchange(h),h.stopPropagation()});return{destroy:()=>l(...u)}}let Tt={variantFlipOrder:{start:"sme",middle:"mse",end:"ems"},positionFlipOrder:{top:"tbrl",right:"rltb",bottom:"btrl",left:"lrbt"},position:"bottom",margin:8},Ve=(_,u,h)=>{let{container:m,margin:C,position:v,variantFlipOrder:x,positionFlipOrder:T}={container:document.documentElement.getBoundingClientRect(),...Tt,...h},{left:I,top:D}=u.style;u.style.left="0",u.style.top="0";let P=_.getBoundingClientRect(),G=u.getBoundingClientRect(),q={t:P.top-G.height-C,b:P.bottom+C,r:P.right+C,l:P.left-G.width-C},U={vs:P.left,vm:P.left+P.width/2+-G.width/2,ve:P.left+P.width-G.width,hs:P.top,hm:P.bottom-P.height/2-G.height/2,he:P.bottom-G.height},[fe,le="middle"]=v.split("-"),Oe=T[fe],ye=x[le],{top:Se,left:ae,bottom:Re,right:_e}=m;for(let Ke of Oe){let Le=Ke==="t"||Ke==="b",et=q[Ke],[gt,tt]=Le?["top","left"]:["left","top"],[Ar,kr]=Le?[G.height,G.width]:[G.width,G.height],[Tr,Lr]=Le?[Re,_e]:[_e,Re],[Mr,Ir]=Le?[Se,ae]:[ae,Se];if(!(etTr))for(let jt of ye){let Lt=U[(Le?"v":"h")+jt];if(!(LtLr))return u.style[tt]=Lt-G[tt]+"px",u.style[gt]=et-G[gt]+"px",Ke+jt}}return u.style.left=I,u.style.top=D,null};function V(_,u,h){return u in _?Object.defineProperty(_,u,{value:h,enumerable:!0,configurable:!0,writable:!0}):_[u]=h,_}class M{constructor(u){V(this,"_initializingActive",!0),V(this,"_recalc",!0),V(this,"_nanopop",null),V(this,"_root",null),V(this,"_color",xe()),V(this,"_lastColor",xe()),V(this,"_swatchColors",[]),V(this,"_setupAnimationFrame",null),V(this,"_eventListener",{init:[],save:[],hide:[],show:[],clear:[],change:[],changestop:[],cancel:[],swatchselect:[]}),this.options=u=Object.assign({...M.DEFAULT_OPTIONS},u);let{swatches:h,components:m,theme:C,sliders:v,lockOpacity:x,padding:T}=u;["nano","monolith"].includes(C)&&!v&&(u.sliders="h"),m.interaction||(m.interaction={});let{preview:I,opacity:D,hue:P,palette:G}=m;m.opacity=!x&&D,m.palette=G||I||D||P,this._preBuild(),this._buildComponents(),this._bindEvents(),this._finalBuild(),h&&h.length&&h.forEach(le=>this.addSwatch(le));let{button:q,app:U}=this._root;this._nanopop=((le,Oe,ye)=>{let Se=typeof le!="object"||le instanceof HTMLElement?{reference:le,popper:Oe,...ye}:le;return{update(){let ae=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Se,{reference:Re,popper:_e}=Object.assign(Se,ae);if(!_e||!Re)throw new Error("Popper- or reference-element missing.");return Ve(Re,_e,Se)}}})(q,U,{margin:T}),q.setAttribute("role","button"),q.setAttribute("aria-label",this._t("btn:toggle"));let fe=this;this._setupAnimationFrame=requestAnimationFrame(function le(){if(!U.offsetWidth)return fe._setupAnimationFrame=requestAnimationFrame(le);fe.setColor(u.default),fe._rePositioningPicker(),u.defaultRepresentation&&(fe._representation=u.defaultRepresentation,fe.setColorRepresentation(fe._representation)),u.showAlways&&fe.show(),fe._initializingActive=!1,fe._emit("init")})}_preBuild(){let{options:u}=this;for(let h of["el","container"])u[h]=w(u[h]);this._root=(h=>{let{components:m,useAsButton:C,inline:v,appClass:x,theme:T,lockOpacity:I}=h.options,D=U=>U?"":'style="display:none" hidden',P=U=>h._t(U),G=f(` +
+ + ${C?"":''} + +
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+ +
+ +
+ + + + + + + + + + + +
+
+
+ `),q=G.interaction;return q.options.find(U=>!U.hidden&&!U.classList.add("active")),q.type=()=>q.options.find(U=>U.classList.contains("active")),G})(this),u.useAsButton&&(this._root.button=u.el),u.container.appendChild(this._root.root)}_finalBuild(){let u=this.options,h=this._root;if(u.container.removeChild(h.root),u.inline){let m=u.el.parentElement;u.el.nextSibling?m.insertBefore(h.app,u.el.nextSibling):m.appendChild(h.app)}else u.container.appendChild(h.app);u.useAsButton?u.inline&&u.el.remove():u.el.parentNode.replaceChild(h.root,u.el),u.disabled&&this.disable(),u.comparison||(h.button.style.transition="none",u.useAsButton||(h.preview.lastColor.style.transition="none")),this.hide()}_buildComponents(){let u=this,h=this.options.components,m=(u.options.sliders||"v").repeat(2),[C,v]=m.match(/^[vh]+$/g)?m:[],x=()=>this._color||(this._color=this._lastColor.clone()),T={palette:Qe({element:u._root.palette.picker,wrapper:u._root.palette.palette,onstop:()=>u._emit("changestop","slider",u),onchange(I,D){if(!h.palette)return;let P=x(),{_root:G,options:q}=u,{lastColor:U,currentColor:fe}=G.preview;u._recalc&&(P.s=100*I,P.v=100-100*D,P.v<0&&(P.v=0),u._updateOutput("slider"));let le=P.toRGBA().toString(0);this.element.style.background=le,this.wrapper.style.background=` + linear-gradient(to top, rgba(0, 0, 0, ${P.a}), transparent), + linear-gradient(to left, hsla(${P.h}, 100%, 50%, ${P.a}), rgba(255, 255, 255, ${P.a})) + `,q.comparison?q.useAsButton||u._lastColor||U.style.setProperty("--pcr-color",le):(G.button.style.setProperty("--pcr-color",le),G.button.classList.remove("clear"));let Oe=P.toHEXA().toString();for(let{el:ye,color:Se}of u._swatchColors)ye.classList[Oe===Se.toHEXA().toString()?"add":"remove"]("pcr-active");fe.style.setProperty("--pcr-color",le)}}),hue:Qe({lock:v==="v"?"h":"v",element:u._root.hue.picker,wrapper:u._root.hue.slider,onstop:()=>u._emit("changestop","slider",u),onchange(I){if(!h.hue||!h.palette)return;let D=x();u._recalc&&(D.h=360*I),this.element.style.backgroundColor=`hsl(${D.h}, 100%, 50%)`,T.palette.trigger()}}),opacity:Qe({lock:C==="v"?"h":"v",element:u._root.opacity.picker,wrapper:u._root.opacity.slider,onstop:()=>u._emit("changestop","slider",u),onchange(I){if(!h.opacity||!h.palette)return;let D=x();u._recalc&&(D.a=Math.round(100*I)/100),this.element.style.background=`rgba(0, 0, 0, ${D.a})`,T.palette.trigger()}}),selectable:ie({elements:u._root.interaction.options,className:"active",onchange(I){u._representation=I.target.getAttribute("data-type").toUpperCase(),u._recalc&&u._updateOutput("swatch")}})};this._components=T}_bindEvents(){let{_root:u,options:h}=this,m=[i(u.interaction.clear,"click",()=>this._clearColor()),i([u.interaction.cancel,u.preview.lastColor],"click",()=>{this.setHSVA(...(this._lastColor||this._color).toHSVA(),!0),this._emit("cancel")}),i(u.interaction.save,"click",()=>{!this.applyColor()&&!h.showAlways&&this.hide()}),i(u.interaction.result,["keyup","input"],C=>{this.setColor(C.target.value,!0)&&!this._initializingActive&&(this._emit("change",this._color,"input",this),this._emit("changestop","input",this)),C.stopImmediatePropagation()}),i(u.interaction.result,["focus","blur"],C=>{this._recalc=C.type==="blur",this._recalc&&this._updateOutput(null)}),i([u.palette.palette,u.palette.picker,u.hue.slider,u.hue.picker,u.opacity.slider,u.opacity.picker],["mousedown","touchstart"],()=>this._recalc=!0,{passive:!0})];if(!h.showAlways){let C=h.closeWithKey;m.push(i(u.button,"click",()=>this.isOpen()?this.hide():this.show()),i(document,"keyup",v=>this.isOpen()&&(v.key===C||v.code===C)&&this.hide()),i(document,["touchstart","mousedown"],v=>{this.isOpen()&&!p(v).some(x=>x===u.app||x===u.button)&&this.hide()},{capture:!0}))}if(h.adjustableNumbers){let C={rgba:[255,255,255,1],hsva:[360,100,100,1],hsla:[360,100,100,1],cmyk:[100,100,100,100]};S(u.interaction.result,(v,x,T)=>{let I=C[this.getColorRepresentation().toLowerCase()];if(I){let D=I[T],P=v+(D>=100?1e3*x:x);return P<=0?0:Number((P{v.isOpen()&&(h.closeOnScroll&&v.hide(),C===null?(C=setTimeout(()=>C=null,100),requestAnimationFrame(function x(){v._rePositioningPicker(),C!==null&&requestAnimationFrame(x)})):(clearTimeout(C),C=setTimeout(()=>C=null,100)))},{capture:!0}))}this._eventBindings=m}_rePositioningPicker(){let{options:u}=this;if(!u.inline&&!this._nanopop.update({container:document.body.getBoundingClientRect(),position:u.position})){let h=this._root.app,m=h.getBoundingClientRect();h.style.top=(window.innerHeight-m.height)/2+"px",h.style.left=(window.innerWidth-m.width)/2+"px"}}_updateOutput(u){let{_root:h,_color:m,options:C}=this;if(h.interaction.type()){let v=`to${h.interaction.type().getAttribute("data-type")}`;h.interaction.result.value=typeof m[v]=="function"?m[v]().toString(C.outputPrecision):""}!this._initializingActive&&this._recalc&&this._emit("change",m,u,this)}_clearColor(){let u=arguments.length>0&&arguments[0]!==void 0&&arguments[0],{_root:h,options:m}=this;m.useAsButton||h.button.style.setProperty("--pcr-color","rgba(0, 0, 0, 0.15)"),h.button.classList.add("clear"),m.showAlways||this.hide(),this._lastColor=null,this._initializingActive||u||(this._emit("save",null),this._emit("clear"))}_parseLocalColor(u){let{values:h,type:m,a:C}=Te(u),{lockOpacity:v}=this.options,x=C!==void 0&&C!==1;return h&&h.length===3&&(h[3]=void 0),{values:!h||v&&x?null:h,type:m}}_t(u){return this.options.i18n[u]||M.I18N_DEFAULTS[u]}_emit(u){for(var h=arguments.length,m=new Array(h>1?h-1:0),C=1;Cv(...m,this))}on(u,h){return this._eventListener[u].push(h),this}off(u,h){let m=this._eventListener[u]||[],C=m.indexOf(h);return~C&&m.splice(C,1),this}addSwatch(u){let{values:h}=this._parseLocalColor(u);if(h){let{_swatchColors:m,_root:C}=this,v=xe(...h),x=c(`'}\n\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n
\n\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n\n
\n\n
\n \n\n \n \n \n \n \n\n \n \n \n
\n
\n
\n `),h=p.interaction;return h.options.find((t=>!t.hidden&&!t.classList.add("active"))),h.type=()=>h.options.find((t=>t.classList.contains("active"))),p})(this),t.useAsButton&&(this._root.button=t.el),t.container.appendChild(this._root.root);}_finalBuild(){const t=this.options,e=this._root;if(t.container.removeChild(e.root),t.inline){const o=t.el.parentElement;t.el.nextSibling?o.insertBefore(e.app,t.el.nextSibling):o.appendChild(e.app);}else t.container.appendChild(e.app);t.useAsButton?t.inline&&t.el.remove():t.el.parentNode.replaceChild(e.root,t.el),t.disabled&&this.disable(),t.comparison||(e.button.style.transition="none",t.useAsButton||(e.preview.lastColor.style.transition="none")),this.hide();}_buildComponents(){const t=this,e=this.options.components,o=(t.options.sliders||"v").repeat(2),[n,i]=o.match(/^[vh]+$/g)?o:[],s=()=>this._color||(this._color=this._lastColor.clone()),r={palette:S({element:t._root.palette.picker,wrapper:t._root.palette.palette,onstop:()=>t._emit("changestop","slider",t),onchange(o,n){if(!e.palette)return;const i=s(),{_root:r,options:a}=t,{lastColor:l,currentColor:c}=r.preview;t._recalc&&(i.s=100*o,i.v=100-100*n,i.v<0&&(i.v=0),t._updateOutput("slider"));const p=i.toRGBA().toString(0);this.element.style.background=p,this.wrapper.style.background=`\n linear-gradient(to top, rgba(0, 0, 0, ${i.a}), transparent),\n linear-gradient(to left, hsla(${i.h}, 100%, 50%, ${i.a}), rgba(255, 255, 255, ${i.a}))\n `,a.comparison?a.useAsButton||t._lastColor||l.style.setProperty("--pcr-color",p):(r.button.style.setProperty("--pcr-color",p),r.button.classList.remove("clear"));const h=i.toHEXA().toString();for(const{el:e,color:o}of t._swatchColors)e.classList[h===o.toHEXA().toString()?"add":"remove"]("pcr-active");c.style.setProperty("--pcr-color",p);}}),hue:S({lock:"v"===i?"h":"v",element:t._root.hue.picker,wrapper:t._root.hue.slider,onstop:()=>t._emit("changestop","slider",t),onchange(o){if(!e.hue||!e.palette)return;const n=s();t._recalc&&(n.h=360*o),this.element.style.backgroundColor=`hsl(${n.h}, 100%, 50%)`,r.palette.trigger();}}),opacity:S({lock:"v"===n?"h":"v",element:t._root.opacity.picker,wrapper:t._root.opacity.slider,onstop:()=>t._emit("changestop","slider",t),onchange(o){if(!e.opacity||!e.palette)return;const n=s();t._recalc&&(n.a=Math.round(100*o)/100),this.element.style.background=`rgba(0, 0, 0, ${n.a})`,r.palette.trigger();}}),selectable:O({elements:t._root.interaction.options,className:"active",onchange(e){t._representation=e.target.getAttribute("data-type").toUpperCase(),t._recalc&&t._updateOutput("swatch");}})};this._components=r;}_bindEvents(){const{_root:t,options:e}=this,o=[i(t.interaction.clear,"click",(()=>this._clearColor())),i([t.interaction.cancel,t.preview.lastColor],"click",(()=>{this.setHSVA(...(this._lastColor||this._color).toHSVA(),!0),this._emit("cancel");})),i(t.interaction.save,"click",(()=>{!this.applyColor()&&!e.showAlways&&this.hide();})),i(t.interaction.result,["keyup","input"],(t=>{this.setColor(t.target.value,!0)&&!this._initializingActive&&(this._emit("change",this._color,"input",this),this._emit("changestop","input",this)),t.stopImmediatePropagation();})),i(t.interaction.result,["focus","blur"],(t=>{this._recalc="blur"===t.type,this._recalc&&this._updateOutput(null);})),i([t.palette.palette,t.palette.picker,t.hue.slider,t.hue.picker,t.opacity.slider,t.opacity.picker],["mousedown","touchstart"],(()=>this._recalc=!0),{passive:!0})];if(!e.showAlways){const n=e.closeWithKey;o.push(i(t.button,"click",(()=>this.isOpen()?this.hide():this.show())),i(document,"keyup",(t=>this.isOpen()&&(t.key===n||t.code===n)&&this.hide())),i(document,["touchstart","mousedown"],(e=>{this.isOpen()&&!l(e).some((e=>e===t.app||e===t.button))&&this.hide();}),{capture:!0}));}if(e.adjustableNumbers){const e={rgba:[255,255,255,1],hsva:[360,100,100,1],hsla:[360,100,100,1],cmyk:[100,100,100,100]};p(t.interaction.result,((t,o,n)=>{const i=e[this.getColorRepresentation().toLowerCase()];if(i){const e=i[n],s=t+(e>=100?1e3*o:o);return s<=0?0:Number((s{n.isOpen()&&(e.closeOnScroll&&n.hide(),null===t?(t=setTimeout((()=>t=null),100),requestAnimationFrame((function e(){n._rePositioningPicker(),null!==t&&requestAnimationFrame(e);}))):(clearTimeout(t),t=setTimeout((()=>t=null),100)));}),{capture:!0}));}this._eventBindings=o;}_rePositioningPicker(){const{options:t}=this;if(!t.inline){if(!this._nanopop.update({container:document.body.getBoundingClientRect(),position:t.position})){const t=this._root.app,e=t.getBoundingClientRect();t.style.top=(window.innerHeight-e.height)/2+"px",t.style.left=(window.innerWidth-e.width)/2+"px";}}}_updateOutput(t){const{_root:e,_color:o,options:n}=this;if(e.interaction.type()){const t=`to${e.interaction.type().getAttribute("data-type")}`;e.interaction.result.value="function"==typeof o[t]?o[t]().toString(n.outputPrecision):"";}!this._initializingActive&&this._recalc&&this._emit("change",o,t,this);}_clearColor(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{_root:e,options:o}=this;o.useAsButton||e.button.style.setProperty("--pcr-color","rgba(0, 0, 0, 0.15)"),e.button.classList.add("clear"),o.showAlways||this.hide(),this._lastColor=null,this._initializingActive||t||(this._emit("save",null),this._emit("clear"));}_parseLocalColor(t){const{values:e,type:o,a:n}=C(t),{lockOpacity:i}=this.options,s=void 0!==n&&1!==n;return e&&3===e.length&&(e[3]=void 0),{values:!e||i&&s?null:e,type:o}}_t(t){return this.options.i18n[t]||x.I18N_DEFAULTS[t]}_emit(t){for(var e=arguments.length,o=new Array(e>1?e-1:0),n=1;nt(...o,this)));}on(t,e){return this._eventListener[t].push(e),this}off(t,e){const o=this._eventListener[t]||[],n=o.indexOf(e);return ~n&&o.splice(n,1),this}addSwatch(t){const{values:e}=this._parseLocalColor(t);if(e){const{_swatchColors:t,_root:o}=this,n=$(...e),s=r(`