ets-fe-ng-sdk 18.0.7 → 18.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Shared/components/btn/btn.component.mjs +6 -3
- package/esm2022/lib/Shared/components/table-input/table-input.component.mjs +4 -4
- package/fesm2022/ets-fe-ng-sdk.mjs +8 -5
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/utility.service.d.ts +1 -1
- package/lib/Shared/components/btn/btn.component.d.ts +1 -1
- package/lib/Shared/components/index-comp-layout/index-comp-layout.component.d.ts +1 -1
- package/lib/Shared/components/table-input/table-input.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -134,8 +134,11 @@ export class BtnComponent {
|
|
|
134
134
|
this.formSchema = input();
|
|
135
135
|
this.debug = input();
|
|
136
136
|
this.formIsInvalid = computed(() => {
|
|
137
|
-
const
|
|
138
|
-
return
|
|
137
|
+
const formState = this.formState(), form = this.form(), onFormInvalid = this.onFormInvalid(), formSchema = this.formSchema();
|
|
138
|
+
return formState &&
|
|
139
|
+
formState.invalid &&
|
|
140
|
+
onFormInvalid == OnFormInvalid.warn &&
|
|
141
|
+
formSchema?.length
|
|
139
142
|
? formSchema.some((f) => form.controls[f.field?.toString()]?.invalid)
|
|
140
143
|
: null;
|
|
141
144
|
}, { equal: isEqual });
|
|
@@ -336,4 +339,4 @@ var OnFormInvalid;
|
|
|
336
339
|
OnFormInvalid["disable"] = "disable";
|
|
337
340
|
OnFormInvalid["warn"] = "warn";
|
|
338
341
|
})(OnFormInvalid || (OnFormInvalid = {}));
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQVF2QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxH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O2dCQVlXLFVBQVU7c0JBQWpDLEtBQUs7dUJBQUMsV0FBVztnQkFNSyxTQUFTO3NCQUEvQixLQUFLO3VCQUFDLFVBQVU7Z0JBT0UsS0FBSztzQkFBdkIsS0FBSzt1QkFBQyxNQUFNO2dCQU9PLE1BQU07c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFpRTJCLGNBQWM7c0JBQXRELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQzlCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTU8sVUFBVTtzQkFBdEIsS0FBSztnQkErRnlELFFBQVE7c0JBQXRFLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFPaEIsZ0JBQWdCO3NCQUF4RCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO2dCQVV6QixNQUFNO3NCQUFmLE1BQU07Z0JBQ2lCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVzs7QUFvRXhCLElBQUssYUFHSjtBQUhELFdBQUssYUFBYTtJQUNoQixvQ0FBbUIsQ0FBQTtJQUNuQiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhJLGFBQWEsS0FBYixhQUFhLFFBR2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtQXJyYXksXG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUNvbnRyb2xTdGF0dXMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEljb25EZWZpbml0aW9uLCBmYUxvY2sgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgQnRuU2VydmljZSB9IGZyb20gJy4vYnRuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3RyYW5zbGF0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBBc3luY1BpcGUsIEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElGb3JtU2NoZW1hIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tc2NoZW1hLm1vZGVsJztcbmltcG9ydCB7IEljb25UeXBlLCBCdG5UeXBlLCBCdG5Hcm91cCB9IGZyb20gJy4vYnRuLm1vZGVsJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2YsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5mdW5jdGlvbiBib29sZWFuQXR0cmlidXRlMih2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICByZXR1cm4gYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSk7XG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYnRuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J0bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2J0bi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vIC8vXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE5nSWYsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRCYWRnZU1vZHVsZSxcbiAgICBGb250QXdlc29tZU1vZHVsZSxcbiAgICBKc29uUGlwZSxcbiAgICBUcmFuc2xhdG9yRGlyZWN0aXZlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBTREtUcmFuc2xhdGVQaXBlLFxuICBdLFxufSkgLy8gSW5oZXJpdGVkXG5leHBvcnQgY2xhc3MgQnRuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqIFRvIGJlIHBhc3NlZCB3aGVuIHRvIGNoZWNrIGZvciBzcGVjaWZpYyBpbnZhbGlkIGZvcm0gZmllbGRzICovXG4gIHJlYWRvbmx5IGZvcm1TY2hlbWEgPSBpbnB1dDxJRm9ybVNjaGVtYVtdPigpO1xuICByZWFkb25seSBkZWJ1ZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGZvcm1Jc0ludmFsaWQgPSBjb21wdXRlZDxib29sZWFuPihcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtU3RhdGUoKSxcbiAgICAgICAgb25Gb3JtSW52YWxpZCA9IHRoaXMub25Gb3JtSW52YWxpZCgpLFxuICAgICAgICBmb3JtU2NoZW1hID0gdGhpcy5mb3JtU2NoZW1hKCk7XG5cbiAgICAgIHJldHVybiBmb3JtICYmIGZvcm0uaW52YWxpZCAmJiBvbkZvcm1JbnZhbGlkID09IE9uRm9ybUludmFsaWQud2FybiAmJiBmb3JtU2NoZW1hPy5sZW5ndGhcbiAgICAgICAgPyBmb3JtU2NoZW1hLnNvbWUoKGYpID0+ICg8Rm9ybUdyb3VwPmZvcm0pLmNvbnRyb2xzW2YuZmllbGQ/LnRvU3RyaW5nKCldPy5pbnZhbGlkKVxuICAgICAgICA6IG51bGw7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBpc0VxdWFsIH0sXG4gICk7XG4gIHJlYWRvbmx5IGNlbnRlckJ0biA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBkYW5nZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB3YXJuaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgdmVyYm9zZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIC8vIGNvdW50ZXIgPSBzaWduYWwoMCk7XG5cbiAgcHJvdGVjdGVkIGljb25UeXBlOiBJY29uVHlwZTtcbiAgcmVhZG9ubHkgaWNvbkJ0biA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG5cbiAgQElucHV0KCdpY29uJykgc2V0IF9pY29uKHY6IEljb25UeXBlKSB7XG4gICAgdGhpcy5pY29uVHlwZSA9IHY7XG4gICAgY29uc3QgcmVzID0gdGhpcy5idG5TLmdldEljb24odik7XG4gICAgaWYgKCFyZXMpIHJldHVybjtcbiAgICBpZiAocmVzLmljb25Qb3NpdGlvbiA9PSAncmlnaHQnKSB7XG4gICAgICB0aGlzLnJpZ2h0SWNvbi5zZXQocmVzLmljb24pO1xuICAgICAgdGhpcy5yaWdodEN1c3RvbUljb24uc2V0KHJlcy5pY29uU3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sZWZ0SWNvbi5zZXQocmVzLmljb24pO1xuICAgICAgdGhpcy5sZWZ0Q3VzdG9tSWNvbi5zZXQocmVzLmljb25TdHJpbmcpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoJ3JpZ2h0SWNvbicpIHNldCBfcmlnaHRJY29uKHY6IEljb25UeXBlKSB7XG4gICAgdGhpcy5pY29uVHlwZSA9IHY7XG4gICAgY29uc3QgcmVzID0gdGhpcy5idG5TLmdldEljb24odik7XG4gICAgdGhpcy5yaWdodEljb24uc2V0KHJlcy5pY29uKTtcbiAgICB0aGlzLnJpZ2h0Q3VzdG9tSWNvbi5zZXQocmVzLmljb25TdHJpbmcpO1xuICB9XG4gIEBJbnB1dCgnbGVmdEljb24nKSBzZXQgX2xlZnRJY29uKHY6IEljb25UeXBlKSB7XG4gICAgdGhpcy5pY29uVHlwZSA9IHY7XG4gICAgY29uc3QgcmVzID0gdGhpcy5idG5TLmdldEljb24odik7XG4gICAgdGhpcy5sZWZ0SWNvbi5zZXQocmVzLmljb24pO1xuICAgIHRoaXMubGVmdEN1c3RvbUljb24uc2V0KHJlcy5pY29uU3RyaW5nKTtcbiAgfVxuXG4gIEBJbnB1dCgndHlwZScpIHNldCBfdHlwZSh2OiBCdG5UeXBlKSB7XG4gICAgY29uc3QgeyBfaWNvbiwgX21jbGFzcywgX3R5cGUgfSA9IHRoaXMuYnRuUy5nZXRUeXBlKHYpO1xuICAgIHRoaXMuX21jbGFzcy51cGRhdGUoKG1jbGFzcykgPT4gX21jbGFzcyB8fCBtY2xhc3MpO1xuICAgIGlmIChfaWNvbikgdGhpcy5faWNvbiA9IF9pY29uO1xuICAgIGlmIChfdHlwZSkgdGhpcy5fdHlwZSA9IF90eXBlO1xuICB9XG5cbiAgQElucHV0KCdncm91cCcpIHNldCBfZ3JvdXAodjogQnRuR3JvdXApIHtcbiAgICBzd2l0Y2ggKHYpIHtcbiAgICAgIGNhc2UgJ2FkZCc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnb3V0bGluZSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnYWRkJztcbiAgICAgICAgdGhpcy5pY29uQnRuLnNldCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9uZSc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdjbG9uZSc7XG4gICAgICAgIHRoaXMuX3RleHQuc2V0KCdDbG9uZScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NyZWF0ZSc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnb3V0bGluZSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnYWRkJztcbiAgICAgICAgdGhpcy5fdGV4dC5zZXQoJ0NyZWF0ZScpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdkYW5nZXItb3V0bGluZSc7XG4gICAgICAgIHRoaXMuY3VzdG9tSWNvbiA9IHRoaXMuYnRuUy5nZXRJY29uKCdjbG9zZScpLmljb25TdHJpbmc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdkYW5nZXItb3V0bGluZSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnZGVsZXRlJztcbiAgICAgICAgdGhpcy5pY29uQnRuLnNldCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkb3dubG9hZCc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdkb3dubG9hZCc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZWRpdCc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdlZGl0JztcbiAgICAgICAgdGhpcy5pY29uQnRuLnNldCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLmN1c3RvbUljb24gPSAnZmEgZmEtZXllJztcbiAgICAgICAgdGhpcy5pY29uQnRuLnNldCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWFyY2gnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnc2VhcmNoJztcbiAgICAgICAgdGhpcy5pY29uQnRuLnNldCh0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzaG93JzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLl9pY29uID0gJ3Nob3cnO1xuICAgICAgICB0aGlzLl90ZXh0LnNldCgnU2hvdycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N1Ym1pdCc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdzYXZlJztcbiAgICAgICAgdGhpcy5fdGV4dC5zZXQoJ1N1Ym1pdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NhdmUnOlxuICAgICAgICB0aGlzLl9ncm91cCA9ICdzdWJtaXQnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmVhZG9ubHkgX21jbGFzcyA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgYWN0aW9uVHlwZSA9IGlucHV0PCdzdWJtaXQnIHwgJ2J1dHRvbicgfCAncmVzZXQnPignYnV0dG9uJyk7XG4gIHJlYWRvbmx5IGFuaW1hdGUgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUyIGFzIHVuZGVmaW5lZCB9KTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiB9KSBleGNsdWRlTG9nZ2luZyA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2dnaW5nVmFsdWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYmFkZ2UgPSBpbnB1dDxzdHJpbmcgfCBudW1iZXI+KG51bGwpO1xuICByZWFkb25seSBjbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGxlZnQgc2lkZSBpY29uXG4gICAqL1xuICBASW5wdXQoKSBzZXQgY3VzdG9tSWNvbih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLmxlZnRDdXN0b21JY29uLnNldCh2KTtcbiAgfVxuXG4gIC8vIGZvcm1TdGF0ZSA9IGNvbXB1dGVkPElGb3JtU3RhdGU+KCgpID0+IHtcbiAgLy8gICBjb25zdCBkID0gdGhpcy5jaGVja0Zvcm1TdGF0ZSgpO1xuXG4gIC8vICAgaWYgKHRoaXMuZGVidWcoKSkge1xuICAvLyAgICAgZGVidWdnZXI7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiB7XG4gIC8vICAgICBwZW5kaW5nOiB0aGlzLmZvcm0/LnBlbmRpbmcsXG4gIC8vICAgICBkaXJ0eTogdGhpcy5mb3JtPy5kaXJ0eSxcbiAgLy8gICAgIGludmFsaWQ6IHRoaXMuZm9ybT8uaW52YWxpZCxcbiAgLy8gICAgIHByaXN0aW5lOiB0aGlzLmZvcm0/LnByaXN0aW5lLFxuICAvLyAgICAgdmFsaWQ6IHRoaXMuZm9ybT8udmFsaWQsXG4gIC8vICAgfTtcbiAgLy8gfSk7XG4gIHJlYWRvbmx5IGNoZWNrRm9ybVN0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUZvcm1TdGF0ZT4oe30pO1xuICAvLyBwcm90ZWN0ZWQgZm9ybVN1YjogU3Vic2NyaXB0aW9uO1xuICAvLyBwcm90ZWN0ZWQgZm9ybXNTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcmVhZG9ubHkgZm9ybSA9IGlucHV0PFxuICAgIEZvcm1Hcm91cDxhbnk+IHwgRm9ybUNvbnRyb2w8YW55PiB8IEZvcm1BcnJheTxhbnk+IHwgQWJzdHJhY3RDb250cm9sPGFueSwgYW55PlxuICA+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtU3RhdGUgPSB0b1NpZ25hbChcbiAgICB0b09ic2VydmFibGUodGhpcy5mb3JtKS5waXBlKFxuICAgICAgZmlsdGVyKCh4KSA9PiAhIXgpLFxuXG4gICAgICBzd2l0Y2hNYXAoKGZvcm0pID0+XG4gICAgICAgIGZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgICAgICAgIHN0YXJ0V2l0aChcbiAgICAgICAgICAgIHRoaXMuZm9ybSgpXG4gICAgICAgICAgICAgID8gPElGb3JtU3RhdGU+e1xuICAgICAgICAgICAgICAgICAgcGVuZGluZzogdGhpcy5mb3JtKCk/LnBlbmRpbmcsXG4gICAgICAgICAgICAgICAgICBkaXJ0eTogdGhpcy5mb3JtKCk/LmRpcnR5LFxuICAgICAgICAgICAgICAgICAgaW52YWxpZDogdGhpcy5mb3JtKCk/LmludmFsaWQsXG4gICAgICAgICAgICAgICAgICBwcmlzdGluZTogdGhpcy5mb3JtKCk/LnByaXN0aW5lLFxuICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRoaXMuZm9ybSgpPy52YWxpZCxcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogdGhpcy5mb3JtKCk/LnN0YXR1cyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybVxuICAgICAgICAgICAgICA/IDxJRm9ybVN0YXRlPntcbiAgICAgICAgICAgICAgICAgIHBlbmRpbmc6IGZvcm0ucGVuZGluZyxcbiAgICAgICAgICAgICAgICAgIGRpcnR5OiBmb3JtLmRpcnR5LFxuICAgICAgICAgICAgICAgICAgaW52YWxpZDogZm9ybS5pbnZhbGlkLFxuICAgICAgICAgICAgICAgICAgcHJpc3RpbmU6IGZvcm0ucHJpc3RpbmUsXG4gICAgICAgICAgICAgICAgICB2YWxpZDogZm9ybS52YWxpZCxcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogZm9ybS5zdGF0dXMsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICk7XG4gIHJlYWRvbmx5IGZvcm1zID1cbiAgICBpbnB1dDwoRm9ybUdyb3VwPGFueT4gfCBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgRm9ybUNvbnRyb2w8YW55PiB8IEZvcm1BcnJheTxhbnk+KVtdPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybXNTdGF0ZSA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmZvcm1zKS5waXBlKFxuICAgICAgZmlsdGVyKCh4KSA9PiAhIXggJiYgeC5sZW5ndGggPiAwKSxcbiAgICAgIHN3aXRjaE1hcCgoZm9ybXMpID0+XG4gICAgICAgIG1lcmdlKC4uLmZvcm1zLm1hcCgoZm9ybSkgPT4gZm9ybS5zdGF0dXNDaGFuZ2VzKSkucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSxcbiAgICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybXMgPSB0aGlzLmZvcm1zKCk7XG4gICAgICAgICAgICBpZiAoIWZvcm1zKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGZzOiBPbWl0PElGb3JtU3RhdGUsICdzdGF0dXMnPiA9IHtcbiAgICAgICAgICAgICAgcGVuZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgIHByaXN0aW5lOiB0cnVlLFxuICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBmb3Jtcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICAgIGlmICgheC5wZW5kaW5nKSBmcy5wZW5kaW5nID0geC5wZW5kaW5nO1xuICAgICAgICAgICAgICBpZiAoIXguZGlydHkpIGZzLmRpcnR5ID0geC5kaXJ0eTtcbiAgICAgICAgICAgICAgaWYgKCF4LmludmFsaWQpIGZzLmludmFsaWQgPSB4LmludmFsaWQ7XG4gICAgICAgICAgICAgIGlmICgheC5wcmlzdGluZSkgZnMucHJpc3RpbmUgPSB4LnByaXN0aW5lO1xuICAgICAgICAgICAgICBpZiAoIXgudmFsaWQpIGZzLnZhbGlkID0geC52YWxpZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZzO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICApO1xuXG4gIHJlYWRvbmx5IGhlbHAgPSBpbnB1dDxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgbm8gbG9uZ2VyIG5lZWRlZCB0byBkZXRlY3QgdGhlIGNvcnJlY3Qgc3BhY2luZyBiZXR3ZWVuIGljb24gYW5kIHRleHRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZTIsIGFsaWFzOiAnaWNvbkJ0bicgfSkgc2V0IF9pY29uQnRuKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmljb25CdG4uc2V0KHYgfHwgZmFsc2UpO1xuICB9XG5cbiAgcmVhZG9ubHkgbWNsYXNzID0gaW5wdXQ8c3RyaW5nPihudWxsKTtcbiAgcmVhZG9ubHkgc2hvd0hlbHBJY29uID0gaW5wdXQodHJ1ZSk7XG4gIHJlYWRvbmx5IHJpZ2h0SWNvbiA9IHNpZ25hbDxJY29uRGVmaW5pdGlvbj4obnVsbCk7XG4gIEBJbnB1dCh7IGFsaWFzOiAncmlnaHRDdXN0b21JY29uJyB9KSBzZXQgX3JpZ2h0Q3VzdG9tSWNvbih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJpZ2h0Q3VzdG9tSWNvbi5zZXQodik7XG4gIH1cbiAgcmVhZG9ubHkgcmlnaHRDdXN0b21JY29uID0gc2lnbmFsPHN0cmluZz4obnVsbCk7XG4gIHJlYWRvbmx5IGxlZnRJY29uID0gc2lnbmFsPEljb25EZWZpbml0aW9uPihudWxsKTtcbiAgcmVhZG9ubHkgbGVmdEN1c3RvbUljb24gPSBtb2RlbDxzdHJpbmc+KG51bGwpO1xuICByZWFkb25seSB0ZXh0ID0gaW5wdXQ8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgdmFsaWQgPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgbWluaSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZTIgYXMgdW5kZWZpbmVkIH0pO1xuICByZWFkb25seSBvbkZvcm1JbnZhbGlkID0gaW5wdXQ8a2V5b2YgdHlwZW9mIE9uRm9ybUludmFsaWQ+KE9uRm9ybUludmFsaWQuZGlzYWJsZSk7XG4gIEBPdXRwdXQoKSBtY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoJ2lubmVyVGV4dCcpIGlubmVyVGV4dDogRWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+O1xuICByZWFkb25seSBsb2NrZWRJY29uID0gc2lnbmFsKGZhTG9jayk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdGV4dCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPih1bmRlZmluZWQpO1xuICByZWFkb25seSBkaXNhYmxlZCA9IG1vZGVsPGJvb2xlYW4gfCBudWxsPihmYWxzZSk7XG4gIHJlYWRvbmx5IGNvbXB1dGVkVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMudGV4dCgpLFxuICAgICAgbG9jYWwgPSB0aGlzLl90ZXh0KCk7XG4gICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBsb2NhbCA6IGlucHV0O1xuICB9KTtcbiAgcHVibGljIGJ0blMgPSBpbmplY3QoQnRuU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0xlZnRJY29uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sZWZ0SWNvbigpIHx8IHRoaXMubGVmdEN1c3RvbUljb24oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc1JpZ2h0SWNvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmlnaHRJY29uKCkgfHwgdGhpcy5yaWdodEN1c3RvbUljb24oKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGZzID0gdGhpcy5mb3JtU3RhdGUoKTtcbiAgICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIC8vQ2FsbGVkIGFmdGVyIGV2ZXJ5IGNoZWNrIG9mIHRoZSBjb21wb25lbnQncyB2aWV3LiBBcHBsaWVzIHRvIGNvbXBvbmVudHMgb25seS5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkJyB0byB0aGUgY2xhc3MuXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX21jbGFzcygpKSB0aGlzLl90eXBlID0gdGhpcy5idG5TLmRlZmF1bHRUeXBlO1xuICB9XG5cbiAgc2V0TG9hZGVyKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMubG9hZGluZy5zZXQodmFsKTtcbiAgfVxuICBnZXQgZXh0cmFjdFRleHQoKSB7XG4gICAgcmV0dXJuIGBDbGlja2VkIG9uICR7XG4gICAgICB0aGlzLnRleHQoKSB8fCB0aGlzLmlubmVyVGV4dD8ubmF0aXZlRWxlbWVudD8uaW5uZXJIVE1MIHx8IHRoaXMuaWNvblR5cGUgfHwgJ2J1dHRvbidcbiAgICB9ICR7dGhpcy5sb2dnaW5nVmFsdWUgPyAnXFxuVHJhY2sgdmFsdWU6ICcgKyB0aGlzLmxvZ2dpbmdWYWx1ZSA6ICcnfWA7XG4gIH1cbiAgY2xpY2soJGV2ZW50KSB7XG4gICAgLy8gZGVidWdnZXJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkgfHwgdGhpcy5sb2FkaW5nKCkpIHJldHVybjtcbiAgICB0aGlzLm1jbGljay5lbWl0KCRldmVudCk7XG4gICAgdGhpcy5idG5TLmxvZ0NsaWNrKHRoaXMpO1xuICB9XG5cbiAgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQoKSxcbiAgICAgIHZhbGlkID0gdGhpcy52YWxpZCgpLFxuICAgICAgb25Gb3JtSW52YWxpZCA9IHRoaXMub25Gb3JtSW52YWxpZCgpLFxuICAgICAgZm9ybSA9IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgICBmb3JtcyA9IHRoaXMuZm9ybXNTdGF0ZSgpO1xuICAgIHJldHVybiAoXG4gICAgICBkaXNhYmxlZCB8fFxuICAgICAgIXZhbGlkIHx8XG4gICAgICAob25Gb3JtSW52YWxpZCA9PSBPbkZvcm1JbnZhbGlkLmRpc2FibGUgJiZcbiAgICAgICAgKGZvcm0/LmludmFsaWQgfHwgZm9ybT8ucGVuZGluZyB8fCBmb3Jtcz8ucGVuZGluZykpIHx8XG4gICAgICBmYWxzZVxuICAgICk7XG4gIH0pO1xuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQodHJ1ZSk7XG4gIH1cblxuICBlbmFibGUoKSB7XG4gICAgdGhpcy5kaXNhYmxlZC5zZXQoZmFsc2UpO1xuICB9XG59XG5lbnVtIE9uRm9ybUludmFsaWQge1xuICBkaXNhYmxlID0gJ2Rpc2FibGUnLFxuICB3YXJuID0gJ3dhcm4nLFxufVxuaW50ZXJmYWNlIElGb3JtU3RhdGUge1xuICBwZW5kaW5nPzogYm9vbGVhbjtcbiAgZGlydHk/OiBib29sZWFuO1xuICBpbnZhbGlkPzogYm9vbGVhbjtcbiAgcHJpc3RpbmU/OiBib29sZWFuO1xuICB2YWxpZD86IGJvb2xlYW47XG4gIHN0YXR1cz86IEZvcm1Db250cm9sU3RhdHVzO1xufVxuIiwiQGlmICh2ZXJib3NlKCkpIHtcbiA8ZGl2IGNsYXNzPVwiXCI+XG4gIGZvcm1TdGF0ZSgpOnt7Zm9ybVN0YXRlKCl8anNvbn19XG4gPC9kaXY+XG4gPGRpdiBjbGFzcz1cIlwiPlxuICBmb3JtKCk6e3tmb3JtKCk/LnZhbHVlfGpzb259fVxuIDwvZGl2PlxufVxuPHNwYW5cbiAgY2xhc3M9XCJ7eyBjbGFzcygpIH19ICBkLWZsZXggIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZCgpLCBtaW5pOiBtaW5pKCkgfVwiXG4gIChjbGljayk9XCJidG5TLmNoZWNrRm9ybSh0aGlzKVwiPlxuICBAaWYgKHNob3dIZWxwSWNvbigpICYmIGhlbHAoKSkge1xuICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mby1jaXJjbGUgbWUtMiB0ZXh0LXByaW1hcnlcIiBbbWF0VG9vbHRpcF09XCJoZWxwKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luY1wiPjwvaT5cbiAgfVxuICA8YnV0dG9uXG4gICAgdHlwZT1cInt7IGFjdGlvblR5cGUoKSB9fVwiXG4gICAgY2xhc3M9XCJ7eyBtY2xhc3MoKSB9fSB7eyBfbWNsYXNzKCkgfHwgJ2J0bicgfX0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBcIlxuICAgIFttYXRCYWRnZV09XCJiYWRnZSgpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICBjaGFuZ2Vjb2xvcjogdmFsaWQoKSxcbiAgICAgICdidG4tcmFpc2VkJzogYW5pbWF0ZSgpLFxuICAgICAgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoKSxcbiAgICAgIGlzRGFuZ2VyOiBkYW5nZXIoKSxcbiAgICAgIGlzV2FybmluZzogd2FybmluZygpLFxuICAgICAgaW52YWxpZDogZm9ybUlzSW52YWxpZCgpLFxuICAgICAgJ2p1c3RpZnktY29udGVudC1jZW50ZXInOiBjZW50ZXJCdG4oKVxuICAgIH1cIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIlxuICAgIChjbGljayk9XCJjbGljaygkZXZlbnQpXCJcbiAgICBbbWF0VG9vbHRpcF09XCJzaG93SGVscEljb24oKSA/IG51bGwgOiAoaGVscCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMpXCI+XG4gICAgQGlmICghbG9hZGluZygpKSB7XG4gICAgICBAaWYgKGlzTGVmdEljb24oKSkge1xuICAgICAgICBAaWYgKGlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImxvY2tlZEljb24oKVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKGxlZnRDdXN0b21JY29uKCkpIHtcbiAgICAgICAgICA8aSBjbGFzcz1cInt7IGxlZnRDdXN0b21JY29uKCkgfX1cIj48L2k+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImxlZnRJY29uKClcIiAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmIChjb21wdXRlZFRleHQoKSkge1xuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ21zLTEnOiBsZWZ0SWNvbigpIHx8IGxlZnRDdXN0b21JY29uKCksXG4gICAgICAgICAgJ21lLTEnOiByaWdodEljb24oKSB8fCByaWdodEN1c3RvbUljb24oKVxuICAgICAgICB9XCI+XG4gICAgICAgIHt7IGNvbXB1dGVkVGV4dCgpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiIFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbXMtMSc6IGlubmVyVGV4dC5pbm5lclRleHQgJiYgKGxlZnRJY29uKCkgfHwgbGVmdEN1c3RvbUljb24oKSksXG4gICAgICAgICAgJ21lLTEnOiBpbm5lclRleHQuaW5uZXJUZXh0ICYmIChyaWdodEljb24oKSB8fCByaWdodEN1c3RvbUljb24oKSlcbiAgICAgICAgfVwiXG4gICAgICAgICNpbm5lclRleHRcbiAgICAgICAgYXBwVHJhbnNsYXRvcj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgIH1cblxuICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXNwaW5uZXIgbXMte3sgaWNvbkJ0bigpID8gJycgOiAnMicgfX0gZmEtc3BpblwiPjwvc3Bhbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAoaXNSaWdodEljb24oKSkge1xuICAgICAgICBAaWYgKGlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImxvY2tlZEljb24oKVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKHJpZ2h0Q3VzdG9tSWNvbigpKSB7XG4gICAgICAgICAgPGkgY2xhc3M9XCJ7eyByaWdodEN1c3RvbUljb24oKSB9fVwiPjwvaT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwicmlnaHRJY29uKClcIiAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICA8L2J1dHRvbj5cbjwvc3Bhbj5cbiJdfQ==
|
|
342
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQVF2QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFNLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFFcEUsU0FBUyxpQkFBaUIsQ0FBQyxLQUFtQztJQUM1RCxPQUFPLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFvQkQsTUFBTSxPQUFPLFlBQVk7SUE4QnZCLElBQW1CLEtBQUssQ0FBQyxDQUFXO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTztRQUNqQixJQUFJLEdBQUcsQ0FBQyxZQUFZLElBQUksT0FBTyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFDRCxJQUF3QixVQUFVLENBQUMsQ0FBVztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUF1QixTQUFTLENBQUMsQ0FBVztRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFtQixLQUFLLENBQUMsQ0FBVTtRQUNqQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFvQixNQUFNLENBQUMsQ0FBVztRQUNwQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ1YsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO2dCQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO2dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEIsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDO2dCQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN2QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7Z0JBQ3ZCLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFBYSxVQUFVLENBQUMsQ0FBUztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBeUZEOztPQUVHO0lBQ0gsSUFBK0QsUUFBUSxDQUFDLENBQVU7UUFDaEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFLRCxJQUF5QyxnQkFBZ0IsQ0FBQyxDQUFTO1FBQ2pFLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFzQkQ7UUFsUUEsa0VBQWtFO1FBQ3pELGVBQVUsR0FBRyxLQUFLLEVBQWlCLENBQUM7UUFDcEMsVUFBSyxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsUUFBUSxDQUMvQixHQUFHLEVBQUU7WUFDSCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQ2xCLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQ3BDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFakMsT0FBTyxTQUFTO2dCQUNkLFNBQVMsQ0FBQyxPQUFPO2dCQUNqQixhQUFhLElBQUksYUFBYSxDQUFDLElBQUk7Z0JBQ25DLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQWEsSUFBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUNsRixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxFQUNELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUNuQixDQUFDO1FBQ08sY0FBUyxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNqQyxXQUFNLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDMUIsWUFBTyxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUkzQixZQUFPLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFnR2hDLFlBQU8sR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDN0IsZUFBVSxHQUFHLEtBQUssQ0FBZ0MsUUFBUSxDQUFDLENBQUM7UUFDNUQsWUFBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQThCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZELFVBQUssR0FBRyxLQUFLLENBQWtCLElBQUksQ0FBQyxDQUFDO1FBQ3JDLFVBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztRQVFqQywyQ0FBMkM7UUFDM0MscUNBQXFDO1FBRXJDLHdCQUF3QjtRQUN4QixnQkFBZ0I7UUFDaEIsTUFBTTtRQUNOLGFBQWE7UUFDYixtQ0FBbUM7UUFDbkMsK0JBQStCO1FBQy9CLG1DQUFtQztRQUNuQyxxQ0FBcUM7UUFDckMsK0JBQStCO1FBQy9CLE9BQU87UUFDUCxNQUFNO1FBQ0csb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBYSxFQUFFLENBQUMsQ0FBQztRQUMvRCxtQ0FBbUM7UUFDbkMsb0NBQW9DO1FBQzNCLFNBQUksR0FBRyxLQUFLLEVBRWxCLENBQUM7UUFDZSxjQUFTLEdBQUcsUUFBUSxDQUNyQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDMUIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2xCLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixTQUFTLENBQ1AsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULENBQUMsQ0FBYTtnQkFDVixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU87Z0JBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSztnQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPO2dCQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVE7Z0JBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSztnQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNO2FBQzVCO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FDVCxFQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekIsT0FBTyxJQUFJO2dCQUNULENBQUMsQ0FBYTtvQkFDVixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUNwQjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLENBQ0YsQ0FBQztRQUNPLFVBQUssR0FDWixLQUFLLEVBQXNGLENBQUM7UUFDM0UsZUFBVSxHQUFHLFFBQVEsQ0FDdEMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUNsQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQixLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BELFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUN4QixNQUFNLEVBQUUsR0FBK0I7Z0JBQ3JDLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEtBQUssRUFBRSxJQUFJO2dCQUNYLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQztZQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPO29CQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDdkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDakMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPO29CQUFFLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDdkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRO29CQUFFLEVBQUUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO29CQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQ0gsQ0FDRixDQUNGLENBQ0YsQ0FBQztRQUVPLFNBQUksR0FBRyxLQUFLLEVBQTZCLENBQUM7UUFRMUMsV0FBTSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUM3QixpQkFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixjQUFTLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQztRQUl6QyxvQkFBZSxHQUFHLE1BQU0sQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUN2QyxhQUFRLEdBQUcsTUFBTSxDQUFpQixJQUFJLENBQUMsQ0FBQztRQUN4QyxtQkFBYyxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUNyQyxTQUFJLEdBQUcsS0FBSyxFQUE2QixDQUFDO1FBQzFDLFVBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsU0FBSSxHQUFHLEtBQUssQ0FBVSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQThCLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGtCQUFhLEdBQUcsS0FBSyxDQUE2QixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEUsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0IsZUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixVQUFLLEdBQUcsTUFBTSxDQUFnQixTQUFTLENBQUMsQ0FBQztRQUNuRCxhQUFRLEdBQUcsS0FBSyxDQUFpQixLQUFLLENBQUMsQ0FBQztRQUN4QyxpQkFBWSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUN2QixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2QsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDdEUsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBaUNuRixlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQUUsUUFBUSxDQUFDO1lBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDOUIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFDcEIsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFDcEMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFDdkIsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QixPQUFPLENBQ0wsUUFBUTtnQkFDUixDQUFDLEtBQUs7Z0JBQ04sQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE9BQU87b0JBQ3JDLENBQUMsSUFBSSxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDckQsS0FBSyxDQUNOLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQTVDRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFBRSxRQUFRLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLCtFQUErRTtRQUMvRSxpREFBaUQ7SUFDbkQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUQsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFZO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFdBQVc7UUFDYixPQUFPLGNBQ0wsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQzlFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUNELEtBQUssQ0FBQyxNQUFNO1FBQ1YsV0FBVztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFrQkQsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0F4VFUsWUFBWTtrR0FBWixZQUFZLG83REF0QmhCLGlCQUFpQixxK0JBQWpCLGlCQUFpQiwwNkNDdEMxQixvMUVBZ0ZBLHl3QkQvQkksT0FBTyxtRkFFUCxnQkFBZ0IsNFRBQ2hCLGNBQWMsMlBBQ2QsaUJBQWlCLDhSQUNqQixRQUFRLDZDQUNSLG1CQUFtQixrRkFDbkIsU0FBUyx5Q0FDVCxnQkFBZ0I7OzJGQUdQLFlBQVk7a0JBbkJ4QixTQUFTOytCQUNFLFNBQVMsY0FHUCxJQUFJLFdBR1A7d0JBQ1AsT0FBTzt3QkFDUCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFFBQVE7d0JBQ1IsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULGdCQUFnQjtxQkFDakI7d0RBZ0NrQixLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBWVcsVUFBVTtzQkFBakMsS0FBSzt1QkFBQyxXQUFXO2dCQU1LLFNBQVM7c0JBQS9CLEtBQUs7dUJBQUMsVUFBVTtnQkFPRSxLQUFLO3NCQUF2QixLQUFLO3VCQUFDLE1BQU07Z0JBT08sTUFBTTtzQkFBekIsS0FBSzt1QkFBQyxPQUFPO2dCQWlFMkIsY0FBYztzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRTtnQkFDOUIsWUFBWTtzQkFBcEIsS0FBSztnQkFNTyxVQUFVO3NCQUF0QixLQUFLO2dCQThGeUQsUUFBUTtzQkFBdEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQU9oQixnQkFBZ0I7c0JBQXhELEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0JBVXpCLE1BQU07c0JBQWYsTUFBTTtnQkFDaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXOztBQW9FeEIsSUFBSyxhQUdKO0FBSEQsV0FBSyxhQUFhO0lBQ2hCLG9DQUFtQixDQUFBO0lBQ25CLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBSEksYUFBYSxLQUFiLGFBQWEsUUFHakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1BcnJheSxcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbFN0YXR1cyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSWNvbkRlZmluaXRpb24sIGZhTG9jayB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBCdG5TZXJ2aWNlIH0gZnJvbSAnLi9idG4uc2VydmljZSc7XG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdHJhbnNsYXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYsIEFzeW5jUGlwZSwgSnNvblBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IHsgSWNvblR5cGUsIEJ0blR5cGUsIEJ0bkdyb3VwIH0gZnJvbSAnLi9idG4ubW9kZWwnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlLCBvZiwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmZ1bmN0aW9uIGJvb2xlYW5BdHRyaWJ1dGUyKHZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiBib29sZWFuQXR0cmlidXRlKHZhbHVlKTtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1idG4nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnRuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnRuLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgLy8gLy9cbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdJZixcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEJhZGdlTW9kdWxlLFxuICAgIEZvbnRBd2Vzb21lTW9kdWxlLFxuICAgIEpzb25QaXBlLFxuICAgIFRyYW5zbGF0b3JEaXJlY3RpdmUsXG4gICAgQXN5bmNQaXBlLFxuICAgIFNES1RyYW5zbGF0ZVBpcGUsXG4gIF0sXG59KSAvLyBJbmhlcml0ZWRcbmV4cG9ydCBjbGFzcyBCdG5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogVG8gYmUgcGFzc2VkIHdoZW4gdG8gY2hlY2sgZm9yIHNwZWNpZmljIGludmFsaWQgZm9ybSBmaWVsZHMgKi9cbiAgcmVhZG9ubHkgZm9ybVNjaGVtYSA9IGlucHV0PElGb3JtU2NoZW1hW10+KCk7XG4gIHJlYWRvbmx5IGRlYnVnID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZm9ybUlzSW52YWxpZCA9IGNvbXB1dGVkPGJvb2xlYW4+KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm1TdGF0ZSA9IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgICAgIGZvcm0gPSB0aGlzLmZvcm0oKSxcbiAgICAgICAgb25Gb3JtSW52YWxpZCA9IHRoaXMub25Gb3JtSW52YWxpZCgpLFxuICAgICAgICBmb3JtU2NoZW1hID0gdGhpcy5mb3JtU2NoZW1hKCk7XG5cbiAgICAgIHJldHVybiBmb3JtU3RhdGUgJiZcbiAgICAgICAgZm9ybVN0YXRlLmludmFsaWQgJiZcbiAgICAgICAgb25Gb3JtSW52YWxpZCA9PSBPbkZvcm1JbnZhbGlkLndhcm4gJiZcbiAgICAgICAgZm9ybVNjaGVtYT8ubGVuZ3RoXG4gICAgICAgID8gZm9ybVNjaGVtYS5zb21lKChmKSA9PiAoPEZvcm1Hcm91cD5mb3JtKS5jb250cm9sc1tmLmZpZWxkPy50b1N0cmluZygpXT8uaW52YWxpZClcbiAgICAgICAgOiBudWxsO1xuICAgIH0sXG4gICAgeyBlcXVhbDogaXNFcXVhbCB9LFxuICApO1xuICByZWFkb25seSBjZW50ZXJCdG4gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgZGFuZ2VyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgd2FybmluZyA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHZlcmJvc2UgPSBpbnB1dDxib29sZWFuPigpO1xuICAvLyBjb3VudGVyID0gc2lnbmFsKDApO1xuXG4gIHByb3RlY3RlZCBpY29uVHlwZTogSWNvblR5cGU7XG4gIHJlYWRvbmx5IGljb25CdG4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBsb2FkaW5nID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBJbnB1dCgnaWNvbicpIHNldCBfaWNvbih2OiBJY29uVHlwZSkge1xuICAgIHRoaXMuaWNvblR5cGUgPSB2O1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuYnRuUy5nZXRJY29uKHYpO1xuICAgIGlmICghcmVzKSByZXR1cm47XG4gICAgaWYgKHJlcy5pY29uUG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xuICAgICAgdGhpcy5yaWdodEljb24uc2V0KHJlcy5pY29uKTtcbiAgICAgIHRoaXMucmlnaHRDdXN0b21JY29uLnNldChyZXMuaWNvblN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGVmdEljb24uc2V0KHJlcy5pY29uKTtcbiAgICAgIHRoaXMubGVmdEN1c3RvbUljb24uc2V0KHJlcy5pY29uU3RyaW5nKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCdyaWdodEljb24nKSBzZXQgX3JpZ2h0SWNvbih2OiBJY29uVHlwZSkge1xuICAgIHRoaXMuaWNvblR5cGUgPSB2O1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuYnRuUy5nZXRJY29uKHYpO1xuICAgIHRoaXMucmlnaHRJY29uLnNldChyZXMuaWNvbik7XG4gICAgdGhpcy5yaWdodEN1c3RvbUljb24uc2V0KHJlcy5pY29uU3RyaW5nKTtcbiAgfVxuICBASW5wdXQoJ2xlZnRJY29uJykgc2V0IF9sZWZ0SWNvbih2OiBJY29uVHlwZSkge1xuICAgIHRoaXMuaWNvblR5cGUgPSB2O1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuYnRuUy5nZXRJY29uKHYpO1xuICAgIHRoaXMubGVmdEljb24uc2V0KHJlcy5pY29uKTtcbiAgICB0aGlzLmxlZnRDdXN0b21JY29uLnNldChyZXMuaWNvblN0cmluZyk7XG4gIH1cblxuICBASW5wdXQoJ3R5cGUnKSBzZXQgX3R5cGUodjogQnRuVHlwZSkge1xuICAgIGNvbnN0IHsgX2ljb24sIF9tY2xhc3MsIF90eXBlIH0gPSB0aGlzLmJ0blMuZ2V0VHlwZSh2KTtcbiAgICB0aGlzLl9tY2xhc3MudXBkYXRlKChtY2xhc3MpID0+IF9tY2xhc3MgfHwgbWNsYXNzKTtcbiAgICBpZiAoX2ljb24pIHRoaXMuX2ljb24gPSBfaWNvbjtcbiAgICBpZiAoX3R5cGUpIHRoaXMuX3R5cGUgPSBfdHlwZTtcbiAgfVxuXG4gIEBJbnB1dCgnZ3JvdXAnKSBzZXQgX2dyb3VwKHY6IEJ0bkdyb3VwKSB7XG4gICAgc3dpdGNoICh2KSB7XG4gICAgICBjYXNlICdhZGQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ291dGxpbmUnO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2FkZCc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2xvbmUnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnY2xvbmUnO1xuICAgICAgICB0aGlzLl90ZXh0LnNldCgnQ2xvbmUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjcmVhdGUnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ291dGxpbmUnO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2FkZCc7XG4gICAgICAgIHRoaXMuX3RleHQuc2V0KCdDcmVhdGUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjbG9zZSc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnZGFuZ2VyLW91dGxpbmUnO1xuICAgICAgICB0aGlzLmN1c3RvbUljb24gPSB0aGlzLmJ0blMuZ2V0SWNvbignY2xvc2UnKS5pY29uU3RyaW5nO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnZGFuZ2VyLW91dGxpbmUnO1xuICAgICAgICB0aGlzLl9pY29uID0gJ2RlbGV0ZSc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZG93bmxvYWQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnZG93bmxvYWQnO1xuICAgICAgICB0aGlzLmljb25CdG4uc2V0KHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VkaXQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnZWRpdCc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5jdXN0b21JY29uID0gJ2ZhIGZhLWV5ZSc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VhcmNoJzpcbiAgICAgICAgdGhpcy5fdHlwZSA9ICdzZWNvbmRhcnknO1xuICAgICAgICB0aGlzLl9pY29uID0gJ3NlYXJjaCc7XG4gICAgICAgIHRoaXMuaWNvbkJ0bi5zZXQodHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2hvdyc6XG4gICAgICAgIHRoaXMuX3R5cGUgPSAnc2Vjb25kYXJ5JztcbiAgICAgICAgdGhpcy5faWNvbiA9ICdzaG93JztcbiAgICAgICAgdGhpcy5fdGV4dC5zZXQoJ1Nob3cnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgICB0aGlzLl90eXBlID0gJ3NlY29uZGFyeSc7XG4gICAgICAgIHRoaXMuX2ljb24gPSAnc2F2ZSc7XG4gICAgICAgIHRoaXMuX3RleHQuc2V0KCdTdWJtaXQnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzYXZlJzpcbiAgICAgICAgdGhpcy5fZ3JvdXAgPSAnc3VibWl0JztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJlYWRvbmx5IF9tY2xhc3MgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGFjdGlvblR5cGUgPSBpbnB1dDwnc3VibWl0JyB8ICdidXR0b24nIHwgJ3Jlc2V0Jz4oJ2J1dHRvbicpO1xuICByZWFkb25seSBhbmltYXRlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiBhcyB1bmRlZmluZWQgfSk7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZTIgfSkgZXhjbHVkZUxvZ2dpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgbG9nZ2luZ1ZhbHVlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJhZGdlID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyPihudWxsKTtcbiAgcmVhZG9ubHkgY2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBsZWZ0IHNpZGUgaWNvblxuICAgKi9cbiAgQElucHV0KCkgc2V0IGN1c3RvbUljb24odjogc3RyaW5nKSB7XG4gICAgdGhpcy5sZWZ0Q3VzdG9tSWNvbi5zZXQodik7XG4gIH1cblxuICAvLyBmb3JtU3RhdGUgPSBjb21wdXRlZDxJRm9ybVN0YXRlPigoKSA9PiB7XG4gIC8vICAgY29uc3QgZCA9IHRoaXMuY2hlY2tGb3JtU3RhdGUoKTtcblxuICAvLyAgIGlmICh0aGlzLmRlYnVnKCkpIHtcbiAgLy8gICAgIGRlYnVnZ2VyO1xuICAvLyAgIH1cbiAgLy8gICByZXR1cm4ge1xuICAvLyAgICAgcGVuZGluZzogdGhpcy5mb3JtPy5wZW5kaW5nLFxuICAvLyAgICAgZGlydHk6IHRoaXMuZm9ybT8uZGlydHksXG4gIC8vICAgICBpbnZhbGlkOiB0aGlzLmZvcm0/LmludmFsaWQsXG4gIC8vICAgICBwcmlzdGluZTogdGhpcy5mb3JtPy5wcmlzdGluZSxcbiAgLy8gICAgIHZhbGlkOiB0aGlzLmZvcm0/LnZhbGlkLFxuICAvLyAgIH07XG4gIC8vIH0pO1xuICByZWFkb25seSBjaGVja0Zvcm1TdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElGb3JtU3RhdGU+KHt9KTtcbiAgLy8gcHJvdGVjdGVkIGZvcm1TdWI6IFN1YnNjcmlwdGlvbjtcbiAgLy8gcHJvdGVjdGVkIGZvcm1zU3ViOiBTdWJzY3JpcHRpb247XG4gIHJlYWRvbmx5IGZvcm0gPSBpbnB1dDxcbiAgICBGb3JtR3JvdXA8YW55PiB8IEZvcm1Db250cm9sPGFueT4gfCBGb3JtQXJyYXk8YW55PiB8IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT5cbiAgPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybVN0YXRlID0gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZm9ybSkucGlwZShcbiAgICAgIGZpbHRlcigoeCkgPT4gISF4KSxcbiAgICAgIHN3aXRjaE1hcCgoZm9ybSkgPT5cbiAgICAgICAgZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKFxuICAgICAgICAgICAgdGhpcy5mb3JtKClcbiAgICAgICAgICAgICAgPyA8SUZvcm1TdGF0ZT57XG4gICAgICAgICAgICAgICAgICBwZW5kaW5nOiB0aGlzLmZvcm0oKT8ucGVuZGluZyxcbiAgICAgICAgICAgICAgICAgIGRpcnR5OiB0aGlzLmZvcm0oKT8uZGlydHksXG4gICAgICAgICAgICAgICAgICBpbnZhbGlkOiB0aGlzLmZvcm0oKT8uaW52YWxpZCxcbiAgICAgICAgICAgICAgICAgIHByaXN0aW5lOiB0aGlzLmZvcm0oKT8ucHJpc3RpbmUsXG4gICAgICAgICAgICAgICAgICB2YWxpZDogdGhpcy5mb3JtKCk/LnZhbGlkLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzOiB0aGlzLmZvcm0oKT8uc3RhdHVzLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICksXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm0oKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JtXG4gICAgICAgICAgICAgID8gPElGb3JtU3RhdGU+e1xuICAgICAgICAgICAgICAgICAgcGVuZGluZzogZm9ybS5wZW5kaW5nLFxuICAgICAgICAgICAgICAgICAgZGlydHk6IGZvcm0uZGlydHksXG4gICAgICAgICAgICAgICAgICBpbnZhbGlkOiBmb3JtLmludmFsaWQsXG4gICAgICAgICAgICAgICAgICBwcmlzdGluZTogZm9ybS5wcmlzdGluZSxcbiAgICAgICAgICAgICAgICAgIHZhbGlkOiBmb3JtLnZhbGlkLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzOiBmb3JtLnN0YXR1cyxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgZm9ybXMgPVxuICAgIGlucHV0PChGb3JtR3JvdXA8YW55PiB8IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBGb3JtQ29udHJvbDxhbnk+IHwgRm9ybUFycmF5PGFueT4pW10+KCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmb3Jtc1N0YXRlID0gdG9TaWduYWwoXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZm9ybXMpLnBpcGUoXG4gICAgICBmaWx0ZXIoKHgpID0+ICEheCAmJiB4Lmxlbmd0aCA+IDApLFxuICAgICAgc3dpdGNoTWFwKChmb3JtcykgPT5cbiAgICAgICAgbWVyZ2UoLi4uZm9ybXMubWFwKChmb3JtKSA9PiBmb3JtLnN0YXR1c0NoYW5nZXMpKS5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSg1MDApLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtcyA9IHRoaXMuZm9ybXMoKTtcbiAgICAgICAgICAgIGlmICghZm9ybXMpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgZnM6IE9taXQ8SUZvcm1TdGF0ZSwgJ3N0YXR1cyc+ID0ge1xuICAgICAgICAgICAgICBwZW5kaW5nOiB0cnVlLFxuICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgaW52YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgcHJpc3RpbmU6IHRydWUsXG4gICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGZvcm1zLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCF4LnBlbmRpbmcpIGZzLnBlbmRpbmcgPSB4LnBlbmRpbmc7XG4gICAgICAgICAgICAgIGlmICgheC5kaXJ0eSkgZnMuZGlydHkgPSB4LmRpcnR5O1xuICAgICAgICAgICAgICBpZiAoIXguaW52YWxpZCkgZnMuaW52YWxpZCA9IHguaW52YWxpZDtcbiAgICAgICAgICAgICAgaWYgKCF4LnByaXN0aW5lKSBmcy5wcmlzdGluZSA9IHgucHJpc3RpbmU7XG4gICAgICAgICAgICAgIGlmICgheC52YWxpZCkgZnMudmFsaWQgPSB4LnZhbGlkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZnM7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgaGVscCA9IGlucHV0PHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBubyBsb25nZXIgbmVlZGVkIHRvIGRldGVjdCB0aGUgY29ycmVjdCBzcGFjaW5nIGJldHdlZW4gaWNvbiBhbmQgdGV4dFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiwgYWxpYXM6ICdpY29uQnRuJyB9KSBzZXQgX2ljb25CdG4odjogYm9vbGVhbikge1xuICAgIHRoaXMuaWNvbkJ0bi5zZXQodiB8fCBmYWxzZSk7XG4gIH1cblxuICByZWFkb25seSBtY2xhc3MgPSBpbnB1dDxzdHJpbmc+KG51bGwpO1xuICByZWFkb25seSBzaG93SGVscEljb24gPSBpbnB1dCh0cnVlKTtcbiAgcmVhZG9ubHkgcmlnaHRJY29uID0gc2lnbmFsPEljb25EZWZpbml0aW9uPihudWxsKTtcbiAgQElucHV0KHsgYWxpYXM6ICdyaWdodEN1c3RvbUljb24nIH0pIHNldCBfcmlnaHRDdXN0b21JY29uKHY6IHN0cmluZykge1xuICAgIHRoaXMucmlnaHRDdXN0b21JY29uLnNldCh2KTtcbiAgfVxuICByZWFkb25seSByaWdodEN1c3RvbUljb24gPSBzaWduYWw8c3RyaW5nPihudWxsKTtcbiAgcmVhZG9ubHkgbGVmdEljb24gPSBzaWduYWw8SWNvbkRlZmluaXRpb24+KG51bGwpO1xuICByZWFkb25seSBsZWZ0Q3VzdG9tSWNvbiA9IG1vZGVsPHN0cmluZz4obnVsbCk7XG4gIHJlYWRvbmx5IHRleHQgPSBpbnB1dDxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSB2YWxpZCA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBtaW5pID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlMiBhcyB1bmRlZmluZWQgfSk7XG4gIHJlYWRvbmx5IG9uRm9ybUludmFsaWQgPSBpbnB1dDxrZXlvZiB0eXBlb2YgT25Gb3JtSW52YWxpZD4oT25Gb3JtSW52YWxpZC5kaXNhYmxlKTtcbiAgQE91dHB1dCgpIG1jbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQFZpZXdDaGlsZCgnaW5uZXJUZXh0JykgaW5uZXJUZXh0OiBFbGVtZW50UmVmPEhUTUxTcGFuRWxlbWVudD47XG4gIHJlYWRvbmx5IGxvY2tlZEljb24gPSBzaWduYWwoZmFMb2NrKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF90ZXh0ID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IGRpc2FibGVkID0gbW9kZWw8Ym9vbGVhbiB8IG51bGw+KGZhbHNlKTtcbiAgcmVhZG9ubHkgY29tcHV0ZWRUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy50ZXh0KCksXG4gICAgICBsb2NhbCA9IHRoaXMuX3RleHQoKTtcbiAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IGxvY2FsIDogaW5wdXQ7XG4gIH0pO1xuICBwdWJsaWMgYnRuUyA9IGluamVjdChCdG5TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTGVmdEljb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxlZnRJY29uKCkgfHwgdGhpcy5sZWZ0Q3VzdG9tSWNvbigpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzUmlnaHRJY29uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yaWdodEljb24oKSB8fCB0aGlzLnJpZ2h0Q3VzdG9tSWNvbigpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZnMgPSB0aGlzLmZvcm1TdGF0ZSgpO1xuICAgICAgaWYgKHRoaXMuZGVidWcoKSkgZGVidWdnZXI7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgYWZ0ZXIgZXZlcnkgY2hlY2sgb2YgdGhlIGNvbXBvbmVudCdzIHZpZXcuIEFwcGxpZXMgdG8gY29tcG9uZW50cyBvbmx5LlxuICAgIC8vQWRkICdpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQnIHRvIHRoZSBjbGFzcy5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fbWNsYXNzKCkpIHRoaXMuX3R5cGUgPSB0aGlzLmJ0blMuZGVmYXVsdFR5cGU7XG4gIH1cblxuICBzZXRMb2FkZXIodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5sb2FkaW5nLnNldCh2YWwpO1xuICB9XG4gIGdldCBleHRyYWN0VGV4dCgpIHtcbiAgICByZXR1cm4gYENsaWNrZWQgb24gJHtcbiAgICAgIHRoaXMudGV4dCgpIHx8IHRoaXMuaW5uZXJUZXh0Py5uYXRpdmVFbGVtZW50Py5pbm5lckhUTUwgfHwgdGhpcy5pY29uVHlwZSB8fCAnYnV0dG9uJ1xuICAgIH0gJHt0aGlzLmxvZ2dpbmdWYWx1ZSA/ICdcXG5UcmFjayB2YWx1ZTogJyArIHRoaXMubG9nZ2luZ1ZhbHVlIDogJyd9YDtcbiAgfVxuICBjbGljaygkZXZlbnQpIHtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSB8fCB0aGlzLmxvYWRpbmcoKSkgcmV0dXJuO1xuICAgIHRoaXMubWNsaWNrLmVtaXQoJGV2ZW50KTtcbiAgICB0aGlzLmJ0blMubG9nQ2xpY2sodGhpcyk7XG4gIH1cblxuICByZWFkb25seSBpc0Rpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCgpLFxuICAgICAgdmFsaWQgPSB0aGlzLnZhbGlkKCksXG4gICAgICBvbkZvcm1JbnZhbGlkID0gdGhpcy5vbkZvcm1JbnZhbGlkKCksXG4gICAgICBmb3JtID0gdGhpcy5mb3JtU3RhdGUoKSxcbiAgICAgIGZvcm1zID0gdGhpcy5mb3Jtc1N0YXRlKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIGRpc2FibGVkIHx8XG4gICAgICAhdmFsaWQgfHxcbiAgICAgIChvbkZvcm1JbnZhbGlkID09IE9uRm9ybUludmFsaWQuZGlzYWJsZSAmJlxuICAgICAgICAoZm9ybT8uaW52YWxpZCB8fCBmb3JtPy5wZW5kaW5nIHx8IGZvcm1zPy5wZW5kaW5nKSkgfHxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfSk7XG5cbiAgZGlzYWJsZSgpIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldCh0cnVlKTtcbiAgfVxuXG4gIGVuYWJsZSgpIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldChmYWxzZSk7XG4gIH1cbn1cbmVudW0gT25Gb3JtSW52YWxpZCB7XG4gIGRpc2FibGUgPSAnZGlzYWJsZScsXG4gIHdhcm4gPSAnd2FybicsXG59XG5pbnRlcmZhY2UgSUZvcm1TdGF0ZSB7XG4gIHBlbmRpbmc/OiBib29sZWFuO1xuICBkaXJ0eT86IGJvb2xlYW47XG4gIGludmFsaWQ/OiBib29sZWFuO1xuICBwcmlzdGluZT86IGJvb2xlYW47XG4gIHZhbGlkPzogYm9vbGVhbjtcbiAgc3RhdHVzPzogRm9ybUNvbnRyb2xTdGF0dXM7XG59XG4iLCJAaWYgKHZlcmJvc2UoKSkge1xuIDxkaXYgY2xhc3M9XCJcIj5cbiAgZm9ybVN0YXRlKCk6e3tmb3JtU3RhdGUoKXxqc29ufX1cbiA8L2Rpdj5cbiA8ZGl2IGNsYXNzPVwiXCI+XG4gIGZvcm0oKTp7e2Zvcm0oKT8udmFsdWV8anNvbn19XG4gPC9kaXY+XG59XG48c3BhblxuICBjbGFzcz1cInt7IGNsYXNzKCkgfX0gIGQtZmxleCAgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0Rpc2FibGVkKCksIG1pbmk6IG1pbmkoKSB9XCJcbiAgKGNsaWNrKT1cImJ0blMuY2hlY2tGb3JtKHRoaXMpXCI+XG4gIEBpZiAoc2hvd0hlbHBJY29uKCkgJiYgaGVscCgpKSB7XG4gICAgPGkgY2xhc3M9XCJmYSBmYS1pbmZvLWNpcmNsZSBtZS0yIHRleHQtcHJpbWFyeVwiIFttYXRUb29sdGlwXT1cImhlbHAoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jXCI+PC9pPlxuICB9XG4gIDxidXR0b25cbiAgICB0eXBlPVwie3sgYWN0aW9uVHlwZSgpIH19XCJcbiAgICBjbGFzcz1cInt7IG1jbGFzcygpIH19IHt7IF9tY2xhc3MoKSB8fCAnYnRuJyB9fSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIFwiXG4gICAgW21hdEJhZGdlXT1cImJhZGdlKClcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgIGNoYW5nZWNvbG9yOiB2YWxpZCgpLFxuICAgICAgJ2J0bi1yYWlzZWQnOiBhbmltYXRlKCksXG4gICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCgpLFxuICAgICAgaXNEYW5nZXI6IGRhbmdlcigpLFxuICAgICAgaXNXYXJuaW5nOiB3YXJuaW5nKCksXG4gICAgICBpbnZhbGlkOiBmb3JtSXNJbnZhbGlkKCksXG4gICAgICAnanVzdGlmeS1jb250ZW50LWNlbnRlcic6IGNlbnRlckJ0bigpXG4gICAgfVwiXG4gICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoKVwiXG4gICAgKGNsaWNrKT1cImNsaWNrKCRldmVudClcIlxuICAgIFttYXRUb29sdGlwXT1cInNob3dIZWxwSWNvbigpID8gbnVsbCA6IChoZWxwKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYylcIj5cbiAgICBAaWYgKCFsb2FkaW5nKCkpIHtcbiAgICAgIEBpZiAoaXNMZWZ0SWNvbigpKSB7XG4gICAgICAgIEBpZiAoaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwibG9ja2VkSWNvbigpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAobGVmdEN1c3RvbUljb24oKSkge1xuICAgICAgICAgIDxpIGNsYXNzPVwie3sgbGVmdEN1c3RvbUljb24oKSB9fVwiPjwvaT5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwibGVmdEljb24oKVwiIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKGNvbXB1dGVkVGV4dCgpKSB7XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIlwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbXMtMSc6IGxlZnRJY29uKCkgfHwgbGVmdEN1c3RvbUljb24oKSxcbiAgICAgICAgICAnbWUtMSc6IHJpZ2h0SWNvbigpIHx8IHJpZ2h0Q3VzdG9tSWNvbigpXG4gICAgICAgIH1cIj5cbiAgICAgICAge3sgY29tcHV0ZWRUZXh0KCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgPC9zcGFuPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCIgXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdtcy0xJzogaW5uZXJUZXh0LmlubmVyVGV4dCAmJiAobGVmdEljb24oKSB8fCBsZWZ0Q3VzdG9tSWNvbigpKSxcbiAgICAgICAgICAnbWUtMSc6IGlubmVyVGV4dC5pbm5lclRleHQgJiYgKHJpZ2h0SWNvbigpIHx8IHJpZ2h0Q3VzdG9tSWNvbigpKVxuICAgICAgICB9XCJcbiAgICAgICAgI2lubmVyVGV4dFxuICAgICAgICBhcHBUcmFuc2xhdG9yPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuXG4gICAgQGlmIChsb2FkaW5nKCkpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBtcy17eyBpY29uQnRuKCkgPyAnJyA6ICcyJyB9fSBmYS1zcGluXCI+PC9zcGFuPlxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIChpc1JpZ2h0SWNvbigpKSB7XG4gICAgICAgIEBpZiAoaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwibG9ja2VkSWNvbigpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAocmlnaHRDdXN0b21JY29uKCkpIHtcbiAgICAgICAgICA8aSBjbGFzcz1cInt7IHJpZ2h0Q3VzdG9tSWNvbigpIH19XCI+PC9pPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJyaWdodEljb24oKVwiIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIDwvYnV0dG9uPlxuPC9zcGFuPlxuIl19
|
|
@@ -34,7 +34,7 @@ export class TableInputComponent extends FormGeneratorComponent {
|
|
|
34
34
|
this.pageSize = signal(10);
|
|
35
35
|
this.pageState = signal(null);
|
|
36
36
|
this.actionBtns = input();
|
|
37
|
-
this.tableClass = input();
|
|
37
|
+
this.tableClass = input('table table-responsive table-responsive table-borderless');
|
|
38
38
|
this.filterForm = new FormGroup({});
|
|
39
39
|
this.filterForms = signal([]);
|
|
40
40
|
this.usePaginator = signal(true);
|
|
@@ -174,7 +174,7 @@ export class TableInputComponent extends FormGeneratorComponent {
|
|
|
174
174
|
this.singleFormStructure?.controls[scheme.field]?.hasValidator(Validators.required);
|
|
175
175
|
}
|
|
176
176
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: TableInputComponent, isStandalone: true, selector: "table-input", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: false, transformFunction: null }, filterContainerClass: { classPropertyName: "filterContainerClass", publicName: "filterContainerClass", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, _pageSize: { classPropertyName: "_pageSize", publicName: "pageSize", isSignal: false, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, singleFormStructure: { classPropertyName: "singleFormStructure", publicName: "singleFormStructure", isSignal: false, isRequired: true, transformFunction: null }, deleteRowFunc: { classPropertyName: "deleteRowFunc", publicName: "deleteRowFunc", isSignal: false, isRequired: false, transformFunction: null }, addRowFunc: { classPropertyName: "addRowFunc", publicName: "addRowFunc", isSignal: false, isRequired: false, transformFunction: null }, _usePaginator: { classPropertyName: "_usePaginator", publicName: "usePaginator", isSignal: false, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null } }, providers: [FilterFormArrayGroupPipe, PaginatorPipe], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator
|
|
177
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: TableInputComponent, isStandalone: true, selector: "table-input", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: false, transformFunction: null }, filterContainerClass: { classPropertyName: "filterContainerClass", publicName: "filterContainerClass", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, _pageSize: { classPropertyName: "_pageSize", publicName: "pageSize", isSignal: false, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, singleFormStructure: { classPropertyName: "singleFormStructure", publicName: "singleFormStructure", isSignal: false, isRequired: true, transformFunction: null }, deleteRowFunc: { classPropertyName: "deleteRowFunc", publicName: "deleteRowFunc", isSignal: false, isRequired: false, transformFunction: null }, addRowFunc: { classPropertyName: "addRowFunc", publicName: "addRowFunc", isSignal: false, isRequired: false, transformFunction: null }, _usePaginator: { classPropertyName: "_usePaginator", publicName: "usePaginator", isSignal: false, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null } }, providers: [FilterFormArrayGroupPipe, PaginatorPipe], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm\"\n [formSchema]=\"filterForms()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm.reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border() }\">\n <div class=\" \">\n <table class=\" {{ tableClass() }} \" [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead (click)=\"utilityService.logForm(filteredFormArray())\">\n <tr class=\"text-center\">\n @for (item of formSchema(); track item.label) {\n <th class=\"{{ item.cls }}\" (click)=\"logColumn(item)\">\n {{ item.label | appTranslate | async }}\n {{ item.isRequired ? '*' : '' }}\n </th>\n }\n @if (!isShow()) {\n <th></th>\n <th></th>\n @for (actionBtn of actionBtns(); track actionBtn) {\n <th></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (subForm of paginatedAndFilteredFormArray(); track subForm.id; let i = $index) {\n <tr\n table-input-row\n (onAddRowFunc)=\"addRowClicked(subForm.index)\"\n [isShow]=\"isShow()\"\n [form]=\"subForm.form\"\n [actionBtns]=\"actionBtns()\"\n [formSchema]=\"formSchema()\"\n [childrenFormSchemaMap]=\"childrenFormSchemaMap\"\n (onDeleteRowFunc)=\"\n deleteRowClicked(subForm.index, subForm.form, {\n btn: $event?.btn\n })\n \"\n (onActionButtonClick)=\"\n handleActionButtonClick(subForm.index, subForm.form, $event)\n \"></tr>\n } @empty {\n <tr>\n <td class=\"text-center\" [colSpan]=\"formSchema()?.length\">\n {{ 'There are no items' | appTranslate | async }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"\"\n [hidden]=\"\n !usePaginator() || !filteredFormArrayLength() || filteredFormArrayLength() < pageSize()\n \">\n <paginator\n #paginatorTag\n [arrayLength]=\"filteredFormArrayLength()\"\n (pageChanged)=\"pageChanged($event)\"\n [pageSize]=\"pageSize()\"\n [resetIndexFunc]=\"filterForm.valueChanges\" />\n </div>\n </div>\n</div>\n", styles: ["tr{vertical-align:top}:host ::ng-deep .text-center input{text-align:center}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: FormGeneratorComponent, selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "formSchemaNoForm", "isShow"], outputs: ["onSubmit", "mchange", "saved", "formChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PaginatorComponent, selector: "paginator", inputs: ["pageSize", "pageIndex", "arrayLength", "resetIndexFunc", "pageSizeOptions"], outputs: ["pageChanged"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: TableInputRowComponent, selector: "tr[table-input-row]", inputs: ["isShow", "hideAdd", "actionBtns", "childrenFormSchemaMap"], outputs: ["onDeleteRowFunc", "onAddRowFunc", "onActionButtonClick"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
178
178
|
}
|
|
179
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableInputComponent, decorators: [{
|
|
180
180
|
type: Component,
|
|
@@ -210,7 +210,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
210
210
|
SDKTranslatePipe,
|
|
211
211
|
FilterFormArrayGroupPipe,
|
|
212
212
|
ValidationMessageComponent,
|
|
213
|
-
], providers: [FilterFormArrayGroupPipe, PaginatorPipe], template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator
|
|
213
|
+
], providers: [FilterFormArrayGroupPipe, PaginatorPipe], template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm\"\n [formSchema]=\"filterForms()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm.reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border() }\">\n <div class=\" \">\n <table class=\" {{ tableClass() }} \" [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead (click)=\"utilityService.logForm(filteredFormArray())\">\n <tr class=\"text-center\">\n @for (item of formSchema(); track item.label) {\n <th class=\"{{ item.cls }}\" (click)=\"logColumn(item)\">\n {{ item.label | appTranslate | async }}\n {{ item.isRequired ? '*' : '' }}\n </th>\n }\n @if (!isShow()) {\n <th></th>\n <th></th>\n @for (actionBtn of actionBtns(); track actionBtn) {\n <th></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (subForm of paginatedAndFilteredFormArray(); track subForm.id; let i = $index) {\n <tr\n table-input-row\n (onAddRowFunc)=\"addRowClicked(subForm.index)\"\n [isShow]=\"isShow()\"\n [form]=\"subForm.form\"\n [actionBtns]=\"actionBtns()\"\n [formSchema]=\"formSchema()\"\n [childrenFormSchemaMap]=\"childrenFormSchemaMap\"\n (onDeleteRowFunc)=\"\n deleteRowClicked(subForm.index, subForm.form, {\n btn: $event?.btn\n })\n \"\n (onActionButtonClick)=\"\n handleActionButtonClick(subForm.index, subForm.form, $event)\n \"></tr>\n } @empty {\n <tr>\n <td class=\"text-center\" [colSpan]=\"formSchema()?.length\">\n {{ 'There are no items' | appTranslate | async }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"\"\n [hidden]=\"\n !usePaginator() || !filteredFormArrayLength() || filteredFormArrayLength() < pageSize()\n \">\n <paginator\n #paginatorTag\n [arrayLength]=\"filteredFormArrayLength()\"\n (pageChanged)=\"pageChanged($event)\"\n [pageSize]=\"pageSize()\"\n [resetIndexFunc]=\"filterForm.valueChanges\" />\n </div>\n </div>\n</div>\n", styles: ["tr{vertical-align:top}:host ::ng-deep .text-center input{text-align:center}\n"] }]
|
|
214
214
|
}], propDecorators: { _pageSize: [{
|
|
215
215
|
type: Input,
|
|
216
216
|
args: ['pageSize']
|
|
@@ -231,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
231
231
|
type: ViewChild,
|
|
232
232
|
args: [PaginatorComponent]
|
|
233
233
|
}] } });
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWlucHV0L3RhYmxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixTQUFTLEdBQ1YsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osUUFBUSxFQUNSLFlBQVksRUFD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OlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElGb3JtU2NoZW1hIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tc2NoZW1hLm1vZGVsJztcbmltcG9ydCB7XG4gIEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSxcbiAgRm9ybVZhbHVlUGlwZSxcbiAgRnVuY3Rpb25DYWxsZXIyLFxuICBIYXNGb3JtVmFsdWVQaXBlLFxuICBUb0FueVBpcGUsXG59IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5cbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFzeW5jUGlwZSxcbiAgSnNvblBpcGUsXG4gIE5nQ2xhc3MsXG4gIE5nRm9yLFxuICBOZ0lmLFxuICBOZ1N3aXRjaCxcbiAgTmdTd2l0Y2hDYXNlLFxuICBOZ1N3aXRjaERlZmF1bHQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFRhYmxlSW5wdXRSb3dDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWlucHV0LXJvdy90YWJsZS1pbnB1dC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUJ0biB9IGZyb20gJy4uL2J0bi9idG4ubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFBhZ2luYXRvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9wYWdpbmF0b3IucGlwZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIFRhYmxlIElucHV0IENvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtVmFsdWVQaXBlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBIYXNGb3JtVmFsdWVQaXBlLFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgSnNvblBpcGUsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBOZ0ZvcixcbiAgICBOZ0lmLFxuICAgIE5nU3dpdGNoLFxuICAgIE5nU3dpdGNoQ2FzZSxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgUGFnaW5hdG9yQ29tcG9uZW50LFxuICAgIFBhZ2luYXRvclBpcGUsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBUYWJsZUlucHV0Um93Q29tcG9uZW50LFxuICAgIFRvQW55UGlwZSxcbiAgICBTREtUcmFuc2xhdGVQaXBlLFxuICAgIEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLCBQYWdpbmF0b3JQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVJbnB1dENvbXBvbmVudDxcbiAgICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfSA9IGFueSxcbiAgPlxuICBleHRlbmRzIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgbG9nQ29sdW1uKF90MjA6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgY29uc29sZS5sb2coX3QyMCk7XG4gIH1cbiAgcmVhZG9ubHkgZm9ybUFycmF5ID0gaW5wdXQ8Rm9ybUFycmF5PEZvcm1Hcm91cDxURm9ybUdyb3VwPj4+KCk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyQ29udGFpbmVyQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGJvcmRlciA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBpc1Nob3cgPSBpbnB1dDxib29sZWFuPigpO1xuICBASW5wdXQoJ3BhZ2VTaXplJykgc2V0IF9wYWdlU2l6ZSh2OiBudW1iZXIpIHtcbiAgICB0aGlzLnBhZ2VTaXplLnNldCh2KTtcbiAgfVxuICByZWFkb25seSBwYWdlU2l6ZSA9IHNpZ25hbDxudW1iZXI+KDEwKTtcbiAgcmVhZG9ubHkgcGFnZVN0YXRlID0gc2lnbmFsPHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfT4obnVsbCk7XG4gIHJlYWRvbmx5IGFjdGlvbkJ0bnMgPSBpbnB1dDxJVGFibGVJbnB1dEJ0bltdPigpO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmb3JtU2NoZW1hJyB9KSBvdmVycmlkZSBzZXQgX2Zvcm1TY2hlbWEoXG4gICAgdjogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSxcbiAgKSB7XG4gICAgdGhpcy5wcmVGb3JtYXRGb3JtU2NoZW1hKHYpO1xuICAgIHN1cGVyLl9mb3JtU2NoZW1hID0gdjtcbiAgfVxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBzaW5nbGVGb3JtU3RydWN0dXJlOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47XG4gIC8qKlxuICAgKiBMZWF2ZSBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZGVsZXRlIGJ1dHRvbiB0byBzaG93XG4gICAqL1xuICBASW5wdXQoKSBkZWxldGVSb3dGdW5jOiAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBkYXRhPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+Wyd2YWx1ZSddLFxuICAgIGNvbmZpZz86IHsgYnRuOiBCdG5Db21wb25lbnQgfSxcbiAgKSA9PiBhbnk7XG4gIC8qKlxuICAgKiBMZWF2ZSBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUgYWRkIGJ1dHRvbiB0byBzaG93XG4gICAqL1xuICBASW5wdXQoKSBhZGRSb3dGdW5jOiAoaW5kZXg6IG51bWJlciwgZGF0YT86IEZvcm1Hcm91cDxURm9ybUdyb3VwPlsndmFsdWUnXSkgPT4gYW55O1xuICBASW5wdXQoJ3VzZVBhZ2luYXRvcicpIHNldCBfdXNlUGFnaW5hdG9yKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy51c2VQYWdpbmF0b3Iuc2V0KHRydWUpO1xuICAgICAgdGhpcy5wYWdlU2l6ZS51cGRhdGUoKHBhZ2VTaXplKSA9PiBwYWdlU2l6ZSB8fCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlUGFnaW5hdG9yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnBhZ2VTaXplLnNldCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IHRhYmxlQ2xhc3MgPSBpbnB1dDwndGFibGUgdGFibGUtcmVzcG9uc2l2ZSB0YWJsZS1yZXNwb25zaXZlIHRhYmxlLWJvcmRlcmxlc3MnPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyRm9ybXMgPSBzaWduYWw8SUZvcm1TY2hlbWFbXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlUGFnaW5hdG9yID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcm90ZWN0ZWQgY2hpbGRyZW5Gb3JtU2NoZW1hTWFwOiB7XG4gICAgW2sgaW4ga2V5b2YgVEZvcm1Hcm91cF0/OiB7XG4gICAgICBmb3JtU2NoZW1hOiBJRm9ybVNjaGVtYVtdO1xuICAgICAgZm9ybVNjaGVtYVN0cjogc3RyaW5nW107XG4gICAgfTtcbiAgfSA9IHt9O1xuICByZWZyZXNoZXI6IG51bWJlcjtcbiAgZm9ybUFycmF5UGFnaW5hdGlvblN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoUGFnaW5hdG9yQ29tcG9uZW50KSBwYWdpbmF0b3JDb21wb25lbnQ6IFBhZ2luYXRvckNvbXBvbmVudDtcblxuICByZWFkb25seSBmaWx0ZXJGb3JtVmFsdWVTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzKTtcbiAgcmVhZG9ubHkgZm9ybUFycmF5TGVuZ3RoU2lnbmFsID0gdG9TaWduYWw8bnVtYmVyPihcbiAgICB0b09ic2VydmFibGUodGhpcy5mb3JtQXJyYXkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGZvcm0pID0+IGZvcm0/LnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgoKSA9PiBmb3JtPy5sZW5ndGgpKSksXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBmaWx0ZXJlZEZvcm1BcnJheSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmZvcm1BcnJheUxlbmd0aFNpZ25hbCgpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybUFycmF5KCksXG4gICAgICBmaWx0ZXJGb3JtVmFsdWUgPSB0aGlzLmZpbHRlckZvcm1WYWx1ZVNpZ25hbCgpO1xuICAgIGNvbnN0IGZvcm1Hcm91cHMgPSBmb3JtQXJyYXk/LmNvbnRyb2xzPy5tYXAoKGMsIGluZGV4KSA9PiAoe1xuICAgICAgaW5kZXgsXG4gICAgICBmb3JtOiBjLFxuICAgICAgaWQ6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2VuZXJhdGVVVUlEKCksXG4gICAgfSkpO1xuICAgIGNvbnN0IGZpbHRlck9iamVjdCA9IHRoaXMuZmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLnF1ZXJ5TWFwcGVyKGZpbHRlckZvcm1WYWx1ZSk7XG4gICAgcmV0dXJuIGZpbHRlck9iamVjdFxuICAgICAgPyBmb3JtR3JvdXBzLmZpbHRlcigoeyBmb3JtIH0pID0+XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUuZmlsdGVyRnVuYyhmaWx0ZXJPYmplY3QpKGZvcm0pLFxuICAgICAgICApXG4gICAgICA6IGZvcm1Hcm91cHM7XG4gIH0pO1xuICByZWFkb25seSBwYWdpbmF0ZWRBbmRGaWx0ZXJlZEZvcm1BcnJheSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZpbHRlcmVkRm9ybUFycmF5KCksXG4gICAgICBwYWdlU3RhdGUgPSB0aGlzLnBhZ2VTdGF0ZSgpO1xuICAgIHJldHVybiB0aGlzLnVzZVBhZ2luYXRvcigpXG4gICAgICA/IHRoaXMucGFnaW5hdG9yUGlwZS50cmFuc2Zvcm0oXG4gICAgICAgICAgZm9ybUFycmF5LFxuICAgICAgICAgIHBhZ2VTdGF0ZT8ucGFnZVNpemUgfHwgdGhpcy5wYWdlU2l6ZSgpLFxuICAgICAgICAgIHBhZ2VTdGF0ZT8ucGFnZUluZGV4IHx8IDAsXG4gICAgICAgIClcbiAgICAgIDogZm9ybUFycmF5O1xuICB9KTtcblxuICByZWFkb25seSBmaWx0ZXJlZEZvcm1BcnJheUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmlsdGVyZWRGb3JtQXJyYXkoKS5sZW5ndGgpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSB1dGlsaXR5U2VydmljZSA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHB1YmxpYyBmaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUgPSBpbmplY3QoRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlKTtcbiAgcHVibGljIHBhZ2luYXRvclBpcGUgPSBpbmplY3QoUGFnaW5hdG9yUGlwZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudXNlUGFnaW5hdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fdXNlUGFnaW5hdG9yID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5yZWZyZXNoZXIgPSBNYXRoLnJhbmRvbSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybUFycmF5UGFnaW5hdGlvblN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICByZXR1cm4gc3VwZXIub25EZXN0cm95KCk7XG4gIH1cblxuICBwYWdlQ2hhbmdlZCgkZXZlbnQ6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSkge1xuICAgIHRoaXMucGFnZVN0YXRlLnNldCgkZXZlbnQpO1xuICB9XG5cbiAgcmVzZXRQYWdpbmF0b3IoKSB7XG4gICAgdGhpcy5wYWdpbmF0b3JDb21wb25lbnQ/LnJlc2V0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJlRm9ybWF0Rm9ybVNjaGVtYSA9IChpdGVtczogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSkgPT4ge1xuICAgIGl0ZW1zLmZvckVhY2goKHgpID0+IHtcbiAgICAgIGlmICh4Lm9uQ2hhbmdlRnVuYykgeC50cmlnZ2VyT25DaGFuZ2VPbkluaXQgPSB0cnVlO1xuICAgICAgZWxzZSBpZiAoeC50eXBlID09ICdidXR0b24nKSB0aGlzLnByZUZvcm1hdEZvcm1TY2hlbWEoeC5jaGlsZHJlbik7XG4gICAgfSk7XG4gIH07XG5cbiAgb3ZlcnJpZGUgaW5pdChzY2hlbWE6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckZvcm1zLnNldChbXSk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZmlsdGVyRm9ybS5jb250cm9scywga2V5KSkge1xuICAgICAgICB0aGlzLmZpbHRlckZvcm0ucmVtb3ZlQ29udHJvbChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICAgIGlmIChzY2hlbWEpXG4gICAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpIHtcbiAgICAgICAgLy8gc2NoZW1lLmZvcm0gPSB0aGlzLmZvcm0gfHwgc2NoZW1lLmZvcm07XG4gICAgICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgICAgfVxuICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb25CdXR0b25DbGljayhcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGZvcm06IEZvcm1Hcm91cDxURm9ybUdyb3VwPixcbiAgICBlOiB7IGJ0bj86IEJ0bkNvbXBvbmVudDsgYWN0aW9uQnV0dG9uOiBJVGFibGVJbnB1dEJ0biB9LFxuICApIHtcbiAgICBlLmFjdGlvbkJ1dHRvbi5hY3Rpb24oeyBpbmRleCwgZm9ybSwgYnRuOiBlLmJ0biB9KTtcbiAgICAvLyB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGRlbGV0ZVJvd0NsaWNrZWQgPSAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICByb3dGb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD4sXG4gICAgY29uZmlnPzogeyBidG46IEJ0bkNvbXBvbmVudCB9LFxuICApID0+IHtcbiAgICB0aGlzLmRlbGV0ZVJvd0Z1bmMoaW5kZXgsIHJvd0Zvcm0/LmdldFJhd1ZhbHVlKCksIGNvbmZpZyk7XG4gICAgLy8gdGhpcy5yZWZyZXNoKCk7XG4gIH07XG5cbiAgYWRkUm93Q2xpY2tlZCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5hZGRSb3dGdW5jKGluZGV4ICsgMSwgdGhpcy5maWx0ZXJGb3JtVmFsdWVTaWduYWwoKSk7XG4gICAgLy8gdGhpcy5yZWZyZXNoKCk7XG4gICAgLy8gdGhpcy5maWx0ZXJGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfTtcblxuICBjaGVja1JlcXVpcmVkRmllbGRzID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuc2luZ2xlRm9ybVN0cnVjdHVyZSk7XG4gIH07XG5cbiAgb3ZlcnJpZGUgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElGb3JtU2NoZW1hKSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZW5lcmF0ZVVVSUQoKTtcbiAgICBpZiAoc2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCA9PSBudWxsICYmICghc2NoZW1lLnZhbHVlRmllbGQgfHwgIXNjaGVtZS5sYWJlbEZpZWxkKSlcbiAgICAgIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHtcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWUuaXNTZWFyY2hGaWVsZCkge1xuICAgICAgdGhpcy5maWx0ZXJGb3Jtcy51cGRhdGUoKGZpbHRlckZvcm1zKSA9PiBmaWx0ZXJGb3Jtcy5jb25jYXQoW3NjaGVtZV0pKTtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKHNjaGVtZS5maWVsZD8udG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgIH0gZWxzZSBpZiAoc2NoZW1lLnR5cGUgPT0gJ2J1dHRvbicpIHtcbiAgICAgIGlmIChzY2hlbWUuY2hpbGRyZW4/Lmxlbmd0aClcbiAgICAgICAgdGhpcy5jaGlsZHJlbkZvcm1TY2hlbWFNYXBbc2NoZW1lLmZpZWxkIGFzIHN0cmluZ10gPSB7XG4gICAgICAgICAgZm9ybVNjaGVtYTogc2NoZW1lLmNoaWxkcmVuLFxuICAgICAgICAgIGZvcm1TY2hlbWFTdHI6IHNjaGVtZS5jaGlsZHJlbi5tYXAoKHgpID0+IHguZmllbGQgYXMgc3RyaW5nKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc2NoZW1lLmlzUmVxdWlyZWQgPVxuICAgICAgc2NoZW1lLmlzUmVxdWlyZWQgfHxcbiAgICAgICg8Rm9ybUdyb3VwPnRoaXMuc2luZ2xlRm9ybVN0cnVjdHVyZT8uY29udHJvbHNbc2NoZW1lLmZpZWxkXSk/Lmhhc1ZhbGlkYXRvcihcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVJbnB1dEJ0biBleHRlbmRzIElCdG4ge1xuICBhY3Rpb24/OiAoYXJnPzogeyBpbmRleDogbnVtYmVyOyBmb3JtOiBGb3JtR3JvdXA7IGJ0bjogQnRuQ29tcG9uZW50IH0pID0+IHZvaWQ7XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtaW5wdXRcIj5cbiAgQGlmIChmaWx0ZXJGb3JtcygpPy5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwibWItMyB7eyBmaWx0ZXJDb250YWluZXJDbGFzcygpIH19XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgdGV4dD1cInt7IGZpbHRlclNlY3Rpb24uaGlkZGVuID8gJ1Nob3cgRmlsdGVyJyA6ICdIaWRlIEZpbHRlcicgfX1cIlxuICAgICAgICAgIFtpY29uXT1cImZpbHRlclNlY3Rpb24uaGlkZGVuID8gJ3NlYXJjaCcgOiAnY2xvc2UnXCJcbiAgICAgICAgICAobWNsaWNrKT1cImZpbHRlclNlY3Rpb24uaGlkZGVuID0gIWZpbHRlclNlY3Rpb24uaGlkZGVuXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBwLTMgbXQtMyByb3VuZGVkLTEwXCIgI2ZpbHRlclNlY3Rpb24gW2hpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgIDxmb3JtLWdlbmVyYXRvciBbZm9ybV09XCJmaWx0ZXJGb3JtXCIgW2Zvcm1TY2hlbWFdPVwiZmlsdGVyRm9ybXMoKVwiIFtncmlkTEdTdHlsZV09XCIzXCIgW3Nob3dTdWJtaXRCdG5dPVwiZmFsc2VcIiAobWNoYW5nZSk9XCJyZXNldFBhZ2luYXRvcigpXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgPGFwcC1idG4gdHlwZT1cImRhbmdlci1vdXRsaW5lXCIgdGV4dD1cIkNsZWFyXCIgKG1jbGljayk9XCJmaWx0ZXJGb3JtLnJlc2V0KClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPGRpdiBjbGFzcz1cImJnLXdoaXRlXCIgW25nQ2xhc3NdPVwieyAnYm9yZGVyIHJvdW5kZWQtMTAnOiBib3JkZXIoKSB9XCI+XG4gICAgPGRpdiBjbGFzcz1cIiBcIj5cbiAgICAgIDx0YWJsZSBjbGFzcz1cIiB7eyB0YWJsZUNsYXNzKCkgfX0gXCIgW25nQ2xhc3NdPVwieyAnaXMtc2hvdy1mb3JtJzogaXNTaG93KCkgfVwiPlxuICAgICAgICA8dGhlYWQgKGNsaWNrKT1cInV0aWxpdHlTZXJ2aWNlLmxvZ0Zvcm0oZmlsdGVyZWRGb3JtQXJyYXkoKSlcIj5cbiAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBmb3JtU2NoZW1hKCk7IHRyYWNrIGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwie3sgaXRlbS5jbHMgfX1cIiAoY2xpY2spPVwibG9nQ29sdW1uKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAge3sgaXRlbS5pc1JlcXVpcmVkID8gJyonIDogJycgfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWlzU2hvdygpKSB7XG4gICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgICAgQGZvciAoYWN0aW9uQnRuIG9mIGFjdGlvbkJ0bnMoKTsgdHJhY2sgYWN0aW9uQnRuKSB7XG4gICAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAoc3ViRm9ybSBvZiBwYWdpbmF0ZWRBbmRGaWx0ZXJlZEZvcm1BcnJheSgpOyB0cmFjayBzdWJGb3JtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgIHRhYmxlLWlucHV0LXJvd1xuICAgICAgICAgICAgICAob25BZGRSb3dGdW5jKT1cImFkZFJvd0NsaWNrZWQoc3ViRm9ybS5pbmRleClcIlxuICAgICAgICAgICAgICBbaXNTaG93XT1cImlzU2hvdygpXCJcbiAgICAgICAgICAgICAgW2Zvcm1dPVwic3ViRm9ybS5mb3JtXCJcbiAgICAgICAgICAgICAgW2FjdGlvbkJ0bnNdPVwiYWN0aW9uQnRucygpXCJcbiAgICAgICAgICAgICAgW2Zvcm1TY2hlbWFdPVwiZm9ybVNjaGVtYSgpXCJcbiAgICAgICAgICAgICAgW2NoaWxkcmVuRm9ybVNjaGVtYU1hcF09XCJjaGlsZHJlbkZvcm1TY2hlbWFNYXBcIlxuICAgICAgICAgICAgICAob25EZWxldGVSb3dGdW5jKT1cIlxuICAgICAgICAgICAgICAgIGRlbGV0ZVJvd0NsaWNrZWQoc3ViRm9ybS5pbmRleCwgc3ViRm9ybS5mb3JtLCB7XG4gICAgICAgICAgICAgICAgICBidG46ICRldmVudD8uYnRuXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKG9uQWN0aW9uQnV0dG9uQ2xpY2spPVwiaGFuZGxlQWN0aW9uQnV0dG9uQ2xpY2soc3ViRm9ybS5pbmRleCwgc3ViRm9ybS5mb3JtLCAkZXZlbnQpXCI+PC90cj5cbiAgICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCIgW2NvbFNwYW5dPVwiZm9ybVNjaGVtYSgpPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICB7eyAnVGhlcmUgYXJlIG5vIGl0ZW1zJyB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiXCIgW2hpZGRlbl09XCIhdXNlUGFnaW5hdG9yKCkgfHwgIWZpbHRlcmVkRm9ybUFycmF5TGVuZ3RoKCkgfHwgZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGgoKSA8IHBhZ2VTaXplKClcIj5cbiAgICAgIDxwYWdpbmF0b3JcbiAgICAgICAgI3BhZ2luYXRvclRhZ1xuICAgICAgICBbYXJyYXlMZW5ndGhdPVwiZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGgoKVwiXG4gICAgICAgIChwYWdlQ2hhbmdlZCk9XCJwYWdlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplKClcIlxuICAgICAgICBbcmVzZXRJbmRleEZ1bmNdPVwiZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXNcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWlucHV0L3RhYmxlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1pbnB1dC90YWJsZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixTQUFTLEdBQ1YsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osUUFBUSxFQUNSLFlBQVksRUFD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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybXNNb2R1bGUsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElGb3JtU2NoZW1hIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tc2NoZW1hLm1vZGVsJztcbmltcG9ydCB7XG4gIEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSxcbiAgRm9ybVZhbHVlUGlwZSxcbiAgRnVuY3Rpb25DYWxsZXIyLFxuICBIYXNGb3JtVmFsdWVQaXBlLFxuICBUb0FueVBpcGUsXG59IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5cbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFzeW5jUGlwZSxcbiAgSnNvblBpcGUsXG4gIE5nQ2xhc3MsXG4gIE5nRm9yLFxuICBOZ0lmLFxuICBOZ1N3aXRjaCxcbiAgTmdTd2l0Y2hDYXNlLFxuICBOZ1N3aXRjaERlZmF1bHQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1nZW5lcmF0b3IvZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUGFnaW5hdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnaW5hdG9yL3BhZ2luYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFRhYmxlSW5wdXRSb3dDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWlucHV0LXJvdy90YWJsZS1pbnB1dC1yb3cuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUJ0biB9IGZyb20gJy4uL2J0bi9idG4ubW9kZWwnO1xuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU0RLVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFBhZ2luYXRvclBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9wYWdpbmF0b3IucGlwZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIFRhYmxlIElucHV0IENvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBGaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUsXG4gICAgRm9ybUdlbmVyYXRvckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGb3JtVmFsdWVQaXBlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBIYXNGb3JtVmFsdWVQaXBlLFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgSnNvblBpcGUsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gICAgTmdDbGFzcyxcbiAgICBOZ0ZvcixcbiAgICBOZ0lmLFxuICAgIE5nU3dpdGNoLFxuICAgIE5nU3dpdGNoQ2FzZSxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgUGFnaW5hdG9yQ29tcG9uZW50LFxuICAgIFBhZ2luYXRvclBpcGUsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBUYWJsZUlucHV0Um93Q29tcG9uZW50LFxuICAgIFRvQW55UGlwZSxcbiAgICBTREtUcmFuc2xhdGVQaXBlLFxuICAgIEZpbHRlckZvcm1BcnJheUdyb3VwUGlwZSxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLCBQYWdpbmF0b3JQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVJbnB1dENvbXBvbmVudDxcbiAgICBURm9ybUdyb3VwIGV4dGVuZHMge1xuICAgICAgW0sgaW4ga2V5b2YgVEZvcm1Hcm91cF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfSA9IGFueSxcbiAgPlxuICBleHRlbmRzIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8VEZvcm1Hcm91cD5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgbG9nQ29sdW1uKF90MjA6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSB7XG4gICAgY29uc29sZS5sb2coX3QyMCk7XG4gIH1cbiAgcmVhZG9ubHkgZm9ybUFycmF5ID0gaW5wdXQ8Rm9ybUFycmF5PEZvcm1Hcm91cDxURm9ybUdyb3VwPj4+KCk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyQ29udGFpbmVyQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGJvcmRlciA9IGlucHV0KHRydWUpO1xuICByZWFkb25seSBpc1Nob3cgPSBpbnB1dDxib29sZWFuPigpO1xuICBASW5wdXQoJ3BhZ2VTaXplJykgc2V0IF9wYWdlU2l6ZSh2OiBudW1iZXIpIHtcbiAgICB0aGlzLnBhZ2VTaXplLnNldCh2KTtcbiAgfVxuICByZWFkb25seSBwYWdlU2l6ZSA9IHNpZ25hbDxudW1iZXI+KDEwKTtcbiAgcmVhZG9ubHkgcGFnZVN0YXRlID0gc2lnbmFsPHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfT4obnVsbCk7XG4gIHJlYWRvbmx5IGFjdGlvbkJ0bnMgPSBpbnB1dDxJVGFibGVJbnB1dEJ0bltdPigpO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdmb3JtU2NoZW1hJyB9KSBvdmVycmlkZSBzZXQgX2Zvcm1TY2hlbWEoXG4gICAgdjogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSxcbiAgKSB7XG4gICAgdGhpcy5wcmVGb3JtYXRGb3JtU2NoZW1hKHYpO1xuICAgIHN1cGVyLl9mb3JtU2NoZW1hID0gdjtcbiAgfVxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBzaW5nbGVGb3JtU3RydWN0dXJlOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD47XG4gIC8qKlxuICAgKiBMZWF2ZSBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZGVsZXRlIGJ1dHRvbiB0byBzaG93XG4gICAqL1xuICBASW5wdXQoKSBkZWxldGVSb3dGdW5jOiAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBkYXRhPzogRm9ybUdyb3VwPFRGb3JtR3JvdXA+Wyd2YWx1ZSddLFxuICAgIGNvbmZpZz86IHsgYnRuOiBCdG5Db21wb25lbnQgfSxcbiAgKSA9PiBhbnk7XG4gIC8qKlxuICAgKiBMZWF2ZSBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUgYWRkIGJ1dHRvbiB0byBzaG93XG4gICAqL1xuICBASW5wdXQoKSBhZGRSb3dGdW5jOiAoaW5kZXg6IG51bWJlciwgZGF0YT86IEZvcm1Hcm91cDxURm9ybUdyb3VwPlsndmFsdWUnXSkgPT4gYW55O1xuICBASW5wdXQoJ3VzZVBhZ2luYXRvcicpIHNldCBfdXNlUGFnaW5hdG9yKHY6IGJvb2xlYW4pIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy51c2VQYWdpbmF0b3Iuc2V0KHRydWUpO1xuICAgICAgdGhpcy5wYWdlU2l6ZS51cGRhdGUoKHBhZ2VTaXplKSA9PiBwYWdlU2l6ZSB8fCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXNlUGFnaW5hdG9yLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnBhZ2VTaXplLnNldCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IHRhYmxlQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCd0YWJsZSB0YWJsZS1yZXNwb25zaXZlIHRhYmxlLXJlc3BvbnNpdmUgdGFibGUtYm9yZGVybGVzcycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyRm9ybXMgPSBzaWduYWw8SUZvcm1TY2hlbWFbXT4oW10pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlUGFnaW5hdG9yID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICBwcm90ZWN0ZWQgY2hpbGRyZW5Gb3JtU2NoZW1hTWFwOiB7XG4gICAgW2sgaW4ga2V5b2YgVEZvcm1Hcm91cF0/OiB7XG4gICAgICBmb3JtU2NoZW1hOiBJRm9ybVNjaGVtYVtdO1xuICAgICAgZm9ybVNjaGVtYVN0cjogc3RyaW5nW107XG4gICAgfTtcbiAgfSA9IHt9O1xuICByZWZyZXNoZXI6IG51bWJlcjtcbiAgZm9ybUFycmF5UGFnaW5hdGlvblN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIEBWaWV3Q2hpbGQoUGFnaW5hdG9yQ29tcG9uZW50KSBwYWdpbmF0b3JDb21wb25lbnQ6IFBhZ2luYXRvckNvbXBvbmVudDtcblxuICByZWFkb25seSBmaWx0ZXJGb3JtVmFsdWVTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmZpbHRlckZvcm0udmFsdWVDaGFuZ2VzKTtcbiAgcmVhZG9ubHkgZm9ybUFycmF5TGVuZ3RoU2lnbmFsID0gdG9TaWduYWw8bnVtYmVyPihcbiAgICB0b09ic2VydmFibGUodGhpcy5mb3JtQXJyYXkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGZvcm0pID0+IGZvcm0/LnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgoKSA9PiBmb3JtPy5sZW5ndGgpKSksXG4gICAgKSxcbiAgKTtcblxuICByZWFkb25seSBmaWx0ZXJlZEZvcm1BcnJheSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmZvcm1BcnJheUxlbmd0aFNpZ25hbCgpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IHRoaXMuZm9ybUFycmF5KCksXG4gICAgICBmaWx0ZXJGb3JtVmFsdWUgPSB0aGlzLmZpbHRlckZvcm1WYWx1ZVNpZ25hbCgpO1xuICAgIGNvbnN0IGZvcm1Hcm91cHMgPSBmb3JtQXJyYXk/LmNvbnRyb2xzPy5tYXAoKGMsIGluZGV4KSA9PiAoe1xuICAgICAgaW5kZXgsXG4gICAgICBmb3JtOiBjLFxuICAgICAgaWQ6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2VuZXJhdGVVVUlEKCksXG4gICAgfSkpO1xuICAgIGNvbnN0IGZpbHRlck9iamVjdCA9IHRoaXMuZmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlLnF1ZXJ5TWFwcGVyKGZpbHRlckZvcm1WYWx1ZSk7XG4gICAgcmV0dXJuIGZpbHRlck9iamVjdFxuICAgICAgPyBmb3JtR3JvdXBzLmZpbHRlcigoeyBmb3JtIH0pID0+XG4gICAgICAgICAgdGhpcy5maWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUuZmlsdGVyRnVuYyhmaWx0ZXJPYmplY3QpKGZvcm0pLFxuICAgICAgICApXG4gICAgICA6IGZvcm1Hcm91cHM7XG4gIH0pO1xuICByZWFkb25seSBwYWdpbmF0ZWRBbmRGaWx0ZXJlZEZvcm1BcnJheSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZpbHRlcmVkRm9ybUFycmF5KCksXG4gICAgICBwYWdlU3RhdGUgPSB0aGlzLnBhZ2VTdGF0ZSgpO1xuICAgIHJldHVybiB0aGlzLnVzZVBhZ2luYXRvcigpXG4gICAgICA/IHRoaXMucGFnaW5hdG9yUGlwZS50cmFuc2Zvcm0oXG4gICAgICAgICAgZm9ybUFycmF5LFxuICAgICAgICAgIHBhZ2VTdGF0ZT8ucGFnZVNpemUgfHwgdGhpcy5wYWdlU2l6ZSgpLFxuICAgICAgICAgIHBhZ2VTdGF0ZT8ucGFnZUluZGV4IHx8IDAsXG4gICAgICAgIClcbiAgICAgIDogZm9ybUFycmF5O1xuICB9KTtcblxuICByZWFkb25seSBmaWx0ZXJlZEZvcm1BcnJheUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmlsdGVyZWRGb3JtQXJyYXkoKS5sZW5ndGgpO1xuXG4gIHB1YmxpYyBvdmVycmlkZSB1dGlsaXR5U2VydmljZSA9IGluamVjdChVdGlsaXR5U2VydmljZSk7XG4gIHB1YmxpYyBmaWx0ZXJGb3JtQXJyYXlHcm91cFBpcGUgPSBpbmplY3QoRmlsdGVyRm9ybUFycmF5R3JvdXBQaXBlKTtcbiAgcHVibGljIHBhZ2luYXRvclBpcGUgPSBpbmplY3QoUGFnaW5hdG9yUGlwZSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudXNlUGFnaW5hdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fdXNlUGFnaW5hdG9yID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5yZWZyZXNoZXIgPSBNYXRoLnJhbmRvbSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25EZXN0cm95KCkge1xuICAgIHRoaXMuZm9ybUFycmF5UGFnaW5hdGlvblN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICByZXR1cm4gc3VwZXIub25EZXN0cm95KCk7XG4gIH1cblxuICBwYWdlQ2hhbmdlZCgkZXZlbnQ6IHsgcGFnZUluZGV4OiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfSkge1xuICAgIHRoaXMucGFnZVN0YXRlLnNldCgkZXZlbnQpO1xuICB9XG5cbiAgcmVzZXRQYWdpbmF0b3IoKSB7XG4gICAgdGhpcy5wYWdpbmF0b3JDb21wb25lbnQ/LnJlc2V0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJlRm9ybWF0Rm9ybVNjaGVtYSA9IChpdGVtczogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXSkgPT4ge1xuICAgIGl0ZW1zLmZvckVhY2goKHgpID0+IHtcbiAgICAgIGlmICh4Lm9uQ2hhbmdlRnVuYykgeC50cmlnZ2VyT25DaGFuZ2VPbkluaXQgPSB0cnVlO1xuICAgICAgZWxzZSBpZiAoeC50eXBlID09ICdidXR0b24nKSB0aGlzLnByZUZvcm1hdEZvcm1TY2hlbWEoeC5jaGlsZHJlbik7XG4gICAgfSk7XG4gIH07XG5cbiAgb3ZlcnJpZGUgaW5pdChzY2hlbWE6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10pOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckZvcm1zLnNldChbXSk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuZmlsdGVyRm9ybS5jb250cm9scywga2V5KSkge1xuICAgICAgICB0aGlzLmZpbHRlckZvcm0ucmVtb3ZlQ29udHJvbChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICAgIGlmIChzY2hlbWEpXG4gICAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpIHtcbiAgICAgICAgLy8gc2NoZW1lLmZvcm0gPSB0aGlzLmZvcm0gfHwgc2NoZW1lLmZvcm07XG4gICAgICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgICAgfVxuICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb25CdXR0b25DbGljayhcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGZvcm06IEZvcm1Hcm91cDxURm9ybUdyb3VwPixcbiAgICBlOiB7IGJ0bj86IEJ0bkNvbXBvbmVudDsgYWN0aW9uQnV0dG9uOiBJVGFibGVJbnB1dEJ0biB9LFxuICApIHtcbiAgICBlLmFjdGlvbkJ1dHRvbi5hY3Rpb24oeyBpbmRleCwgZm9ybSwgYnRuOiBlLmJ0biB9KTtcbiAgICAvLyB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIGRlbGV0ZVJvd0NsaWNrZWQgPSAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICByb3dGb3JtOiBGb3JtR3JvdXA8VEZvcm1Hcm91cD4sXG4gICAgY29uZmlnPzogeyBidG46IEJ0bkNvbXBvbmVudCB9LFxuICApID0+IHtcbiAgICB0aGlzLmRlbGV0ZVJvd0Z1bmMoaW5kZXgsIHJvd0Zvcm0/LmdldFJhd1ZhbHVlKCksIGNvbmZpZyk7XG4gICAgLy8gdGhpcy5yZWZyZXNoKCk7XG4gIH07XG5cbiAgYWRkUm93Q2xpY2tlZCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgdGhpcy5hZGRSb3dGdW5jKGluZGV4ICsgMSwgdGhpcy5maWx0ZXJGb3JtVmFsdWVTaWduYWwoKSk7XG4gICAgLy8gdGhpcy5yZWZyZXNoKCk7XG4gICAgLy8gdGhpcy5maWx0ZXJGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfTtcblxuICBjaGVja1JlcXVpcmVkRmllbGRzID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuc2luZ2xlRm9ybVN0cnVjdHVyZSk7XG4gIH07XG5cbiAgb3ZlcnJpZGUgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElGb3JtU2NoZW1hKSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZW5lcmF0ZVVVSUQoKTtcbiAgICBpZiAoc2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCA9PSBudWxsICYmICghc2NoZW1lLnZhbHVlRmllbGQgfHwgIXNjaGVtZS5sYWJlbEZpZWxkKSlcbiAgICAgIHNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGQgPSB0cnVlO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpIHtcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWUuaXNTZWFyY2hGaWVsZCkge1xuICAgICAgdGhpcy5maWx0ZXJGb3Jtcy51cGRhdGUoKGZpbHRlckZvcm1zKSA9PiBmaWx0ZXJGb3Jtcy5jb25jYXQoW3NjaGVtZV0pKTtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5hZGRDb250cm9sKHNjaGVtZS5maWVsZD8udG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKCkpO1xuICAgIH0gZWxzZSBpZiAoc2NoZW1lLnR5cGUgPT0gJ2J1dHRvbicpIHtcbiAgICAgIGlmIChzY2hlbWUuY2hpbGRyZW4/Lmxlbmd0aClcbiAgICAgICAgdGhpcy5jaGlsZHJlbkZvcm1TY2hlbWFNYXBbc2NoZW1lLmZpZWxkIGFzIHN0cmluZ10gPSB7XG4gICAgICAgICAgZm9ybVNjaGVtYTogc2NoZW1lLmNoaWxkcmVuLFxuICAgICAgICAgIGZvcm1TY2hlbWFTdHI6IHNjaGVtZS5jaGlsZHJlbi5tYXAoKHgpID0+IHguZmllbGQgYXMgc3RyaW5nKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc2NoZW1lLmlzUmVxdWlyZWQgPVxuICAgICAgc2NoZW1lLmlzUmVxdWlyZWQgfHxcbiAgICAgICg8Rm9ybUdyb3VwPnRoaXMuc2luZ2xlRm9ybVN0cnVjdHVyZT8uY29udHJvbHNbc2NoZW1lLmZpZWxkXSk/Lmhhc1ZhbGlkYXRvcihcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVJbnB1dEJ0biBleHRlbmRzIElCdG4ge1xuICBhY3Rpb24/OiAoYXJnPzogeyBpbmRleDogbnVtYmVyOyBmb3JtOiBGb3JtR3JvdXA7IGJ0bjogQnRuQ29tcG9uZW50IH0pID0+IHZvaWQ7XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtaW5wdXRcIj5cbiAgQGlmIChmaWx0ZXJGb3JtcygpPy5sZW5ndGgpIHtcbiAgICA8ZGl2IGNsYXNzPVwibWItMyB7eyBmaWx0ZXJDb250YWluZXJDbGFzcygpIH19XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgdGV4dD1cInt7IGZpbHRlclNlY3Rpb24uaGlkZGVuID8gJ1Nob3cgRmlsdGVyJyA6ICdIaWRlIEZpbHRlcicgfX1cIlxuICAgICAgICAgIFtpY29uXT1cImZpbHRlclNlY3Rpb24uaGlkZGVuID8gJ3NlYXJjaCcgOiAnY2xvc2UnXCJcbiAgICAgICAgICAobWNsaWNrKT1cImZpbHRlclNlY3Rpb24uaGlkZGVuID0gIWZpbHRlclNlY3Rpb24uaGlkZGVuXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciBwLTMgbXQtMyByb3VuZGVkLTEwXCIgI2ZpbHRlclNlY3Rpb24gW2hpZGRlbl09XCJ0cnVlXCI+XG4gICAgICAgIDxmb3JtLWdlbmVyYXRvclxuICAgICAgICAgIFtmb3JtXT1cImZpbHRlckZvcm1cIlxuICAgICAgICAgIFtmb3JtU2NoZW1hXT1cImZpbHRlckZvcm1zKClcIlxuICAgICAgICAgIFtncmlkTEdTdHlsZV09XCIzXCJcbiAgICAgICAgICBbc2hvd1N1Ym1pdEJ0bl09XCJmYWxzZVwiXG4gICAgICAgICAgKG1jaGFuZ2UpPVwicmVzZXRQYWdpbmF0b3IoKVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJkYW5nZXItb3V0bGluZVwiIHRleHQ9XCJDbGVhclwiIChtY2xpY2spPVwiZmlsdGVyRm9ybS5yZXNldCgpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJiZy13aGl0ZVwiIFtuZ0NsYXNzXT1cInsgJ2JvcmRlciByb3VuZGVkLTEwJzogYm9yZGVyKCkgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCIgXCI+XG4gICAgICA8dGFibGUgY2xhc3M9XCIge3sgdGFibGVDbGFzcygpIH19IFwiIFtuZ0NsYXNzXT1cInsgJ2lzLXNob3ctZm9ybSc6IGlzU2hvdygpIH1cIj5cbiAgICAgICAgPHRoZWFkIChjbGljayk9XCJ1dGlsaXR5U2VydmljZS5sb2dGb3JtKGZpbHRlcmVkRm9ybUFycmF5KCkpXCI+XG4gICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9ybVNjaGVtYSgpOyB0cmFjayBpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInt7IGl0ZW0uY2xzIH19XCIgKGNsaWNrKT1cImxvZ0NvbHVtbihpdGVtKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uaXNSZXF1aXJlZCA/ICcqJyA6ICcnIH19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKCFpc1Nob3coKSkge1xuICAgICAgICAgICAgICA8dGg+PC90aD5cbiAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgIEBmb3IgKGFjdGlvbkJ0biBvZiBhY3Rpb25CdG5zKCk7IHRyYWNrIGFjdGlvbkJ0bikge1xuICAgICAgICAgICAgICAgIDx0aD48L3RoPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIEBmb3IgKHN1YkZvcm0gb2YgcGFnaW5hdGVkQW5kRmlsdGVyZWRGb3JtQXJyYXkoKTsgdHJhY2sgc3ViRm9ybS5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICB0YWJsZS1pbnB1dC1yb3dcbiAgICAgICAgICAgICAgKG9uQWRkUm93RnVuYyk9XCJhZGRSb3dDbGlja2VkKHN1YkZvcm0uaW5kZXgpXCJcbiAgICAgICAgICAgICAgW2lzU2hvd109XCJpc1Nob3coKVwiXG4gICAgICAgICAgICAgIFtmb3JtXT1cInN1YkZvcm0uZm9ybVwiXG4gICAgICAgICAgICAgIFthY3Rpb25CdG5zXT1cImFjdGlvbkJ0bnMoKVwiXG4gICAgICAgICAgICAgIFtmb3JtU2NoZW1hXT1cImZvcm1TY2hlbWEoKVwiXG4gICAgICAgICAgICAgIFtjaGlsZHJlbkZvcm1TY2hlbWFNYXBdPVwiY2hpbGRyZW5Gb3JtU2NoZW1hTWFwXCJcbiAgICAgICAgICAgICAgKG9uRGVsZXRlUm93RnVuYyk9XCJcbiAgICAgICAgICAgICAgICBkZWxldGVSb3dDbGlja2VkKHN1YkZvcm0uaW5kZXgsIHN1YkZvcm0uZm9ybSwge1xuICAgICAgICAgICAgICAgICAgYnRuOiAkZXZlbnQ/LmJ0blxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIChvbkFjdGlvbkJ1dHRvbkNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIGhhbmRsZUFjdGlvbkJ1dHRvbkNsaWNrKHN1YkZvcm0uaW5kZXgsIHN1YkZvcm0uZm9ybSwgJGV2ZW50KVxuICAgICAgICAgICAgICBcIj48L3RyPlxuICAgICAgICAgIH0gQGVtcHR5IHtcbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBbY29sU3Bhbl09XCJmb3JtU2NoZW1hKCk/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIHt7ICdUaGVyZSBhcmUgbm8gaXRlbXMnIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiXCJcbiAgICAgIFtoaWRkZW5dPVwiXG4gICAgICAgICF1c2VQYWdpbmF0b3IoKSB8fCAhZmlsdGVyZWRGb3JtQXJyYXlMZW5ndGgoKSB8fCBmaWx0ZXJlZEZvcm1BcnJheUxlbmd0aCgpIDwgcGFnZVNpemUoKVxuICAgICAgXCI+XG4gICAgICA8cGFnaW5hdG9yXG4gICAgICAgICNwYWdpbmF0b3JUYWdcbiAgICAgICAgW2FycmF5TGVuZ3RoXT1cImZpbHRlcmVkRm9ybUFycmF5TGVuZ3RoKClcIlxuICAgICAgICAocGFnZUNoYW5nZWQpPVwicGFnZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCJcbiAgICAgICAgW3Jlc2V0SW5kZXhGdW5jXT1cImZpbHRlckZvcm0udmFsdWVDaGFuZ2VzXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -3564,8 +3564,11 @@ class BtnComponent {
|
|
|
3564
3564
|
this.formSchema = input();
|
|
3565
3565
|
this.debug = input();
|
|
3566
3566
|
this.formIsInvalid = computed(() => {
|
|
3567
|
-
const
|
|
3568
|
-
return
|
|
3567
|
+
const formState = this.formState(), form = this.form(), onFormInvalid = this.onFormInvalid(), formSchema = this.formSchema();
|
|
3568
|
+
return formState &&
|
|
3569
|
+
formState.invalid &&
|
|
3570
|
+
onFormInvalid == OnFormInvalid.warn &&
|
|
3571
|
+
formSchema?.length
|
|
3569
3572
|
? formSchema.some((f) => form.controls[f.field?.toString()]?.invalid)
|
|
3570
3573
|
: null;
|
|
3571
3574
|
}, { equal: isEqual });
|
|
@@ -15259,7 +15262,7 @@ class TableInputComponent extends FormGeneratorComponent {
|
|
|
15259
15262
|
this.pageSize = signal(10);
|
|
15260
15263
|
this.pageState = signal(null);
|
|
15261
15264
|
this.actionBtns = input();
|
|
15262
|
-
this.tableClass = input();
|
|
15265
|
+
this.tableClass = input('table table-responsive table-responsive table-borderless');
|
|
15263
15266
|
this.filterForm = new FormGroup({});
|
|
15264
15267
|
this.filterForms = signal([]);
|
|
15265
15268
|
this.usePaginator = signal(true);
|
|
@@ -15399,7 +15402,7 @@ class TableInputComponent extends FormGeneratorComponent {
|
|
|
15399
15402
|
this.singleFormStructure?.controls[scheme.field]?.hasValidator(Validators.required);
|
|
15400
15403
|
}
|
|
15401
15404
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15402
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: TableInputComponent, isStandalone: true, selector: "table-input", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: false, transformFunction: null }, filterContainerClass: { classPropertyName: "filterContainerClass", publicName: "filterContainerClass", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, _pageSize: { classPropertyName: "_pageSize", publicName: "pageSize", isSignal: false, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, singleFormStructure: { classPropertyName: "singleFormStructure", publicName: "singleFormStructure", isSignal: false, isRequired: true, transformFunction: null }, deleteRowFunc: { classPropertyName: "deleteRowFunc", publicName: "deleteRowFunc", isSignal: false, isRequired: false, transformFunction: null }, addRowFunc: { classPropertyName: "addRowFunc", publicName: "addRowFunc", isSignal: false, isRequired: false, transformFunction: null }, _usePaginator: { classPropertyName: "_usePaginator", publicName: "usePaginator", isSignal: false, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null } }, providers: [FilterFormArrayGroupPipe, PaginatorPipe], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator
|
|
15405
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: TableInputComponent, isStandalone: true, selector: "table-input", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: false, transformFunction: null }, filterContainerClass: { classPropertyName: "filterContainerClass", publicName: "filterContainerClass", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, isShow: { classPropertyName: "isShow", publicName: "isShow", isSignal: true, isRequired: false, transformFunction: null }, _pageSize: { classPropertyName: "_pageSize", publicName: "pageSize", isSignal: false, isRequired: false, transformFunction: null }, actionBtns: { classPropertyName: "actionBtns", publicName: "actionBtns", isSignal: true, isRequired: false, transformFunction: null }, _formSchema: { classPropertyName: "_formSchema", publicName: "formSchema", isSignal: false, isRequired: true, transformFunction: null }, singleFormStructure: { classPropertyName: "singleFormStructure", publicName: "singleFormStructure", isSignal: false, isRequired: true, transformFunction: null }, deleteRowFunc: { classPropertyName: "deleteRowFunc", publicName: "deleteRowFunc", isSignal: false, isRequired: false, transformFunction: null }, addRowFunc: { classPropertyName: "addRowFunc", publicName: "addRowFunc", isSignal: false, isRequired: false, transformFunction: null }, _usePaginator: { classPropertyName: "_usePaginator", publicName: "usePaginator", isSignal: false, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null } }, providers: [FilterFormArrayGroupPipe, PaginatorPipe], viewQueries: [{ propertyName: "paginatorComponent", first: true, predicate: PaginatorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm\"\n [formSchema]=\"filterForms()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm.reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border() }\">\n <div class=\" \">\n <table class=\" {{ tableClass() }} \" [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead (click)=\"utilityService.logForm(filteredFormArray())\">\n <tr class=\"text-center\">\n @for (item of formSchema(); track item.label) {\n <th class=\"{{ item.cls }}\" (click)=\"logColumn(item)\">\n {{ item.label | appTranslate | async }}\n {{ item.isRequired ? '*' : '' }}\n </th>\n }\n @if (!isShow()) {\n <th></th>\n <th></th>\n @for (actionBtn of actionBtns(); track actionBtn) {\n <th></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (subForm of paginatedAndFilteredFormArray(); track subForm.id; let i = $index) {\n <tr\n table-input-row\n (onAddRowFunc)=\"addRowClicked(subForm.index)\"\n [isShow]=\"isShow()\"\n [form]=\"subForm.form\"\n [actionBtns]=\"actionBtns()\"\n [formSchema]=\"formSchema()\"\n [childrenFormSchemaMap]=\"childrenFormSchemaMap\"\n (onDeleteRowFunc)=\"\n deleteRowClicked(subForm.index, subForm.form, {\n btn: $event?.btn\n })\n \"\n (onActionButtonClick)=\"\n handleActionButtonClick(subForm.index, subForm.form, $event)\n \"></tr>\n } @empty {\n <tr>\n <td class=\"text-center\" [colSpan]=\"formSchema()?.length\">\n {{ 'There are no items' | appTranslate | async }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"\"\n [hidden]=\"\n !usePaginator() || !filteredFormArrayLength() || filteredFormArrayLength() < pageSize()\n \">\n <paginator\n #paginatorTag\n [arrayLength]=\"filteredFormArrayLength()\"\n (pageChanged)=\"pageChanged($event)\"\n [pageSize]=\"pageSize()\"\n [resetIndexFunc]=\"filterForm.valueChanges\" />\n </div>\n </div>\n</div>\n", styles: ["tr{vertical-align:top}:host ::ng-deep .text-center input{text-align:center}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BtnComponent, selector: "app-btn", inputs: ["formSchema", "debug", "centerBtn", "danger", "warning", "verbose", "loading", "icon", "rightIcon", "leftIcon", "type", "group", "actionType", "animate", "excludeLogging", "loggingValue", "badge", "class", "customIcon", "form", "forms", "help", "iconBtn", "mclass", "showHelpIcon", "rightCustomIcon", "leftCustomIcon", "text", "valid", "mini", "onFormInvalid", "disabled"], outputs: ["loadingChange", "leftCustomIconChange", "mclick", "disabledChange"] }, { kind: "component", type: FormGeneratorComponent, selector: "form-generator", inputs: ["keyField", "presetValueForSingleOption", "isCreate", "submitOnEnterKey", "submitFunc", "submitBtnText", "submitBtnTemplate", "submitSuccessText", "showSubmitBtn", "gridStyle", "gridMDStyle", "gridLGStyle", "gridXXLStyle", "formGridClass", "useLoader", "loading", "form", "formSchema", "formSchemaNoForm", "isShow"], outputs: ["onSubmit", "mchange", "saved", "formChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: PaginatorComponent, selector: "paginator", inputs: ["pageSize", "pageIndex", "arrayLength", "resetIndexFunc", "pageSizeOptions"], outputs: ["pageChanged"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: TableInputRowComponent, selector: "tr[table-input-row]", inputs: ["isShow", "hideAdd", "actionBtns", "childrenFormSchemaMap"], outputs: ["onDeleteRowFunc", "onAddRowFunc", "onActionButtonClick"] }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
15403
15406
|
}
|
|
15404
15407
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: TableInputComponent, decorators: [{
|
|
15405
15408
|
type: Component,
|
|
@@ -15435,7 +15438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
|
15435
15438
|
SDKTranslatePipe,
|
|
15436
15439
|
FilterFormArrayGroupPipe,
|
|
15437
15440
|
ValidationMessageComponent,
|
|
15438
|
-
], providers: [FilterFormArrayGroupPipe, PaginatorPipe], template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator
|
|
15441
|
+
], providers: [FilterFormArrayGroupPipe, PaginatorPipe], template: "<div class=\"table-input\">\n @if (filterForms()?.length) {\n <div class=\"mb-3 {{ filterContainerClass() }}\">\n <div class=\"d-flex\">\n <app-btn\n text=\"{{ filterSection.hidden ? 'Show Filter' : 'Hide Filter' }}\"\n [icon]=\"filterSection.hidden ? 'search' : 'close'\"\n (mclick)=\"filterSection.hidden = !filterSection.hidden\" />\n </div>\n <div class=\"border p-3 mt-3 rounded-10\" #filterSection [hidden]=\"true\">\n <form-generator\n [form]=\"filterForm\"\n [formSchema]=\"filterForms()\"\n [gridLGStyle]=\"3\"\n [showSubmitBtn]=\"false\"\n (mchange)=\"resetPaginator()\" />\n <div class=\"d-flex justify-content-end\">\n <app-btn type=\"danger-outline\" text=\"Clear\" (mclick)=\"filterForm.reset()\" />\n </div>\n </div>\n </div>\n }\n\n <div class=\"bg-white\" [ngClass]=\"{ 'border rounded-10': border() }\">\n <div class=\" \">\n <table class=\" {{ tableClass() }} \" [ngClass]=\"{ 'is-show-form': isShow() }\">\n <thead (click)=\"utilityService.logForm(filteredFormArray())\">\n <tr class=\"text-center\">\n @for (item of formSchema(); track item.label) {\n <th class=\"{{ item.cls }}\" (click)=\"logColumn(item)\">\n {{ item.label | appTranslate | async }}\n {{ item.isRequired ? '*' : '' }}\n </th>\n }\n @if (!isShow()) {\n <th></th>\n <th></th>\n @for (actionBtn of actionBtns(); track actionBtn) {\n <th></th>\n }\n }\n </tr>\n </thead>\n <tbody>\n @for (subForm of paginatedAndFilteredFormArray(); track subForm.id; let i = $index) {\n <tr\n table-input-row\n (onAddRowFunc)=\"addRowClicked(subForm.index)\"\n [isShow]=\"isShow()\"\n [form]=\"subForm.form\"\n [actionBtns]=\"actionBtns()\"\n [formSchema]=\"formSchema()\"\n [childrenFormSchemaMap]=\"childrenFormSchemaMap\"\n (onDeleteRowFunc)=\"\n deleteRowClicked(subForm.index, subForm.form, {\n btn: $event?.btn\n })\n \"\n (onActionButtonClick)=\"\n handleActionButtonClick(subForm.index, subForm.form, $event)\n \"></tr>\n } @empty {\n <tr>\n <td class=\"text-center\" [colSpan]=\"formSchema()?.length\">\n {{ 'There are no items' | appTranslate | async }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div\n class=\"\"\n [hidden]=\"\n !usePaginator() || !filteredFormArrayLength() || filteredFormArrayLength() < pageSize()\n \">\n <paginator\n #paginatorTag\n [arrayLength]=\"filteredFormArrayLength()\"\n (pageChanged)=\"pageChanged($event)\"\n [pageSize]=\"pageSize()\"\n [resetIndexFunc]=\"filterForm.valueChanges\" />\n </div>\n </div>\n</div>\n", styles: ["tr{vertical-align:top}:host ::ng-deep .text-center input{text-align:center}\n"] }]
|
|
15439
15442
|
}], propDecorators: { _pageSize: [{
|
|
15440
15443
|
type: Input,
|
|
15441
15444
|
args: ['pageSize']
|