@sumaris-net/ngx-components 18.0.2 → 18.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -67,7 +67,9 @@ export class AppPropertiesUtils {
|
|
|
67
67
|
// Update the target value
|
|
68
68
|
target.value = propertyOrPromise.value;
|
|
69
69
|
}
|
|
70
|
+
return target;
|
|
70
71
|
})
|
|
72
|
+
// Clean orphan
|
|
71
73
|
.filter(isNotNil);
|
|
72
74
|
}
|
|
73
75
|
// Return as promise, when need
|
|
@@ -287,4 +289,4 @@ export class AppPropertyUtils {
|
|
|
287
289
|
return value?.toString();
|
|
288
290
|
}
|
|
289
291
|
}
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUksTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQVUsT0FBdUIsRUFBRSxXQUFtQyxFQUFFLElBQWtDO1FBQzVILE9BQU8sQ0FDTCxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDYixzQkFBc0I7YUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1lBQ0YscUJBQXFCO2FBQ3BCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFD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QUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDL0YsV0FBVztRQUNiLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBUTtZQUM1QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSztTQUM1QixDQUFDO1FBRUYsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBVztRQUNqQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eSwgUHJvcGVydHlNYXAgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIGlzUHJvbWlzZSwgdG9Cb29sZWFuLCB0b051bWJlciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zLCBTdWdnZXN0Rm4gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgQXBwUHJvcGVydGllc1V0aWxzIHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGBQcm9wZXJ0eWAgb2JqZWN0cyBpbnRvIGEgYFByb3BlcnRpZXNNYXBgIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtQcm9wZXJ0eVtdfSBbc291cmNlc10gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBwcm9wZXJ0aWVzIHRvIGJlIGNvbnZlcnRlZC5cbiAgICogQHBhcmFtIHtGb3JtRmllbGREZWZpbml0aW9uW119IFtkZWZpbml0aW9uc10gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBmb3JtIGZpZWxkIGRlZmluaXRpb25zIHRvIGhlbHAgd2l0aCB0aGUgY29udmVyc2lvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLm9taXROaWxPckJsYW5rXSAtIElmIHRydWUsIHByb3BlcnRpZXMgd2l0aCBuaWwgb3IgYmxhbmsgdmFsdWVzIHdpbGwgYmUgb21pdHRlZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogQHJldHVybiB7UHJvcGVydHlNYXB9IC0gVGhlIHJlc3VsdGluZyBgUHJvcGVydGllc01hcGAgb2JqZWN0LlxuICAgKi9cbiAgc3RhdGljIGFycmF5QXNPYmplY3Q8VCA9IGFueT4oc291cmNlcz86IFByb3BlcnR5PFQ+W10sIGRlZmluaXRpb25zPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdLCBvcHRzPzogeyBvbWl0TmlsT3JCbGFuazogYm9vbGVhbiB9KTogUHJvcGVydHlNYXAge1xuICAgIHJldHVybiAoXG4gICAgICAoc291cmNlcyB8fCBbXSlcbiAgICAgICAgLy8gU2VyaWFsaXplIGVhY2ggaXRlbVxuICAgICAgICAubWFwKChzb3VyY2UpID0+IHtcbiAgICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBrZXkgPSBBcHBQcm9wZXJ0eVV0aWxzLmdldFByb3BlcnR5S2V5KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKCFrZXkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnM/LmZpbmQoKGQpID0+IGQua2V5ID09PSBrZXkpO1xuICAgICAgICAgIHJldHVybiBBcHBQcm9wZXJ0eVV0aWxzLmFzT2JqZWN0KHNvdXJjZSwgZGVmKTtcbiAgICAgICAgfSlcbiAgICAgICAgLy8gRmlsbCBhIEpTT04gb2JqZWN0XG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKHJlcywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhpdGVtPy5rZXkpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgLy8gU2tpcCBpZiBuaWwgb3IgYmxhbmsgdmFsdWVcbiAgICAgICAgICAgIGlmIChvcHRzPy5vbWl0TmlsT3JCbGFuayAhPT0gZmFsc2UgJiYgaXNOaWxPckJsYW5rKGl0ZW0udmFsdWUpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgcmVzW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgPFByb3BlcnR5TWFwPnt9XG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGZyb20gdGhlIGdpdmVuIG9iamVjdCwgb3B0aW9uYWxseSBhcHBseWluZyBkZWZpbml0aW9ucyB0byB0aGUgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtQcm9wZXJ0eU1hcH0gW3NvdXJjZXNdIC0gVGhlIHNvdXJjZSBvYmplY3QgZnJvbSB3aGljaCBwcm9wZXJ0aWVzIGFyZSB0byBiZSBleHRyYWN0ZWQuXG4gICAqIEBwYXJhbSB7Rm9ybUZpZWxkRGVmaW5pdGlvbltdfSBbZGVmaW5pdGlvbnNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgZGVmaW5pdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZXh0cmFjdGVkIHByb3BlcnRpZXMuXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5W10gfCBQcm9taXNlPFByb3BlcnR5W10+fSBBbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGdlbmVyYXRlZCBmcm9tIHRoZSBzb3VyY2Ugb2JqZWN0LCBvciBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoYXQgYXJyYXkuXG4gICAqL1xuICBzdGF0aWMgYXJyYXlGcm9tT2JqZWN0PFQ+KFxuICAgIHNvdXJjZXM/OiBQcm9wZXJ0eU1hcCB8IFByb3BlcnR5PFQ+W10sXG4gICAgZGVmaW5pdGlvbnM/OiBGb3JtRmllbGREZWZpbml0aW9uW10sXG4gICAgb3B0cz86IHtcbiAgICAgIGtlZXBPcnBoYW4/OiBib29sZWFuOyAvLyB0cnVlIGJ5IGRlZmF1bHRcbiAgICB9XG4gICk6IFByb3BlcnR5PFQ+W10gfCBQcm9taXNlPFByb3BlcnR5PFQ+W10+IHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIENvbnZlcnQgcHJvcGVydHkgbWFwIGludG8gYXJyYXkgb2YgUHJvcGVydHkuLi5gKTtcblxuICAgIGxldCB0YXJnZXRzID0gQXJyYXkuaXNBcnJheShzb3VyY2VzKVxuICAgICAgPyBzb3VyY2VzLnNsaWNlKClcbiAgICAgIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlcyB8fCB7fSkubWFwKFxuICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICA8UHJvcGVydHk8YW55Pj57XG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgdmFsdWU6IHNvdXJjZXNba2V5XSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICBjb25zdCBqb2JzID0gW107XG5cbiAgICBpZiAoISFkZWZpbml0aW9ucykge1xuICAgICAgdGFyZ2V0cyA9IHRhcmdldHNcbiAgICAgICAgLm1hcCgodGFyZ2V0OiBQcm9wZXJ0eTxhbnk+KSA9PiB7XG4gICAgICAgICAgLy8gRmluZCBkZWZpbml0aW9uXG4gICAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnMuZmluZCgoZGVmKSA9PiBkZWYua2V5ID09PSB0YXJnZXQua2V5KTtcblxuICAgICAgICAgIC8vIEV4Y2x1ZGUgbm8gZGVmaW5pdGlvbiAoaWYgZXhwZWN0ZWQgYnkgdXNlciBvcHRpb25zKVxuICAgICAgICAgIGlmICghZGVmICYmIG9wdHM/LmtlZXBPcnBoYW4gPT09IGZhbHNlKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgIC8vIERlc2VyaWFsaXplIGZyb20gc3RyaW5nXG4gICAgICAgICAgbGV0IHByb3BlcnR5T3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5mcm9tT2JqZWN0KHRhcmdldCwgZGVmKTtcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKHByb3BlcnR5T3JQcm9taXNlKSkge1xuICAgICAgICAgICAgam9icy5wdXNoKHByb3BlcnR5T3JQcm9taXNlLnRoZW4oKHByb3BlcnR5KSA9PiAodGFyZ2V0LnZhbHVlID0gcHJvcGVydHkudmFsdWUpKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGFyZ2V0IHZhbHVlXG4gICAgICAgICAgICB0YXJnZXQudmFsdWUgPSBwcm9wZXJ0eU9yUHJvbWlzZS52YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhcyBwcm9taXNlLCB3aGVuIG5lZWRcbiAgICBpZiAoam9icy5sZW5ndGgpIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKCgpID0+IHRhcmdldHMgYXMgUHJvcGVydHk8VD5bXSk7XG5cbiAgICByZXR1cm4gdGFyZ2V0cyBhcyBQcm9wZXJ0eTxUPltdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBQcm9wZXJ0eVV0aWxzIHtcbiAgc3RhdGljIGtleShrZXk6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGtleT8ua2V5ID8/IGtleTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQcm9wZXJ0eUtleShzb3VyY2U6IFByb3BlcnR5IHwgYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKHNvdXJjZS5rZXkgYXMgYW55KT8ua2V5ID8/IHNvdXJjZS5rZXk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGdpdmVuIHNvdXJjZSB0byBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIGtleS12YWx1ZSBwYWlyLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5PGFueT4gfCBhbnl9IHNvdXJjZSAtIFRoZSBzb3VyY2UgcHJvcGVydHkgb3IgYW55IHZhbHVlIHRvIGJlIGNvbnZlcnRlZC5cbiAgICogQHBhcmFtIHtGb3JtRmllbGREZWZpbml0aW9ufSBbZGVmXSAtIFRoZSBmb3JtIGZpZWxkIGRlZmluaXRpb24gdXNlZCBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3Igc2VyaWFsaXphdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRzLmRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU9J2lkJ10gLSBUaGUgYXR0cmlidXRlIHRvIGJlIHVzZWQgZm9yIGRlZmF1bHQgc2VyaWFsaXphdGlvbi5cbiAgICogQHJldHVybiB7eyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgdW5kZWZpbmVkfSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCBrZXktdmFsdWUgcGFpciwgb3IgdW5kZWZpbmVkIGlmIHRoZSBzb3VyY2UgaXMgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgc3RhdGljIGFzT2JqZWN0KFxuICAgIHNvdXJjZTogUHJvcGVydHk8YW55PiB8IGFueSxcbiAgICBkZWY/OiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlPzogc3RyaW5nO1xuICAgIH1cbiAgKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAvLyBTZXJpYWxpemUga2V5IChXQVJOSU5HOiBjYW4gYmUgYW4gb2JqZWN0LCB3aGVuIHVzaW5nIGF1dG9jb21wbGV0ZSBmaWVsZCB0byBlZGl0IGEga2V5IC0gc2VlIEFwcFByb3BlcnRpZXNGb3JtKVxuICAgIGNvbnN0IGtleSA9IEFwcFByb3BlcnR5VXRpbHMuZ2V0UHJvcGVydHlLZXkoc291cmNlKTtcblxuICAgIC8vIFByZXBhcmUgYSBkZXNlcmlhbGl6ZSBmdW5jdGlvblxuICAgIGxldCBzZXJpYWxpemVGbiA9IGRlZj8uc2VyaWFsaXplO1xuICAgIGlmICghc2VyaWFsaXplRm4pIHtcbiAgICAgIHN3aXRjaCAoZGVmPy50eXBlIHx8ICdvdGhlcicpIHtcbiAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgIGNhc2UgJ2VudW1zJzpcbiAgICAgICAgICBzZXJpYWxpemVGbiA9IEFwcFByb3BlcnR5VXRpbHMua2V5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdlbnRpdHknOlxuICAgICAgICBjYXNlICdlbnRpdGllcyc6XG4gICAgICAgICAgY29uc3Qgc2VyaWFsaXplQXR0cmlidXRlID0gZGVmPy5zZXJpYWxpemVBdHRyaWJ1dGUgPz8gb3B0cz8uZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyAnaWQnO1xuICAgICAgICAgIHNlcmlhbGl6ZUZuID1cbiAgICAgICAgICAgIGRlZj8uc2VyaWFsaXplIHx8XG4gICAgICAgICAgICAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZVZhbHVlID0gZ2V0UHJvcGVydHlCeVBhdGgodmFsdWUsIHNlcmlhbGl6ZUF0dHJpYnV0ZSwgdmFsdWUgLypkZWZhdWx0IHZhbHVlKi8pO1xuICAgICAgICAgICAgICBpZiAoaXNOaWwoc2VyaWFsaXplVmFsdWUpKSByZXR1cm4gc2VyaWFsaXplVmFsdWU7XG4gICAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVWYWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgc2VyaWFsaXplRm4gPSBBcHBQcm9wZXJ0eVV0aWxzLnRvU3RyaW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nO1xuXG4gICAgLy8gVmFsdWUgaXMgYW4gYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UudmFsdWUpKSB7XG4gICAgICB2YWx1ZVN0ciA9IHNvdXJjZS52YWx1ZS5tYXAoc2VyaWFsaXplRm4pLmZpbHRlcihpc05vdE5pbE9yQmxhbmspLmpvaW4oJywnKTtcbiAgICB9XG4gICAgLy8gQW55IG90aGVyIGNhc2VcbiAgICBlbHNlIHtcbiAgICAgIHZhbHVlU3RyID0gc2VyaWFsaXplRm4oc291cmNlLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogdmFsdWVTdHIgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT2JqZWN0PFQgPSBzdHJpbmc+KFxuICAgIHNvdXJjZTogUHJvcGVydHkgfCBQcm9wZXJ0eTxUPixcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBQcm9wZXJ0eTxUPiB8IFByb21pc2U8UHJvcGVydHk8VD4+IHtcbiAgICBpZiAoIXNvdXJjZT8ua2V5IHx8IGlzTmlsKHNvdXJjZS52YWx1ZSkgfHwgIWRlZikgcmV0dXJuIHNvdXJjZSBhcyBQcm9wZXJ0eTxUPjsgLy8gU2tpcCBpZiBubyBrZXlcblxuICAgIC8vIENsb25lIHRoZSBzb3VyY2VcbiAgICBjb25zdCB0YXJnZXQ6IFByb3BlcnR5PGFueT4gPSB7IGtleTogc291cmNlLmtleSwgdmFsdWU6IHNvdXJjZS52YWx1ZSB9O1xuXG4gICAgY29uc3Qgam9iczogUHJvbWlzZTxhbnk+W10gPSBbXTtcbiAgICAvLyBSZXNvbHZlIHZhbHVlXG4gICAgc3dpdGNoIChkZWYudHlwZSkge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IHRvQm9vbGVhbihzb3VyY2UudmFsdWUgYXMgYW55LCB0b0Jvb2xlYW4oZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnZG91YmxlJzpcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdG9OdW1iZXIoc291cmNlLnZhbHVlIGFzIGFueSwgdG9OdW1iZXIoZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudW0nOlxuICAgICAgICBjb25zdCB2YWx1ZUtleSA9IEFwcFByb3BlcnR5VXRpbHMua2V5KHRhcmdldC52YWx1ZSk7XG4gICAgICAgIGlmIChpc05vdE5pbE9yQmxhbmsodmFsdWVLZXkpKSB7XG4gICAgICAgICAgY29uc3QgZW51bVZhbHVlID0gKGRlZi52YWx1ZXMgYXMgKHN0cmluZyB8IFByb3BlcnR5KVtdKT8uZmluZCgoZGVmVmFsdWUpID0+IGRlZlZhbHVlICYmIHZhbHVlS2V5ID09PSAoZGVmVmFsdWVbJ2tleSddIHx8IGRlZlZhbHVlKSkgPz8gbnVsbDtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSBlbnVtVmFsdWU/Llsna2V5J10gPz8gZW51bVZhbHVlID8/IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudW1zJzpcbiAgICAgICAgY29uc3QgdmFsdWVLZXlzID0gQXJyYXkuaXNBcnJheShzb3VyY2UudmFsdWUpXG4gICAgICAgICAgPyBzb3VyY2UudmFsdWUubWFwKEFwcFByb3BlcnR5VXRpbHMua2V5KSAvLyBDb3B5XG4gICAgICAgICAgOiB0eXBlb2Ygc291cmNlLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBzb3VyY2UudmFsdWUudHJpbSgpLnNwbGl0KC8sKy8pXG4gICAgICAgICAgICA6IFtBcHBQcm9wZXJ0eVV0aWxzLmtleShzb3VyY2UudmFsdWUpXTtcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWVLZXlzXG4gICAgICAgICAgLmZpbHRlcihpc05vdE5pbClcbiAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgKGtleTogc3RyaW5nKSA9PlxuICAgICAgICAgICAgICAoZGVmLnZhbHVlcyBhcyAoc3RyaW5nIHwgUHJvcGVydHkpW10pPy5maW5kKChkZWZWYWx1ZSkgPT4gZGVmVmFsdWUgJiYga2V5ID09PSAoZGVmVmFsdWVbJ2tleSddIHx8IGRlZlZhbHVlKSkgfHwgeyBrZXksIHZhbHVlOiAnPycgfVxuICAgICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXR5JzpcbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZW50aXR5IChlLmcuIGxvYWQgZW50aXR5IGZyb20gdGhlIGlkKVxuICAgICAgICBjb25zdCB2YWx1ZU9yUHJvbWlzZSA9IEFwcFByb3BlcnR5VXRpbHMucmVzb2x2ZUVudGl0eSh0YXJnZXQudmFsdWUsIGRlZiwgb3B0cyk7XG4gICAgICAgIGlmIChpc1Byb21pc2UodmFsdWVPclByb21pc2UpKSB7XG4gICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgdmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXRpZXMnOlxuICAgICAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGFycmF5XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKVxuICAgICAgICAgID8gc291cmNlLnZhbHVlLnNsaWNlKCkgLy8gQ29weVxuICAgICAgICAgIDogdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gc291cmNlLnZhbHVlXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKCh2KSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsT3JCbGFuaylcbiAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZWFjaCBzdWItdmFsdWVcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgc3ViVmFsdWUgb2YgdGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgICAgLy8gRGVzZXJpYWxpemUgc3ViLXZhbHVlXG4gICAgICAgICAgY29uc3Qgc3ViVmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnJlc29sdmVFbnRpdHkoc3ViVmFsdWUsIGRlZiwgb3B0cyk7XG5cbiAgICAgICAgICAvLyBBZGQgcHJvbWlzZSB0byBqb2JzXG4gICAgICAgICAgaWYgKGlzUHJvbWlzZShzdWJWYWx1ZU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIGpvYnMucHVzaChcbiAgICAgICAgICAgICAgc3ViVmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgc3ViIHZhbHVlXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlW2ZpbmFsSW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgc3ViIHZhbHVlXG4gICAgICAgICAgICB0YXJnZXQudmFsdWVbaW5kZXhdID0gc3ViVmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpbmRleCsrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gLyFcXCBSZXR1cm4gYXMgcHJvbWlzZSBvbmx5IGlmIG5lZWQgKGxldCBmdW5jdGlvbiBzeW5jIHdoZW4gcG9zc2libGUpXG4gICAgaWYgKGpvYnMubGVuZ3RoKSByZXR1cm4gUHJvbWlzZS5hbGwoam9icykudGhlbigoKSA9PiB0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlc29sdmVFbnRpdHkoXG4gICAgdmFsdWU6IGFueSxcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiBhbnkgfCBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBkZXNlcmlhbGl6ZSBmdW5jdGlvbiwgaWYgYW55XG4gICAgaWYgKGRlZi5kZXNlcmlhbGl6ZSkge1xuICAgICAgcmV0dXJuIGRlZi5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gT3IgdHJ5IHVzaW5nIHN1Z2dlc3QgZnVuY3Rpb25cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlRW50aXR5QnlTdWdnZXN0KHZhbHVlLCBkZWYsIG9wdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgcmVzb2x2ZUVudGl0eUJ5U3VnZ2VzdChcbiAgICB2YWx1ZTogYW55LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzoge1xuICAgICAgZGVmYXVsdFN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PjtcbiAgICAgIGRlZmF1bHRTdWdnZXN0T3B0aW9ucz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zO1xuICAgICAgZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgICB9XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc2VyaWFsaXplQXR0cmlidXRlID0gZGVmLnNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyBvcHRzPy5kZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlID8/ICdpZCc7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgaXNOb3ROaWwodmFsdWVbc2VyaWFsaXplQXR0cmlidXRlXSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTsgLy8gQWxyZWFkeSByZXNvbHZlXG4gICAgfVxuXG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+ID0gZGVmLmF1dG9jb21wbGV0ZT8uc3VnZ2VzdEZuIHx8IG9wdHM/LmRlZmF1bHRTdWdnZXN0Rm47XG4gICAgaWYgKCFzdWdnZXN0Rm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgJ2Rlc2VyaWFsaXplJyBvciAnYXV0b2NvbXBsZXRlLnN1Z2dlc3RGbicgaW4gdGhlIGZpZWxkIGRlZmluaXRpb24gJyR7ZGVmLmtleX0nLiBDYW5ub3QgZGVzZXJpYWxpemUgdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdmFsdWU7IC8vIFNraXBcbiAgICB9XG4gICAgbGV0IHNlYXJjaFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgZmlsdGVyID0geyAuLi5kZWYuYXV0b2NvbXBsZXRlPy5maWx0ZXIgfTsgLy8gQ29wZSBmaWx0ZXJcbiAgICBpZiAoc2VyaWFsaXplQXR0cmlidXRlID09PSAnaWQnIHx8IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9PT0gJ2xhYmVsJykge1xuICAgICAgZmlsdGVyW3NlcmlhbGl6ZUF0dHJpYnV0ZV0gPSBzZXJpYWxpemVBdHRyaWJ1dGUgPT09ICdpZCcgPyArdmFsdWUgOiB2YWx1ZTtcbiAgICAgIHNlYXJjaFZhbHVlID0gJyonO1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIFJlc29sdmluZyBlbnRpdHkgd2hlcmUgaWQ9JHt2YWx1ZX0uLi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyLnNlYXJjaEF0dHJpYnV0ZSA9IHNlcmlhbGl6ZUF0dHJpYnV0ZTtcbiAgICAgIC8vIERFQlVHXG4gICAgICAvL2NvbnNvbGUuZGVidWcoYFtwcm9wZXJ0aWVzLXV0aWxzXSBSZXNvbHZpbmcgZW50aXR5IHdoZXJlICR7c2VyaWFsaXplQXR0cmlidXRlfT0ke3NlYXJjaFZhbHVlfS4uLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBGZXRjaCBlbnRpdHksIHVzaW5nIHRoZSBzdWdnZXN0IGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBzdWdnZXN0Rm4oc2VhcmNoVmFsdWUsIGZpbHRlciwgc2VyaWFsaXplQXR0cmlidXRlLCAnYXNjJywge1xuICAgICAgICB3aXRoVG90YWw6IGZhbHNlLFxuICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgIHNpemU6IDEsXG4gICAgICAgIC4uLm9wdHM/LmRlZmF1bHRTdWdnZXN0T3B0aW9ucyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgcmVzdWx0IGFycmF5XG4gICAgICBjb25zdCBkYXRhID0gQXJyYXkuaXNBcnJheShyZXMpID8gcmVzIDogcmVzLmRhdGE7XG5cbiAgICAgIGlmIChkYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtwcm9wZXJ0aWVzLXV0aWxzXSBNb3JlIHRoYW4gb25lIGVudGl0eSBmb3VuZCwgZm9yIG9wdGlvbiAke2RlZi5rZXl9PSR7dmFsdWV9ISBQbGVhc2UgY2hlY2sgb3B0aW9uJ3MgZGVmaW5pdGlvbiBhbmQgdGhlICdhdXRvY29tcGxldGUuc3VnZ2VzdEZuJyBmdW5jdGlvbmAsXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERFQlVHXG4gICAgICAgIC8vY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdICR7ZGF0YS5sZW5ndGh9IGVudGl0aWVzIGZvdW5kOiBgLCBkYXRhKTtcblxuICAgICAgICAvLyBPaywgd2UgZmluZCBpdCA9PiBzdG9wIGhlcmVcbiAgICAgICAgcmV0dXJuIGRhdGFbMF07XG4gICAgICB9XG5cbiAgICAgIC8vIFdhcm4sIGJ1dCBjb250aW51ZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW3Byb3BlcnRpZXMtdXRpbHNdIFVuYWJsZSB0byByZXNvbHZlIGVudGl0eSBmb3Igb3B0aW9uOiAke2RlZi5rZXl9PSR7dmFsdWV9LiBQbGVhc2UgY2hlY2sgb3B0aW9uJ3MgZGVmaW5pdGlvbiBhbmQgdGhlICdhdXRvY29tcGxldGUuc3VnZ2VzdEZuJyBmdW5jdGlvbmBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbcHJvcGVydGllcy11dGlsc10gQ2Fubm90IHJlc29sdmUgZW50aXR5IGZvciBvcHRpb246ICR7ZGVmLmtleX09JHt2YWx1ZX1gLCBlcnIpO1xuICAgICAgLy8gQ29udGludWVcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG1pc3NpbmcgcmVzdWx0XG4gICAgY29uc3QgdW5yZXNvbHZlZEVudGl0eSA9IDxhbnk+e1xuICAgICAgW3NlcmlhbGl6ZUF0dHJpYnV0ZV06IHZhbHVlLFxuICAgIH07XG5cbiAgICAvLyBGaWxsIGF0dHJpYnV0ZXMgd2l0aCAnPz8nXG4gICAgZGVmLmF1dG9jb21wbGV0ZT8uYXR0cmlidXRlcz8uZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICB1bnJlc29sdmVkRW50aXR5W2tleV0gPSB1bnJlc29sdmVkRW50aXR5W2tleV0gPz8gJyc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdW5yZXNvbHZlZEVudGl0eTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHRvU3RyaW5nKHZhbHVlPzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWU/LnRvU3RyaW5nKCk7XG4gIH1cbn1cbiJdfQ==
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUksTUFBTSxPQUFPLGtCQUFrQjtJQUM3Qjs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQVUsT0FBdUIsRUFBRSxXQUFtQyxFQUFFLElBQWtDO1FBQzVILE9BQU8sQ0FDTCxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDYixzQkFBc0I7YUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLFNBQVMsQ0FBQztZQUM5QixNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO1lBQ0YscUJBQXFCO2FBQ3BCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFD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d0RBQXdELEdBQUcsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDL0YsV0FBVztRQUNiLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBUTtZQUM1QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSztTQUM1QixDQUFDO1FBRUYsNEJBQTRCO1FBQzVCLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBVztRQUNqQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9wZXJ0eSwgUHJvcGVydHlNYXAgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlCeVBhdGgsIGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90TmlsLCBpc05vdE5pbE9yQmxhbmssIGlzUHJvbWlzZSwgdG9Cb29sZWFuLCB0b051bWJlciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zLCBTdWdnZXN0Rm4gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgQXBwUHJvcGVydGllc1V0aWxzIHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGBQcm9wZXJ0eWAgb2JqZWN0cyBpbnRvIGEgYFByb3BlcnRpZXNNYXBgIG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtQcm9wZXJ0eVtdfSBbc291cmNlc10gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBwcm9wZXJ0aWVzIHRvIGJlIGNvbnZlcnRlZC5cbiAgICogQHBhcmFtIHtGb3JtRmllbGREZWZpbml0aW9uW119IFtkZWZpbml0aW9uc10gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBmb3JtIGZpZWxkIGRlZmluaXRpb25zIHRvIGhlbHAgd2l0aCB0aGUgY29udmVyc2lvbi5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLm9taXROaWxPckJsYW5rXSAtIElmIHRydWUsIHByb3BlcnRpZXMgd2l0aCBuaWwgb3IgYmxhbmsgdmFsdWVzIHdpbGwgYmUgb21pdHRlZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogQHJldHVybiB7UHJvcGVydHlNYXB9IC0gVGhlIHJlc3VsdGluZyBgUHJvcGVydGllc01hcGAgb2JqZWN0LlxuICAgKi9cbiAgc3RhdGljIGFycmF5QXNPYmplY3Q8VCA9IGFueT4oc291cmNlcz86IFByb3BlcnR5PFQ+W10sIGRlZmluaXRpb25zPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdLCBvcHRzPzogeyBvbWl0TmlsT3JCbGFuazogYm9vbGVhbiB9KTogUHJvcGVydHlNYXAge1xuICAgIHJldHVybiAoXG4gICAgICAoc291cmNlcyB8fCBbXSlcbiAgICAgICAgLy8gU2VyaWFsaXplIGVhY2ggaXRlbVxuICAgICAgICAubWFwKChzb3VyY2UpID0+IHtcbiAgICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBrZXkgPSBBcHBQcm9wZXJ0eVV0aWxzLmdldFByb3BlcnR5S2V5KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKCFrZXkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnM/LmZpbmQoKGQpID0+IGQua2V5ID09PSBrZXkpO1xuICAgICAgICAgIHJldHVybiBBcHBQcm9wZXJ0eVV0aWxzLmFzT2JqZWN0KHNvdXJjZSwgZGVmKTtcbiAgICAgICAgfSlcbiAgICAgICAgLy8gRmlsbCBhIEpTT04gb2JqZWN0XG4gICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgKHJlcywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhpdGVtPy5rZXkpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgLy8gU2tpcCBpZiBuaWwgb3IgYmxhbmsgdmFsdWVcbiAgICAgICAgICAgIGlmIChvcHRzPy5vbWl0TmlsT3JCbGFuayAhPT0gZmFsc2UgJiYgaXNOaWxPckJsYW5rKGl0ZW0udmFsdWUpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgcmVzW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgPFByb3BlcnR5TWFwPnt9XG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGZyb20gdGhlIGdpdmVuIG9iamVjdCwgb3B0aW9uYWxseSBhcHBseWluZyBkZWZpbml0aW9ucyB0byB0aGUgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtQcm9wZXJ0eU1hcH0gW3NvdXJjZXNdIC0gVGhlIHNvdXJjZSBvYmplY3QgZnJvbSB3aGljaCBwcm9wZXJ0aWVzIGFyZSB0byBiZSBleHRyYWN0ZWQuXG4gICAqIEBwYXJhbSB7Rm9ybUZpZWxkRGVmaW5pdGlvbltdfSBbZGVmaW5pdGlvbnNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgZGVmaW5pdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZXh0cmFjdGVkIHByb3BlcnRpZXMuXG4gICAqIEBwYXJhbSBvcHRzXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5W10gfCBQcm9taXNlPFByb3BlcnR5W10+fSBBbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGdlbmVyYXRlZCBmcm9tIHRoZSBzb3VyY2Ugb2JqZWN0LCBvciBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoYXQgYXJyYXkuXG4gICAqL1xuICBzdGF0aWMgYXJyYXlGcm9tT2JqZWN0PFQ+KFxuICAgIHNvdXJjZXM/OiBQcm9wZXJ0eU1hcCB8IFByb3BlcnR5PFQ+W10sXG4gICAgZGVmaW5pdGlvbnM/OiBGb3JtRmllbGREZWZpbml0aW9uW10sXG4gICAgb3B0cz86IHtcbiAgICAgIGtlZXBPcnBoYW4/OiBib29sZWFuOyAvLyB0cnVlIGJ5IGRlZmF1bHRcbiAgICB9XG4gICk6IFByb3BlcnR5PFQ+W10gfCBQcm9taXNlPFByb3BlcnR5PFQ+W10+IHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIENvbnZlcnQgcHJvcGVydHkgbWFwIGludG8gYXJyYXkgb2YgUHJvcGVydHkuLi5gKTtcblxuICAgIGxldCB0YXJnZXRzID0gQXJyYXkuaXNBcnJheShzb3VyY2VzKVxuICAgICAgPyBzb3VyY2VzLnNsaWNlKClcbiAgICAgIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlcyB8fCB7fSkubWFwKFxuICAgICAgICAgIChrZXkpID0+XG4gICAgICAgICAgICA8UHJvcGVydHk8YW55Pj57XG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgdmFsdWU6IHNvdXJjZXNba2V5XSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICBjb25zdCBqb2JzID0gW107XG5cbiAgICBpZiAoISFkZWZpbml0aW9ucykge1xuICAgICAgdGFyZ2V0cyA9IHRhcmdldHNcbiAgICAgICAgLm1hcCgodGFyZ2V0OiBQcm9wZXJ0eTxhbnk+KSA9PiB7XG4gICAgICAgICAgLy8gRmluZCBkZWZpbml0aW9uXG4gICAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnMuZmluZCgoZGVmKSA9PiBkZWYua2V5ID09PSB0YXJnZXQua2V5KTtcblxuICAgICAgICAgIC8vIEV4Y2x1ZGUgbm8gZGVmaW5pdGlvbiAoaWYgZXhwZWN0ZWQgYnkgdXNlciBvcHRpb25zKVxuICAgICAgICAgIGlmICghZGVmICYmIG9wdHM/LmtlZXBPcnBoYW4gPT09IGZhbHNlKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgIC8vIERlc2VyaWFsaXplIGZyb20gc3RyaW5nXG4gICAgICAgICAgbGV0IHByb3BlcnR5T3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5mcm9tT2JqZWN0KHRhcmdldCwgZGVmKTtcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKHByb3BlcnR5T3JQcm9taXNlKSkge1xuICAgICAgICAgICAgam9icy5wdXNoKHByb3BlcnR5T3JQcm9taXNlLnRoZW4oKHByb3BlcnR5KSA9PiAodGFyZ2V0LnZhbHVlID0gcHJvcGVydHkudmFsdWUpKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGFyZ2V0IHZhbHVlXG4gICAgICAgICAgICB0YXJnZXQudmFsdWUgPSBwcm9wZXJ0eU9yUHJvbWlzZS52YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9KVxuICAgICAgICAvLyBDbGVhbiBvcnBoYW5cbiAgICAgICAgLmZpbHRlcihpc05vdE5pbCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFzIHByb21pc2UsIHdoZW4gbmVlZFxuICAgIGlmIChqb2JzLmxlbmd0aCkgcmV0dXJuIFByb21pc2UuYWxsKGpvYnMpLnRoZW4oKCkgPT4gdGFyZ2V0cyBhcyBQcm9wZXJ0eTxUPltdKTtcblxuICAgIHJldHVybiB0YXJnZXRzIGFzIFByb3BlcnR5PFQ+W107XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnR5VXRpbHMge1xuICBzdGF0aWMga2V5KGtleTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4ga2V5Py5rZXkgPz8ga2V5O1xuICB9XG5cbiAgc3RhdGljIGdldFByb3BlcnR5S2V5KHNvdXJjZTogUHJvcGVydHkgfCBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiAoc291cmNlLmtleSBhcyBhbnkpPy5rZXkgPz8gc291cmNlLmtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgZ2l2ZW4gc291cmNlIHRvIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEga2V5LXZhbHVlIHBhaXIuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHk8YW55PiB8IGFueX0gc291cmNlIC0gVGhlIHNvdXJjZSBwcm9wZXJ0eSBvciBhbnkgdmFsdWUgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb259IFtkZWZdIC0gVGhlIGZvcm0gZmllbGQgZGVmaW5pdGlvbiB1c2VkIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gQWRkaXRpb25hbCBvcHRpb25zIGZvciBzZXJpYWxpemF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdHMuZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT0naWQnXSAtIFRoZSBhdHRyaWJ1dGUgdG8gYmUgdXNlZCBmb3IgZGVmYXVsdCBzZXJpYWxpemF0aW9uLlxuICAgKiBAcmV0dXJuIHt7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWR9IEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIGtleS12YWx1ZSBwYWlyLCBvciB1bmRlZmluZWQgaWYgdGhlIHNvdXJjZSBpcyBub3QgcHJvdmlkZWQuXG4gICAqL1xuICBzdGF0aWMgYXNPYmplY3QoXG4gICAgc291cmNlOiBQcm9wZXJ0eTxhbnk+IHwgYW55LFxuICAgIGRlZj86IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGU/OiBzdHJpbmc7XG4gICAgfVxuICApOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIC8vIFNlcmlhbGl6ZSBrZXkgKFdBUk5JTkc6IGNhbiBiZSBhbiBvYmplY3QsIHdoZW4gdXNpbmcgYXV0b2NvbXBsZXRlIGZpZWxkIHRvIGVkaXQgYSBrZXkgLSBzZWUgQXBwUHJvcGVydGllc0Zvcm0pXG4gICAgY29uc3Qga2V5ID0gQXBwUHJvcGVydHlVdGlscy5nZXRQcm9wZXJ0eUtleShzb3VyY2UpO1xuXG4gICAgLy8gUHJlcGFyZSBhIGRlc2VyaWFsaXplIGZ1bmN0aW9uXG4gICAgbGV0IHNlcmlhbGl6ZUZuID0gZGVmPy5zZXJpYWxpemU7XG4gICAgaWYgKCFzZXJpYWxpemVGbikge1xuICAgICAgc3dpdGNoIChkZWY/LnR5cGUgfHwgJ290aGVyJykge1xuICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgY2FzZSAnZW51bXMnOlxuICAgICAgICAgIHNlcmlhbGl6ZUZuID0gQXBwUHJvcGVydHlVdGlscy5rZXk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIGNhc2UgJ2VudGl0aWVzJzpcbiAgICAgICAgICBjb25zdCBzZXJpYWxpemVBdHRyaWJ1dGUgPSBkZWY/LnNlcmlhbGl6ZUF0dHJpYnV0ZSA/PyBvcHRzPy5kZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlID8/ICdpZCc7XG4gICAgICAgICAgc2VyaWFsaXplRm4gPVxuICAgICAgICAgICAgZGVmPy5zZXJpYWxpemUgfHxcbiAgICAgICAgICAgICgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplVmFsdWUgPSBnZXRQcm9wZXJ0eUJ5UGF0aCh2YWx1ZSwgc2VyaWFsaXplQXR0cmlidXRlLCB2YWx1ZSAvKmRlZmF1bHQgdmFsdWUqLyk7XG4gICAgICAgICAgICAgIGlmIChpc05pbChzZXJpYWxpemVWYWx1ZSkpIHJldHVybiBzZXJpYWxpemVWYWx1ZTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzZXJpYWxpemVGbiA9IEFwcFByb3BlcnR5VXRpbHMudG9TdHJpbmc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlU3RyOiBzdHJpbmc7XG5cbiAgICAvLyBWYWx1ZSBpcyBhbiBhcnJheVxuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZS52YWx1ZSkpIHtcbiAgICAgIHZhbHVlU3RyID0gc291cmNlLnZhbHVlLm1hcChzZXJpYWxpemVGbikuZmlsdGVyKGlzTm90TmlsT3JCbGFuaykuam9pbignLCcpO1xuICAgIH1cbiAgICAvLyBBbnkgb3RoZXIgY2FzZVxuICAgIGVsc2Uge1xuICAgICAgdmFsdWVTdHIgPSBzZXJpYWxpemVGbihzb3VyY2UudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4geyBrZXksIHZhbHVlOiB2YWx1ZVN0ciB9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3Q8VCA9IHN0cmluZz4oXG4gICAgc291cmNlOiBQcm9wZXJ0eSB8IFByb3BlcnR5PFQ+LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzoge1xuICAgICAgZGVmYXVsdFN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PjtcbiAgICAgIGRlZmF1bHRTdWdnZXN0T3B0aW9ucz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zO1xuICAgICAgZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgICB9XG4gICk6IFByb3BlcnR5PFQ+IHwgUHJvbWlzZTxQcm9wZXJ0eTxUPj4ge1xuICAgIGlmICghc291cmNlPy5rZXkgfHwgaXNOaWwoc291cmNlLnZhbHVlKSB8fCAhZGVmKSByZXR1cm4gc291cmNlIGFzIFByb3BlcnR5PFQ+OyAvLyBTa2lwIGlmIG5vIGtleVxuXG4gICAgLy8gQ2xvbmUgdGhlIHNvdXJjZVxuICAgIGNvbnN0IHRhcmdldDogUHJvcGVydHk8YW55PiA9IHsga2V5OiBzb3VyY2Uua2V5LCB2YWx1ZTogc291cmNlLnZhbHVlIH07XG5cbiAgICBjb25zdCBqb2JzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuICAgIC8vIFJlc29sdmUgdmFsdWVcbiAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdG9Cb29sZWFuKHNvdXJjZS52YWx1ZSBhcyBhbnksIHRvQm9vbGVhbihkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdkb3VibGUnOlxuICAgICAgICB0YXJnZXQudmFsdWUgPSB0b051bWJlcihzb3VyY2UudmFsdWUgYXMgYW55LCB0b051bWJlcihkZWYuZGVmYXVsdFZhbHVlKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgIGNvbnN0IHZhbHVlS2V5ID0gQXBwUHJvcGVydHlVdGlscy5rZXkodGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgaWYgKGlzTm90TmlsT3JCbGFuayh2YWx1ZUtleSkpIHtcbiAgICAgICAgICBjb25zdCBlbnVtVmFsdWUgPSAoZGVmLnZhbHVlcyBhcyAoc3RyaW5nIHwgUHJvcGVydHkpW10pPy5maW5kKChkZWZWYWx1ZSkgPT4gZGVmVmFsdWUgJiYgdmFsdWVLZXkgPT09IChkZWZWYWx1ZVsna2V5J10gfHwgZGVmVmFsdWUpKSA/PyBudWxsO1xuICAgICAgICAgIHRhcmdldC52YWx1ZSA9IGVudW1WYWx1ZT8uWydrZXknXSA/PyBlbnVtVmFsdWUgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW51bXMnOlxuICAgICAgICBjb25zdCB2YWx1ZUtleXMgPSBBcnJheS5pc0FycmF5KHNvdXJjZS52YWx1ZSlcbiAgICAgICAgICA/IHNvdXJjZS52YWx1ZS5tYXAoQXBwUHJvcGVydHlVdGlscy5rZXkpIC8vIENvcHlcbiAgICAgICAgICA6IHR5cGVvZiBzb3VyY2UudmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IHNvdXJjZS52YWx1ZS50cmltKCkuc3BsaXQoLywrLylcbiAgICAgICAgICAgIDogW0FwcFByb3BlcnR5VXRpbHMua2V5KHNvdXJjZS52YWx1ZSldO1xuICAgICAgICB0YXJnZXQudmFsdWUgPSB2YWx1ZUtleXNcbiAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAoa2V5OiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgIChkZWYudmFsdWVzIGFzIChzdHJpbmcgfCBQcm9wZXJ0eSlbXSk/LmZpbmQoKGRlZlZhbHVlKSA9PiBkZWZWYWx1ZSAmJiBrZXkgPT09IChkZWZWYWx1ZVsna2V5J10gfHwgZGVmVmFsdWUpKSB8fCB7IGtleSwgdmFsdWU6ICc/JyB9XG4gICAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbnRpdHknOlxuICAgICAgICAvLyBEZXNlcmlhbGl6ZSBlbnRpdHkgKGUuZy4gbG9hZCBlbnRpdHkgZnJvbSB0aGUgaWQpXG4gICAgICAgIGNvbnN0IHZhbHVlT3JQcm9taXNlID0gQXBwUHJvcGVydHlVdGlscy5yZXNvbHZlRW50aXR5KHRhcmdldC52YWx1ZSwgZGVmLCBvcHRzKTtcbiAgICAgICAgaWYgKGlzUHJvbWlzZSh2YWx1ZU9yUHJvbWlzZSkpIHtcbiAgICAgICAgICBqb2JzLnB1c2goXG4gICAgICAgICAgICB2YWx1ZU9yUHJvbWlzZS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0YXJnZXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSB2YWx1ZU9yUHJvbWlzZSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbnRpdGllcyc6XG4gICAgICAgIC8vIENvbnZlcnQgdmFsdWUgdG8gYXJyYXlcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gQXJyYXkuaXNBcnJheShzb3VyY2UudmFsdWUpXG4gICAgICAgICAgPyBzb3VyY2UudmFsdWUuc2xpY2UoKSAvLyBDb3B5XG4gICAgICAgICAgOiB0eXBlb2Ygc291cmNlLnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBzb3VyY2UudmFsdWVcbiAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgIC5tYXAoKHYpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoaXNOb3ROaWxPckJsYW5rKVxuICAgICAgICAgICAgOiBbXTtcblxuICAgICAgICAvLyBEZXNlcmlhbGl6ZSBlYWNoIHN1Yi12YWx1ZVxuICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCBzdWJWYWx1ZSBvZiB0YXJnZXQudmFsdWUpIHtcbiAgICAgICAgICAvLyBEZXNlcmlhbGl6ZSBzdWItdmFsdWVcbiAgICAgICAgICBjb25zdCBzdWJWYWx1ZU9yUHJvbWlzZSA9IEFwcFByb3BlcnR5VXRpbHMucmVzb2x2ZUVudGl0eShzdWJWYWx1ZSwgZGVmLCBvcHRzKTtcblxuICAgICAgICAgIC8vIEFkZCBwcm9taXNlIHRvIGpvYnNcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKHN1YlZhbHVlT3JQcm9taXNlKSkge1xuICAgICAgICAgICAgY29uc3QgZmluYWxJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgICBzdWJWYWx1ZU9yUHJvbWlzZS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgICAgICB0YXJnZXQudmFsdWVbZmluYWxJbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgIHRhcmdldC52YWx1ZVtpbmRleF0gPSBzdWJWYWx1ZU9yUHJvbWlzZSBhcyBhbnk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAvIVxcIFJldHVybiBhcyBwcm9taXNlIG9ubHkgaWYgbmVlZCAobGV0IGZ1bmN0aW9uIHN5bmMgd2hlbiBwb3NzaWJsZSlcbiAgICBpZiAoam9icy5sZW5ndGgpIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKCgpID0+IHRhcmdldCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZUVudGl0eShcbiAgICB2YWx1ZTogYW55LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzoge1xuICAgICAgZGVmYXVsdFN1Z2dlc3RGbjogU3VnZ2VzdEZuPGFueSwgYW55PjtcbiAgICAgIGRlZmF1bHRTdWdnZXN0T3B0aW9ucz86IEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zO1xuICAgICAgZGVmYXVsdFNlcmlhbGl6ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgICB9XG4gICk6IGFueSB8IFByb21pc2U8YW55PiB7XG4gICAgLy8gVXNlIGRlc2VyaWFsaXplIGZ1bmN0aW9uLCBpZiBhbnlcbiAgICBpZiAoZGVmLmRlc2VyaWFsaXplKSB7XG4gICAgICByZXR1cm4gZGVmLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBPciB0cnkgdXNpbmcgc3VnZ2VzdCBmdW5jdGlvblxuICAgIHJldHVybiB0aGlzLnJlc29sdmVFbnRpdHlCeVN1Z2dlc3QodmFsdWUsIGRlZiwgb3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyByZXNvbHZlRW50aXR5QnlTdWdnZXN0KFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGVmOiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+O1xuICAgICAgZGVmYXVsdFN1Z2dlc3RPcHRpb25zPzogRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnM7XG4gICAgICBkZWZhdWx0U2VyaWFsaXplQXR0cmlidXRlPzogc3RyaW5nO1xuICAgIH1cbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzZXJpYWxpemVBdHRyaWJ1dGUgPSBkZWYuc2VyaWFsaXplQXR0cmlidXRlID8/IG9wdHM/LmRlZmF1bHRTZXJpYWxpemVBdHRyaWJ1dGUgPz8gJ2lkJztcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBpc05vdE5pbCh2YWx1ZVtzZXJpYWxpemVBdHRyaWJ1dGVdKSkge1xuICAgICAgcmV0dXJuIHZhbHVlOyAvLyBBbHJlYWR5IHJlc29sdmVcbiAgICB9XG5cbiAgICBjb25zdCBzdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT4gPSBkZWYuYXV0b2NvbXBsZXRlPy5zdWdnZXN0Rm4gfHwgb3B0cz8uZGVmYXVsdFN1Z2dlc3RGbjtcbiAgICBpZiAoIXN1Z2dlc3RGbikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgTWlzc2luZyAnZGVzZXJpYWxpemUnIG9yICdhdXRvY29tcGxldGUuc3VnZ2VzdEZuJyBpbiB0aGUgZmllbGQgZGVmaW5pdGlvbiAnJHtkZWYua2V5fScuIENhbm5vdCBkZXNlcmlhbGl6ZSB2YWx1ZTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiB2YWx1ZTsgLy8gU2tpcFxuICAgIH1cbiAgICBsZXQgc2VhcmNoVmFsdWUgPSB2YWx1ZTtcbiAgICBjb25zdCBmaWx0ZXIgPSB7IC4uLmRlZi5hdXRvY29tcGxldGU/LmZpbHRlciB9OyAvLyBDb3BlIGZpbHRlclxuICAgIGlmIChzZXJpYWxpemVBdHRyaWJ1dGUgPT09ICdpZCcgfHwgc2VyaWFsaXplQXR0cmlidXRlID09PSAnbGFiZWwnKSB7XG4gICAgICBmaWx0ZXJbc2VyaWFsaXplQXR0cmlidXRlXSA9IHNlcmlhbGl6ZUF0dHJpYnV0ZSA9PT0gJ2lkJyA/ICt2YWx1ZSA6IHZhbHVlO1xuICAgICAgc2VhcmNoVmFsdWUgPSAnKic7XG4gICAgICAvLyBERUJVR1xuICAgICAgLy9jb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gUmVzb2x2aW5nIGVudGl0eSB3aGVyZSBpZD0ke3ZhbHVlfS4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIuc2VhcmNoQXR0cmlidXRlID0gc2VyaWFsaXplQXR0cmlidXRlO1xuICAgICAgLy8gREVCVUdcbiAgICAgIC8vY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIFJlc29sdmluZyBlbnRpdHkgd2hlcmUgJHtzZXJpYWxpemVBdHRyaWJ1dGV9PSR7c2VhcmNoVmFsdWV9Li4uYCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEZldGNoIGVudGl0eSwgdXNpbmcgdGhlIHN1Z2dlc3QgZnVuY3Rpb25cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHN1Z2dlc3RGbihzZWFyY2hWYWx1ZSwgZmlsdGVyLCBzZXJpYWxpemVBdHRyaWJ1dGUsICdhc2MnLCB7XG4gICAgICAgIHdpdGhUb3RhbDogZmFsc2UsXG4gICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgc2l6ZTogMSxcbiAgICAgICAgLi4ub3B0cz8uZGVmYXVsdFN1Z2dlc3RPcHRpb25zLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCByZXN1bHQgYXJyYXlcbiAgICAgIGNvbnN0IGRhdGEgPSBBcnJheS5pc0FycmF5KHJlcykgPyByZXMgOiByZXMuZGF0YTtcblxuICAgICAgaWYgKGRhdGE/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGRhdGE/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgW3Byb3BlcnRpZXMtdXRpbHNdIE1vcmUgdGhhbiBvbmUgZW50aXR5IGZvdW5kLCBmb3Igb3B0aW9uICR7ZGVmLmtleX09JHt2YWx1ZX0hIFBsZWFzZSBjaGVjayBvcHRpb24ncyBkZWZpbml0aW9uIGFuZCB0aGUgJ2F1dG9jb21wbGV0ZS5zdWdnZXN0Rm4nIGZ1bmN0aW9uYCxcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gREVCVUdcbiAgICAgICAgLy9jb25zb2xlLmRlYnVnKGBbcHJvcGVydGllcy11dGlsc10gJHtkYXRhLmxlbmd0aH0gZW50aXRpZXMgZm91bmQ6IGAsIGRhdGEpO1xuXG4gICAgICAgIC8vIE9rLCB3ZSBmaW5kIGl0ID0+IHN0b3AgaGVyZVxuICAgICAgICByZXR1cm4gZGF0YVswXTtcbiAgICAgIH1cblxuICAgICAgLy8gV2FybiwgYnV0IGNvbnRpbnVlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbcHJvcGVydGllcy11dGlsc10gVW5hYmxlIHRvIHJlc29sdmUgZW50aXR5IGZvciBvcHRpb246ICR7ZGVmLmtleX09JHt2YWx1ZX0uIFBsZWFzZSBjaGVjayBvcHRpb24ncyBkZWZpbml0aW9uIGFuZCB0aGUgJ2F1dG9jb21wbGV0ZS5zdWdnZXN0Rm4nIGZ1bmN0aW9uYFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFtwcm9wZXJ0aWVzLXV0aWxzXSBDYW5ub3QgcmVzb2x2ZSBlbnRpdHkgZm9yIG9wdGlvbjogJHtkZWYua2V5fT0ke3ZhbHVlfWAsIGVycik7XG4gICAgICAvLyBDb250aW51ZVxuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgbWlzc2luZyByZXN1bHRcbiAgICBjb25zdCB1bnJlc29sdmVkRW50aXR5ID0gPGFueT57XG4gICAgICBbc2VyaWFsaXplQXR0cmlidXRlXTogdmFsdWUsXG4gICAgfTtcblxuICAgIC8vIEZpbGwgYXR0cmlidXRlcyB3aXRoICc/PydcbiAgICBkZWYuYXV0b2NvbXBsZXRlPy5hdHRyaWJ1dGVzPy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHVucmVzb2x2ZWRFbnRpdHlba2V5XSA9IHVucmVzb2x2ZWRFbnRpdHlba2V5XSA/PyAnJztcbiAgICB9KTtcblxuICAgIHJldHVybiB1bnJlc29sdmVkRW50aXR5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdG9TdHJpbmcodmFsdWU/OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZT8udG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
|