@gnwebsoft/ui 4.0.1 → 4.0.3
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/README.md +98 -74
- package/dist/chunk-BXWPG6VW.js +108 -0
- package/dist/chunk-DKD73ADK.cjs +2281 -0
- package/dist/{chunk-YUVXLOSA.cjs → chunk-DS524L7W.cjs} +3 -15
- package/dist/chunk-EOUSOGZ6.js +2281 -0
- package/dist/chunk-EYXPJMEF.cjs +108 -0
- package/dist/chunk-FYU2OIMD.js +15 -0
- package/dist/chunk-GHW77WIM.cjs +1 -1
- package/dist/chunk-GVWCGJ3F.js +140 -0
- package/dist/chunk-LUW7V5GI.cjs +15 -0
- package/dist/chunk-M3NVOZ7L.cjs +2512 -0
- package/dist/chunk-MVPLBJRK.cjs +1 -1
- package/dist/chunk-PUQIPRL2.js +467 -0
- package/dist/chunk-Y3QTSDLJ.cjs +140 -0
- package/dist/chunk-YAYXHYKC.js +2512 -0
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.js +3 -3
- package/dist/hooks/index.cjs +3 -3
- package/dist/hooks/index.js +1 -1
- package/dist/i18n/index.cjs +21 -0
- package/dist/i18n/index.js +21 -0
- package/dist/index.cjs +28 -6
- package/dist/index.js +31 -9
- package/dist/types/index.cjs +1 -1
- package/dist/utils/index.cjs +5 -3
- package/dist/utils/index.js +4 -2
- package/dist/wrappers/index.cjs +8 -4
- package/dist/wrappers/index.js +8 -4
- package/package.json +7 -1
- package/dist/chunk-246MYJX6.js +0 -479
- package/dist/chunk-CE4CSA36.cjs +0 -2262
- package/dist/chunk-DJSMLHFO.js +0 -140
- package/dist/chunk-L3QQX3BK.js +0 -1596
- package/dist/chunk-NC3JINIM.cjs +0 -1596
- package/dist/chunk-R45OPW5A.js +0 -2262
- package/dist/chunk-UEBN47RB.cjs +0 -140
package/dist/chunk-DJSMLHFO.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
// src/hooks/useTransform/index.ts
|
|
2
|
-
function useTransform(options) {
|
|
3
|
-
const value = typeof options.transform?.input === "function" ? options.transform.input(options.value) : options.value;
|
|
4
|
-
const onChange = (eventOrValue, value2) => {
|
|
5
|
-
if (typeof options.transform?.output === "function") {
|
|
6
|
-
options.onChange(options.transform.output(eventOrValue, value2));
|
|
7
|
-
} else {
|
|
8
|
-
options.onChange(eventOrValue);
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
return {
|
|
12
|
-
value,
|
|
13
|
-
onChange
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// src/hooks/useTransform/enhanced.ts
|
|
18
|
-
import { useCallback, useMemo } from "react";
|
|
19
|
-
var transformFactories = {
|
|
20
|
-
number: () => ({
|
|
21
|
-
input: (value) => {
|
|
22
|
-
if (value == null) return "";
|
|
23
|
-
return String(value);
|
|
24
|
-
},
|
|
25
|
-
output: (eventOrValue, _value) => {
|
|
26
|
-
let rawValue;
|
|
27
|
-
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
28
|
-
rawValue = String(eventOrValue.target.value);
|
|
29
|
-
} else {
|
|
30
|
-
rawValue = String(eventOrValue);
|
|
31
|
-
}
|
|
32
|
-
if (rawValue === "") return null;
|
|
33
|
-
const numValue = Number(rawValue);
|
|
34
|
-
return isNaN(numValue) ? null : numValue;
|
|
35
|
-
}
|
|
36
|
-
}),
|
|
37
|
-
text: () => ({
|
|
38
|
-
input: (value) => {
|
|
39
|
-
return value ?? "";
|
|
40
|
-
},
|
|
41
|
-
output: (eventOrValue, _value) => {
|
|
42
|
-
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
43
|
-
return eventOrValue.target.value;
|
|
44
|
-
}
|
|
45
|
-
return eventOrValue;
|
|
46
|
-
}
|
|
47
|
-
}),
|
|
48
|
-
select: () => ({
|
|
49
|
-
input: (value) => {
|
|
50
|
-
return value ?? "";
|
|
51
|
-
},
|
|
52
|
-
output: (eventOrValue, value) => {
|
|
53
|
-
if (value !== void 0) {
|
|
54
|
-
return value;
|
|
55
|
-
}
|
|
56
|
-
if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
|
|
57
|
-
return eventOrValue.target.value;
|
|
58
|
-
}
|
|
59
|
-
return eventOrValue;
|
|
60
|
-
}
|
|
61
|
-
})
|
|
62
|
-
};
|
|
63
|
-
function getBuiltInTransform(fieldType) {
|
|
64
|
-
switch (fieldType) {
|
|
65
|
-
case "number":
|
|
66
|
-
return transformFactories.number();
|
|
67
|
-
case "text":
|
|
68
|
-
return transformFactories.text();
|
|
69
|
-
case "select":
|
|
70
|
-
case "radio":
|
|
71
|
-
return transformFactories.select();
|
|
72
|
-
default:
|
|
73
|
-
return void 0;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
function useEnhancedTransform(options) {
|
|
77
|
-
const {
|
|
78
|
-
value: fieldValue,
|
|
79
|
-
onChange: fieldOnChange,
|
|
80
|
-
transform,
|
|
81
|
-
fieldType,
|
|
82
|
-
defaultValue,
|
|
83
|
-
enableWarnings
|
|
84
|
-
} = options;
|
|
85
|
-
const builtInTransform = useMemo(
|
|
86
|
-
() => fieldType ? getBuiltInTransform(fieldType) : void 0,
|
|
87
|
-
[fieldType]
|
|
88
|
-
);
|
|
89
|
-
if (enableWarnings && process.env.NODE_ENV === "development") {
|
|
90
|
-
if (transform && fieldType) {
|
|
91
|
-
console.warn(
|
|
92
|
-
"useEnhancedTransform: Both custom transform and fieldType provided. Custom transform will take precedence."
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
const transformedValue = useMemo(() => {
|
|
97
|
-
const inputTransform = transform?.input || builtInTransform?.input;
|
|
98
|
-
if (typeof inputTransform === "function") {
|
|
99
|
-
return inputTransform(fieldValue);
|
|
100
|
-
}
|
|
101
|
-
if (fieldValue == null && defaultValue !== void 0) {
|
|
102
|
-
return defaultValue;
|
|
103
|
-
}
|
|
104
|
-
return fieldValue;
|
|
105
|
-
}, [fieldValue, transform?.input, builtInTransform?.input, defaultValue]);
|
|
106
|
-
const enhancedOnChange = useCallback(
|
|
107
|
-
(eventOrValue, value) => {
|
|
108
|
-
const outputTransform = transform?.output || builtInTransform?.output;
|
|
109
|
-
if (typeof outputTransform === "function") {
|
|
110
|
-
try {
|
|
111
|
-
const transformedValue2 = outputTransform(eventOrValue, value);
|
|
112
|
-
fieldOnChange(transformedValue2);
|
|
113
|
-
} catch (error) {
|
|
114
|
-
if (enableWarnings && process.env.NODE_ENV === "development") {
|
|
115
|
-
console.error("useEnhancedTransform: Error in output transformation:", error);
|
|
116
|
-
}
|
|
117
|
-
fieldOnChange(
|
|
118
|
-
value !== void 0 ? value : eventOrValue
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
} else {
|
|
122
|
-
fieldOnChange(
|
|
123
|
-
value !== void 0 ? value : eventOrValue
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
[fieldOnChange, transform?.output, builtInTransform?.output, enableWarnings]
|
|
128
|
-
);
|
|
129
|
-
return {
|
|
130
|
-
value: transformedValue,
|
|
131
|
-
onChange: enhancedOnChange
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
export {
|
|
136
|
-
useTransform,
|
|
137
|
-
transformFactories,
|
|
138
|
-
useEnhancedTransform
|
|
139
|
-
};
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2hvb2tzL3VzZVRyYW5zZm9ybS9pbmRleC50cyIsICIuLi9zcmMvaG9va3MvdXNlVHJhbnNmb3JtL2VuaGFuY2VkLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7XG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIFBhdGhWYWx1ZSxcbiAgVXNlQ29udHJvbGxlclJldHVybixcbn0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiO1xuXG5pbXBvcnQgdHlwZSB7IEV2ZW50T3JWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlcy9ldmVudHNcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgdXNlVHJhbnNmb3JtIGhvb2suXG4gKlxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlcyAtIFRoZSBmb3JtIHZhbHVlcyB0eXBlXG4gKiBAdGVtcGxhdGUgVE5hbWUgLSBUaGUgZmllbGQgbmFtZSB0eXBlXG4gKiBAdGVtcGxhdGUgVFZhbHVlIC0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHR5cGVcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlVHJhbnNmb3JtT3B0aW9uczxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSB1bmtub3duLFxuPiB7XG4gIC8qKiBUaGUgY3VycmVudCBmaWVsZCB2YWx1ZSBmcm9tIHJlYWN0LWhvb2stZm9ybSAqL1xuICB2YWx1ZTogVXNlQ29udHJvbGxlclJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lPltcImZpZWxkXCJdW1widmFsdWVcIl07XG4gIC8qKiBUaGUgb25DaGFuZ2UgaGFuZGxlciBmcm9tIHJlYWN0LWhvb2stZm9ybSAqL1xuICBvbkNoYW5nZTogVXNlQ29udHJvbGxlclJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lPltcImZpZWxkXCJdW1wib25DaGFuZ2VcIl07XG4gIC8qKiBPcHRpb25hbCB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvbnMgKi9cbiAgdHJhbnNmb3JtPzoge1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybSB0aGUgZmllbGQgdmFsdWUgZm9yIGRpc3BsYXkgaW4gdGhlIGlucHV0XG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGN1cnJlbnQgZmllbGQgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdG8gZGlzcGxheVxuICAgICAqL1xuICAgIGlucHV0PzogKHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IFRWYWx1ZTtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGlucHV0IGV2ZW50IGJhY2sgdG8gdGhlIGZpZWxkIHZhbHVlXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGlucHV0IGV2ZW50IHBhcmFtZXRlcnNcbiAgICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdG8gc3RvcmUgaW4gdGhlIGZvcm1cbiAgICAgKi9cbiAgICBvdXRwdXQ/OiAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBmb3IgdGhlIHVzZVRyYW5zZm9ybSBob29rLlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZVxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRyYW5zZm9ybVJldHVybjxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSB1bmtub3duLFxuPiB7XG4gIC8qKiBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgaW5wdXQgKi9cbiAgdmFsdWU6IFRWYWx1ZTtcbiAgLyoqIFRoZSBlbmhhbmNlZCBvbkNoYW5nZSBoYW5kbGVyIHdpdGggdHJhbnNmb3JtYXRpb24gYXBwbGllZCAqL1xuICBvbkNoYW5nZTogVXNlQ29udHJvbGxlclJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lPltcImZpZWxkXCJdW1wib25DaGFuZ2VcIl07XG59XG5cbi8qKlxuICogQSBob29rIGZvciB0cmFuc2Zvcm1pbmcgZm9ybSBmaWVsZCB2YWx1ZXMgYmV0d2VlbiBkaXNwbGF5IGFuZCBzdG9yYWdlIGZvcm1hdHMuXG4gKlxuICogVGhpcyBob29rIHByb3ZpZGVzIGEgd2F5IHRvIHRyYW5zZm9ybSB2YWx1ZXMgYXMgdGhleSBmbG93IGJldHdlZW4gdGhlIGZvcm0gZmllbGRcbiAqIGFuZCB0aGUgZGlzcGxheSBjb21wb25lbnQuIEl0J3MgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZm9ybWF0dGluZyBkYXRhIGZvciBkaXNwbGF5XG4gKiAobGlrZSBkYXRlcywgbnVtYmVycywgb3IgY29tcGxleCBvYmplY3RzKSB3aGlsZSBtYWludGFpbmluZyBhIGRpZmZlcmVudCBpbnRlcm5hbFxuICogcmVwcmVzZW50YXRpb24gaW4gdGhlIGZvcm0gc3RhdGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIFRyYW5zZm9ybSBhIGRhdGUgZm9yIGRpc3BsYXk6XG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgdmFsdWUsIG9uQ2hhbmdlIH0gPSB1c2VUcmFuc2Zvcm0oe1xuICogICB2YWx1ZTogZmllbGQudmFsdWUsXG4gKiAgIG9uQ2hhbmdlOiBmaWVsZC5vbkNoYW5nZSxcbiAqICAgdHJhbnNmb3JtOiB7XG4gKiAgICAgaW5wdXQ6IChkYXRlKSA9PiBkYXRlID8gZm9ybWF0KGRhdGUsICd5eXl5LU1NLWRkJykgOiAnJyxcbiAqICAgICBvdXRwdXQ6IChldmVudCkgPT4gbmV3IERhdGUoZXZlbnQudGFyZ2V0LnZhbHVlKVxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBUcmFuc2Zvcm0gbnVtYmVycyB3aXRoIGZvcm1hdHRpbmc6XG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgdmFsdWUsIG9uQ2hhbmdlIH0gPSB1c2VUcmFuc2Zvcm0oe1xuICogICB2YWx1ZTogZmllbGQudmFsdWUsXG4gKiAgIG9uQ2hhbmdlOiBmaWVsZC5vbkNoYW5nZSxcbiAqICAgdHJhbnNmb3JtOiB7XG4gKiAgICAgaW5wdXQ6IChudW0pID0+IG51bSA/IG51bS50b0xvY2FsZVN0cmluZygpIDogJycsXG4gKiAgICAgb3V0cHV0OiAoZXZlbnQpID0+IHBhcnNlRmxvYXQoZXZlbnQudGFyZ2V0LnZhbHVlLnJlcGxhY2UoLywvZywgJycpKVxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZVxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIHZhbHVlLCBvbkNoYW5nZSwgYW5kIHRyYW5zZm9ybSBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHRyYW5zZm9ybWVkIHZhbHVlIGFuZCBlbmhhbmNlZCBvbkNoYW5nZSBoYW5kbGVyXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVHJhbnNmb3JtPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4gIFRWYWx1ZSA9IHVua25vd24sXG4+KFxuICBvcHRpb25zOiBVc2VUcmFuc2Zvcm1PcHRpb25zPFRGaWVsZFZhbHVlcywgVE5hbWUsIFRWYWx1ZT5cbik6IFVzZVRyYW5zZm9ybVJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lLCBUVmFsdWU+IHtcbiAgY29uc3QgdmFsdWUgPVxuICAgIHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybT8uaW5wdXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBvcHRpb25zLnRyYW5zZm9ybS5pbnB1dChvcHRpb25zLnZhbHVlKVxuICAgICAgOiBvcHRpb25zLnZhbHVlO1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKFxuICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgKTogdm9pZCA9PiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybT8ub3V0cHV0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIG9wdGlvbnMub25DaGFuZ2Uob3B0aW9ucy50cmFuc2Zvcm0ub3V0cHV0KGV2ZW50T3JWYWx1ZSwgdmFsdWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUGFzcyB0aHJvdWdoIHRoZSBldmVudCBvciB2YWx1ZSBkaXJlY3RseVxuICAgICAgb3B0aW9ucy5vbkNoYW5nZShldmVudE9yVmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZSxcbiAgICBvbkNoYW5nZSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlVHJhbnNmb3JtO1xuIiwgImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IENoYW5nZUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7XG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIFBhdGhWYWx1ZSxcbiAgVXNlQ29udHJvbGxlclJldHVybixcbn0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiO1xuXG5pbXBvcnQgdHlwZSB7IEV2ZW50T3JWYWx1ZSwgSW5wdXRFbGVtZW50IH0gZnJvbSBcIi4uLy4uL3R5cGVzL2V2ZW50c1wiO1xuXG4vKipcbiAqIEZpZWxkIHR5cGVzIGZvciBidWlsdC1pbiB0cmFuc2Zvcm1hdGlvbiBwYXR0ZXJuc1xuICovXG5leHBvcnQgdHlwZSBGaWVsZFR5cGUgPSAndGV4dCcgfCAnbnVtYmVyJyB8ICdkYXRlJyB8ICd0aW1lJyB8ICdzZWxlY3QnIHwgJ3JhZGlvJztcblxuLyoqXG4gKiBFbmhhbmNlZCBvcHRpb25zIGZvciB0aGUgdXNlVHJhbnNmb3JtIGhvb2sgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zXG4gKiBhbmQgYnVpbHQtaW4gZmllbGQgdHlwZSBoYW5kbGluZy5cbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmhhbmNlZFVzZVRyYW5zZm9ybU9wdGlvbnM8XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+LFxuPiB7XG4gIC8qKiBUaGUgY3VycmVudCBmaWVsZCB2YWx1ZSBmcm9tIHJlYWN0LWhvb2stZm9ybSAqL1xuICB2YWx1ZTogVXNlQ29udHJvbGxlclJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lPltcImZpZWxkXCJdW1widmFsdWVcIl07XG4gIC8qKiBUaGUgb25DaGFuZ2UgaGFuZGxlciBmcm9tIHJlYWN0LWhvb2stZm9ybSAqL1xuICBvbkNoYW5nZTogVXNlQ29udHJvbGxlclJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lPltcImZpZWxkXCJdW1wib25DaGFuZ2VcIl07XG4gIC8qKiBPcHRpb25hbCB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvbnMgKi9cbiAgdHJhbnNmb3JtPzoge1xuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybSB0aGUgZmllbGQgdmFsdWUgZm9yIGRpc3BsYXkgaW4gdGhlIGlucHV0XG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGN1cnJlbnQgZmllbGQgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdG8gZGlzcGxheVxuICAgICAqL1xuICAgIGlucHV0PzogKHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IFRWYWx1ZTtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGlucHV0IGV2ZW50IGJhY2sgdG8gdGhlIGZpZWxkIHZhbHVlXG4gICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGlucHV0IGV2ZW50IG9yIHZhbHVlXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIHN0b3JlIGluIHRoZSBmb3JtXG4gICAgICovXG4gICAgb3V0cHV0PzogKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gIH07XG4gIC8qKiBCdWlsdC1pbiBmaWVsZCB0eXBlIGZvciBhdXRvbWF0aWMgdHJhbnNmb3JtYXRpb24gKi9cbiAgZmllbGRUeXBlPzogRmllbGRUeXBlO1xuICAvKiogRGVmYXVsdCB2YWx1ZSB0byB1c2Ugd2hlbiBmaWVsZCB2YWx1ZSBpcyBudWxsL3VuZGVmaW5lZCAqL1xuICBkZWZhdWx0VmFsdWU/OiBUVmFsdWU7XG4gIC8qKiBFbmFibGUgZGV2ZWxvcG1lbnQgd2FybmluZ3MgZm9yIGRlYnVnZ2luZyAqL1xuICBlbmFibGVXYXJuaW5ncz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRW5oYW5jZWQgcmV0dXJuIHR5cGUgZm9yIHRoZSB1c2VUcmFuc2Zvcm0gaG9vayB3aXRoIHN0YWJsZSByZWZlcmVuY2VzXG4gKlxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlcyAtIFRoZSBmb3JtIHZhbHVlcyB0eXBlXG4gKiBAdGVtcGxhdGUgVE5hbWUgLSBUaGUgZmllbGQgbmFtZSB0eXBlICBcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmhhbmNlZFVzZVRyYW5zZm9ybVJldHVybjxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4sXG4+IHtcbiAgLyoqIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0byBkaXNwbGF5IGluIHRoZSBpbnB1dCAobWVtb2l6ZWQpICovXG4gIHZhbHVlOiBUVmFsdWU7XG4gIC8qKiBUaGUgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlciB3aXRoIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQgKG1lbW9pemVkKSAqL1xuICBvbkNoYW5nZTogVXNlQ29udHJvbGxlclJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lPltcImZpZWxkXCJdW1wib25DaGFuZ2VcIl07XG59XG5cbi8qKlxuICogVHJhbnNmb3JtIGZhY3RvcmllcyBmb3IgY29tbW9uIGZpZWxkIHR5cGVzXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1GYWN0b3JpZXMgPSB7XG4gIG51bWJlcjogPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzLCBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+PigpID0+ICh7XG4gICAgaW5wdXQ6ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIFwiXCIgYXMgc3RyaW5nO1xuXG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9LFxuICAgIG91dHB1dDogKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIF92YWx1ZT86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICkgPT4ge1xuICAgICAgbGV0IHJhd1ZhbHVlOiBzdHJpbmc7XG4gICAgICBcbiAgICAgIC8vIEV4dHJhY3Qgc3RyaW5nIHZhbHVlIGZyb20gZXZlbnQgb3IgZGlyZWN0IHZhbHVlXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAndGFyZ2V0JyBpbiBldmVudE9yVmFsdWUgJiZcbiAgICAgICAgdHlwZW9mIGV2ZW50T3JWYWx1ZS50YXJnZXQgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZS50YXJnZXQgIT09IG51bGwgJiZcbiAgICAgICAgJ3ZhbHVlJyBpbiBldmVudE9yVmFsdWUudGFyZ2V0XG4gICAgICApIHtcbiAgICAgICAgcmF3VmFsdWUgPSBTdHJpbmcoKGV2ZW50T3JWYWx1ZS50YXJnZXQgYXMgdW5rbm93biBhcyB7IHZhbHVlOiB1bmtub3duIH0pLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhd1ZhbHVlID0gU3RyaW5nKGV2ZW50T3JWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyYXdWYWx1ZSA9PT0gXCJcIikgcmV0dXJuIG51bGwgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICAgICAgY29uc3QgbnVtVmFsdWUgPSBOdW1iZXIocmF3VmFsdWUpO1xuXG4gICAgICByZXR1cm4gKGlzTmFOKG51bVZhbHVlKSA/IG51bGwgOiBudW1WYWx1ZSkgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICAgIH0sXG4gIH0pLFxuXG4gIHRleHQ6IDxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcywgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPj4oKSA9PiAoe1xuICAgIGlucHV0OiAodmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPikgPT4ge1xuICAgICAgcmV0dXJuICh2YWx1ZSA/PyBcIlwiKSBhcyBzdHJpbmc7XG4gICAgfSxcbiAgICBvdXRwdXQ6IChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICBfdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IHtcbiAgICAgIC8vIEV4dHJhY3Qgc3RyaW5nIHZhbHVlIGZyb20gZXZlbnQgb3IgZGlyZWN0IHZhbHVlXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAndGFyZ2V0JyBpbiBldmVudE9yVmFsdWUgJiZcbiAgICAgICAgdHlwZW9mIGV2ZW50T3JWYWx1ZS50YXJnZXQgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZS50YXJnZXQgIT09IG51bGwgJiZcbiAgICAgICAgJ3ZhbHVlJyBpbiBldmVudE9yVmFsdWUudGFyZ2V0XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIChldmVudE9yVmFsdWUudGFyZ2V0IGFzIHVua25vd24gYXMgeyB2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+IH0pLnZhbHVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICByZXR1cm4gZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICB9LFxuICB9KSxcblxuICBzZWxlY3Q6IDxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcywgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPj4oKSA9PiAoe1xuICAgIGlucHV0OiAodmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPikgPT4ge1xuICAgICAgcmV0dXJuIHZhbHVlID8/IChcIlwiIGFzIHN0cmluZyk7XG4gICAgfSxcbiAgICBvdXRwdXQ6IChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICB2YWx1ZT86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICkgPT4ge1xuICAgICAgLy8gTVVJIHBhdHRlcm46IChldmVudCwgdmFsdWUpIHdoZXJlIHZhbHVlIGlzIHRoZSBhY3R1YWwgc2VsZWN0ZWQgdmFsdWVcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIFN0YW5kYXJkIGV2ZW50IHBhdHRlcm46IGV4dHJhY3QgZnJvbSBldmVudC50YXJnZXQudmFsdWVcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIGV2ZW50T3JWYWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgZXZlbnRPclZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICd0YXJnZXQnIGluIGV2ZW50T3JWYWx1ZSAmJlxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlLnRhcmdldCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgZXZlbnRPclZhbHVlLnRhcmdldCAhPT0gbnVsbCAmJlxuICAgICAgICAndmFsdWUnIGluIGV2ZW50T3JWYWx1ZS50YXJnZXRcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gKGV2ZW50T3JWYWx1ZS50YXJnZXQgYXMgdW5rbm93biBhcyB7IHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4gfSkudmFsdWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIERpcmVjdCB2YWx1ZVxuICAgICAgcmV0dXJuIGV2ZW50T3JWYWx1ZSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gICAgfSxcbiAgfSksXG59IGFzIGNvbnN0OztcblxuLyoqXG4gKiBHZXQgYnVpbHQtaW4gdHJhbnNmb3JtYXRpb24gZm9yIGEgZmllbGQgdHlwZVxuICovXG5mdW5jdGlvbiBnZXRCdWlsdEluVHJhbnNmb3JtPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbj4oZmllbGRUeXBlPzogRmllbGRUeXBlKSB7XG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1GYWN0b3JpZXMubnVtYmVyPFRGaWVsZFZhbHVlcywgVE5hbWU+KCk7XG4gICAgY2FzZSAndGV4dCc6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtRmFjdG9yaWVzLnRleHQ8VEZpZWxkVmFsdWVzLCBUTmFtZT4oKTtcbiAgICBjYXNlICdzZWxlY3QnOlxuICAgIGNhc2UgJ3JhZGlvJzpcbiAgICAgIHJldHVybiB0cmFuc2Zvcm1GYWN0b3JpZXMuc2VsZWN0PFRGaWVsZFZhbHVlcywgVE5hbWU+KCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBlbmhhbmNlZCBob29rIGZvciB0cmFuc2Zvcm1pbmcgZm9ybSBmaWVsZCB2YWx1ZXMgd2l0aCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zXG4gKiBhbmQgYnVpbHQtaW4gZmllbGQgdHlwZSBoYW5kbGluZy5cbiAqXG4gKiBUaGlzIGVuaGFuY2VkIHZlcnNpb24gcHJvdmlkZXM6XG4gKiAtIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgd2l0aCB1c2VNZW1vIGFuZCB1c2VDYWxsYmFja1xuICogLSBCdWlsdC1pbiB0cmFuc2Zvcm1hdGlvbnMgZm9yIGNvbW1vbiBmaWVsZCB0eXBlc1xuICogLSBCZXR0ZXIgVHlwZVNjcmlwdCBpbmZlcmVuY2VcbiAqIC0gRGV2ZWxvcG1lbnQgd2FybmluZ3NcbiAqIC0gU3RhYmxlIHJlZmVyZW5jZXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gKlxuICogQGV4YW1wbGVcbiAqIEJhc2ljIHVzYWdlIHdpdGggYnVpbHQtaW4gbnVtYmVyIGhhbmRsaW5nOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlRW5oYW5jZWRUcmFuc2Zvcm0oe1xuICogICB2YWx1ZTogZmllbGQudmFsdWUsXG4gKiAgIG9uQ2hhbmdlOiBmaWVsZC5vbkNoYW5nZSxcbiAqICAgZmllbGRUeXBlOiAnbnVtYmVyJ1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogQ3VzdG9tIHRyYW5zZm9ybWF0aW9ucyAoc2FtZSBhcyBvcmlnaW5hbCk6XG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgdmFsdWUsIG9uQ2hhbmdlIH0gPSB1c2VFbmhhbmNlZFRyYW5zZm9ybSh7XG4gKiAgIHZhbHVlOiBmaWVsZC52YWx1ZSxcbiAqICAgb25DaGFuZ2U6IGZpZWxkLm9uQ2hhbmdlLFxuICogICB0cmFuc2Zvcm06IHtcbiAqICAgICBpbnB1dDogKHZhbHVlKSA9PiB2YWx1ZT8udG9TdHJpbmcoKSB8fCAnJyxcbiAqICAgICBvdXRwdXQ6IChldmVudCkgPT4gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKSB8fCBudWxsXG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggZGVmYXVsdCB2YWx1ZSBhbmQgd2FybmluZ3M6XG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgdmFsdWUsIG9uQ2hhbmdlIH0gPSB1c2VFbmhhbmNlZFRyYW5zZm9ybSh7XG4gKiAgIHZhbHVlOiBmaWVsZC52YWx1ZSxcbiAqICAgb25DaGFuZ2U6IGZpZWxkLm9uQ2hhbmdlLFxuICogICBmaWVsZFR5cGU6ICd0ZXh0JyxcbiAqICAgZGVmYXVsdFZhbHVlOiAnJyxcbiAqICAgZW5hYmxlV2FybmluZ3M6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZVxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIHZhbHVlLCBvbkNoYW5nZSwgYW5kIHRyYW5zZm9ybSBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHRyYW5zZm9ybWVkIHZhbHVlIGFuZCBlbmhhbmNlZCBvbkNoYW5nZSBoYW5kbGVyIChib3RoIG1lbW9pemVkKVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUVuaGFuY2VkVHJhbnNmb3JtPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4gIFRWYWx1ZSA9IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPixcbj4oXG4gIG9wdGlvbnM6IEVuaGFuY2VkVXNlVHJhbnNmb3JtT3B0aW9uczxURmllbGRWYWx1ZXMsIFROYW1lLCBUVmFsdWU+XG4pOiBFbmhhbmNlZFVzZVRyYW5zZm9ybVJldHVybjxURmllbGRWYWx1ZXMsIFROYW1lLCBUVmFsdWU+IHtcbiAgY29uc3QgeyBcbiAgICB2YWx1ZTogZmllbGRWYWx1ZSwgXG4gICAgb25DaGFuZ2U6IGZpZWxkT25DaGFuZ2UsIFxuICAgIHRyYW5zZm9ybSwgXG4gICAgZmllbGRUeXBlLCBcbiAgICBkZWZhdWx0VmFsdWUsXG4gICAgZW5hYmxlV2FybmluZ3MgXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCBidWlsdC1pbiB0cmFuc2Zvcm0gaWYgZmllbGRUeXBlIGlzIHNwZWNpZmllZFxuICBjb25zdCBidWlsdEluVHJhbnNmb3JtID0gdXNlTWVtbygoKSA9PiBcbiAgICBmaWVsZFR5cGUgPyBnZXRCdWlsdEluVHJhbnNmb3JtPFRGaWVsZFZhbHVlcywgVE5hbWU+KGZpZWxkVHlwZSkgOiB1bmRlZmluZWQsIFxuICAgIFtmaWVsZFR5cGVdXG4gICk7XG5cbiAgLy8gRGV2ZWxvcG1lbnQgd2FybmluZ3NcbiAgaWYgKGVuYWJsZVdhcm5pbmdzICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgaWYgKHRyYW5zZm9ybSAmJiBmaWVsZFR5cGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ3VzZUVuaGFuY2VkVHJhbnNmb3JtOiBCb3RoIGN1c3RvbSB0cmFuc2Zvcm0gYW5kIGZpZWxkVHlwZSBwcm92aWRlZC4gQ3VzdG9tIHRyYW5zZm9ybSB3aWxsIHRha2UgcHJlY2VkZW5jZS4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1lbW9pemUgdGhlIHRyYW5zZm9ybWVkIGRpc3BsYXkgdmFsdWVcbiAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IHVzZU1lbW8oKCk6IFRWYWx1ZSA9PiB7XG4gICAgY29uc3QgaW5wdXRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0/LmlucHV0IHx8IGJ1aWx0SW5UcmFuc2Zvcm0/LmlucHV0O1xuICAgIFxuICAgIGlmICh0eXBlb2YgaW5wdXRUcmFuc2Zvcm0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIGlucHV0VHJhbnNmb3JtKGZpZWxkVmFsdWUpIGFzIFRWYWx1ZTtcbiAgICB9XG4gICAgXG4gICAgLy8gRmFsbGJhY2sgd2l0aCBkZWZhdWx0IHZhbHVlIHN1cHBvcnRcbiAgICBpZiAoZmllbGRWYWx1ZSA9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmllbGRWYWx1ZSBhcyBUVmFsdWU7XG4gIH0sIFtmaWVsZFZhbHVlLCB0cmFuc2Zvcm0/LmlucHV0LCBidWlsdEluVHJhbnNmb3JtPy5pbnB1dCwgZGVmYXVsdFZhbHVlXSk7XG5cbiAgLy8gTWVtb2l6ZSB0aGUgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlclxuICBjb25zdCBlbmhhbmNlZE9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0/Lm91dHB1dCB8fCBidWlsdEluVHJhbnNmb3JtPy5vdXRwdXQ7XG4gICAgICBcbiAgICAgIGlmICh0eXBlb2Ygb3V0cHV0VHJhbnNmb3JtID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBIYW5kbGUgYm90aCBzaWduYXR1cmVzOiBvbGQgKGV2ZW50IG9ubHkpIGFuZCBuZXcgKGV2ZW50LCB2YWx1ZSlcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gKG91dHB1dFRyYW5zZm9ybSBhcyAoZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sIHY/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPikoZXZlbnRPclZhbHVlLCB2YWx1ZSk7XG5cbiAgICAgICAgICBmaWVsZE9uQ2hhbmdlKHRyYW5zZm9ybWVkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGlmIChlbmFibGVXYXJuaW5ncyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcigndXNlRW5oYW5jZWRUcmFuc2Zvcm06IEVycm9yIGluIG91dHB1dCB0cmFuc2Zvcm1hdGlvbjonLCBlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmFsbGJhY2sgdG8gZGlyZWN0IHZhbHVlIG9yIGZpcnN0IGFyZ3VtZW50XG4gICAgICAgICAgZmllbGRPbkNoYW5nZShcbiAgICAgICAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgXG4gICAgICAgICAgICAgID8gdmFsdWUgXG4gICAgICAgICAgICAgIDogZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIHRyYW5zZm9ybSwgcGFzcyB0aHJvdWdoIHRoZSB2YWx1ZSBvciBldmVudFxuICAgICAgICBmaWVsZE9uQ2hhbmdlKFxuICAgICAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgXG4gICAgICAgICAgICA/IHZhbHVlIFxuICAgICAgICAgICAgOiBldmVudE9yVmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbZmllbGRPbkNoYW5nZSwgdHJhbnNmb3JtPy5vdXRwdXQsIGJ1aWx0SW5UcmFuc2Zvcm0/Lm91dHB1dCwgZW5hYmxlV2FybmluZ3NdXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogdHJhbnNmb3JtZWRWYWx1ZSxcbiAgICBvbkNoYW5nZTogZW5oYW5jZWRPbkNoYW5nZSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlRW5oYW5jZWRUcmFuc2Zvcm07Il0sCiAgIm1hcHBpbmdzIjogIjtBQThHTyxTQUFTLGFBS2QsU0FDaUQ7QUFDakQsUUFBTSxRQUNKLE9BQU8sUUFBUSxXQUFXLFVBQVUsYUFDaEMsUUFBUSxVQUFVLE1BQU0sUUFBUSxLQUFLLElBQ3JDLFFBQVE7QUFFZCxRQUFNLFdBQVcsQ0FDZixjQUNBQSxXQUNTO0FBQ1QsUUFBSSxPQUFPLFFBQVEsV0FBVyxXQUFXLFlBQVk7QUFDbkQsY0FBUSxTQUFTLFFBQVEsVUFBVSxPQUFPLGNBQWNBLE1BQUssQ0FBQztBQUFBLElBQ2hFLE9BQU87QUFFTCxjQUFRLFNB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
|