@sapui5/sap.fe.controls 1.142.7 → 1.142.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/controls/.library +1 -1
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +26 -5
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +28 -5
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +13 -9
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +14 -10
- package/src/sap/fe/controls/easyFilter/Token.js +3 -3
- package/src/sap/fe/controls/easyFilter/Token.tsx +2 -2
- package/src/sap/fe/controls/library.js +1 -1
|
@@ -25,7 +25,7 @@ import Control from "sap/ui/core/Control";
|
|
|
25
25
|
import CustomData from "sap/ui/core/CustomData";
|
|
26
26
|
import Lib from "sap/ui/core/Lib";
|
|
27
27
|
import type RenderManager from "sap/ui/core/RenderManager";
|
|
28
|
-
import { ValueState } from "sap/ui/core/library";
|
|
28
|
+
import { InvisibleMessageMode, ValueState } from "sap/ui/core/library";
|
|
29
29
|
import type Context from "sap/ui/model/Context";
|
|
30
30
|
|
|
31
31
|
import type { PrimitiveType } from "@sap-ux/vocabularies-types";
|
|
@@ -40,6 +40,7 @@ import MessageToast from "sap/m/MessageToast";
|
|
|
40
40
|
import OverflowToolbar from "sap/m/OverflowToolbar";
|
|
41
41
|
import ToggleButton from "sap/m/ToggleButton";
|
|
42
42
|
import ToolbarSpacer from "sap/m/ToolbarSpacer";
|
|
43
|
+
import InvisibleMessage from "sap/ui/core/InvisibleMessage";
|
|
43
44
|
import MessageType from "sap/ui/core/message/MessageType";
|
|
44
45
|
import FilterOperator from "sap/ui/model/FilterOperator";
|
|
45
46
|
import FESRHelper from "sap/ui/performance/trace/FESRHelper";
|
|
@@ -177,7 +178,7 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
177
178
|
content?: Control;
|
|
178
179
|
|
|
179
180
|
@event()
|
|
180
|
-
tokensChanged?: EventHandler<UI5Event<{ tokens: TokenDefinition[] }, EasyFilterBarContainer>>;
|
|
181
|
+
tokensChanged?: EventHandler<UI5Event<{ tokens: TokenDefinition[]; reset: boolean }, EasyFilterBarContainer>>;
|
|
181
182
|
|
|
182
183
|
@event()
|
|
183
184
|
queryChanged?: EventHandler<UI5Event<{ query: string }, EasyFilterBarContainer>>;
|
|
@@ -238,6 +239,10 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
238
239
|
|
|
239
240
|
private shouldTokenChangeEventFired = true;
|
|
240
241
|
|
|
242
|
+
private isResettingToDefaultTokens = false;
|
|
243
|
+
|
|
244
|
+
private invisibleMessage!: InvisibleMessage;
|
|
245
|
+
|
|
241
246
|
easyfilter?: Promise<typeof EasyFilter | undefined>;
|
|
242
247
|
|
|
243
248
|
private resolveContentReady!: () => void;
|
|
@@ -249,6 +254,7 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
249
254
|
constructor(properties: string | ($ControlSettings & PropertiesOf<EasyFilterBarContainer>), others?: $ControlSettings) {
|
|
250
255
|
super(properties as string, others);
|
|
251
256
|
this.initialize();
|
|
257
|
+
this.invisibleMessage = InvisibleMessage.getInstance();
|
|
252
258
|
}
|
|
253
259
|
|
|
254
260
|
setEasyFilterLib(easyFilterLib: string): void {
|
|
@@ -400,6 +406,7 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
400
406
|
// error
|
|
401
407
|
this.removeNonMandatoryTokens();
|
|
402
408
|
this.setMessageStrip(easyFilterResult.message);
|
|
409
|
+
this.invisibleMessage.announce(this.resourceBundle.getText(easyFilterResult.message), InvisibleMessageMode.Assertive);
|
|
403
410
|
this.state.messageStripType = MessageType.Warning;
|
|
404
411
|
Log.error("Error while generating filter criteria: ", easyFilterResult.message);
|
|
405
412
|
}
|
|
@@ -602,7 +609,8 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
602
609
|
if (changedProps.includes("tokens")) {
|
|
603
610
|
if (this.shouldTokenChangeEventFired) {
|
|
604
611
|
this.fireEvent("tokensChanged", {
|
|
605
|
-
tokens: this.formatTokens(this.state.tokens as unknown as TokenDefinition[])
|
|
612
|
+
tokens: this.formatTokens(this.state.tokens as unknown as TokenDefinition[]),
|
|
613
|
+
reset: this.isResettingToDefaultTokens
|
|
606
614
|
});
|
|
607
615
|
}
|
|
608
616
|
this.state.showResult = this.state.tokens.length > 0;
|
|
@@ -613,6 +621,7 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
613
621
|
//Resetting to default values
|
|
614
622
|
this.isMandatoryCheckRequired = false;
|
|
615
623
|
this.shouldTokenChangeEventFired = true;
|
|
624
|
+
this.isResettingToDefaultTokens = false;
|
|
616
625
|
|
|
617
626
|
// onsapfocusleave method in sap.m.Tokenizer is automatically converting the rendermode of tokenizer to "Narrow" from "loose"
|
|
618
627
|
// In this process there are multiple popover issues happening
|
|
@@ -775,7 +784,7 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
775
784
|
text={this.resourceBundle.getText("M_EASY_FILTER_RESET")}
|
|
776
785
|
type={ButtonType.Transparent}
|
|
777
786
|
press={(): void => {
|
|
778
|
-
this.resetState();
|
|
787
|
+
this.resetState(true, true);
|
|
779
788
|
//Retaining the focus on popover doesn't make the popover close on every interaction
|
|
780
789
|
this.easyFilterInput.current?.$searchInput.focus();
|
|
781
790
|
}}
|
|
@@ -829,9 +838,23 @@ export default class EasyFilterBarContainer extends Control {
|
|
|
829
838
|
await this.onGoPress(currentInputValue);
|
|
830
839
|
}
|
|
831
840
|
|
|
832
|
-
|
|
841
|
+
/**
|
|
842
|
+
* Resets the state of the EasyFilterBarContainer to its initial configuration.
|
|
843
|
+
*
|
|
844
|
+
* This method performs the following actions:
|
|
845
|
+
* - Clears all non-mandatory tokens and resets mandatory tokens to their default values
|
|
846
|
+
* - Resets the input field to its default placeholder text
|
|
847
|
+
* - Clears all error value states and messages from tokens
|
|
848
|
+
* - Clears any displayed message strips
|
|
849
|
+
* - Optionally fires the clearFilters event to notify consumers
|
|
850
|
+
* @param clearAllFilters If true, fires the clearFilters event to notify consumers that filters should be cleared else just resets the tokens without firing the event
|
|
851
|
+
* @param isResettingToDefaultTokens If true, indicates that the resetButton is restoring tokens to their default values
|
|
852
|
+
*/
|
|
853
|
+
|
|
854
|
+
resetState(clearAllFilters = true, isResettingToDefaultTokens = false): void {
|
|
833
855
|
if (clearAllFilters) {
|
|
834
856
|
this.fireEvent("clearFilters");
|
|
857
|
+
this.isResettingToDefaultTokens = isResettingToDefaultTokens;
|
|
835
858
|
} else {
|
|
836
859
|
this.shouldTokenChangeEventFired = false;
|
|
837
860
|
}
|
|
@@ -50,7 +50,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
50
50
|
_initializerDefineProperty(_this, "queryChanged", _descriptor4, _this);
|
|
51
51
|
_initializerDefineProperty(_this, "enterPressed", _descriptor5, _this);
|
|
52
52
|
_initializerDefineProperty(_this, "liveChange", _descriptor6, _this);
|
|
53
|
-
_this.
|
|
53
|
+
_this.favoriteButtonClicked = false;
|
|
54
54
|
_initializerDefineProperty(_this, "state", _descriptor7, _this);
|
|
55
55
|
_this.initialize();
|
|
56
56
|
return _this;
|
|
@@ -322,14 +322,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
322
322
|
if (index !== -1) {
|
|
323
323
|
this.state.favoriteQueries = this.state.favoriteQueries.filter(query => query !== queryString);
|
|
324
324
|
}
|
|
325
|
+
this.favoriteButtonClicked = true;
|
|
325
326
|
}
|
|
326
327
|
}), {
|
|
327
328
|
dependents: _jsx(EventDelegateHook, {
|
|
328
329
|
tap: () => {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
330
|
+
if (!this.favoriteButtonClicked) {
|
|
331
|
+
triggerPXIntegration("favorite");
|
|
332
|
+
this.$searchInput?.setValue(ctx.getObject().replace(/\\\\/g, "\\"));
|
|
333
|
+
this.onEnterPressed();
|
|
334
|
+
}
|
|
335
|
+
this.favoriteButtonClicked = false;
|
|
333
336
|
}
|
|
334
337
|
})
|
|
335
338
|
}]
|
|
@@ -347,6 +350,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
347
350
|
items: bindState(this.state, "recentQueriesWitFavorites"),
|
|
348
351
|
visible: equal(bindState(this.state, "isHistoryEnabled"), true),
|
|
349
352
|
mode: ListMode.Delete,
|
|
353
|
+
ariaLabelledBy: [this.getId() + "-easyFilterLastUsedTitle"],
|
|
350
354
|
delete: e => {
|
|
351
355
|
const item = e.getParameter("listItem");
|
|
352
356
|
item.focus();
|
|
@@ -394,7 +398,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
394
398
|
type: ButtonType.Transparent,
|
|
395
399
|
ariaLabelledBy: [id + "-easyFilterLastUsedItem"],
|
|
396
400
|
press: () => {
|
|
397
|
-
this.
|
|
401
|
+
this.favoriteButtonClicked = true;
|
|
398
402
|
//Retaining the focus on popover doesn't make the popover close on every interaction
|
|
399
403
|
this.$favoritePopover?.focus();
|
|
400
404
|
const queryString = ctx.getObject().text;
|
|
@@ -409,12 +413,12 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
409
413
|
dependents: _jsx(EventDelegateHook, {
|
|
410
414
|
tap: () => {
|
|
411
415
|
// should not be executed when clicking on add favorite button
|
|
412
|
-
if (!this.
|
|
416
|
+
if (!this.favoriteButtonClicked) {
|
|
413
417
|
this.$searchInput?.setValue(ctx.getObject().text.replace(/\\\\/g, "\\"));
|
|
414
418
|
triggerPXIntegration("recent");
|
|
415
419
|
this.onEnterPressed();
|
|
416
420
|
}
|
|
417
|
-
this.
|
|
421
|
+
this.favoriteButtonClicked = false;
|
|
418
422
|
}
|
|
419
423
|
})
|
|
420
424
|
}]
|
|
@@ -496,4 +500,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
496
500
|
_exports = EasyFilterInput;
|
|
497
501
|
return _exports;
|
|
498
502
|
}, false);
|
|
499
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJhZGRGYXZvcml0ZUJ1dHRvbkNsaWNrZWQiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJkZWxldGUiLCJlbmFibGVkIiwibGVzc1RoYW4iLCJyZW1vdmVGcm9tRmF2b3JpdGVzIiwiYWRkVG9GYXZvcml0ZXMiLCJuZXdGYXZvcml0ZSIsInBvcCIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsInJlZiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGJpbmRTdGF0ZSwgZXF1YWwsIGxlbmd0aCwgbGVzc1RoYW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YsIHR5cGUgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9TaGVsbEhpc3RvcnlQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhBbGlnbkl0ZW1zLCBGbGV4RGlyZWN0aW9uLCBGbGV4SnVzdGlmeUNvbnRlbnQsIEZsZXhXcmFwLCBMaXN0TW9kZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlLCBUaXRsZUxldmVsLCBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuXG50eXBlIFJlY2VudFR5cGUgPSB7XG5cdHRleHQ6IHN0cmluZztcblx0aXNGYXZvcml0ZTogYm9vbGVhbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuZWFzeUZpbHRlci5FYXN5RmlsdGVySW5wdXRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJJbnB1dCBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLklucHV0XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdCRzZWFyY2hJbnB1dCE6IElucHV0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QGV2ZW50KClcblx0cXVlcnlDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZXZlbnQoKVxuXHRlbnRlclByZXNzZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2U/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdHNoZWxsSGlzdG9yeVByb3ZpZGVyOiBTaGVsbEhpc3RvcnlQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRwb3BvdmVySW52aXNpYmxlTWVzc2FnZTogSW52aXNpYmxlTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuXHQkZmF2b3JpdGVQb3BvdmVyOiBQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgYWRkRmF2b3JpdGVCdXR0b25DbGlja2VkID0gZmFsc2U7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2UgPSBJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dCgpO1xuXHR9XG5cblx0c2V0QXNJbnZhbGlkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5XYXJuaW5nKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChtZXNzYWdlKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdHNldEFzVmFsaWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZShWYWx1ZVN0YXRlLk5vbmUpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdGNyZWF0ZUlucHV0KCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0ID0gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdGNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInF1ZXJ5Q2hhbmdlZFwiLCB7IHF1ZXJ5OiBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXsoZTogSW5wdXQkTGl2ZUNoYW5nZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0XHRpZiAoIWUuZ2V0U291cmNlKCkuZ2V0VmFsdWUoKSAmJiAhKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSA9PT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlU3RhdGUoKSA9PT0gVmFsdWVTdGF0ZS5XYXJuaW5nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEFzVmFsaWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH19XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0PjwvSW5wdXQ+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRGVwZW5kZW50KGZhdm9yaXRlUG9wb3Zlcik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGUua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgIT09IHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSk7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJsaXZlQ2hhbmdlXCIpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9wb3ZlckNvbmFpbmVyID0gdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5nZXRDb250ZW50KClbMF07XG5cdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySXRlbXMgPSAocG9wb3ZlckNvbmFpbmVyIGFzIEZsZXhCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29udGFpbmVySXRlbXM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSAmJiAoaXRlbS5mb2N1cygpLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbnRhcDogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fSxcblx0XHRcdG9uZm9jdXNpbjogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0VGV4dCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm91dGVyVGV4dDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5pZDtcblx0XHRcdFx0c3dpdGNoIChlLmtleSkge1xuXHRcdFx0XHRcdGNhc2UgXCJFbnRlclwiOlxuXHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRlbGV0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldElkPy5pbmNsdWRlcyhcImVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIikpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0KGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gdGFyZ2V0VGV4dC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVzY2FwZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5wb3BvdmVySW52aXNpYmxlTWVzc2FnZT8uYW5ub3VuY2UoXG5cdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9FQVNZX0ZJTFRFUl9JTlBVVF9URVhUX0xJTktfUE9QT1ZFUl9BUklBXCIpLFxuXHRcdFx0XHRcdEludmlzaWJsZU1lc3NhZ2VNb2RlLkFzc2VydGl2ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBvcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAmJiAoIXRoaXMuJGZhdm9yaXRlUG9wb3ZlciB8fCAhdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkpIHtcblx0XHRcdC8vIE9wZW4gdGhlIGVhc3kgZmlsdGVyIHBvcG92ZXJcblx0XHRcdHRoaXMuc3RhdGUuaXNIaXN0b3J5RW5hYmxlZCA9IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmlzSGlzdG9yeUVuYWJsZWQoKSA/PyBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uZ2V0RmF2b3JpdGVRdWVyaWVzKCkgPz8gW107XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSAodGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uZ2V0UmVjZW50UXVlcmllcygpID8/IFtdKS5tYXAoKHF1ZXJ5KSA9PiBxdWVyeSk7XG5cdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/Lm9wZW5CeSh0aGlzLiRzZWFyY2hJbnB1dCk7XG5cdFx0fVxuXHR9XG5cblx0cmVxdWVzdEZhdm9yaXRlKGU6IEJ1dHRvbiRQcmVzc0V2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShlLmdldFNvdXJjZSgpLmdldFRleHQoKSk7XG5cdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHR9XG5cblx0b25FbnRlclByZXNzZWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuc3RhdGUucXVlcnlDaGFuZ2VkID0gZmFsc2U7XG5cdFx0bGV0IG1hZ2ljUXVlcnkgPSB0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKTtcblx0XHRpZiAobWFnaWNRdWVyeSA9PT0gXCJcIiAmJiB0aGlzLiRzZWFyY2hJbnB1dC5nZXRQbGFjZWhvbGRlcigpICE9PSB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKSB7XG5cdFx0XHRtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShtYWdpY1F1ZXJ5KTtcblx0XHR9XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlU3RhdGVUZXh0KFwiXCIpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlKFwiTm9uZVwiKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImVudGVyUHJlc3NlZFwiLCB7IHF1ZXJ5OiBtYWdpY1F1ZXJ5IH0pO1xuXHR9XG5cblx0YWRkUmVjZW50UXVlcnkocXVlcnlTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdC8vIE5vcm1hbGl6ZSBiYWNrc2xhc2hlcyBiZWZvcmUgc3RvcmluZ1xuXHRcdHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmc/LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKTtcblxuXHRcdGNvbnN0IHJlY2VudFF1ZXJ5SW5kZXggPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmluZEluZGV4KChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSA9PT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGlmIChxdWVyeVN0cmluZyAmJiByZWNlbnRRdWVyeUluZGV4ID09PSAtMSkge1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gW3F1ZXJ5U3RyaW5nXS5jb25jYXQodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzKTtcblx0XHRcdGlmICh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubGVuZ3RoID4gNSkge1xuXHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuc2xpY2UoMCwgNSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChxdWVyeVN0cmluZykge1xuXHRcdFx0Y29uc3QgcmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeVN0cmluZz8udG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRyZWNlbnRRdWVyaWVzLnVuc2hpZnQocXVlcnlTdHJpbmcpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gcmVjZW50UXVlcmllcztcblx0XHR9XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKGNoYW5nZWRQcm9wczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VkUHJvcHMuaW5jbHVkZXMoXCJmYXZvcml0ZVF1ZXJpZXNcIikgfHwgY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwicmVjZW50UXVlcmllc1wiKSkge1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uc2V0RmF2b3JpdGVRdWVyaWVzKHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzKTtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldFJlY2VudFF1ZXJpZXModGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocXVlcnkpID0+IHF1ZXJ5KSk7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubWFwKChyZWNlbnRRdWVyeSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHRleHQ6IHJlY2VudFF1ZXJ5LFxuXHRcdFx0XHRcdGlzRmF2b3JpdGU6ICEhdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmluZCgoZmF2b3JpdGVRdWVyeSkgPT4gZmF2b3JpdGVRdWVyeSA9PT0gcmVjZW50UXVlcnkpXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaGVsbEhpc3RvcnlQcm92aWRlci5nZXRJbnN0YW5jZSh0aGlzLmFwcElkID8/IFwiPHVua25vd25BcHA+XCIpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBjcmVhdGluZyBTaGVsbEhpc3RvcnlQcm92aWRlciBmb3IgZWFzeSBmaWx0ZXJcIiwgZXJyb3IgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVGYXZvcml0ZVBvcG92ZXIoKTogUG9wb3ZlciB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQb3BvdmVyXG5cdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1mYXZvcml0ZVBvcG92ZXJcIn1cblx0XHRcdFx0c2hvd0hlYWRlcj17ZmFsc2V9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9e2ZhbHNlfVxuXHRcdFx0XHRwbGFjZW1lbnQ9e1BsYWNlbWVudFR5cGUuQm90dG9tfVxuXHRcdFx0XHRzaG93QXJyb3c9e2ZhbHNlfVxuXHRcdFx0XHRpbml0aWFsRm9jdXM9e3RoaXMuJHNlYXJjaElucHV0fVxuXHRcdFx0XHRjbGFzcz17XCJzYXBGRUNvbnRyb2xzUG9wb3ZlclwifVxuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwIHx8IGVxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxGbGV4Qm94IGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Db2x1bW59IGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9PlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX1NVR0dFU1RJT05TX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwicmVjb21tZW5kZWRRdWVyaWVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cmFwPXtGbGV4V3JhcC5XcmFwfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlUaW55TWFyZ2luRW5kXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlcXVlc3RGYXZvcml0ZS5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0hCb3g+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZVN0eWxlPXtUaXRsZUxldmVsLkg2fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImZhdm9yaXRlUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bm9EYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SWxsdXN0cmF0ZWRNZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfREVTQ1JJUFRJT05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZVRpdGxlXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE9e1s8Q3VzdG9tRGF0YSBrZXk9e1widGV4dFwifSB2YWx1ZT17Y3R4LmdldE9iamVjdCgpfSAvPl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKGN0eC5nZXRPYmplY3QoKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBpbmc9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZFQ29udHJvbHNQb2ludGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9mYXZvcml0ZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHF1ZXJ5U3RyaW5nID0gY3R4LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuaW5kZXhPZihxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGluZGV4ICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbnRzOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEV2ZW50RGVsZWdhdGVIb29rXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YXA9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHJpZ2dlclBYSW50ZWdyYXRpb24oXCJmYXZvcml0ZVwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFkZEZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9MaXN0Pixcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckxhc3RVc2VkVGl0bGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0xBU1RfVVNFRFwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8TGlzdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwicmVjZW50UXVlcmllc1dpdEZhdm9yaXRlc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1vZGU9e0xpc3RNb2RlLkRlbGV0ZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlPXsoZTogTGlzdEJhc2UkRGVsZXRlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpdGVtID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKSBhcyBDdXN0b21MaXN0SXRlbTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtLmZvY3VzKCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgcXVlcnlTdHJpbmcgPSBlLmdldFBhcmFtZXRlcihcImxpc3RJdGVtXCIpPy5kYXRhKFwidGV4dFwiKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcXVlcnlTdHJpbmcpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgYmVmb3JlIGNvbXBhcmluZ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmc/LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeSAhPT0gcXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5vRGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0xBU1RfVVNFRF9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5FeHRyYVNtYWxsfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25UeXBlPXtJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vRW50cmllc31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9SRUNFTlRfREVTQ1JJUFRJT05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogRmxleEJveCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShjdHguZ2V0T2JqZWN0KCkudGV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVNtYWxsTWFyZ2luQmVnaW5cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhPXtbPEN1c3RvbURhdGEga2V5PXtcInRleHRcIn0gdmFsdWU9e2N0eC5nZXRPYmplY3QoKS50ZXh0fSAvPl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoPXtcIjEwMCVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Sb3d9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhbGlnbkl0ZW1zPXtGbGV4QWxpZ25JdGVtcy5DZW50ZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudD17RmxleEp1c3RpZnlDb250ZW50LlNwYWNlQmV0d2Vlbn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbmRlclR5cGU9e1wiQmFyZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKS50ZXh0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBpbmc9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZFQ29udHJvbHNQb2ludGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFwic2FwLWljb246Ly9mYXZvcml0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwic2FwLWljb246Ly9hZGQtZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMTEVEX1NUQVJcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9FTVBUWV9TVEFSVFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVuYWJsZWQ9e2xlc3NUaGFuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJpbmRTdGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJmYXZvcml0ZVF1ZXJpZXNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSBhcyBQYXRoSW5Nb2RlbEV4cHJlc3Npb248dW5rbm93bj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZEl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5hZGRGYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKS50ZXh0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzRmF2b3JpdGUgPSBjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpc0Zhdm9yaXRlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZUZyb21GYXZvcml0ZXMocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFkZFRvRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgd2hlbiBjbGlja2luZyBvbiBhZGQgZmF2b3JpdGUgYnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghdGhpcy5hZGRGYXZvcml0ZUJ1dHRvbkNsaWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkudGV4dC5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyaWdnZXJQWEludGVncmF0aW9uKFwicmVjZW50XCIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFkZEZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9MaXN0PlxuXHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1BvcG92ZXI+XG5cdFx0KSBhcyBQb3BvdmVyO1xuXHR9XG5cblx0cHJpdmF0ZSByZW1vdmVGcm9tRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcigoZGF0YSkgPT4gZGF0YS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeS50b0xvd2VyQ2FzZSgpKTtcblx0fVxuXG5cdHByaXZhdGUgYWRkVG9GYXZvcml0ZXMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld0Zhdm9yaXRlID0gW3F1ZXJ5XS5jb25jYXQodGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuY29uY2F0KCkpO1xuXHRcdGlmIChuZXdGYXZvcml0ZS5sZW5ndGggPiA1KSB7XG5cdFx0XHRuZXdGYXZvcml0ZS5wb3AoKTtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSBuZXdGYXZvcml0ZTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocm06IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEVhc3lGaWx0ZXJJbnB1dCk6IHZvaWQge1xuXHRcdHJldHVybiBqc3gucmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyKHJtLCBjb250cm9sLCAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8c3BhbiByZWY9e2NvbnRyb2x9IGNsYXNzPXtcInNhcEZFRWFzeUZpbHRlcklucHV0XCJ9PlxuXHRcdFx0XHRcdHtjb250cm9sLiRzZWFyY2hJbnB1dH1cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMENxQkEsZUFBZSxJQUFBQyxJQUFBLEdBRG5DQyxjQUFjLENBQUMsNENBQTRDLENBQUMsRUFBQUMsS0FBQSxHQUUzREMsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRSxhQUFhO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FB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
|
|
503
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVySW5wdXQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzMiLCJwcm9wZXJ0eSIsIl9kZWM0IiwiX2RlYzUiLCJldmVudCIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImRlZmluZVN0YXRlIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJmYXZvcml0ZUJ1dHRvbkNsaWNrZWQiLCJfZGVzY3JpcHRvcjciLCJpbml0aWFsaXplIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldFZhbHVlIiwiJHNlYXJjaElucHV0IiwiaXNIaXN0b3J5RW5hYmxlZCIsInN0YXRlIiwidmFsdWVPZiIsInNldFZhbHVlIiwidmFsdWUiLCJzZXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwicmVjb21tZW5kZWRRdWVyaWVzIiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwicG9wb3ZlckludmlzaWJsZU1lc3NhZ2UiLCJJbnZpc2libGVNZXNzYWdlIiwiZ2V0SW5zdGFuY2UiLCJjcmVhdGVJbnB1dCIsInNldEFzSW52YWxpZCIsIm1lc3NhZ2UiLCJzZXRWYWx1ZVN0YXRlIiwiVmFsdWVTdGF0ZSIsIldhcm5pbmciLCJzZXRWYWx1ZVN0YXRlVGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsInNldEFzVmFsaWQiLCJOb25lIiwiY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSIsIl9qc3giLCJJbnB1dCIsIndpZHRoIiwic2hvd0NsZWFySWNvbiIsImNoYW5nZSIsImUiLCJmaXJlRXZlbnQiLCJxdWVyeSIsImdldFBhcmFtZXRlciIsImxpdmVDaGFuZ2UiLCJxdWVyeUNoYW5nZWQiLCJnZXRTb3VyY2UiLCIkZmF2b3JpdGVQb3BvdmVyIiwiaXNPcGVuIiwib3BlblN1Z2dlc3Rpb25Qb3BvdmVyIiwiZ2V0VGV4dCIsImdldFZhbHVlU3RhdGUiLCJwbGFjZWhvbGRlciIsImZhdm9yaXRlUG9wb3ZlciIsImNyZWF0ZUZhdm9yaXRlUG9wb3ZlciIsImFkZERlcGVuZGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbmtleXVwIiwia2V5Iiwib25FbnRlclByZXNzZWQiLCJjbG9zZSIsIm9ua2V5ZG93biIsImxlbmd0aCIsInByZXZlbnREZWZhdWx0IiwicG9wb3ZlckNvbmFpbmVyIiwiZ2V0Q29udGVudCIsImNvbnRhaW5lckl0ZW1zIiwiZ2V0SXRlbXMiLCJmaW5kIiwiaXRlbSIsImlzRm9jdXNhYmxlIiwiZm9jdXMiLCJvbnRhcCIsIm9uZm9jdXNpbiIsInRhcmdldFRleHQiLCJ0YXJnZXQiLCJvdXRlclRleHQiLCJ0YXJnZXRJZCIsImlkIiwiaW5jbHVkZXMiLCJmYXZvcml0ZVF1ZXJpZXMiLCJmaWx0ZXIiLCJkYXRhIiwidG9Mb3dlckNhc2UiLCJyZWNlbnRRdWVyaWVzIiwib25BZnRlclJlbmRlcmluZyIsImFubm91bmNlIiwiSW52aXNpYmxlTWVzc2FnZU1vZGUiLCJBc3NlcnRpdmUiLCJzaGVsbEhpc3RvcnlQcm92aWRlciIsImdldEZhdm9yaXRlUXVlcmllcyIsImdldFJlY2VudFF1ZXJpZXMiLCJtYXAiLCJvcGVuQnkiLCJyZXF1ZXN0RmF2b3JpdGUiLCJtYWdpY1F1ZXJ5IiwiYWRkUmVjZW50UXVlcnkiLCJxdWVyeVN0cmluZyIsInJlcGxhY2UiLCJyZWNlbnRRdWVyeUluZGV4IiwiZmluZEluZGV4IiwiY29uY2F0Iiwic2xpY2UiLCJ1bnNoaWZ0Iiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNldEZhdm9yaXRlUXVlcmllcyIsInNldFJlY2VudFF1ZXJpZXMiLCJyZWNlbnRRdWVyaWVzV2l0RmF2b3JpdGVzIiwicmVjZW50UXVlcnkiLCJ0ZXh0IiwiaXNGYXZvcml0ZSIsImZhdm9yaXRlUXVlcnkiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJTaGVsbEhpc3RvcnlQcm92aWRlciIsImFwcElkIiwiZXJyb3IiLCJMb2ciLCJQb3BvdmVyIiwiZ2V0SWQiLCJzaG93SGVhZGVyIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJzaG93QXJyb3ciLCJpbml0aWFsRm9jdXMiLCJjbGFzcyIsInZpc2libGUiLCJlcXVhbCIsImJpbmRTdGF0ZSIsImNoaWxkcmVuIiwiY29udGVudCIsIkZsZXhCb3giLCJkaXJlY3Rpb24iLCJGbGV4RGlyZWN0aW9uIiwiQ29sdW1uIiwicmVuZGVyVHlwZSIsIml0ZW1zIiwiVGl0bGUiLCJ0aXRsZVN0eWxlIiwiVGl0bGVMZXZlbCIsIkg2IiwiSEJveCIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJjdHgiLCJCdXR0b24iLCJnZXRPYmplY3QiLCJwcmVzcyIsImJpbmQiLCJMaXN0Iiwibm9EYXRhIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwidGl0bGUiLCJpbGx1c3RyYXRpb25TaXplIiwiSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZSIsIkV4dHJhU21hbGwiLCJpbGx1c3RyYXRpb25UeXBlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSIsIk5vRW50cmllcyIsImRlc2NyaXB0aW9uIiwiQ3VzdG9tTGlzdEl0ZW0iLCJhcmlhTGFiZWxsZWRCeSIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiX2pzeHMiLCJSb3ciLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIlRleHQiLCJ0b29sdGlwIiwid3JhcHBpbmciLCJpY29uIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwiaW5kZXgiLCJpbmRleE9mIiwiZGVwZW5kZW50cyIsIkV2ZW50RGVsZWdhdGVIb29rIiwidGFwIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJtb2RlIiwiTGlzdE1vZGUiLCJEZWxldGUiLCJkZWxldGUiLCJlbmFibGVkIiwibGVzc1RoYW4iLCJyZW1vdmVGcm9tRmF2b3JpdGVzIiwiYWRkVG9GYXZvcml0ZXMiLCJuZXdGYXZvcml0ZSIsInBvcCIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsInJlZiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGJpbmRTdGF0ZSwgZXF1YWwsIGxlbmd0aCwgbGVzc1RoYW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVTdGF0ZSwgZGVmaW5lVUk1Q2xhc3MsIGV2ZW50LCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YsIHR5cGUgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBFdmVudERlbGVnYXRlSG9vayBmcm9tIFwic2FwL2ZlL2Jhc2UvRXZlbnREZWxlZ2F0ZUhvb2tcIjtcbmltcG9ydCBqc3ggZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IFNoZWxsSGlzdG9yeVByb3ZpZGVyIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9TaGVsbEhpc3RvcnlQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEN1c3RvbUxpc3RJdGVtIGZyb20gXCJzYXAvbS9DdXN0b21MaXN0SXRlbVwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VTaXplIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VTaXplXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnB1dCRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBJbnB1dCBmcm9tIFwic2FwL20vSW5wdXRcIjtcbmltcG9ydCBMaXN0IGZyb20gXCJzYXAvbS9MaXN0XCI7XG5pbXBvcnQgdHlwZSB7IExpc3RCYXNlJERlbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC9tL0xpc3RCYXNlXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IHR5cGUgU3RhbmRhcmRMaXN0SXRlbSBmcm9tIFwic2FwL20vU3RhbmRhcmRMaXN0SXRlbVwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUaXRsZSBmcm9tIFwic2FwL20vVGl0bGVcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIEZsZXhBbGlnbkl0ZW1zLCBGbGV4RGlyZWN0aW9uLCBGbGV4SnVzdGlmeUNvbnRlbnQsIEZsZXhXcmFwLCBMaXN0TW9kZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IEludmlzaWJsZU1lc3NhZ2VNb2RlLCBUaXRsZUxldmVsLCBWYWx1ZVN0YXRlIH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuXG50eXBlIFJlY2VudFR5cGUgPSB7XG5cdHRleHQ6IHN0cmluZztcblx0aXNGYXZvcml0ZTogYm9vbGVhbjtcbn07XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29udHJvbHMuZWFzeUZpbHRlci5FYXN5RmlsdGVySW5wdXRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJJbnB1dCBleHRlbmRzIENvbnRyb2wge1xuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLklucHV0XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdCRzZWFyY2hJbnB1dCE6IElucHV0O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QGV2ZW50KClcblx0cXVlcnlDaGFuZ2VkPzogRXZlbnRIYW5kbGVyPFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZXZlbnQoKVxuXHRlbnRlclByZXNzZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4+O1xuXG5cdEBldmVudCgpXG5cdGxpdmVDaGFuZ2U/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdHNoZWxsSGlzdG9yeVByb3ZpZGVyOiBTaGVsbEhpc3RvcnlQcm92aWRlciB8IHVuZGVmaW5lZDtcblxuXHRwb3BvdmVySW52aXNpYmxlTWVzc2FnZTogSW52aXNpYmxlTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuXHQkZmF2b3JpdGVQb3BvdmVyOiBQb3BvdmVyIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgZmF2b3JpdGVCdXR0b25DbGlja2VkID0gZmFsc2U7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRxdWVyeUNoYW5nZWQ6IGJvb2xlYW47XG5cdFx0cmVjZW50UXVlcmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0cmVjZW50UXVlcmllc1dpdEZhdm9yaXRlczogcmVhZG9ubHkgUmVjZW50VHlwZVtdO1xuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0ZmF2b3JpdGVRdWVyaWVzOiBzdHJpbmdbXTtcblx0XHRyZWNvbW1lbmRlZFF1ZXJpZXM6IHN0cmluZ1tdO1xuXHR9PiA9IHtcblx0XHRxdWVyeUNoYW5nZWQ6IGZhbHNlLFxuXHRcdGlzSGlzdG9yeUVuYWJsZWQ6IGZhbHNlLFxuXHRcdHJlY2VudFF1ZXJpZXM6IFtdLFxuXHRcdHJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXM6IFtdLFxuXHRcdGZhdm9yaXRlUXVlcmllczogW10gYXMgc3RyaW5nW10sXG5cdFx0cmVjb21tZW5kZWRRdWVyaWVzOiBbXSBhcyBzdHJpbmdbXVxuXHR9O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJJbnB1dD4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VmFsdWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0VmFsdWUoKTtcblx0fVxuXG5cdHB1YmxpYyBpc0hpc3RvcnlFbmFibGVkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLmlzSGlzdG9yeUVuYWJsZWQudmFsdWVPZigpO1xuXHR9XG5cblx0c2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKHZhbHVlKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRQbGFjZWhvbGRlcih2YWx1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMgPSB0aGlzLnJlY29tbWVuZGVkVmFsdWVzID8/IFtdO1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMucG9wb3ZlckludmlzaWJsZU1lc3NhZ2UgPSBJbnZpc2libGVNZXNzYWdlLmdldEluc3RhbmNlKCk7XG5cdFx0dGhpcy5jcmVhdGVJbnB1dCgpO1xuXHR9XG5cblx0c2V0QXNJbnZhbGlkKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlU3RhdGUoVmFsdWVTdGF0ZS5XYXJuaW5nKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5zZXRWYWx1ZVN0YXRlVGV4dChtZXNzYWdlKTtcblx0XHR0aGlzLiRzZWFyY2hJbnB1dC5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdHNldEFzVmFsaWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuc2V0VmFsdWVTdGF0ZShWYWx1ZVN0YXRlLk5vbmUpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0LmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0fVxuXG5cdGNyZWF0ZUlucHV0KCk6IHZvaWQge1xuXHRcdHRoaXMuJHNlYXJjaElucHV0ID0gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdHdpZHRoPVwiMTAwJVwiXG5cdFx0XHRcdHNob3dDbGVhckljb249e3RydWV9XG5cdFx0XHRcdGNoYW5nZT17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInF1ZXJ5Q2hhbmdlZFwiLCB7IHF1ZXJ5OiBlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpIH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXsoZTogSW5wdXQkTGl2ZUNoYW5nZUV2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zdGF0ZS5xdWVyeUNoYW5nZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwibGl2ZUNoYW5nZVwiKTtcblx0XHRcdFx0XHRpZiAoIWUuZ2V0U291cmNlKCkuZ2V0VmFsdWUoKSAmJiAhKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoZS5nZXRQYXJhbWV0ZXIoXCJ2YWx1ZVwiKSA9PT0gXCJcIikge1xuXHRcdFx0XHRcdFx0dGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlU3RhdGUoKSA9PT0gVmFsdWVTdGF0ZS5XYXJuaW5nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEFzVmFsaWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH19XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpfVxuXHRcdFx0PjwvSW5wdXQ+XG5cdFx0KTtcblxuXHRcdGNvbnN0IGZhdm9yaXRlUG9wb3ZlciA9IHRoaXMuY3JlYXRlRmF2b3JpdGVQb3BvdmVyKCk7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyID0gZmF2b3JpdGVQb3BvdmVyO1xuXG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRGVwZW5kZW50KGZhdm9yaXRlUG9wb3Zlcik7XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQuYWRkRXZlbnREZWxlZ2F0ZSh7XG5cdFx0XHRvbmtleXVwOiAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuXHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy4kZmF2b3JpdGVQb3BvdmVyICYmIHRoaXMuJHNlYXJjaElucHV0LmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXIuY2xvc2UoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGUua2V5ID09PSBcIlRhYlwiICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkubGVuZ3RoID09PSAwICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFZhbHVlKCkgIT09IHRoaXMuJHNlYXJjaElucHV0Py5nZXRQbGFjZWhvbGRlcigpICYmXG5cdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LmdldFBsYWNlaG9sZGVyKCkgIT09IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUExBQ0VIT0xERVJcIilcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZSh0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0UGxhY2Vob2xkZXIoKSk7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJsaXZlQ2hhbmdlXCIpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGUua2V5ID09PSBcIkFycm93RG93blwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgcG9wb3ZlckNvbmFpbmVyID0gdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5nZXRDb250ZW50KClbMF07XG5cdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySXRlbXMgPSAocG9wb3ZlckNvbmFpbmVyIGFzIEZsZXhCb3gpLmdldEl0ZW1zKCk7XG5cdFx0XHRcdFx0Y29udGFpbmVySXRlbXM/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNGb2N1c2FibGUoKSAmJiAoaXRlbS5mb2N1cygpLCB0cnVlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRvbnRhcDogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fSxcblx0XHRcdG9uZm9jdXNpbjogKCkgPT4ge1xuXHRcdFx0XHR0aGlzLm9wZW5TdWdnZXN0aW9uUG9wb3ZlcigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlci5hZGRFdmVudERlbGVnYXRlKHtcblx0XHRcdG9ua2V5ZG93bjogKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0VGV4dCA9IChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm91dGVyVGV4dDtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0SWQgPSAoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5pZDtcblx0XHRcdFx0c3dpdGNoIChlLmtleSkge1xuXHRcdFx0XHRcdGNhc2UgXCJFbnRlclwiOlxuXHRcdFx0XHRcdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlKHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkRlbGV0ZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRhcmdldElkPy5pbmNsdWRlcyhcImVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIikpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0KGRhdGEpID0+IGRhdGEudG9Mb3dlckNhc2UoKSAhPT0gdGFyZ2V0VGV4dC50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmlsdGVyKChxdWVyeSkgPT4gcXVlcnkgIT09IHRhcmdldFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcIkVzY2FwZVwiOlxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uaXNPcGVuKCkpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uQWZ0ZXJSZW5kZXJpbmc6ICgpID0+IHtcblx0XHRcdFx0dGhpcy5wb3BvdmVySW52aXNpYmxlTWVzc2FnZT8uYW5ub3VuY2UoXG5cdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9FQVNZX0ZJTFRFUl9JTlBVVF9URVhUX0xJTktfUE9QT1ZFUl9BUklBXCIpLFxuXHRcdFx0XHRcdEludmlzaWJsZU1lc3NhZ2VNb2RlLkFzc2VydGl2ZVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBvcGVuU3VnZ2VzdGlvblBvcG92ZXIoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKSAmJiAoIXRoaXMuJGZhdm9yaXRlUG9wb3ZlciB8fCAhdGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5pc09wZW4oKSkpIHtcblx0XHRcdC8vIE9wZW4gdGhlIGVhc3kgZmlsdGVyIHBvcG92ZXJcblx0XHRcdHRoaXMuc3RhdGUuaXNIaXN0b3J5RW5hYmxlZCA9IHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LmlzSGlzdG9yeUVuYWJsZWQoKSA/PyBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzID0gdGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uZ2V0RmF2b3JpdGVRdWVyaWVzKCkgPz8gW107XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSAodGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uZ2V0UmVjZW50UXVlcmllcygpID8/IFtdKS5tYXAoKHF1ZXJ5KSA9PiBxdWVyeSk7XG5cdFx0XHR0aGlzLiRmYXZvcml0ZVBvcG92ZXI/Lm9wZW5CeSh0aGlzLiRzZWFyY2hJbnB1dCk7XG5cdFx0fVxuXHR9XG5cblx0cmVxdWVzdEZhdm9yaXRlKGU6IEJ1dHRvbiRQcmVzc0V2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShlLmdldFNvdXJjZSgpLmdldFRleHQoKSk7XG5cdFx0dGhpcy5vbkVudGVyUHJlc3NlZCgpO1xuXHR9XG5cblx0b25FbnRlclByZXNzZWQoKTogdm9pZCB7XG5cdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdHRoaXMuc3RhdGUucXVlcnlDaGFuZ2VkID0gZmFsc2U7XG5cdFx0bGV0IG1hZ2ljUXVlcnkgPSB0aGlzLiRzZWFyY2hJbnB1dD8uZ2V0VmFsdWUoKTtcblx0XHRpZiAobWFnaWNRdWVyeSA9PT0gXCJcIiAmJiB0aGlzLiRzZWFyY2hJbnB1dC5nZXRQbGFjZWhvbGRlcigpICE9PSB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKSB7XG5cdFx0XHRtYWdpY1F1ZXJ5ID0gdGhpcy4kc2VhcmNoSW5wdXQuZ2V0UGxhY2Vob2xkZXIoKTtcblx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShtYWdpY1F1ZXJ5KTtcblx0XHR9XG5cdFx0dGhpcy4kc2VhcmNoSW5wdXQ/LnNldFZhbHVlU3RhdGVUZXh0KFwiXCIpO1xuXHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZVN0YXRlKFwiTm9uZVwiKTtcblx0XHR0aGlzLmZpcmVFdmVudChcImVudGVyUHJlc3NlZFwiLCB7IHF1ZXJ5OiBtYWdpY1F1ZXJ5IH0pO1xuXHR9XG5cblx0YWRkUmVjZW50UXVlcnkocXVlcnlTdHJpbmc6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdC8vIE5vcm1hbGl6ZSBiYWNrc2xhc2hlcyBiZWZvcmUgc3RvcmluZ1xuXHRcdHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmc/LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKTtcblxuXHRcdGNvbnN0IHJlY2VudFF1ZXJ5SW5kZXggPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuZmluZEluZGV4KChxdWVyeSkgPT4gcXVlcnkudG9Mb3dlckNhc2UoKSA9PT0gcXVlcnlTdHJpbmc/LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGlmIChxdWVyeVN0cmluZyAmJiByZWNlbnRRdWVyeUluZGV4ID09PSAtMSkge1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gW3F1ZXJ5U3RyaW5nXS5jb25jYXQodGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzKTtcblx0XHRcdGlmICh0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubGVuZ3RoID4gNSkge1xuXHRcdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMuc2xpY2UoMCwgNSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChxdWVyeVN0cmluZykge1xuXHRcdFx0Y29uc3QgcmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeVN0cmluZz8udG9Mb3dlckNhc2UoKSk7XG5cdFx0XHRyZWNlbnRRdWVyaWVzLnVuc2hpZnQocXVlcnlTdHJpbmcpO1xuXHRcdFx0dGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzID0gcmVjZW50UXVlcmllcztcblx0XHR9XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKGNoYW5nZWRQcm9wczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VkUHJvcHMuaW5jbHVkZXMoXCJmYXZvcml0ZVF1ZXJpZXNcIikgfHwgY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwicmVjZW50UXVlcmllc1wiKSkge1xuXHRcdFx0dGhpcy5zaGVsbEhpc3RvcnlQcm92aWRlcj8uc2V0RmF2b3JpdGVRdWVyaWVzKHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzKTtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXI/LnNldFJlY2VudFF1ZXJpZXModGhpcy5zdGF0ZS5yZWNlbnRRdWVyaWVzLm1hcCgocXVlcnkpID0+IHF1ZXJ5KSk7XG5cdFx0XHR0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXNXaXRGYXZvcml0ZXMgPSB0aGlzLnN0YXRlLnJlY2VudFF1ZXJpZXMubWFwKChyZWNlbnRRdWVyeSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHRleHQ6IHJlY2VudFF1ZXJ5LFxuXHRcdFx0XHRcdGlzRmF2b3JpdGU6ICEhdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuZmluZCgoZmF2b3JpdGVRdWVyeSkgPT4gZmF2b3JpdGVRdWVyeSA9PT0gcmVjZW50UXVlcnkpXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMuc2hlbGxIaXN0b3J5UHJvdmlkZXIgPSBhd2FpdCBTaGVsbEhpc3RvcnlQcm92aWRlci5nZXRJbnN0YW5jZSh0aGlzLmFwcElkID8/IFwiPHVua25vd25BcHA+XCIpO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBjcmVhdGluZyBTaGVsbEhpc3RvcnlQcm92aWRlciBmb3IgZWFzeSBmaWx0ZXJcIiwgZXJyb3IgYXMgc3RyaW5nKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVGYXZvcml0ZVBvcG92ZXIoKTogUG9wb3ZlciB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxQb3BvdmVyXG5cdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1mYXZvcml0ZVBvcG92ZXJcIn1cblx0XHRcdFx0c2hvd0hlYWRlcj17ZmFsc2V9XG5cdFx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc9e2ZhbHNlfVxuXHRcdFx0XHRwbGFjZW1lbnQ9e1BsYWNlbWVudFR5cGUuQm90dG9tfVxuXHRcdFx0XHRzaG93QXJyb3c9e2ZhbHNlfVxuXHRcdFx0XHRpbml0aWFsRm9jdXM9e3RoaXMuJHNlYXJjaElucHV0fVxuXHRcdFx0XHRjbGFzcz17XCJzYXBGRUNvbnRyb2xzUG9wb3ZlclwifVxuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwIHx8IGVxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0PlxuXHRcdFx0XHR7e1xuXHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdDxGbGV4Qm94IGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Db2x1bW59IGNsYXNzPXtcInNhcFVpQ29udGVudFBhZGRpbmdcIn0gcmVuZGVyVHlwZT17XCJCYXJlXCJ9PlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGl0bGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX1NVR0dFU1RJT05TX1RJVExFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVGl0bGVCb3JkZXJcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5yZWNvbW1lbmRlZFF1ZXJpZXMubGVuZ3RoID4gMH1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PEhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlDb250ZW50UGFkZGluZ1wifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwicmVjb21tZW5kZWRRdWVyaWVzXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cmFwPXtGbGV4V3JhcC5XcmFwfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnJlY29tbWVuZGVkUXVlcmllcy5sZW5ndGggPiAwfVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlUaW55TWFyZ2luRW5kXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17Y3R4LmdldE9iamVjdCgpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLnJlcXVlc3RGYXZvcml0ZS5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHQ8L0hCb3g+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PFRpdGxlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXt0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVUaXRsZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZVN0eWxlPXtUaXRsZUxldmVsLkg2fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUaXRsZUJvcmRlclwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2aXNpYmxlPXtlcXVhbChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJpc0hpc3RvcnlFbmFibGVkXCIpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0PExpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImZhdm9yaXRlUXVlcmllc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bm9EYXRhOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8SWxsdXN0cmF0ZWRNZXNzYWdlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfVElUTEVcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlsbHVzdHJhdGlvblNpemU9e0lsbHVzdHJhdGVkTWVzc2FnZVNpemUuRXh0cmFTbWFsbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uVHlwZT17SWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5Ob0VudHJpZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfRU1QVFlfRkFWT1JJVEVfREVTQ1JJUFRJT05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogU3RhbmRhcmRMaXN0SXRlbSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWQgKyBcIi1lYXN5RmlsdGVyRmF2b3JpdGVJdGVtXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZVRpdGxlXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE9e1s8Q3VzdG9tRGF0YSBrZXk9e1widGV4dFwifSB2YWx1ZT17Y3R4LmdldE9iamVjdCgpfSAvPl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0LnNldFZhbHVlKGN0eC5nZXRPYmplY3QoKSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR3aWR0aD17XCIxMDAlXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaXJlY3Rpb249e0ZsZXhEaXJlY3Rpb24uUm93fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZW5kZXJUeXBlPXtcIkJhcmVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtjdHguZ2V0T2JqZWN0KCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e2N0eC5nZXRPYmplY3QoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBpbmc9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZFQ29udHJvbHNQb2ludGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9mYXZvcml0ZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTExFRF9TVEFSXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17W3RoaXMuZ2V0SWQoKSArIFwiLWVhc3lGaWx0ZXJGYXZvcml0ZUl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZmF2b3JpdGVQb3BvdmVyPy5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHF1ZXJ5U3RyaW5nID0gY3R4LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gdGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuaW5kZXhPZihxdWVyeVN0cmluZyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGluZGV4ICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSB0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcy5maWx0ZXIoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChxdWVyeSkgPT4gcXVlcnkgIT09IHF1ZXJ5U3RyaW5nXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghdGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0cmlnZ2VyUFhJbnRlZ3JhdGlvbihcImZhdm9yaXRlXCIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9MaXN0Pixcblx0XHRcdFx0XHRcdFx0XHRcdDxUaXRsZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItZWFzeUZpbHRlckxhc3RVc2VkVGl0bGVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGVTdHlsZT17VGl0bGVMZXZlbC5INn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0xBU1RfVVNFRFwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1RpdGxlQm9yZGVyXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZpc2libGU9e2VxdWFsKGJpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcImlzSGlzdG9yeUVuYWJsZWRcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz4sXG5cdFx0XHRcdFx0XHRcdFx0XHQ8TGlzdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwicmVjZW50UXVlcmllc1dpdEZhdm9yaXRlc1wiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0dmlzaWJsZT17ZXF1YWwoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwiaXNIaXN0b3J5RW5hYmxlZFwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG1vZGU9e0xpc3RNb2RlLkRlbGV0ZX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1t0aGlzLmdldElkKCkgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRUaXRsZVwiXX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlPXsoZTogTGlzdEJhc2UkRGVsZXRlRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBpdGVtID0gZS5nZXRQYXJhbWV0ZXIoXCJsaXN0SXRlbVwiKSBhcyBDdXN0b21MaXN0SXRlbTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtLmZvY3VzKCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgcXVlcnlTdHJpbmcgPSBlLmdldFBhcmFtZXRlcihcImxpc3RJdGVtXCIpPy5kYXRhKFwidGV4dFwiKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghcXVlcnlTdHJpbmcpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBOb3JtYWxpemUgYmFja3NsYXNoZXMgYmVmb3JlIGNvbXBhcmluZ1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmc/LnJlcGxhY2UoL1xcXFwvZywgXCJcXFxcXFxcXFwiKTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUucmVjZW50UXVlcmllcyA9IHRoaXMuc3RhdGUucmVjZW50UXVlcmllcy5maWx0ZXIoKHF1ZXJ5KSA9PiBxdWVyeSAhPT0gcXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5vRGF0YTogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PElsbHVzdHJhdGVkTWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0VNUFRZX0xBU1RfVVNFRF9USVRMRVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWxsdXN0cmF0aW9uU2l6ZT17SWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5FeHRyYVNtYWxsfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpbGx1c3RyYXRpb25UeXBlPXtJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLk5vRW50cmllc31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9FTVBUWV9SRUNFTlRfREVTQ1JJUFRJT05cIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zOiAoaWQ6IHN0cmluZywgY3R4OiBDb250ZXh0KTogRmxleEJveCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tTGlzdEl0ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZD17aWQgKyBcIi1lYXN5RmlsdGVyTGFzdFVzZWRJdGVtXCJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJHNlYXJjaElucHV0Py5zZXRWYWx1ZShjdHguZ2V0T2JqZWN0KCkudGV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLm9uRW50ZXJQcmVzc2VkKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBVaVNtYWxsTWFyZ2luQmVnaW5cIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhPXtbPEN1c3RvbURhdGEga2V5PXtcInRleHRcIn0gdmFsdWU9e2N0eC5nZXRPYmplY3QoKS50ZXh0fSAvPl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZFRpdGxlXCJdfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoPXtcIjEwMCVcIn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpcmVjdGlvbj17RmxleERpcmVjdGlvbi5Sb3d9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhbGlnbkl0ZW1zPXtGbGV4QWxpZ25JdGVtcy5DZW50ZXJ9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqdXN0aWZ5Q29udGVudD17RmxleEp1c3RpZnlDb250ZW50LlNwYWNlQmV0d2Vlbn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbmRlclR5cGU9e1wiQmFyZVwifVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ9e2lkfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e2N0eC5nZXRPYmplY3QoKS50ZXh0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwPXtjdHguZ2V0T2JqZWN0KCkudGV4dH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3JhcHBpbmc9e2ZhbHNlfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZFQ29udHJvbHNQb2ludGVyXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdD48L1RleHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGljb249e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFwic2FwLWljb246Ly9mYXZvcml0ZVwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwic2FwLWljb246Ly9hZGQtZmF2b3JpdGVcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXA9e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN0eC5nZXRPYmplY3QoKS5pc0Zhdm9yaXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMTEVEX1NUQVJcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDogdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9FTVBUWV9TVEFSVFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVuYWJsZWQ9e2xlc3NUaGFuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJpbmRTdGF0ZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJmYXZvcml0ZVF1ZXJpZXNcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSBhcyBQYXRoSW5Nb2RlbEV4cHJlc3Npb248dW5rbm93bj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e1tpZCArIFwiLWVhc3lGaWx0ZXJMYXN0VXNlZEl0ZW1cIl19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGZhdm9yaXRlUG9wb3Zlcj8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IGN0eC5nZXRPYmplY3QoKS50ZXh0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGlzRmF2b3JpdGUgPSBjdHguZ2V0T2JqZWN0KCkuaXNGYXZvcml0ZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChpc0Zhdm9yaXRlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZUZyb21GYXZvcml0ZXMocXVlcnlTdHJpbmcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmFkZFRvRmF2b3JpdGVzKHF1ZXJ5U3RyaW5nKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVwZW5kZW50czogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxFdmVudERlbGVnYXRlSG9va1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgd2hlbiBjbGlja2luZyBvbiBhZGQgZmF2b3JpdGUgYnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghdGhpcy5mYXZvcml0ZUJ1dHRvbkNsaWNrZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRzZWFyY2hJbnB1dD8uc2V0VmFsdWUoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdHguZ2V0T2JqZWN0KCkudGV4dC5yZXBsYWNlKC9cXFxcXFxcXC9nLCBcIlxcXFxcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRyaWdnZXJQWEludGVncmF0aW9uKFwicmVjZW50XCIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub25FbnRlclByZXNzZWQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmZhdm9yaXRlQnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9DdXN0b21MaXN0SXRlbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0PC9MaXN0PlxuXHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L1BvcG92ZXI+XG5cdFx0KSBhcyBQb3BvdmVyO1xuXHR9XG5cblx0cHJpdmF0ZSByZW1vdmVGcm9tRmF2b3JpdGVzKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnN0YXRlLmZhdm9yaXRlUXVlcmllcyA9IHRoaXMuc3RhdGUuZmF2b3JpdGVRdWVyaWVzLmZpbHRlcigoZGF0YSkgPT4gZGF0YS50b0xvd2VyQ2FzZSgpICE9PSBxdWVyeS50b0xvd2VyQ2FzZSgpKTtcblx0fVxuXG5cdHByaXZhdGUgYWRkVG9GYXZvcml0ZXMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld0Zhdm9yaXRlID0gW3F1ZXJ5XS5jb25jYXQodGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMuY29uY2F0KCkpO1xuXHRcdGlmIChuZXdGYXZvcml0ZS5sZW5ndGggPiA1KSB7XG5cdFx0XHRuZXdGYXZvcml0ZS5wb3AoKTtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS5mYXZvcml0ZVF1ZXJpZXMgPSBuZXdGYXZvcml0ZTtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocm06IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEVhc3lGaWx0ZXJJbnB1dCk6IHZvaWQge1xuXHRcdHJldHVybiBqc3gucmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyKHJtLCBjb250cm9sLCAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8c3BhbiByZWY9e2NvbnRyb2x9IGNsYXNzPXtcInNhcEZFRWFzeUZpbHRlcklucHV0XCJ9PlxuXHRcdFx0XHRcdHtjb250cm9sLiRzZWFyY2hJbnB1dH1cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMENxQkEsZUFBZSxJQUFBQyxJQUFBLEdBRG5DQyxjQUFjLENBQUMsNENBQTRDLENBQUMsRUFBQUMsS0FBQSxHQUUzREMsV0FBVyxDQUFDO0lBQUVDLElBQUksRUFBRSxhQUFhO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR3RFQyxRQUFRLENBQUM7SUFBRUosSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHNUJELFFBQVEsQ0FBQztJQUFFSixJQUFJLEVBQUU7RUFBUSxDQUFDLENBQUMsRUFBQU0sS0FBQSxHQUczQkMsS0FBSyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdQRCxLQUFLLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR1BGLEtBQUssQ0FBQyxDQUFDLEVBQUFHLEtBQUEsR0FhUEMsV0FBVyxDQUFDLENBQUMsRUFBQWYsSUFBQSxDQUFBZ0IsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxRQUFBO0lBaUJkLFNBQUFuQixnQkFBWW9CLFVBQXVFLEVBQUVDLE1BQXlCLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQy9HQSxLQUFBLEdBQUFILFFBQUEsQ0FBQUksSUFBQSxPQUFNSCxVQUFVLEVBQVlDLE1BQU0sQ0FBQztNQUFDRywwQkFBQSxDQUFBRixLQUFBLGtCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxXQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSx1QkFBQUssWUFBQSxFQUFBTCxLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFNLFlBQUEsRUFBQU4sS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBTyxZQUFBLEVBQUFQLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxnQkFBQVEsWUFBQSxFQUFBUixLQUFBO01BQUFBLEtBQUEsQ0FwQjdCUyxxQkFBcUIsR0FBRyxLQUFLO01BQUFQLDBCQUFBLENBQUFGLEtBQUEsV0FBQVUsWUFBQSxFQUFBVixLQUFBO01BcUJwQ0EsS0FBQSxDQUFLVyxVQUFVLENBQUMsQ0FBQztNQUFDLE9BQUFYLEtBQUE7SUFDbkI7SUFBQ1ksUUFBQSxHQUFBbEMsZUFBQTtJQUFBbUMsY0FBQSxDQUFBbkMsZUFBQSxFQUFBbUIsUUFBQTtJQUFBLElBQUFpQixNQUFBLEdBQUFwQyxlQUFBLENBQUFxQyxTQUFBO0lBQUFELE1BQUEsQ0FFTUUsUUFBUSxHQUFmLFNBQU9BLFFBQVFBLENBQUEsRUFBVztNQUN6QixPQUFPLElBQUksQ0FBQ0MsWUFBWSxDQUFDRCxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUFGLE1BQUEsQ0FFTUksZ0JBQWdCLEdBQXZCLFNBQU9BLGdCQUFnQkEsQ0FBQSxFQUFZO01BQ2xDLE9BQU8sSUFBSSxDQUFDQyxLQUFLLENBQUNELGdCQUFnQixDQUFDRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQUFOLE1BQUEsQ0FFRE8sUUFBUSxHQUFSLFNBQUFBLFFBQVFBLENBQUNDLEtBQWEsRUFBUTtNQUM3QixJQUFJLENBQUNMLFlBQVksQ0FBQ0ksUUFBUSxDQUFDQyxLQUFLLENBQUM7TUFDakMsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUFBUixNQUFBLENBRURTLGNBQWMsR0FBZCxTQUFBQSxjQUFjQSxDQUFDRCxLQUFhLEVBQVE7TUFDbkMsSUFBSSxDQUFDTCxZQUFZLENBQUNNLGNBQWMsQ0FBQ0QsS0FBSyxDQUFDO01BQ3ZDLE9BQU8sSUFBSTtJQUNaLENBQUM7SUFBQVIsTUFBQSxDQUVNVSxjQUFjLEdBQXJCLFNBQU9BLGNBQWNBLENBQUEsRUFBVztNQUMvQixPQUFPLElBQUksQ0FBQ1AsWUFBWSxDQUFDTyxjQUFjLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUFWLE1BQUEsQ0FFREgsVUFBVSxHQUFWLFNBQUFBLFVBQVVBLENBQUEsRUFBUztNQUNsQixJQUFJLENBQUNRLEtBQUssQ0FBQ00sa0JBQWtCLEdBQUcsSUFBSSxDQUFDQyxpQkFBaUIsSUFBSSxFQUFFO01BQzVELElBQUksQ0FBQ0MsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO01BQ2xFLElBQUksQ0FBQ0MsdUJBQXVCLEdBQUdDLGdCQUFnQixDQUFDQyxXQUFXLENBQUMsQ0FBQztNQUM3RCxJQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFBQW5CLE1BQUEsQ0FFRG9CLFlBQVksR0FBWixTQUFBQSxZQUFZQSxDQUFDQyxPQUFlLEVBQVE7TUFDbkMsSUFBSSxDQUFDbEIsWUFBWSxDQUFDbUIsYUFBYSxDQUFDQyxVQUFVLENBQUNDLE9BQU8sQ0FBQztNQUNuRCxJQUFJLENBQUNyQixZQUFZLENBQUNzQixpQkFBaUIsQ0FBQ0osT0FBTyxDQUFDO01BQzVDLElBQUksQ0FBQ2xCLFlBQVksQ0FBQ3VCLHFCQUFxQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUFBMUIsTUFBQSxDQUVEMkIsVUFBVSxHQUFWLFNBQUFBLFVBQVVBLENBQUEsRUFBUztNQUNsQixJQUFJLENBQUN4QixZQUFZLENBQUNtQixhQUFhLENBQUNDLFVBQVUsQ0FBQ0ssSUFBSSxDQUFDO01BQ2hELElBQUksQ0FBQ3pCLFlBQVksQ0FBQzBCLHNCQUFzQixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUFBN0IsTUFBQSxDQUVEbUIsV0FBVyxHQUFYLFNBQUFBLFdBQVdBLENBQUEsRUFBUztNQUNuQixJQUFJLENBQUNoQixZQUFZLEdBQ2hCMkIsSUFBQSxDQUFDQyxLQUFLO1FBQ0xDLEtBQUssRUFBQyxNQUFNO1FBQ1pDLGFBQWEsRUFBRSxJQUFLO1FBQ3BCQyxNQUFNLEVBQUdDLENBQUMsSUFBVztVQUNwQixJQUFJLENBQUNDLFNBQVMsQ0FBQyxjQUFjLEVBQUU7WUFBRUMsS0FBSyxFQUFFRixDQUFDLENBQUNHLFlBQVksQ0FBQyxPQUFPO1VBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUU7UUFDRkMsVUFBVSxFQUFHSixDQUF3QixJQUFXO1VBQy9DLElBQUksQ0FBQzlCLEtBQUssQ0FBQ21DLFlBQVksR0FBRyxJQUFJO1VBQzlCLElBQUksQ0FBQ0osU0FBUyxDQUFDLFlBQVksQ0FBQztVQUM1QixJQUFJLENBQUNELENBQUMsQ0FBQ00sU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUN3QyxnQkFBZ0IsRUFBRUMsTUFBTSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUM3RSxJQUFJLENBQUNDLHFCQUFxQixDQUFDLENBQUM7VUFDN0I7VUFDQSxJQUFJVCxDQUFDLENBQUNHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDN0IsY0FBYyxDQUFDLElBQUksQ0FBQ0ksY0FBYyxDQUFDZ0MsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUM7VUFDOUU7VUFDQSxJQUFJLElBQUksQ0FBQzFDLFlBQVksQ0FBQzJDLGFBQWEsQ0FBQyxDQUFDLEtBQUt2QixVQUFVLENBQUNDLE9BQU8sRUFBRTtZQUM3RCxJQUFJLENBQUNHLFVBQVUsQ0FBQyxDQUFDO1VBQ2xCO1FBQ0QsQ0FBRTtRQUNGb0IsV0FBVyxFQUFFLElBQUksQ0FBQ2xDLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkI7TUFBRSxDQUMvRCxDQUNSO01BRUQsTUFBTUcsZUFBZSxHQUFHLElBQUksQ0FBQ0MscUJBQXFCLENBQUMsQ0FBQztNQUNwRCxJQUFJLENBQUNQLGdCQUFnQixHQUFHTSxlQUFlO01BRXZDLElBQUksQ0FBQzdDLFlBQVksQ0FBQytDLFlBQVksQ0FBQ0YsZUFBZSxDQUFDO01BQy9DLElBQUksQ0FBQzdDLFlBQVksQ0FBQ2dELGdCQUFnQixDQUFDO1FBQ2xDQyxPQUFPLEVBQUdqQixDQUFnQixJQUFLO1VBQzlCLElBQUlBLENBQUMsQ0FBQ2tCLEdBQUcsS0FBSyxPQUFPLEVBQUU7WUFDdEIsSUFBSSxDQUFDQyxjQUFjLENBQUMsQ0FBQztVQUN0QjtVQUNBLElBQUksSUFBSSxDQUFDWixnQkFBZ0IsSUFBSSxJQUFJLENBQUN2QyxZQUFZLENBQUNELFFBQVEsQ0FBQyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDd0MsZ0JBQWdCLENBQUNhLEtBQUssQ0FBQyxDQUFDO1VBQzlCO1FBQ0QsQ0FBQztRQUNEQyxTQUFTLEVBQUdyQixDQUFnQixJQUFLO1VBQ2hDLElBQ0NBLENBQUMsQ0FBQ2tCLEdBQUcsS0FBSyxLQUFLLElBQ2YsSUFBSSxDQUFDbEQsWUFBWSxFQUFFRCxRQUFRLENBQUMsQ0FBQyxDQUFDdUQsTUFBTSxLQUFLLENBQUMsSUFDMUMsSUFBSSxDQUFDdEQsWUFBWSxFQUFFRCxRQUFRLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQ0MsWUFBWSxFQUFFTyxjQUFjLENBQUMsQ0FBQyxJQUNyRSxJQUFJLENBQUNQLFlBQVksRUFBRU8sY0FBYyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUNHLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxFQUMvRjtZQUNEVixDQUFDLENBQUN1QixjQUFjLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUN2RCxZQUFZLEVBQUVJLFFBQVEsQ0FBQyxJQUFJLENBQUNKLFlBQVksRUFBRU8sY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMwQixTQUFTLENBQUMsWUFBWSxDQUFDO1VBQzdCLENBQUMsTUFBTSxJQUFJRCxDQUFDLENBQUNrQixHQUFHLEtBQUssV0FBVyxFQUFFO1lBQ2pDLE1BQU1NLGVBQWUsR0FBRyxJQUFJLENBQUNqQixnQkFBZ0IsRUFBRWtCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU1DLGNBQWMsR0FBSUYsZUFBZSxDQUFhRyxRQUFRLENBQUMsQ0FBQztZQUM5REQsY0FBYyxFQUFFRSxJQUFJLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQyxLQUFLRCxJQUFJLENBQUNFLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7VUFDM0U7UUFDRCxDQUFDO1FBQ0RDLEtBQUssRUFBRUEsQ0FBQSxLQUFNO1VBQ1osSUFBSSxDQUFDdkIscUJBQXFCLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0R3QixTQUFTLEVBQUVBLENBQUEsS0FBTTtVQUNoQixJQUFJLENBQUN4QixxQkFBcUIsQ0FBQyxDQUFDO1FBQzdCO01BQ0QsQ0FBQyxDQUFDO01BQ0YsSUFBSSxDQUFDRixnQkFBZ0IsQ0FBQ1MsZ0JBQWdCLENBQUM7UUFDdENLLFNBQVMsRUFBR3JCLENBQWdCLElBQUs7VUFDaEMsTUFBTWtDLFVBQVUsR0FBSWxDLENBQUMsQ0FBQ21DLE1BQU0sRUFBa0JDLFNBQVM7VUFDdkQsTUFBTUMsUUFBUSxHQUFJckMsQ0FBQyxDQUFDbUMsTUFBTSxFQUFrQkcsRUFBRTtVQUM5QyxRQUFRdEMsQ0FBQyxDQUFDa0IsR0FBRztZQUNaLEtBQUssT0FBTztjQUNYLElBQUksQ0FBQ2xELFlBQVksRUFBRUksUUFBUSxDQUFDOEQsVUFBVSxDQUFDO2NBQ3ZDO1lBQ0QsS0FBSyxRQUFRO2NBQ1osSUFBSUcsUUFBUSxFQUFFRSxRQUFRLENBQUMsd0JBQXdCLENBQUMsRUFBRTtnQkFDakQsSUFBSSxDQUFDckUsS0FBSyxDQUFDc0UsZUFBZSxHQUFHLElBQUksQ0FBQ3RFLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQ0MsTUFBTSxDQUM1REMsSUFBSSxJQUFLQSxJQUFJLENBQUNDLFdBQVcsQ0FBQyxDQUFDLEtBQUtULFVBQVUsQ0FBQ1MsV0FBVyxDQUFDLENBQ3pELENBQUM7Y0FDRixDQUFDLE1BQU07Z0JBQ04sSUFBSSxDQUFDekUsS0FBSyxDQUFDMEUsYUFBYSxHQUFHLElBQUksQ0FBQzFFLEtBQUssQ0FBQzBFLGFBQWEsQ0FBQ0gsTUFBTSxDQUFFdkMsS0FBSyxJQUFLQSxLQUFLLEtBQUtnQyxVQUFVLENBQUM7Y0FDNUY7Y0FDQTtZQUNELEtBQUssUUFBUTtjQUNaLElBQUksSUFBSSxDQUFDM0IsZ0JBQWdCLEVBQUVDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQ0QsZ0JBQWdCLENBQUNhLEtBQUssQ0FBQyxDQUFDO2NBQzlCO2NBQ0E7VUFDRjtRQUNELENBQUM7UUFDRHlCLGdCQUFnQixFQUFFQSxDQUFBLEtBQU07VUFDdkIsSUFBSSxDQUFDaEUsdUJBQXVCLEVBQUVpRSxRQUFRLENBQ3JDLElBQUksQ0FBQ3BFLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBQyxFQUN6RXFDLG9CQUFvQixDQUFDQyxTQUN0QixDQUFDO1FBQ0Y7TUFDRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUFuRixNQUFBLENBRU80QyxxQkFBcUIsR0FBN0IsU0FBUUEscUJBQXFCQSxDQUFBLEVBQVM7TUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQ3pDLFlBQVksRUFBRUQsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQ3dDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDQSxnQkFBZ0IsRUFBRUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ25HO1FBQ0EsSUFBSSxDQUFDdEMsS0FBSyxDQUFDRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUNnRixvQkFBb0IsRUFBRWhGLGdCQUFnQixDQUFDLENBQUMsSUFBSSxLQUFLO1FBQ3BGLElBQUksQ0FBQ0MsS0FBSyxDQUFDc0UsZUFBZSxHQUFHLElBQUksQ0FBQ1Msb0JBQW9CLEVBQUVDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFO1FBQ2xGLElBQUksQ0FBQ2hGLEtBQUssQ0FBQzBFLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQ0ssb0JBQW9CLEVBQUVFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUVDLEdBQUcsQ0FBRWxELEtBQUssSUFBS0EsS0FBSyxDQUFDO1FBQ3RHLElBQUksQ0FBQ0ssZ0JBQWdCLEVBQUU4QyxNQUFNLENBQUMsSUFBSSxDQUFDckYsWUFBWSxDQUFDO01BQ2pEO0lBQ0QsQ0FBQztJQUFBSCxNQUFBLENBRUR5RixlQUFlLEdBQWYsU0FBQUEsZUFBZUEsQ0FBQ3RELENBQW9CLEVBQVE7TUFDM0MsSUFBSSxDQUFDTyxnQkFBZ0IsRUFBRWEsS0FBSyxDQUFDLENBQUM7TUFDOUIsSUFBSSxDQUFDcEQsWUFBWSxFQUFFSSxRQUFRLENBQUM0QixDQUFDLENBQUNNLFNBQVMsQ0FBQyxDQUFDLENBQUNJLE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFDcEQsSUFBSSxDQUFDUyxjQUFjLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQUF0RCxNQUFBLENBRURzRCxjQUFjLEdBQWQsU0FBQUEsY0FBY0EsQ0FBQSxFQUFTO01BQ3RCLElBQUksQ0FBQ1osZ0JBQWdCLEVBQUVhLEtBQUssQ0FBQyxDQUFDO01BQzlCLElBQUksQ0FBQ2xELEtBQUssQ0FBQ21DLFlBQVksR0FBRyxLQUFLO01BQy9CLElBQUlrRCxVQUFVLEdBQUcsSUFBSSxDQUFDdkYsWUFBWSxFQUFFRCxRQUFRLENBQUMsQ0FBQztNQUM5QyxJQUFJd0YsVUFBVSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUN2RixZQUFZLENBQUNPLGNBQWMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDRyxjQUFjLENBQUNnQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFBRTtRQUN6SDZDLFVBQVUsR0FBRyxJQUFJLENBQUN2RixZQUFZLENBQUNPLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQ1AsWUFBWSxFQUFFSSxRQUFRLENBQUNtRixVQUFVLENBQUM7TUFDeEM7TUFDQSxJQUFJLENBQUN2RixZQUFZLEVBQUVzQixpQkFBaUIsQ0FBQyxFQUFFLENBQUM7TUFDeEMsSUFBSSxDQUFDdEIsWUFBWSxFQUFFbUIsYUFBYSxDQUFDLE1BQU0sQ0FBQztNQUN4QyxJQUFJLENBQUNjLFNBQVMsQ0FBQyxjQUFjLEVBQUU7UUFBRUMsS0FBSyxFQUFFcUQ7TUFBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUFBMUYsTUFBQSxDQUVEMkYsY0FBYyxHQUFkLFNBQUFBLGNBQWNBLENBQUNDLFdBQStCLEVBQVE7TUFDckQ7TUFDQUEsV0FBVyxHQUFHQSxXQUFXLEVBQUVDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO01BRWpELE1BQU1DLGdCQUFnQixHQUFHLElBQUksQ0FBQ3pGLEtBQUssQ0FBQzBFLGFBQWEsQ0FBQ2dCLFNBQVMsQ0FBRTFELEtBQUssSUFBS0EsS0FBSyxDQUFDeUMsV0FBVyxDQUFDLENBQUMsS0FBS2MsV0FBVyxFQUFFZCxXQUFXLENBQUMsQ0FBQyxDQUFDO01BQzFILElBQUljLFdBQVcsSUFBSUUsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDM0MsSUFBSSxDQUFDekYsS0FBSyxDQUFDMEUsYUFBYSxHQUFHLENBQUNhLFdBQVcsQ0FBQyxDQUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMEUsYUFBYSxDQUFDO1FBQ3pFLElBQUksSUFBSSxDQUFDMUUsS0FBSyxDQUFDMEUsYUFBYSxDQUFDdEIsTUFBTSxHQUFHLENBQUMsRUFBRTtVQUN4QyxJQUFJLENBQUNwRCxLQUFLLENBQUMwRSxhQUFhLEdBQUcsSUFBSSxDQUFDMUUsS0FBSyxDQUFDMEUsYUFBYSxDQUFDa0IsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEU7TUFDRCxDQUFDLE1BQU0sSUFBSUwsV0FBVyxFQUFFO1FBQ3ZCLE1BQU1iLGFBQWEsR0FBRyxJQUFJLENBQUMxRSxLQUFLLENBQUMwRSxhQUFhLENBQUNILE1BQU0sQ0FBRXZDLEtBQUssSUFBS0EsS0FBSyxDQUFDeUMsV0FBVyxDQUFDLENBQUMsS0FBS2MsV0FBVyxFQUFFZCxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3BIQyxhQUFhLENBQUNtQixPQUFPLENBQUNOLFdBQVcsQ0FBQztRQUNsQyxJQUFJLENBQUN2RixLQUFLLENBQUMwRSxhQUFhLEdBQUdBLGFBQWE7TUFDekM7SUFDRCxDQUFDO0lBQUEvRSxNQUFBLENBRURtRyxhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQSxFQUFvQztNQUFBLElBQW5DQyxZQUFzQixHQUFBQyxTQUFBLENBQUE1QyxNQUFBLFFBQUE0QyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLEVBQUU7TUFDeEMsSUFBSUQsWUFBWSxDQUFDMUIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUkwQixZQUFZLENBQUMxQixRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDdkYsSUFBSSxDQUFDVSxvQkFBb0IsRUFBRW1CLGtCQUFrQixDQUFDLElBQUksQ0FBQ2xHLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQztRQUN6RSxJQUFJLENBQUNTLG9CQUFvQixFQUFFb0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDbkcsS0FBSyxDQUFDMEUsYUFBYSxDQUFDUSxHQUFHLENBQUVsRCxLQUFLLElBQUtBLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQ2hDLEtBQUssQ0FBQ29HLHlCQUF5QixHQUFHLElBQUksQ0FBQ3BHLEtBQUssQ0FBQzBFLGFBQWEsQ0FBQ1EsR0FBRyxDQUFFbUIsV0FBVyxJQUFLO1VBQ3BGLE9BQU87WUFDTkMsSUFBSSxFQUFFRCxXQUFXO1lBQ2pCRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQ3ZHLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQ1osSUFBSSxDQUFFOEMsYUFBYSxJQUFLQSxhQUFhLEtBQUtILFdBQVc7VUFDL0YsQ0FBQztRQUNGLENBQUMsQ0FBQztNQUNIO0lBQ0QsQ0FBQztJQUFBMUcsTUFBQSxDQUVLOEcsd0JBQXdCLEdBQTlCLGVBQU1BLHdCQUF3QkEsQ0FBQSxFQUFrQjtNQUMvQyxJQUFJO1FBQ0gsSUFBSSxDQUFDMUIsb0JBQW9CLEdBQUcsTUFBTTJCLG9CQUFvQixDQUFDN0YsV0FBVyxDQUFDLElBQUksQ0FBQzhGLEtBQUssSUFBSSxjQUFjLENBQUM7TUFDakcsQ0FBQyxDQUFDLE9BQU9DLEtBQUssRUFBRTtRQUNmQyxHQUFHLENBQUNELEtBQUssQ0FBQywyREFBMkQsRUFBRUEsS0FBZSxDQUFDO01BQ3hGO0lBQ0QsQ0FBQztJQUFBakgsTUFBQSxDQUVEaUQscUJBQXFCLEdBQXJCLFNBQUFBLHFCQUFxQkEsQ0FBQSxFQUFZO01BQ2hDLE9BQ0NuQixJQUFBLENBQUNxRixPQUFPO1FBQ1AxQyxFQUFFLEVBQUUsSUFBSSxDQUFDMkMsS0FBSyxDQUFDLENBQUMsR0FBRyxrQkFBbUI7UUFDdENDLFVBQVUsRUFBRSxLQUFNO1FBQ2xCQyxtQkFBbUIsRUFBRSxLQUFNO1FBQzNCQyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ0MsTUFBTztRQUNoQ0MsU0FBUyxFQUFFLEtBQU07UUFDakJDLFlBQVksRUFBRSxJQUFJLENBQUN4SCxZQUFhO1FBQ2hDeUgsS0FBSyxFQUFFLHNCQUF1QjtRQUM5QkMsT0FBTyxFQUFFLElBQUksQ0FBQ3hILEtBQUssQ0FBQ00sa0JBQWtCLENBQUM4QyxNQUFNLEdBQUcsQ0FBQyxJQUFJcUUsS0FBSyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDMUgsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxDQUFFO1FBQUEySCxRQUFBLEVBRTNHO1VBQ0FDLE9BQU8sRUFDTm5HLElBQUEsQ0FBQ29HLE9BQU87WUFBQ0MsU0FBUyxFQUFFQyxhQUFhLENBQUNDLE1BQU87WUFBQ1QsS0FBSyxFQUFFLHFCQUFzQjtZQUFDVSxVQUFVLEVBQUUsTUFBTztZQUFBTixRQUFBLEVBQ3pGO2NBQ0FPLEtBQUssRUFBRSxDQUNOekcsSUFBQSxDQUFDMEcsS0FBSztnQkFDTEMsVUFBVSxFQUFFQyxVQUFVLENBQUNDLEVBQUc7Z0JBQzFCaEMsSUFBSSxFQUFFLElBQUksQ0FBQzlGLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBRTtnQkFDN0UrRSxLQUFLLEVBQUUsMEJBQTJCO2dCQUNsQ0MsT0FBTyxFQUFFLElBQUksQ0FBQ3hILEtBQUssQ0FBQ00sa0JBQWtCLENBQUM4QyxNQUFNLEdBQUc7Y0FBRSxDQUNsRCxDQUFDLEVBQ0YzQixJQUFBLENBQUM4RyxJQUFJO2dCQUNKaEIsS0FBSyxFQUFFLHFCQUFzQjtnQkFDN0JXLEtBQUssRUFBRVIsU0FBUyxDQUFDLElBQUksQ0FBQzFILEtBQUssRUFBRSxvQkFBb0IsQ0FBRTtnQkFDbkR3SSxJQUFJLEVBQUVDLFFBQVEsQ0FBQ0MsSUFBSztnQkFDcEJsQixPQUFPLEVBQUUsSUFBSSxDQUFDeEgsS0FBSyxDQUFDTSxrQkFBa0IsQ0FBQzhDLE1BQU0sR0FBRyxDQUFFO2dCQUFBdUUsUUFBQSxFQUVqRDtrQkFDQU8sS0FBSyxFQUFFQSxDQUFDOUQsRUFBVSxFQUFFdUUsR0FBWSxLQUF1QjtvQkFDdEQsT0FDQ2xILElBQUEsQ0FBQ21ILE1BQU07c0JBQ05yQixLQUFLLEVBQUUsb0JBQXFCO3NCQUM1QmpCLElBQUksRUFBRXFDLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUU7c0JBQ3RCQyxLQUFLLEVBQUUsSUFBSSxDQUFDMUQsZUFBZSxDQUFDMkQsSUFBSSxDQUFDLElBQUk7b0JBQUUsQ0FDdkMsQ0FBQztrQkFFSjtnQkFDRDtjQUFDLENBQ0ksQ0FBQyxFQUNQdEgsSUFBQSxDQUFDMEcsS0FBSztnQkFDTC9ELEVBQUUsRUFBRSxJQUFJLENBQUMyQyxLQUFLLENBQUMsQ0FBQyxHQUFHLDBCQUEyQjtnQkFDOUNxQixVQUFVLEVBQUVDLFVBQVUsQ0FBQ0MsRUFBRztnQkFDMUJoQyxJQUFJLEVBQUUsSUFBSSxDQUFDOUYsY0FBYyxDQUFDZ0MsT0FBTyxDQUFDLHNDQUFzQyxDQUFFO2dCQUMxRStFLEtBQUssRUFBRSwwQkFBMkI7Z0JBQ2xDQyxPQUFPLEVBQUVDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQzFILEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLElBQUk7Y0FBRSxDQUNoRSxDQUFDLEVBQ0Z5QixJQUFBLENBQUN1SCxJQUFJO2dCQUNKZCxLQUFLLEVBQUVSLFNBQVMsQ0FBQyxJQUFJLENBQUMxSCxLQUFLLEVBQUUsaUJBQWlCLENBQUU7Z0JBQ2hEd0gsT0FBTyxFQUFFQyxLQUFLLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUMxSCxLQUFLLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxJQUFJLENBQUU7Z0JBQUEySCxRQUFBLEVBRS9EO2tCQUNBc0IsTUFBTSxFQUNMeEgsSUFBQSxDQUFDeUgsa0JBQWtCO29CQUNsQkMsS0FBSyxFQUFFLElBQUksQ0FBQzNJLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQyw0Q0FBNEMsQ0FBRTtvQkFDakY0RyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFVBQVc7b0JBQ3BEQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFNBQVU7b0JBQ25EQyxXQUFXLEVBQUUsSUFBSSxDQUFDbEosY0FBYyxDQUFDZ0MsT0FBTyxDQUN2QyxrREFDRDtrQkFBRSxDQUNGLENBQ0Q7a0JBQ0QwRixLQUFLLEVBQUVBLENBQUM5RCxFQUFVLEVBQUV1RSxHQUFZLEtBQXVCO29CQUN0RCxPQUNDbEgsSUFBQSxDQUFDa0ksY0FBYztzQkFDZHZGLEVBQUUsRUFBRUEsRUFBRSxHQUFHLHlCQUEwQjtzQkFDbkNtRCxLQUFLLEVBQUUsdUJBQXdCO3NCQUMvQnFDLGNBQWMsRUFBRSxDQUFDeEYsRUFBRSxHQUFHLDBCQUEwQixDQUFFO3NCQUNsRHlGLFVBQVUsRUFBRSxDQUFDcEksSUFBQSxDQUFDcUksVUFBVTt3QkFBYzNKLEtBQUssRUFBRXdJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDO3NCQUFFLEdBQS9CLE1BQWlDLENBQUMsQ0FBRTtzQkFDbEVDLEtBQUssRUFBRUEsQ0FBQSxLQUFZO3dCQUNsQixJQUFJLENBQUNoSixZQUFZLENBQUNJLFFBQVEsQ0FBQ3lJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxDQUFDNUYsY0FBYyxDQUFDLENBQUM7c0JBQ3RCLENBQUU7c0JBQUEwRSxRQUFBLEVBRUZvQyxLQUFBLENBQUNsQyxPQUFPO3dCQUNQbEcsS0FBSyxFQUFFLE1BQU87d0JBQ2RtRyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ2lDLEdBQUk7d0JBQzdCQyxVQUFVLEVBQUVDLGNBQWMsQ0FBQ0MsTUFBTzt3QkFDbENDLGNBQWMsRUFBRUMsa0JBQWtCLENBQUNDLFlBQWE7d0JBQ2hEckMsVUFBVSxFQUFFLE1BQU87d0JBQ25CN0QsRUFBRSxFQUFFQSxFQUFHO3dCQUFBdUQsUUFBQSxHQUVQbEcsSUFBQSxDQUFDOEksSUFBSTswQkFDSmpFLElBQUksRUFBRXFDLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUU7MEJBQ3RCMkIsT0FBTyxFQUFFN0IsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBRTswQkFDekI0QixRQUFRLEVBQUUsS0FBTTswQkFDaEJsRCxLQUFLLEVBQUM7d0JBQXNCLENBQ3RCLENBQUMsRUFDUjlGLElBQUEsQ0FBQ21ILE1BQU07MEJBQ044QixJQUFJLEVBQUUscUJBQXNCOzBCQUM1QkYsT0FBTyxFQUFFLElBQUksQ0FBQ2hLLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBRTswQkFDbEVvSCxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUM3QyxLQUFLLENBQUMsQ0FBQyxHQUFHLHlCQUF5QixDQUFFOzBCQUMzRG5KLElBQUksRUFBRStNLFVBQVUsQ0FBQ0MsV0FBWTswQkFDN0I5QixLQUFLLEVBQUVBLENBQUEsS0FBWTs0QkFDbEI7NEJBQ0EsSUFBSSxDQUFDekcsZ0JBQWdCLEVBQUV3QixLQUFLLENBQUMsQ0FBQzs0QkFDOUIsTUFBTTBCLFdBQVcsR0FBR29ELEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUM7NEJBQ25DLE1BQU1nQyxLQUFLLEdBQUcsSUFBSSxDQUFDN0ssS0FBSyxDQUFDc0UsZUFBZSxDQUFDd0csT0FBTyxDQUFDdkYsV0FBVyxDQUFDOzRCQUM3RCxJQUFJc0YsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFOzhCQUNqQixJQUFJLENBQUM3SyxLQUFLLENBQUNzRSxlQUFlLEdBQUcsSUFBSSxDQUFDdEUsS0FBSyxDQUFDc0UsZUFBZSxDQUFDQyxNQUFNLENBQzVEdkMsS0FBSyxJQUFLQSxLQUFLLEtBQUt1RCxXQUN0QixDQUFDOzRCQUNGOzRCQUNBLElBQUksQ0FBQ2pHLHFCQUFxQixHQUFHLElBQUk7MEJBQ2xDO3dCQUFFLENBQ0YsQ0FBQyxFQUNEOzBCQUNBeUwsVUFBVSxFQUNUdEosSUFBQSxDQUFDdUosaUJBQWlCOzRCQUNqQkMsR0FBRyxFQUFFQSxDQUFBLEtBQVk7OEJBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMzTCxxQkFBcUIsRUFBRTtnQ0FDaEM0TCxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7Z0NBQ2hDLElBQUksQ0FBQ3BMLFlBQVksRUFBRUksUUFBUSxDQUMxQnlJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3JELE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUN0QyxDQUFDO2dDQUNELElBQUksQ0FBQ3ZDLGNBQWMsQ0FBQyxDQUFDOzhCQUN0Qjs4QkFDQSxJQUFJLENBQUMzRCxxQkFBcUIsR0FBRyxLQUFLOzRCQUNuQzswQkFBRSxDQUNGO3dCQUVILENBQUM7c0JBQUEsQ0FDTztvQkFBQyxDQUNLLENBQUM7a0JBRW5CO2dCQUNEO2NBQUMsQ0FDSSxDQUFDLEVBQ1BtQyxJQUFBLENBQUMwRyxLQUFLO2dCQUNML0QsRUFBRSxFQUFFLElBQUksQ0FBQzJDLEtBQUssQ0FBQyxDQUFDLEdBQUcsMEJBQTJCO2dCQUM5Q3FCLFVBQVUsRUFBRUMsVUFBVSxDQUFDQyxFQUFHO2dCQUMxQmhDLElBQUksRUFBRSxJQUFJLENBQUM5RixjQUFjLENBQUNnQyxPQUFPLENBQUMsaUNBQWlDLENBQUU7Z0JBQ3JFK0UsS0FBSyxFQUFFLDBCQUEyQjtnQkFDbENDLE9BQU8sRUFBRUMsS0FBSyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDMUgsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsSUFBSTtjQUFFLENBQ2hFLENBQUMsRUFDRnlCLElBQUEsQ0FBQ3VILElBQUk7Z0JBQ0pkLEtBQUssRUFBRVIsU0FBUyxDQUFDLElBQUksQ0FBQzFILEtBQUssRUFBRSwyQkFBMkIsQ0FBRTtnQkFDMUR3SCxPQUFPLEVBQUVDLEtBQUssQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQzFILEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksQ0FBRTtnQkFDaEVtTCxJQUFJLEVBQUVDLFFBQVEsQ0FBQ0MsTUFBTztnQkFDdEJ6QixjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUM3QyxLQUFLLENBQUMsQ0FBQyxHQUFHLDBCQUEwQixDQUFFO2dCQUM1RHVFLE1BQU0sRUFBR3hKLENBQXVCLElBQVc7a0JBQzFDLE1BQU02QixJQUFJLEdBQUc3QixDQUFDLENBQUNHLFlBQVksQ0FBQyxVQUFVLENBQW1CO2tCQUN6RDBCLElBQUksQ0FBQ0UsS0FBSyxDQUFDLENBQUM7a0JBRVosSUFBSTBCLFdBQVcsR0FBR3pELENBQUMsQ0FBQ0csWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFdUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztrQkFFMUQsSUFBSSxDQUFDZSxXQUFXLEVBQUU7a0JBQ2xCO2tCQUNBQSxXQUFXLEdBQUdBLFdBQVcsRUFBRUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7a0JBRWpELElBQUksQ0FBQ3hGLEtBQUssQ0FBQzBFLGFBQWEsR0FBRyxJQUFJLENBQUMxRSxLQUFLLENBQUMwRSxhQUFhLENBQUNILE1BQU0sQ0FBRXZDLEtBQUssSUFBS0EsS0FBSyxLQUFLdUQsV0FBVyxDQUFDO2dCQUM3RixDQUFFO2dCQUFBb0MsUUFBQSxFQUVEO2tCQUNBc0IsTUFBTSxFQUNMeEgsSUFBQSxDQUFDeUgsa0JBQWtCO29CQUNsQkMsS0FBSyxFQUFFLElBQUksQ0FBQzNJLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQyw2Q0FBNkMsQ0FBRTtvQkFDbEY0RyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFVBQVc7b0JBQ3BEQyxnQkFBZ0IsRUFBRUMsc0JBQXNCLENBQUNDLFNBQVU7b0JBQ25EQyxXQUFXLEVBQUUsSUFBSSxDQUFDbEosY0FBYyxDQUFDZ0MsT0FBTyxDQUN2QyxnREFDRDtrQkFBRSxDQUNGLENBQ0Q7a0JBQ0QwRixLQUFLLEVBQUVBLENBQUM5RCxFQUFVLEVBQUV1RSxHQUFZLEtBQWM7b0JBQzdDLE9BQ0NsSCxJQUFBLENBQUNrSSxjQUFjO3NCQUNkdkYsRUFBRSxFQUFFQSxFQUFFLEdBQUcseUJBQTBCO3NCQUNuQzBFLEtBQUssRUFBRUEsQ0FBQSxLQUFZO3dCQUNsQixJQUFJLENBQUNoSixZQUFZLEVBQUVJLFFBQVEsQ0FBQ3lJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLElBQUksQ0FBQzt3QkFDakQsSUFBSSxDQUFDckQsY0FBYyxDQUFDLENBQUM7c0JBQ3RCLENBQUU7c0JBQ0ZzRSxLQUFLLEVBQUUsdUJBQXdCO3NCQUMvQnNDLFVBQVUsRUFBRSxDQUFDcEksSUFBQSxDQUFDcUksVUFBVTt3QkFBYzNKLEtBQUssRUFBRXdJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDO3NCQUFLLEdBQXBDLE1BQXNDLENBQUMsQ0FBRTtzQkFDdkVzRCxjQUFjLEVBQUUsQ0FBQ3hGLEVBQUUsR0FBRywwQkFBMEIsQ0FBRTtzQkFBQXVELFFBQUEsRUFFbERvQyxLQUFBLENBQUNsQyxPQUFPO3dCQUNQbEcsS0FBSyxFQUFFLE1BQU87d0JBQ2RtRyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ2lDLEdBQUk7d0JBQzdCQyxVQUFVLEVBQUVDLGNBQWMsQ0FBQ0MsTUFBTzt3QkFDbENDLGNBQWMsRUFBRUMsa0JBQWtCLENBQUNDLFlBQWE7d0JBQ2hEckMsVUFBVSxFQUFFLE1BQU87d0JBQ25CN0QsRUFBRSxFQUFFQSxFQUFHO3dCQUFBdUQsUUFBQSxHQUVQbEcsSUFBQSxDQUFDOEksSUFBSTswQkFDSmpFLElBQUksRUFBRXFDLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLElBQUs7MEJBQzNCa0UsT0FBTyxFQUFFN0IsR0FBRyxDQUFDRSxTQUFTLENBQUMsQ0FBQyxDQUFDdkMsSUFBSzswQkFDOUJtRSxRQUFRLEVBQUUsS0FBTTswQkFDaEJsRCxLQUFLLEVBQUM7d0JBQXNCLENBQ3RCLENBQUMsRUFDUjlGLElBQUEsQ0FBQ21ILE1BQU07MEJBQ044QixJQUFJLEVBQ0gvQixHQUFHLENBQUNFLFNBQVMsQ0FBQyxDQUFDLENBQUN0QyxVQUFVLEdBQ3ZCLHFCQUFxQixHQUNyQix5QkFDSDswQkFDRGlFLE9BQU8sRUFDTjdCLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3RDLFVBQVUsR0FDdkIsSUFBSSxDQUFDL0YsY0FBYyxDQUFDZ0MsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEdBQ3hELElBQUksQ0FBQ2hDLGNBQWMsQ0FBQ2dDLE9BQU8sQ0FBQywyQkFBMkIsQ0FDMUQ7MEJBQ0QrSSxPQUFPLEVBQUVDLFFBQVEsQ0FDaEJwSSxNQUFNLENBQ0xzRSxTQUFTLENBQ1IsSUFBSSxDQUFDMUgsS0FBSyxFQUNWLGlCQUNELENBQ0QsQ0FBQyxFQUNELENBQ0QsQ0FBRTswQkFDRnBDLElBQUksRUFBRStNLFVBQVUsQ0FBQ0MsV0FBWTswQkFDN0JoQixjQUFjLEVBQUUsQ0FBQ3hGLEVBQUUsR0FBRyx5QkFBeUIsQ0FBRTswQkFDakQwRSxLQUFLLEVBQUVBLENBQUEsS0FBWTs0QkFDbEIsSUFBSSxDQUFDeEoscUJBQXFCLEdBQUcsSUFBSTs0QkFDakM7NEJBQ0EsSUFBSSxDQUFDK0MsZ0JBQWdCLEVBQUV3QixLQUFLLENBQUMsQ0FBQzs0QkFDOUIsTUFBTTBCLFdBQVcsR0FBR29ELEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLElBQUk7NEJBQ3hDLE1BQU1DLFVBQVUsR0FBR29DLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3RDLFVBQVU7NEJBRTdDLElBQUlBLFVBQVUsRUFBRTs4QkFDZixJQUFJLENBQUNrRixtQkFBbUIsQ0FBQ2xHLFdBQVcsQ0FBQzs0QkFDdEMsQ0FBQyxNQUFNOzhCQUNOLElBQUksQ0FBQ21HLGNBQWMsQ0FBQ25HLFdBQVcsQ0FBQzs0QkFDakM7MEJBQ0Q7d0JBQUUsQ0FDRixDQUFDLEVBQ0Q7MEJBQ0F3RixVQUFVLEVBQ1R0SixJQUFBLENBQUN1SixpQkFBaUI7NEJBQ2pCQyxHQUFHLEVBQUVBLENBQUEsS0FBWTs4QkFDaEI7OEJBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQzNMLHFCQUFxQixFQUFFO2dDQUNoQyxJQUFJLENBQUNRLFlBQVksRUFBRUksUUFBUSxDQUMxQnlJLEdBQUcsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsQ0FBQ3ZDLElBQUksQ0FBQ2QsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQzNDLENBQUM7Z0NBQ0QwRixvQkFBb0IsQ0FBQyxRQUFRLENBQUM7Z0NBQzlCLElBQUksQ0FBQ2pJLGNBQWMsQ0FBQyxDQUFDOzhCQUN0Qjs4QkFDQSxJQUFJLENBQUMzRCxxQkFBcUIsR0FBRyxLQUFLOzRCQUNuQzswQkFBRSxDQUNGO3dCQUVILENBQUM7c0JBQUEsQ0FDTztvQkFBQyxDQUNLLENBQUM7a0JBRW5CO2dCQUNEO2NBQUMsQ0FDSSxDQUFDO1lBRVQ7VUFBQyxDQUNPO1FBRVg7TUFBQyxDQUNPLENBQUM7SUFFWixDQUFDO0lBQUFLLE1BQUEsQ0FFTzhMLG1CQUFtQixHQUEzQixTQUFRQSxtQkFBbUJBLENBQUN6SixLQUFhLEVBQVE7TUFDaEQsSUFBSSxDQUFDaEMsS0FBSyxDQUFDc0UsZUFBZSxHQUFHLElBQUksQ0FBQ3RFLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQ0MsTUFBTSxDQUFFQyxJQUFJLElBQUtBLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsS0FBS3pDLEtBQUssQ0FBQ3lDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDckgsQ0FBQztJQUFBOUUsTUFBQSxDQUVPK0wsY0FBYyxHQUF0QixTQUFRQSxjQUFjQSxDQUFDMUosS0FBYSxFQUFRO01BQzNDLE1BQU0ySixXQUFXLEdBQUcsQ0FBQzNKLEtBQUssQ0FBQyxDQUFDMkQsTUFBTSxDQUFDLElBQUksQ0FBQzNGLEtBQUssQ0FBQ3NFLGVBQWUsQ0FBQ3FCLE1BQU0sQ0FBQyxDQUFDLENBQUM7TUFDdkUsSUFBSWdHLFdBQVcsQ0FBQ3ZJLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDM0J1SSxXQUFXLENBQUNDLEdBQUcsQ0FBQyxDQUFDO01BQ2xCO01BQ0EsSUFBSSxDQUFDNUwsS0FBSyxDQUFDc0UsZUFBZSxHQUFHcUgsV0FBVztJQUN6QyxDQUFDO0lBQUFwTyxlQUFBLENBRU1zTyxNQUFNLEdBQWIsU0FBT0EsTUFBTUEsQ0FBQ0MsRUFBaUIsRUFBRUMsT0FBd0IsRUFBUTtNQUNoRSxPQUFPQyxHQUFHLENBQUNDLHdCQUF3QixDQUFDSCxFQUFFLEVBQUVDLE9BQU8sRUFBRSxNQUFNO1FBQ3RELE9BQ0N0SyxJQUFBO1VBQU15SyxHQUFHLEVBQUVILE9BQVE7VUFBQ3hFLEtBQUssRUFBRSxzQkFBdUI7VUFBQUksUUFBQSxFQUNoRG9FLE9BQU8sQ0FBQ2pNO1FBQVksQ0FDaEIsQ0FBQztNQUVULENBQUMsQ0FBQztJQUNILENBQUM7SUFBQSxPQUFBdkMsZUFBQTtFQUFBLEVBbmhCMkM0TyxPQUFPLEdBQUFuTixXQUFBLEdBQUFvTix5QkFBQSxDQUFBM04sT0FBQSxDQUFBbUIsU0FBQSxtQkFBQWxDLEtBQUE7SUFBQTJPLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdk4sWUFBQSxHQUFBbU4seUJBQUEsQ0FBQTNOLE9BQUEsQ0FBQW1CLFNBQUEsWUFBQTdCLEtBQUE7SUFBQXNPLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBdE4sWUFBQSxHQUFBa04seUJBQUEsQ0FBQTNOLE9BQUEsQ0FBQW1CLFNBQUEsd0JBQUEzQixLQUFBO0lBQUFvTyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXJOLFlBQUEsR0FBQWlOLHlCQUFBLENBQUEzTixPQUFBLENBQUFtQixTQUFBLG1CQUFBMUIsS0FBQTtJQUFBbU8sWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFwTixZQUFBLEdBQUFnTix5QkFBQSxDQUFBM04sT0FBQSxDQUFBbUIsU0FBQSxtQkFBQXhCLEtBQUE7SUFBQWlPLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbk4sWUFBQSxHQUFBK00seUJBQUEsQ0FBQTNOLE9BQUEsQ0FBQW1CLFNBQUEsaUJBQUF2QixLQUFBO0lBQUFnTyxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpOLFlBQUEsR0FBQTZNLHlCQUFBLENBQUEzTixPQUFBLENBQUFtQixTQUFBLFlBQUF0QixLQUFBO0lBQUErTixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQXFDOUM7UUFDSnJLLFlBQVksRUFBRSxLQUFLO1FBQ25CcEMsZ0JBQWdCLEVBQUUsS0FBSztRQUN2QjJFLGFBQWEsRUFBRSxFQUFFO1FBQ2pCMEIseUJBQXlCLEVBQUUsRUFBRTtRQUM3QjlCLGVBQWUsRUFBRSxFQUFjO1FBQy9CaEUsa0JBQWtCLEVBQUU7TUFDckIsQ0FBQztJQUFBO0VBQUEsSUFBQTdCLE9BQUEsTUFBQUQsTUFBQTtFQUFBaUIsUUFBQSxHQUFBbEMsZUFBQTtFQUFBLE9BQUFrQyxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -67,7 +67,7 @@ export default class EasyFilterInput extends Control {
|
|
|
67
67
|
|
|
68
68
|
$favoritePopover: Popover | undefined;
|
|
69
69
|
|
|
70
|
-
private
|
|
70
|
+
private favoriteButtonClicked = false;
|
|
71
71
|
|
|
72
72
|
@defineState()
|
|
73
73
|
protected state: StateOf<{
|
|
@@ -396,18 +396,21 @@ export default class EasyFilterInput extends Control {
|
|
|
396
396
|
(query) => query !== queryString
|
|
397
397
|
);
|
|
398
398
|
}
|
|
399
|
+
this.favoriteButtonClicked = true;
|
|
399
400
|
}}
|
|
400
401
|
/>
|
|
401
402
|
{{
|
|
402
403
|
dependents: (
|
|
403
404
|
<EventDelegateHook
|
|
404
405
|
tap={(): void => {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
406
|
+
if (!this.favoriteButtonClicked) {
|
|
407
|
+
triggerPXIntegration("favorite");
|
|
408
|
+
this.$searchInput?.setValue(
|
|
409
|
+
ctx.getObject().replace(/\\\\/g, "\\")
|
|
410
|
+
);
|
|
411
|
+
this.onEnterPressed();
|
|
412
|
+
}
|
|
413
|
+
this.favoriteButtonClicked = false;
|
|
411
414
|
}}
|
|
412
415
|
/>
|
|
413
416
|
)
|
|
@@ -429,6 +432,7 @@ export default class EasyFilterInput extends Control {
|
|
|
429
432
|
items={bindState(this.state, "recentQueriesWitFavorites")}
|
|
430
433
|
visible={equal(bindState(this.state, "isHistoryEnabled"), true)}
|
|
431
434
|
mode={ListMode.Delete}
|
|
435
|
+
ariaLabelledBy={[this.getId() + "-easyFilterLastUsedTitle"]}
|
|
432
436
|
delete={(e: ListBase$DeleteEvent): void => {
|
|
433
437
|
const item = e.getParameter("listItem") as CustomListItem;
|
|
434
438
|
item.focus();
|
|
@@ -502,7 +506,7 @@ export default class EasyFilterInput extends Control {
|
|
|
502
506
|
type={ButtonType.Transparent}
|
|
503
507
|
ariaLabelledBy={[id + "-easyFilterLastUsedItem"]}
|
|
504
508
|
press={(): void => {
|
|
505
|
-
this.
|
|
509
|
+
this.favoriteButtonClicked = true;
|
|
506
510
|
//Retaining the focus on popover doesn't make the popover close on every interaction
|
|
507
511
|
this.$favoritePopover?.focus();
|
|
508
512
|
const queryString = ctx.getObject().text;
|
|
@@ -520,14 +524,14 @@ export default class EasyFilterInput extends Control {
|
|
|
520
524
|
<EventDelegateHook
|
|
521
525
|
tap={(): void => {
|
|
522
526
|
// should not be executed when clicking on add favorite button
|
|
523
|
-
if (!this.
|
|
527
|
+
if (!this.favoriteButtonClicked) {
|
|
524
528
|
this.$searchInput?.setValue(
|
|
525
529
|
ctx.getObject().text.replace(/\\\\/g, "\\")
|
|
526
530
|
);
|
|
527
531
|
triggerPXIntegration("recent");
|
|
528
532
|
this.onEnterPressed();
|
|
529
533
|
}
|
|
530
|
-
this.
|
|
534
|
+
this.favoriteButtonClicked = false;
|
|
531
535
|
}}
|
|
532
536
|
/>
|
|
533
537
|
)
|