@ethlete/cdk 4.41.2 → 4.43.0
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/CHANGELOG.md +18 -0
- package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +3 -3
- package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +4 -3
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +5 -1
- package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +8 -5
- package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +7 -6
- package/fesm2022/ethlete-cdk.mjs +21 -13
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +1 -0
- package/lib/components/pagination/components/pagination/pagination.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -362,11 +362,9 @@ export class QueryErrorDirective {
|
|
|
362
362
|
retryDelay: retryResult.delay ?? 0,
|
|
363
363
|
isList: false,
|
|
364
364
|
items: [],
|
|
365
|
-
title:
|
|
366
|
-
?
|
|
367
|
-
|
|
368
|
-
: convertHttpStatusCodeToTitleDe(error.status)
|
|
369
|
-
: error.statusText,
|
|
365
|
+
title: this.language() === 'en'
|
|
366
|
+
? convertHttpStatusCodeToTitleEn(error.status)
|
|
367
|
+
: convertHttpStatusCodeToTitleDe(error.status),
|
|
370
368
|
};
|
|
371
369
|
const detail = error.detail;
|
|
372
370
|
const defaultErrorMessage = `${this.language() === 'en' ? convertHttpStatusCodeToMessageEn(error.status) : convertHttpStatusCodeToMessageDe(error.status)} (Code: ${error.status})`;
|
|
@@ -392,6 +390,9 @@ export class QueryErrorDirective {
|
|
|
392
390
|
// Symfony error response (during development)
|
|
393
391
|
errorList.items.push({ message: detail.detail });
|
|
394
392
|
}
|
|
393
|
+
else if (typeof detail === 'string') {
|
|
394
|
+
errorList.items.push({ message: detail });
|
|
395
|
+
}
|
|
395
396
|
else {
|
|
396
397
|
errorList.items.push({ message: defaultErrorMessage });
|
|
397
398
|
}
|
|
@@ -428,4 +429,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
428
429
|
],
|
|
429
430
|
}]
|
|
430
431
|
}] });
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZXJyb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXJ5LWVycm9yL2RpcmVjdGl2ZXMvcXVlcnktZXJyb3IvcXVlcnktZXJyb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUtMLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDOztBQUd4QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsNkJBQTZCLENBQUMsQ0FBQztBQUV4RyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLFVBQTBCLEVBQUUsRUFBRTtJQUM3RSxRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CO1lBQ0UsT0FBTyxtRUFBbUUsQ0FBQztRQUM3RTtZQUNFLE9BQU8sMkVBQTJFLENBQUM7UUFDckY7WUFDRSxPQUFPLDhDQUE4QyxDQUFDO1FBQ3hEO1lBQ0UsT0FBTyxvREFBb0QsQ0FBQztRQUM5RDtZQUNFLE9BQU8sdUNBQXVDLENBQUM7UUFDakQ7WUFDRSxPQUFPLHdEQUF3RCxDQUFDO1FBQ2xFO1lBQ0UsT0FBTyx3R0FBd0csQ0FBQztRQUNsSDtZQUNFLE9BQU8sMkRBQTJELENBQUM7UUFDckU7WUFDRSxPQUFPLCtDQUErQyxDQUFDO1FBQ3pEO1lBQ0UsT0FBTywrREFBK0QsQ0FBQztRQUN6RTtZQUNFLE9BQU8sZ0ZBQWdGLENBQUM7UUFDMUY7WUFDRSxPQUFPLHFHQUFxRyxDQUFDO1FBQy9HO1lBQ0UsT0FBTywwRkFBMEYsQ0FBQztRQUNwRztZQUNFLE9BQU8sc0VB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LEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsbUJBQW1CO2FBQ2pDO1NBQ0Y7OzJGQUVVLG1CQUFtQjtrQkFWL0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHFCQUFxQjt5QkFDakM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGlvblRva2VuLCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFueVF1ZXJ5LFxuICBBbnlRdWVyeUNvbGxlY3Rpb24sXG4gIEh0dHBTdGF0dXNDb2RlLFxuICBSZXF1ZXN0RXJyb3IsXG4gIGlzQ2xhc3NWYWxpZGF0b3JFcnJvcixcbiAgaXNTeW1mb255Rm9ybVZpb2xhdGlvbkxpc3RFcnJvcixcbiAgaXNTeW1mb255TGlzdEVycm9yLFxuICBzaG91bGRSZXRyeVJlcXVlc3QsXG59IGZyb20gJ0BldGhsZXRlL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5RXJyb3JMaXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgUVVFUllfRVJST1JfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UXVlcnlFcnJvckRpcmVjdGl2ZT4oJ1FVRVJZX0VSUk9SX0RJUkVDVElWRV9UT0tFTicpO1xuXG5leHBvcnQgY29uc3QgY29udmVydEh0dHBTdGF0dXNDb2RlVG9NZXNzYWdlRW4gPSAoc3RhdHVzQ29kZTogSHR0cFN0YXR1c0NvZGUpID0+IHtcbiAgc3dpdGNoIChzdGF0dXNDb2RlKSB7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0OlxuICAgICAgcmV0dXJuICdTb3JyeSwgd2UgY291bGQgbm90IHByb2Nlc3MgeW91ciByZXF1ZXN0LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICByZXR1cm4gJ1lvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4gUGxlYXNlIGxvZyBpbiB0byBjb250aW51ZS4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bWVudFJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdQYXltZW50IGlzIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Gb3JiaWRkZW46XG4gICAgICByZXR1cm4gJ1lvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kOlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIHdhcyBub3QgZm91bmQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk1ldGhvZE5vdEFsbG93ZWQ6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0ZWQgbWV0aG9kIGlzIG5vdCBhbGxvd2VkIGZvciB0aGlzIHJlc291cmNlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RBY2NlcHRhYmxlOlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGlzIG5vdCBjYXBhYmxlIG9mIGdlbmVyYXRpbmcgYSByZXNwb25zZSBtYXRjaGluZyB0aGUgbGlzdCBvZiBhY2NlcHRhYmxlIHZhbHVlcy4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdQcm94eSBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZCB0byBjb21wbGV0ZSB0aGlzIGFjdGlvbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQ6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgdGltZWQgb3V0IHdhaXRpbmcgZm9yIHRoZSByZXF1ZXN0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Db25mbGljdDpcbiAgICAgIHJldHVybiAnVGhlIHJlcXVlc3QgY29uZmxpY3RzIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHJlc291cmNlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Hb25lOlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdGVkIHJlc291cmNlIGlzIG5vIGxvbmdlciBhdmFpbGFibGUgYW5kIHdpbGwgbm90IGJlIGF2YWlsYWJsZSBhZ2Fpbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTGVuZ3RoUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0IGRpZCBub3Qgc3BlY2lmeSB0aGUgbGVuZ3RoIG9mIGl0cyBjb250ZW50LCB3aGljaCBpcyByZXF1aXJlZCBieSB0aGUgcmVxdWVzdGVkIHJlc291cmNlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QcmVjb25kaXRpb25GYWlsZWQ6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgZG9lcyBub3QgbWVldCBvbmUgb2YgdGhlIHByZWNvbmRpdGlvbnMgdGhhdCB0aGUgcmVxdWVzdGVyIHB1dCBvbiB0aGUgcmVxdWVzdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bG9hZFRvb0xhcmdlOlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdCBpcyBsYXJnZXIgdGhhbiB0aGUgc2VydmVyIGlzIHdpbGxpbmcgb3IgYWJsZSB0byBwcm9jZXNzLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VcmlUb29Mb25nOlxuICAgICAgcmV0dXJuICdUaGUgVVJMIHByb3ZpZGVkIHdhcyB0b28gbG9uZyBmb3IgdGhlIHNlcnZlciB0byBwcm9jZXNzLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbnN1cHBvcnRlZE1lZGlhVHlwZTpcbiAgICAgIHJldHVybiAnVGhlIHJlcXVlc3QgZW50aXR5IGhhcyBhIG1lZGlhIHR5cGUgd2hpY2ggdGhlIHNlcnZlciBvciByZXNvdXJjZSBkb2VzIG5vdCBzdXBwb3J0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SYW5nZU5vdFNhdGlzZmlhYmxlOlxuICAgICAgcmV0dXJuICdUaGUgY2xpZW50IGhhcyBhc2tlZCBmb3IgYSBwb3J0aW9uIG9mIHRoZSBmaWxlLCBidXQgdGhlIHNlcnZlciBjYW5ub3Qgc3VwcGx5IHRoYXQgcG9ydGlvbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRXhwZWN0YXRpb25GYWlsZWQ6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgY2Fubm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgRXhwZWN0IHJlcXVlc3QtaGVhZGVyIGZpZWxkLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbUFUZWFwb3Q6XG4gICAgICByZXR1cm4gJ0kgYW0gYSB0ZWFwb3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk1pc2RpcmVjdGVkUmVxdWVzdDpcbiAgICAgIHJldHVybiAnVGhlIHJlcXVlc3Qgd2FzIGRpcmVjdGVkIGF0IGEgc2VydmVyIHRoYXQgaXMgbm90IGFibGUgdG8gcHJvZHVjZSBhIHJlc3BvbnNlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbnByb2Nlc3NhYmxlRW50aXR5OlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdCB3YXMgd2VsbC1mb3JtZWQgYnV0IHdhcyB1bmFibGUgdG8gYmUgZm9sbG93ZWQgZHVlIHRvIHNlbWFudGljIGVycm9ycy4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTG9ja2VkOlxuICAgICAgcmV0dXJuICdUaGUgcmVzb3VyY2UgdGhhdCBpcyBiZWluZyBhY2Nlc3NlZCBpcyBsb2NrZWQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkZhaWxlZERlcGVuZGVuY3k6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0IGZhaWxlZCBkdWUgdG8gZmFpbHVyZSBvZiBhIHByZXZpb3VzIHJlcXVlc3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlRvb0Vhcmx5OlxuICAgICAgcmV0dXJuICdUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGF1dGhlbnRpY2F0ZWQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVwZ3JhZGVSZXF1aXJlZDpcbiAgICAgIHJldHVybiAnVGhlIGNsaWVudCBzaG91bGQgc3dpdGNoIHRvIGEgZGlmZmVyZW50IHByb3RvY29sIHN1Y2ggYXMgVExTLzEuMCwgZ2l2ZW4gaW4gdGhlIFVwZ3JhZGUgaGVhZGVyIGZpZWxkLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QcmVjb25kaXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlRvb01hbnlSZXF1ZXN0czpcbiAgICAgIHJldHVybiAnWW91IGhhdmUgc2VudCB0b28gbWFueSByZXF1ZXN0cyBpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgaXMgdW53aWxsaW5nIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QgYmVjYXVzZSBpdHMgaGVhZGVyIGZpZWxkcyBhcmUgdG9vIGxhcmdlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczpcbiAgICAgIHJldHVybiAnVGhlIHJlc291cmNlIGlzIHVuYXZhaWxhYmxlIGR1ZSB0byBhIGxlZ2FsIGRlbWFuZC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSW50ZXJuYWxTZXJ2ZXJFcnJvcjpcbiAgICAgIHJldHVybiAnU29tZXRoaW5nIHdlbnQgd3Jvbmcgb24gb3VyIGVuZC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90SW1wbGVtZW50ZWQ6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZnVuY3Rpb25hbGl0eSByZXF1aXJlZCB0byBmdWxmaWxsIHRoZSByZXF1ZXN0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRHYXRld2F5OlxuICAgICAgcmV0dXJuICdTb21ldGhpbmcgd2VudCB3cm9uZyBvbiBvdXIgZW5kLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5TZXJ2aWNlVW5hdmFpbGFibGU6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgaXMgY3VycmVudGx5IHVuYWJsZSB0byBoYW5kbGUgdGhlIHJlcXVlc3QgZHVlIHRvIGEgdGVtcG9yYXJ5IG92ZXJsb2FkIG9yIG1haW50ZW5hbmNlIG9mIHRoZSBzZXJ2ZXIuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkdhdGV3YXlUaW1lb3V0OlxuICAgICAgcmV0dXJuICdUaGUgc2VydmVyLCB3aGlsZSBhY3RpbmcgYXMgYSBnYXRld2F5IG9yIHByb3h5LCBkaWQgbm90IHJlY2VpdmUgYSB0aW1lbHkgcmVzcG9uc2UgZnJvbSB0aGUgdXBzdHJlYW0gc2VydmVyIHNwZWNpZmllZCBieSB0aGUgVVJMIG9yIHNvbWUgb3RoZXIgYXV4aWxpYXJ5IHNlcnZlciBpdCBuZWVkZWQgdG8gYWNjZXNzIGluIGF0dGVtcHRpbmcgdG8gY29tcGxldGUgdGhlIHJlcXVlc3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOlxuICAgICAgcmV0dXJuICdUaGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIEhUVFAgcHJvdG9jb2wgdmVyc2lvbiB1c2VkIGluIHRoZSByZXF1ZXN0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5WYXJpYW50QWxzb05lZ290aWF0ZXM6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgaGFzIGFuIGludGVybmFsIGNvbmZpZ3VyYXRpb24gZXJyb3I6IHRoZSBjaG9zZW4gdmFyaWFudCByZXNvdXJjZSBpcyBjb25maWd1cmVkIHRvIGVuZ2FnZSBpbiB0cmFuc3BhcmVudCBjb250ZW50IG5lZ290aWF0aW9uIGl0c2VsZiwgYW5kIGlzIHRoZXJlZm9yZSBub3QgYSBwcm9wZXIgZW5kIHBvaW50IGluIHRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbnN1ZmZpY2llbnRTdG9yYWdlOlxuICAgICAgcmV0dXJuICdUaGUgbWV0aG9kIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgb24gdGhlIHJlc291cmNlIGJlY2F1c2UgdGhlIHNlcnZlciBpcyB1bmFibGUgdG8gc3RvcmUgdGhlIHJlcHJlc2VudGF0aW9uIG5lZWRlZCB0byBzdWNjZXNzZnVsbHkgY29tcGxldGUgdGhlIHJlcXVlc3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxvb3BEZXRlY3RlZDpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciBkZXRlY3RlZCBhbiBpbmZpbml0ZSBsb29wIHdoaWxlIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEV4dGVuZGVkOlxuICAgICAgcmV0dXJuICdGdXJ0aGVyIGV4dGVuc2lvbnMgdG8gdGhlIHJlcXVlc3QgYXJlIHJlcXVpcmVkIGZvciB0aGUgc2VydmVyIHRvIGZ1bGZpbGwgaXQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdZb3UgbmVlZCB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2Vzcy4nO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ1NvbWV0aGluZyB3ZW50IHdyb25nLiBDaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24gYW5kIHRyeSBhZ2FpbiBsYXRlci4nO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEh0dHBTdGF0dXNDb2RlVG9NZXNzYWdlRGUgPSAoc3RhdHVzQ29kZTogSHR0cFN0YXR1c0NvZGUpID0+IHtcbiAgc3dpdGNoIChzdGF0dXNDb2RlKSB7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0OlxuICAgICAgcmV0dXJuICdFbnRzY2h1bGRpZ3VuZywgd2lyIGtvbm50ZW4gSWhyZSBBbmZyYWdlIG5pY2h0IGJlYXJiZWl0ZW4uIEJpdHRlIHZlcnN1Y2hlbiBTaWUgZXMgc3DDpHRlciBlcm5ldXQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZDpcbiAgICAgIHJldHVybiAnU2llIHNpbmQgbmljaHQgYmVyZWNodGlndCwgZGllc2UgQWt0aW9uIGF1c3p1ZsO8aHJlbi4gQml0dGUgbWVsZGVuIFNpZSBzaWNoIGFuLCB1bSBmb3J0enVmYWhyZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlBheW1lbnRSZXF1aXJlZDpcbiAgICAgIHJldHVybiAnWnVyIEF1c2bDvGhydW5nIGRpZXNlciBBa3Rpb24gaXN0IGVpbmUgWmFobHVuZyBlcmZvcmRlcmxpY2guJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkZvcmJpZGRlbjpcbiAgICAgIHJldHVybiAnU2llIGhhYmVuIGtlaW5lIEJlcmVjaHRpZ3VuZywgZGllc2UgQWt0aW9uIGF1c3p1ZsO8aHJlbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQ6XG4gICAgICByZXR1cm4gJ0RpZSBhbmdlZm9yZGVydGUgUmVzc291cmNlIHd1cmRlIG5pY2h0IGdlZnVuZGVuLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5NZXRob2ROb3RBbGxvd2VkOlxuICAgICAgcmV0dXJuICdEaWUgYW5nZWZvcmRlcnRlIE1ldGhvZGUgaXN0IGbDvHIgZGllc2UgUmVzc291cmNlIG5pY2h0IHp1bMOkc3NpZy4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90QWNjZXB0YWJsZTpcbiAgICAgIHJldHVybiAnRGllIGFuZ2Vmb3JkZXJ0ZSBSZXNzb3VyY2UgaXN0IG5pY2h0IGluIGRlciBMYWdlLCBlaW5lIEFudHdvcnQgenUgZ2VuZXJpZXJlbiwgZGllIGRlciBMaXN0ZSBkZXIgYWt6ZXB0YWJsZW4gV2VydGUgZW50c3ByaWNodC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdadXIgQXVzZsO8aHJ1bmcgZGllc2VyIEFrdGlvbiBpc3QgZWluZSBQcm94eS1BdXRoZW50aWZpemllcnVuZyBlcmZvcmRlcmxpY2guJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJlcXVlc3RUaW1lb3V0OlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIGhhdCBhdWYgZGllIEFuZm9yZGVydW5nIGdld2FydGV0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Db25mbGljdDpcbiAgICAgIHJldHVybiAnRGllIEFuZm9yZGVydW5nIHN0ZWh0IGltIFdpZGVyc3BydWNoIHp1bSBha3R1ZWxsZW4gWnVzdGFuZCBkZXIgUmVzc291cmNlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Hb25lOlxuICAgICAgcmV0dXJuICdEaWUgYW5nZWZvcmRlcnRlIFJlc3NvdXJjZSBpc3QgbmljaHQgbWVociB2ZXJmw7xnYmFyIHVuZCB3aXJkIGF1Y2ggbmljaHQgbWVociB2ZXJmw7xnYmFyIHNlaW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxlbmd0aFJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdEaWUgQW5mb3JkZXJ1bmcgaGF0IGRpZSBMw6RuZ2UgaWhyZXMgSW5oYWx0cyBuaWNodCBhbmdlZ2ViZW4sIGRpZSB2b24gZGVyIGFuZ2Vmb3JkZXJ0ZW4gUmVzc291cmNlIGJlbsO2dGlndCB3aXJkLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QcmVjb25kaXRpb25GYWlsZWQ6XG4gICAgICByZXR1cm4gJ0RlciBTZXJ2ZXIgZXJmw7xsbHQgZWluZSBkZXIgVm9yYXVzc2V0enVuZ2VuIG5pY2h0LCBkaWUgZGVyIEFuZm9yZGVyZXIgYW4gZGllIEFuZm9yZGVydW5nIGdlc3RlbGx0IGhhdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bG9hZFRvb0xhcmdlOlxuICAgICAgcmV0dXJuICdEaWUgQW5mb3JkZXJ1bmcgaXN0IGdyw7bDn2VyIGFscyBkZXIgU2VydmVyIGJlcmVpdCBvZGVyIGluIGRlciBMYWdlIGlzdCwgenUgdmVyYXJiZWl0ZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVyaVRvb0xvbmc6XG4gICAgICByZXR1cm4gJ0RpZSBiZXJlaXRnZXN0ZWxsdGUgVVJMIHdhciBmw7xyIGRlbiBTZXJ2ZXIgenUgbGFuZywgdW0gc2llIHp1IHZlcmFyYmVpdGVuLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbnN1cHBvcnRlZE1lZGlhVHlwZTpcbiAgICAgIHJldHVybiAnRGllIEFuZm9yZGVydW5nc2VpbmhlaXQgaGF0IGVpbmVuIE1lZGllbnR5cCwgZGVuIGRlciBTZXJ2ZXIgb2RlciBkaWUgUmVzc291cmNlIG5pY2h0IHVudGVyc3TDvHR6dC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUmFuZ2VOb3RTYXRpc2ZpYWJsZTpcbiAgICAgIHJldHVybiAnRGVyIENsaWVudCBoYXQgZWluZW4gVGVpbCBkZXIgRGF0ZWkgYW5nZWZvcmRlcnQsIGFiZXIgZGVyIFNlcnZlciBrYW5uIGRpZXNlbiBUZWlsIG5pY2h0IGxpZWZlcm4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkV4cGVjdGF0aW9uRmFpbGVkOlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIGthbm4gZGllIEFuZm9yZGVydW5nZW4gZGVzIEVyd2FydHVuZy1BbmZvcmRlcnVuZ3Nrb3BmZmVsZHMgbmljaHQgZXJmw7xsbGVuLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbUFUZWFwb3Q6XG4gICAgICByZXR1cm4gJ0ljaCBiaW4gZWluZSBUZWVrYW5uZS4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTWlzZGlyZWN0ZWRSZXF1ZXN0OlxuICAgICAgcmV0dXJuICdEaWUgQW5mb3JkZXJ1bmcgd3VyZGUgYW4gZWluZW4gU2VydmVyIGdlcmljaHRldCwgZGVyIG5pY2h0IGluIGRlciBMYWdlIGlzdCwgZWluZSBBbnR3b3J0IHp1IGdlbmVyaWVyZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVucHJvY2Vzc2FibGVFbnRpdHk6XG4gICAgICByZXR1cm4gJ0RpZSBBbmZvcmRlcnVuZyB3YXIgZ3V0IGZvcm11bGllcnQsIGtvbm50ZSBhYmVyIGF1ZmdydW5kIHNlbWFudGlzY2hlciBGZWhsZXIgbmljaHQgYmVmb2xndCB3ZXJkZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxvY2tlZDpcbiAgICAgIHJldHVybiAnRGllIFJlc3NvdXJjZSwgYXVmIGRpZSB6dWdlZ3JpZmZlbiB3aXJkLCBpc3QgZ2VzcGVycnQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkZhaWxlZERlcGVuZGVuY3k6XG4gICAgICByZXR1cm4gJ0RpZSBBbmZvcmRlcnVuZyBpc3QgYXVmZ3J1bmQgZWluZXMgRmVobGVycyBlaW5lciB2b3JoZXJpZ2VuIEFuZm9yZGVydW5nIGZlaGxnZXNjaGxhZ2VuLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ub29FYXJseTpcbiAgICAgIHJldHVybiAnRGVyIFNlcnZlciBpc3QgbmljaHQgYmVyZWl0LCBkaWUgQW5mb3JkZXJ1bmcgenUgdmVyYXJiZWl0ZW4sIHdlaWwgZGVyIEJlbnV0emVyIG5pY2h0IGF1dGhlbnRpZml6aWVydCB3dXJkZS4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVXBncmFkZVJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdEZXIgQ2xpZW50IHNvbGx0ZSB6dSBlaW5lbSBhbmRlcmVuIFByb3Rva29sbCB3aWUgVExTLzEuMCB3ZWNoc2VsbiwgZGFzIGltIFVwZ3JhZGUtQW5mb3JkZXJ1bmdza29wZmZlbGQgYW5nZWdlYmVuIGlzdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUHJlY29uZGl0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ0RlciBVcnNwcnVuZ3NzZXJ2ZXIgZXJmb3JkZXJ0LCBkYXNzIGRpZSBBbmZvcmRlcnVuZyBiZWRpbmd0IGlzdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzOlxuICAgICAgcmV0dXJuICdTaWUgaGFiZW4gaW4gZWluZXIgYmVzdGltbXRlbiBaZWl0IHp1IHZpZWxlIEFuZnJhZ2VuIGdlc2VuZGV0LiBCaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIHNww6R0ZXIgZXJuZXV0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6XG4gICAgICByZXR1cm4gJ0RlciBTZXJ2ZXIgaXN0IG5pY2h0IGJlcmVpdCwgZGllIEFuZm9yZGVydW5nIHp1IHZlcmFyYmVpdGVuLCB3ZWlsIHNlaW5lIEtvcGZmZWxkZXIgenUgZ3Jvw58gc2luZC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6XG4gICAgICByZXR1cm4gJ0RpZSBSZXNzb3VyY2UgaXN0IGF1ZmdydW5kIGVpbmVyIHJlY2h0bGljaGVuIEZvcmRlcnVuZyBuaWNodCB2ZXJmw7xnYmFyLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yOlxuICAgICAgcmV0dXJuICdFdHdhcyBpc3Qgc2NoaWVmIGdlbGF1ZmVuLiBCaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIHNww6R0ZXIgZXJuZXV0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RJbXBsZW1lbnRlZDpcbiAgICAgIHJldHVybiAnRGVyIFNlcnZlciB1bnRlcnN0w7x0enQgZGllIHp1ciBFcmbDvGxsdW5nIGRlciBBbmZvcmRlcnVuZyBlcmZvcmRlcmxpY2hlIEZ1bmt0aW9uYWxpdMOkdCBuaWNodC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuQmFkR2F0ZXdheTpcbiAgICAgIHJldHVybiAnRXR3YXMgaXN0IHNjaGllZiBnZWxhdWZlbi4gQml0dGUgdmVyc3VjaGVuIFNpZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuU2VydmljZVVuYXZhaWxhYmxlOlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIGthbm4gZGllIEFuZm9yZGVydW5nIGRlcnplaXQgbmljaHQgYmVhcmJlaXRlbiwgZGEgZXIgdm9yw7xiZXJnZWhlbmQgw7xiZXJsYXN0ZXQgb2RlciBnZXdhcnRldCB3aXJkLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5HYXRld2F5VGltZW91dDpcbiAgICAgIHJldHVybiAnRGVyIFNlcnZlciBoYXQgYmVpbSBWZXJzdWNoLCBkaWUgQW5mb3JkZXJ1bmcgYWJ6dXNjaGxpZcOfZW4sIGtlaW5lIHJlY2h0emVpdGlnZSBBbnR3b3J0IHZvbSBTZXJ2ZXIgZXJoYWx0ZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIHVudGVyc3TDvHR6dCBkaWUgaW4gZGVyIEFuZm9yZGVydW5nIHZlcndlbmRldGUgSFRUUC1Qcm90b2tvbGx2ZXJzaW9uIG5pY2h0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5WYXJpYW50QWxzb05lZ290aWF0ZXM6XG4gICAgICByZXR1cm4gJ0RlciBTZXJ2ZXIgaGF0IGVpbmVuIGludGVybmVuIEtvbmZpZ3VyYXRpb25zZmVobGVyOiBEaWUgYXVzZ2V3w6RobHRlIFZhcmlhbnRlbnJlc3NvdXJjZSBpc3Qgc28ga29uZmlndXJpZXJ0LCBkYXNzIHNpZSBzaWNoIHNlbGJzdCBpbiBkaWUgdHJhbnNwYXJlbnRlIEluaGFsdHN2ZXJoYW5kbHVuZyBlaW5iaW5kZXQsIHVuZCBpc3QgZGFoZXIga2VpbiBnZWVpZ25ldGVyIEVuZHB1bmt0IGltIFZlcmhhbmRsdW5nc3Byb3plc3MuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkluc3VmZmljaWVudFN0b3JhZ2U6XG4gICAgICByZXR1cm4gJ0RpZSBNZXRob2RlIGtvbm50ZSBhdWYgZGllIFJlc3NvdXJjZSBuaWNodCBhbmdld2VuZGV0IHdlcmRlbiwgd2VpbCBkZXIgU2VydmVyIG5pY2h0IGluIGRlciBMYWdlIGlzdCwgZGllIGbDvHIgZGllIGVyZm9sZ3JlaWNoZSBBdXNmw7xocnVuZyBkZXIgQW5mb3JkZXJ1bmcgZXJmb3JkZXJsaWNoZSBEYXJzdGVsbHVuZyB6dSBzcGVpY2hlcm4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxvb3BEZXRlY3RlZDpcbiAgICAgIHJldHVybiAnRGVyIFNlcnZlciBoYXQgZWluZSBFbmRsb3NzY2hsZWlmZSBlcmthbm50LCB3w6RocmVuZCBlciBkaWUgQW5mb3JkZXJ1bmcgdmVyYXJiZWl0ZXQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEV4dGVuZGVkOlxuICAgICAgcmV0dXJuICdXZWl0ZXJlIEVyd2VpdGVydW5nZW4gZGVyIEFuZm9yZGVydW5nIHNpbmQgZXJmb3JkZXJsaWNoLCBkYW1pdCBkZXIgU2VydmVyIHNpZSBlcmbDvGxsZW4ga2Fubi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1NpZSBtw7xzc2VuIHNpY2ggYXV0aGVudGlmaXppZXJlbiwgdW0gWnVnYW5nIHp1bSBOZXR6d2VyayB6dSBlcmhhbHRlbi4nO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ0V0d2FzIGlzdCBzY2hpZWYgZ2VsYXVmZW4uIMOcYmVycHLDvGZlbiBTaWUgSWhyZSBJbnRlcm5ldHZlcmJpbmR1bmcgdW5kIHZlcnN1Y2hlbiBTaWUgZXMgc3DDpHRlciBlcm5ldXQuJztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRIdHRwU3RhdHVzQ29kZVRvVGl0bGVFbiA9IChzdGF0dXNDb2RlOiBIdHRwU3RhdHVzQ29kZSkgPT4ge1xuICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHtcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkJhZFJlcXVlc3Q6XG4gICAgICByZXR1cm4gJ0JhZCByZXF1ZXN0JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZDpcbiAgICAgIHJldHVybiAnVW5hdXRob3JpemVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlBheW1lbnRSZXF1aXJlZDpcbiAgICAgIHJldHVybiAnUGF5bWVudCByZXF1aXJlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Gb3JiaWRkZW46XG4gICAgICByZXR1cm4gJ0ZvcmJpZGRlbic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZDpcbiAgICAgIHJldHVybiAnTm90IGZvdW5kJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk1ldGhvZE5vdEFsbG93ZWQ6XG4gICAgICByZXR1cm4gJ01ldGhvZCBub3QgYWxsb3dlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RBY2NlcHRhYmxlOlxuICAgICAgcmV0dXJuICdOb3QgYWNjZXB0YWJsZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Qcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1Byb3h5IGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJlcXVlc3RUaW1lb3V0OlxuICAgICAgcmV0dXJuICdSZXF1ZXN0IHRpbWVvdXQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuQ29uZmxpY3Q6XG4gICAgICByZXR1cm4gJ0NvbmZsaWN0JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkdvbmU6XG4gICAgICByZXR1cm4gJ0dvbmUnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTGVuZ3RoUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ0xlbmd0aCByZXF1aXJlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QcmVjb25kaXRpb25GYWlsZWQ6XG4gICAgICByZXR1cm4gJ1ByZWNvbmRpdGlvbiBmYWlsZWQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bG9hZFRvb0xhcmdlOlxuICAgICAgcmV0dXJuICdQYXlsb2FkIHRvbyBsYXJnZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VcmlUb29Mb25nOlxuICAgICAgcmV0dXJuICdVUkkgdG9vIGxvbmcnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5zdXBwb3J0ZWRNZWRpYVR5cGU6XG4gICAgICByZXR1cm4gJ1Vuc3VwcG9ydGVkIG1lZGlhIHR5cGUnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUmFuZ2VOb3RTYXRpc2ZpYWJsZTpcbiAgICAgIHJldHVybiAnUmFuZ2Ugbm90IHNhdGlzZmlhYmxlJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkV4cGVjdGF0aW9uRmFpbGVkOlxuICAgICAgcmV0dXJuICdFeHBlY3RhdGlvbiBmYWlsZWQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSW1BVGVhcG90OlxuICAgICAgcmV0dXJuICdJIGFtIGEgdGVhcG90JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk1pc2RpcmVjdGVkUmVxdWVzdDpcbiAgICAgIHJldHVybiAnTWlzZGlyZWN0ZWQgcmVxdWVzdCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbnByb2Nlc3NhYmxlRW50aXR5OlxuICAgICAgcmV0dXJuICdVbnByb2Nlc3NhYmxlIGVudGl0eSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Mb2NrZWQ6XG4gICAgICByZXR1cm4gJ0xvY2tlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5GYWlsZWREZXBlbmRlbmN5OlxuICAgICAgcmV0dXJuICdGYWlsZWQgZGVwZW5kZW5jeSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ub29FYXJseTpcbiAgICAgIHJldHVybiAnVG9vIGVhcmx5JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVwZ3JhZGVSZXF1aXJlZDpcbiAgICAgIHJldHVybiAnVXBncmFkZSByZXF1aXJlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QcmVjb25kaXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnUHJlY29uZGl0aW9uIHJlcXVpcmVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlRvb01hbnlSZXF1ZXN0czpcbiAgICAgIHJldHVybiAnVG9vIG1hbnkgcmVxdWVzdHMnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlOlxuICAgICAgcmV0dXJuICdSZXF1ZXN0IGhlYWRlciBmaWVsZHMgdG9vIGxhcmdlJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOlxuICAgICAgcmV0dXJuICdVbmF2YWlsYWJsZSBmb3IgbGVnYWwgcmVhc29ucyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yOlxuICAgICAgcmV0dXJuICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90SW1wbGVtZW50ZWQ6XG4gICAgICByZXR1cm4gJ05vdCBpbXBsZW1lbnRlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRHYXRld2F5OlxuICAgICAgcmV0dXJuICdCYWQgZ2F0ZXdheSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5TZXJ2aWNlVW5hdmFpbGFibGU6XG4gICAgICByZXR1cm4gJ1NlcnZpY2UgdW5hdmFpbGFibGUnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuR2F0ZXdheVRpbWVvdXQ6XG4gICAgICByZXR1cm4gJ0dhdGV3YXkgdGltZW91dCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5IdHRwVmVyc2lvbk5vdFN1cHBvcnRlZDpcbiAgICAgIHJldHVybiAnSFRUUCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVmFyaWFudEFsc29OZWdvdGlhdGVzOlxuICAgICAgcmV0dXJuICdWYXJpYW50IGFsc28gbmVnb3RpYXRlcyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbnN1ZmZpY2llbnRTdG9yYWdlOlxuICAgICAgcmV0dXJuICdJbnN1ZmZpY2llbnQgc3RvcmFnZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Mb29wRGV0ZWN0ZWQ6XG4gICAgICByZXR1cm4gJ0xvb3AgZGV0ZWN0ZWQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90RXh0ZW5kZWQ6XG4gICAgICByZXR1cm4gJ05vdCBleHRlbmRlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnTmV0d29yayBhdXRoZW50aWNhdGlvbiByZXF1aXJlZCc7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnU29tZXRoaW5nIHdlbnQgd3JvbmcnO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEh0dHBTdGF0dXNDb2RlVG9UaXRsZURlID0gKHN0YXR1c0NvZGU6IEh0dHBTdGF0dXNDb2RlKSA9PiB7XG4gIHN3aXRjaCAoc3RhdHVzQ29kZSkge1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuQmFkUmVxdWVzdDpcbiAgICAgIHJldHVybiAnVW5nw7xsdGlnZSBBbmZyYWdlJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZDpcbiAgICAgIHJldHVybiAnTmljaHQgYXV0b3Jpc2llcnQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bWVudFJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdaYWhsdW5nIGVyZm9yZGVybGljaCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Gb3JiaWRkZW46XG4gICAgICByZXR1cm4gJ1ZlcmJvdGVuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kOlxuICAgICAgcmV0dXJuICdOaWNodCBnZWZ1bmRlbic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5NZXRob2ROb3RBbGxvd2VkOlxuICAgICAgcmV0dXJuICdNZXRob2RlIG5pY2h0IGVybGF1YnQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90QWNjZXB0YWJsZTpcbiAgICAgIHJldHVybiAnTmljaHQgYWt6ZXB0YWJlbCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Qcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1Byb3h5LUF1dGhlbnRpZml6aWVydW5nIGVyZm9yZGVybGljaCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0VGltZW91dDpcbiAgICAgIHJldHVybiAnQW5mb3JkZXJ1bmdzemVpdMO8YmVyc2NocmVpdHVuZyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Db25mbGljdDpcbiAgICAgIHJldHVybiAnS29uZmxpa3QnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuR29uZTpcbiAgICAgIHJldHVybiAnV2VnJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxlbmd0aFJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdMw6RuZ2UgZXJmb3JkZXJsaWNoJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByZWNvbmRpdGlvbkZhaWxlZDpcbiAgICAgIHJldHVybiAnVm9yYmVkaW5ndW5nIGZlaGxnZXNjaGxhZ2VuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlBheWxvYWRUb29MYXJnZTpcbiAgICAgIHJldHVybiAnTnV0emxhc3QgenUgZ3Jvw58nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVXJpVG9vTG9uZzpcbiAgICAgIHJldHVybiAnVVJJIHp1IGxhbmcnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5zdXBwb3J0ZWRNZWRpYVR5cGU6XG4gICAgICByZXR1cm4gJ05pY2h0IHVudGVyc3TDvHR6dGVyIE1lZGllbnR5cCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SYW5nZU5vdFNhdGlzZmlhYmxlOlxuICAgICAgcmV0dXJuICdCZXJlaWNoIG5pY2h0IHp1ZnJpZWRlbnN0ZWxsZW5kJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkV4cGVjdGF0aW9uRmFpbGVkOlxuICAgICAgcmV0dXJuICdFcndhcnR1bmcgZmVobGdlc2NobGFnZW4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSW1BVGVhcG90OlxuICAgICAgcmV0dXJuICdJY2ggYmluIGVpbmUgVGVla2FubmUnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTWlzZGlyZWN0ZWRSZXF1ZXN0OlxuICAgICAgcmV0dXJuICdGZWhsZ2VsZWl0ZXRlIEFuZnJhZ2UnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5wcm9jZXNzYWJsZUVudGl0eTpcbiAgICAgIHJldHVybiAnVW52ZXJhcmJlaXRiYXJlIEVudGl0w6R0JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxvY2tlZDpcbiAgICAgIHJldHVybiAnR2VzcGVycnQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRmFpbGVkRGVwZW5kZW5jeTpcbiAgICAgIHJldHVybiAnRmVobGdlc2NobGFnZW5lIEFiaMOkbmdpZ2tlaXQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVG9vRWFybHk6XG4gICAgICByZXR1cm4gJ1p1IGZyw7xoJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVwZ3JhZGVSZXF1aXJlZDpcbiAgICAgIHJldHVybiAnVXBncmFkZSBlcmZvcmRlcmxpY2gnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUHJlY29uZGl0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1ZvcmJlZGluZ3VuZyBlcmZvcmRlcmxpY2gnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzOlxuICAgICAgcmV0dXJuICdadSB2aWVsZSBBbmZyYWdlbic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6XG4gICAgICByZXR1cm4gJ0FuZm9yZGVydW5nc2tvcGZmZWxkZXIgenUgZ3Jvw58nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6XG4gICAgICByZXR1cm4gJ0F1cyByZWNodGxpY2hlbiBHcsO8bmRlbiBuaWNodCB2ZXJmw7xnYmFyJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkludGVybmFsU2VydmVyRXJyb3I6XG4gICAgICByZXR1cm4gJ0ludGVybmVyIFNlcnZlcmZlaGxlcic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RJbXBsZW1lbnRlZDpcbiAgICAgIHJldHVybiAnTmljaHQgaW1wbGVtZW50aWVydCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRHYXRld2F5OlxuICAgICAgcmV0dXJuICdTY2hsZWNodGVzIEdhdGV3YXknO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuU2VydmljZVVuYXZhaWxhYmxlOlxuICAgICAgcmV0dXJuICdEaWVuc3QgbmljaHQgdmVyZsO8Z2Jhcic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5HYXRld2F5VGltZW91dDpcbiAgICAgIHJldHVybiAnR2F0ZXdheS1aZWl0w7xiZXJzY2hyZWl0dW5nJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOlxuICAgICAgcmV0dXJuICdIVFRQLVZlcnNpb24gbmljaHQgdW50ZXJzdMO8dHp0JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlZhcmlhbnRBbHNvTmVnb3RpYXRlczpcbiAgICAgIHJldHVybiAnVmFyaWFudGUgdmVyaGFuZGVsdCBhdWNoJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkluc3VmZmljaWVudFN0b3JhZ2U6XG4gICAgICByZXR1cm4gJ1VuenVyZWljaGVuZGVyIFNwZWljaGVyJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxvb3BEZXRlY3RlZDpcbiAgICAgIHJldHVybiAnU2NobGVpZmVuZXJrZW5udW5nJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEV4dGVuZGVkOlxuICAgICAgcmV0dXJuICdOaWNodCBlcndlaXRlcnQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ05ldHp3ZXJrYXV0aGVudGlmaXppZXJ1bmcgZXJmb3JkZXJsaWNoJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdFdHdhcyBpc3Qgc2NoaWVmIGdlbGF1ZmVuJztcbiAgfVxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnZXRRdWVyeUVycm9yJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUVVFUllfRVJST1JfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogUXVlcnlFcnJvckRpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBRdWVyeUVycm9yRGlyZWN0aXZlIHtcbiAgZXJyb3IgPSBpbnB1dC5yZXF1aXJlZDxSZXF1ZXN0RXJyb3IgfCBudWxsPigpO1xuICBxdWVyeSA9IGlucHV0LnJlcXVpcmVkPEFueVF1ZXJ5IHwgQW55UXVlcnlDb2xsZWN0aW9uIHwgbnVsbD4oKTtcbiAgbGFuZ3VhZ2UgPSBpbnB1dDwnZW4nIHwgJ2RlJz4oJ2VuJyk7XG5cbiAgcmVhZG9ubHkgZXJyb3JMaXN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gdGhpcy5lcnJvcigpO1xuXG4gICAgaWYgKCFlcnJvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmV0cnlSZXN1bHQgPSBzaG91bGRSZXRyeVJlcXVlc3QoeyBlcnJvciwgY3VycmVudFJldHJ5Q291bnQ6IDAsIGhlYWRlcnM6IHt9IH0pO1xuXG4gICAgY29uc3QgZXJyb3JMaXN0OiBRdWVyeUVycm9yTGlzdCA9IHtcbiAgICAgIGNhbkJlUmV0cmllZDogcmV0cnlSZXN1bHQucmV0cnksXG4gICAgICByZXRyeURlbGF5OiByZXRyeVJlc3VsdC5kZWxheSA/PyAwLFxuICAgICAgaXNMaXN0OiBmYWxzZSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIHRpdGxlOlxuICAgICAgICBlcnJvci5zdGF0dXNUZXh0LnRvTG93ZXJDYXNlKCkgPT09ICdvaydcbiAgICAgICAgICA/IHRoaXMubGFuZ3VhZ2UoKSA9PT0gJ2VuJ1xuICAgICAgICAgICAgPyBjb252ZXJ0SHR0cFN0YXR1c0NvZGVUb1RpdGxlRW4oZXJyb3Iuc3RhdHVzKVxuICAgICAgICAgICAgOiBjb252ZXJ0SHR0cFN0YXR1c0NvZGVUb1RpdGxlRGUoZXJyb3Iuc3RhdHVzKVxuICAgICAgICAgIDogZXJyb3Iuc3RhdHVzVGV4dCxcbiAgICB9O1xuXG4gICAgY29uc3QgZGV0YWlsID0gZXJyb3IuZGV0YWlsO1xuICAgIGNvbnN0IGRlZmF1bHRFcnJvck1lc3NhZ2UgPSBgJHt0aGlzLmxhbmd1YWdlKCkgPT09ICdlbicgPyBjb252ZXJ0SHR0cFN0YXR1c0NvZGVUb01lc3NhZ2VFbihlcnJvci5zdGF0dXMpIDogY29udmVydEh0dHBTdGF0dXNDb2RlVG9NZXNzYWdlRGUoZXJyb3Iuc3RhdHVzKX0gKENvZGU6ICR7ZXJyb3Iuc3RhdHVzfSlgO1xuXG4gICAgaWYgKGlzQ2xhc3NWYWxpZGF0b3JFcnJvcihkZXRhaWwpKSB7XG4gICAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGRldGFpbC5tZXNzYWdlKSB7XG4gICAgICAgIGVycm9yTGlzdC5pdGVtcy5wdXNoKHsgbWVzc2FnZTogZXJyb3IgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1N5bWZvbnlGb3JtVmlvbGF0aW9uTGlzdEVycm9yKGRldGFpbCkpIHtcbiAgICAgIGZvciAoY29uc3QgdmlvbGF0aW9uIG9mIGRldGFpbC52aW9sYXRpb25zKSB7XG4gICAgICAgIGVycm9yTGlzdC5pdGVtcy5wdXNoKHsgbWVzc2FnZTogdmlvbGF0aW9uLm1lc3NhZ2UgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1N5bWZvbnlMaXN0RXJyb3IoZGV0YWlsKSkge1xuICAgICAgZm9yIChjb25zdCBlcnJvciBvZiBkZXRhaWwpIHtcbiAgICAgICAgZXJyb3JMaXN0Lml0ZW1zLnB1c2goeyBtZXNzYWdlOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRldGFpbCA9PT0gJ29iamVjdCcgJiYgISFkZXRhaWwgJiYgJ21lc3NhZ2UnIGluIGRldGFpbCAmJiB0eXBlb2YgZGV0YWlsLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlcnJvckxpc3QuaXRlbXMucHVzaCh7IG1lc3NhZ2U6IGRldGFpbC5tZXNzYWdlIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRldGFpbCA9PT0gJ29iamVjdCcgJiYgISFkZXRhaWwgJiYgJ2RldGFpbCcgaW4gZGV0YWlsICYmIHR5cGVvZiBkZXRhaWwuZGV0YWlsID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gU3ltZm9ueSBlcnJvciByZXNwb25zZSAoZHVyaW5nIGRldmVsb3BtZW50KVxuICAgICAgZXJyb3JMaXN0Lml0ZW1zLnB1c2goeyBtZXNzYWdlOiBkZXRhaWwuZGV0YWlsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvckxpc3QuaXRlbXMucHVzaCh7IG1lc3NhZ2U6IGRlZmF1bHRFcnJvck1lc3NhZ2UgfSk7XG4gICAgfVxuXG4gICAgZXJyb3JMaXN0LmlzTGlzdCA9IGVycm9yTGlzdC5pdGVtcy5sZW5ndGggPiAxO1xuXG4gICAgaWYgKGVycm9yTGlzdC5pdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmVTdHJpbmcgPSAoc3RyOiBzdHJpbmcpID0+IHN0ci50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccy9nLCAnJykucmVwbGFjZSgvXFwufCwvZywgJycpO1xuXG4gICAgICBpZiAoY29tcGFyZVN0cmluZyhlcnJvckxpc3QuaXRlbXNbMF0hLm1lc3NhZ2UpID09PSBjb21wYXJlU3RyaW5nKGVycm9yTGlzdC50aXRsZSkpIHtcbiAgICAgICAgLy8gT2Z0ZW4gdGhlIGVycm9yIHRpdGxlIGlzIHRoZSBzYW1lIGFzIHRoZSBlcnJvciBtZXNzYWdlLiBJbiB0aGlzIGNhc2Ugd2Ugc2ltcGx5IHVzZSB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFzIGEgbWVzc2FnZS5cbiAgICAgICAgLy8gVGhpcyB3YXkgdGhlIHNhbWUgdGV4dCBpcyBhdCBsZWFzdCBub3QgZGlzcGxheWVkIHR3aWNlLlxuICAgICAgICBlcnJvckxpc3QuaXRlbXNbMF0hLm1lc3NhZ2UgPSBkZWZhdWx0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcnJvckxpc3Q7XG4gIH0pO1xufVxuIl19
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZXJyb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3F1ZXJ5LWVycm9yL2RpcmVjdGl2ZXMvcXVlcnktZXJyb3IvcXVlcnktZXJyb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUtMLHFCQUFxQixFQUNyQiwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLGdCQUFnQixDQUFDOztBQUd4QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsNkJBQTZCLENBQUMsQ0FBQztBQUV4RyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxDQUFDLFVBQTBCLEVBQUUsRUFBRTtJQUM3RSxRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CO1lBQ0UsT0FBTyxtRUFBbUUsQ0FBQztRQUM3RTtZQUNFLE9BQU8sMkVBQTJFLENBQUM7UUFDckY7WUFDRSxPQUFPLDhDQUE4QyxDQUFDO1FBQ3hEO1lBQ0UsT0FBTyxvREFBb0QsQ0FBQztRQUM5RDtZQUNFLE9BQU8sdUNBQXVDLENBQUM7UUFDakQ7WUFDRSxPQUFPLHdEQUF3RCxDQUFDO1FBQ2xFO1lBQ0UsT0FBTyx3R0FBd0csQ0FBQztRQUNsSDtZQUNFLE9BQU8sMkRBQTJELENBQUM7UUFDckU7WUFDRSxPQUFPLCtDQUErQyxDQUFDO1FBQ3pEO1lBQ0UsT0FBTywrREFBK0QsQ0FBQztRQUN6RTtZQUNFLE9BQU8sZ0ZBQWdGLENBQUM7UUFDMUY7WUFDRSxPQUFPLHFHQUFxRyxDQUFDO1FBQy9HO1lBQ0UsT0FBTywwRkFBMEYsQ0FBQztRQUNwRztZQUNFLE9BQU8sc0VB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R0FBbkIsbUJBQW1CLDRaQVBuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxtQkFBbUI7YUFDakM7U0FDRjs7MkZBRVUsbUJBQW1CO2tCQVYvQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcscUJBQXFCO3lCQUNqQztxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4sIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQW55UXVlcnksXG4gIEFueVF1ZXJ5Q29sbGVjdGlvbixcbiAgSHR0cFN0YXR1c0NvZGUsXG4gIFJlcXVlc3RFcnJvcixcbiAgaXNDbGFzc1ZhbGlkYXRvckVycm9yLFxuICBpc1N5bWZvbnlGb3JtVmlvbGF0aW9uTGlzdEVycm9yLFxuICBpc1N5bWZvbnlMaXN0RXJyb3IsXG4gIHNob3VsZFJldHJ5UmVxdWVzdCxcbn0gZnJvbSAnQGV0aGxldGUvcXVlcnknO1xuaW1wb3J0IHsgUXVlcnlFcnJvckxpc3QgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBRVUVSWV9FUlJPUl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxRdWVyeUVycm9yRGlyZWN0aXZlPignUVVFUllfRVJST1JfRElSRUNUSVZFX1RPS0VOJyk7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHR0cFN0YXR1c0NvZGVUb01lc3NhZ2VFbiA9IChzdGF0dXNDb2RlOiBIdHRwU3RhdHVzQ29kZSkgPT4ge1xuICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHtcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkJhZFJlcXVlc3Q6XG4gICAgICByZXR1cm4gJ1NvcnJ5LCB3ZSBjb3VsZCBub3QgcHJvY2VzcyB5b3VyIHJlcXVlc3QuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZDpcbiAgICAgIHJldHVybiAnWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBQbGVhc2UgbG9nIGluIHRvIGNvbnRpbnVlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QYXltZW50UmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1BheW1lbnQgaXMgcmVxdWlyZWQgdG8gY29tcGxldGUgdGhpcyBhY3Rpb24uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkZvcmJpZGRlbjpcbiAgICAgIHJldHVybiAnWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQ6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0ZWQgcmVzb3VyY2Ugd2FzIG5vdCBmb3VuZC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTWV0aG9kTm90QWxsb3dlZDpcbiAgICAgIHJldHVybiAnVGhlIHJlcXVlc3RlZCBtZXRob2QgaXMgbm90IGFsbG93ZWQgZm9yIHRoaXMgcmVzb3VyY2UuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEFjY2VwdGFibGU6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgaXMgbm90IGNhcGFibGUgb2YgZ2VuZXJhdGluZyBhIHJlc3BvbnNlIG1hdGNoaW5nIHRoZSBsaXN0IG9mIGFjY2VwdGFibGUgdmFsdWVzLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Qcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1Byb3h5IGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoaXMgYWN0aW9uLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0VGltZW91dDpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciB0aW1lZCBvdXQgd2FpdGluZyBmb3IgdGhlIHJlcXVlc3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkNvbmZsaWN0OlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdCBjb25mbGljdHMgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcmVzb3VyY2UuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkdvbmU6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0ZWQgcmVzb3VyY2UgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSBhbmQgd2lsbCBub3QgYmUgYXZhaWxhYmxlIGFnYWluLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5MZW5ndGhSZXF1aXJlZDpcbiAgICAgIHJldHVybiAnVGhlIHJlcXVlc3QgZGlkIG5vdCBzcGVjaWZ5IHRoZSBsZW5ndGggb2YgaXRzIGNvbnRlbnQsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByZWNvbmRpdGlvbkZhaWxlZDpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciBkb2VzIG5vdCBtZWV0IG9uZSBvZiB0aGUgcHJlY29uZGl0aW9ucyB0aGF0IHRoZSByZXF1ZXN0ZXIgcHV0IG9uIHRoZSByZXF1ZXN0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QYXlsb2FkVG9vTGFyZ2U6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0IGlzIGxhcmdlciB0aGFuIHRoZSBzZXJ2ZXIgaXMgd2lsbGluZyBvciBhYmxlIHRvIHByb2Nlc3MuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVyaVRvb0xvbmc6XG4gICAgICByZXR1cm4gJ1RoZSBVUkwgcHJvdmlkZWQgd2FzIHRvbyBsb25nIGZvciB0aGUgc2VydmVyIHRvIHByb2Nlc3MuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuc3VwcG9ydGVkTWVkaWFUeXBlOlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdCBlbnRpdHkgaGFzIGEgbWVkaWEgdHlwZSB3aGljaCB0aGUgc2VydmVyIG9yIHJlc291cmNlIGRvZXMgbm90IHN1cHBvcnQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJhbmdlTm90U2F0aXNmaWFibGU6XG4gICAgICByZXR1cm4gJ1RoZSBjbGllbnQgaGFzIGFza2VkIGZvciBhIHBvcnRpb24gb2YgdGhlIGZpbGUsIGJ1dCB0aGUgc2VydmVyIGNhbm5vdCBzdXBwbHkgdGhhdCBwb3J0aW9uLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5FeHBlY3RhdGlvbkZhaWxlZDpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciBjYW5ub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBFeHBlY3QgcmVxdWVzdC1oZWFkZXIgZmllbGQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkltQVRlYXBvdDpcbiAgICAgIHJldHVybiAnSSBhbSBhIHRlYXBvdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTWlzZGlyZWN0ZWRSZXF1ZXN0OlxuICAgICAgcmV0dXJuICdUaGUgcmVxdWVzdCB3YXMgZGlyZWN0ZWQgYXQgYSBzZXJ2ZXIgdGhhdCBpcyBub3QgYWJsZSB0byBwcm9kdWNlIGEgcmVzcG9uc2UuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVucHJvY2Vzc2FibGVFbnRpdHk6XG4gICAgICByZXR1cm4gJ1RoZSByZXF1ZXN0IHdhcyB3ZWxsLWZvcm1lZCBidXQgd2FzIHVuYWJsZSB0byBiZSBmb2xsb3dlZCBkdWUgdG8gc2VtYW50aWMgZXJyb3JzLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Mb2NrZWQ6XG4gICAgICByZXR1cm4gJ1RoZSByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkIGlzIGxvY2tlZC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRmFpbGVkRGVwZW5kZW5jeTpcbiAgICAgIHJldHVybiAnVGhlIHJlcXVlc3QgZmFpbGVkIGR1ZSB0byBmYWlsdXJlIG9mIGEgcHJldmlvdXMgcmVxdWVzdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVG9vRWFybHk6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgaXMgdW53aWxsaW5nIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QgYmVjYXVzZSB0aGUgdXNlciBoYXMgbm90IGJlZW4gYXV0aGVudGljYXRlZC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVXBncmFkZVJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdUaGUgY2xpZW50IHNob3VsZCBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgcHJvdG9jb2wgc3VjaCBhcyBUTFMvMS4wLCBnaXZlbiBpbiB0aGUgVXBncmFkZSBoZWFkZXIgZmllbGQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByZWNvbmRpdGlvblJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdUaGUgb3JpZ2luIHNlcnZlciByZXF1aXJlcyB0aGUgcmVxdWVzdCB0byBiZSBjb25kaXRpb25hbC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzOlxuICAgICAgcmV0dXJuICdZb3UgaGF2ZSBzZW50IHRvbyBtYW55IHJlcXVlc3RzIGluIGEgZ2l2ZW4gYW1vdW50IG9mIHRpbWUuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciBpcyB1bndpbGxpbmcgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCBiZWNhdXNlIGl0cyBoZWFkZXIgZmllbGRzIGFyZSB0b28gbGFyZ2UuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOlxuICAgICAgcmV0dXJuICdUaGUgcmVzb3VyY2UgaXMgdW5hdmFpbGFibGUgZHVlIHRvIGEgbGVnYWwgZGVtYW5kLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yOlxuICAgICAgcmV0dXJuICdTb21ldGhpbmcgd2VudCB3cm9uZyBvbiBvdXIgZW5kLiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RJbXBsZW1lbnRlZDpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkJhZEdhdGV3YXk6XG4gICAgICByZXR1cm4gJ1NvbWV0aGluZyB3ZW50IHdyb25nIG9uIG91ciBlbmQuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlNlcnZpY2VVbmF2YWlsYWJsZTpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciBpcyBjdXJyZW50bHkgdW5hYmxlIHRvIGhhbmRsZSB0aGUgcmVxdWVzdCBkdWUgdG8gYSB0ZW1wb3Jhcnkgb3ZlcmxvYWQgb3IgbWFpbnRlbmFuY2Ugb2YgdGhlIHNlcnZlci4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuR2F0ZXdheVRpbWVvdXQ6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIsIHdoaWxlIGFjdGluZyBhcyBhIGdhdGV3YXkgb3IgcHJveHksIGRpZCBub3QgcmVjZWl2ZSBhIHRpbWVseSByZXNwb25zZSBmcm9tIHRoZSB1cHN0cmVhbSBzZXJ2ZXIgc3BlY2lmaWVkIGJ5IHRoZSBVUkwgb3Igc29tZSBvdGhlciBhdXhpbGlhcnkgc2VydmVyIGl0IG5lZWRlZCB0byBhY2Nlc3MgaW4gYXR0ZW1wdGluZyB0byBjb21wbGV0ZSB0aGUgcmVxdWVzdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6XG4gICAgICByZXR1cm4gJ1RoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uIHVzZWQgaW4gdGhlIHJlcXVlc3QuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlZhcmlhbnRBbHNvTmVnb3RpYXRlczpcbiAgICAgIHJldHVybiAnVGhlIHNlcnZlciBoYXMgYW4gaW50ZXJuYWwgY29uZmlndXJhdGlvbiBlcnJvcjogdGhlIGNob3NlbiB2YXJpYW50IHJlc291cmNlIGlzIGNvbmZpZ3VyZWQgdG8gZW5nYWdlIGluIHRyYW5zcGFyZW50IGNvbnRlbnQgbmVnb3RpYXRpb24gaXRzZWxmLCBhbmQgaXMgdGhlcmVmb3JlIG5vdCBhIHByb3BlciBlbmQgcG9pbnQgaW4gdGhlIG5lZ290aWF0aW9uIHByb2Nlc3MuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkluc3VmZmljaWVudFN0b3JhZ2U6XG4gICAgICByZXR1cm4gJ1RoZSBtZXRob2QgY291bGQgbm90IGJlIHBlcmZvcm1lZCBvbiB0aGUgcmVzb3VyY2UgYmVjYXVzZSB0aGUgc2VydmVyIGlzIHVuYWJsZSB0byBzdG9yZSB0aGUgcmVwcmVzZW50YXRpb24gbmVlZGVkIHRvIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGUgcmVxdWVzdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTG9vcERldGVjdGVkOlxuICAgICAgcmV0dXJuICdUaGUgc2VydmVyIGRldGVjdGVkIGFuIGluZmluaXRlIGxvb3Agd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90RXh0ZW5kZWQ6XG4gICAgICByZXR1cm4gJ0Z1cnRoZXIgZXh0ZW5zaW9ucyB0byB0aGUgcmVxdWVzdCBhcmUgcmVxdWlyZWQgZm9yIHRoZSBzZXJ2ZXIgdG8gZnVsZmlsbCBpdC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1lvdSBuZWVkIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzLic7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIENoZWNrIHlvdXIgaW50ZXJuZXQgY29ubmVjdGlvbiBhbmQgdHJ5IGFnYWluIGxhdGVyLic7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHR0cFN0YXR1c0NvZGVUb01lc3NhZ2VEZSA9IChzdGF0dXNDb2RlOiBIdHRwU3RhdHVzQ29kZSkgPT4ge1xuICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHtcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkJhZFJlcXVlc3Q6XG4gICAgICByZXR1cm4gJ0VudHNjaHVsZGlndW5nLCB3aXIga29ubnRlbiBJaHJlIEFuZnJhZ2UgbmljaHQgYmVhcmJlaXRlbi4gQml0dGUgdmVyc3VjaGVuIFNpZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkOlxuICAgICAgcmV0dXJuICdTaWUgc2luZCBuaWNodCBiZXJlY2h0aWd0LCBkaWVzZSBBa3Rpb24gYXVzenVmw7xocmVuLiBCaXR0ZSBtZWxkZW4gU2llIHNpY2ggYW4sIHVtIGZvcnR6dWZhaHJlbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bWVudFJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdadXIgQXVzZsO8aHJ1bmcgZGllc2VyIEFrdGlvbiBpc3QgZWluZSBaYWhsdW5nIGVyZm9yZGVybGljaC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRm9yYmlkZGVuOlxuICAgICAgcmV0dXJuICdTaWUgaGFiZW4ga2VpbmUgQmVyZWNodGlndW5nLCBkaWVzZSBBa3Rpb24gYXVzenVmw7xocmVuLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZDpcbiAgICAgIHJldHVybiAnRGllIGFuZ2Vmb3JkZXJ0ZSBSZXNzb3VyY2Ugd3VyZGUgbmljaHQgZ2VmdW5kZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk1ldGhvZE5vdEFsbG93ZWQ6XG4gICAgICByZXR1cm4gJ0RpZSBhbmdlZm9yZGVydGUgTWV0aG9kZSBpc3QgZsO8ciBkaWVzZSBSZXNzb3VyY2UgbmljaHQgenVsw6Rzc2lnLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RBY2NlcHRhYmxlOlxuICAgICAgcmV0dXJuICdEaWUgYW5nZWZvcmRlcnRlIFJlc3NvdXJjZSBpc3QgbmljaHQgaW4gZGVyIExhZ2UsIGVpbmUgQW50d29ydCB6dSBnZW5lcmllcmVuLCBkaWUgZGVyIExpc3RlIGRlciBha3plcHRhYmxlbiBXZXJ0ZSBlbnRzcHJpY2h0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Qcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1p1ciBBdXNmw7xocnVuZyBkaWVzZXIgQWt0aW9uIGlzdCBlaW5lIFByb3h5LUF1dGhlbnRpZml6aWVydW5nIGVyZm9yZGVybGljaC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQ6XG4gICAgICByZXR1cm4gJ0RlciBTZXJ2ZXIgaGF0IGF1ZiBkaWUgQW5mb3JkZXJ1bmcgZ2V3YXJ0ZXQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkNvbmZsaWN0OlxuICAgICAgcmV0dXJuICdEaWUgQW5mb3JkZXJ1bmcgc3RlaHQgaW0gV2lkZXJzcHJ1Y2ggenVtIGFrdHVlbGxlbiBadXN0YW5kIGRlciBSZXNzb3VyY2UuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkdvbmU6XG4gICAgICByZXR1cm4gJ0RpZSBhbmdlZm9yZGVydGUgUmVzc291cmNlIGlzdCBuaWNodCBtZWhyIHZlcmbDvGdiYXIgdW5kIHdpcmQgYXVjaCBuaWNodCBtZWhyIHZlcmbDvGdiYXIgc2Vpbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTGVuZ3RoUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ0RpZSBBbmZvcmRlcnVuZyBoYXQgZGllIEzDpG5nZSBpaHJlcyBJbmhhbHRzIG5pY2h0IGFuZ2VnZWJlbiwgZGllIHZvbiBkZXIgYW5nZWZvcmRlcnRlbiBSZXNzb3VyY2UgYmVuw7Z0aWd0IHdpcmQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByZWNvbmRpdGlvbkZhaWxlZDpcbiAgICAgIHJldHVybiAnRGVyIFNlcnZlciBlcmbDvGxsdCBlaW5lIGRlciBWb3JhdXNzZXR6dW5nZW4gbmljaHQsIGRpZSBkZXIgQW5mb3JkZXJlciBhbiBkaWUgQW5mb3JkZXJ1bmcgZ2VzdGVsbHQgaGF0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QYXlsb2FkVG9vTGFyZ2U6XG4gICAgICByZXR1cm4gJ0RpZSBBbmZvcmRlcnVuZyBpc3QgZ3LDtsOfZXIgYWxzIGRlciBTZXJ2ZXIgYmVyZWl0IG9kZXIgaW4gZGVyIExhZ2UgaXN0LCB6dSB2ZXJhcmJlaXRlbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVXJpVG9vTG9uZzpcbiAgICAgIHJldHVybiAnRGllIGJlcmVpdGdlc3RlbGx0ZSBVUkwgd2FyIGbDvHIgZGVuIFNlcnZlciB6dSBsYW5nLCB1bSBzaWUgenUgdmVyYXJiZWl0ZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVuc3VwcG9ydGVkTWVkaWFUeXBlOlxuICAgICAgcmV0dXJuICdEaWUgQW5mb3JkZXJ1bmdzZWluaGVpdCBoYXQgZWluZW4gTWVkaWVudHlwLCBkZW4gZGVyIFNlcnZlciBvZGVyIGRpZSBSZXNzb3VyY2UgbmljaHQgdW50ZXJzdMO8dHp0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SYW5nZU5vdFNhdGlzZmlhYmxlOlxuICAgICAgcmV0dXJuICdEZXIgQ2xpZW50IGhhdCBlaW5lbiBUZWlsIGRlciBEYXRlaSBhbmdlZm9yZGVydCwgYWJlciBkZXIgU2VydmVyIGthbm4gZGllc2VuIFRlaWwgbmljaHQgbGllZmVybi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRXhwZWN0YXRpb25GYWlsZWQ6XG4gICAgICByZXR1cm4gJ0RlciBTZXJ2ZXIga2FubiBkaWUgQW5mb3JkZXJ1bmdlbiBkZXMgRXJ3YXJ0dW5nLUFuZm9yZGVydW5nc2tvcGZmZWxkcyBuaWNodCBlcmbDvGxsZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkltQVRlYXBvdDpcbiAgICAgIHJldHVybiAnSWNoIGJpbiBlaW5lIFRlZWthbm5lLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5NaXNkaXJlY3RlZFJlcXVlc3Q6XG4gICAgICByZXR1cm4gJ0RpZSBBbmZvcmRlcnVuZyB3dXJkZSBhbiBlaW5lbiBTZXJ2ZXIgZ2VyaWNodGV0LCBkZXIgbmljaHQgaW4gZGVyIExhZ2UgaXN0LCBlaW5lIEFudHdvcnQgenUgZ2VuZXJpZXJlbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5wcm9jZXNzYWJsZUVudGl0eTpcbiAgICAgIHJldHVybiAnRGllIEFuZm9yZGVydW5nIHdhciBndXQgZm9ybXVsaWVydCwga29ubnRlIGFiZXIgYXVmZ3J1bmQgc2VtYW50aXNjaGVyIEZlaGxlciBuaWNodCBiZWZvbGd0IHdlcmRlbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTG9ja2VkOlxuICAgICAgcmV0dXJuICdEaWUgUmVzc291cmNlLCBhdWYgZGllIHp1Z2VncmlmZmVuIHdpcmQsIGlzdCBnZXNwZXJydC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRmFpbGVkRGVwZW5kZW5jeTpcbiAgICAgIHJldHVybiAnRGllIEFuZm9yZGVydW5nIGlzdCBhdWZncnVuZCBlaW5lcyBGZWhsZXJzIGVpbmVyIHZvcmhlcmlnZW4gQW5mb3JkZXJ1bmcgZmVobGdlc2NobGFnZW4uJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlRvb0Vhcmx5OlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIGlzdCBuaWNodCBiZXJlaXQsIGRpZSBBbmZvcmRlcnVuZyB6dSB2ZXJhcmJlaXRlbiwgd2VpbCBkZXIgQmVudXR6ZXIgbmljaHQgYXV0aGVudGlmaXppZXJ0IHd1cmRlLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VcGdyYWRlUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ0RlciBDbGllbnQgc29sbHRlIHp1IGVpbmVtIGFuZGVyZW4gUHJvdG9rb2xsIHdpZSBUTFMvMS4wIHdlY2hzZWxuLCBkYXMgaW0gVXBncmFkZS1BbmZvcmRlcnVuZ3Nrb3BmZmVsZCBhbmdlZ2ViZW4gaXN0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QcmVjb25kaXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnRGVyIFVyc3BydW5nc3NlcnZlciBlcmZvcmRlcnQsIGRhc3MgZGllIEFuZm9yZGVydW5nIGJlZGluZ3QgaXN0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ub29NYW55UmVxdWVzdHM6XG4gICAgICByZXR1cm4gJ1NpZSBoYWJlbiBpbiBlaW5lciBiZXN0aW1tdGVuIFplaXQgenUgdmllbGUgQW5mcmFnZW4gZ2VzZW5kZXQuIEJpdHRlIHZlcnN1Y2hlbiBTaWUgZXMgc3DDpHRlciBlcm5ldXQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTpcbiAgICAgIHJldHVybiAnRGVyIFNlcnZlciBpc3QgbmljaHQgYmVyZWl0LCBkaWUgQW5mb3JkZXJ1bmcgenUgdmVyYXJiZWl0ZW4sIHdlaWwgc2VpbmUgS29wZmZlbGRlciB6dSBncm/DnyBzaW5kLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczpcbiAgICAgIHJldHVybiAnRGllIFJlc3NvdXJjZSBpc3QgYXVmZ3J1bmQgZWluZXIgcmVjaHRsaWNoZW4gRm9yZGVydW5nIG5pY2h0IHZlcmbDvGdiYXIuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkludGVybmFsU2VydmVyRXJyb3I6XG4gICAgICByZXR1cm4gJ0V0d2FzIGlzdCBzY2hpZWYgZ2VsYXVmZW4uIEJpdHRlIHZlcnN1Y2hlbiBTaWUgZXMgc3DDpHRlciBlcm5ldXQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEltcGxlbWVudGVkOlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIHVudGVyc3TDvHR6dCBkaWUgenVyIEVyZsO8bGx1bmcgZGVyIEFuZm9yZGVydW5nIGVyZm9yZGVybGljaGUgRnVua3Rpb25hbGl0w6R0IG5pY2h0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRHYXRld2F5OlxuICAgICAgcmV0dXJuICdFdHdhcyBpc3Qgc2NoaWVmIGdlbGF1ZmVuLiBCaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIHNww6R0ZXIgZXJuZXV0Lic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5TZXJ2aWNlVW5hdmFpbGFibGU6XG4gICAgICByZXR1cm4gJ0RlciBTZXJ2ZXIga2FubiBkaWUgQW5mb3JkZXJ1bmcgZGVyemVpdCBuaWNodCBiZWFyYmVpdGVuLCBkYSBlciB2b3LDvGJlcmdlaGVuZCDDvGJlcmxhc3RldCBvZGVyIGdld2FydGV0IHdpcmQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkdhdGV3YXlUaW1lb3V0OlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIGhhdCBiZWltIFZlcnN1Y2gsIGRpZSBBbmZvcmRlcnVuZyBhYnp1c2NobGllw59lbiwga2VpbmUgcmVjaHR6ZWl0aWdlIEFudHdvcnQgdm9tIFNlcnZlciBlcmhhbHRlbi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6XG4gICAgICByZXR1cm4gJ0RlciBTZXJ2ZXIgdW50ZXJzdMO8dHp0IGRpZSBpbiBkZXIgQW5mb3JkZXJ1bmcgdmVyd2VuZGV0ZSBIVFRQLVByb3Rva29sbHZlcnNpb24gbmljaHQuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlZhcmlhbnRBbHNvTmVnb3RpYXRlczpcbiAgICAgIHJldHVybiAnRGVyIFNlcnZlciBoYXQgZWluZW4gaW50ZXJuZW4gS29uZmlndXJhdGlvbnNmZWhsZXI6IERpZSBhdXNnZXfDpGhsdGUgVmFyaWFudGVucmVzc291cmNlIGlzdCBzbyBrb25maWd1cmllcnQsIGRhc3Mgc2llIHNpY2ggc2VsYnN0IGluIGRpZSB0cmFuc3BhcmVudGUgSW5oYWx0c3ZlcmhhbmRsdW5nIGVpbmJpbmRldCwgdW5kIGlzdCBkYWhlciBrZWluIGdlZWlnbmV0ZXIgRW5kcHVua3QgaW0gVmVyaGFuZGx1bmdzcHJvemVzcy4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSW5zdWZmaWNpZW50U3RvcmFnZTpcbiAgICAgIHJldHVybiAnRGllIE1ldGhvZGUga29ubnRlIGF1ZiBkaWUgUmVzc291cmNlIG5pY2h0IGFuZ2V3ZW5kZXQgd2VyZGVuLCB3ZWlsIGRlciBTZXJ2ZXIgbmljaHQgaW4gZGVyIExhZ2UgaXN0LCBkaWUgZsO8ciBkaWUgZXJmb2xncmVpY2hlIEF1c2bDvGhydW5nIGRlciBBbmZvcmRlcnVuZyBlcmZvcmRlcmxpY2hlIERhcnN0ZWxsdW5nIHp1IHNwZWljaGVybi4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTG9vcERldGVjdGVkOlxuICAgICAgcmV0dXJuICdEZXIgU2VydmVyIGhhdCBlaW5lIEVuZGxvc3NjaGxlaWZlIGVya2FubnQsIHfDpGhyZW5kIGVyIGRpZSBBbmZvcmRlcnVuZyB2ZXJhcmJlaXRldC4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90RXh0ZW5kZWQ6XG4gICAgICByZXR1cm4gJ1dlaXRlcmUgRXJ3ZWl0ZXJ1bmdlbiBkZXIgQW5mb3JkZXJ1bmcgc2luZCBlcmZvcmRlcmxpY2gsIGRhbWl0IGRlciBTZXJ2ZXIgc2llIGVyZsO8bGxlbiBrYW5uLic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnU2llIG3DvHNzZW4gc2ljaCBhdXRoZW50aWZpemllcmVuLCB1bSBadWdhbmcgenVtIE5ldHp3ZXJrIHp1IGVyaGFsdGVuLic7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnRXR3YXMgaXN0IHNjaGllZiBnZWxhdWZlbi4gw5xiZXJwcsO8ZmVuIFNpZSBJaHJlIEludGVybmV0dmVyYmluZHVuZyB1bmQgdmVyc3VjaGVuIFNpZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEh0dHBTdGF0dXNDb2RlVG9UaXRsZUVuID0gKHN0YXR1c0NvZGU6IEh0dHBTdGF0dXNDb2RlKSA9PiB7XG4gIHN3aXRjaCAoc3RhdHVzQ29kZSkge1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuQmFkUmVxdWVzdDpcbiAgICAgIHJldHVybiAnQmFkIHJlcXVlc3QnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkOlxuICAgICAgcmV0dXJuICdVbmF1dGhvcml6ZWQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bWVudFJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdQYXltZW50IHJlcXVpcmVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkZvcmJpZGRlbjpcbiAgICAgIHJldHVybiAnRm9yYmlkZGVuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kOlxuICAgICAgcmV0dXJuICdOb3QgZm91bmQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTWV0aG9kTm90QWxsb3dlZDpcbiAgICAgIHJldHVybiAnTWV0aG9kIG5vdCBhbGxvd2VkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEFjY2VwdGFibGU6XG4gICAgICByZXR1cm4gJ05vdCBhY2NlcHRhYmxlJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnUHJveHkgYXV0aGVudGljYXRpb24gcmVxdWlyZWQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQ6XG4gICAgICByZXR1cm4gJ1JlcXVlc3QgdGltZW91dCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Db25mbGljdDpcbiAgICAgIHJldHVybiAnQ29uZmxpY3QnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuR29uZTpcbiAgICAgIHJldHVybiAnR29uZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5MZW5ndGhSZXF1aXJlZDpcbiAgICAgIHJldHVybiAnTGVuZ3RoIHJlcXVpcmVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByZWNvbmRpdGlvbkZhaWxlZDpcbiAgICAgIHJldHVybiAnUHJlY29uZGl0aW9uIGZhaWxlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QYXlsb2FkVG9vTGFyZ2U6XG4gICAgICByZXR1cm4gJ1BheWxvYWQgdG9vIGxhcmdlJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVyaVRvb0xvbmc6XG4gICAgICByZXR1cm4gJ1VSSSB0b28gbG9uZyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbnN1cHBvcnRlZE1lZGlhVHlwZTpcbiAgICAgIHJldHVybiAnVW5zdXBwb3J0ZWQgbWVkaWEgdHlwZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SYW5nZU5vdFNhdGlzZmlhYmxlOlxuICAgICAgcmV0dXJuICdSYW5nZSBub3Qgc2F0aXNmaWFibGUnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRXhwZWN0YXRpb25GYWlsZWQ6XG4gICAgICByZXR1cm4gJ0V4cGVjdGF0aW9uIGZhaWxlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbUFUZWFwb3Q6XG4gICAgICByZXR1cm4gJ0kgYW0gYSB0ZWFwb3QnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTWlzZGlyZWN0ZWRSZXF1ZXN0OlxuICAgICAgcmV0dXJuICdNaXNkaXJlY3RlZCByZXF1ZXN0JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlVucHJvY2Vzc2FibGVFbnRpdHk6XG4gICAgICByZXR1cm4gJ1VucHJvY2Vzc2FibGUgZW50aXR5JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxvY2tlZDpcbiAgICAgIHJldHVybiAnTG9ja2VkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkZhaWxlZERlcGVuZGVuY3k6XG4gICAgICByZXR1cm4gJ0ZhaWxlZCBkZXBlbmRlbmN5JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlRvb0Vhcmx5OlxuICAgICAgcmV0dXJuICdUb28gZWFybHknO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVXBncmFkZVJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdVcGdyYWRlIHJlcXVpcmVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByZWNvbmRpdGlvblJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdQcmVjb25kaXRpb24gcmVxdWlyZWQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzOlxuICAgICAgcmV0dXJuICdUb28gbWFueSByZXF1ZXN0cyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6XG4gICAgICByZXR1cm4gJ1JlcXVlc3QgaGVhZGVyIGZpZWxkcyB0b28gbGFyZ2UnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM6XG4gICAgICByZXR1cm4gJ1VuYXZhaWxhYmxlIGZvciBsZWdhbCByZWFzb25zJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkludGVybmFsU2VydmVyRXJyb3I6XG4gICAgICByZXR1cm4gJ0ludGVybmFsIHNlcnZlciBlcnJvcic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RJbXBsZW1lbnRlZDpcbiAgICAgIHJldHVybiAnTm90IGltcGxlbWVudGVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkJhZEdhdGV3YXk6XG4gICAgICByZXR1cm4gJ0JhZCBnYXRld2F5JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlNlcnZpY2VVbmF2YWlsYWJsZTpcbiAgICAgIHJldHVybiAnU2VydmljZSB1bmF2YWlsYWJsZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5HYXRld2F5VGltZW91dDpcbiAgICAgIHJldHVybiAnR2F0ZXdheSB0aW1lb3V0JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkh0dHBWZXJzaW9uTm90U3VwcG9ydGVkOlxuICAgICAgcmV0dXJuICdIVFRQIHZlcnNpb24gbm90IHN1cHBvcnRlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5WYXJpYW50QWxzb05lZ290aWF0ZXM6XG4gICAgICByZXR1cm4gJ1ZhcmlhbnQgYWxzbyBuZWdvdGlhdGVzJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkluc3VmZmljaWVudFN0b3JhZ2U6XG4gICAgICByZXR1cm4gJ0luc3VmZmljaWVudCBzdG9yYWdlJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkxvb3BEZXRlY3RlZDpcbiAgICAgIHJldHVybiAnTG9vcCBkZXRlY3RlZCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RFeHRlbmRlZDpcbiAgICAgIHJldHVybiAnTm90IGV4dGVuZGVkJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdOZXR3b3JrIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdTb21ldGhpbmcgd2VudCB3cm9uZyc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0SHR0cFN0YXR1c0NvZGVUb1RpdGxlRGUgPSAoc3RhdHVzQ29kZTogSHR0cFN0YXR1c0NvZGUpID0+IHtcbiAgc3dpdGNoIChzdGF0dXNDb2RlKSB7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0OlxuICAgICAgcmV0dXJuICdVbmfDvGx0aWdlIEFuZnJhZ2UnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkOlxuICAgICAgcmV0dXJuICdOaWNodCBhdXRvcmlzaWVydCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QYXltZW50UmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ1phaGx1bmcgZXJmb3JkZXJsaWNoJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkZvcmJpZGRlbjpcbiAgICAgIHJldHVybiAnVmVyYm90ZW4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQ6XG4gICAgICByZXR1cm4gJ05pY2h0IGdlZnVuZGVuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk1ldGhvZE5vdEFsbG93ZWQ6XG4gICAgICByZXR1cm4gJ01ldGhvZGUgbmljaHQgZXJsYXVidCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ob3RBY2NlcHRhYmxlOlxuICAgICAgcmV0dXJuICdOaWNodCBha3plcHRhYmVsJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnUHJveHktQXV0aGVudGlmaXppZXJ1bmcgZXJmb3JkZXJsaWNoJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJlcXVlc3RUaW1lb3V0OlxuICAgICAgcmV0dXJuICdBbmZvcmRlcnVuZ3N6ZWl0w7xiZXJzY2hyZWl0dW5nJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkNvbmZsaWN0OlxuICAgICAgcmV0dXJuICdLb25mbGlrdCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Hb25lOlxuICAgICAgcmV0dXJuICdXZWcnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTGVuZ3RoUmVxdWlyZWQ6XG4gICAgICByZXR1cm4gJ0zDpG5nZSBlcmZvcmRlcmxpY2gnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUHJlY29uZGl0aW9uRmFpbGVkOlxuICAgICAgcmV0dXJuICdWb3JiZWRpbmd1bmcgZmVobGdlc2NobGFnZW4nO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuUGF5bG9hZFRvb0xhcmdlOlxuICAgICAgcmV0dXJuICdOdXR6bGFzdCB6dSBncm/Dnyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VcmlUb29Mb25nOlxuICAgICAgcmV0dXJuICdVUkkgenUgbGFuZyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbnN1cHBvcnRlZE1lZGlhVHlwZTpcbiAgICAgIHJldHVybiAnTmljaHQgdW50ZXJzdMO8dHp0ZXIgTWVkaWVudHlwJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJhbmdlTm90U2F0aXNmaWFibGU6XG4gICAgICByZXR1cm4gJ0JlcmVpY2ggbmljaHQgenVmcmllZGVuc3RlbGxlbmQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRXhwZWN0YXRpb25GYWlsZWQ6XG4gICAgICByZXR1cm4gJ0Vyd2FydHVuZyBmZWhsZ2VzY2hsYWdlbic7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5JbUFUZWFwb3Q6XG4gICAgICByZXR1cm4gJ0ljaCBiaW4gZWluZSBUZWVrYW5uZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5NaXNkaXJlY3RlZFJlcXVlc3Q6XG4gICAgICByZXR1cm4gJ0ZlaGxnZWxlaXRldGUgQW5mcmFnZSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbnByb2Nlc3NhYmxlRW50aXR5OlxuICAgICAgcmV0dXJuICdVbnZlcmFyYmVpdGJhcmUgRW50aXTDpHQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTG9ja2VkOlxuICAgICAgcmV0dXJuICdHZXNwZXJydCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5GYWlsZWREZXBlbmRlbmN5OlxuICAgICAgcmV0dXJuICdGZWhsZ2VzY2hsYWdlbmUgQWJow6RuZ2lna2VpdCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ub29FYXJseTpcbiAgICAgIHJldHVybiAnWnUgZnLDvGgnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVXBncmFkZVJlcXVpcmVkOlxuICAgICAgcmV0dXJuICdVcGdyYWRlIGVyZm9yZGVybGljaCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5QcmVjb25kaXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnVm9yYmVkaW5ndW5nIGVyZm9yZGVybGljaCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5Ub29NYW55UmVxdWVzdHM6XG4gICAgICByZXR1cm4gJ1p1IHZpZWxlIEFuZnJhZ2VuJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLlJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZTpcbiAgICAgIHJldHVybiAnQW5mb3JkZXJ1bmdza29wZmZlbGRlciB6dSBncm/Dnyc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uczpcbiAgICAgIHJldHVybiAnQXVzIHJlY2h0bGljaGVuIEdyw7xuZGVuIG5pY2h0IHZlcmbDvGdiYXInO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSW50ZXJuYWxTZXJ2ZXJFcnJvcjpcbiAgICAgIHJldHVybiAnSW50ZXJuZXIgU2VydmVyZmVobGVyJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEltcGxlbWVudGVkOlxuICAgICAgcmV0dXJuICdOaWNodCBpbXBsZW1lbnRpZXJ0JztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkJhZEdhdGV3YXk6XG4gICAgICByZXR1cm4gJ1NjaGxlY2h0ZXMgR2F0ZXdheSc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5TZXJ2aWNlVW5hdmFpbGFibGU6XG4gICAgICByZXR1cm4gJ0RpZW5zdCBuaWNodCB2ZXJmw7xnYmFyJztcbiAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLkdhdGV3YXlUaW1lb3V0OlxuICAgICAgcmV0dXJuICdHYXRld2F5LVplaXTDvGJlcnNjaHJlaXR1bmcnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQ6XG4gICAgICByZXR1cm4gJ0hUVFAtVmVyc2lvbiBuaWNodCB1bnRlcnN0w7x0enQnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuVmFyaWFudEFsc29OZWdvdGlhdGVzOlxuICAgICAgcmV0dXJuICdWYXJpYW50ZSB2ZXJoYW5kZWx0IGF1Y2gnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuSW5zdWZmaWNpZW50U3RvcmFnZTpcbiAgICAgIHJldHVybiAnVW56dXJlaWNoZW5kZXIgU3BlaWNoZXInO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTG9vcERldGVjdGVkOlxuICAgICAgcmV0dXJuICdTY2hsZWlmZW5lcmtlbm51bmcnO1xuICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuTm90RXh0ZW5kZWQ6XG4gICAgICByZXR1cm4gJ05pY2h0IGVyd2VpdGVydCc7XG4gICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDpcbiAgICAgIHJldHVybiAnTmV0endlcmthdXRoZW50aWZpemllcnVuZyBlcmZvcmRlcmxpY2gnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ0V0d2FzIGlzdCBzY2hpZWYgZ2VsYXVmZW4nO1xuICB9XG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZXhwb3J0QXM6ICdldFF1ZXJ5RXJyb3InLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBRVUVSWV9FUlJPUl9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBRdWVyeUVycm9yRGlyZWN0aXZlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RXJyb3JEaXJlY3RpdmUge1xuICBlcnJvciA9IGlucHV0LnJlcXVpcmVkPFJlcXVlc3RFcnJvciB8IG51bGw+KCk7XG4gIHF1ZXJ5ID0gaW5wdXQucmVxdWlyZWQ8QW55UXVlcnkgfCBBbnlRdWVyeUNvbGxlY3Rpb24gfCBudWxsPigpO1xuICBsYW5ndWFnZSA9IGlucHV0PCdlbicgfCAnZGUnPignZW4nKTtcblxuICByZWFkb25seSBlcnJvckxpc3QgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLmVycm9yKCk7XG5cbiAgICBpZiAoIWVycm9yKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByZXRyeVJlc3VsdCA9IHNob3VsZFJldHJ5UmVxdWVzdCh7IGVycm9yLCBjdXJyZW50UmV0cnlDb3VudDogMCwgaGVhZGVyczoge30gfSk7XG5cbiAgICBjb25zdCBlcnJvckxpc3Q6IFF1ZXJ5RXJyb3JMaXN0ID0ge1xuICAgICAgY2FuQmVSZXRyaWVkOiByZXRyeVJlc3VsdC5yZXRyeSxcbiAgICAgIHJldHJ5RGVsYXk6IHJldHJ5UmVzdWx0LmRlbGF5ID8/IDAsXG4gICAgICBpc0xpc3Q6IGZhbHNlLFxuICAgICAgaXRlbXM6IFtdLFxuICAgICAgdGl0bGU6XG4gICAgICAgIHRoaXMubGFuZ3VhZ2UoKSA9PT0gJ2VuJ1xuICAgICAgICAgID8gY29udmVydEh0dHBTdGF0dXNDb2RlVG9UaXRsZUVuKGVycm9yLnN0YXR1cylcbiAgICAgICAgICA6IGNvbnZlcnRIdHRwU3RhdHVzQ29kZVRvVGl0bGVEZShlcnJvci5zdGF0dXMpLFxuICAgIH07XG5cbiAgICBjb25zdCBkZXRhaWwgPSBlcnJvci5kZXRhaWw7XG4gICAgY29uc3QgZGVmYXVsdEVycm9yTWVzc2FnZSA9IGAke3RoaXMubGFuZ3VhZ2UoKSA9PT0gJ2VuJyA/IGNvbnZlcnRIdHRwU3RhdHVzQ29kZVRvTWVzc2FnZUVuKGVycm9yLnN0YXR1cykgOiBjb252ZXJ0SHR0cFN0YXR1c0NvZGVUb01lc3NhZ2VEZShlcnJvci5zdGF0dXMpfSAoQ29kZTogJHtlcnJvci5zdGF0dXN9KWA7XG5cbiAgICBpZiAoaXNDbGFzc1ZhbGlkYXRvckVycm9yKGRldGFpbCkpIHtcbiAgICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZGV0YWlsLm1lc3NhZ2UpIHtcbiAgICAgICAgZXJyb3JMaXN0Lml0ZW1zLnB1c2goeyBtZXNzYWdlOiBlcnJvciB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzU3ltZm9ueUZvcm1WaW9sYXRpb25MaXN0RXJyb3IoZGV0YWlsKSkge1xuICAgICAgZm9yIChjb25zdCB2aW9sYXRpb24gb2YgZGV0YWlsLnZpb2xhdGlvbnMpIHtcbiAgICAgICAgZXJyb3JMaXN0Lml0ZW1zLnB1c2goeyBtZXNzYWdlOiB2aW9sYXRpb24ubWVzc2FnZSB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzU3ltZm9ueUxpc3RFcnJvcihkZXRhaWwpKSB7XG4gICAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGRldGFpbCkge1xuICAgICAgICBlcnJvckxpc3QuaXRlbXMucHVzaCh7IG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0JyAmJiAhIWRldGFpbCAmJiAnbWVzc2FnZScgaW4gZGV0YWlsICYmIHR5cGVvZiBkZXRhaWwubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVycm9yTGlzdC5pdGVtcy5wdXNoKHsgbWVzc2FnZTogZGV0YWlsLm1lc3NhZ2UgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGV0YWlsID09PSAnb2JqZWN0JyAmJiAhIWRldGFpbCAmJiAnZGV0YWlsJyBpbiBkZXRhaWwgJiYgdHlwZW9mIGRldGFpbC5kZXRhaWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBTeW1mb255IGVycm9yIHJlc3BvbnNlIChkdXJpbmcgZGV2ZWxvcG1lbnQpXG4gICAgICBlcnJvckxpc3QuaXRlbXMucHVzaCh7IG1lc3NhZ2U6IGRldGFpbC5kZXRhaWwgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGV0YWlsID09PSAnc3RyaW5nJykge1xuICAgICAgZXJyb3JMaXN0Lml0ZW1zLnB1c2goeyBtZXNzYWdlOiBkZXRhaWwgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9yTGlzdC5pdGVtcy5wdXNoKHsgbWVzc2FnZTogZGVmYXVsdEVycm9yTWVzc2FnZSB9KTtcbiAgICB9XG5cbiAgICBlcnJvckxpc3QuaXNMaXN0ID0gZXJyb3JMaXN0Lml0ZW1zLmxlbmd0aCA+IDE7XG5cbiAgICBpZiAoZXJyb3JMaXN0Lml0ZW1zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgY29tcGFyZVN0cmluZyA9IChzdHI6IHN0cmluZykgPT4gc3RyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzL2csICcnKS5yZXBsYWNlKC9cXC58LC9nLCAnJyk7XG5cbiAgICAgIGlmIChjb21wYXJlU3RyaW5nKGVycm9yTGlzdC5pdGVtc1swXSEubWVzc2FnZSkgPT09IGNvbXBhcmVTdHJpbmcoZXJyb3JMaXN0LnRpdGxlKSkge1xuICAgICAgICAvLyBPZnRlbiB0aGUgZXJyb3IgdGl0bGUgaXMgdGhlIHNhbWUgYXMgdGhlIGVycm9yIG1lc3NhZ2UuIEluIHRoaXMgY2FzZSB3ZSBzaW1wbHkgdXNlIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYXMgYSBtZXNzYWdlLlxuICAgICAgICAvLyBUaGlzIHdheSB0aGUgc2FtZSB0ZXh0IGlzIGF0IGxlYXN0IG5vdCBkaXNwbGF5ZWQgdHdpY2UuXG4gICAgICAgIGVycm9yTGlzdC5pdGVtc1swXSEubWVzc2FnZSA9IGRlZmF1bHRFcnJvck1lc3NhZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9yTGlzdDtcbiAgfSk7XG59XG4iXX0=
|
package/fesm2022/ethlete-cdk.mjs
CHANGED
|
@@ -5944,7 +5944,7 @@ class ComboboxComponent extends DecoratedInputBase {
|
|
|
5944
5944
|
this.combobox.setBodyComponent(ComboboxBodyComponent);
|
|
5945
5945
|
}
|
|
5946
5946
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5947
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: ComboboxComponent, isStandalone: true, selector: "et-combobox", host: { listeners: { "click": "combobox.selectInputAndOpen()" }, classAttribute: "et-combobox" }, usesInheritance: true, hostDirectives: [{ directive: i1$1.AnimatedOverlayDirective }, { directive: OverlayCloseBlockerDirective }, { directive: InputDirective, inputs: ["placeholder", "placeholder"] }, { directive: ComboboxDirective, inputs: ["options", "options", "initialValue", "initialValue", "filterInternal", "filterInternal", "loading", "loading", "error", "error", "emptyText", "emptyText", "placeholder", "placeholder", "multiple", "multiple", "bindLabel", "bindLabel", "bindValue", "bindValue", "bindDisabled", "bindDisabled", "allowCustomValues", "allowCustomValues", "selectedOptionComponent", "selectedOptionComponent", "optionComponent", "optionComponent", "bodyErrorComponent", "bodyErrorComponent", "bodyLoadingComponent", "bodyLoadingComponent", "bodyEmptyComponent", "bodyEmptyComponent", "bodyMoreItemsHintComponent", "bodyMoreItemsHintComponent", "showBodyMoreItemsHint", "showBodyMoreItemsHint", "bodyEmptyText", "bodyEmptyText", "bodyMoreItemsHintText", "bodyMoreItemsHintText", "optionComponentInputs", "optionComponentInputs", "selectedOptionComponentInputs", "selectedOptionComponentInputs", "bodyErrorComponentInputs", "bodyErrorComponentInputs", "bodyLoadingComponentInputs", "bodyLoadingComponentInputs", "bodyEmptyComponentInputs", "bodyEmptyComponentInputs", "bodyMoreItemsHintComponentInputs", "bodyMoreItemsHintComponentInputs"], outputs: ["filterChange", "filterChange"] }], ngImport: i0, template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div>\n @if (combobox.multiple$ | async) {\n <div class=\"et-combobox-selected-options\">\n @for (item of combobox.selectedOptions$ | async; track combobox.trackByOptionKeyFn($index, item)) {\n <div class=\"et-combobox-selected-option\" aria-hidden=\"true\">\n @if (combobox.customSelectedOptionTpl$ | async; as customSelectedOptionTpl) {\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n } @else {\n @if (combobox.selectedOptionComponent(); as comp) {\n <ng-container\n *ngComponentOutlet=\"comp; inputs: combobox.combineSelectedOptionWithComponentInputs(item)\"\n />\n } @else {\n {{ combobox.getOptionLabel(item) | async }}\n }\n }\n\n <button\n [disabled]=\"input.disabled\"\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation(); combobox.focus()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n >\n x\n </button>\n </div>\n }\n <div class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </div>\n </div>\n }\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.id]=\"input.id\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-expanded]=\"combobox.isOpen$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-activedescendant]=\"combobox.activeOptionId$ | async\"\n [attr.aria-controls]=\"(combobox.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(combobox.selectBodyId$ | async) || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n class=\"et-combobox-wrapper\"\n autocomplete=\"off\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n @if ((combobox.multiple$ | async) === false) {\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n }\n\n @if ((combobox.multiple$ | async) === false)
|
|
5947
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: ComboboxComponent, isStandalone: true, selector: "et-combobox", host: { listeners: { "click": "combobox.selectInputAndOpen()" }, classAttribute: "et-combobox" }, usesInheritance: true, hostDirectives: [{ directive: i1$1.AnimatedOverlayDirective }, { directive: OverlayCloseBlockerDirective }, { directive: InputDirective, inputs: ["placeholder", "placeholder"] }, { directive: ComboboxDirective, inputs: ["options", "options", "initialValue", "initialValue", "filterInternal", "filterInternal", "loading", "loading", "error", "error", "emptyText", "emptyText", "placeholder", "placeholder", "multiple", "multiple", "bindLabel", "bindLabel", "bindValue", "bindValue", "bindDisabled", "bindDisabled", "allowCustomValues", "allowCustomValues", "selectedOptionComponent", "selectedOptionComponent", "optionComponent", "optionComponent", "bodyErrorComponent", "bodyErrorComponent", "bodyLoadingComponent", "bodyLoadingComponent", "bodyEmptyComponent", "bodyEmptyComponent", "bodyMoreItemsHintComponent", "bodyMoreItemsHintComponent", "showBodyMoreItemsHint", "showBodyMoreItemsHint", "bodyEmptyText", "bodyEmptyText", "bodyMoreItemsHintText", "bodyMoreItemsHintText", "optionComponentInputs", "optionComponentInputs", "selectedOptionComponentInputs", "selectedOptionComponentInputs", "bodyErrorComponentInputs", "bodyErrorComponentInputs", "bodyLoadingComponentInputs", "bodyLoadingComponentInputs", "bodyEmptyComponentInputs", "bodyEmptyComponentInputs", "bodyMoreItemsHintComponentInputs", "bodyMoreItemsHintComponentInputs"], outputs: ["filterChange", "filterChange"] }], ngImport: i0, template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div>\n @if (combobox.multiple$ | async) {\n <div class=\"et-combobox-selected-options\">\n @for (item of combobox.selectedOptions$ | async; track combobox.trackByOptionKeyFn($index, item)) {\n <div class=\"et-combobox-selected-option\" aria-hidden=\"true\">\n @if (combobox.customSelectedOptionTpl$ | async; as customSelectedOptionTpl) {\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n } @else {\n @if (combobox.selectedOptionComponent(); as comp) {\n <ng-container\n *ngComponentOutlet=\"comp; inputs: combobox.combineSelectedOptionWithComponentInputs(item)\"\n />\n } @else {\n {{ combobox.getOptionLabel(item) | async }}\n }\n }\n\n <button\n [disabled]=\"input.disabled\"\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation(); combobox.focus()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n >\n x\n </button>\n </div>\n }\n <div class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </div>\n </div>\n }\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.id]=\"input.id\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-expanded]=\"combobox.isOpen$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-activedescendant]=\"combobox.activeOptionId$ | async\"\n [attr.aria-controls]=\"(combobox.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(combobox.selectBodyId$ | async) || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n class=\"et-combobox-wrapper\"\n autocomplete=\"off\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n @if ((combobox.multiple$ | async) === false) {\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n }\n\n @if (\n ((combobox.multiple$ | async) === false && combobox.currentFilter) || (combobox.selectedOptions$ | async)?.length\n ) {\n <button\n [disabled]=\"input.disabled\"\n (click)=\"combobox.clearValue(); $event.stopPropagation(); combobox.focus()\"\n class=\"et-combobox-clear\"\n tabindex=\"-1\"\n type=\"button\"\n >\n <et-times-icon class=\"et-combobox-clear-icon\" />\n </button>\n }\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}:where(.et-combobox-clear){display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:40px;inset-block-start:7px;background-color:transparent;border:none;color:#fff;padding:0}:where(.et-combobox-clear) .et-times-icon{display:block;inline-size:15px;block-size:15px}\n"], dependencies: [{ kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "component", type: TimesIconComponent, selector: "et-times-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5948
5948
|
}
|
|
5949
5949
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ComboboxComponent, decorators: [{
|
|
5950
5950
|
type: Component,
|
|
@@ -5997,7 +5997,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
5997
5997
|
// eslint-disable-next-line @angular-eslint/no-outputs-metadata-property
|
|
5998
5998
|
outputs: ['filterChange'],
|
|
5999
5999
|
},
|
|
6000
|
-
], template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div>\n @if (combobox.multiple$ | async) {\n <div class=\"et-combobox-selected-options\">\n @for (item of combobox.selectedOptions$ | async; track combobox.trackByOptionKeyFn($index, item)) {\n <div class=\"et-combobox-selected-option\" aria-hidden=\"true\">\n @if (combobox.customSelectedOptionTpl$ | async; as customSelectedOptionTpl) {\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n } @else {\n @if (combobox.selectedOptionComponent(); as comp) {\n <ng-container\n *ngComponentOutlet=\"comp; inputs: combobox.combineSelectedOptionWithComponentInputs(item)\"\n />\n } @else {\n {{ combobox.getOptionLabel(item) | async }}\n }\n }\n\n <button\n [disabled]=\"input.disabled\"\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation(); combobox.focus()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n >\n x\n </button>\n </div>\n }\n <div class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </div>\n </div>\n }\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.id]=\"input.id\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-expanded]=\"combobox.isOpen$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-activedescendant]=\"combobox.activeOptionId$ | async\"\n [attr.aria-controls]=\"(combobox.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(combobox.selectBodyId$ | async) || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n class=\"et-combobox-wrapper\"\n autocomplete=\"off\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n @if ((combobox.multiple$ | async) === false) {\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n }\n\n @if ((combobox.multiple$ | async) === false)
|
|
6000
|
+
], template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div>\n @if (combobox.multiple$ | async) {\n <div class=\"et-combobox-selected-options\">\n @for (item of combobox.selectedOptions$ | async; track combobox.trackByOptionKeyFn($index, item)) {\n <div class=\"et-combobox-selected-option\" aria-hidden=\"true\">\n @if (combobox.customSelectedOptionTpl$ | async; as customSelectedOptionTpl) {\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n } @else {\n @if (combobox.selectedOptionComponent(); as comp) {\n <ng-container\n *ngComponentOutlet=\"comp; inputs: combobox.combineSelectedOptionWithComponentInputs(item)\"\n />\n } @else {\n {{ combobox.getOptionLabel(item) | async }}\n }\n }\n\n <button\n [disabled]=\"input.disabled\"\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation(); combobox.focus()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n >\n x\n </button>\n </div>\n }\n <div class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </div>\n </div>\n }\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.id]=\"input.id\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-expanded]=\"combobox.isOpen$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-activedescendant]=\"combobox.activeOptionId$ | async\"\n [attr.aria-controls]=\"(combobox.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(combobox.selectBodyId$ | async) || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n class=\"et-combobox-wrapper\"\n autocomplete=\"off\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n @if ((combobox.multiple$ | async) === false) {\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n }\n\n @if (\n ((combobox.multiple$ | async) === false && combobox.currentFilter) || (combobox.selectedOptions$ | async)?.length\n ) {\n <button\n [disabled]=\"input.disabled\"\n (click)=\"combobox.clearValue(); $event.stopPropagation(); combobox.focus()\"\n class=\"et-combobox-clear\"\n tabindex=\"-1\"\n type=\"button\"\n >\n <et-times-icon class=\"et-combobox-clear-icon\" />\n </button>\n }\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}:where(.et-combobox-clear){display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:40px;inset-block-start:7px;background-color:transparent;border:none;color:#fff;padding:0}:where(.et-combobox-clear) .et-times-icon{display:block;inline-size:15px;block-size:15px}\n"] }]
|
|
6001
6001
|
}], ctorParameters: () => [] });
|
|
6002
6002
|
|
|
6003
6003
|
const ComboboxImports = [
|
|
@@ -6396,6 +6396,10 @@ class SelectDirective {
|
|
|
6396
6396
|
return;
|
|
6397
6397
|
this._animatedOverlay.unmount();
|
|
6398
6398
|
}
|
|
6399
|
+
clearValue() {
|
|
6400
|
+
this._selectionModel.clearSelectedOptions();
|
|
6401
|
+
this.input._markAsTouched();
|
|
6402
|
+
}
|
|
6399
6403
|
writeValueFromOption(option) {
|
|
6400
6404
|
this.input._markAsTouched();
|
|
6401
6405
|
if (this._selectionModel.allowMultiple) {
|
|
@@ -6649,13 +6653,13 @@ class SelectComponent extends DecoratedInputBase {
|
|
|
6649
6653
|
this.select.setSelectBody({ component: SelectBodyComponent, template: this.selectBodyTpl });
|
|
6650
6654
|
}
|
|
6651
6655
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6652
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: SelectComponent, isStandalone: true, selector: "et-select", host: { classAttribute: "et-select" }, viewQueries: [{ propertyName: "selectBodyTpl", first: true, predicate: ["selectBodyTpl"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: InputDirective }, { directive: SelectDirective, inputs: ["multiple", "multiple", "emptyText", "emptyText"] }], ngImport: i0, template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-select-wrapper\">\n <div\n #inputElement\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"select.labelledBy$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.tabindex]=\"(input.disabled$ | async) ? -1 : 0\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-controls]=\"(select.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(select.owns$ | async) || null\"\n [attr.aria-expanded]=\"select.isOpen$ | async\"\n [attr.aria-activedescendant]=\"select.activeDescendant$ | async\"\n (click)=\"select.open()\"\n (keydown)=\"select._processKeydownEvent($event)\"\n (blur)=\"select._controlTouched()\"\n class=\"et-select-input et-select-input--static\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"none\"\n >\n <span\n [attr.id]=\"select.selectCurrentValueId\"\n [class.cdk-visually-hidden]=\"select._selectionModel.allowMultiple && select.ariaViewValue()\"\n class=\"et-select-current-value\"\n >\n @if (select.ariaViewValue()) {\n {{ select.ariaViewValue() }}\n } @else {\n {{ select.emptyText }}\n }\n </span>\n\n @if (select._selectionModel.allowMultiple) {\n @if (select._selectionModel.selection$ | async; as selectedOptions) {\n @if (selectedOptions.length) {\n <ul class=\"et-select-selected-options\" aria-hidden=\"true\">\n @for (opt of selectedOptions; track select.trackByFn($index, opt)) {\n <li class=\"et-select-selected-option\">\n {{ opt.viewValue$ | async }}\n <button\n (click)=\"$event.stopPropagation(); select.removeOptionFromSelection(opt); select.focus()\"\n class=\"et-select-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n ></button>\n </li>\n }\n </ul>\n }\n }\n }\n </div>\n\n <et-chevron-icon class=\"et-select-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template #selectBodyTpl>\n <ng-content />\n</ng-template>\n", styles: [".et-select{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-select-input{position:absolute;inset:0}.et-select-option{display:block}.et-select-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}.et-select-option--active{background-color:#1f1f1f}.et-select-option--selected{font-weight:700}.et-select-selected-options{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;gap:5px}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6656
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: SelectComponent, isStandalone: true, selector: "et-select", host: { classAttribute: "et-select" }, viewQueries: [{ propertyName: "selectBodyTpl", first: true, predicate: ["selectBodyTpl"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: InputDirective }, { directive: SelectDirective, inputs: ["multiple", "multiple", "emptyText", "emptyText"] }], ngImport: i0, template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-select-wrapper\">\n <div\n #inputElement\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"select.labelledBy$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.tabindex]=\"(input.disabled$ | async) ? -1 : 0\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-controls]=\"(select.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(select.owns$ | async) || null\"\n [attr.aria-expanded]=\"select.isOpen$ | async\"\n [attr.aria-activedescendant]=\"select.activeDescendant$ | async\"\n (click)=\"select.open()\"\n (keydown)=\"select._processKeydownEvent($event)\"\n (blur)=\"select._controlTouched()\"\n class=\"et-select-input et-select-input--static\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"none\"\n >\n <span\n [attr.id]=\"select.selectCurrentValueId\"\n [class.cdk-visually-hidden]=\"select._selectionModel.allowMultiple && select.ariaViewValue()\"\n class=\"et-select-current-value\"\n >\n @if (select.ariaViewValue()) {\n {{ select.ariaViewValue() }}\n } @else {\n {{ select.emptyText }}\n }\n </span>\n\n @if (select._selectionModel.allowMultiple) {\n @if (select._selectionModel.selection$ | async; as selectedOptions) {\n @if (selectedOptions.length) {\n <ul class=\"et-select-selected-options\" aria-hidden=\"true\">\n @for (opt of selectedOptions; track select.trackByFn($index, opt)) {\n <li class=\"et-select-selected-option\">\n {{ opt.viewValue$ | async }}\n <button\n [disabled]=\"input.disabled\"\n (click)=\"$event.stopPropagation(); select.removeOptionFromSelection(opt); select.focus()\"\n class=\"et-select-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n ></button>\n </li>\n }\n </ul>\n }\n }\n }\n </div>\n\n @if (select.ariaViewValue() || (select._selectionModel.selection$ | async)?.length) {\n <button\n [disabled]=\"input.disabled\"\n (click)=\"select.clearValue(); $event.stopPropagation(); select.focus()\"\n class=\"et-select-clear\"\n tabindex=\"-1\"\n type=\"button\"\n >\n <et-times-icon class=\"et-select-clear-icon\" />\n </button>\n }\n\n <et-chevron-icon class=\"et-select-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template #selectBodyTpl>\n <ng-content />\n</ng-template>\n", styles: [".et-select{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-select-input{position:absolute;inset:0}.et-select-option{display:block}.et-select-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}:where(.et-select-clear){display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:40px;inset-block-start:7px;background-color:transparent;border:none;color:#fff;padding:0}:where(.et-select-clear) .et-times-icon{display:block;inline-size:15px;block-size:15px}.et-select-option--active{background-color:#1f1f1f}.et-select-option--selected{font-weight:700}.et-select-selected-options{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;gap:5px}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }, { kind: "component", type: TimesIconComponent, selector: "et-times-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6653
6657
|
}
|
|
6654
6658
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: SelectComponent, decorators: [{
|
|
6655
6659
|
type: Component,
|
|
6656
6660
|
args: [{ selector: 'et-select', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
6657
6661
|
class: 'et-select',
|
|
6658
|
-
}, imports: [NativeInputRefDirective, AsyncPipe, ChevronIconComponent, LetDirective], hostDirectives: [{ directive: InputDirective }, { directive: SelectDirective, inputs: ['multiple', 'emptyText'] }], template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-select-wrapper\">\n <div\n #inputElement\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"select.labelledBy$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.tabindex]=\"(input.disabled$ | async) ? -1 : 0\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-controls]=\"(select.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(select.owns$ | async) || null\"\n [attr.aria-expanded]=\"select.isOpen$ | async\"\n [attr.aria-activedescendant]=\"select.activeDescendant$ | async\"\n (click)=\"select.open()\"\n (keydown)=\"select._processKeydownEvent($event)\"\n (blur)=\"select._controlTouched()\"\n class=\"et-select-input et-select-input--static\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"none\"\n >\n <span\n [attr.id]=\"select.selectCurrentValueId\"\n [class.cdk-visually-hidden]=\"select._selectionModel.allowMultiple && select.ariaViewValue()\"\n class=\"et-select-current-value\"\n >\n @if (select.ariaViewValue()) {\n {{ select.ariaViewValue() }}\n } @else {\n {{ select.emptyText }}\n }\n </span>\n\n @if (select._selectionModel.allowMultiple) {\n @if (select._selectionModel.selection$ | async; as selectedOptions) {\n @if (selectedOptions.length) {\n <ul class=\"et-select-selected-options\" aria-hidden=\"true\">\n @for (opt of selectedOptions; track select.trackByFn($index, opt)) {\n <li class=\"et-select-selected-option\">\n {{ opt.viewValue$ | async }}\n <button\n (click)=\"$event.stopPropagation(); select.removeOptionFromSelection(opt); select.focus()\"\n class=\"et-select-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n ></button>\n </li>\n }\n </ul>\n }\n }\n }\n </div>\n\n <et-chevron-icon class=\"et-select-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template #selectBodyTpl>\n <ng-content />\n</ng-template>\n", styles: [".et-select{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-select-input{position:absolute;inset:0}.et-select-option{display:block}.et-select-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}.et-select-option--active{background-color:#1f1f1f}.et-select-option--selected{font-weight:700}.et-select-selected-options{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;gap:5px}\n"] }]
|
|
6662
|
+
}, imports: [NativeInputRefDirective, AsyncPipe, ChevronIconComponent, TimesIconComponent, LetDirective], hostDirectives: [{ directive: InputDirective }, { directive: SelectDirective, inputs: ['multiple', 'emptyText'] }], template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-select-wrapper\">\n <div\n #inputElement\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"select.labelledBy$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.tabindex]=\"(input.disabled$ | async) ? -1 : 0\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-controls]=\"(select.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(select.owns$ | async) || null\"\n [attr.aria-expanded]=\"select.isOpen$ | async\"\n [attr.aria-activedescendant]=\"select.activeDescendant$ | async\"\n (click)=\"select.open()\"\n (keydown)=\"select._processKeydownEvent($event)\"\n (blur)=\"select._controlTouched()\"\n class=\"et-select-input et-select-input--static\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"none\"\n >\n <span\n [attr.id]=\"select.selectCurrentValueId\"\n [class.cdk-visually-hidden]=\"select._selectionModel.allowMultiple && select.ariaViewValue()\"\n class=\"et-select-current-value\"\n >\n @if (select.ariaViewValue()) {\n {{ select.ariaViewValue() }}\n } @else {\n {{ select.emptyText }}\n }\n </span>\n\n @if (select._selectionModel.allowMultiple) {\n @if (select._selectionModel.selection$ | async; as selectedOptions) {\n @if (selectedOptions.length) {\n <ul class=\"et-select-selected-options\" aria-hidden=\"true\">\n @for (opt of selectedOptions; track select.trackByFn($index, opt)) {\n <li class=\"et-select-selected-option\">\n {{ opt.viewValue$ | async }}\n <button\n [disabled]=\"input.disabled\"\n (click)=\"$event.stopPropagation(); select.removeOptionFromSelection(opt); select.focus()\"\n class=\"et-select-selected-option-remove\"\n tabindex=\"-1\"\n type=\"button\"\n ></button>\n </li>\n }\n </ul>\n }\n }\n }\n </div>\n\n @if (select.ariaViewValue() || (select._selectionModel.selection$ | async)?.length) {\n <button\n [disabled]=\"input.disabled\"\n (click)=\"select.clearValue(); $event.stopPropagation(); select.focus()\"\n class=\"et-select-clear\"\n tabindex=\"-1\"\n type=\"button\"\n >\n <et-times-icon class=\"et-select-clear-icon\" />\n </button>\n }\n\n <et-chevron-icon class=\"et-select-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template #selectBodyTpl>\n <ng-content />\n</ng-template>\n", styles: [".et-select{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-select-input{position:absolute;inset:0}.et-select-option{display:block}.et-select-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}:where(.et-select-clear){display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:40px;inset-block-start:7px;background-color:transparent;border:none;color:#fff;padding:0}:where(.et-select-clear) .et-times-icon{display:block;inline-size:15px;block-size:15px}.et-select-option--active{background-color:#1f1f1f}.et-select-option--selected{font-weight:700}.et-select-selected-options{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;gap:5px}\n"] }]
|
|
6659
6663
|
}], propDecorators: { selectBodyTpl: [{
|
|
6660
6664
|
type: ViewChild,
|
|
6661
6665
|
args: ['selectBodyTpl']
|
|
@@ -14955,11 +14959,12 @@ class PaginationComponent {
|
|
|
14955
14959
|
this._pageControlSubscription = this.pageControl?.valueChanges.subscribe(() => this._updatePages());
|
|
14956
14960
|
}
|
|
14957
14961
|
_updatePages() {
|
|
14958
|
-
if (!this.pageControl
|
|
14962
|
+
if (!this.pageControl || !this.totalPages) {
|
|
14959
14963
|
this.pages$.next(null);
|
|
14960
14964
|
return;
|
|
14961
14965
|
}
|
|
14962
|
-
|
|
14966
|
+
const pageValue = this.pageControl.value ?? 1;
|
|
14967
|
+
this.pages$.next(paginate({ currentPage: pageValue, totalPageCount: this.totalPages }));
|
|
14963
14968
|
}
|
|
14964
14969
|
_updateHead() {
|
|
14965
14970
|
if (this.pageControl?.value) {
|
|
@@ -14975,9 +14980,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
14975
14980
|
class: 'et-pagination',
|
|
14976
14981
|
}, template: "@if (pages$ | async; as pages) {\n <nav [attr.aria-label]=\"ariaLabel\" class=\"et-pagination-nav\">\n <ul class=\"et-pagination-list\">\n @for (page of pages; track trackByPage($index, page)) {\n <li\n [class.et-pagination-hot-link]=\"page.type === 'hotLink'\"\n [class.et-pagination-page-link]=\"page.type === 'page'\"\n [class.et-pagination-item-disabled]=\"page.disabled\"\n class=\"et-pagination-list-item et-pagination-{{ page.explicitType }}\"\n >\n <a\n [attr.aria-current]=\"page.current ? 'page' : null\"\n [attr.aria-label]=\"page.ariaLabel\"\n [attr.aria-disabled]=\"page.disabled ? 'true' : null\"\n [etPaginationLink]=\"page\"\n [href]=\"page.disabled ? '#' : page.url\"\n (pageClick)=\"onPageClick($event)\"\n class=\"et-pagination-anchor\"\n >\n @if (page.type === 'page') {\n {{ page.page }}\n }\n </a>\n </li>\n }\n </ul>\n </nav>\n}\n" }]
|
|
14977
14982
|
}], propDecorators: { pageControl: [{
|
|
14978
|
-
type: Input
|
|
14983
|
+
type: Input,
|
|
14984
|
+
args: [{ required: true }]
|
|
14979
14985
|
}], totalPages: [{
|
|
14980
|
-
type: Input
|
|
14986
|
+
type: Input,
|
|
14987
|
+
args: [{ required: true }]
|
|
14981
14988
|
}], headTitleTemplate: [{
|
|
14982
14989
|
type: Input
|
|
14983
14990
|
}], headFirstPageTitle: [{
|
|
@@ -15523,11 +15530,9 @@ class QueryErrorDirective {
|
|
|
15523
15530
|
retryDelay: retryResult.delay ?? 0,
|
|
15524
15531
|
isList: false,
|
|
15525
15532
|
items: [],
|
|
15526
|
-
title:
|
|
15527
|
-
?
|
|
15528
|
-
|
|
15529
|
-
: convertHttpStatusCodeToTitleDe(error.status)
|
|
15530
|
-
: error.statusText,
|
|
15533
|
+
title: this.language() === 'en'
|
|
15534
|
+
? convertHttpStatusCodeToTitleEn(error.status)
|
|
15535
|
+
: convertHttpStatusCodeToTitleDe(error.status),
|
|
15531
15536
|
};
|
|
15532
15537
|
const detail = error.detail;
|
|
15533
15538
|
const defaultErrorMessage = `${this.language() === 'en' ? convertHttpStatusCodeToMessageEn(error.status) : convertHttpStatusCodeToMessageDe(error.status)} (Code: ${error.status})`;
|
|
@@ -15553,6 +15558,9 @@ class QueryErrorDirective {
|
|
|
15553
15558
|
// Symfony error response (during development)
|
|
15554
15559
|
errorList.items.push({ message: detail.detail });
|
|
15555
15560
|
}
|
|
15561
|
+
else if (typeof detail === 'string') {
|
|
15562
|
+
errorList.items.push({ message: detail });
|
|
15563
|
+
}
|
|
15556
15564
|
else {
|
|
15557
15565
|
errorList.items.push({ message: defaultErrorMessage });
|
|
15558
15566
|
}
|