ngx-aur-mat-table 12.2.8 → 12.2.9

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.
@@ -0,0 +1,189 @@
1
+ export var Filters;
2
+ (function (Filters) {
3
+ /**
4
+ * Base abstract class for filter.
5
+ * Defines a common interface for all filters.
6
+ * @template T The type of data to be filtered.
7
+ */
8
+ class Base {
9
+ constructor() {
10
+ }
11
+ }
12
+ Filters.Base = Base;
13
+ class ExtractableProperty extends Base {
14
+ }
15
+ Filters.ExtractableProperty = ExtractableProperty;
16
+ /**
17
+ * Class for filtering data based on a single value.
18
+ * @template T The type of data to be filtered.
19
+ * @template V The type of the value used for filtering.
20
+ */
21
+ class ValueSingle extends ExtractableProperty {
22
+ constructor(value) {
23
+ super();
24
+ this.value = value;
25
+ }
26
+ }
27
+ Filters.ValueSingle = ValueSingle;
28
+ /**
29
+ * Class for filtering data based on an array of values.
30
+ * @template T The type of data to be filtered.
31
+ * @template V The type of the values used for filtering.
32
+ */
33
+ class ValueArray extends ExtractableProperty {
34
+ constructor(values) {
35
+ super();
36
+ this.values = values;
37
+ }
38
+ }
39
+ Filters.ValueArray = ValueArray;
40
+ /**
41
+ * Class for filtering data based on a set of values.
42
+ * @template T The type of data to be filtered.
43
+ * @template V The type of the values used for filtering.
44
+ */
45
+ class ValueSet extends ExtractableProperty {
46
+ constructor(values) {
47
+ super();
48
+ this.values = values;
49
+ }
50
+ }
51
+ Filters.ValueSet = ValueSet;
52
+ /**
53
+ * Class for filtering data within a min-max range.
54
+ * @template T The type of data to be filtered.
55
+ * @template V The type of the values defining the range.
56
+ */
57
+ class ValueMinMax extends ExtractableProperty {
58
+ constructor(min, max) {
59
+ super();
60
+ this.min = min;
61
+ this.max = max;
62
+ }
63
+ }
64
+ Filters.ValueMinMax = ValueMinMax;
65
+ /**
66
+ * Abstract class for filtering data based on whether a specific property
67
+ * of the data, when trimmed and converted to lower case, contains a specified
68
+ * substring, also trimmed and converted to lower case.
69
+ * @template T The type of data to be filtered.
70
+ */
71
+ class ContainsStringIgnoreCase extends ValueSingle {
72
+ filterFn() {
73
+ return (data) => {
74
+ const given = this.extractProperty(data);
75
+ return given.toLowerCase().includes(this.value.toLowerCase());
76
+ };
77
+ }
78
+ }
79
+ Filters.ContainsStringIgnoreCase = ContainsStringIgnoreCase;
80
+ class EqualString extends ValueSingle {
81
+ filterFn() {
82
+ return (data) => {
83
+ const given = this.extractProperty(data);
84
+ return given === this.value;
85
+ };
86
+ }
87
+ }
88
+ Filters.EqualString = EqualString;
89
+ class EqualNumber extends ValueSingle {
90
+ filterFn() {
91
+ return (data) => {
92
+ const given = this.extractProperty(data);
93
+ return given === this.value;
94
+ };
95
+ }
96
+ }
97
+ Filters.EqualNumber = EqualNumber;
98
+ class LessNumber extends ValueSingle {
99
+ filterFn() {
100
+ return (data) => {
101
+ const given = this.extractProperty(data);
102
+ return given < this.value;
103
+ };
104
+ }
105
+ }
106
+ Filters.LessNumber = LessNumber;
107
+ class LessOrEqualNumber extends ValueSingle {
108
+ filterFn() {
109
+ return (data) => {
110
+ const given = this.extractProperty(data);
111
+ return given <= this.value;
112
+ };
113
+ }
114
+ }
115
+ Filters.LessOrEqualNumber = LessOrEqualNumber;
116
+ class MoreNumber extends ValueSingle {
117
+ filterFn() {
118
+ return (data) => {
119
+ const given = this.extractProperty(data);
120
+ return given > this.value;
121
+ };
122
+ }
123
+ }
124
+ Filters.MoreNumber = MoreNumber;
125
+ class MoreOrEqualNumber extends ValueSingle {
126
+ filterFn() {
127
+ return (data) => {
128
+ const given = this.extractProperty(data);
129
+ return given >= this.value;
130
+ };
131
+ }
132
+ }
133
+ Filters.MoreOrEqualNumber = MoreOrEqualNumber;
134
+ class NumberRangeInclMinExclMax extends ValueMinMax {
135
+ filterFn() {
136
+ return (data) => {
137
+ const given = this.extractProperty(data);
138
+ return given >= this.min && given < this.max;
139
+ };
140
+ }
141
+ }
142
+ Filters.NumberRangeInclMinExclMax = NumberRangeInclMinExclMax;
143
+ class NumberRangeExclMinInclMax extends ValueMinMax {
144
+ filterFn() {
145
+ return (data) => {
146
+ const given = this.extractProperty(data);
147
+ return given > this.min && given <= this.max;
148
+ };
149
+ }
150
+ }
151
+ Filters.NumberRangeExclMinInclMax = NumberRangeExclMinInclMax;
152
+ class NumberRangeInclMinInclMax extends ValueMinMax {
153
+ filterFn() {
154
+ return (data) => {
155
+ const given = this.extractProperty(data);
156
+ return given >= this.min && given <= this.max;
157
+ };
158
+ }
159
+ }
160
+ Filters.NumberRangeInclMinInclMax = NumberRangeInclMinInclMax;
161
+ class NumberRangeExclMinExclMax extends ValueMinMax {
162
+ filterFn() {
163
+ return (data) => {
164
+ const given = this.extractProperty(data);
165
+ return given > this.min && given < this.max;
166
+ };
167
+ }
168
+ }
169
+ Filters.NumberRangeExclMinExclMax = NumberRangeExclMinExclMax;
170
+ class hasInSet extends ValueSet {
171
+ filterFn() {
172
+ return (data) => {
173
+ const given = this.extractProperty(data);
174
+ return this.values.has(given);
175
+ };
176
+ }
177
+ }
178
+ Filters.hasInSet = hasInSet;
179
+ class notHasInSet extends ValueSet {
180
+ filterFn() {
181
+ return (data) => {
182
+ const given = this.extractProperty(data);
183
+ return !this.values.has(given);
184
+ };
185
+ }
186
+ }
187
+ Filters.notHasInSet = notHasInSet;
188
+ })(Filters || (Filters = {}));
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmd4QXVyRmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1hdXItbWF0LXRhYmxlL3NyYy9saWIvZmlsdGVyLWFjdGlvbi9OZ3hBdXJGaWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sS0FBVyxPQUFPLENBMk52QjtBQTNORCxXQUFpQixPQUFPO0lBRXRCOzs7O09BSUc7SUFDSCxNQUFzQixJQUFJO1FBRXhCO1FBQ0EsQ0FBQztLQWtCRjtJQXJCcUIsWUFBSSxPQXFCekIsQ0FBQTtJQUVELE1BQXNCLG1CQUEwQixTQUFRLElBQU87S0FFOUQ7SUFGcUIsMkJBQW1CLHNCQUV4QyxDQUFBO0lBR0Q7Ozs7T0FJRztJQUNILE1BQXNCLFdBQWtCLFNBQVEsbUJBQXlCO1FBRXZFLFlBQW1CLEtBQVE7WUFDekIsS0FBSyxFQUFFLENBQUM7WUFEUyxVQUFLLEdBQUwsS0FBSyxDQUFHO1FBRTNCLENBQUM7S0FDRjtJQUxxQixtQkFBVyxjQUtoQyxDQUFBO0lBRUQ7Ozs7T0FJRztJQUNILE1BQXNCLFVBQWlCLFNBQVEsbUJBQXlCO1FBRXRFLFlBQW1CLE1BQVc7WUFDNUIsS0FBSyxFQUFFLENBQUM7WUFEUyxXQUFNLEdBQU4sTUFBTSxDQUFLO1FBRTlCLENBQUM7S0FDRjtJQUxxQixrQkFBVSxhQUsvQixDQUFBO0lBRUQ7Ozs7T0FJRztJQUNILE1BQXNCLFFBQWUsU0FBUSxtQkFBeUI7UUFFcEUsWUFBbUIsTUFBYztZQUMvQixLQUFLLEVBQUUsQ0FBQztZQURTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFFakMsQ0FBQztLQUNGO0lBTHFCLGdCQUFRLFdBSzdCLENBQUE7SUFFRDs7OztPQUlHO0lBQ0gsTUFBc0IsV0FBa0IsU0FBUSxtQkFBeUI7UUFDdkUsWUFBbUIsR0FBTSxFQUNOLEdBQU07WUFDdkIsS0FBSyxFQUFFLENBQUM7WUFGUyxRQUFHLEdBQUgsR0FBRyxDQUFHO1lB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SUFFRCxNQUFzQixRQUFlLFNBQVEsUUFBYztRQUV6QyxRQUFRO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQztRQUNKLENBQUM7S0FDRjtJQVJxQixnQkFBUSxXQVE3QixDQUFBO0lBRUQsTUFBc0IsV0FBa0IsU0FBUSxRQUFjO1FBRTVDLFFBQVE7WUFDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUM7UUFDSixDQUFDO0tBQ0Y7SUFScUIsbUJBQVcsY0FRaEMsQ0FBQTtBQUVILENBQUMsRUEzTmdCLE9BQU8sS0FBUCxPQUFPLFFBMk52QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGFibGVSb3d9IGZyb20gXCIuLi9tb2RlbC9UYWJsZVJvd1wiO1xyXG5cclxuZXhwb3J0IG5hbWVzcGFjZSBGaWx0ZXJzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogQmFzZSBhYnN0cmFjdCBjbGFzcyBmb3IgZmlsdGVyLlxyXG4gICAqIERlZmluZXMgYSBjb21tb24gaW50ZXJmYWNlIGZvciBhbGwgZmlsdGVycy5cclxuICAgKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiBkYXRhIHRvIGJlIGZpbHRlcmVkLlxyXG4gICAqL1xyXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlPFQ+IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFic3RyYWN0IG1ldGhvZCB0byBjcmVhdGUgYSBmaWx0ZXIgZnVuY3Rpb24gZm9yIHVzZSB3aXRoIEFuZ3VsYXIgTWF0ZXJpYWwncyBNYXRUYWJsZS5cclxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgZmlsdGVyaW5nIGxvZ2ljIGFwcGxpZWQgdG8gdGhlIGRhdGEgZGlzcGxheWVkIGluIHRoZSB0YWJsZS5cclxuICAgICAqIEl0IG11c3QgYmUgb3ZlcnJpZGRlbiBpbiBzdWJjbGFzc2VzIHRvIHByb3ZpZGUgY3VzdG9tIGZpbHRlciBjcml0ZXJpYS5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBIGZpbHRlciBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc2luZ2xlIHBhcmFtZXRlcjpcclxuICAgICAqICAgIC0gYGRhdGFgOiBBbiBpbmRpdmlkdWFsIGRhdGEgaXRlbSBmcm9tIHRoZSBNYXRUYWJsZSBkYXRhIHNvdXJjZS4gVGhpcyByZXByZXNlbnRzXHJcbiAgICAgKiAgICAgIGEgc2luZ2xlIHJvdyBvZiBkYXRhIGluIHRoZSB0YWJsZS4gVGhlIHR5cGUgb2YgYGRhdGFgIGlzIGRlZmluZWQgYnkgdGhlIGdlbmVyaWNcclxuICAgICAqICAgICAgdHlwZSBwYXJhbWV0ZXIgJ1QnLlxyXG4gICAgICpcclxuICAgICAqIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGBkYXRhYCBpdGVtXHJcbiAgICAgKiBzYXRpc2ZpZXMgdGhlIGZpbHRlciBjcml0ZXJpYS4gVGhlIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmaWx0ZXIgbG9naWNcclxuICAgICAqIHdpbGwgdmFyeSBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uJ3MgcmVxdWlyZW1lbnRzIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBkYXRhLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgZmlsdGVyRm4oKTogKGRhdGE6IFRhYmxlUm93PFQ+KSA9PiBib29sZWFuO1xyXG5cclxuICB9XHJcblxyXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFeHRyYWN0YWJsZVByb3BlcnR5PFQsIFY+IGV4dGVuZHMgQmFzZTxUPiB7XHJcbiAgICBhYnN0cmFjdCBleHRyYWN0UHJvcGVydHkoZGF0YTogVGFibGVSb3c8VD4pOiBWO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENsYXNzIGZvciBmaWx0ZXJpbmcgZGF0YSBiYXNlZCBvbiBhIHNpbmdsZSB2YWx1ZS5cclxuICAgKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiBkYXRhIHRvIGJlIGZpbHRlcmVkLlxyXG4gICAqIEB0ZW1wbGF0ZSBWIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSB1c2VkIGZvciBmaWx0ZXJpbmcuXHJcbiAgICovXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbHVlU2luZ2xlPFQsIFY+IGV4dGVuZHMgRXh0cmFjdGFibGVQcm9wZXJ0eTxULCBWPiB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIHZhbHVlOiBWKSB7XHJcbiAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGFzcyBmb3IgZmlsdGVyaW5nIGRhdGEgYmFzZWQgb24gYW4gYXJyYXkgb2YgdmFsdWVzLlxyXG4gICAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIGRhdGEgdG8gYmUgZmlsdGVyZWQuXHJcbiAgICogQHRlbXBsYXRlIFYgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyB1c2VkIGZvciBmaWx0ZXJpbmcuXHJcbiAgICovXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbHVlQXJyYXk8VCwgVj4gZXh0ZW5kcyBFeHRyYWN0YWJsZVByb3BlcnR5PFQsIFY+IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWVzOiBWW10pIHtcclxuICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsYXNzIGZvciBmaWx0ZXJpbmcgZGF0YSBiYXNlZCBvbiBhIHNldCBvZiB2YWx1ZXMuXHJcbiAgICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgZGF0YSB0byBiZSBmaWx0ZXJlZC5cclxuICAgKiBAdGVtcGxhdGUgViBUaGUgdHlwZSBvZiB0aGUgdmFsdWVzIHVzZWQgZm9yIGZpbHRlcmluZy5cclxuICAgKi9cclxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgVmFsdWVTZXQ8VCwgVj4gZXh0ZW5kcyBFeHRyYWN0YWJsZVByb3BlcnR5PFQsIFY+IHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWVzOiBTZXQ8Vj4pIHtcclxuICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsYXNzIGZvciBmaWx0ZXJpbmcgZGF0YSB3aXRoaW4gYSBtaW4tbWF4IHJhbmdlLlxyXG4gICAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIGRhdGEgdG8gYmUgZmlsdGVyZWQuXHJcbiAgICogQHRlbXBsYXRlIFYgVGhlIHR5cGUgb2YgdGhlIHZhbHVlcyBkZWZpbmluZyB0aGUgcmFuZ2UuXHJcbiAgICovXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIFZhbHVlTWluTWF4PFQsIFY+IGV4dGVuZHMgRXh0cmFjdGFibGVQcm9wZXJ0eTxULCBWPiB7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbWluOiBWLFxyXG4gICAgICAgICAgICAgICAgcHVibGljIG1heDogVikge1xyXG4gICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWJzdHJhY3QgY2xhc3MgZm9yIGZpbHRlcmluZyBkYXRhIGJhc2VkIG9uIHdoZXRoZXIgYSBzcGVjaWZpYyBwcm9wZXJ0eVxyXG4gICAqIG9mIHRoZSBkYXRhLCB3aGVuIHRyaW1tZWQgYW5kIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlLCBjb250YWlucyBhIHNwZWNpZmllZFxyXG4gICAqIHN1YnN0cmluZywgYWxzbyB0cmltbWVkIGFuZCBjb252ZXJ0ZWQgdG8gbG93ZXIgY2FzZS5cclxuICAgKiBAdGVtcGxhdGUgVCBUaGUgdHlwZSBvZiBkYXRhIHRvIGJlIGZpbHRlcmVkLlxyXG4gICAqL1xyXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250YWluc1N0cmluZ0lnbm9yZUNhc2U8VD4gZXh0ZW5kcyBWYWx1ZVNpbmdsZTxULCBzdHJpbmc+IHtcclxuXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmlsdGVyRm4oKTogKGRhdGE6IFRhYmxlUm93PFQ+KSA9PiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2l2ZW4gPSB0aGlzLmV4dHJhY3RQcm9wZXJ0eShkYXRhKTtcclxuICAgICAgICByZXR1cm4gZ2l2ZW4udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVxdWFsU3RyaW5nPFQ+IGV4dGVuZHMgVmFsdWVTaW5nbGU8VCwgc3RyaW5nPiB7XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIGZpbHRlckZuKCk6IChkYXRhOiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdpdmVuID0gdGhpcy5leHRyYWN0UHJvcGVydHkoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIGdpdmVuID09PSB0aGlzLnZhbHVlO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVxdWFsTnVtYmVyPFQ+IGV4dGVuZHMgVmFsdWVTaW5nbGU8VCwgbnVtYmVyPiB7XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIGZpbHRlckZuKCk6IChkYXRhOiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdpdmVuID0gdGhpcy5leHRyYWN0UHJvcGVydHkoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIGdpdmVuID09PSB0aGlzLnZhbHVlO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIExlc3NOdW1iZXI8VD4gZXh0ZW5kcyBWYWx1ZVNpbmdsZTxULCBudW1iZXI+IHtcclxuXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmlsdGVyRm4oKTogKGRhdGE6IFRhYmxlUm93PFQ+KSA9PiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2l2ZW4gPSB0aGlzLmV4dHJhY3RQcm9wZXJ0eShkYXRhKTtcclxuICAgICAgICByZXR1cm4gZ2l2ZW4gPCB0aGlzLnZhbHVlO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIExlc3NPckVxdWFsTnVtYmVyPFQ+IGV4dGVuZHMgVmFsdWVTaW5nbGU8VCwgbnVtYmVyPiB7XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIGZpbHRlckZuKCk6IChkYXRhOiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdpdmVuID0gdGhpcy5leHRyYWN0UHJvcGVydHkoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIGdpdmVuIDw9IHRoaXMudmFsdWU7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9yZU51bWJlcjxUPiBleHRlbmRzIFZhbHVlU2luZ2xlPFQsIG51bWJlcj4ge1xyXG5cclxuICAgIHB1YmxpYyBvdmVycmlkZSBmaWx0ZXJGbigpOiAoZGF0YTogVGFibGVSb3c8VD4pID0+IGJvb2xlYW4ge1xyXG4gICAgICByZXR1cm4gKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBnaXZlbiA9IHRoaXMuZXh0cmFjdFByb3BlcnR5KGRhdGEpO1xyXG4gICAgICAgIHJldHVybiBnaXZlbiA+IHRoaXMudmFsdWU7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgTW9yZU9yRXF1YWxOdW1iZXI8VD4gZXh0ZW5kcyBWYWx1ZVNpbmdsZTxULCBudW1iZXI+IHtcclxuXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmlsdGVyRm4oKTogKGRhdGE6IFRhYmxlUm93PFQ+KSA9PiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2l2ZW4gPSB0aGlzLmV4dHJhY3RQcm9wZXJ0eShkYXRhKTtcclxuICAgICAgICByZXR1cm4gZ2l2ZW4gPj0gdGhpcy52YWx1ZTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOdW1iZXJSYW5nZUluY2xNaW5FeGNsTWF4PFQ+IGV4dGVuZHMgVmFsdWVNaW5NYXg8VCwgbnVtYmVyPiB7XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIGZpbHRlckZuKCk6IChkYXRhOiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdpdmVuID0gdGhpcy5leHRyYWN0UHJvcGVydHkoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIGdpdmVuID49IHRoaXMubWluICYmIGdpdmVuIDwgdGhpcy5tYXg7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgTnVtYmVyUmFuZ2VFeGNsTWluSW5jbE1heDxUPiBleHRlbmRzIFZhbHVlTWluTWF4PFQsIG51bWJlcj4ge1xyXG5cclxuICAgIHB1YmxpYyBvdmVycmlkZSBmaWx0ZXJGbigpOiAoZGF0YTogVGFibGVSb3c8VD4pID0+IGJvb2xlYW4ge1xyXG4gICAgICByZXR1cm4gKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBnaXZlbiA9IHRoaXMuZXh0cmFjdFByb3BlcnR5KGRhdGEpO1xyXG4gICAgICAgIHJldHVybiBnaXZlbiA+IHRoaXMubWluICYmIGdpdmVuIDw9IHRoaXMubWF4O1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGFic3RyYWN0IGNsYXNzIE51bWJlclJhbmdlSW5jbE1pbkluY2xNYXg8VCwgVj4gZXh0ZW5kcyBWYWx1ZU1pbk1heDxULCBudW1iZXI+IHtcclxuXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgZmlsdGVyRm4oKTogKGRhdGE6IFRhYmxlUm93PFQ+KSA9PiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIChkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZ2l2ZW4gPSB0aGlzLmV4dHJhY3RQcm9wZXJ0eShkYXRhKTtcclxuICAgICAgICByZXR1cm4gZ2l2ZW4gPj0gdGhpcy5taW4gJiYgZ2l2ZW4gPD0gdGhpcy5tYXg7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgTnVtYmVyUmFuZ2VFeGNsTWluRXhjbE1heDxULCBWPiBleHRlbmRzIFZhbHVlTWluTWF4PFQsIG51bWJlcj4ge1xyXG5cclxuICAgIHB1YmxpYyBvdmVycmlkZSBmaWx0ZXJGbigpOiAoZGF0YTogVGFibGVSb3c8VD4pID0+IGJvb2xlYW4ge1xyXG4gICAgICByZXR1cm4gKGRhdGEpID0+IHtcclxuICAgICAgICBjb25zdCBnaXZlbiA9IHRoaXMuZXh0cmFjdFByb3BlcnR5KGRhdGEpO1xyXG4gICAgICAgIHJldHVybiBnaXZlbiA+IHRoaXMubWluICYmIGdpdmVuIDwgdGhpcy5tYXg7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3MgaGFzSW5TZXQ8VCwgVj4gZXh0ZW5kcyBWYWx1ZVNldDxULCBWPiB7XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIGZpbHRlckZuKCk6IChkYXRhOiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdpdmVuID0gdGhpcy5leHRyYWN0UHJvcGVydHkoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmhhcyhnaXZlbik7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBvcnQgYWJzdHJhY3QgY2xhc3Mgbm90SGFzSW5TZXQ8VCwgVj4gZXh0ZW5kcyBWYWx1ZVNldDxULCBWPiB7XHJcblxyXG4gICAgcHVibGljIG92ZXJyaWRlIGZpbHRlckZuKCk6IChkYXRhOiBUYWJsZVJvdzxUPikgPT4gYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdpdmVuID0gdGhpcy5leHRyYWN0UHJvcGVydHkoZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlcy5oYXMoZ2l2ZW4pO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUtZmlsdGVyYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1hdXItbWF0LXRhYmxlL3NyYy9saWIvbmd4LWF1ci1tYXQtdGFibGUtZmlsdGVyYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWx0ZXJzfSBmcm9tIFwiLi9maWx0ZXItYWN0aW9uL0ZpbHRlcnNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4QXVyTWF0VGFibGVGaWx0ZXJhYmxlPFQ+IHtcclxuICBhcHBseUZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcsIGZpbHRlcjogRmlsdGVycy5CYXNlPFQ+KTogdm9pZCxcclxuICByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKTogdm9pZCxcclxuICBjbGVhckZpbHRlcnMoKTogdm9pZFxyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUtZmlsdGVyYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1hdXItbWF0LXRhYmxlL3NyYy9saWIvbmd4LWF1ci1tYXQtdGFibGUtZmlsdGVyYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWx0ZXJzfSBmcm9tIFwiLi9maWx0ZXItYWN0aW9uL05neEF1ckZpbHRlcnNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmd4QXVyTWF0VGFibGVGaWx0ZXJhYmxlPFQ+IHtcclxuICBhcHBseUZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcsIGZpbHRlcjogRmlsdGVycy5CYXNlPFQ+KTogdm9pZCxcclxuICByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nKTogdm9pZCxcclxuICBjbGVhckZpbHRlcnMoKTogdm9pZFxyXG59XHJcbiJdfQ==
@@ -253,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
253
253
  }], highlight: [{
254
254
  type: Input
255
255
  }] } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxPQUFPLEVBQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDeEYsT0FBTyxFQUFjLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFckcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFB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TUFBTTtnQkFLRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBdUJFLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29sdW1uVmlldywgVGFibGVDb25maWd9IGZyb20gJy4vbW9kZWwvQ29sdW1uQ29uZmlnJztcclxuaW1wb3J0IHtNYXRTb3J0LCBTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHtNYXRQYWdpbmF0b3J9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7U2VsZWN0aW9uUHJvdmlkZXIsIFNlbGVjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1NlbGVjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtBY3Rpb25FdmVudCwgUm93QWN0aW9uUHJvdmlkZXIsIFJvd0FjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1Jvd0FjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSBcIi4vbW9kZWwvVGFibGVSb3dcIjtcclxuaW1wb3J0IHtUYWJsZVZpZXdGYWN0b3J5fSBmcm9tIFwiLi9tb2RlbC9UYWJsZVZpZXdGYWN0b3J5XCI7XHJcbmltcG9ydCB7SW5kZXhQcm92aWRlciwgSW5kZXhQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvSW5kZXhQcm92aWRlclwiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25Qcm92aWRlciwgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9QYWdpbmF0aW9uUHJvdmlkZXJcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5fSBmcm9tIFwiLi9mYWN0b3JpZXMvTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeVwiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb2x1bW5zRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL0Rpc3BsYXlDb2x1bW5zRmFjdG9yeVwiO1xyXG5pbXBvcnQge0VtcHR5VmFsdWV9IGZyb20gXCIuL21vZGVsL0VtcHR5VmFsdWVcIjtcclxuaW1wb3J0IHtUb3RhbFJvd1Byb3ZpZGVyLCBUb3RhbFJvd1Byb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9Ub3RhbFJvd1Byb3ZpZGVyXCI7XHJcbmltcG9ydCB7RmlsdGVyc30gZnJvbSBcIi4vZmlsdGVyLWFjdGlvbi9GaWx0ZXJzXCI7XHJcbmltcG9ydCB7Tmd4QXVyTWF0VGFibGVQdWJsaWN9IGZyb20gXCIuL25neC1hdXItbWF0LXRhYmxlLXB1YmxpY1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRDb250YWluZXI8VD4ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT2Zmc2V0IHtcclxuICBsZWZ0OiBudW1iZXIsXHJcbiAgd2lkdGg6IG51bWJlclxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1ci1tYXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4QXVyTWF0VGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBOZ3hBdXJNYXRUYWJsZVB1YmxpYzxUPiB7XHJcblxyXG4gIHB1YmxpYyB0YWJsZURhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFRhYmxlUm93PFQ+PihbXSk7XHJcbiAgcHVibGljIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHRhYmxlVmlldzogTWFwPHN0cmluZywgQ29sdW1uVmlldzxzdHJpbmc+PltdID0gW107XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkcmVuKCdyb3dMaW5rJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSByb3dzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSB0YWJsZTogRWxlbWVudFJlZjtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZzxUPjtcclxuXHJcbiAgQElucHV0KCkgdGFibGVEYXRhOiBUW10gPSBbXTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7c3RhdGljOiBmYWxzZX0pIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFNvcnQsIHtzdGF0aWM6IHRydWV9KSBtYXRTb3J0OiBNYXRTb3J0O1xyXG5cclxuICBAT3V0cHV0KCkgc29ydDogRXZlbnRFbWl0dGVyPFNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBhY3Rpb25zXHJcbiAgQE91dHB1dCgpIG9uUm93QWN0aW9uOiBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUPj4oKTtcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBzZWxlY3QgZXZlbnRcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25EZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZFJvd3NBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFRbXT4+KCk7XHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gZmlsdGVyZWQgcm93c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY29sdW1uT2Zmc2V0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uT2Zmc2V0W10+KCk7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBwcml2YXRlIHJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgPSBFbXB0eVZhbHVlLlJFU0laRV9PQlNFUlZFUjtcclxuXHJcbiAgc2VsZWN0aW9uUHJvdmlkZXI6IFNlbGVjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFNlbGVjdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcm93QWN0aW9uc1Byb3ZpZGVyOiBSb3dBY3Rpb25Qcm92aWRlcjxUPiA9IG5ldyBSb3dBY3Rpb25Qcm92aWRlckR1bW15PFQ+KCk7XHJcblxyXG4gIGluZGV4UHJvdmlkZXI6IEluZGV4UHJvdmlkZXIgPSBuZXcgSW5kZXhQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHBhZ2luYXRpb25Qcm92aWRlcjogUGFnaW5hdGlvblByb3ZpZGVyID0gbmV3IFBhZ2luYXRpb25Qcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHRvdGFsUm93UHJvdmlkZXI6IFRvdGFsUm93UHJvdmlkZXI8VD4gPSBuZXcgVG90YWxSb3dQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIGhpZ2hsaWdodGVkOiBUIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIGN1c3RvbVNvcnRGdW5jdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgKGRhdGE6IFRhYmxlUm93PFQ+LCBrZXk6IHN0cmluZykgPT4gYW55PigpO1xyXG5cclxuICBwcml2YXRlIGZpbHRlclN0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgRmlsdGVycy5CYXNlPFQ+PigpO1xyXG5cclxuICAvL9C30L3QsNGH0LXQvdC40LUg0L/QtdGA0LXQtNCw0LXRgtGB0Y8g0LIg0LrQvtC90YLQtdC50L3QtdGA0LUg0LjQvdCw0YfQtSBPbkNoYW5nZSDQvdC1INCy0LjQtNC40YIg0LjQt9C80LXQvdC10L3QuNC5INC60L7Qs9C00LAg0L/QtdGA0LXQtNCw0Y7RgtGB0Y8g0L7QtNC40L3QsNC60L7QstGL0LUg0LfQvdCw0YfQtdC90LjQtSDQuCDQv9C+0LTRgdCy0LXRgtC60LAg0YHRgtGA0L7QutC4INC90LUg0L7RgtC60LvRjtGH0LDQtdGC0YHRj1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSBoaWdobGlnaHQ6IEhpZ2hsaWdodENvbnRhaW5lcjxUPiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndGFibGVEYXRhJ10gJiYgdGhpcy50YWJsZURhdGEpIHtcclxuICAgICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaGlnaGxpZ2h0J10gJiYgdGhpcy5oaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5oYW5kbGVIaWdobGlnaHRDaGFuZ2UodGhpcy5oaWdobGlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVIaWdobGlnaHRDaGFuZ2UoaDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+KSB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZCA9PT0gaC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSBoLnZhbHVlO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEuZmluZEluZGV4KHJvdyA9PiByb3cucm93U3JjID09PSBoLnZhbHVlKTtcclxuICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICB0aGlzLnJvd3M/LnRvQXJyYXkoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXHJcbiAgICAgICAgICBibG9jazogXCJjZW50ZXJcIixcclxuICAgICAgICAgIGlubGluZTogXCJjZW50ZXJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbml0IGlucHV0cyBbdGFibGVDb25maWddIGlzIG1hbmRhdG9yeSFcIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHdlIG5lZWQgdGhpcywgaW4gb3JkZXIgdG8gbWFrZSBwYWdpbmF0aW9uIHdvcmsgd2l0aCAqbmdJZlxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFBhZ2luYXRvcigpXHJcbiAgICB0aGlzLmluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKTtcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMudXBkYXRlQ29sdW1uT2Zmc2V0cygpKTtcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLm9ic2VydmUodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdFBhZ2luYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydCA9IHRoaXMubWF0U29ydDtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydGluZ0RhdGFBY2Nlc3NvciA9IChkYXRhLCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBjdXN0b21Tb3J0RnVuY3Rpb24gPSB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuZ2V0KGtleSk7XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbVNvcnRGdW5jdGlvbiA/IGN1c3RvbVNvcnRGdW5jdGlvbihkYXRhLCBrZXkpIDogZGF0YVtrZXldO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5PZmZzZXRzKCkge1xyXG4gICAgY29uc3Qgb2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBBcnJheS5mcm9tKHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKVxyXG4gICAgICAubWFwKGMgPT4gKGMgYXMgSFRNTEVsZW1lbnQpKVxyXG4gICAgICAubWFwKGMgPT4gKHtsZWZ0OiBjLm9mZnNldExlZnQsIHdpZHRoOiBjLm9mZnNldFdpZHRofSkpXHJcbiAgICB0aGlzLmNvbHVtbk9mZnNldHMuZW1pdChvZmZzZXRzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZVRhYmxlRGF0YSgpIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLmRpc3BsYXllZENvbHVtbnMpO1xyXG5cclxuICAgIHRoaXMucm93QWN0aW9uc1Byb3ZpZGVyID0gUm93QWN0aW9uUHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRBY3Rpb25Db2x1bW4odGhpcy5kaXNwbGF5ZWRDb2x1bW5zKVxyXG4gICAgICAuc2V0Vmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvblByb3ZpZGVyID0gU2VsZWN0aW9uUHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcsIHRoaXMudGFibGVEYXRhU291cmNlKVxyXG4gICAgICAuYWRkQ2hlY2tib3hDb2x1bW4odGhpcy5kaXNwbGF5ZWRDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0KTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZ1xyXG4gICAgICAuZmlsdGVyKGMgPT4gYy5zb3J0ICYmIGMuc29ydC5lbmFibGUgJiYgYy5zb3J0LmN1c3RvbVNvcnQpXHJcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLnNldChjLmtleSwgYy5zb3J0IS5jdXN0b21Tb3J0ISkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeS5jb252ZXJ0KHRoaXMudGFibGVEYXRhLCB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNDZmcpO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSBUYWJsZVZpZXdGYWN0b3J5LnRvVmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLCB0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gRGlzcGxheUNvbHVtbnNGYWN0b3J5LmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2VhcmNoRmlsdGVyKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5kZWxldGUoZmlsdGVyTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nLCBmaWx0ZXI6IEZpbHRlcnMuQmFzZTxUPik6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJTdG9yYWdlLnNldChmaWx0ZXJOYW1lLCBmaWx0ZXIpO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlckludGVybmFsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICB0aGlzLmFwcGx5RmlsdGVySW50ZXJuYWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJJbnRlcm5hbCgpIHtcclxuICAgIGNvbnN0IGZpbHRlckFjdGlvbnMgPSBbLi4udGhpcy5maWx0ZXJTdG9yYWdlLnZhbHVlcygpXTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXJBY3Rpb25zLmV2ZXJ5KGZpbHRlckFjdGlvbiA9PiBmaWx0ZXJBY3Rpb24uZmlsdGVyRm4oKShkYXRhKSk7XHJcbiAgICB9O1xyXG4gICAgLy8g0J/RgNC40LzQtdC90LXQvdC40LUg0YTQuNC70YzRgtGA0LDRhtC40LguINC90YPQttC90L4g0L/QtdGA0LXQtNCw0YLRjCDRg9C90LjQutCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INGH0YLQvtCx0Ysg0YTQuNC70YzRgtGA0LDRhtC40Y8g0LfQsNC/0YPRgdGC0LjQu9Cw0YHRjFxyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gJ3RyaWdnZXItJyArIE1hdGgucmFuZG9tKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsdGVyZWRWYWx1ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQodGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLm1hcChmID0+IGYucm93U3JjKSlcclxuICB9XHJcblxyXG4gIHNvcnRUYWJsZShzb3J0UGFyYW1ldGVyczogU29ydCkge1xyXG4gICAgdGhpcy5zb3J0LmVtaXQoc29ydFBhcmFtZXRlcnMpO1xyXG4gIH1cclxuXHJcbiAgZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb246IHN0cmluZywgcm93czogVFtdKSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRSb3dzQWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd3N9KTtcclxuICB9XHJcblxyXG4gIGVtaXRSb3dBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvdzogVCwgJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm9uUm93QWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd30pO1xyXG4gIH1cclxuXHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5tYXN0ZXJUb2dnbGUoKTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5pc0FsbFNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBjYXN0U3JjKHJvdzogYW55KTogVGFibGVSb3c8VD4ge1xyXG4gICAgcmV0dXJuIHJvdztcclxuICB9XHJcblxyXG4gIHJvd0NsaWNrKHJvdzogVGFibGVSb3c8VD4pIHtcclxuICAgIGlmIChyb3cucm93U3JjICE9PSB0aGlzLmhpZ2hsaWdodGVkIHx8IChyb3cucm93U3JjID09PSB0aGlzLmhpZ2hsaWdodGVkICYmICF0aGlzLnRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5jYW5jZWxhYmxlKSkge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cucm93U3JjKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHJvdy5yb3dTcmM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdCh1bmRlZmluZWQpO1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDQntGB0YLQsNC90LDQstC70LjQstCw0LXQvCDQvdCw0LHQu9GO0LTQtdC90LjQtSDQv9GA0Lgg0YPQvdC40YfRgtC+0LbQtdC90LjQuCDQutC+0LzQv9C+0L3QtdC90YLQsFxyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXVyLW1hdC10YWJsZVwiPlxyXG4gIDxuZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBGaWx0ZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb25maWcuZmlsdGVyQ2ZnXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7dGFibGVDb25maWcuZmlsdGVyQ2ZnPy5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJhcHBseVNlYXJjaEZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3RhYmxlQ29uZmlnLmZpbHRlckNmZz8ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGFibGUgLS0+XHJcbiAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0XHJcbiAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVEYXRhU291cmNlXCJcclxuICAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJzb3J0VGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/LmhlaWdodFwiXHJcbiAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5tYXhIZWlnaHRcIlxyXG4gICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8ubWluSGVpZ2h0XCI+XHJcblxyXG4gICAgICA8IS0tICAgICAgICBpbmRleC1jb2x1bW4tLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4UHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJpbmRleFByb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcblxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiaW5kZXhQcm92aWRlci5oZWFkZXJWaWV3XCI+XHJcbiAgICAgICAgICAgIHt7aW5kZXhQcm92aWRlci5uYW1lfX1cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAge3tyb3dJbmRleCArIGluZGV4UHJvdmlkZXIub2Zmc2V0fX1cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3t0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoaW5kZXhQcm92aWRlci5DT0xVTU5fTkFNRSkgfHwgJyd9fVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSAgICAgICAgc2VsZWN0aW9uLWNvbHVtbi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwic2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUVcIiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmc/LnNob3dTZWxlY3RlZENvdW50ICYmIHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpXCI+XHJcbiAgICAgICAgICAgICAgKHt7c2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aH19L3t7dGFibGVEYXRhU291cmNlLmRhdGEubGVuZ3RofX0pXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIHRhYmxlQ29uZmlnPy5zZWxlY3Rpb25DZmc/LmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uLmFjdGlvbiwgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhY3Rpb24uaWNvbi50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnIS5hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YWN0aW9uLmljb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnRvZ2dsZShjYXN0U3JjKHJvdykucm93U3JjKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaXNTZWxlY3RlZChjYXN0U3JjKHJvdykucm93U3JjKVwiPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogc2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBhY3Rpb24gY29sdW1uIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93QWN0aW9uc1Byb3ZpZGVyLmlzRW5hYmxlZFwiIFttYXRDb2x1bW5EZWZdPVwicm93QWN0aW9uc1Byb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFJvd0FjdGlvbihhY3Rpb24uYWN0aW9uLCBlbGVtZW50LnJvd1NyYywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHJvd0FjdGlvbnNQcm92aWRlci5hY3Rpb25WaWV3LmdldChlbGVtZW50LmlkKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAge3thY3Rpb24uaWNvbi5uYW1lfX1cclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0FjdGlvbnNQcm92aWRlci5DT0xVTU5fTkFNRX1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tICAgIHZhbHVlLWljb24tLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uQ29uZmlnIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnNDZmdcIiBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbkNvbmZpZy5rZXlcIj5cclxuXHJcbiAgICAgICAgPCEtLSBpZiBzb3J0YWJsZSBjb2x1bW4gaGVhZGVyIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5Db25maWcuc29ydCAmJiBjb2x1bW5Db25maWcuc29ydC5lbmFibGU7IGVsc2Ugbm90U29ydGFibGVcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW5Db25maWcua2V5XCJcclxuICAgICAgICAgICAgICBbYXJyb3dQb3NpdGlvbl09XCJjb2x1bW5Db25maWcuc29ydC5wb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICdiZWZvcmUnIDogJ2FmdGVyJ1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gZWxzZSBub3Qgc29ydGFibGUgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJWYWx1ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8IS0tICAgICAgaGVhZGVyIHZhbHVlLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJWYWx1ZT5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXcgW2NvbmZpZ109XCJjb2x1bW5Db25maWcuaGVhZGVyVmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW5Db25maWcubmFtZVwiPlxyXG4gICAgICAgICAgPC9saWItY29sdW1uLXZpZXc+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSBjb2x1bW4gdmFsdWUg0L/QvtC70YPRh9Cw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0LrQvtC70L7QvdC+0Log0L3Rg9C20L3QviDRh9C10YDQtdC3IGdldFZpZXcocm93SW5kZXgsIGNvbHVtbkNvbmZpZy5rZXkpINGC0LDQvCDQvdCw0YXQvtC00Y/RgtGB0Y8g0YPQttC1XHJcbiAgICAgICAg0L/QvtC00LPQvtGC0L7QstC70LXQvdC90YvQtSDQt9C90LDRh9C10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjy0tPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50O1wiPlxyXG4gICAgICAgICAgPGxpYi1jb2x1bW4tdmlld1xyXG4gICAgICAgICAgICBbY29uZmlnXT1cInRhYmxlVmlld1tlbGVtZW50LmlkXT8uZ2V0KGNvbHVtbkNvbmZpZy5rZXkpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbkNvbmZpZy5rZXlcIj5cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICAgICAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoY29sdW1uQ29uZmlnLmtleSkgfHwgJycgfX1cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAjcm93TGlua1xyXG4gICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcclxuICAgICAgICAgIChjbGljayk9XCJyb3dDbGljayhyb3cpXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsncG9pbnRlcic6IHRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5wb2ludGVyIHx8IGZhbHNlLCAnbmV3LWNvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjICYmIHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uY29sb3J9XCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdjb2xvcic6IGhpZ2hsaWdodGVkPT09cm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvciA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogaGlnaGxpZ2h0ZWQgPT09IHJvdy5yb3dTcmM/IHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uYmFja2dyb3VuZCA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdib3JkZXInOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5ib3JkZXIgOiB1bmRlZmluZWRcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgPC90cj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvdGFsUm93UHJvdmlkZXIuaXNFbmFibGVkXCI+XHJcbiAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCIgW3N0eWxlXT1cInRvdGFsUm93UHJvdmlkZXIuc3R5bGVcIj48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxyXG4gICAgPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVzXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uUHJvdmlkZXIuc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBzaG93Rmlyc3RMYXN0QnV0dG9ucz5cclxuICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlckNlbGxUZW1wbGF0ZSBsZXQtY29sdW1uTmFtZT5cclxuICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbk5hbWUpIHx8ICcnIH19XHJcbiAgPC90ZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixTQUFTLEVBQ1QsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxPQUFPLEVBQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDeEYsT0FBTyxFQUFjLGlCQUFpQixFQUFFLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFckcsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVFLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFB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TUFBTTtnQkFLRyxRQUFRO3NCQUFqQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBdUJFLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29sdW1uVmlldywgVGFibGVDb25maWd9IGZyb20gJy4vbW9kZWwvQ29sdW1uQ29uZmlnJztcclxuaW1wb3J0IHtNYXRTb3J0LCBTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHtNYXRQYWdpbmF0b3J9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7U2VsZWN0aW9uUHJvdmlkZXIsIFNlbGVjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1NlbGVjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtBY3Rpb25FdmVudCwgUm93QWN0aW9uUHJvdmlkZXIsIFJvd0FjdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gJy4vcHJvdmlkZXJzL1Jvd0FjdGlvblByb3ZpZGVyJztcclxuaW1wb3J0IHtUYWJsZVJvd30gZnJvbSBcIi4vbW9kZWwvVGFibGVSb3dcIjtcclxuaW1wb3J0IHtUYWJsZVZpZXdGYWN0b3J5fSBmcm9tIFwiLi9tb2RlbC9UYWJsZVZpZXdGYWN0b3J5XCI7XHJcbmltcG9ydCB7SW5kZXhQcm92aWRlciwgSW5kZXhQcm92aWRlckR1bW15fSBmcm9tIFwiLi9wcm92aWRlcnMvSW5kZXhQcm92aWRlclwiO1xyXG5pbXBvcnQge1BhZ2luYXRpb25Qcm92aWRlciwgUGFnaW5hdGlvblByb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9QYWdpbmF0aW9uUHJvdmlkZXJcIjtcclxuaW1wb3J0IHtNYXRUYWJsZURhdGFTb3VyY2VGYWN0b3J5fSBmcm9tIFwiLi9mYWN0b3JpZXMvTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeVwiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb2x1bW5zRmFjdG9yeX0gZnJvbSBcIi4vZmFjdG9yaWVzL0Rpc3BsYXlDb2x1bW5zRmFjdG9yeVwiO1xyXG5pbXBvcnQge0VtcHR5VmFsdWV9IGZyb20gXCIuL21vZGVsL0VtcHR5VmFsdWVcIjtcclxuaW1wb3J0IHtUb3RhbFJvd1Byb3ZpZGVyLCBUb3RhbFJvd1Byb3ZpZGVyRHVtbXl9IGZyb20gXCIuL3Byb3ZpZGVycy9Ub3RhbFJvd1Byb3ZpZGVyXCI7XHJcbmltcG9ydCB7RmlsdGVyc30gZnJvbSBcIi4vZmlsdGVyLWFjdGlvbi9OZ3hBdXJGaWx0ZXJzXCI7XHJcbmltcG9ydCB7Tmd4QXVyTWF0VGFibGVQdWJsaWN9IGZyb20gXCIuL25neC1hdXItbWF0LXRhYmxlLXB1YmxpY1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIaWdobGlnaHRDb250YWluZXI8VD4ge1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT2Zmc2V0IHtcclxuICBsZWZ0OiBudW1iZXIsXHJcbiAgd2lkdGg6IG51bWJlclxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1ci1tYXQtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4QXVyTWF0VGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBOZ3hBdXJNYXRUYWJsZVB1YmxpYzxUPiB7XHJcblxyXG4gIHB1YmxpYyB0YWJsZURhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFRhYmxlUm93PFQ+PihbXSk7XHJcbiAgcHVibGljIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHRhYmxlVmlldzogTWFwPHN0cmluZywgQ29sdW1uVmlldzxzdHJpbmc+PltdID0gW107XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkcmVuKCdyb3dMaW5rJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSByb3dzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywge3JlYWQ6IEVsZW1lbnRSZWZ9KSB0YWJsZTogRWxlbWVudFJlZjtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBJbnB1dCgpIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZzxUPjtcclxuXHJcbiAgQElucHV0KCkgdGFibGVEYXRhOiBUW10gPSBbXTtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7c3RhdGljOiBmYWxzZX0pIG1hdFBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBAVmlld0NoaWxkKE1hdFNvcnQsIHtzdGF0aWM6IHRydWV9KSBtYXRTb3J0OiBNYXRTb3J0O1xyXG5cclxuICBAT3V0cHV0KCkgc29ydDogRXZlbnRFbWl0dGVyPFNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBhY3Rpb25zXHJcbiAgQE91dHB1dCgpIG9uUm93QWN0aW9uOiBFdmVudEVtaXR0ZXI8QWN0aW9uRXZlbnQ8VD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUPj4oKTtcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAvLyBldmVudHMgaWYgZW5hYmxlZCBzZWxlY3QgZXZlbnRcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcclxuICBAT3V0cHV0KCkgb25EZXNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgb25TZWxlY3RlZFJvd3NBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFRbXT4+KCk7XHJcbiAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gIEBPdXRwdXQoKSBvblJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuICAvKipcclxuICAgKiByZXR1cm4gZmlsdGVyZWQgcm93c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xyXG5cclxuICBAT3V0cHV0KCkgY29sdW1uT2Zmc2V0cyA9IG5ldyBFdmVudEVtaXR0ZXI8Q29sdW1uT2Zmc2V0W10+KCk7XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBwcml2YXRlIHJlc2l6ZUNvbHVtbk9mZnNldHNPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgPSBFbXB0eVZhbHVlLlJFU0laRV9PQlNFUlZFUjtcclxuXHJcbiAgc2VsZWN0aW9uUHJvdmlkZXI6IFNlbGVjdGlvblByb3ZpZGVyPFQ+ID0gbmV3IFNlbGVjdGlvblByb3ZpZGVyRHVtbXkoKTtcclxuXHJcbiAgcm93QWN0aW9uc1Byb3ZpZGVyOiBSb3dBY3Rpb25Qcm92aWRlcjxUPiA9IG5ldyBSb3dBY3Rpb25Qcm92aWRlckR1bW15PFQ+KCk7XHJcblxyXG4gIGluZGV4UHJvdmlkZXI6IEluZGV4UHJvdmlkZXIgPSBuZXcgSW5kZXhQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHBhZ2luYXRpb25Qcm92aWRlcjogUGFnaW5hdGlvblByb3ZpZGVyID0gbmV3IFBhZ2luYXRpb25Qcm92aWRlckR1bW15KCk7XHJcblxyXG4gIHRvdGFsUm93UHJvdmlkZXI6IFRvdGFsUm93UHJvdmlkZXI8VD4gPSBuZXcgVG90YWxSb3dQcm92aWRlckR1bW15KCk7XHJcblxyXG4gIGhpZ2hsaWdodGVkOiBUIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIGN1c3RvbVNvcnRGdW5jdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgKGRhdGE6IFRhYmxlUm93PFQ+LCBrZXk6IHN0cmluZykgPT4gYW55PigpO1xyXG5cclxuICBwcml2YXRlIGZpbHRlclN0b3JhZ2UgPSBuZXcgTWFwPHN0cmluZywgRmlsdGVycy5CYXNlPFQ+PigpO1xyXG5cclxuICAvL9C30L3QsNGH0LXQvdC40LUg0L/QtdGA0LXQtNCw0LXRgtGB0Y8g0LIg0LrQvtC90YLQtdC50L3QtdGA0LUg0LjQvdCw0YfQtSBPbkNoYW5nZSDQvdC1INCy0LjQtNC40YIg0LjQt9C80LXQvdC10L3QuNC5INC60L7Qs9C00LAg0L/QtdGA0LXQtNCw0Y7RgtGB0Y8g0L7QtNC40L3QsNC60L7QstGL0LUg0LfQvdCw0YfQtdC90LjQtSDQuCDQv9C+0LTRgdCy0LXRgtC60LAg0YHRgtGA0L7QutC4INC90LUg0L7RgtC60LvRjtGH0LDQtdGC0YHRj1xyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBASW5wdXQoKSBoaWdobGlnaHQ6IEhpZ2hsaWdodENvbnRhaW5lcjxUPiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndGFibGVEYXRhJ10gJiYgdGhpcy50YWJsZURhdGEpIHtcclxuICAgICAgdGhpcy5wcmVwYXJlVGFibGVEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snaGlnaGxpZ2h0J10gJiYgdGhpcy5oaWdobGlnaHQpIHtcclxuICAgICAgdGhpcy5oYW5kbGVIaWdobGlnaHRDaGFuZ2UodGhpcy5oaWdobGlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVIaWdobGlnaHRDaGFuZ2UoaDogSGlnaGxpZ2h0Q29udGFpbmVyPFQ+KSB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHRlZCA9PT0gaC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodCA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWQgPSBoLnZhbHVlO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMudGFibGVEYXRhU291cmNlLmRhdGEuZmluZEluZGV4KHJvdyA9PiByb3cucm93U3JjID09PSBoLnZhbHVlKTtcclxuICAgICAgaWYgKGluZGV4ID49IDApIHtcclxuICAgICAgICB0aGlzLnJvd3M/LnRvQXJyYXkoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXHJcbiAgICAgICAgICBibG9jazogXCJjZW50ZXJcIixcclxuICAgICAgICAgIGlubGluZTogXCJjZW50ZXJcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbml0IGlucHV0cyBbdGFibGVDb25maWddIGlzIG1hbmRhdG9yeSFcIilcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHdlIG5lZWQgdGhpcywgaW4gb3JkZXIgdG8gbWFrZSBwYWdpbmF0aW9uIHdvcmsgd2l0aCAqbmdJZlxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdFBhZ2luYXRvcigpXHJcbiAgICB0aGlzLmluaXRTb3J0aW5nRGF0YUFjY2Vzc29yKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbk9mZnNldHMoKTtcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHRoaXMudXBkYXRlQ29sdW1uT2Zmc2V0cygpKTtcclxuICAgIHRoaXMucmVzaXplQ29sdW1uT2Zmc2V0c09ic2VydmVyLm9ic2VydmUodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFBhZ2luYXRvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYmxlRGF0YVNvdXJjZSkge1xyXG4gICAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdFBhZ2luYXRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50YWJsZURhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydCA9IHRoaXMubWF0U29ydDtcclxuICAgICAgdGhpcy50YWJsZURhdGFTb3VyY2Uuc29ydGluZ0RhdGFBY2Nlc3NvciA9IChkYXRhLCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBjdXN0b21Tb3J0RnVuY3Rpb24gPSB0aGlzLmN1c3RvbVNvcnRGdW5jdGlvbnMuZ2V0KGtleSk7XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbVNvcnRGdW5jdGlvbiA/IGN1c3RvbVNvcnRGdW5jdGlvbihkYXRhLCBrZXkpIDogZGF0YVtrZXldO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb2x1bW5PZmZzZXRzKCkge1xyXG4gICAgY29uc3Qgb2Zmc2V0czogQ29sdW1uT2Zmc2V0W10gPSBBcnJheS5mcm9tKHRoaXMudGFibGUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKVxyXG4gICAgICAubWFwKGMgPT4gKGMgYXMgSFRNTEVsZW1lbnQpKVxyXG4gICAgICAubWFwKGMgPT4gKHtsZWZ0OiBjLm9mZnNldExlZnQsIHdpZHRoOiBjLm9mZnNldFdpZHRofSkpXHJcbiAgICB0aGlzLmNvbHVtbk9mZnNldHMuZW1pdChvZmZzZXRzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZVRhYmxlRGF0YSgpIHtcclxuICAgIHRoaXMuaW5pdFRhYmxlKCk7XHJcbiAgICB0aGlzLmluaXRDdXN0b21Tb3J0RnVuY3Rpb25zTWFwKCk7XHJcbiAgICB0aGlzLmluaXRQYWdpbmF0b3IoKTtcclxuICAgIHRoaXMuaW5pdFNvcnRpbmdEYXRhQWNjZXNzb3IoKTtcclxuICAgIHRoaXMuaW5kZXhQcm92aWRlciA9IEluZGV4UHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRJbmRleENvbHVtbih0aGlzLmRpc3BsYXllZENvbHVtbnMpO1xyXG5cclxuICAgIHRoaXMucm93QWN0aW9uc1Byb3ZpZGVyID0gUm93QWN0aW9uUHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcpXHJcbiAgICAgIC5hZGRBY3Rpb25Db2x1bW4odGhpcy5kaXNwbGF5ZWRDb2x1bW5zKVxyXG4gICAgICAuc2V0Vmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvblByb3ZpZGVyID0gU2VsZWN0aW9uUHJvdmlkZXIuY3JlYXRlKHRoaXMudGFibGVDb25maWcsIHRoaXMudGFibGVEYXRhU291cmNlKVxyXG4gICAgICAuYWRkQ2hlY2tib3hDb2x1bW4odGhpcy5kaXNwbGF5ZWRDb2x1bW5zKVxyXG4gICAgICAuYmluZEV2ZW50RW1pdHRlcnModGhpcy5zZWxlY3RlZCwgdGhpcy5vblNlbGVjdCwgdGhpcy5vbkRlc2VsZWN0KTtcclxuXHJcbiAgICB0aGlzLnBhZ2luYXRpb25Qcm92aWRlciA9IFBhZ2luYXRpb25Qcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy50b3RhbFJvd1Byb3ZpZGVyID0gVG90YWxSb3dQcm92aWRlci5jcmVhdGUodGhpcy50YWJsZUNvbmZpZywgdGhpcy50YWJsZURhdGFTb3VyY2UpXHJcbiAgICAgIC5zZXRTdHlsZSgpXHJcbiAgICAgIC5zZXRUb3RhbFJvdygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0Q3VzdG9tU29ydEZ1bmN0aW9uc01hcCgpIHtcclxuICAgIHRoaXMudGFibGVDb25maWcuY29sdW1uc0NmZ1xyXG4gICAgICAuZmlsdGVyKGMgPT4gYy5zb3J0ICYmIGMuc29ydC5lbmFibGUgJiYgYy5zb3J0LmN1c3RvbVNvcnQpXHJcbiAgICAgIC5mb3JFYWNoKGMgPT4gdGhpcy5jdXN0b21Tb3J0RnVuY3Rpb25zLnNldChjLmtleSwgYy5zb3J0IS5jdXN0b21Tb3J0ISkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRUYWJsZSgpIHtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gTWF0VGFibGVEYXRhU291cmNlRmFjdG9yeS5jb252ZXJ0KHRoaXMudGFibGVEYXRhLCB0aGlzLnRhYmxlQ29uZmlnLmNvbHVtbnNDZmcpO1xyXG4gICAgdGhpcy50YWJsZVZpZXcgPSBUYWJsZVZpZXdGYWN0b3J5LnRvVmlldyh0aGlzLnRhYmxlRGF0YVNvdXJjZS5kYXRhLCB0aGlzLnRhYmxlQ29uZmlnKVxyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gRGlzcGxheUNvbHVtbnNGYWN0b3J5LmNyZWF0ZSh0aGlzLnRhYmxlQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIGFwcGx5U2VhcmNoRmlsdGVyKGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUZpbHRlcihmaWx0ZXJOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZmlsdGVyU3RvcmFnZS5kZWxldGUoZmlsdGVyTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHlGaWx0ZXIoZmlsdGVyTmFtZTogc3RyaW5nLCBmaWx0ZXI6IEZpbHRlcnMuQmFzZTxUPik6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJTdG9yYWdlLnNldChmaWx0ZXJOYW1lLCBmaWx0ZXIpO1xyXG4gICAgdGhpcy5hcHBseUZpbHRlckludGVybmFsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5maWx0ZXJTdG9yYWdlLmNsZWFyKCk7XHJcbiAgICB0aGlzLmFwcGx5RmlsdGVySW50ZXJuYWwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJJbnRlcm5hbCgpIHtcclxuICAgIGNvbnN0IGZpbHRlckFjdGlvbnMgPSBbLi4udGhpcy5maWx0ZXJTdG9yYWdlLnZhbHVlcygpXTtcclxuICAgIHRoaXMudGFibGVEYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIHJldHVybiBmaWx0ZXJBY3Rpb25zLmV2ZXJ5KGZpbHRlckFjdGlvbiA9PiBmaWx0ZXJBY3Rpb24uZmlsdGVyRm4oKShkYXRhKSk7XHJcbiAgICB9O1xyXG4gICAgLy8g0J/RgNC40LzQtdC90LXQvdC40LUg0YTQuNC70YzRgtGA0LDRhtC40LguINC90YPQttC90L4g0L/QtdGA0LXQtNCw0YLRjCDRg9C90LjQutCw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INGH0YLQvtCx0Ysg0YTQuNC70YzRgtGA0LDRhtC40Y8g0LfQsNC/0YPRgdGC0LjQu9Cw0YHRjFxyXG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gJ3RyaWdnZXItJyArIE1hdGgucmFuZG9tKCk7XHJcbiAgICB0aGlzLmVtaXRGaWx0ZXJlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0RmlsdGVyZWRWYWx1ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQodGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyZWREYXRhLm1hcChmID0+IGYucm93U3JjKSlcclxuICB9XHJcblxyXG4gIHNvcnRUYWJsZShzb3J0UGFyYW1ldGVyczogU29ydCkge1xyXG4gICAgdGhpcy5zb3J0LmVtaXQoc29ydFBhcmFtZXRlcnMpO1xyXG4gIH1cclxuXHJcbiAgZW1pdFNlbGVjdGVkUm93c0FjdGlvbihhY3Rpb246IHN0cmluZywgcm93czogVFtdKSB7XHJcbiAgICB0aGlzLm9uU2VsZWN0ZWRSb3dzQWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd3N9KTtcclxuICB9XHJcblxyXG4gIGVtaXRSb3dBY3Rpb24oYWN0aW9uOiBzdHJpbmcsIHJvdzogVCwgJGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLm9uUm93QWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd30pO1xyXG4gIH1cclxuXHJcbiAgbWFzdGVyVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5tYXN0ZXJUb2dnbGUoKTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5pc0FsbFNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBjYXN0U3JjKHJvdzogYW55KTogVGFibGVSb3c8VD4ge1xyXG4gICAgcmV0dXJuIHJvdztcclxuICB9XHJcblxyXG4gIHJvd0NsaWNrKHJvdzogVGFibGVSb3c8VD4pIHtcclxuICAgIGlmIChyb3cucm93U3JjICE9PSB0aGlzLmhpZ2hsaWdodGVkIHx8IChyb3cucm93U3JjID09PSB0aGlzLmhpZ2hsaWdodGVkICYmICF0aGlzLnRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5jYW5jZWxhYmxlKSkge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdChyb3cucm93U3JjKTtcclxuICAgICAgdGhpcy5oaWdobGlnaHRlZCA9IHJvdy5yb3dTcmM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uUm93Q2xpY2suZW1pdCh1bmRlZmluZWQpO1xyXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDQntGB0YLQsNC90LDQstC70LjQstCw0LXQvCDQvdCw0LHQu9GO0LTQtdC90LjQtSDQv9GA0Lgg0YPQvdC40YfRgtC+0LbQtdC90LjQuCDQutC+0LzQv9C+0L3QtdC90YLQsFxyXG4gICAgdGhpcy5yZXNpemVDb2x1bW5PZmZzZXRzT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXVyLW1hdC10YWJsZVwiPlxyXG4gIDxuZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBGaWx0ZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb25maWcuZmlsdGVyQ2ZnXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7dGFibGVDb25maWcuZmlsdGVyQ2ZnPy5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJhcHBseVNlYXJjaEZpbHRlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e3RhYmxlQ29uZmlnLmZpbHRlckNmZz8ucGxhY2Vob2xkZXJ9fVwiXHJcbiAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4O1wiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXg+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGFibGUgLS0+XHJcbiAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0XHJcbiAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwidGFibGVEYXRhU291cmNlXCJcclxuICAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJzb3J0VGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJ0YWJsZUNvbmZpZy50YWJsZVZpZXc/LmhlaWdodFwiXHJcbiAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwidGFibGVDb25maWcudGFibGVWaWV3Py5tYXhIZWlnaHRcIlxyXG4gICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cInRhYmxlQ29uZmlnLnRhYmxlVmlldz8ubWluSGVpZ2h0XCI+XHJcblxyXG4gICAgICA8IS0tICAgICAgICBpbmRleC1jb2x1bW4tLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4UHJvdmlkZXIuaXNFbmFibGVkXCIgW21hdENvbHVtbkRlZl09XCJpbmRleFByb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcblxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICA8bGliLWNvbHVtbi12aWV3IFtjb25maWddPVwiaW5kZXhQcm92aWRlci5oZWFkZXJWaWV3XCI+XHJcbiAgICAgICAgICAgIHt7aW5kZXhQcm92aWRlci5uYW1lfX1cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50OyBsZXQgcm93SW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAge3tyb3dJbmRleCArIGluZGV4UHJvdmlkZXIub2Zmc2V0fX1cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgICAgICAge3t0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoaW5kZXhQcm92aWRlci5DT0xVTU5fTkFNRSkgfHwgJyd9fVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSAgICAgICAgc2VsZWN0aW9uLWNvbHVtbi0tPlxyXG4gICAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwic2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUVcIiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLmlzRW5hYmxlZFwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUNvbmZpZy5zZWxlY3Rpb25DZmc/LnNob3dTZWxlY3RlZENvdW50ICYmIHNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpXCI+XHJcbiAgICAgICAgICAgICAgKHt7c2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aH19L3t7dGFibGVEYXRhU291cmNlLmRhdGEubGVuZ3RofX0pXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyLnNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIHRhYmxlQ29uZmlnPy5zZWxlY3Rpb25DZmc/LmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVtaXRTZWxlY3RlZFJvd3NBY3Rpb24oYWN0aW9uLmFjdGlvbiwgc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnNlbGVjdGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJhY3Rpb24uaWNvbi50b29sdGlwIHx8ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdGFibGVDb25maWcuc2VsZWN0aW9uQ2ZnIS5hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YWN0aW9uLmljb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cclxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnRvZ2dsZShjYXN0U3JjKHJvdykucm93U3JjKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaXNTZWxlY3RlZChjYXN0U3JjKHJvdykucm93U3JjKVwiPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlckNlbGxUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogc2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUV9XCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBhY3Rpb24gY29sdW1uIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93QWN0aW9uc1Byb3ZpZGVyLmlzRW5hYmxlZFwiIFttYXRDb2x1bW5EZWZdPVwicm93QWN0aW9uc1Byb3ZpZGVyLkNPTFVNTl9OQU1FXCI+XHJcbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFJvd0FjdGlvbihhY3Rpb24uYWN0aW9uLCBlbGVtZW50LnJvd1NyYywgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi5pY29uLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHJvd0FjdGlvbnNQcm92aWRlci5hY3Rpb25WaWV3LmdldChlbGVtZW50LmlkKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gW3N0eWxlLmNvbG9yXT1cImFjdGlvbi5pY29uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgICAge3thY3Rpb24uaWNvbi5uYW1lfX1cclxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHJvd0FjdGlvbnNQcm92aWRlci5DT0xVTU5fTkFNRX1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8IS0tICAgIHZhbHVlLWljb24tLT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uQ29uZmlnIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnNDZmdcIiBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbkNvbmZpZy5rZXlcIj5cclxuXHJcbiAgICAgICAgPCEtLSBpZiBzb3J0YWJsZSBjb2x1bW4gaGVhZGVyIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5Db25maWcuc29ydCAmJiBjb2x1bW5Db25maWcuc29ydC5lbmFibGU7IGVsc2Ugbm90U29ydGFibGVcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2x1bW5Db25maWcua2V5XCJcclxuICAgICAgICAgICAgICBbYXJyb3dQb3NpdGlvbl09XCJjb2x1bW5Db25maWcuc29ydC5wb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICdiZWZvcmUnIDogJ2FmdGVyJ1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVmFsdWVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDwhLS0gZWxzZSBub3Qgc29ydGFibGUgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTb3J0YWJsZT5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJWYWx1ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8IS0tICAgICAgaGVhZGVyIHZhbHVlLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJWYWx1ZT5cclxuICAgICAgICAgIDxsaWItY29sdW1uLXZpZXcgW2NvbmZpZ109XCJjb2x1bW5Db25maWcuaGVhZGVyVmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb2x1bW5Db25maWcubmFtZVwiPlxyXG4gICAgICAgICAgPC9saWItY29sdW1uLXZpZXc+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSBjb2x1bW4gdmFsdWUg0L/QvtC70YPRh9Cw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0LrQvtC70L7QvdC+0Log0L3Rg9C20L3QviDRh9C10YDQtdC3IGdldFZpZXcocm93SW5kZXgsIGNvbHVtbkNvbmZpZy5rZXkpINGC0LDQvCDQvdCw0YXQvtC00Y/RgtGB0Y8g0YPQttC1XHJcbiAgICAgICAg0L/QvtC00LPQvtGC0L7QstC70LXQvdC90YvQtSDQt9C90LDRh9C10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjy0tPlxyXG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50O1wiPlxyXG4gICAgICAgICAgPGxpYi1jb2x1bW4tdmlld1xyXG4gICAgICAgICAgICBbY29uZmlnXT1cInRhYmxlVmlld1tlbGVtZW50LmlkXT8uZ2V0KGNvbHVtbkNvbmZpZy5rZXkpXCJcclxuICAgICAgICAgICAgW3ZhbHVlXT1cImVsZW1lbnQgfCBkYXRhUHJvcGVydHlHZXR0ZXI6IGNvbHVtbkNvbmZpZy5rZXlcIj5cclxuICAgICAgICAgIDwvbGliLWNvbHVtbi12aWV3PlxyXG4gICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICAgICAgICB7eyB0b3RhbFJvd1Byb3ZpZGVyLnRvdGFscy5nZXQoY29sdW1uQ29uZmlnLmtleSkgfHwgJycgfX1cclxuICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7ICBzdGlja3k6IHRoaXMudGFibGVDb25maWcuc3RpY2t5Q2ZnPy5oZWFkZXJcIj48L3RyPlxyXG4gICAgICA8dHIgbWF0LXJvdyAjcm93TGlua1xyXG4gICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcclxuICAgICAgICAgIChjbGljayk9XCJyb3dDbGljayhyb3cpXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsncG9pbnRlcic6IHRhYmxlQ29uZmlnLmNsaWNrQ2ZnPy5wb2ludGVyIHx8IGZhbHNlLCAnbmV3LWNvbG9yJzogaGlnaGxpZ2h0ZWQ9PT1yb3cucm93U3JjICYmIHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uY29sb3J9XCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdjb2xvcic6IGhpZ2hsaWdodGVkPT09cm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5jb2xvciA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogaGlnaGxpZ2h0ZWQgPT09IHJvdy5yb3dTcmM/IHRhYmxlQ29uZmlnPy5jbGlja0NmZz8uaGlnaGxpZ2h0Q2xpY2tlZD8uYmFja2dyb3VuZCA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICdib3JkZXInOiBoaWdobGlnaHRlZCA9PT0gcm93LnJvd1NyYz8gdGFibGVDb25maWc/LmNsaWNrQ2ZnPy5oaWdobGlnaHRDbGlja2VkPy5ib3JkZXIgOiB1bmRlZmluZWRcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgPC90cj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvdGFsUm93UHJvdmlkZXIuaXNFbmFibGVkXCI+XHJcbiAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCIgW3N0eWxlXT1cInRvdGFsUm93UHJvdmlkZXIuc3R5bGVcIj48L3RyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdGFibGU+XHJcblxyXG4gICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxyXG4gICAgPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uUHJvdmlkZXIuaXNFbmFibGVkXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvblByb3ZpZGVyLnNpemVzXCJcclxuICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdpbmF0aW9uUHJvdmlkZXIuc2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBzaG93Rmlyc3RMYXN0QnV0dG9ucz5cclxuICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2Zvb3RlckNlbGxUZW1wbGF0ZSBsZXQtY29sdW1uTmFtZT5cclxuICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmPlxyXG4gICAge3sgdG90YWxSb3dQcm92aWRlci50b3RhbHMuZ2V0KGNvbHVtbk5hbWUpIHx8ICcnIH19XHJcbiAgPC90ZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19