@fgv/ts-json 1.0.1 → 1.8.1
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/LICENSE +0 -0
- package/README.md +0 -0
- package/common.d.ts +3 -3
- package/common.js +10 -10
- package/contextHelpers.d.ts +0 -0
- package/contextHelpers.js +10 -10
- package/converters.d.ts +0 -0
- package/converters.js +0 -0
- package/file.d.ts +1 -1
- package/file.js +16 -12
- package/index.d.ts +0 -0
- package/index.js +6 -2
- package/jsonContext.d.ts +4 -4
- package/jsonContext.js +2 -2
- package/jsonConverter.d.ts +5 -5
- package/jsonConverter.js +16 -16
- package/jsonEditor/index.d.ts +0 -0
- package/jsonEditor/index.js +6 -2
- package/jsonEditor/jsonEditor.d.ts +5 -5
- package/jsonEditor/jsonEditor.js +43 -43
- package/jsonEditor/jsonEditorRule.d.ts +2 -2
- package/jsonEditor/jsonEditorRule.js +4 -4
- package/jsonEditor/jsonEditorState.d.ts +3 -3
- package/jsonEditor/jsonEditorState.js +9 -9
- package/jsonEditor/rules/conditional.d.ts +0 -0
- package/jsonEditor/rules/conditional.js +13 -13
- package/jsonEditor/rules/index.d.ts +0 -0
- package/jsonEditor/rules/index.js +6 -2
- package/jsonEditor/rules/multivalue.d.ts +0 -0
- package/jsonEditor/rules/multivalue.js +9 -9
- package/jsonEditor/rules/references.d.ts +0 -0
- package/jsonEditor/rules/references.js +9 -9
- package/jsonEditor/rules/templates.d.ts +0 -0
- package/jsonEditor/rules/templates.js +8 -8
- package/jsonReferenceMap.d.ts +1 -1
- package/jsonReferenceMap.js +25 -25
- package/package.json +14 -14
|
@@ -59,7 +59,7 @@ class ReferenceJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
59
59
|
* @param options Optional configuration options for this rule
|
|
60
60
|
*/
|
|
61
61
|
static create(options) {
|
|
62
|
-
return ts_utils_1.captureResult(() => new ReferenceJsonEditorRule(options));
|
|
62
|
+
return (0, ts_utils_1.captureResult)(() => new ReferenceJsonEditorRule(options));
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Evaluates a property for reference expansion.
|
|
@@ -93,9 +93,9 @@ class ReferenceJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
93
93
|
// istanbul ignore else
|
|
94
94
|
if (objResult.isSuccess()) {
|
|
95
95
|
if ((typeof value !== 'string') || (value === 'default')) {
|
|
96
|
-
return ts_utils_1.succeedWithDetail(objResult.value, 'edited');
|
|
96
|
+
return (0, ts_utils_1.succeedWithDetail)(objResult.value, 'edited');
|
|
97
97
|
}
|
|
98
|
-
const pickResult = common_1.pickJsonObject(objResult.value, value);
|
|
98
|
+
const pickResult = (0, common_1.pickJsonObject)(objResult.value, value);
|
|
99
99
|
if (pickResult.isFailure()) {
|
|
100
100
|
const message = `${key}: ${pickResult.message}`;
|
|
101
101
|
return state.failValidation('invalidPropertyName', message, validation);
|
|
@@ -112,7 +112,7 @@ class ReferenceJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
112
112
|
return state.failValidation('invalidPropertyName', message, validation);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
-
return ts_utils_1.failWithDetail('inapplicable', 'inapplicable');
|
|
115
|
+
return (0, ts_utils_1.failWithDetail)('inapplicable', 'inapplicable');
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
118
118
|
* Evaluates a property, array or literal value for reference replacement.
|
|
@@ -128,13 +128,13 @@ class ReferenceJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
128
128
|
const context = state.getContext((_b = this._options) === null || _b === void 0 ? void 0 : _b.context);
|
|
129
129
|
const result = refs.getJsonValue(value, context);
|
|
130
130
|
if (result.isSuccess()) {
|
|
131
|
-
return ts_utils_1.succeedWithDetail(result.value, 'edited');
|
|
131
|
+
return (0, ts_utils_1.succeedWithDetail)(result.value, 'edited');
|
|
132
132
|
}
|
|
133
133
|
else if (result.detail === 'error') {
|
|
134
134
|
return state.failValidation('invalidPropertyValue', result.message, (_c = this._options) === null || _c === void 0 ? void 0 : _c.validation);
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
return ts_utils_1.failWithDetail('inapplicable', 'inapplicable');
|
|
137
|
+
return (0, ts_utils_1.failWithDetail)('inapplicable', 'inapplicable');
|
|
138
138
|
}
|
|
139
139
|
/**
|
|
140
140
|
* Gets the template variables to use given the value of some property whose name matched a
|
|
@@ -145,14 +145,14 @@ class ReferenceJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
145
145
|
_extendContext(state, supplied) {
|
|
146
146
|
var _a;
|
|
147
147
|
const add = {};
|
|
148
|
-
if (common_1.isJsonObject(supplied)) {
|
|
148
|
+
if ((0, common_1.isJsonObject)(supplied)) {
|
|
149
149
|
add.vars = Object.entries(supplied);
|
|
150
150
|
}
|
|
151
151
|
else if (typeof supplied !== 'string') {
|
|
152
|
-
return ts_utils_1.fail(`Invalid template path or context: "${JSON.stringify(supplied)}"`);
|
|
152
|
+
return (0, ts_utils_1.fail)(`Invalid template path or context: "${JSON.stringify(supplied)}"`);
|
|
153
153
|
}
|
|
154
154
|
return state.extendContext((_a = this._options) === null || _a === void 0 ? void 0 : _a.context, add);
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
exports.ReferenceJsonEditorRule = ReferenceJsonEditorRule;
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uRWRpdG9yL3J1bGVzL3JlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsNENBQStHO0FBQy9HLHNEQUE2RztBQUU3Ryx5Q0FBbUY7QUFHbkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUEyQjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQTJCO1FBQzVDLE9BQU8sd0JBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksWUFBWSxDQUFDLEdBQVcsRUFBRSxLQUFnQixFQUFFLEtBQXNCOztRQUNyRSx1QkFBdUI7UUFDdkIsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxVQUFVLENBQUM7UUFDN0MsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEIsNkRBQTZEO1lBQzdELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0QsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ3pCLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQzdCO2lCQUNJO2dCQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxLQUFLLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQzthQUMzRTtZQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hELElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9ELGtEQUFrRDtnQkFDbEQsdUJBQXVCO2dCQUN2QixJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxFQUFFO3dCQUN0RCxPQUFPLDRCQUFpQixDQUFvQyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUMxRjtvQkFDRCxNQUFNLFVBQVUsR0FBRyx1QkFBYyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzFELElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUN4QixNQUFNLE9BQU8sR0FBRyxHQUFHLEdBQUcsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ2hELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7cUJBQzNFO29CQUNELE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDMUM7cUJBQ0ksSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtvQkFDckMsTUFBTSxPQUFPLEdBQUcsR0FBRyxHQUFHLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMvQyxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUMzRTthQUNKO2lCQUNJO2dCQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxLQUFLLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkQsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQzthQUMzRTtTQUNKO1FBQ0QsT0FBTyx5QkFBYyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxLQUFnQixFQUFFLEtBQXNCOztRQUNyRCx1QkFBdUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRW5ELElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQUU7WUFDckMsdUJBQXVCO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLENBQUMsQ0FBQztZQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDcEIsT0FBTyw0QkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3BEO2lCQUNJLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7Z0JBQ2hDLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsVUFBVSxDQUFDLENBQUM7YUFDbEc7U0FDSjtRQUNELE9BQU8seUJBQWMsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sY0FBYyxDQUFDLEtBQXNCLEVBQUUsUUFBbUI7O1FBQ2hFLE1BQU0sR0FBRyxHQUE0QixFQUFFLENBQUM7UUFDeEMsSUFBSSxxQkFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QzthQUNJLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQ25DLE9BQU8sZUFBSSxDQUFDLHNDQUFzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsRjtRQUNELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RCxDQUFDO0NBQ0o7QUFqSEQsMERBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERldGFpbGVkUmVzdWx0LCBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIGZhaWwsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkV2l0aERldGFpbCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgSnNvbkVkaXRGYWlsdXJlUmVhc29uLCBKc29uRWRpdG9yUnVsZUJhc2UsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi4vanNvbkVkaXRvclJ1bGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25FZGl0b3JTdGF0ZSB9IGZyb20gJy4uL2pzb25FZGl0b3JTdGF0ZSc7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCwgcGlja0pzb25PYmplY3QgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkNvbnRleHQgfSBmcm9tICcuLi8uLi9qc29uQ29udGV4dCc7XG5cbi8qKlxuICogVGhlIFJlZmVyZW5jZSBKU09OIGVkaXRvciBydWxlIHJlcGxhY2VzIHByb3BlcnR5IGtleXMgb3IgdmFsdWVzIHRoYXQgbWF0Y2hcbiAqIHNvbWUga25vd24gb2JqZWN0IHdpdGggYSBjb3B5IG9mIHRoYXQgcmVmZXJlbmNlZCBvYmplY3QsIGZvcm1hdHRlZCBhY2NvcmRpbmdcbiAqIHRvIHRoZSBjdXJyZW50IGNvbnRleHQuXG4gKlxuICogQSBwcm9wZXJ0eSBrZXkgaXMgbWF0Y2hlZCBpZiBpdCBtYXRjaGVzIGFueSBrbm93biByZWZlcmVuY2VhYmxlIHZhbHVlLlxuICogLSBJZiB0aGUgdmFsdWUgb2YgdGhlIG1hdGNoZWQga2V5IGlzICdkZWZhdWx0JywgdGhlbiB0aGUgZW50aXJlIG9iamVjdCBpcyBmb3JtYXR0ZWRcbiAqICAgd2l0aCB0aGUgY3VycmVudCBjb250ZXh0LCBmbGF0dGVuZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBjdXJyZW50IG9iamVjdC5cbiAqIC0gSWYgdGhlIHZhbHVlIG9mIHRoZSBtYXRjaGVkIGtleSBpcyBzb21lIG90aGVyIHN0cmluZywgdGhlbiB0aGUgZW50aXJlXG4gKiAgIG9iamVjdCBpcyBmb3JtYXR0ZWQgd2l0aCB0aGUgY3VycmVudCBjb250ZXh0LCBhbmQgdGhlIGNoaWxkIG9mIHRoZSByZXN1bHRpbmdcbiAqICAgb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBpcyBmbGF0dGVuZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBjdXJyZW50IG9iamVjdC5cbiAqIC0gSWYgdGhlIHZhbHVlIG9mIHRoZSBtYXRjaGVkIGtleSBpcyBhbiBvYmplY3QsIHRoZW4gdGhlIGVudGlyZSBvYmplY3QgaXNcbiAqICAgZm9ybWF0dGVkIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dCBleHRlbmRlZCB0byBpbmNsdWRlIGFueSBwcm9wZXJ0aWVzIG9mXG4gKiAgIHRoYXQgb2JqZWN0LCBmbGF0dGVuZWQsIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuXG4gKiAtIEl0IGlzIGFuIGVycm9yIGlmIHRoZSByZWZlcmVuY2VkIHZhbHVlIGlzIG5vdCBhbiBvYmplY3QuXG4gKlxuICogQW55IHByb3BlcnR5LCBhcnJheSBvciBsaXRlcmFsIHZhbHVlIGlzIG1hdGNoZWQgaWYgaXQgbWF0Y2hlcyBhbnkga25vd25cbiAqIHJlZmVyZW5jZWFibGUgdmFsdWUuIFRoZSByZWZlcmVuY2VkIHZhbHVlIGlzIHJlcGxhY2VkIGJ5IHRoZSByZWZlcmVuY2VkXG4gKiB2YWx1ZSwgZm9ybWF0dGVkIHVzaW5nIHRoZSBjdXJyZW50IGVkaXRvciBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUgZXh0ZW5kcyBKc29uRWRpdG9yUnVsZUJhc2Uge1xuICAgIHByb3RlY3RlZCBfb3B0aW9ucz86IEpzb25FZGl0b3JPcHRpb25zO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHJ1bGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpOiBSZXN1bHQ8UmVmZXJlbmNlSnNvbkVkaXRvclJ1bGU+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlKG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSBmb3IgcmVmZXJlbmNlIGV4cGFuc2lvbi5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICogQHJldHVybnMgSWYgdGhlIHJlZmVyZW5jZSBpcyBzdWNjZXNzZnVsLCByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCBhIEpzb25PYmplY3QgdG9cbiAgICAgKiBiZSBmbGF0dGVuZWQgYW5kIG1lcmdlZCBpbnRvIHRoZSBjdXJyZW50IG9iamVjdC4gRmFpbHMgd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZSdcbiAgICAgKiBmb3Igbm9uLXJlZmVyZW5jZSBrZXlzIG9yIHdpdGggZGV0YWlsICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbjtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgcmVmcyA9IHN0YXRlLmdldFJlZnModGhpcy5fb3B0aW9ucz8uY29udGV4dCk7XG4gICAgICAgIGlmIChyZWZzPy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgLy8gbmVlZCB0byBhcHBseSBhbnkgcnVsZXMgdG8gdGhlIHZhbHVlIGJlZm9yZSB3ZSBldmFsdWF0ZSBpdFxuICAgICAgICAgICAgY29uc3QgY2xvbmVSZXN1bHQgPSBzdGF0ZS5lZGl0b3IuY2xvbmUodmFsdWUsIHN0YXRlLmNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNsb25lUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjbG9uZVJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtrZXl9OiAke2Nsb25lUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29udGV4dFJlc3VsdCA9IHRoaXMuX2V4dGVuZENvbnRleHQoc3RhdGUsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChjb250ZXh0UmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqUmVzdWx0ID0gcmVmcy5nZXRKc29uT2JqZWN0KGtleSwgY29udGV4dFJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gZ3VhcmRlZCBieSB0aGUgaGFzIGFib3ZlIHNvIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICAgICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgICAgICAgICAgICAgIGlmIChvYmpSZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB8fCAodmFsdWUgPT09ICdkZWZhdWx0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbDxKc29uT2JqZWN0LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+KG9ialJlc3VsdC52YWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2tSZXN1bHQgPSBwaWNrSnNvbk9iamVjdChvYmpSZXN1bHQudmFsdWUsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBpY2tSZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJHtrZXl9OiAke3BpY2tSZXN1bHQubWVzc2FnZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tSZXN1bHQud2l0aERldGFpbCgnZWRpdGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9ialJlc3VsdC5kZXRhaWwgIT09ICd1bmtub3duJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtvYmpSZXN1bHQubWVzc2FnZX1gO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtjb250ZXh0UmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSwgYXJyYXkgb3IgbGl0ZXJhbCB2YWx1ZSBmb3IgcmVmZXJlbmNlIHJlcGxhY2VtZW50LlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgZXZhbHVhdGVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICovXG4gICAgcHVibGljIGVkaXRWYWx1ZSh2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgcmVmcyA9IHN0YXRlLmdldFJlZnModGhpcy5fb3B0aW9ucz8uY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHJlZnMgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IHN0YXRlLmdldENvbnRleHQodGhpcy5fb3B0aW9ucz8uY29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZWZzLmdldEpzb25WYWx1ZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKHJlc3VsdC52YWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5VmFsdWUnLCByZXN1bHQubWVzc2FnZSwgdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdGVtcGxhdGUgdmFyaWFibGVzIHRvIHVzZSBnaXZlbiB0aGUgdmFsdWUgb2Ygc29tZSBwcm9wZXJ0eSB3aG9zZSBuYW1lIG1hdGNoZWQgYVxuICAgICAqIHJlc291cmNlIHBsdXMgdGhlIGJhc2UgdGVtcGxhdGUgY29udGV4dC5cbiAgICAgKiBAcGFyYW0gc3VwcGxpZWQgVGhlIHN0cmluZyBvciBvYmplY3Qgc3VwcGxpZWQgaW4gdGhlIHNvdXJjZSBqc29uXG4gICAgICogQHBhcmFtIGJhc2VWYXJzIFRoZSBjb250ZXh0IGluIGVmZmVjdCBhdCB0aGUgcG9pbnQgb2YgcmVzb2x1dGlvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZXh0ZW5kQ29udGV4dChzdGF0ZTogSnNvbkVkaXRvclN0YXRlLCBzdXBwbGllZDogSnNvblZhbHVlKTogUmVzdWx0PEpzb25Db250ZXh0fHVuZGVmaW5lZD4ge1xuICAgICAgICBjb25zdCBhZGQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIGlmIChpc0pzb25PYmplY3Qoc3VwcGxpZWQpKSB7XG4gICAgICAgICAgICBhZGQudmFycyA9IE9iamVjdC5lbnRyaWVzKHN1cHBsaWVkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2Ygc3VwcGxpZWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbChgSW52YWxpZCB0ZW1wbGF0ZSBwYXRoIG9yIGNvbnRleHQ6IFwiJHtKU09OLnN0cmluZ2lmeShzdXBwbGllZCl9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhdGUuZXh0ZW5kQ29udGV4dCh0aGlzLl9vcHRpb25zPy5jb250ZXh0LCBhZGQpO1xuICAgIH1cbn1cbiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uRWRpdG9yL3J1bGVzL3JlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsNENBQStHO0FBQy9HLHNEQUE2RztBQUU3Ryx5Q0FBbUY7QUFHbkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUEyQjtRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQTJCO1FBQzVDLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWdCLEVBQUUsS0FBc0I7O1FBQ3JFLHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBRyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQztRQUM3Qyx1QkFBdUI7UUFDdkIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQiw2REFBNkQ7WUFDN0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFJLFdBQVcs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QyxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2xHO1NBQ0o7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sY0FBYyxDQUFDLEtBQXNCLEVBQUUsUUFBbUI7O1FBQ2hFLE1BQU0sR0FBRyxHQUE0QixFQUFFLENBQUM7UUFDeEMsSUFBSSxJQUFBLHFCQUFZLEVBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZDO2FBQ0ksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDbkMsT0FBTyxJQUFBLGVBQUksRUFBQyxzQ0FBc0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEY7UUFDRCxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNKO0FBakhELDBEQWlIQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBEZXRhaWxlZFJlc3VsdCwgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBmYWlsLCBmYWlsV2l0aERldGFpbCwgc3VjY2VlZFdpdGhEZXRhaWwgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IEpzb25FZGl0RmFpbHVyZVJlYXNvbiwgSnNvbkVkaXRvclJ1bGVCYXNlLCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiB9IGZyb20gJy4uL2pzb25FZGl0b3JSdWxlJztcbmltcG9ydCB7IEpzb25FZGl0b3JPcHRpb25zLCBKc29uRWRpdG9yU3RhdGUgfSBmcm9tICcuLi9qc29uRWRpdG9yU3RhdGUnO1xuaW1wb3J0IHsgSnNvbk9iamVjdCwgSnNvblZhbHVlLCBpc0pzb25PYmplY3QsIHBpY2tKc29uT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IEpzb25Db250ZXh0IH0gZnJvbSAnLi4vLi4vanNvbkNvbnRleHQnO1xuXG4vKipcbiAqIFRoZSBSZWZlcmVuY2UgSlNPTiBlZGl0b3IgcnVsZSByZXBsYWNlcyBwcm9wZXJ0eSBrZXlzIG9yIHZhbHVlcyB0aGF0IG1hdGNoXG4gKiBzb21lIGtub3duIG9iamVjdCB3aXRoIGEgY29weSBvZiB0aGF0IHJlZmVyZW5jZWQgb2JqZWN0LCBmb3JtYXR0ZWQgYWNjb3JkaW5nXG4gKiB0byB0aGUgY3VycmVudCBjb250ZXh0LlxuICpcbiAqIEEgcHJvcGVydHkga2V5IGlzIG1hdGNoZWQgaWYgaXQgbWF0Y2hlcyBhbnkga25vd24gcmVmZXJlbmNlYWJsZSB2YWx1ZS5cbiAqIC0gSWYgdGhlIHZhbHVlIG9mIHRoZSBtYXRjaGVkIGtleSBpcyAnZGVmYXVsdCcsIHRoZW4gdGhlIGVudGlyZSBvYmplY3QgaXMgZm9ybWF0dGVkXG4gKiAgIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dCwgZmxhdHRlbmVkIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuXG4gKiAtIElmIHRoZSB2YWx1ZSBvZiB0aGUgbWF0Y2hlZCBrZXkgaXMgc29tZSBvdGhlciBzdHJpbmcsIHRoZW4gdGhlIGVudGlyZVxuICogICBvYmplY3QgaXMgZm9ybWF0dGVkIHdpdGggdGhlIGN1cnJlbnQgY29udGV4dCwgYW5kIHRoZSBjaGlsZCBvZiB0aGUgcmVzdWx0aW5nXG4gKiAgIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIHBhdGggaXMgZmxhdHRlbmVkIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuXG4gKiAtIElmIHRoZSB2YWx1ZSBvZiB0aGUgbWF0Y2hlZCBrZXkgaXMgYW4gb2JqZWN0LCB0aGVuIHRoZSBlbnRpcmUgb2JqZWN0IGlzXG4gKiAgIGZvcm1hdHRlZCB3aXRoIHRoZSBjdXJyZW50IGNvbnRleHQgZXh0ZW5kZWQgdG8gaW5jbHVkZSBhbnkgcHJvcGVydGllcyBvZlxuICogICB0aGF0IG9iamVjdCwgZmxhdHRlbmVkLCBhbmQgbWVyZ2VkIGludG8gdGhlIGN1cnJlbnQgb2JqZWN0LlxuICogLSBJdCBpcyBhbiBlcnJvciBpZiB0aGUgcmVmZXJlbmNlZCB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0LlxuICpcbiAqIEFueSBwcm9wZXJ0eSwgYXJyYXkgb3IgbGl0ZXJhbCB2YWx1ZSBpcyBtYXRjaGVkIGlmIGl0IG1hdGNoZXMgYW55IGtub3duXG4gKiByZWZlcmVuY2VhYmxlIHZhbHVlLiBUaGUgcmVmZXJlbmNlZCB2YWx1ZSBpcyByZXBsYWNlZCBieSB0aGUgcmVmZXJlbmNlZFxuICogdmFsdWUsIGZvcm1hdHRlZCB1c2luZyB0aGUgY3VycmVudCBlZGl0b3IgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlIGV4dGVuZHMgSnNvbkVkaXRvclJ1bGVCYXNlIHtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM/OiBKc29uRWRpdG9yT3B0aW9ucztcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZS5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcnVsZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogSnNvbkVkaXRvck9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IEpzb25FZGl0b3JPcHRpb25zKTogUmVzdWx0PFJlZmVyZW5jZUpzb25FZGl0b3JSdWxlPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZShvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHkgZm9yIHJlZmVyZW5jZSBleHBhbnNpb24uXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqIEByZXR1cm5zIElmIHRoZSByZWZlcmVuY2UgaXMgc3VjY2Vzc2Z1bCwgcmV0dXJucyBTdWNjZXNzIHdpdGggYSBKc29uT2JqZWN0IHRvXG4gICAgICogYmUgZmxhdHRlbmVkIGFuZCBtZXJnZWQgaW50byB0aGUgY3VycmVudCBvYmplY3QuIEZhaWxzIHdpdGggZGV0YWlsICdpbmFwcGxpY2FibGUnXG4gICAgICogZm9yIG5vbi1yZWZlcmVuY2Uga2V5cyBvciB3aXRoIGRldGFpbCAnZXJyb3InIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb247XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IHJlZnMgPSBzdGF0ZS5nZXRSZWZzKHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuICAgICAgICBpZiAocmVmcz8uaGFzKGtleSkpIHtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gYXBwbHkgYW55IHJ1bGVzIHRvIHRoZSB2YWx1ZSBiZWZvcmUgd2UgZXZhbHVhdGUgaXRcbiAgICAgICAgICAgIGNvbnN0IGNsb25lUmVzdWx0ID0gc3RhdGUuZWRpdG9yLmNsb25lKHZhbHVlLCBzdGF0ZS5jb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChjbG9uZVJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gY2xvbmVSZXN1bHQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtjbG9uZVJlc3VsdC5tZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRSZXN1bHQgPSB0aGlzLl9leHRlbmRDb250ZXh0KHN0YXRlLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoY29udGV4dFJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9ialJlc3VsdCA9IHJlZnMuZ2V0SnNvbk9iamVjdChrZXksIGNvbnRleHRSZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIGd1YXJkZWQgYnkgdGhlIGhhcyBhYm92ZSBzbyBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIGVsc2VcbiAgICAgICAgICAgICAgICBpZiAob2JqUmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgfHwgKHZhbHVlID09PSAnZGVmYXVsdCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWw8SnNvbk9iamVjdCwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPihvYmpSZXN1bHQudmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNrUmVzdWx0ID0gcGlja0pzb25PYmplY3Qob2JqUmVzdWx0LnZhbHVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaWNrUmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYCR7a2V5fTogJHtwaWNrUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5TmFtZScsIG1lc3NhZ2UsIHZhbGlkYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwaWNrUmVzdWx0LndpdGhEZXRhaWwoJ2VkaXRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChvYmpSZXN1bHQuZGV0YWlsICE9PSAndW5rbm93bicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke2tleX06ICR7b2JqUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke2tleX06ICR7Y29udGV4dFJlc3VsdC5tZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgbWVzc2FnZSwgdmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHksIGFycmF5IG9yIGxpdGVyYWwgdmFsdWUgZm9yIHJlZmVyZW5jZSByZXBsYWNlbWVudC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGV2YWx1YXRlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0VmFsdWUodmFsdWU6IEpzb25WYWx1ZSwgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIGNvbnN0IHJlZnMgPSBzdGF0ZS5nZXRSZWZzKHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuXG4gICAgICAgIGlmIChyZWZzICYmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzdGF0ZS5nZXRDb250ZXh0KHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVmcy5nZXRKc29uVmFsdWUodmFsdWUsIGNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChyZXN1bHQudmFsdWUsICdlZGl0ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eVZhbHVlJywgcmVzdWx0Lm1lc3NhZ2UsIHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHRlbXBsYXRlIHZhcmlhYmxlcyB0byB1c2UgZ2l2ZW4gdGhlIHZhbHVlIG9mIHNvbWUgcHJvcGVydHkgd2hvc2UgbmFtZSBtYXRjaGVkIGFcbiAgICAgKiByZXNvdXJjZSBwbHVzIHRoZSBiYXNlIHRlbXBsYXRlIGNvbnRleHQuXG4gICAgICogQHBhcmFtIHN1cHBsaWVkIFRoZSBzdHJpbmcgb3Igb2JqZWN0IHN1cHBsaWVkIGluIHRoZSBzb3VyY2UganNvblxuICAgICAqIEBwYXJhbSBiYXNlVmFycyBUaGUgY29udGV4dCBpbiBlZmZlY3QgYXQgdGhlIHBvaW50IG9mIHJlc29sdXRpb25cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2V4dGVuZENvbnRleHQoc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSwgc3VwcGxpZWQ6IEpzb25WYWx1ZSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgY29uc3QgYWRkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBpZiAoaXNKc29uT2JqZWN0KHN1cHBsaWVkKSkge1xuICAgICAgICAgICAgYWRkLnZhcnMgPSBPYmplY3QuZW50cmllcyhzdXBwbGllZCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHN1cHBsaWVkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYEludmFsaWQgdGVtcGxhdGUgcGF0aCBvciBjb250ZXh0OiBcIiR7SlNPTi5zdHJpbmdpZnkoc3VwcGxpZWQpfVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXRlLmV4dGVuZENvbnRleHQodGhpcy5fb3B0aW9ucz8uY29udGV4dCwgYWRkKTtcbiAgICB9XG59XG4iXX0=
|
|
File without changes
|
|
@@ -46,7 +46,7 @@ class TemplatedJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
46
46
|
* @param options Optional configuration options for this rule
|
|
47
47
|
*/
|
|
48
48
|
static create(options) {
|
|
49
|
-
return ts_utils_1.captureResult(() => new TemplatedJsonEditorRule(options));
|
|
49
|
+
return (0, ts_utils_1.captureResult)(() => new TemplatedJsonEditorRule(options));
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
52
|
* Evaluates a property name for template rendering.
|
|
@@ -69,7 +69,7 @@ class TemplatedJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
69
69
|
}
|
|
70
70
|
const rtrn = {};
|
|
71
71
|
rtrn[newKey] = value;
|
|
72
|
-
return ts_utils_1.succeedWithDetail(rtrn, 'edited');
|
|
72
|
+
return (0, ts_utils_1.succeedWithDetail)(rtrn, 'edited');
|
|
73
73
|
});
|
|
74
74
|
if ((result.isFailure() && result.detail === 'error')) {
|
|
75
75
|
const message = `Cannot render name ${key}: ${result.message}`;
|
|
@@ -77,7 +77,7 @@ class TemplatedJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
77
77
|
}
|
|
78
78
|
return result;
|
|
79
79
|
}
|
|
80
|
-
return ts_utils_1.failWithDetail('inapplicable', 'inapplicable');
|
|
80
|
+
return (0, ts_utils_1.failWithDetail)('inapplicable', 'inapplicable');
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Evaluates a property, array or literal value for template rendering
|
|
@@ -91,7 +91,7 @@ class TemplatedJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
91
91
|
var _a, _b;
|
|
92
92
|
if ((((_a = this._options) === null || _a === void 0 ? void 0 : _a.useValueTemplates) !== false) && (typeof value === 'string') && value.includes('{{')) {
|
|
93
93
|
const renderResult = this._render(value, state).onSuccess((newValue) => {
|
|
94
|
-
return ts_utils_1.succeedWithDetail(newValue, 'edited');
|
|
94
|
+
return (0, ts_utils_1.succeedWithDetail)(newValue, 'edited');
|
|
95
95
|
});
|
|
96
96
|
if (renderResult.isFailure() && (renderResult.detail === 'error')) {
|
|
97
97
|
const message = `Cannot render value: ${renderResult.message}`;
|
|
@@ -100,16 +100,16 @@ class TemplatedJsonEditorRule extends jsonEditorRule_1.JsonEditorRuleBase {
|
|
|
100
100
|
}
|
|
101
101
|
return renderResult;
|
|
102
102
|
}
|
|
103
|
-
return ts_utils_1.failWithDetail('inapplicable', 'inapplicable');
|
|
103
|
+
return (0, ts_utils_1.failWithDetail)('inapplicable', 'inapplicable');
|
|
104
104
|
}
|
|
105
105
|
_render(template, state) {
|
|
106
106
|
var _a;
|
|
107
107
|
const vars = state.getVars((_a = this._options) === null || _a === void 0 ? void 0 : _a.context);
|
|
108
108
|
if (vars && template.includes('{{')) {
|
|
109
|
-
return ts_utils_1.captureResult(() => mustache_1.default.render(template, vars)).withDetail('error', 'edited');
|
|
109
|
+
return (0, ts_utils_1.captureResult)(() => mustache_1.default.render(template, vars)).withDetail('error', 'edited');
|
|
110
110
|
}
|
|
111
|
-
return ts_utils_1.failWithDetail('inapplicable', 'inapplicable');
|
|
111
|
+
return (0, ts_utils_1.failWithDetail)('inapplicable', 'inapplicable');
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
exports.TemplatedJsonEditorRule = TemplatedJsonEditorRule;
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb25FZGl0b3IvcnVsZXMvdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7OztBQUVILDRDQUF5RztBQUN6RyxzREFBNkc7QUFJN0csd0RBQWdDO0FBZ0JoQzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUFrQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQWtDO1FBQ25ELE9BQU8sd0JBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxHQUFXLEVBQUUsS0FBZ0IsRUFBRSxLQUFzQjs7UUFDckUsdUJBQXVCO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsVUFBVSxDQUFDO1FBRTdDLElBQUksQ0FBQSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLGdCQUFnQixNQUFLLEtBQUssRUFBRTtZQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDekQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDbkIsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxDQUFDO2lCQUMvRjtnQkFFRCxNQUFNLElBQUksR0FBZSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLE9BQU8sNEJBQWlCLENBQW9DLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNoRixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLEdBQUcsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9ELE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDM0U7WUFDRCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtRQUNELE9BQU8seUJBQWMsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxTQUFTLENBQUMsS0FBZ0IsRUFBRSxLQUFzQjs7UUFDckQsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxpQkFBaUIsTUFBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ25FLE9BQU8sNEJBQWlCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxFQUFFO2dCQUMvRCxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMvRCx1QkFBdUI7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLEVBQUUsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxVQUFVLENBQUMsQ0FBQzthQUMzRjtZQUNELE9BQU8sWUFBWSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyx5QkFBYyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRVMsT0FBTyxDQUFDLFFBQWdCLEVBQUUsS0FBc0I7O1FBQ3RELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxJQUFJLElBQUksSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sd0JBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzdGO1FBQ0QsT0FBTyx5QkFBYyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFyRkQsMERBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERldGFpbGVkUmVzdWx0LCBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkV2l0aERldGFpbCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgSnNvbkVkaXRGYWlsdXJlUmVhc29uLCBKc29uRWRpdG9yUnVsZUJhc2UsIEpzb25Qcm9wZXJ0eUVkaXRGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi4vanNvbkVkaXRvclJ1bGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25FZGl0b3JTdGF0ZSB9IGZyb20gJy4uL2pzb25FZGl0b3JTdGF0ZSc7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5pbXBvcnQgTXVzdGFjaGUgZnJvbSAnbXVzdGFjaGUnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFRlbXBsYXRlZCBKU09OIGVkaXRvciBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVkSnNvblJ1bGVPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxKc29uRWRpdG9yT3B0aW9ucz4ge1xuICAgIC8qKlxuICAgICAqIElmIHRydWUgKGRlZmF1bHQpIHRoZW4gdGVtcGxhdGVzIGluIHByb3BlcnR5IG5hbWVzIGFyZSByZW5kZXJlZFxuICAgICAqL1xuICAgIHVzZU5hbWVUZW1wbGF0ZXM/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIElmIHRydWUgKGRlZmF1bHQpIHRoZW4gdGVtcGxhdGVzIGluIHByb3BlcnR5IHZhbHVlcyBhcmUgcmVuZGVyZWRcbiAgICAgKi9cbiAgICB1c2VWYWx1ZVRlbXBsYXRlcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIFRlbXBsYXRlZCBKU09OIGVkaXRvciBydWxlIGFwcGxpZXMgbXVzdGFjaGUgcmVuZGVyaW5nIGFzIGFwcHJvcHJpYXRlXG4gKiB0byBhbnkga2V5cyBvciB2YWx1ZXMgaW4gdGhlIG9iamVjdCBiZWluZyBlZGl0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZSBleHRlbmRzIEpzb25FZGl0b3JSdWxlQmFzZSB7XG4gICAgcHJvdGVjdGVkIF9vcHRpb25zPzogVGVtcGxhdGVkSnNvblJ1bGVPcHRpb25zO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHJ1bGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFRlbXBsYXRlZEpzb25SdWxlT3B0aW9ucykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcnVsZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKG9wdGlvbnM/OiBUZW1wbGF0ZWRKc29uUnVsZU9wdGlvbnMpOiBSZXN1bHQ8VGVtcGxhdGVkSnNvbkVkaXRvclJ1bGU+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlKG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSBuYW1lIGZvciB0ZW1wbGF0ZSByZW5kZXJpbmcuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgdG8gYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBzdGF0ZSBUaGUgZWRpdG9yIHN0YXRlIGZvciB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZFxuICAgICAqIEByZXR1cm5zIFN1Y2NlZWRzIHdpdGggZGV0YWlsICdlZGl0ZWQnIGFuZCBhbiBvYmplY3QgdG8gYmUgZmxhdHRlbmVkIGFuZCBtZXJnZWRcbiAgICAgKiBpZiB0aGUga2V5IGNvbnRhaW5lZCBhIHRlbXBsYXRlLiBGYWlscyB3aXRoIGRldGFpbCAnZXJyb3InIGlmIGFuIGVycm9yIG9jY3VycmVkXG4gICAgICogb3Igd2l0aCBkZXRhaWwgJ2luYXBwbGljYWJsZScgaWYgdGhlIHByb3BlcnR5IGtleSBkb2VzIG5vdCBjb250YWluIGEgdGVtcGxhdGVcbiAgICAgKiBvciBpZiBuYW1lIHJlbmRlcmluZyBpcyBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvbk9iamVjdCwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbiA9IHRoaXMuX29wdGlvbnM/LnZhbGlkYXRpb247XG5cbiAgICAgICAgaWYgKHRoaXMuX29wdGlvbnM/LnVzZU5hbWVUZW1wbGF0ZXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9yZW5kZXIoa2V5LCBzdGF0ZSkub25TdWNjZXNzKChuZXdLZXkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmV3S2V5Lmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmZhaWxWYWxpZGF0aW9uKCdpbnZhbGlkUHJvcGVydHlOYW1lJywgYFRlbXBsYXRlIFwiJHtrZXl9XCIgcmVuZGVycyBlbXB0eSBuYW1lLmApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJ0cm46IEpzb25PYmplY3QgPSB7fTtcbiAgICAgICAgICAgICAgICBydHJuW25ld0tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWw8SnNvbk9iamVjdCwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPihydHJuLCAnZWRpdGVkJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKChyZXN1bHQuaXNGYWlsdXJlKCkgJiYgcmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYENhbm5vdCByZW5kZXIgbmFtZSAke2tleX06ICR7cmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBtZXNzYWdlLCB2YWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZhbHVhdGVzIGEgcHJvcGVydHksIGFycmF5IG9yIGxpdGVyYWwgdmFsdWUgZm9yIHRlbXBsYXRlIHJlbmRlcmluZ1xuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgZWRpdGVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICogQHJldHVybnMgU3VjY2VlZHMgd2l0aCBkZXRhaWwgJ2VkaXRlZCcgaWYgdGhlIHZhbHVlIGNvbnRhaW5lZCBhIHRlbXBsYXRlIGFuZCB3YXMgZWRpdGVkLlxuICAgICAqIEZhaWxzIHdpdGggJ2lnbm9yZScgaWYgdGhlIHJlbmRlcmVkIHZhbHVlIHNob3VsZCBiZSBpZ25vcmVkLCB3aXRoICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJzXG4gICAgICogb3Igd2l0aCAnaW5hcHBsaWNhYmxlJyBpZiB0aGUgdmFsdWUgd2FzIG5vdCBhIHN0cmluZyB3aXRoIGEgdGVtcGxhdGUuXG4gICAgICovXG4gICAgcHVibGljIGVkaXRWYWx1ZSh2YWx1ZTogSnNvblZhbHVlLCBzdGF0ZTogSnNvbkVkaXRvclN0YXRlKTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uRWRpdEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgaWYgKCh0aGlzLl9vcHRpb25zPy51c2VWYWx1ZVRlbXBsYXRlcyAhPT0gZmFsc2UpICYmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSAmJiB2YWx1ZS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICAgICAgY29uc3QgcmVuZGVyUmVzdWx0ID0gdGhpcy5fcmVuZGVyKHZhbHVlLCBzdGF0ZSkub25TdWNjZXNzKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbChuZXdWYWx1ZSwgJ2VkaXRlZCcpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChyZW5kZXJSZXN1bHQuaXNGYWlsdXJlKCkgJiYgKHJlbmRlclJlc3VsdC5kZXRhaWwgPT09ICdlcnJvcicpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBDYW5ub3QgcmVuZGVyIHZhbHVlOiAke3JlbmRlclJlc3VsdC5tZXNzYWdlfWA7XG4gICAgICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eVZhbHVlJywgbWVzc2FnZSwgdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyUmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmVuZGVyKHRlbXBsYXRlOiBzdHJpbmcsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxzdHJpbmcsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb25zdCB2YXJzID0gc3RhdGUuZ2V0VmFycyh0aGlzLl9vcHRpb25zPy5jb250ZXh0KTtcbiAgICAgICAgaWYgKHZhcnMgJiYgdGVtcGxhdGUuaW5jbHVkZXMoJ3t7JykpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IE11c3RhY2hlLnJlbmRlcih0ZW1wbGF0ZSwgdmFycykpLndpdGhEZXRhaWwoJ2Vycm9yJywgJ2VkaXRlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbCgnaW5hcHBsaWNhYmxlJywgJ2luYXBwbGljYWJsZScpO1xuICAgIH1cbn1cbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb25FZGl0b3IvcnVsZXMvdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7OztBQUVILDRDQUF5RztBQUN6RyxzREFBNkc7QUFJN0csd0RBQWdDO0FBZ0JoQzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG1DQUFrQjtJQUczRDs7O09BR0c7SUFDSCxZQUFtQixPQUFrQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQWtDO1FBQ25ELE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWSxDQUFDLEdBQVcsRUFBRSxLQUFnQixFQUFFLEtBQXNCOztRQUNyRSx1QkFBdUI7UUFDdkIsTUFBTSxVQUFVLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxVQUFVLENBQUM7UUFFN0MsSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsZ0JBQWdCLE1BQUssS0FBSyxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUN6RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsYUFBYSxHQUFHLHVCQUF1QixDQUFDLENBQUM7aUJBQy9GO2dCQUVELE1BQU0sSUFBSSxHQUFlLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckIsT0FBTyxJQUFBLDRCQUFpQixFQUFvQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEYsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEVBQUU7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLHNCQUFzQixHQUFHLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMvRCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxTQUFTLENBQUMsS0FBZ0IsRUFBRSxLQUFzQjs7UUFDckQsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxpQkFBaUIsTUFBSyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckcsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ25FLE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakQsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEVBQUU7Z0JBQy9ELE1BQU0sT0FBTyxHQUFHLHdCQUF3QixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQy9ELHVCQUF1QjtnQkFDdkIsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQzNGO1lBQ0QsT0FBTyxZQUFZLENBQUM7U0FDdkI7UUFDRCxPQUFPLElBQUEseUJBQWMsRUFBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVTLE9BQU8sQ0FBQyxRQUFnQixFQUFFLEtBQXNCOztRQUN0RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQyxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzdGO1FBQ0QsT0FBTyxJQUFBLHlCQUFjLEVBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDSjtBQXJGRCwwREFxRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0IHsgRGV0YWlsZWRSZXN1bHQsIFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgZmFpbFdpdGhEZXRhaWwsIHN1Y2NlZWRXaXRoRGV0YWlsIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uRWRpdEZhaWx1cmVSZWFzb24sIEpzb25FZGl0b3JSdWxlQmFzZSwgSnNvblByb3BlcnR5RWRpdEZhaWx1cmVSZWFzb24gfSBmcm9tICcuLi9qc29uRWRpdG9yUnVsZSc7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclN0YXRlIH0gZnJvbSAnLi4vanNvbkVkaXRvclN0YXRlJztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbmltcG9ydCBNdXN0YWNoZSBmcm9tICdtdXN0YWNoZSc7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgVGVtcGxhdGVkIEpTT04gZWRpdG9yIHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZWRKc29uUnVsZU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEpzb25FZGl0b3JPcHRpb25zPiB7XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgdGhlbiB0ZW1wbGF0ZXMgaW4gcHJvcGVydHkgbmFtZXMgYXJlIHJlbmRlcmVkXG4gICAgICovXG4gICAgdXNlTmFtZVRlbXBsYXRlcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgdGhlbiB0ZW1wbGF0ZXMgaW4gcHJvcGVydHkgdmFsdWVzIGFyZSByZW5kZXJlZFxuICAgICAqL1xuICAgIHVzZVZhbHVlVGVtcGxhdGVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgVGVtcGxhdGVkIEpTT04gZWRpdG9yIHJ1bGUgYXBwbGllcyBtdXN0YWNoZSByZW5kZXJpbmcgYXMgYXBwcm9wcmlhdGVcbiAqIHRvIGFueSBrZXlzIG9yIHZhbHVlcyBpbiB0aGUgb2JqZWN0IGJlaW5nIGVkaXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlZEpzb25FZGl0b3JSdWxlIGV4dGVuZHMgSnNvbkVkaXRvclJ1bGVCYXNlIHtcbiAgICBwcm90ZWN0ZWQgX29wdGlvbnM/OiBUZW1wbGF0ZWRKc29uUnVsZU9wdGlvbnM7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGVcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcnVsZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogVGVtcGxhdGVkSnNvblJ1bGVPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBydWxlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFRlbXBsYXRlZEpzb25SdWxlT3B0aW9ucyk6IFJlc3VsdDxUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZT4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUob3B0aW9ucykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2YWx1YXRlcyBhIHByb3BlcnR5IG5hbWUgZm9yIHRlbXBsYXRlIHJlbmRlcmluZy5cbiAgICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0byBiZSBjb25zaWRlcmVkXG4gICAgICogQHBhcmFtIHN0YXRlIFRoZSBlZGl0b3Igc3RhdGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgZWRpdGVkXG4gICAgICogQHJldHVybnMgU3VjY2VlZHMgd2l0aCBkZXRhaWwgJ2VkaXRlZCcgYW5kIGFuIG9iamVjdCB0byBiZSBmbGF0dGVuZWQgYW5kIG1lcmdlZFxuICAgICAqIGlmIHRoZSBrZXkgY29udGFpbmVkIGEgdGVtcGxhdGUuIEZhaWxzIHdpdGggZGV0YWlsICdlcnJvcicgaWYgYW4gZXJyb3Igb2NjdXJyZWRcbiAgICAgKiBvciB3aXRoIGRldGFpbCAnaW5hcHBsaWNhYmxlJyBpZiB0aGUgcHJvcGVydHkga2V5IGRvZXMgbm90IGNvbnRhaW4gYSB0ZW1wbGF0ZVxuICAgICAqIG9yIGlmIG5hbWUgcmVuZGVyaW5nIGlzIGRpc2FibGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBlZGl0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy5fb3B0aW9ucz8udmFsaWRhdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5fb3B0aW9ucz8udXNlTmFtZVRlbXBsYXRlcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3JlbmRlcihrZXksIHN0YXRlKS5vblN1Y2Nlc3MoKG5ld0tleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChuZXdLZXkubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGUuZmFpbFZhbGlkYXRpb24oJ2ludmFsaWRQcm9wZXJ0eU5hbWUnLCBgVGVtcGxhdGUgXCIke2tleX1cIiByZW5kZXJzIGVtcHR5IG5hbWUuYCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgcnRybjogSnNvbk9iamVjdCA9IHt9O1xuICAgICAgICAgICAgICAgIHJ0cm5bbmV3S2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkV2l0aERldGFpbDxKc29uT2JqZWN0LCBKc29uRWRpdEZhaWx1cmVSZWFzb24+KHJ0cm4sICdlZGl0ZWQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoKHJlc3VsdC5pc0ZhaWx1cmUoKSAmJiByZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQ2Fubm90IHJlbmRlciBuYW1lICR7a2V5fTogJHtyZXN1bHQubWVzc2FnZX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5TmFtZScsIG1lc3NhZ2UsIHZhbGlkYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoJ2luYXBwbGljYWJsZScsICdpbmFwcGxpY2FibGUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmFsdWF0ZXMgYSBwcm9wZXJ0eSwgYXJyYXkgb3IgbGl0ZXJhbCB2YWx1ZSBmb3IgdGVtcGxhdGUgcmVuZGVyaW5nXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBlZGl0ZWRcbiAgICAgKiBAcGFyYW0gc3RhdGUgVGhlIGVkaXRvciBzdGF0ZSBmb3IgdGhlIG9iamVjdCBiZWluZyBlZGl0ZWRcbiAgICAgKiBAcmV0dXJucyBTdWNjZWVkcyB3aXRoIGRldGFpbCAnZWRpdGVkJyBpZiB0aGUgdmFsdWUgY29udGFpbmVkIGEgdGVtcGxhdGUgYW5kIHdhcyBlZGl0ZWQuXG4gICAgICogRmFpbHMgd2l0aCAnaWdub3JlJyBpZiB0aGUgcmVuZGVyZWQgdmFsdWUgc2hvdWxkIGJlIGlnbm9yZWQsIHdpdGggJ2Vycm9yJyBpZiBhbiBlcnJvciBvY2N1cnNcbiAgICAgKiBvciB3aXRoICdpbmFwcGxpY2FibGUnIGlmIHRoZSB2YWx1ZSB3YXMgbm90IGEgc3RyaW5nIHdpdGggYSB0ZW1wbGF0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZWRpdFZhbHVlKHZhbHVlOiBKc29uVmFsdWUsIHN0YXRlOiBKc29uRWRpdG9yU3RhdGUpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25FZGl0RmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBpZiAoKHRoaXMuX29wdGlvbnM/LnVzZVZhbHVlVGVtcGxhdGVzICE9PSBmYWxzZSkgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpICYmIHZhbHVlLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgICAgICBjb25zdCByZW5kZXJSZXN1bHQgPSB0aGlzLl9yZW5kZXIodmFsdWUsIHN0YXRlKS5vblN1Y2Nlc3MoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKG5ld1ZhbHVlLCAnZWRpdGVkJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHJlbmRlclJlc3VsdC5pc0ZhaWx1cmUoKSAmJiAocmVuZGVyUmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYENhbm5vdCByZW5kZXIgdmFsdWU6ICR7cmVuZGVyUmVzdWx0Lm1lc3NhZ2V9YDtcbiAgICAgICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZS5mYWlsVmFsaWRhdGlvbignaW52YWxpZFByb3BlcnR5VmFsdWUnLCBtZXNzYWdlLCB0aGlzLl9vcHRpb25zPy52YWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZW5kZXJSZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9yZW5kZXIodGVtcGxhdGU6IHN0cmluZywgc3RhdGU6IEpzb25FZGl0b3JTdGF0ZSk6IERldGFpbGVkUmVzdWx0PHN0cmluZywgSnNvbkVkaXRGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnN0IHZhcnMgPSBzdGF0ZS5nZXRWYXJzKHRoaXMuX29wdGlvbnM/LmNvbnRleHQpO1xuICAgICAgICBpZiAodmFycyAmJiB0ZW1wbGF0ZS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gTXVzdGFjaGUucmVuZGVyKHRlbXBsYXRlLCB2YXJzKSkud2l0aERldGFpbCgnZXJyb3InLCAnZWRpdGVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKCdpbmFwcGxpY2FibGUnLCAnaW5hcHBsaWNhYmxlJyk7XG4gICAgfVxufVxuIl19
|
package/jsonReferenceMap.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare class PrefixKeyPolicy<T> extends ReferenceMapKeyPolicy<T> {
|
|
|
25
25
|
isValid(key: string, _item?: T): boolean;
|
|
26
26
|
validate(key: string, item?: T, options?: ReferenceMapKeyPolicyValidateOptions): Result<string>;
|
|
27
27
|
}
|
|
28
|
-
export
|
|
28
|
+
export type MapOrRecord<T> = Map<string, T> | Record<string, T>;
|
|
29
29
|
/**
|
|
30
30
|
* A SimpleJsonMap presents a view of a simple map of @see JsonValue
|
|
31
31
|
*/
|
package/jsonReferenceMap.js
CHANGED
|
@@ -41,18 +41,18 @@ class ReferenceMapKeyPolicy {
|
|
|
41
41
|
return this._isValid(key, item);
|
|
42
42
|
}
|
|
43
43
|
validate(key, item, _options) {
|
|
44
|
-
return this.isValid(key, item) ? ts_utils_1.succeed(key) : ts_utils_1.fail(`${key}: invalid key`);
|
|
44
|
+
return this.isValid(key, item) ? (0, ts_utils_1.succeed)(key) : (0, ts_utils_1.fail)(`${key}: invalid key`);
|
|
45
45
|
}
|
|
46
46
|
validateItems(items, options) {
|
|
47
|
-
return ts_utils_1.mapResults(items.map((item) => {
|
|
47
|
+
return (0, ts_utils_1.mapResults)(items.map((item) => {
|
|
48
48
|
return this.validate(...item, options).onSuccess((valid) => {
|
|
49
|
-
return ts_utils_1.succeed([valid, item[1]]);
|
|
49
|
+
return (0, ts_utils_1.succeed)([valid, item[1]]);
|
|
50
50
|
});
|
|
51
51
|
}));
|
|
52
52
|
}
|
|
53
53
|
validateMap(map, options) {
|
|
54
54
|
return this.validateItems(Array.from(map.entries()), options).onSuccess((valid) => {
|
|
55
|
-
return ts_utils_1.captureResult(() => new Map(valid));
|
|
55
|
+
return (0, ts_utils_1.captureResult)(() => new Map(valid));
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -70,12 +70,12 @@ class PrefixKeyPolicy extends ReferenceMapKeyPolicy {
|
|
|
70
70
|
// istanbul ignore next
|
|
71
71
|
const makeValid = ((_a = (options !== null && options !== void 0 ? options : this._defaultOptions)) === null || _a === void 0 ? void 0 : _a.makeValid) === true;
|
|
72
72
|
if (this.isValid(key, item)) {
|
|
73
|
-
return ts_utils_1.succeed(key);
|
|
73
|
+
return (0, ts_utils_1.succeed)(key);
|
|
74
74
|
}
|
|
75
75
|
else if (makeValid && ReferenceMapKeyPolicy.defaultKeyPredicate(key)) {
|
|
76
|
-
return ts_utils_1.succeed(`${this.prefix}${key}`);
|
|
76
|
+
return (0, ts_utils_1.succeed)(`${this.prefix}${key}`);
|
|
77
77
|
}
|
|
78
|
-
return ts_utils_1.fail(`${key}: invalid key`);
|
|
78
|
+
return (0, ts_utils_1.fail)(`${key}: invalid key`);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
exports.PrefixKeyPolicy = PrefixKeyPolicy;
|
|
@@ -84,19 +84,19 @@ exports.PrefixKeyPolicy = PrefixKeyPolicy;
|
|
|
84
84
|
*/
|
|
85
85
|
class SimpleJsonMapBase {
|
|
86
86
|
constructor(values, context, keyPolicy) {
|
|
87
|
-
values = SimpleJsonMapBase._toMap(values).
|
|
87
|
+
values = SimpleJsonMapBase._toMap(values).orThrow();
|
|
88
88
|
this._keyPolicy = keyPolicy !== null && keyPolicy !== void 0 ? keyPolicy : new ReferenceMapKeyPolicy();
|
|
89
|
-
this._values = this._keyPolicy.validateMap(values).
|
|
89
|
+
this._values = this._keyPolicy.validateMap(values).orThrow();
|
|
90
90
|
this._context = context;
|
|
91
91
|
}
|
|
92
92
|
static _toMap(values) {
|
|
93
93
|
if (values === undefined) {
|
|
94
|
-
return ts_utils_1.captureResult(() => new Map());
|
|
94
|
+
return (0, ts_utils_1.captureResult)(() => new Map());
|
|
95
95
|
}
|
|
96
96
|
else if (!(values instanceof Map)) {
|
|
97
|
-
return ts_utils_1.recordToMap(values, (_k, v) => ts_utils_1.succeed(v));
|
|
97
|
+
return (0, ts_utils_1.recordToMap)(values, (_k, v) => (0, ts_utils_1.succeed)(v));
|
|
98
98
|
}
|
|
99
|
-
return ts_utils_1.succeed(values);
|
|
99
|
+
return (0, ts_utils_1.succeed)(values);
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
102
|
* Determine if a key might be valid for this map but does not determine if key actually
|
|
@@ -125,10 +125,10 @@ class SimpleJsonMapBase {
|
|
|
125
125
|
*/
|
|
126
126
|
getJsonObject(key, context) {
|
|
127
127
|
return this.getJsonValue(key, context).onSuccess((jv) => {
|
|
128
|
-
if (!common_1.isJsonObject(jv)) {
|
|
129
|
-
return ts_utils_1.failWithDetail(`${key}: not an object`, 'error');
|
|
128
|
+
if (!(0, common_1.isJsonObject)(jv)) {
|
|
129
|
+
return (0, ts_utils_1.failWithDetail)(`${key}: not an object`, 'error');
|
|
130
130
|
}
|
|
131
|
-
return ts_utils_1.succeedWithDetail(jv);
|
|
131
|
+
return (0, ts_utils_1.succeedWithDetail)(jv);
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
134
|
}
|
|
@@ -148,7 +148,7 @@ class SimpleJsonMap extends SimpleJsonMapBase {
|
|
|
148
148
|
* @param options Optional @see SimpleJsonMapOptions for initialization
|
|
149
149
|
*/
|
|
150
150
|
static createSimple(values, context, options) {
|
|
151
|
-
return ts_utils_1.captureResult(() => new SimpleJsonMap(values, context, options));
|
|
151
|
+
return (0, ts_utils_1.captureResult)(() => new SimpleJsonMap(values, context, options));
|
|
152
152
|
}
|
|
153
153
|
/**
|
|
154
154
|
* Gets a JSON value specified by key.
|
|
@@ -163,7 +163,7 @@ class SimpleJsonMap extends SimpleJsonMapBase {
|
|
|
163
163
|
context = context !== null && context !== void 0 ? context : this._context;
|
|
164
164
|
const value = this._values.get(key);
|
|
165
165
|
if (!value) {
|
|
166
|
-
return ts_utils_1.failWithDetail(`${key}: JSON value not found`, 'unknown');
|
|
166
|
+
return (0, ts_utils_1.failWithDetail)(`${key}: JSON value not found`, 'unknown');
|
|
167
167
|
}
|
|
168
168
|
return this._clone(value, context);
|
|
169
169
|
}
|
|
@@ -172,7 +172,7 @@ class SimpleJsonMap extends SimpleJsonMapBase {
|
|
|
172
172
|
const result = jsonEditor_1.JsonEditor.create();
|
|
173
173
|
// istanbul ignore next: nearly impossible to reproduce
|
|
174
174
|
if (result.isFailure()) {
|
|
175
|
-
return ts_utils_1.failWithDetail(result.message, 'error');
|
|
175
|
+
return (0, ts_utils_1.failWithDetail)(result.message, 'error');
|
|
176
176
|
}
|
|
177
177
|
this._editor = result.value;
|
|
178
178
|
}
|
|
@@ -189,7 +189,7 @@ class PrefixedJsonMap extends SimpleJsonMap {
|
|
|
189
189
|
super(values, context, options);
|
|
190
190
|
}
|
|
191
191
|
static createPrefixed(prefixOptions, values, context, editor) {
|
|
192
|
-
return ts_utils_1.captureResult(() => new PrefixedJsonMap(values, context, { keyPolicy: this._toPolicy(prefixOptions), editor }));
|
|
192
|
+
return (0, ts_utils_1.captureResult)(() => new PrefixedJsonMap(values, context, { keyPolicy: this._toPolicy(prefixOptions), editor }));
|
|
193
193
|
}
|
|
194
194
|
static _toPolicy(prefixOptions) {
|
|
195
195
|
if (typeof prefixOptions === 'string') {
|
|
@@ -212,7 +212,7 @@ class CompositeJsonMap {
|
|
|
212
212
|
* @param maps one or more object maps to be composed
|
|
213
213
|
*/
|
|
214
214
|
static create(maps) {
|
|
215
|
-
return ts_utils_1.captureResult(() => new CompositeJsonMap(maps));
|
|
215
|
+
return (0, ts_utils_1.captureResult)(() => new CompositeJsonMap(maps));
|
|
216
216
|
}
|
|
217
217
|
/**
|
|
218
218
|
* Determine if a key might be valid for this map but does not determine
|
|
@@ -241,10 +241,10 @@ class CompositeJsonMap {
|
|
|
241
241
|
*/
|
|
242
242
|
getJsonObject(key, context) {
|
|
243
243
|
return this.getJsonValue(key, context).onSuccess((jv) => {
|
|
244
|
-
if (!common_1.isJsonObject(jv)) {
|
|
245
|
-
return ts_utils_1.failWithDetail(`${key}: not an object`, 'error');
|
|
244
|
+
if (!(0, common_1.isJsonObject)(jv)) {
|
|
245
|
+
return (0, ts_utils_1.failWithDetail)(`${key}: not an object`, 'error');
|
|
246
246
|
}
|
|
247
|
-
return ts_utils_1.succeedWithDetail(jv);
|
|
247
|
+
return (0, ts_utils_1.succeedWithDetail)(jv);
|
|
248
248
|
});
|
|
249
249
|
}
|
|
250
250
|
/**
|
|
@@ -265,8 +265,8 @@ class CompositeJsonMap {
|
|
|
265
265
|
}
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
|
-
return ts_utils_1.failWithDetail(`${key}: value not found`, 'unknown');
|
|
268
|
+
return (0, ts_utils_1.failWithDetail)(`${key}: value not found`, 'unknown');
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
exports.CompositeJsonMap = CompositeJsonMap;
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0QsNkNBQTBDO0FBTTFDOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBSSxDQUFDLEdBQUcsR0FBRyxlQUFlLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQW9CLEVBQUUsT0FBOEM7UUFDckYsT0FB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QUMsQ0FBQztnQkFDOUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxFQUFFO29CQUNuRCxPQUFPLE1BQU0sQ0FBQztpQkFDakI7YUFDSjtTQUNKO1FBQ0QsT0FBTyx5QkFBYyxDQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zIHtcbiAgICBtYWtlVmFsaWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBvbGljeSBvYmplY3QgcmVzcG9uc2libGUgZm9yIHZhbGlkYXRpbmcgb3IgY29ycmVjdGluZ1xuICoga2V5cyBpbiBhIHJlZmVyZW5jZSBtYXBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzVmFsaWQ6IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucywgaXNWYWxpZD86IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZCA/PyBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChrZXkubGVuZ3RoID4gMCkgJiYgKCFrZXkuaW5jbHVkZXMoJ3t7JykpICYmICgha2V5LnN0YXJ0c1dpdGgoJz8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIGl0ZW0/OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkKGtleSwgaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKGtleTogc3RyaW5nLCBpdGVtPzogVCwgX29wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoa2V5LCBpdGVtKSA/IHN1Y2NlZWQoa2V5KSA6IGZhaWwoYCR7a2V5fTogaW52YWxpZCBrZXlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVJdGVtcyhpdGVtczogW3N0cmluZywgVF1bXSwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxbc3RyaW5nLCBUXVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoLi4uaXRlbSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKFt2YWxpZCwgaXRlbVsxXV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVNYXAobWFwOiBNYXA8c3RyaW5nLCBUPiwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zKEFycmF5LmZyb20obWFwLmVudHJpZXMoKSksIG9wdGlvbnMpLm9uU3VjY2VzcygodmFsaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXAodmFsaWQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlZml4S2V5UG9saWN5PFQ+IGV4dGVuZHMgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKGtleTogc3RyaW5nLCBfaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKHRoaXMucHJlZml4KSAmJiAoa2V5ICE9PSB0aGlzLnByZWZpeCkgJiYgUmVmZXJlbmNlTWFwS2V5UG9saWN5LmRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBtYWtlVmFsaWQgPSAob3B0aW9ucyA/PyB0aGlzLl9kZWZhdWx0T3B0aW9ucyk/Lm1ha2VWYWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ha2VWYWxpZCAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTWFwT3JSZWNvcmQ8VD4gPSBNYXA8c3RyaW5nLCBUPnxSZWNvcmQ8c3RyaW5nLCBUPjtcblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2ltcGxlSnNvbk1hcEJhc2U8VD4gaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2tleVBvbGljeTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfdmFsdWVzOiBNYXA8c3RyaW5nLCBUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4pIHtcbiAgICAgICAgdmFsdWVzID0gU2ltcGxlSnNvbk1hcEJhc2UuX3RvTWFwKHZhbHVlcykuZ2V0VmFsdWVPclRocm93KCk7XG4gICAgICAgIHRoaXMuX2tleVBvbGljeSA9IGtleVBvbGljeSA/PyBuZXcgUmVmZXJlbmNlTWFwS2V5UG9saWN5KCk7XG4gICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuX2tleVBvbGljeS52YWxpZGF0ZU1hcCh2YWx1ZXMpLmdldFZhbHVlT3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF90b01hcDxUPih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPik6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICBpZiAodmFsdWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXA8c3RyaW5nLCBUPigpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghKHZhbHVlcyBpbnN0YW5jZW9mIE1hcCkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWNvcmRUb01hcCh2YWx1ZXMsIChfaywgdikgPT4gc3VjY2VlZCh2KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodmFsdWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgYSBrZXkgbWlnaHQgYmUgdmFsaWQgZm9yIHRoaXMgbWFwIGJ1dCBkb2VzIG5vdCBkZXRlcm1pbmUgaWYga2V5IGFjdHVhbGx5XG4gICAgICogZXhpc3RzLiBBbGxvd3Mga2V5IHJhbmdlIHRvIGJlIGNvbnN0cmFpbmVkLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGtleSBpcyBpbiB0aGUgdmFsaWQgcmFuZ2UsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMga2V5SXNJblJhbmdlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9rZXlQb2xpY3kuaXNWYWxpZChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgYWN0dWFsbHkgZXhpc3RzIGluIHRoZSBtYXAuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBleGlzdHMsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZXMuaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gb2JqZWN0IHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSBvYmplY3RcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRKc29uT2JqZWN0KGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KS5vblN1Y2Nlc3MoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSnNvbk9iamVjdChqdikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogbm90IGFuIG9iamVjdGAsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPjtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXphdGlvbiBvcHRpb25zIGZvciBhIEBzZWUgU2ltcGxlSnNvbk1hcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZUpzb25NYXBPcHRpb25zIHtcbiAgICBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8SnNvblZhbHVlPixcbiAgICBlZGl0b3I/OiBKc29uRWRpdG9yLFxufVxuXG4vKipcbiAqIEEgU2ltcGxlSnNvbk1hcCBwcmVzZW50cyBhIHZpZXcgb2YgYSBzaW1wbGUgbWFwIG9mIEBzZWUgSnNvblZhbHVlXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW1wbGVKc29uTWFwIGV4dGVuZHMgU2ltcGxlSnNvbk1hcEJhc2U8SnNvblZhbHVlPiB7XG4gICAgcHJvdGVjdGVkIF9lZGl0b3I/OiBKc29uRWRpdG9yO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucz8ua2V5UG9saWN5KTtcbiAgICAgICAgdGhpcy5fZWRpdG9yID0gb3B0aW9ucz8uZWRpdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBTaW1wbGVKc29uTWFwIGZyb20gdGhlIHN1cHBsaWVkIG9iamVjdHNcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciBSZWNvcmQgb2YgdGhlIEBzZWUgSnNvbk9iamVjdCB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgQHNlZSBTaW1wbGVKc29uTWFwT3B0aW9ucyBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVNpbXBsZSh2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIG9wdGlvbnM/OiBTaW1wbGVKc29uTWFwT3B0aW9ucyk6IFJlc3VsdDxTaW1wbGVKc29uTWFwPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBTaW1wbGVKc29uTWFwKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIHZhbHVlIHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZVxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgcHVibGljIGdldEpzb25WYWx1ZShrZXk6IHN0cmluZywgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBjb250ZXh0ID0gY29udGV4dCA/PyB0aGlzLl9jb250ZXh0O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX3ZhbHVlcy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IEpTT04gdmFsdWUgbm90IGZvdW5kYCwgJ3Vua25vd24nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fY2xvbmUodmFsdWUsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY2xvbmUodmFsdWU6IEpzb25WYWx1ZSwgY29udGV4dD86IEpzb25Db250ZXh0KTogRGV0YWlsZWRSZXN1bHQ8SnNvblZhbHVlLCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICBpZiAoIXRoaXMuX2VkaXRvcikge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gSnNvbkVkaXRvci5jcmVhdGUoKTtcbiAgICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBuZWFybHkgaW1wb3NzaWJsZSB0byByZXByb2R1Y2VcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwocmVzdWx0Lm1lc3NhZ2UsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZWRpdG9yID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3IuY2xvbmUodmFsdWUsIGNvbnRleHQpLndpdGhGYWlsdXJlRGV0YWlsKCdlcnJvcicpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBJbml0aWFsaXphdGlvbiBvcHRpb25zIGZvciBhIFByZWZpeGVkSnNvbk1hcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVByZWZpeE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwcmVmaXggc2hvdWxkIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgYXMgbmVlZGVkIChkZWZhdWx0IHRydWUpXG4gICAgICovXG4gICAgYWRkUHJlZml4PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwcmVmaXggdG8gYmUgZW5mb3JjZWRcbiAgICAgKi9cbiAgICBwcmVmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIFByZWZpeGVkSnNvbk1hcCBlbmZvcmNlcyBhIHN1cHBsaWVkIHByZWZpeCBmb3IgYWxsIGNvbnRhaW5lZCB2YWx1ZXMsIG9wdGlvbmFsbHlcbiAqIGFkZGluZyB0aGUgcHJlZml4IGFzIG5lY2Vzc2FyeSAoZGVmYXVsdCB0cnVlKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByZWZpeGVkSnNvbk1hcCBleHRlbmRzIFNpbXBsZUpzb25NYXAge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIG9wdGlvbnM/OiBTaW1wbGVKc29uTWFwT3B0aW9ucykge1xuICAgICAgICBzdXBlcih2YWx1ZXMsIGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBQcmVmaXhlZEpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIHByZWZpeCBBIHN0cmluZyBwcmVmaXggdG8gYmUgZW5mb3JjZWQgZm9yIGFuZCBhZGRlZCB0byBrZXkgbmFtZXMgYXMgbmVjZXNzYXJ5XG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgUmVjb3JkIG9mIHRoZSBAc2VlIEpzb25WYWx1ZSB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIGVkaXRvciBPcHRpb25hbCBAc2VlIEpzb25FZGl0b3IgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXg6IHN0cmluZywgdmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBlZGl0b3I/OiBKc29uRWRpdG9yKTogUmVzdWx0PFByZWZpeGVkSnNvbk1hcD47XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgUHJlZml4ZWRKc29uTWFwIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBwcmVmaXhPcHRpb25zIEEgS2V5UHJlZml4T3B0aW9ucyBpbmRpY2F0aW5nIHRoZSBwcmVmaXggdG8gZW5mb3JjZSBhbmQgd2hldGhlciB0aGF0IHByZWZpeCBzaG91bGRcbiAgICAgKiBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5IGlmIG5lY2Vzc2FyeSAoZGVmYXVsdCB0cnVlKVxuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIHJlY29yZCBvZiB0aGUgQHNlZSBKc29uVmFsdWUgdG8gYmUgcmV0dXJuZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBPcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqIEBwYXJhbSBlZGl0b3IgT3B0aW9uYWwgQHNlZSBKc29uRWRpdG9yIHVzZWQgdG8gZm9ybWF0IHJldHVybmVkIHZhbHVlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUHJlZml4ZWQocHJlZml4T3B0aW9uczogS2V5UHJlZml4T3B0aW9ucywgdmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBlZGl0b3I/OiBKc29uRWRpdG9yKTogUmVzdWx0PFByZWZpeGVkSnNvbk1hcD47XG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXhPcHRpb25zOiBzdHJpbmd8S2V5UHJlZml4T3B0aW9ucywgdmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBlZGl0b3I/OiBKc29uRWRpdG9yKTogUmVzdWx0PFByZWZpeGVkSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgUHJlZml4ZWRKc29uTWFwKHZhbHVlcywgY29udGV4dCwgeyBrZXlQb2xpY3k6IHRoaXMuX3RvUG9saWN5KHByZWZpeE9wdGlvbnMpLCBlZGl0b3IgfSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3RvUG9saWN5KHByZWZpeE9wdGlvbnM6IHN0cmluZ3xLZXlQcmVmaXhPcHRpb25zKTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PEpzb25WYWx1ZT4ge1xuICAgICAgICBpZiAodHlwZW9mIHByZWZpeE9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByZWZpeEtleVBvbGljeShwcmVmaXhPcHRpb25zLCB7IG1ha2VWYWxpZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFByZWZpeEtleVBvbGljeShwcmVmaXhPcHRpb25zLnByZWZpeCwgeyBtYWtlVmFsaWQ6IChwcmVmaXhPcHRpb25zLmFkZFByZWZpeCAhPT0gZmFsc2UpIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBBIENvbXBvc2l0ZUpzb25NYXAgcHJlc2VudHMgYSBjb21wb3NlZCB2aWV3IG9mIG9uZSBvciBtb3JlIG90aGVyXG4gKiBKc29uUmVmZXJlbmNlTWFwcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZUpzb25NYXAgaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgX21hcHM6IEpzb25SZWZlcmVuY2VNYXBbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pIHtcbiAgICAgICAgdGhpcy5fbWFwcyA9IG1hcHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIENvbXBvc2l0ZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgbWFwc1xuICAgICAqIEBwYXJhbSBtYXBzIG9uZSBvciBtb3JlIG9iamVjdCBtYXBzIHRvIGJlIGNvbXBvc2VkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUobWFwczogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PENvbXBvc2l0ZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IENvbXBvc2l0ZUpzb25NYXAobWFwcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZVxuICAgICAqIGlmIGtleSBhY3R1YWxseSBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAua2V5SXNJblJhbmdlKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAuaGFzKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gb2JqZWN0IHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSBvYmplY3RcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRKc29uT2JqZWN0KGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KS5vblN1Y2Nlc3MoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSnNvbk9iamVjdChqdikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogbm90IGFuIG9iamVjdGAsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgbWFwIG9mIHRoaXMuX21hcHMpIHtcbiAgICAgICAgICAgIGlmIChtYXAua2V5SXNJblJhbmdlKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBtYXAuZ2V0SnNvblZhbHVlKGtleSwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IHZhbHVlIG5vdCBmb3VuZGAsICd1bmtub3duJyk7XG4gICAgfVxufVxuIl19
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvblJlZmVyZW5jZU1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uUmVmZXJlbmNlTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQVV1QjtBQUd2QixxQ0FBK0Q7QUFDL0QsNkNBQTBDO0FBTTFDOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBSTlCLFlBQW1CLE9BQThDLEVBQUUsT0FBNEM7UUFDM0csSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLGFBQVAsT0FBTyxjQUFQLE9BQU8sR0FBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQVc7UUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVE7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxJQUFRLEVBQUUsUUFBK0M7UUFDbEYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxrQkFBTyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGVBQUksRUFBQyxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFvQixFQUFFLE9BQThD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S0FBSyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxNQUFNLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgRGV0YWlsZWRSZXN1bHQsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBmYWlsV2l0aERldGFpbCxcbiAgICBtYXBSZXN1bHRzLFxuICAgIHJlY29yZFRvTWFwLFxuICAgIHN1Y2NlZWQsXG4gICAgc3VjY2VlZFdpdGhEZXRhaWwsXG59IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24gfSBmcm9tICcuL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvciB9IGZyb20gJy4vanNvbkVkaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zIHtcbiAgICBtYWtlVmFsaWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBvbGljeSBvYmplY3QgcmVzcG9uc2libGUgZm9yIHZhbGlkYXRpbmcgb3IgY29ycmVjdGluZ1xuICoga2V5cyBpbiBhIHJlZmVyZW5jZSBtYXBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZU1hcEtleVBvbGljeTxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWZhdWx0T3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lzVmFsaWQ6IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucywgaXNWYWxpZD86IChrZXk6IHN0cmluZywgaXRlbT86IFQpID0+IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gaXNWYWxpZCA/PyBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChrZXkubGVuZ3RoID4gMCkgJiYgKCFrZXkuaW5jbHVkZXMoJ3t7JykpICYmICgha2V5LnN0YXJ0c1dpdGgoJz8nKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVmFsaWQoa2V5OiBzdHJpbmcsIGl0ZW0/OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkKGtleSwgaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKGtleTogc3RyaW5nLCBpdGVtPzogVCwgX29wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpOiBSZXN1bHQ8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoa2V5LCBpdGVtKSA/IHN1Y2NlZWQoa2V5KSA6IGZhaWwoYCR7a2V5fTogaW52YWxpZCBrZXlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVJdGVtcyhpdGVtczogW3N0cmluZywgVF1bXSwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxbc3RyaW5nLCBUXVtdPiB7XG4gICAgICAgIHJldHVybiBtYXBSZXN1bHRzKGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoLi4uaXRlbSwgb3B0aW9ucykub25TdWNjZXNzKCh2YWxpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKFt2YWxpZCwgaXRlbVsxXV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVNYXAobWFwOiBNYXA8c3RyaW5nLCBUPiwgb3B0aW9ucz86IFJlZmVyZW5jZU1hcEtleVBvbGljeVZhbGlkYXRlT3B0aW9ucyk6IFJlc3VsdDxNYXA8c3RyaW5nLCBUPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUl0ZW1zKEFycmF5LmZyb20obWFwLmVudHJpZXMoKSksIG9wdGlvbnMpLm9uU3VjY2VzcygodmFsaWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBNYXAodmFsaWQpKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJlZml4S2V5UG9saWN5PFQ+IGV4dGVuZHMgUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJlZml4OiBzdHJpbmcsIG9wdGlvbnM/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3lWYWxpZGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1ZhbGlkKGtleTogc3RyaW5nLCBfaXRlbT86IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdGFydHNXaXRoKHRoaXMucHJlZml4KSAmJiAoa2V5ICE9PSB0aGlzLnByZWZpeCkgJiYgUmVmZXJlbmNlTWFwS2V5UG9saWN5LmRlZmF1bHRLZXlQcmVkaWNhdGUoa2V5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoa2V5OiBzdHJpbmcsIGl0ZW0/OiBULCBvcHRpb25zPzogUmVmZXJlbmNlTWFwS2V5UG9saWN5VmFsaWRhdGVPcHRpb25zKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBjb25zdCBtYWtlVmFsaWQgPSAob3B0aW9ucyA/PyB0aGlzLl9kZWZhdWx0T3B0aW9ucyk/Lm1ha2VWYWxpZCA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZChrZXksIGl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ha2VWYWxpZCAmJiBSZWZlcmVuY2VNYXBLZXlQb2xpY3kuZGVmYXVsdEtleVByZWRpY2F0ZShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChgJHt0aGlzLnByZWZpeH0ke2tleX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbChgJHtrZXl9OiBpbnZhbGlkIGtleWApO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTWFwT3JSZWNvcmQ8VD4gPSBNYXA8c3RyaW5nLCBUPnxSZWNvcmQ8c3RyaW5nLCBUPjtcblxuLyoqXG4gKiBBIFNpbXBsZUpzb25NYXAgcHJlc2VudHMgYSB2aWV3IG9mIGEgc2ltcGxlIG1hcCBvZiBAc2VlIEpzb25WYWx1ZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2ltcGxlSnNvbk1hcEJhc2U8VD4gaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2tleVBvbGljeTogUmVmZXJlbmNlTWFwS2V5UG9saWN5PFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfdmFsdWVzOiBNYXA8c3RyaW5nLCBUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcih2YWx1ZXM/OiBNYXBPclJlY29yZDxUPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBrZXlQb2xpY3k/OiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8VD4pIHtcbiAgICAgICAgdmFsdWVzID0gU2ltcGxlSnNvbk1hcEJhc2UuX3RvTWFwKHZhbHVlcykub3JUaHJvdygpO1xuICAgICAgICB0aGlzLl9rZXlQb2xpY3kgPSBrZXlQb2xpY3kgPz8gbmV3IFJlZmVyZW5jZU1hcEtleVBvbGljeSgpO1xuICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLl9rZXlQb2xpY3kudmFsaWRhdGVNYXAodmFsdWVzKS5vclRocm93KCk7XG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3RvTWFwPFQ+KHZhbHVlcz86IE1hcE9yUmVjb3JkPFQ+KTogUmVzdWx0PE1hcDxzdHJpbmcsIFQ+PiB7XG4gICAgICAgIGlmICh2YWx1ZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IE1hcDxzdHJpbmcsIFQ+KCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCEodmFsdWVzIGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlY29yZFRvTWFwKHZhbHVlcywgKF9rLCB2KSA9PiBzdWNjZWVkKHYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZCh2YWx1ZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZSBpZiBrZXkgYWN0dWFsbHlcbiAgICAgKiBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleVBvbGljeS5pc1ZhbGlkKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlcy5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+O1xufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgQHNlZSBTaW1wbGVKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxlSnNvbk1hcE9wdGlvbnMge1xuICAgIGtleVBvbGljeT86IFJlZmVyZW5jZU1hcEtleVBvbGljeTxKc29uVmFsdWU+LFxuICAgIGVkaXRvcj86IEpzb25FZGl0b3IsXG59XG5cbi8qKlxuICogQSBTaW1wbGVKc29uTWFwIHByZXNlbnRzIGEgdmlldyBvZiBhIHNpbXBsZSBtYXAgb2YgQHNlZSBKc29uVmFsdWVcbiAqL1xuZXhwb3J0IGNsYXNzIFNpbXBsZUpzb25NYXAgZXh0ZW5kcyBTaW1wbGVKc29uTWFwQmFzZTxKc29uVmFsdWU+IHtcbiAgICBwcm90ZWN0ZWQgX2VkaXRvcj86IEpzb25FZGl0b3I7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IodmFsdWVzPzogTWFwT3JSZWNvcmQ8SnNvblZhbHVlPiwgY29udGV4dD86IEpzb25Db250ZXh0LCBvcHRpb25zPzogU2ltcGxlSnNvbk1hcE9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zPy5rZXlQb2xpY3kpO1xuICAgICAgICB0aGlzLl9lZGl0b3IgPSBvcHRpb25zPy5lZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFNpbXBsZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgb2JqZWN0c1xuICAgICAqIEBwYXJhbSB2YWx1ZXMgQSBzdHJpbmcta2V5ZWQgTWFwIG9yIFJlY29yZCBvZiB0aGUgQHNlZSBKc29uT2JqZWN0IHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBAc2VlIFNpbXBsZUpzb25NYXBPcHRpb25zIGZvciBpbml0aWFsaXphdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlU2ltcGxlKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKTogUmVzdWx0PFNpbXBsZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFNpbXBsZUpzb25NYXAodmFsdWVzLCBjb250ZXh0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGNvbnRleHQgPSBjb250ZXh0ID8/IHRoaXMuX2NvbnRleHQ7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fdmFsdWVzLmdldChrZXkpO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogSlNPTiB2YWx1ZSBub3QgZm91bmRgLCAndW5rbm93bicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9uZSh2YWx1ZSwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbG9uZSh2YWx1ZTogSnNvblZhbHVlLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGlmICghdGhpcy5fZWRpdG9yKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBKc29uRWRpdG9yLmNyZWF0ZSgpO1xuICAgICAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHQ6IG5lYXJseSBpbXBvc3NpYmxlIHRvIHJlcHJvZHVjZVxuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChyZXN1bHQubWVzc2FnZSwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9lZGl0b3IgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvci5jbG9uZSh2YWx1ZSwgY29udGV4dCkud2l0aEZhaWx1cmVEZXRhaWwoJ2Vycm9yJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG9wdGlvbnMgZm9yIGEgUHJlZml4ZWRKc29uTWFwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UHJlZml4T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByZWZpeCBzaG91bGQgYmUgYWRkZWQgYXV0b21hdGljYWxseSBhcyBuZWVkZWQgKGRlZmF1bHQgdHJ1ZSlcbiAgICAgKi9cbiAgICBhZGRQcmVmaXg/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHByZWZpeCB0byBiZSBlbmZvcmNlZFxuICAgICAqL1xuICAgIHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgUHJlZml4ZWRKc29uTWFwIGVuZm9yY2VzIGEgc3VwcGxpZWQgcHJlZml4IGZvciBhbGwgY29udGFpbmVkIHZhbHVlcywgb3B0aW9uYWxseVxuICogYWRkaW5nIHRoZSBwcmVmaXggYXMgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpLlxuICovXG5leHBvcnQgY2xhc3MgUHJlZml4ZWRKc29uTWFwIGV4dGVuZHMgU2ltcGxlSnNvbk1hcCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlcz86IE1hcE9yUmVjb3JkPEpzb25WYWx1ZT4sIGNvbnRleHQ/OiBKc29uQ29udGV4dCwgb3B0aW9ucz86IFNpbXBsZUpzb25NYXBPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHZhbHVlcywgY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIFByZWZpeGVkSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gcHJlZml4IEEgc3RyaW5nIHByZWZpeCB0byBiZSBlbmZvcmNlZCBmb3IgYW5kIGFkZGVkIHRvIGtleSBuYW1lcyBhcyBuZWNlc3NhcnlcbiAgICAgKiBAcGFyYW0gdmFsdWVzIEEgc3RyaW5nLWtleWVkIE1hcCBvciBSZWNvcmQgb2YgdGhlIEBzZWUgSnNvblZhbHVlIHRvIGJlIHJldHVybmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gZWRpdG9yIE9wdGlvbmFsIEBzZWUgSnNvbkVkaXRvciB1c2VkIHRvIGZvcm1hdCByZXR1cm5lZCB2YWx1ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeDogc3RyaW5nLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgQHNlZSBQcmVmaXhlZEpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIHByZWZpeE9wdGlvbnMgQSBLZXlQcmVmaXhPcHRpb25zIGluZGljYXRpbmcgdGhlIHByZWZpeCB0byBlbmZvcmNlIGFuZCB3aGV0aGVyIHRoYXQgcHJlZml4IHNob3VsZFxuICAgICAqIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkgaWYgbmVjZXNzYXJ5IChkZWZhdWx0IHRydWUpXG4gICAgICogQHBhcmFtIHZhbHVlcyBBIHN0cmluZy1rZXllZCBNYXAgb3IgcmVjb3JkIG9mIHRoZSBAc2VlIEpzb25WYWx1ZSB0byBiZSByZXR1cm5lZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICogQHBhcmFtIGVkaXRvciBPcHRpb25hbCBAc2VlIEpzb25FZGl0b3IgdXNlZCB0byBmb3JtYXQgcmV0dXJuZWQgdmFsdWVzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVQcmVmaXhlZChwcmVmaXhPcHRpb25zOiBLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPjtcbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVByZWZpeGVkKHByZWZpeE9wdGlvbnM6IHN0cmluZ3xLZXlQcmVmaXhPcHRpb25zLCB2YWx1ZXM/OiBNYXBPclJlY29yZDxKc29uVmFsdWU+LCBjb250ZXh0PzogSnNvbkNvbnRleHQsIGVkaXRvcj86IEpzb25FZGl0b3IpOiBSZXN1bHQ8UHJlZml4ZWRKc29uTWFwPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBQcmVmaXhlZEpzb25NYXAodmFsdWVzLCBjb250ZXh0LCB7IGtleVBvbGljeTogdGhpcy5fdG9Qb2xpY3kocHJlZml4T3B0aW9ucyksIGVkaXRvciB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfdG9Qb2xpY3kocHJlZml4T3B0aW9uczogc3RyaW5nfEtleVByZWZpeE9wdGlvbnMpOiBSZWZlcmVuY2VNYXBLZXlQb2xpY3k8SnNvblZhbHVlPiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJlZml4T3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMsIHsgbWFrZVZhbGlkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUHJlZml4S2V5UG9saWN5KHByZWZpeE9wdGlvbnMucHJlZml4LCB7IG1ha2VWYWxpZDogKHByZWZpeE9wdGlvbnMuYWRkUHJlZml4ICE9PSBmYWxzZSkgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEEgQ29tcG9zaXRlSnNvbk1hcCBwcmVzZW50cyBhIGNvbXBvc2VkIHZpZXcgb2Ygb25lIG9yIG1vcmUgb3RoZXJcbiAqIEpzb25SZWZlcmVuY2VNYXBzLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9zaXRlSnNvbk1hcCBpbXBsZW1lbnRzIEpzb25SZWZlcmVuY2VNYXAge1xuICAgIHByb3RlY3RlZCBfbWFwczogSnNvblJlZmVyZW5jZU1hcFtdO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKG1hcHM6IEpzb25SZWZlcmVuY2VNYXBbXSkge1xuICAgICAgICB0aGlzLl9tYXBzID0gbWFwcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEBzZWUgQ29tcG9zaXRlSnNvbk1hcCBmcm9tIHRoZSBzdXBwbGllZCBtYXBzXG4gICAgICogQHBhcmFtIG1hcHMgb25lIG9yIG1vcmUgb2JqZWN0IG1hcHMgdG8gYmUgY29tcG9zZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pOiBSZXN1bHQ8Q29tcG9zaXRlSnNvbk1hcD4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29tcG9zaXRlSnNvbk1hcChtYXBzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIGEga2V5IG1pZ2h0IGJlIHZhbGlkIGZvciB0aGlzIG1hcCBidXQgZG9lcyBub3QgZGV0ZXJtaW5lXG4gICAgICogaWYga2V5IGFjdHVhbGx5IGV4aXN0cy4gQWxsb3dzIGtleSByYW5nZSB0byBiZSBjb25zdHJhaW5lZC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgaXMgaW4gdGhlIHZhbGlkIHJhbmdlLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGtleUlzSW5SYW5nZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGFjdHVhbGx5IGV4aXN0cyBpbiB0aGUgbWFwLlxuICAgICAqIEBwYXJhbSBrZXkga2V5IHRvIGJlIHRlc3RlZFxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYW4gb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBrZXkgZXhpc3RzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFwcy5maW5kKChtYXApID0+IG1hcC5oYXMoa2V5KSkgIT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiBvYmplY3Qgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IG9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIG9iamVjdFxuICAgICAqIEByZXR1cm5zIFN1Y2Nlc3Mgd2l0aCB0aGUgZm9ybWF0dGVkIG9iamVjdCBpZiBzdWNjZXNzZnVsLiBGYWlsdXJlIHdpdGggZGV0YWlsICd1bmtub3duJ1xuICAgICAqIGlmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgZmFpbHVyZSB3aXRoIGRldGFpbCAnZXJyb3InIGlmIHRoZSBvYmplY3Qgd2FzIGZvdW5kIGJ1dFxuICAgICAqIGNvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldEpzb25PYmplY3Qoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25PYmplY3QsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEpzb25WYWx1ZShrZXksIGNvbnRleHQpLm9uU3VjY2VzcygoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsV2l0aERldGFpbChgJHtrZXl9OiBub3QgYW4gb2JqZWN0YCwgJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZFdpdGhEZXRhaWwoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgSlNPTiB2YWx1ZSBzcGVjaWZpZWQgYnkga2V5LlxuICAgICAqIEBwYXJhbSBrZXkga2V5IG9mIHRoZSBvYmplY3QgdG8gYmUgcmV0cmlldmVkXG4gICAgICogQHBhcmFtIGNvbnRleHQgT3B0aW9uYWwgQHNlZSBKc29uQ29udGV4dCB1c2VkIHRvIGZvcm1hdCB0aGUgdmFsdWVcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgIHB1YmxpYyBnZXRKc29uVmFsdWUoa2V5OiBzdHJpbmcsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24+IHtcbiAgICAgICAgZm9yIChjb25zdCBtYXAgb2YgdGhpcy5fbWFwcykge1xuICAgICAgICAgICAgaWYgKG1hcC5rZXlJc0luUmFuZ2Uoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG1hcC5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpIHx8IChyZXN1bHQuZGV0YWlsID09PSAnZXJyb3InKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogdmFsdWUgbm90IGZvdW5kYCwgJ3Vua25vd24nKTtcbiAgICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fgv/ts-json",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.1",
|
|
4
4
|
"description": "Typescript utilities for working with JSON",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -24,25 +24,25 @@
|
|
|
24
24
|
"author": "Erik Fortune",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@fgv/ts-utils-jest": "^1.
|
|
28
|
-
"@types/jest": "^
|
|
27
|
+
"@fgv/ts-utils-jest": "^1.8.1",
|
|
28
|
+
"@types/jest": "^29.2.5",
|
|
29
29
|
"@types/mustache": "^4.1.0",
|
|
30
|
-
"@types/node": "^
|
|
31
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
32
|
-
"@typescript-eslint/parser": "^
|
|
33
|
-
"eslint": "^
|
|
34
|
-
"eslint-config-standard": "^
|
|
30
|
+
"@types/node": "^18.11.18",
|
|
31
|
+
"@typescript-eslint/eslint-plugin": "^5.48.0",
|
|
32
|
+
"@typescript-eslint/parser": "^5.48.0",
|
|
33
|
+
"eslint": "^8.31.0",
|
|
34
|
+
"eslint-config-standard": "^17.0.0",
|
|
35
35
|
"eslint-plugin-import": "^2.22.1",
|
|
36
36
|
"eslint-plugin-node": "^11.1.0",
|
|
37
|
-
"eslint-plugin-promise": "^
|
|
38
|
-
"jest": "^
|
|
39
|
-
"jest-extended": "^
|
|
37
|
+
"eslint-plugin-promise": "^6.1.1",
|
|
38
|
+
"jest": "^29.3.1",
|
|
39
|
+
"jest-extended": "^3.2.1",
|
|
40
40
|
"rimraf": "^3.0.2",
|
|
41
|
-
"ts-jest": "^
|
|
42
|
-
"ts-node": "^9.1
|
|
41
|
+
"ts-jest": "^29.0.3",
|
|
42
|
+
"ts-node": "^10.9.1",
|
|
43
43
|
"typescript": "^4.1.3"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@fgv/ts-utils": "^1.
|
|
46
|
+
"@fgv/ts-utils": "^1.8.1"
|
|
47
47
|
}
|
|
48
48
|
}
|