@firestitch/form 18.0.21 → 18.0.23
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.
|
@@ -234,7 +234,7 @@ export class FsFormDirective extends FsFormBaseDirective {
|
|
|
234
234
|
this._handleError(e);
|
|
235
235
|
return of({
|
|
236
236
|
...this._submitEvent,
|
|
237
|
-
error: e
|
|
237
|
+
error: e?.message,
|
|
238
238
|
});
|
|
239
239
|
}), tap((submittedEvent) => {
|
|
240
240
|
if (!submittedEvent.error) {
|
|
@@ -641,4 +641,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
641
641
|
type: HostBinding,
|
|
642
642
|
args: ['class.fs-form']
|
|
643
643
|
}] } });
|
|
644
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsRUFDVCxHQUFHLEVBRUgsRUFBRSxFQUNGLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hF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O2dCQVVDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsTUFBTTt1QkFBQyxRQUFRO2dCQUlULE9BQU87c0JBRGIsTUFBTTtnQkFJQSxLQUFLO3NCQURYLE1BQU07Z0JBSUEsU0FBUztzQkFEZixNQUFNO2dCQUlBLE9BQU87c0JBRGIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgZ3VpZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5pbXBvcnQgeyBEcmF3ZXJSZWYgfSBmcm9tICdAZmlyZXN0aXRjaC9kcmF3ZXInO1xuaW1wb3J0IHsgRnNNZXNzYWdlLCBNZXNzYWdlTW9kZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRlZmVyLFxuICBmcm9tRXZlbnQsXG4gIGlpZixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVsYXksXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIG1hcCxcbiAgbWVyZ2VNYXAsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtRGVhY3RpdmF0ZUd1YXJkIH0gZnJvbSAnLi4vLi4vZ3VhcmRzL2Zvcm0tZGVhY3RpdmF0ZS5ndWFyZCc7XG5pbXBvcnQgeyBjb25maXJtUmVzdWx0Q29udGludWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NvbmZpcm0tcmVzdWx0LWNvbnRpbnVlJztcbmltcG9ydCB7IGdldEFjdGl2ZVJvdXRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtYWN0aXZlLXJvdXRlJztcbmltcG9ydCB7IGdldEZvcm1FcnJvcnMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1mb3JtLWVycm9ycyc7XG5pbXBvcnQgeyBGc0Zvcm0gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mc2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0tYmFzZSc7XG5pbXBvcnQgeyBGc0Zvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0tZ3JvdXAnO1xuXG5pbXBvcnQgeyBDb25maXJtUmVzdWx0IH0gZnJvbSAnLi8uLi8uLi9lbnVtcy9jb25maXJtLXJlc3VsdCc7XG5pbXBvcnQgeyBGb3JtU3RhdHVzIH0gZnJvbSAnLi8uLi8uLi9lbnVtcy9mb3JtLXN0YXR1cyc7XG5pbXBvcnQgeyBDb25maXJtQ29uZmlnLCBTdWJtaXR0ZWRFdmVudCB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdWJtaXRFdmVudCB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9zdWJtaXQtZXZlbnQnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmc0Zvcm1dJyxcbiAgZXhwb3J0QXM6ICdmc0Zvcm0nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1EaXJlY3RpdmUgXG4gIGV4dGVuZHMgRnNGb3JtQmFzZURpcmVjdGl2ZSBcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgd3JhcHBlclNlbGVjdG9yID0gJy5mcy1mb3JtLXdyYXBwZXIsLm1hdC1tZGMtZm9ybS1maWVsZCc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTZWxlY3RvciA9ICcuZnMtZm9ybS1tZXNzYWdlLC5tYXQtbWRjLWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXInO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50U2VsZWN0b3IgPSAnLmZzLWZvcm0taGludCwubWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlcic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsU2VsZWN0b3IgPSAnLmZzLWZvcm0tbGFiZWwsLm1kYy1mbG9hdGluZy1sYWJlbD5tYXQtbGFiZWwnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvcnRjdXRzID0gdHJ1ZTsgLy8gQ3RybCArIHNcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybTogQ29uZmlybUNvbmZpZyB8IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25maXJtRGlhbG9nID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybURyYXdlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpcm1Ccm93c2VyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlydHlTdWJtaXRCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VibWl0KHN1Ym1pdCQ6IChldmVudDogU3VibWl0RXZlbnQpID0+IE9ic2VydmFibGU8YW55Pikge1xuICAgIHRoaXMuX3N1Ym1pdCQgPSBzdWJtaXQkO1xuICB9XG5cbiAgcHVibGljIGdldCBzdWJtaXQoKTogKGV2ZW50OiBTdWJtaXRFdmVudCkgPT4gT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fc3VibWl0JDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdWNjZXNzRGVsYXkgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvckRlbGF5ID0gMTAwMDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVhY3RpdmF0aW9uR3VhcmQgPSB0cnVlO1xuIFxuICBAT3V0cHV0KCdmc0Zvcm0nKVxuICBwdWJsaWMgc3VibWl0RXZlbnQ6IEV2ZW50RW1pdHRlcjxTdWJtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZhbGlkOiBFdmVudEVtaXR0ZXI8U3VibWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsaWQ6IEV2ZW50RW1pdHRlcjxTdWJtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdWJtaXR0ZWQ6IEV2ZW50RW1pdHRlcjxTdWJtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZXNldGVkOiBFdmVudEVtaXR0ZXI8U3VibWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xlYXJlZDogRXZlbnRFbWl0dGVyPFN1Ym1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWZvcm0nKVxuICBwdWJsaWMgZnNGb3JtQ2xhc3MgPSB0cnVlO1xuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ29udHJvbDtcbiAgcHJpdmF0ZSBfZGlhbG9nQmFja2Ryb3BFc2NhcGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc25hcHNob3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGVDb25maWc6IFJvdXRlIHwgbnVsbDtcbiAgcHJpdmF0ZSBfc3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoRm9ybVN0YXR1cy5WYWxpZCk7XG4gIHByaXZhdGUgX3N1Ym1pdCQ6IChldmVudD86IFN1Ym1pdEV2ZW50KSA9PiBPYnNlcnZhYmxlPGFueT4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTmdGb3JtKVxuICAgIHB1YmxpYyBuZ0Zvcm06IE5nRm9ybSxcbiAgICBwcml2YXRlIF9mb3JtOiBGc0Zvcm0sXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybUdyb3VwOiBGc0Zvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1hdERpYWxvZ1JlZilcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+LFxuXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChEcmF3ZXJSZWYpXG4gICAgcHJpdmF0ZSBfZHJhd2VyUmVmOiBEcmF3ZXJSZWY8YW55PixcblxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7IFxuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1Ym1pdHRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cyQuZ2V0VmFsdWUoKSA9PT0gRm9ybVN0YXR1cy5TdWJtaXR0aW5nO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWxpZGF0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0dXMkLmdldFZhbHVlKCkgPT09IEZvcm1TdGF0dXMuVmFsaWRhdGluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcGxldGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzJC5nZXRWYWx1ZSgpID09PSBGb3JtU3RhdHVzLkNvbXBsZXRpbmc7XG4gIH1cblxuICBwcml2YXRlIGdldCBfc3VibWl0RXZlbnQoKTogU3VibWl0RXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICBuZ0Zvcm06IHRoaXMubmdGb3JtLFxuICAgICAgc3VibWl0dGVyOiB0aGlzLl9zdWJtaXR0ZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9mb3JtVmFsaWRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxTdWJtaXR0ZWRFdmVudD4ge1xuICAgIHRoaXMuc3VibWl0RXZlbnQuZW1pdCh0aGlzLl9zdWJtaXRFdmVudCk7XG4gICAgdGhpcy52YWxpZC5lbWl0KHRoaXMuX3N1Ym1pdEV2ZW50KTtcblxuICAgIGNvbnN0IHN1Ym1pdHRlZEV2ZW50OiBTdWJtaXR0ZWRFdmVudCA9IHtcbiAgICAgIG5nRm9ybTogdGhpcy5uZ0Zvcm0sXG4gICAgICBzdWJtaXR0ZXI6IHRoaXMuX3N1Ym1pdHRlcixcbiAgICAgIHJlc3BvbnNlOiBudWxsLFxuICAgIH07XG5cbiAgICBjb25zdCBzdWJtaXQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9zdWJtaXQkID9cbiAgICAgIHRoaXMuX3N1Ym1pdCQodGhpcy5fc3VibWl0RXZlbnQpIDogb2Yoc3VibWl0dGVkRXZlbnQpO1xuXG4gICAgcmV0dXJuIHN1Ym1pdCRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgc3VibWl0dGVkRXZlbnQucmVzcG9uc2UgPSByZXNwb25zZTtcblxuICAgICAgICAgIHJldHVybiBzdWJtaXR0ZWRFdmVudDtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZm9ybUludmFsaWRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgIGlmICh0aGlzLmludmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZC5lbWl0KHRoaXMuX3N1Ym1pdEV2ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gJ1BsZWFzZSByZXZpZXcgZXJyb3JzIGhpZ2hsaWdodGVkIGluIHJlZCc7XG4gICAgdGhpcy5fbWVzc2FnZS5lcnJvcihtZXNzYWdlLCB7IG1vZGU6IE1lc3NhZ2VNb2RlLlRvYXN0IH0pO1xuXG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWludmFsaWQnKTtcblxuICAgIGlmIChlbCkge1xuICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdGb3JtIHZhbGlkYXRpb24gZXJyb3InKSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfc3VibWl0dGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbj8ubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9mb3JtR3JvdXA/LnJlZ2lzdGVyRm9ybSh0aGlzKTtcblxuICAgIGlmICh0aGlzLmRlYWN0aXZhdGlvbkd1YXJkKSB7XG4gICAgICB0aGlzLl9yZWdpc3RlckNhbkRlYWN0aXZhdGVHdWFyZCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZ2lzdGVyQ29uZmlybURpYWxvZ0JhY2tkcm9wRXNjYXBlKCk7XG4gICAgdGhpcy5fbGlzdGVuSG90S2V5cygpO1xuICAgIHRoaXMuX2xpc3RlbldpbmRvd0Nsb3NlKCk7XG4gICAgdGhpcy5fbGlzdGVuU3VibWl0KCk7XG4gICAgdGhpcy5fbGlzdGVuRm9ybVN0YXR1cygpO1xuXG4gICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgdGhpcy5fcmVnaXN0ZXJBdXRvY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNvbmZpcm0pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZURpcnR5U3VibWl0QnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhclN1Ym1pdChzdWJtaXQ6IChldmVudDogU3VibWl0RXZlbnQpID0+IE9ic2VydmFibGU8YW55PiA9IG51bGwpOiB2b2lkIHtcbiAgICBpZighc3VibWl0IHx8IHN1Ym1pdCA9PT0gdGhpcy5fc3VibWl0JCkge1xuICAgICAgdGhpcy5fc3VibWl0JCA9IG51bGw7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclN1Ym1pdChzdWJtaXQkOiAoKSA9PiBPYnNlcnZhYmxlPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJtaXQkID0gc3VibWl0JDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpOyBcbiAgICB0aGlzLl9yZWdpc3RlckNvbmZpcm0oKTtcbiAgICB0aGlzLl9yZWdpc3RlckNvbmZpcm1EcmF3ZXJDbG9zZSgpO1xuICAgIHRoaXMuX3JlZ2lzdGVyRHJhd2VyQ2xvc2UoKTtcbiAgICB0aGlzLl9yZWdpc3RlckRpcnR5U3VibWl0QnV0dG9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUdyb3VwPy5kZXJlZ2lzdGVyRm9ybSgpO1xuXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9jbGVhbnVwQ2FuRGVhY3RpdmF0ZSgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNuYXBzaG90KCk6IHZvaWQge1xuICAgIHRoaXMuX3NuYXBzaG90ID0gdGhpcy5uZ0Zvcm0udmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0U25hcHNob3QoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90IHx8IHt9O1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMubmdGb3JtLnJlc2V0Rm9ybSgpO1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5uZ0Zvcm0uY29udHJvbHMpXG4gICAgICAuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nRm9ybS5jb250cm9sc1tuYW1lXTtcbiAgICAgICAgY29udHJvbC5yZXNldCh0aGlzLl9zbmFwc2hvdFtuYW1lXSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMucmVzZXRlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5uZ0Zvcm0ucmVzZXRGb3JtKCk7XG4gICAgdGhpcy5jbGVhcmVkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXJ0eSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5fdXBkYXRlRGlydHlTdWJtaXRCdXR0b25zKCk7XG4gIH1cblxuICBwdWJsaWMgcHJpc3RpbmUoKTogdm9pZCB7XG4gICAgdGhpcy5uZ0Zvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMuX3VwZGF0ZURpcnR5U3VibWl0QnV0dG9ucygpO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJTdWJtaXQob3B0aW9ucz86IHsgY29uZmlybWVkOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5uZ1N1Ym1pdC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckNvbmZpcm0oKTogT2JzZXJ2YWJsZTxDb25maXJtUmVzdWx0PiB7XG4gICAgY29uc3Qgc3VibWl0dGVkID0gdGhpcy5zdWJtaXR0aW5nID8gdGhpcy5zdWJtaXR0ZWQuYXNPYnNlcnZhYmxlKCkgOiBvZih7fSk7XG5cbiAgICByZXR1cm4gc3VibWl0dGVkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5fZm9ybS5jb25maXJtVW5zYXZlZCh0aGlzKSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5jb250cm9sLmVuYWJsZSgpO1xuXG4gICAgdGhpcy5fdXBkYXRlRGlydHlTdWJtaXRCdXR0b25zKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5jb250cm9sLmRpc2FibGUoKTtcblxuICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgICAgYnV0dG9uLmRpc2FibGUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5uZ0Zvcm0uY29udHJvbHMpXG4gICAgICAuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCQoc3VibWl0RXZlbnQ6IFN1Ym1pdEV2ZW50KTogT2JzZXJ2YWJsZTxTdWJtaXR0ZWRFdmVudD4ge1xuICAgIHJldHVybiBvZihzdWJtaXRFdmVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fc3RhdHVzVmFsaWRhdGluZygpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMudmFsaWRhdGUoKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9zdGF0dXNTdWJtaXR0aW5nKCkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fc2V0dXBBY3RpdmVTdWJtaXRCdXR0b24oKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9kaXNhYmxlQnV0dG9ucygpKSxcbiAgICAgICAgc3dpdGNoTWFwKChkYXRhKSA9PiB0aGlzLl93YWl0VW50aWxTdGF0dXNQZW5kaW5nKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiBkYXRhKSxcbiAgICAgICAgICApKSwgICAgICAgXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5uZ0Zvcm0uc3RhdHVzID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtSW52YWxpZFN0YXRlJDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5fZm9ybVZhbGlkU3RhdGUkO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGUpO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX3N1Ym1pdEV2ZW50LFxuICAgICAgICAgICAgZXJyb3I6IGUubWVzc2FnZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoc3VibWl0dGVkRXZlbnQ6IFN1Ym1pdHRlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYoIXN1Ym1pdHRlZEV2ZW50LmVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLl9jb21wbGV0ZVN1Ym1pdCh0cnVlLCBzdWJtaXR0ZWRFdmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5TdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpc1xuICAgICAgLm5nRm9ybVxuICAgICAgLm5nU3VibWl0XG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gW0Zvcm1TdGF0dXMuVmFsaWQsIEZvcm1TdGF0dXMuSW52YWxpZF1cbiAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLl9zdGF0dXMkLmdldFZhbHVlKCkpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuc3VibWl0JCh0aGlzLl9zdWJtaXRFdmVudCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Gb3JtU3RhdHVzKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChmb3JtU3RhdHVzOiBGb3JtU3RhdHVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGNscyA9IFtGb3JtU3RhdHVzLlN1Ym1pdHRpbmcsIEZvcm1TdGF0dXMuVmFsaWRhdGluZ107XG4gICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG4gICAgICAgIGNsYXNzTGlzdC5yZW1vdmUoLi4uY2xzKTtcbiAgICAgICAgaWYgKGNscy5pbmRleE9mKGZvcm1TdGF0dXMpICE9PSAtMSkge1xuICAgICAgICAgIGNsYXNzTGlzdC5hZGQoZm9ybVN0YXR1cyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5XaW5kb3dDbG9zZSgpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQod2luZG93LCAnYmVmb3JldW5sb2FkJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlybSAmJiB0aGlzLmNvbmZpcm1Ccm93c2VyICYmIHRoaXMubmdGb3JtLmRpcnR5KSB7XG4gICAgICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9hY3RpdmVEaWFsb2coZWwsIGRpYWxvZzogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoZWwuaXNTYW1lTm9kZShkaWFsb2cpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGVsLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVEaWFsb2coZWwucGFyZW50RWxlbWVudCwgZGlhbG9nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Ib3RLZXlzKCk6IHZvaWQge1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ0JhY2tkcm9wRXNjYXBlICYmIGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICBjb25zdCBjZGtPdmVybGF5UGFuZSA9IEFycmF5XG4gICAgICAgICAgICAgIC5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcuY2RrLW92ZXJsYXktcGFuZScpKS5wb3AoKTtcbiAgICBcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZURpYWxvZyA9IHRoaXNcbiAgICAgICAgICAgICAgLl9hY3RpdmVEaWFsb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5fZGlhbG9nUmVmLmlkKSwgY2RrT3ZlcmxheVBhbmUpO1xuXG4gICAgICAgICAgICBpZiAoYWN0aXZlRGlhbG9nKSB7XG4gICAgICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1DbG9zZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuY29kZSA9PT0gJ0tleVMnKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zaG9ydGN1dHMpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRJbkZvcm0oZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5nRm9ybS5uZ1N1Ym1pdC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Zvcm1DbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maXJtICYmIHRoaXMuY29uZmlybURpYWxvZykge1xuICAgICAgdGhpcy50cmlnZ2VyQ29uZmlybSgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcigocmVzdWx0KSA9PiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KSksXG4gICAgICAgICAgc3dpdGNoTWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuTm9DaGFuZ2VzIHx8IHJlc3VsdCA9PT0gQ29uZmlybVJlc3VsdC5EaXNjYXJkXG4gICAgICAgICAgICAgID8gb2YobnVsbClcbiAgICAgICAgICAgICAgOiB0aGlzLnN1Ym1pdHRlZC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBTdWJtaXR0ZWRFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShyZXN1bHQ/LnJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRBY3RpdmVTdWJtaXRCdXR0b24oKTogRnNCdXR0b25EaXJlY3RpdmUge1xuICAgIGlmKHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbikge1xuICAgICAgcmV0dXJuIHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0Rm9ybUdyb3VwKClcbiAgICAgIC5idXR0b25zXG4gICAgICAuZmlsdGVyKChidXR0b24pID0+IGJ1dHRvbi5zdWJtaXQpWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWxlbWVudEluRm9ybShlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmIChlbC5pc1NhbWVOb2RlKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoZWwucGFyZW50RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRJbkZvcm0oZWwucGFyZW50RWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcGxldGVTdWJtaXQoc3VjY2Vzcywgc3VibWl0RXZlbnQ6IFN1Ym1pdHRlZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMubmdGb3JtLmNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMuY3JlYXRlU25hcHNob3QoKTtcbiAgICAgIHRoaXMuc3VibWl0dGVkLmVtaXQoc3VibWl0RXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZXNldEJ1dHRvbnMoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZ2V0Rm9ybUdyb3VwKCkuYWN0aXZlU3VibWl0QnV0dG9uKSB7XG4gICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICB0aGlzLl9nZXRGb3JtR3JvdXAoKS5hY3RpdmVTdWJtaXRCdXR0b24uc3VjY2VzcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZ2V0Rm9ybUdyb3VwKCkuYWN0aXZlU3VibWl0QnV0dG9uLmVycm9yKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdHVzJC5uZXh0KEZvcm1TdGF0dXMuU3VibWl0dGVkKTtcblxuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICB0aGlzLl9zdGF0dXMkLm5leHQoRm9ybVN0YXR1cy5TdWNjZXNzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3RhdHVzJC5uZXh0KEZvcm1TdGF0dXMuRXJyb3IpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXR1cyQubmV4dChGb3JtU3RhdHVzLkNvbXBsZXRpbmcpO1xuXG4gICAgY29uc3QgcmVzZXREZWxheSA9IHN1Y2Nlc3MgPyB0aGlzLnN1Y2Nlc3NEZWxheSA6IHRoaXMuZXJyb3JEZWxheTtcblxuICAgIG9mKHRydWUpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkocmVzZXREZWxheSksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5uZ0Zvcm0uZm9ybS5zdGF0dXMgPT09ICdWQUxJRCcpIHtcbiAgICAgICAgICB0aGlzLl9zdGF0dXMkLm5leHQoRm9ybVN0YXR1cy5WYWxpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fc3RhdHVzJC5uZXh0KEZvcm1TdGF0dXMuSW52YWxpZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZXNldEJ1dHRvbnMoKTtcbiAgICAgICAgdGhpcy5fZ2V0Rm9ybUdyb3VwKCkuYWN0aXZlU3VibWl0QnV0dG9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5fdXBkYXRlRGlydHlTdWJtaXRCdXR0b25zKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEZvcm1Hcm91cCgpOiBGc0Zvcm1CYXNlRGlyZWN0aXZlIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUdyb3VwIHx8IHRoaXM7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldEJ1dHRvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0Rm9ybUdyb3VwKClcbiAgICAgIC5idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4ge1xuICAgICAgICBidXR0b24ucmVzZXQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJDb25maXJtKCk6IHZvaWQge1xuICAgIHRoaXMubmdGb3JtLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlcykgPT4ge1xuICAgICAgICBpZih0aGlzLl9kaWFsb2dCYWNrZHJvcEVzY2FwZSAmJiB0aGlzLl9kaWFsb2dSZWYpIHtcbiAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNvbmZpcm0pIHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZyA9IE9iamVjdC5rZXlzKHRoaXMuX3NuYXBzaG90KTtcblxuICAgICAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpXG4gICAgICAgICAgICAuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChleGlzdGluZy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYXBzaG90W25hbWVdID0gY2hhbmdlc1tuYW1lXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJEcmF3ZXJDbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZHJhd2VyUmVmKSB7XG4gICAgICB0aGlzLl9kcmF3ZXJSZWYuY2xvc2VTdGFydCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5zdWJtaXR0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0dXMkXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdHVzKSA9PiBzdGF0dXMgPT09IEZvcm1TdGF0dXMuU3VjY2VzcyB8fCBzdGF0dXMgPT09IEZvcm1TdGF0dXMuRXJyb3IpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09PSBGb3JtU3RhdHVzLlN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChudWxsKTtcbiAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ29uZmlybURyYXdlckNsb3NlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9kcmF3ZXJSZWYpIHtcbiAgICAgIHRoaXMuX2RyYXdlclJlZi5jbG9zZVN0YXJ0JFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpaWYoXG4gICAgICAgICAgICAgICgpID0+IHRoaXMuY29uZmlybSAmJiB0aGlzLmNvbmZpcm1EcmF3ZXIsXG4gICAgICAgICAgICAgIHRoaXMudHJpZ2dlckNvbmZpcm0oKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IGNvbmZpcm1SZXN1bHRDb250aW51ZShyZXN1bHQpKSxcbiAgICAgICAgICAgICAgICAgIHRhcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIFxuICBwcml2YXRlIF9yZWdpc3RlckNvbmZpcm1EaWFsb2dCYWNrZHJvcEVzY2FwZSgpOiB2b2lkIHtcbiAgICBpZih0aGlzLl9kaWFsb2dSZWYpIHtcbiAgICAgIHRoaXMuX2RpYWxvZ0JhY2tkcm9wRXNjYXBlID0gIXRoaXMuX2RpYWxvZ1JlZj8uZGlzYWJsZUNsb3NlO1xuXG4gICAgICBpZiAodGhpcy5fZGlhbG9nQmFja2Ryb3BFc2NhcGUpIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1DbG9zZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGVzdHJveSRcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckF1dG9jb21wbGV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWdpc3RlckNvbnRyb2wgPSB0aGlzLm5nRm9ybS5mb3JtLnJlZ2lzdGVyQ29udHJvbC5iaW5kKHRoaXMubmdGb3JtLmZvcm0pO1xuXG4gICAgdGhpcy5uZ0Zvcm0uZm9ybS5yZWdpc3RlckNvbnRyb2wgPSAobmFtZTogc3RyaW5nLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcblxuICAgICAgY29uc3QgZWw6IEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0nJHtuYW1lfSddYCk7XG5cbiAgICAgIGlmIChlbCkge1xuICAgICAgICBpZiAoIWVsLmdldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJykpIHtcbiAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2F1dG9jb21wbGV0ZScsICdub25lJyk7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCduYW1lJywgYCR7bmFtZX0tJHtndWlkKCl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lzdGVyQ29udHJvbChuYW1lLCBjb250cm9sKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJEaXJ0eVN1Ym1pdEJ1dHRvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmdGb3JtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5uZ0Zvcm0uZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fdXBkYXRlRGlydHlTdWJtaXRCdXR0b25zKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYnV0dG9ucy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZURpcnR5U3VibWl0QnV0dG9ucygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXJ0eVN1Ym1pdEJ1dHRvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0Rm9ybUdyb3VwKClcbiAgICAgIC5idXR0b25zXG4gICAgICAuZmlsdGVyKChidXR0b24pID0+IGJ1dHRvbi5zdWJtaXQpXG4gICAgICAuZm9yRWFjaCgoc3VibWl0QnV0dG9uOiBGc0J1dHRvbkRpcmVjdGl2ZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuY29uZmlybSB8fCAhdGhpcy5kaXJ0eVN1Ym1pdEJ1dHRvbiB8fCB0aGlzLm5nRm9ybS5kaXJ0eSB8fCAhc3VibWl0QnV0dG9uLmRpcnR5U3VibWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHN1Ym1pdEJ1dHRvbi5lbmFibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdWJtaXRCdXR0b24uZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0YXR1c1N1Ym1pdHRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdHVzJC5uZXh0KEZvcm1TdGF0dXMuU3VibWl0dGluZyk7XG4gIH1cblxuICBwcml2YXRlIF9zdGF0dXNWYWxpZGF0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cyQubmV4dChGb3JtU3RhdHVzLlZhbGlkYXRpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBBY3RpdmVTdWJtaXRCdXR0b24oKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0Rm9ybUdyb3VwKClcbiAgICAgIC5hY3RpdmVTdWJtaXRCdXR0b24gPSB0aGlzLl9nZXRBY3RpdmVTdWJtaXRCdXR0b24oKTtcbiAgICB0aGlzLl9yZXNldEJ1dHRvbnMoKTtcblxuICAgIGlmICh0aGlzLl9nZXRGb3JtR3JvdXAoKS5hY3RpdmVTdWJtaXRCdXR0b24pIHtcbiAgICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbi5wcm9jZXNzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZUJ1dHRvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5fZ2V0Rm9ybUdyb3VwKClcbiAgICAgIC5idXR0b25zLmZvckVhY2goKGJ1dHRvbikgPT4ge1xuICAgICAgICBidXR0b24uZGlzYWJsZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF93YWl0VW50aWxTdGF0dXNQZW5kaW5nKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMubmdGb3JtLnN0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5uZ0Zvcm0uc3RhdHVzKSxcbiAgICAgICAgZmlyc3QoKHN0YXRlKSA9PiBzdGF0ZSAhPT0gJ1BFTkRJTkcnKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVFcnJvcihlOiBTdWJtaXR0ZWRFdmVudCkge1xuICAgIGNvbnNvbGUubG9nKCclYyBGb3JtIFN1Ym1pdCAnLCAnY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRDMzRjQ5JywgJ0Vycm9yIG9jY3VyZWQnKTtcbiAgICBjb25zb2xlLmdyb3VwKCdFcnJvciBEZXRhaWxzOicpO1xuICAgIGNvbnNvbGUubG9nKCdNZXNzYWdlOiAnLCBlKTtcbiAgICBjb25zb2xlLmxvZygnRm9ybVJlZjogJywgdGhpcyk7XG5cbiAgICBpZiAodGhpcy5uZ0Zvcm0uaW52YWxpZCkge1xuICAgICAgY29uc3QgZXJyb3JzID0gZ2V0Rm9ybUVycm9ycyh0aGlzLm5nRm9ybS5jb250cm9sLCBudWxsKTtcbiAgICAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9uIEVycm9yczogJywgZXJyb3JzKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgdGhpcy5fY29tcGxldGVTdWJtaXQoZmFsc2UsIG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJDYW5EZWFjdGl2YXRlR3VhcmQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcgPSBnZXRBY3RpdmVSb3V0ZSh0aGlzLl9yb3V0ZSkucm91dGVDb25maWc7XG5cbiAgICBpZiAoIXRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybS5yZWdpc3RlckZvcm1EaXJlY3RpdmUodGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY29tcG9uZW50LCB0aGlzKTtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlKSkge1xuICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSA9IFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlLmluZGV4T2YoRm9ybURlYWN0aXZhdGVHdWFyZCkgPT09IC0xKSB7XG4gICAgICB0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlLnB1c2goRm9ybURlYWN0aXZhdGVHdWFyZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW51cENhbkRlYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGd1YXJkSW5kZXggPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZy5jYW5EZWFjdGl2YXRlLmluZGV4T2YoRm9ybURlYWN0aXZhdGVHdWFyZCk7XG4gICAgdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZS5zcGxpY2UoZ3VhcmRJbmRleCwgMSk7XG5cbiAgICB0aGlzLl9mb3JtLnJlbW92ZUZvcm1EaXJlY3RpdmUodGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY29tcG9uZW50KTtcbiAgfVxuXG59XG4iXX0=
|
|
644
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvZm9ybS9mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdELE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFNBQVMsRUFDVCxHQUFHLEVBRUgsRUFBRSxFQUNGLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hF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O2dCQVVDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsTUFBTTt1QkFBQyxRQUFRO2dCQUlULE9BQU87c0JBRGIsTUFBTTtnQkFJQSxLQUFLO3NCQURYLE1BQU07Z0JBSUEsU0FBUztzQkFEZixNQUFNO2dCQUlBLE9BQU87c0JBRGIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLE1BQU07Z0JBSUEsV0FBVztzQkFEakIsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgZ3VpZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5pbXBvcnQgeyBEcmF3ZXJSZWYgfSBmcm9tICdAZmlyZXN0aXRjaC9kcmF3ZXInO1xuaW1wb3J0IHsgRnNNZXNzYWdlLCBNZXNzYWdlTW9kZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRlZmVyLFxuICBmcm9tRXZlbnQsXG4gIGlpZixcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVsYXksXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIG1hcCxcbiAgbWVyZ2VNYXAsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGb3JtRGVhY3RpdmF0ZUd1YXJkIH0gZnJvbSAnLi4vLi4vZ3VhcmRzL2Zvcm0tZGVhY3RpdmF0ZS5ndWFyZCc7XG5pbXBvcnQgeyBjb25maXJtUmVzdWx0Q29udGludWUgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2NvbmZpcm0tcmVzdWx0LWNvbnRpbnVlJztcbmltcG9ydCB7IGdldEFjdGl2ZVJvdXRlIH0gZnJvbSAnLi4vLi4vaGVscGVycy9nZXQtYWN0aXZlLXJvdXRlJztcbmltcG9ydCB7IGdldEZvcm1FcnJvcnMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2dldC1mb3JtLWVycm9ycyc7XG5pbXBvcnQgeyBGc0Zvcm0gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mc2Zvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBGc0J1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNGb3JtQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0tYmFzZSc7XG5pbXBvcnQgeyBGc0Zvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4uL2Zvcm0tZ3JvdXAnO1xuXG5pbXBvcnQgeyBDb25maXJtUmVzdWx0IH0gZnJvbSAnLi8uLi8uLi9lbnVtcy9jb25maXJtLXJlc3VsdCc7XG5pbXBvcnQgeyBGb3JtU3RhdHVzIH0gZnJvbSAnLi8uLi8uLi9lbnVtcy9mb3JtLXN0YXR1cyc7XG5pbXBvcnQgeyBDb25maXJtQ29uZmlnLCBTdWJtaXR0ZWRFdmVudCB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdWJtaXRFdmVudCB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9zdWJtaXQtZXZlbnQnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmc0Zvcm1dJyxcbiAgZXhwb3J0QXM6ICdmc0Zvcm0nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0Zvcm1EaXJlY3RpdmUgXG4gIGV4dGVuZHMgRnNGb3JtQmFzZURpcmVjdGl2ZSBcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgd3JhcHBlclNlbGVjdG9yID0gJy5mcy1mb3JtLXdyYXBwZXIsLm1hdC1tZGMtZm9ybS1maWVsZCc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lc3NhZ2VTZWxlY3RvciA9ICcuZnMtZm9ybS1tZXNzYWdlLC5tYXQtbWRjLWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXInO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaW50U2VsZWN0b3IgPSAnLmZzLWZvcm0taGludCwubWF0LW1kYy1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlcic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsU2VsZWN0b3IgPSAnLmZzLWZvcm0tbGFiZWwsLm1kYy1mbG9hdGluZy1sYWJlbD5tYXQtbGFiZWwnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvcnRjdXRzID0gdHJ1ZTsgLy8gQ3RybCArIHNcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybTogQ29uZmlybUNvbmZpZyB8IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb25maXJtRGlhbG9nID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29uZmlybURyYXdlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvbmZpcm1Ccm93c2VyID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGlydHlTdWJtaXRCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VibWl0KHN1Ym1pdCQ6IChldmVudDogU3VibWl0RXZlbnQpID0+IE9ic2VydmFibGU8YW55Pikge1xuICAgIHRoaXMuX3N1Ym1pdCQgPSBzdWJtaXQkO1xuICB9XG5cbiAgcHVibGljIGdldCBzdWJtaXQoKTogKGV2ZW50OiBTdWJtaXRFdmVudCkgPT4gT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fc3VibWl0JDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdWNjZXNzRGVsYXkgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvckRlbGF5ID0gMTAwMDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVhY3RpdmF0aW9uR3VhcmQgPSB0cnVlO1xuIFxuICBAT3V0cHV0KCdmc0Zvcm0nKVxuICBwdWJsaWMgc3VibWl0RXZlbnQ6IEV2ZW50RW1pdHRlcjxTdWJtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbnZhbGlkOiBFdmVudEVtaXR0ZXI8U3VibWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsaWQ6IEV2ZW50RW1pdHRlcjxTdWJtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdWJtaXR0ZWQ6IEV2ZW50RW1pdHRlcjxTdWJtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZXNldGVkOiBFdmVudEVtaXR0ZXI8U3VibWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xlYXJlZDogRXZlbnRFbWl0dGVyPFN1Ym1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWZvcm0nKVxuICBwdWJsaWMgZnNGb3JtQ2xhc3MgPSB0cnVlO1xuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ29udHJvbDtcbiAgcHJpdmF0ZSBfZGlhbG9nQmFja2Ryb3BFc2NhcGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc25hcHNob3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGVDb25maWc6IFJvdXRlIHwgbnVsbDtcbiAgcHJpdmF0ZSBfc3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoRm9ybVN0YXR1cy5WYWxpZCk7XG4gIHByaXZhdGUgX3N1Ym1pdCQ6IChldmVudD86IFN1Ym1pdEV2ZW50KSA9PiBPYnNlcnZhYmxlPGFueT4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTmdGb3JtKVxuICAgIHB1YmxpYyBuZ0Zvcm06IE5nRm9ybSxcbiAgICBwcml2YXRlIF9mb3JtOiBGc0Zvcm0sXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybUdyb3VwOiBGc0Zvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1hdERpYWxvZ1JlZilcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+LFxuXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChEcmF3ZXJSZWYpXG4gICAgcHJpdmF0ZSBfZHJhd2VyUmVmOiBEcmF3ZXJSZWY8YW55PixcblxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7IFxuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1Ym1pdHRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cyQuZ2V0VmFsdWUoKSA9PT0gRm9ybVN0YXR1cy5TdWJtaXR0aW5nO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWxpZGF0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0dXMkLmdldFZhbHVlKCkgPT09IEZvcm1TdGF0dXMuVmFsaWRhdGluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29tcGxldGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzJC5nZXRWYWx1ZSgpID09PSBGb3JtU3RhdHVzLkNvbXBsZXRpbmc7XG4gIH1cblxuICBwcml2YXRlIGdldCBfc3VibWl0RXZlbnQoKTogU3VibWl0RXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICBuZ0Zvcm06IHRoaXMubmdGb3JtLFxuICAgICAgc3VibWl0dGVyOiB0aGlzLl9zdWJtaXR0ZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9mb3JtVmFsaWRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxTdWJtaXR0ZWRFdmVudD4ge1xuICAgIHRoaXMuc3VibWl0RXZlbnQuZW1pdCh0aGlzLl9zdWJtaXRFdmVudCk7XG4gICAgdGhpcy52YWxpZC5lbWl0KHRoaXMuX3N1Ym1pdEV2ZW50KTtcblxuICAgIGNvbnN0IHN1Ym1pdHRlZEV2ZW50OiBTdWJtaXR0ZWRFdmVudCA9IHtcbiAgICAgIG5nRm9ybTogdGhpcy5uZ0Zvcm0sXG4gICAgICBzdWJtaXR0ZXI6IHRoaXMuX3N1Ym1pdHRlcixcbiAgICAgIHJlc3BvbnNlOiBudWxsLFxuICAgIH07XG5cbiAgICBjb25zdCBzdWJtaXQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9zdWJtaXQkID9cbiAgICAgIHRoaXMuX3N1Ym1pdCQodGhpcy5fc3VibWl0RXZlbnQpIDogb2Yoc3VibWl0dGVkRXZlbnQpO1xuXG4gICAgcmV0dXJuIHN1Ym1pdCRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgc3VibWl0dGVkRXZlbnQucmVzcG9uc2UgPSByZXNwb25zZTtcblxuICAgICAgICAgIHJldHVybiBzdWJtaXR0ZWRFdmVudDtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZm9ybUludmFsaWRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgIGlmICh0aGlzLmludmFsaWQpIHtcbiAgICAgIHRoaXMuaW52YWxpZC5lbWl0KHRoaXMuX3N1Ym1pdEV2ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gJ1BsZWFzZSByZXZpZXcgZXJyb3JzIGhpZ2hsaWdodGVkIGluIHJlZCc7XG4gICAgdGhpcy5fbWVzc2FnZS5lcnJvcihtZXNzYWdlLCB7IG1vZGU6IE1lc3NhZ2VNb2RlLlRvYXN0IH0pO1xuXG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5nLWludmFsaWQnKTtcblxuICAgIGlmIChlbCkge1xuICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdGb3JtIHZhbGlkYXRpb24gZXJyb3InKSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfc3VibWl0dGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbj8ubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9mb3JtR3JvdXA/LnJlZ2lzdGVyRm9ybSh0aGlzKTtcblxuICAgIGlmICh0aGlzLmRlYWN0aXZhdGlvbkd1YXJkKSB7XG4gICAgICB0aGlzLl9yZWdpc3RlckNhbkRlYWN0aXZhdGVHdWFyZCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZ2lzdGVyQ29uZmlybURpYWxvZ0JhY2tkcm9wRXNjYXBlKCk7XG4gICAgdGhpcy5fbGlzdGVuSG90S2V5cygpO1xuICAgIHRoaXMuX2xpc3RlbldpbmRvd0Nsb3NlKCk7XG4gICAgdGhpcy5fbGlzdGVuU3VibWl0KCk7XG4gICAgdGhpcy5fbGlzdGVuRm9ybVN0YXR1cygpO1xuXG4gICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgdGhpcy5fcmVnaXN0ZXJBdXRvY29tcGxldGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNvbmZpcm0pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZURpcnR5U3VibWl0QnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhclN1Ym1pdChzdWJtaXQ6IChldmVudDogU3VibWl0RXZlbnQpID0+IE9ic2VydmFibGU8YW55PiA9IG51bGwpOiB2b2lkIHtcbiAgICBpZighc3VibWl0IHx8IHN1Ym1pdCA9PT0gdGhpcy5fc3VibWl0JCkge1xuICAgICAgdGhpcy5fc3VibWl0JCA9IG51bGw7XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclN1Ym1pdChzdWJtaXQkOiAoKSA9PiBPYnNlcnZhYmxlPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJtaXQkID0gc3VibWl0JDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpOyBcbiAgICB0aGlzLl9yZWdpc3RlckNvbmZpcm0oKTtcbiAgICB0aGlzLl9yZWdpc3RlckNvbmZpcm1EcmF3ZXJDbG9zZSgpO1xuICAgIHRoaXMuX3JlZ2lzdGVyRHJhd2VyQ2xvc2UoKTtcbiAgICB0aGlzLl9yZWdpc3RlckRpcnR5U3VibWl0QnV0dG9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUdyb3VwPy5kZXJlZ2lzdGVyRm9ybSgpO1xuXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9jbGVhbnVwQ2FuRGVhY3RpdmF0ZSgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNuYXBzaG90KCk6IHZvaWQge1xuICAgIHRoaXMuX3NuYXBzaG90ID0gdGhpcy5uZ0Zvcm0udmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0U25hcHNob3QoKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90IHx8IHt9O1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMubmdGb3JtLnJlc2V0Rm9ybSgpO1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5uZ0Zvcm0uY29udHJvbHMpXG4gICAgICAuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nRm9ybS5jb250cm9sc1tuYW1lXTtcbiAgICAgICAgY29udHJvbC5yZXNldCh0aGlzLl9zbmFwc2hvdFtuYW1lXSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMucmVzZXRlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5uZ0Zvcm0ucmVzZXRGb3JtKCk7XG4gICAgdGhpcy5jbGVhcmVkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXJ0eSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5fdXBkYXRlRGlydHlTdWJtaXRCdXR0b25zKCk7XG4gIH1cblxuICBwdWJsaWMgcHJpc3RpbmUoKTogdm9pZCB7XG4gICAgdGhpcy5uZ0Zvcm0uZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMuX3VwZGF0ZURpcnR5U3VibWl0QnV0dG9ucygpO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJTdWJtaXQob3B0aW9ucz86IHsgY29uZmlybWVkOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5uZ1N1Ym1pdC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlckNvbmZpcm0oKTogT2JzZXJ2YWJsZTxDb25maXJtUmVzdWx0PiB7XG4gICAgY29uc3Qgc3VibWl0dGVkID0gdGhpcy5zdWJtaXR0aW5nID8gdGhpcy5zdWJtaXR0ZWQuYXNPYnNlcnZhYmxlKCkgOiBvZih7fSk7XG5cbiAgICByZXR1cm4gc3VibWl0dGVkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5fZm9ybS5jb25maXJtVW5zYXZlZCh0aGlzKSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5jb250cm9sLmVuYWJsZSgpO1xuXG4gICAgdGhpcy5fdXBkYXRlRGlydHlTdWJtaXRCdXR0b25zKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5jb250cm9sLmRpc2FibGUoKTtcblxuICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgICAgYnV0dG9uLmRpc2FibGUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5uZ0Zvcm0uY29udHJvbHMpXG4gICAgICAuZm9yRWFjaCgoY29udHJvbCkgPT4ge1xuICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdCQoc3VibWl0RXZlbnQ6IFN1Ym1pdEV2ZW50KTogT2JzZXJ2YWJsZTxTdWJtaXR0ZWRFdmVudD4ge1xuICAgIHJldHVybiBvZihzdWJtaXRFdmVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fc3RhdHVzVmFsaWRhdGluZygpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMudmFsaWRhdGUoKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9zdGF0dXNTdWJtaXR0aW5nKCkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fc2V0dXBBY3RpdmVTdWJtaXRCdXR0b24oKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9kaXNhYmxlQnV0dG9ucygpKSxcbiAgICAgICAgc3dpdGNoTWFwKChkYXRhKSA9PiB0aGlzLl93YWl0VW50aWxTdGF0dXNQZW5kaW5nKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiBkYXRhKSxcbiAgICAgICAgICApKSwgICAgICAgXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5uZ0Zvcm0uc3RhdHVzID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtSW52YWxpZFN0YXRlJDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5fZm9ybVZhbGlkU3RhdGUkO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGUpO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX3N1Ym1pdEV2ZW50LFxuICAgICAgICAgICAgZXJyb3I6IGU/Lm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHN1Ym1pdHRlZEV2ZW50OiBTdWJtaXR0ZWRFdmVudCkgPT4ge1xuICAgICAgICAgIGlmKCFzdWJtaXR0ZWRFdmVudC5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5fY29tcGxldGVTdWJtaXQodHJ1ZSwgc3VibWl0dGVkRXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuU3VibWl0KCk6IHZvaWQge1xuICAgIHRoaXNcbiAgICAgIC5uZ0Zvcm1cbiAgICAgIC5uZ1N1Ym1pdFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIFtGb3JtU3RhdHVzLlZhbGlkLCBGb3JtU3RhdHVzLkludmFsaWRdXG4gICAgICAgICAgICAuaW5jbHVkZXModGhpcy5fc3RhdHVzJC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN1Ym1pdCQodGhpcy5fc3VibWl0RXZlbnQpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuRm9ybVN0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0dXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZm9ybVN0YXR1czogRm9ybVN0YXR1cykgPT4ge1xuICAgICAgICBjb25zdCBjbHMgPSBbRm9ybVN0YXR1cy5TdWJtaXR0aW5nLCBGb3JtU3RhdHVzLlZhbGlkYXRpbmddO1xuICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuICAgICAgICBjbGFzc0xpc3QucmVtb3ZlKC4uLmNscyk7XG4gICAgICAgIGlmIChjbHMuaW5kZXhPZihmb3JtU3RhdHVzKSAhPT0gLTEpIHtcbiAgICAgICAgICBjbGFzc0xpc3QuYWRkKGZvcm1TdGF0dXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuV2luZG93Q2xvc2UoKTogdm9pZCB7XG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JlZm9yZXVubG9hZCcpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpcm0gJiYgdGhpcy5jb25maXJtQnJvd3NlciAmJiB0aGlzLm5nRm9ybS5kaXJ0eSkge1xuICAgICAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWN0aXZlRGlhbG9nKGVsLCBkaWFsb2c6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKGVsLmlzU2FtZU5vZGUoZGlhbG9nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChlbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5fYWN0aXZlRGlhbG9nKGVsLnBhcmVudEVsZW1lbnQsIGRpYWxvZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuSG90S2V5cygpOiB2b2lkIHtcbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAna2V5ZG93bicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9kaWFsb2dCYWNrZHJvcEVzY2FwZSAmJiBldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgY29uc3QgY2RrT3ZlcmxheVBhbmUgPSBBcnJheVxuICAgICAgICAgICAgICAuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PignLmNkay1vdmVybGF5LXBhbmUnKSkucG9wKCk7XG4gICAgXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVEaWFsb2cgPSB0aGlzXG4gICAgICAgICAgICAgIC5fYWN0aXZlRGlhbG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuX2RpYWxvZ1JlZi5pZCksIGNka092ZXJsYXlQYW5lKTtcblxuICAgICAgICAgICAgaWYgKGFjdGl2ZURpYWxvZykge1xuICAgICAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9mb3JtQ2xvc2UoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmNvZGUgPT09ICdLZXlTJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvcnRjdXRzKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50SW5Gb3JtKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ0Zvcm0ubmdTdWJtaXQubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9mb3JtQ2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlybSAmJiB0aGlzLmNvbmZpcm1EaWFsb2cpIHtcbiAgICAgIHRoaXMudHJpZ2dlckNvbmZpcm0oKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKHJlc3VsdCkgPT4gY29uZmlybVJlc3VsdENvbnRpbnVlKHJlc3VsdCkpLFxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBDb25maXJtUmVzdWx0Lk5vQ2hhbmdlcyB8fCByZXN1bHQgPT09IENvbmZpcm1SZXN1bHQuRGlzY2FyZFxuICAgICAgICAgICAgICA/IG9mKG51bGwpXG4gICAgICAgICAgICAgIDogdGhpcy5zdWJtaXR0ZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogU3VibWl0dGVkRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UocmVzdWx0Py5yZXNwb25zZSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QWN0aXZlU3VibWl0QnV0dG9uKCk6IEZzQnV0dG9uRGlyZWN0aXZlIHtcbiAgICBpZih0aGlzLl9nZXRGb3JtR3JvdXAoKS5hY3RpdmVTdWJtaXRCdXR0b24pIHtcbiAgICAgIHJldHVybiB0aGlzLl9nZXRGb3JtR3JvdXAoKS5hY3RpdmVTdWJtaXRCdXR0b247XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYnV0dG9uc1xuICAgICAgLmZpbHRlcigoYnV0dG9uKSA9PiBidXR0b24uc3VibWl0KVswXTtcbiAgfVxuXG4gIHByaXZhdGUgX2VsZW1lbnRJbkZvcm0oZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoZWwuaXNTYW1lTm9kZSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGVsLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50SW5Gb3JtKGVsLnBhcmVudEVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbXBsZXRlU3VibWl0KHN1Y2Nlc3MsIHN1Ym1pdEV2ZW50OiBTdWJtaXR0ZWRFdmVudCk6IHZvaWQge1xuICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICB0aGlzLm5nRm9ybS5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLmNyZWF0ZVNuYXBzaG90KCk7XG4gICAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHN1Ym1pdEV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcmVzZXRCdXR0b25zKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbikge1xuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5fZ2V0Rm9ybUdyb3VwKCkuYWN0aXZlU3VibWl0QnV0dG9uLnN1Y2Nlc3MoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbi5lcnJvcigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3N0YXR1cyQubmV4dChGb3JtU3RhdHVzLlN1Ym1pdHRlZCk7XG5cbiAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgdGhpcy5fc3RhdHVzJC5uZXh0KEZvcm1TdGF0dXMuU3VjY2Vzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3N0YXR1cyQubmV4dChGb3JtU3RhdHVzLkVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0dXMkLm5leHQoRm9ybVN0YXR1cy5Db21wbGV0aW5nKTtcblxuICAgIGNvbnN0IHJlc2V0RGVsYXkgPSBzdWNjZXNzID8gdGhpcy5zdWNjZXNzRGVsYXkgOiB0aGlzLmVycm9yRGVsYXk7XG5cbiAgICBvZih0cnVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlbGF5KHJlc2V0RGVsYXkpLFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubmdGb3JtLmZvcm0uc3RhdHVzID09PSAnVkFMSUQnKSB7XG4gICAgICAgICAgdGhpcy5fc3RhdHVzJC5uZXh0KEZvcm1TdGF0dXMuVmFsaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3N0YXR1cyQubmV4dChGb3JtU3RhdHVzLkludmFsaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVzZXRCdXR0b25zKCk7XG4gICAgICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpLmFjdGl2ZVN1Ym1pdEJ1dHRvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3VwZGF0ZURpcnR5U3VibWl0QnV0dG9ucygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRGb3JtR3JvdXAoKTogRnNGb3JtQmFzZURpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Hcm91cCB8fCB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVzZXRCdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgICAgYnV0dG9uLnJlc2V0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ29uZmlybSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nRm9ybS5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZXMpID0+IHtcbiAgICAgICAgaWYodGhpcy5fZGlhbG9nQmFja2Ryb3BFc2NhcGUgJiYgdGhpcy5fZGlhbG9nUmVmKSB7XG4gICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb25maXJtKSB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBPYmplY3Qua2V5cyh0aGlzLl9zbmFwc2hvdCk7XG5cbiAgICAgICAgICBPYmplY3Qua2V5cyhjaGFuZ2VzKVxuICAgICAgICAgICAgLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFwc2hvdFtuYW1lXSA9IGNoYW5nZXNbbmFtZV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyRHJhd2VyQ2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2RyYXdlclJlZikge1xuICAgICAgdGhpcy5fZHJhd2VyUmVmLmNsb3NlU3RhcnQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc3VibWl0dGluZykge1xuICAgICAgICAgICAgdGhpcy5fc3RhdHVzJFxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXR1cykgPT4gc3RhdHVzID09PSBGb3JtU3RhdHVzLlN1Y2Nlc3MgfHwgc3RhdHVzID09PSBGb3JtU3RhdHVzLkVycm9yKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gRm9ybVN0YXR1cy5TdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLm5leHQobnVsbCk7XG4gICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZWdpc3RlckNvbmZpcm1EcmF3ZXJDbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZHJhd2VyUmVmKSB7XG4gICAgICB0aGlzLl9kcmF3ZXJSZWYuY2xvc2VTdGFydCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaWlmKFxuICAgICAgICAgICAgICAoKSA9PiB0aGlzLmNvbmZpcm0gJiYgdGhpcy5jb25maXJtRHJhd2VyLFxuICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJDb25maXJtKClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiBjb25maXJtUmVzdWx0Q29udGludWUocmVzdWx0KSksXG4gICAgICAgICAgICAgICAgICB0YXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGVmZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBcbiAgcHJpdmF0ZSBfcmVnaXN0ZXJDb25maXJtRGlhbG9nQmFja2Ryb3BFc2NhcGUoKTogdm9pZCB7XG4gICAgaWYodGhpcy5fZGlhbG9nUmVmKSB7XG4gICAgICB0aGlzLl9kaWFsb2dCYWNrZHJvcEVzY2FwZSA9ICF0aGlzLl9kaWFsb2dSZWY/LmRpc2FibGVDbG9zZTtcblxuICAgICAgaWYgKHRoaXMuX2RpYWxvZ0JhY2tkcm9wRXNjYXBlKSB7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtQ2xvc2UoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRlc3Ryb3kkXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJBdXRvY29tcGxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0ZXJDb250cm9sID0gdGhpcy5uZ0Zvcm0uZm9ybS5yZWdpc3RlckNvbnRyb2wuYmluZCh0aGlzLm5nRm9ybS5mb3JtKTtcblxuICAgIHRoaXMubmdGb3JtLmZvcm0ucmVnaXN0ZXJDb250cm9sID0gKG5hbWU6IHN0cmluZywgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG5cbiAgICAgIGNvbnN0IGVsOiBFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7bmFtZX0nXWApO1xuXG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgaWYgKCFlbC5nZXRBdHRyaWJ1dGUoJ2F1dG9jb21wbGV0ZScpKSB7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnbm9uZScpO1xuICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnbmFtZScsIGAke25hbWV9LSR7Z3VpZCgpfWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9yZWdpc3RlckNvbnRyb2wobmFtZSwgY29udHJvbCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyRGlydHlTdWJtaXRCdXR0b24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm5nRm9ybSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubmdGb3JtLmZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZURpcnR5U3VibWl0QnV0dG9ucygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9nZXRGb3JtR3JvdXAoKVxuICAgICAgLmJ1dHRvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl91cGRhdGVEaXJ0eVN1Ym1pdEJ1dHRvbnMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRGlydHlTdWJtaXRCdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYnV0dG9uc1xuICAgICAgLmZpbHRlcigoYnV0dG9uKSA9PiBidXR0b24uc3VibWl0KVxuICAgICAgLmZvckVhY2goKHN1Ym1pdEJ1dHRvbjogRnNCdXR0b25EaXJlY3RpdmUpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLmNvbmZpcm0gfHwgIXRoaXMuZGlydHlTdWJtaXRCdXR0b24gfHwgdGhpcy5uZ0Zvcm0uZGlydHkgfHwgIXN1Ym1pdEJ1dHRvbi5kaXJ0eVN1Ym1pdFxuICAgICAgICApIHtcbiAgICAgICAgICBzdWJtaXRCdXR0b24uZW5hYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3VibWl0QnV0dG9uLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zdGF0dXNTdWJtaXR0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXR1cyQubmV4dChGb3JtU3RhdHVzLlN1Ym1pdHRpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RhdHVzVmFsaWRhdGluZygpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0dXMkLm5leHQoRm9ybVN0YXR1cy5WYWxpZGF0aW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQWN0aXZlU3VibWl0QnV0dG9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYWN0aXZlU3VibWl0QnV0dG9uID0gdGhpcy5fZ2V0QWN0aXZlU3VibWl0QnV0dG9uKCk7XG4gICAgdGhpcy5fcmVzZXRCdXR0b25zKCk7XG5cbiAgICBpZiAodGhpcy5fZ2V0Rm9ybUdyb3VwKCkuYWN0aXZlU3VibWl0QnV0dG9uKSB7XG4gICAgICB0aGlzLl9nZXRGb3JtR3JvdXAoKS5hY3RpdmVTdWJtaXRCdXR0b24ucHJvY2VzcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVCdXR0b25zKCk6IHZvaWQge1xuICAgIHRoaXMuX2dldEZvcm1Hcm91cCgpXG4gICAgICAuYnV0dG9ucy5mb3JFYWNoKChidXR0b24pID0+IHtcbiAgICAgICAgYnV0dG9uLmRpc2FibGUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdFVudGlsU3RhdHVzUGVuZGluZygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLm5nRm9ybS5zdGF0dXNDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMubmdGb3JtLnN0YXR1cyksXG4gICAgICAgIGZpcnN0KChzdGF0ZSkgPT4gc3RhdGUgIT09ICdQRU5ESU5HJyksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlRXJyb3IoZTogU3VibWl0dGVkRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZygnJWMgRm9ybSBTdWJtaXQgJywgJ2NvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogI0QzM0Y0OScsICdFcnJvciBvY2N1cmVkJyk7XG4gICAgY29uc29sZS5ncm91cCgnRXJyb3IgRGV0YWlsczonKTtcbiAgICBjb25zb2xlLmxvZygnTWVzc2FnZTogJywgZSk7XG4gICAgY29uc29sZS5sb2coJ0Zvcm1SZWY6ICcsIHRoaXMpO1xuXG4gICAgaWYgKHRoaXMubmdGb3JtLmludmFsaWQpIHtcbiAgICAgIGNvbnN0IGVycm9ycyA9IGdldEZvcm1FcnJvcnModGhpcy5uZ0Zvcm0uY29udHJvbCwgbnVsbCk7XG4gICAgICBjb25zb2xlLmxvZygnVmFsaWRhdGlvbiBFcnJvcnM6ICcsIGVycm9ycyk7XG4gICAgfVxuXG4gICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgIHRoaXMuX2NvbXBsZXRlU3VibWl0KGZhbHNlLCBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVyQ2FuRGVhY3RpdmF0ZUd1YXJkKCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnID0gZ2V0QWN0aXZlUm91dGUodGhpcy5fcm91dGUpLnJvdXRlQ29uZmlnO1xuXG4gICAgaWYgKCF0aGlzLl9hY3RpdmF0ZWRSb3V0ZUNvbmZpZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm0ucmVnaXN0ZXJGb3JtRGlyZWN0aXZlKHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNvbXBvbmVudCwgdGhpcyk7XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZSkpIHtcbiAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZS5pbmRleE9mKEZvcm1EZWFjdGl2YXRlR3VhcmQpID09PSAtMSkge1xuICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZS5wdXNoKEZvcm1EZWFjdGl2YXRlR3VhcmQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFudXBDYW5EZWFjdGl2YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBndWFyZEluZGV4ID0gdGhpcy5fYWN0aXZhdGVkUm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZS5pbmRleE9mKEZvcm1EZWFjdGl2YXRlR3VhcmQpO1xuICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNhbkRlYWN0aXZhdGUuc3BsaWNlKGd1YXJkSW5kZXgsIDEpO1xuXG4gICAgdGhpcy5fZm9ybS5yZW1vdmVGb3JtRGlyZWN0aXZlKHRoaXMuX2FjdGl2YXRlZFJvdXRlQ29uZmlnLmNvbXBvbmVudCk7XG4gIH1cblxufVxuIl19
|
|
@@ -147,15 +147,16 @@ export class FsControlDirective {
|
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
_renderHint(error, messageWrapper) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
150
|
+
const hints = [
|
|
151
|
+
...messageWrapper.querySelectorAll('.mat-mdc-form-field-hint'),
|
|
152
|
+
...messageWrapper.querySelectorAll(this.getHintWrapperSelector()),
|
|
153
|
+
];
|
|
154
|
+
hints.forEach((hint) => {
|
|
155
|
+
this._renderer2.setStyle(hint, 'display', error ? 'none' : 'block');
|
|
156
|
+
if (this.appendHintClass) {
|
|
157
|
+
this._renderer2.addClass(hint, this.appendHintClass);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
159
160
|
}
|
|
160
161
|
_renderError(wrapper, messageWrapper, error) {
|
|
161
162
|
let errorWrapper = wrapper.querySelector('.fs-form-error-target');
|
|
@@ -171,8 +172,7 @@ export class FsControlDirective {
|
|
|
171
172
|
this._renderer2.addClass(errorWrapper, `${this.appendErrorClass}-${error.name}`);
|
|
172
173
|
const errorText = this._renderer2.createText(error.message);
|
|
173
174
|
this._renderer2.appendChild(errorWrapper, errorText);
|
|
174
|
-
|
|
175
|
-
hintWrapper?.prepend(errorWrapper);
|
|
175
|
+
messageWrapper?.prepend(errorWrapper);
|
|
176
176
|
}
|
|
177
177
|
_subscribeToStatusChagnes() {
|
|
178
178
|
if (this._control) {
|
|
@@ -268,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
268
268
|
}], validateMessages: [{
|
|
269
269
|
type: Input
|
|
270
270
|
}] } });
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGlCQUFpQixHQUNsQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQWV6RCxNQUFNLE9BQU8sa0JBQWtCO0lBMEJqQjtJQUNBO0lBQ0E7SUFDbUM7SUFDdkI7SUFDeUI7SUE3QmpDLGVBQWUsQ0FBaUI7SUFDaEMsZUFBZSxDQUFpQjtJQUNoQyxZQUFZLENBQWlCO0lBQzdCLGFBQWEsQ0FBaUI7SUFDOUIsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDdkMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQ25DLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUNuQyxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRWpELElBQ1csZ0JBQWdCLENBQUMsUUFBZ0M7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QixHQUFHLFFBQVE7U0FD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QkFBa0IsNkZBNkJYLGlCQUFpQixrRUFFYixlQUFlOzJGQS9CMUIsa0JBQWtCLDRYQUpsQjtZQUNULHlCQUF5QjtTQUMxQjs7MkZBRVUsa0JBQWtCO2tCQU45QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7cUJBQzFCO2lCQUNGOzswQkE4QkksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUNoQyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBN0JyQixlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBR0ssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsga2V5cywgdmFsdWVzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHtcbiAgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUixcbiAgVkFMSURBVEVfTUVTU0FHRVMsXG59IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZzQ29udHJvbERpcmVjdGl2ZSB7XG4gIHZhbGlkYXRlPyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcbiAgdmFsaWRhdGVBc3luYz8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPjtcbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtQ29udHJvbF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIHdyYXBwZXJTZWxlY3Rvcjogc3RyaW5nIHwgZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaGludFNlbGVjdG9yOiBzdHJpbmcgfCBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kTWVzc2FnZUNsYXNzID0gJ2ZzLWZvcm0tbWVzc2FnZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRMYWJlbENsYXNzID0gJ2ZzLWZvcm0tbGFiZWwnO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kRXJyb3JDbGFzcyA9ICdmcy1mb3JtLWVycm9yJztcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZEhpbnRDbGFzcyA9ICdmcy1mb3JtLWhpbnQnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGVNZXNzYWdlcyhtZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMuX3ZhbGlkYXRlTWVzc2FnZXMgPSB7XG4gICAgICAuLi50aGlzLl92YWxpZGF0ZU1lc3NhZ2VzLFxuICAgICAgLi4ubWVzc2FnZXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcnMgPSBbXTtcblxuICBwcm90ZWN0ZWQgX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBfcmVuZGVyZXIyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQFNlbGYoKSBASW5qZWN0KFZBTElEQVRFX01FU1NBR0VTKSBwcm90ZWN0ZWQgX3ZhbGlkYXRlTWVzc2FnZXMsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9uZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZzRm9ybURpcmVjdGl2ZSkgcHJvdGVjdGVkIF9mb3JtRGlyZWN0aXZlOiBGc0Zvcm1EaXJlY3RpdmUsXG4gICkge1xuXG4gICAgaWYgKF9uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuX2NvbnRyb2wgPSBfbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWxpZCBuZ01vZGVsJywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc2V0dXBWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1N0YXR1c0NoYWduZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXNzYWdlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlU2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWVzc2FnZVNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zvcm1EaXJlY3RpdmU/Lm1lc3NhZ2VTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1EaXJlY3RpdmUubWVzc2FnZVNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRIaW50V3JhcHBlclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaGludFNlbGVjdG9yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhpbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuaGludFNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLl9mb3JtRGlyZWN0aXZlPy5oaW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtRGlyZWN0aXZlLmhpbnRTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0V3JhcHBlclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMud3JhcHBlclNlbGVjdG9yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndyYXBwZXJTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMud3JhcHBlclNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLl9mb3JtRGlyZWN0aXZlPy53cmFwcGVyU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtRGlyZWN0aXZlLndyYXBwZXJTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0bGFiZWxTZWxlY3RvcigpOiBzdHJpbmcge1xuXG4gICAgaWYgKHRoaXMubGFiZWxTZWxlY3RvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYWJlbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYWJlbFNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLl9mb3JtRGlyZWN0aXZlPy5sYWJlbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ybURpcmVjdGl2ZS5sYWJlbFNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRXcmFwcGVyRWxlbWVudCgpIHtcbiAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5fZ2V0V3JhcHBlcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgaWYgKHdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAvKlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkXCI+ICA8LS0gRmllbGQgV3JhcHBlciBDbGFzcy4gTG9vayBmb3IgcGFyZW50cyBmcm9tIHRoZSBuYXRpdmUgZWxlbWVudCB3aXRoIHRoZSBtYXRjaGluZyB3cmFwcGVyU2VsZWN0b3IuIElmIG5vdCBmb3VuZCBkZWZhdWx0cyB0byBuYXRpdmUgZWxlbWVudC5cbiAgICAgIDxpbnB1dD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLW1lc3NhZ2VcIj4gPC0tIE1lc3NhZ2UgU2VsZWN0b3IuIExvb2sgZm9yIHRoZSBlbGVtZW50IHdpdGggY2xhc3MgLmZzLWZvcm0tbWVzc2FnZSBvciBtZXNzYWdlU2VsZWN0b3JcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1oaW50XCI+PC9kaXY+IDwtLSBIaW50IFNlbGVjdG9yLiBMb29rIGZvciB0aGUgZWxlbWVudCB3aXRoIGNsYXNzIC5mcy1mb3JtLWhpbnQgb3IgaGludFNlbGVjdG9yXG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAqL1xuXG4gIHByaXZhdGUgZ2V0IF9zaG91bGRFcnJvckJlUmVuZGVyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25nQ29udHJvbC5pbnZhbGlkXG4gICAgICAmJiAodGhpcy5fbmdDb250cm9sLmRpcnR5IHx8IHRoaXMuX2Zvcm1EaXJlY3RpdmU/Lm5nRm9ybT8uc3VibWl0dGVkKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuX25nQ29udHJvbCkge1xuICAgICAgY29uc3QgcmVuZGVyZXIgPSB0aGlzLl9yZW5kZXJlcjI7XG4gICAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5nZXRXcmFwcGVyRWxlbWVudCgpO1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLl9uZ0NvbnRyb2wuZGlydHkgPyB0aGlzLl9nZXRFcnJvcih0aGlzLl9uZ0NvbnRyb2wpIDogbnVsbDtcblxuICAgICAgaWYgKHRoaXMuX3Nob3VsZEVycm9yQmVSZW5kZXJlZCAmJiBlcnJvcikge1xuICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoJ25nLWludmFsaWQnLCAnbmctZGlydHknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgnbmctaW52YWxpZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuZ2V0TWVzc2FnZVNlbGVjdG9yKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlV3JhcHBlciA9IHdyYXBwZXIucXVlcnlTZWxlY3Rvcih0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpKTtcbiAgIFxuICAgICAgaWYgKCFtZXNzYWdlV3JhcHBlcikge1xuICAgICAgICByZXR1cm4gY29uc29sZVxuICAgICAgICAgIC53YXJuKGBGYWlsZWQgdG8gbG9jYXRlICR7ICB0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpfWAsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFwcGVuZE1lc3NhZ2VDbGFzcykge1xuICAgICAgICByZW5kZXJlci5hZGRDbGFzcyhtZXNzYWdlV3JhcHBlciwgdGhpcy5hcHBlbmRNZXNzYWdlQ2xhc3MpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZW5kZXJIaW50KGVycm9yLCBtZXNzYWdlV3JhcHBlcik7XG4gICAgICB0aGlzLl9yZW5kZXJFcnJvcih3cmFwcGVyLCBtZXNzYWdlV3JhcHBlciwgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfcmVuZGVySGludChlcnJvciwgbWVzc2FnZVdyYXBwZXIpIHtcbiAgICBpZiAodGhpcy5nZXRIaW50V3JhcHBlclNlbGVjdG9yKCkpIHtcbiAgICAgIGNvbnN0IGhpbnRzID0gbWVzc2FnZVdyYXBwZXIucXVlcnlTZWxlY3RvckFsbCgnLm1hdC1tZGMtZm9ybS1maWVsZC1oaW50Jyk7XG5cbiAgICAgIGhpbnRzLmZvckVhY2goKGhpbnQpID0+IHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKGhpbnQsICdkaXNwbGF5JywgZXJyb3IgPyAnbm9uZScgOiAnYmxvY2snKTtcblxuICAgICAgICBpZiAodGhpcy5hcHBlbmRIaW50Q2xhc3MpIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3MoaGludCwgdGhpcy5hcHBlbmRIaW50Q2xhc3MpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX3JlbmRlckVycm9yKHdyYXBwZXIsIG1lc3NhZ2VXcmFwcGVyLCBlcnJvcikge1xuICAgIGxldCBlcnJvcldyYXBwZXIgPSB3cmFwcGVyLnF1ZXJ5U2VsZWN0b3IoJy5mcy1mb3JtLWVycm9yLXRhcmdldCcpO1xuICAgIGlmIChlcnJvcldyYXBwZXIpIHtcbiAgICAgIGVycm9yV3JhcHBlci5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3Nob3VsZEVycm9yQmVSZW5kZXJlZCB8fCAhZXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlcnJvcldyYXBwZXIgPSB0aGlzLl9yZW5kZXJlcjIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKGVycm9yV3JhcHBlciwgJ2ZzLWZvcm0tZXJyb3ItdGFyZ2V0Jyk7XG4gICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKGVycm9yV3JhcHBlciwgdGhpcy5hcHBlbmRFcnJvckNsYXNzKTtcbiAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3MoZXJyb3JXcmFwcGVyLCBgJHt0aGlzLmFwcGVuZEVycm9yQ2xhc3MgIH0tJHsgIGVycm9yLm5hbWV9YCk7XG5cbiAgICBjb25zdCBlcnJvclRleHQgPSB0aGlzLl9yZW5kZXJlcjIuY3JlYXRlVGV4dChlcnJvci5tZXNzYWdlKTtcblxuICAgIHRoaXMuX3JlbmRlcmVyMi5hcHBlbmRDaGlsZChlcnJvcldyYXBwZXIsIGVycm9yVGV4dCk7XG4gICAgXG4gICAgY29uc3QgaGludFdyYXBwZXIgPSBtZXNzYWdlV3JhcHBlci5xdWVyeVNlbGVjdG9yKHRoaXMuZ2V0SGludFdyYXBwZXJTZWxlY3RvcigpKTtcbiAgICBoaW50V3JhcHBlcj8ucHJlcGVuZChlcnJvcldyYXBwZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zdWJzY3JpYmVUb1N0YXR1c0NoYWduZXMoKTp2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udHJvbCkge1xuICAgICAgdGhpcy5fY29udHJvbC5zdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLnJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldFdyYXBwZXIobm9kZSwgY291bnQgPSAwKSB7XG4gICAgaWYgKCFub2RlIHx8IGNvdW50ID4gMTApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChub2RlLnBhcmVudE5vZGUgJiYgbm9kZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3IodGhpcy5nZXRXcmFwcGVyU2VsZWN0b3IoKSkpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9nZXRXcmFwcGVyKG5vZGUucGFyZW50Tm9kZSwgKytjb3VudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3BhcnNlRXJyb3JNZXNzYWdlKG1lc3NhZ2UsIGFyZ3MpOiBzdHJpbmcge1xuICAgIHZhbHVlcyhhcmdzKVxuICAgICAgLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXFwkXFwoXFxkXFwpLywgbmFtZSk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9nZXRFcnJvcihjb250cm9sUmVmKTogeyBuYW1lOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9IHtcblxuICAgIGNvbnN0IG5hbWUgPSBrZXlzKGNvbnRyb2xSZWYuY29udHJvbC5lcnJvcnMpWzBdO1xuXG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgbWVzc2FnZSA9IGNvbnRyb2xSZWYuY29udHJvbC5lcnJvcnNbbmFtZV07XG5cbiAgICBpZiAodGhpcy5fdmFsaWRhdGVNZXNzYWdlc1tuYW1lXSkge1xuICAgICAgbWVzc2FnZSA9IHRoaXMuX3BhcnNlRXJyb3JNZXNzYWdlKHRoaXMuX3ZhbGlkYXRlTWVzc2FnZXNbbmFtZV0sIG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiB7IG5hbWU6IG5hbWUsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbDtcblxuICAgIGlmICh0aGlzLnZhbGlkYXRlKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gY29udHJvbC52YWxpZGF0b3JcbiAgICAgICAgPyBbY29udHJvbC52YWxpZGF0b3IsIHRoaXMudmFsaWRhdGUuYmluZCh0aGlzKV1cbiAgICAgICAgOiB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcyk7XG5cbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWxpZGF0ZUFzeW5jKSB7XG4gICAgICBjb25zdCBhc3luY1ZhbGlkYXRvcnMgPSBjb250cm9sLmFzeW5jVmFsaWRhdG9yXG4gICAgICAgID8gW2NvbnRyb2wuYXN5bmNWYWxpZGF0b3IsIHRoaXMudmFsaWRhdGVBc3luYy5iaW5kKHRoaXMpXVxuICAgICAgICA6IHRoaXMudmFsaWRhdGVBc3luYy5iaW5kKHRoaXMpO1xuXG4gICAgICBjb250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyhhc3luY1ZhbGlkYXRvcnMpO1xuICAgIH1cblxuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbn1cbiJdfQ==
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2RpcmVjdGl2ZXMvdmFsaWRhdG9ycy9jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFHTCxRQUFRLEVBQ1IsU0FBUyxFQUNULElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGlCQUFpQixHQUNsQixNQUFNLDRDQUE0QyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7OztBQWV6RCxNQUFNLE9BQU8sa0JBQWtCO0lBMEJqQjtJQUNBO0lBQ0E7SUFDbUM7SUFDdkI7SUFDeUI7SUE3QmpDLGVBQWUsQ0FBaUI7SUFDaEMsZUFBZSxDQUFpQjtJQUNoQyxZQUFZLENBQWlCO0lBQzdCLGFBQWEsQ0FBaUI7SUFDOUIsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDdkMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO0lBQ25DLGdCQUFnQixHQUFHLGVBQWUsQ0FBQztJQUNuQyxlQUFlLEdBQUcsY0FBYyxDQUFDO0lBRWpELElBQ1csZ0JBQWdCLENBQUMsUUFBZ0M7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QixHQUFHLFFBQVE7U0FD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QUNULHlCQUF5QjtTQUMxQjs7MkZBRVUsa0JBQWtCO2tCQU45QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFNBQVMsRUFBRTt3QkFDVCx5QkFBeUI7cUJBQzFCO2lCQUNGOzswQkE4QkksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUNoQyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBN0JyQixlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBR0ssZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsga2V5cywgdmFsdWVzIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHtcbiAgVkFMSURBVEVfTUVTU0FHRV9QUk9WSURFUixcbiAgVkFMSURBVEVfTUVTU0FHRVMsXG59IGZyb20gJy4uLy4uL3Byb3ZpZGVycy92YWxpZGF0ZS1tZXNzYWdlcy5wcm92aWRlcic7XG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtL2Zvcm0uZGlyZWN0aXZlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEZzQ29udHJvbERpcmVjdGl2ZSB7XG4gIHZhbGlkYXRlPyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbDtcbiAgdmFsaWRhdGVBc3luYz8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPjtcbn1cblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNGb3JtQ29udHJvbF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBWQUxJREFURV9NRVNTQUdFX1BST1ZJREVSLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0NvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgcHVibGljIHdyYXBwZXJTZWxlY3Rvcjogc3RyaW5nIHwgZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBtZXNzYWdlU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaGludFNlbGVjdG9yOiBzdHJpbmcgfCBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsU2VsZWN0b3I6IHN0cmluZyB8IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kTWVzc2FnZUNsYXNzID0gJ2ZzLWZvcm0tbWVzc2FnZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRMYWJlbENsYXNzID0gJ2ZzLWZvcm0tbGFiZWwnO1xuICBASW5wdXQoKSBwdWJsaWMgYXBwZW5kRXJyb3JDbGFzcyA9ICdmcy1mb3JtLWVycm9yJztcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZEhpbnRDbGFzcyA9ICdmcy1mb3JtLWhpbnQnO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdmFsaWRhdGVNZXNzYWdlcyhtZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMuX3ZhbGlkYXRlTWVzc2FnZXMgPSB7XG4gICAgICAuLi50aGlzLl92YWxpZGF0ZU1lc3NhZ2VzLFxuICAgICAgLi4ubWVzc2FnZXMsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcnMgPSBbXTtcblxuICBwcm90ZWN0ZWQgX2NvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBfcmVuZGVyZXIyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQFNlbGYoKSBASW5qZWN0KFZBTElEQVRFX01FU1NBR0VTKSBwcm90ZWN0ZWQgX3ZhbGlkYXRlTWVzc2FnZXMsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIF9uZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZzRm9ybURpcmVjdGl2ZSkgcHJvdGVjdGVkIF9mb3JtRGlyZWN0aXZlOiBGc0Zvcm1EaXJlY3RpdmUsXG4gICkge1xuXG4gICAgaWYgKF9uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuX2NvbnRyb2wgPSBfbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB2YWxpZCBuZ01vZGVsJywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc2V0dXBWYWxpZGF0b3JzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1N0YXR1c0NoYWduZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXNzYWdlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlU2VsZWN0b3IgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWVzc2FnZVNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZXNzYWdlU2VsZWN0b3I7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMuX2Zvcm1EaXJlY3RpdmU/Lm1lc3NhZ2VTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1EaXJlY3RpdmUubWVzc2FnZVNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRIaW50V3JhcHBlclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaGludFNlbGVjdG9yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhpbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMuaGludFNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLl9mb3JtRGlyZWN0aXZlPy5oaW50U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtRGlyZWN0aXZlLmhpbnRTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0V3JhcHBlclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMud3JhcHBlclNlbGVjdG9yID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndyYXBwZXJTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHRoaXMud3JhcHBlclNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLl9mb3JtRGlyZWN0aXZlPy53cmFwcGVyU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtRGlyZWN0aXZlLndyYXBwZXJTZWxlY3RvcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0bGFiZWxTZWxlY3RvcigpOiBzdHJpbmcge1xuXG4gICAgaWYgKHRoaXMubGFiZWxTZWxlY3RvciA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sYWJlbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYWJlbFNlbGVjdG9yO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLl9mb3JtRGlyZWN0aXZlPy5sYWJlbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZm9ybURpcmVjdGl2ZS5sYWJlbFNlbGVjdG9yO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRXcmFwcGVyRWxlbWVudCgpIHtcbiAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5fZ2V0V3JhcHBlcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgaWYgKHdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICAvKlxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm1hdC1mb3JtLWZpZWxkXCI+ICA8LS0gRmllbGQgV3JhcHBlciBDbGFzcy4gTG9vayBmb3IgcGFyZW50cyBmcm9tIHRoZSBuYXRpdmUgZWxlbWVudCB3aXRoIHRoZSBtYXRjaGluZyB3cmFwcGVyU2VsZWN0b3IuIElmIG5vdCBmb3VuZCBkZWZhdWx0cyB0byBuYXRpdmUgZWxlbWVudC5cbiAgICAgIDxpbnB1dD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLW1lc3NhZ2VcIj4gPC0tIE1lc3NhZ2UgU2VsZWN0b3IuIExvb2sgZm9yIHRoZSBlbGVtZW50IHdpdGggY2xhc3MgLmZzLWZvcm0tbWVzc2FnZSBvciBtZXNzYWdlU2VsZWN0b3JcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0tbWVzc2FnZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1oaW50XCI+PC9kaXY+IDwtLSBIaW50IFNlbGVjdG9yLiBMb29rIGZvciB0aGUgZWxlbWVudCB3aXRoIGNsYXNzIC5mcy1mb3JtLWhpbnQgb3IgaGludFNlbGVjdG9yXG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAqL1xuXG4gIHByaXZhdGUgZ2V0IF9zaG91bGRFcnJvckJlUmVuZGVyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25nQ29udHJvbC5pbnZhbGlkXG4gICAgICAmJiAodGhpcy5fbmdDb250cm9sLmRpcnR5IHx8IHRoaXMuX2Zvcm1EaXJlY3RpdmU/Lm5nRm9ybT8uc3VibWl0dGVkKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuX25nQ29udHJvbCkge1xuICAgICAgY29uc3QgcmVuZGVyZXIgPSB0aGlzLl9yZW5kZXJlcjI7XG4gICAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5nZXRXcmFwcGVyRWxlbWVudCgpO1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLl9uZ0NvbnRyb2wuZGlydHkgPyB0aGlzLl9nZXRFcnJvcih0aGlzLl9uZ0NvbnRyb2wpIDogbnVsbDtcblxuICAgICAgaWYgKHRoaXMuX3Nob3VsZEVycm9yQmVSZW5kZXJlZCAmJiBlcnJvcikge1xuICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoJ25nLWludmFsaWQnLCAnbmctZGlydHknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyYXBwZXIuY2xhc3NMaXN0LnJlbW92ZSgnbmctaW52YWxpZCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuZ2V0TWVzc2FnZVNlbGVjdG9yKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlV3JhcHBlciA9IHdyYXBwZXIucXVlcnlTZWxlY3Rvcih0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpKTtcbiAgIFxuICAgICAgaWYgKCFtZXNzYWdlV3JhcHBlcikge1xuICAgICAgICByZXR1cm4gY29uc29sZVxuICAgICAgICAgIC53YXJuKGBGYWlsZWQgdG8gbG9jYXRlICR7ICB0aGlzLmdldE1lc3NhZ2VTZWxlY3RvcigpfWAsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFwcGVuZE1lc3NhZ2VDbGFzcykge1xuICAgICAgICByZW5kZXJlci5hZGRDbGFzcyhtZXNzYWdlV3JhcHBlciwgdGhpcy5hcHBlbmRNZXNzYWdlQ2xhc3MpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZW5kZXJIaW50KGVycm9yLCBtZXNzYWdlV3JhcHBlcik7XG4gICAgICB0aGlzLl9yZW5kZXJFcnJvcih3cmFwcGVyLCBtZXNzYWdlV3JhcHBlciwgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfcmVuZGVySGludChlcnJvciwgbWVzc2FnZVdyYXBwZXIpIHtcbiAgICBjb25zdCBoaW50cyA9IFtcbiAgICAgIC4uLm1lc3NhZ2VXcmFwcGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXQtbWRjLWZvcm0tZmllbGQtaGludCcpLFxuICAgICAgLi4ubWVzc2FnZVdyYXBwZXIucXVlcnlTZWxlY3RvckFsbCh0aGlzLmdldEhpbnRXcmFwcGVyU2VsZWN0b3IoKSksXG4gICAgXTtcblxuICAgIGhpbnRzLmZvckVhY2goKGhpbnQpID0+IHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShoaW50LCAnZGlzcGxheScsIGVycm9yID8gJ25vbmUnIDogJ2Jsb2NrJyk7XG5cbiAgICAgIGlmICh0aGlzLmFwcGVuZEhpbnRDbGFzcykge1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuYWRkQ2xhc3MoaGludCwgdGhpcy5hcHBlbmRIaW50Q2xhc3MpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9yZW5kZXJFcnJvcih3cmFwcGVyLCBtZXNzYWdlV3JhcHBlciwgZXJyb3IpIHtcbiAgICBsZXQgZXJyb3JXcmFwcGVyID0gd3JhcHBlci5xdWVyeVNlbGVjdG9yKCcuZnMtZm9ybS1lcnJvci10YXJnZXQnKTtcbiAgICBpZiAoZXJyb3JXcmFwcGVyKSB7XG4gICAgICBlcnJvcldyYXBwZXIucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zaG91bGRFcnJvckJlUmVuZGVyZWQgfHwgIWVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXJyb3JXcmFwcGVyID0gdGhpcy5fcmVuZGVyZXIyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyhlcnJvcldyYXBwZXIsICdmcy1mb3JtLWVycm9yLXRhcmdldCcpO1xuICAgIHRoaXMuX3JlbmRlcmVyMi5hZGRDbGFzcyhlcnJvcldyYXBwZXIsIHRoaXMuYXBwZW5kRXJyb3JDbGFzcyk7XG4gICAgdGhpcy5fcmVuZGVyZXIyLmFkZENsYXNzKGVycm9yV3JhcHBlciwgYCR7dGhpcy5hcHBlbmRFcnJvckNsYXNzICB9LSR7ICBlcnJvci5uYW1lfWApO1xuXG4gICAgY29uc3QgZXJyb3JUZXh0ID0gdGhpcy5fcmVuZGVyZXIyLmNyZWF0ZVRleHQoZXJyb3IubWVzc2FnZSk7XG5cbiAgICB0aGlzLl9yZW5kZXJlcjIuYXBwZW5kQ2hpbGQoZXJyb3JXcmFwcGVyLCBlcnJvclRleHQpO1xuICAgIFxuICAgIG1lc3NhZ2VXcmFwcGVyPy5wcmVwZW5kKGVycm9yV3JhcHBlcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3N1YnNjcmliZVRvU3RhdHVzQ2hhZ25lcygpOnZvaWQge1xuICAgIGlmICh0aGlzLl9jb250cm9sKSB7XG4gICAgICB0aGlzLl9jb250cm9sLnN0YXR1c0NoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMucmVuZGVyLmJpbmQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0V3JhcHBlcihub2RlLCBjb3VudCA9IDApIHtcbiAgICBpZiAoIW5vZGUgfHwgY291bnQgPiAxMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLnBhcmVudE5vZGUucXVlcnlTZWxlY3Rvcih0aGlzLmdldFdyYXBwZXJTZWxlY3RvcigpKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2dldFdyYXBwZXIobm9kZS5wYXJlbnROb2RlLCArK2NvdW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfcGFyc2VFcnJvck1lc3NhZ2UobWVzc2FnZSwgYXJncyk6IHN0cmluZyB7XG4gICAgdmFsdWVzKGFyZ3MpXG4gICAgICAuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXCRcXChcXGRcXCkvLCBuYW1lKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2dldEVycm9yKGNvbnRyb2xSZWYpOiB7IG5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0ge1xuXG4gICAgY29uc3QgbmFtZSA9IGtleXMoY29udHJvbFJlZi5jb250cm9sLmVycm9ycylbMF07XG5cbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBtZXNzYWdlID0gY29udHJvbFJlZi5jb250cm9sLmVycm9yc1tuYW1lXTtcblxuICAgIGlmICh0aGlzLl92YWxpZGF0ZU1lc3NhZ2VzW25hbWVdKSB7XG4gICAgICBtZXNzYWdlID0gdGhpcy5fcGFyc2VFcnJvck1lc3NhZ2UodGhpcy5fdmFsaWRhdGVNZXNzYWdlc1tuYW1lXSwgbWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbmFtZTogbmFtZSwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBWYWxpZGF0b3JzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9jb250cm9sO1xuXG4gICAgaWYgKHRoaXMudmFsaWRhdGUpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBjb250cm9sLnZhbGlkYXRvclxuICAgICAgICA/IFtjb250cm9sLnZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpXVxuICAgICAgICA6IHRoaXMudmFsaWRhdGUuYmluZCh0aGlzKTtcblxuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbGlkYXRlQXN5bmMpIHtcbiAgICAgIGNvbnN0IGFzeW5jVmFsaWRhdG9ycyA9IGNvbnRyb2wuYXN5bmNWYWxpZGF0b3JcbiAgICAgICAgPyBbY29udHJvbC5hc3luY1ZhbGlkYXRvciwgdGhpcy52YWxpZGF0ZUFzeW5jLmJpbmQodGhpcyldXG4gICAgICAgIDogdGhpcy52YWxpZGF0ZUFzeW5jLmJpbmQodGhpcyk7XG5cbiAgICAgIGNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKGFzeW5jVmFsaWRhdG9ycyk7XG4gICAgfVxuXG4gICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxufVxuIl19
|
|
@@ -586,7 +586,7 @@ class FsFormDirective extends FsFormBaseDirective {
|
|
|
586
586
|
this._handleError(e);
|
|
587
587
|
return of({
|
|
588
588
|
...this._submitEvent,
|
|
589
|
-
error: e
|
|
589
|
+
error: e?.message,
|
|
590
590
|
});
|
|
591
591
|
}), tap((submittedEvent) => {
|
|
592
592
|
if (!submittedEvent.error) {
|
|
@@ -1413,15 +1413,16 @@ class FsControlDirective {
|
|
|
1413
1413
|
}
|
|
1414
1414
|
}
|
|
1415
1415
|
_renderHint(error, messageWrapper) {
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1416
|
+
const hints = [
|
|
1417
|
+
...messageWrapper.querySelectorAll('.mat-mdc-form-field-hint'),
|
|
1418
|
+
...messageWrapper.querySelectorAll(this.getHintWrapperSelector()),
|
|
1419
|
+
];
|
|
1420
|
+
hints.forEach((hint) => {
|
|
1421
|
+
this._renderer2.setStyle(hint, 'display', error ? 'none' : 'block');
|
|
1422
|
+
if (this.appendHintClass) {
|
|
1423
|
+
this._renderer2.addClass(hint, this.appendHintClass);
|
|
1424
|
+
}
|
|
1425
|
+
});
|
|
1425
1426
|
}
|
|
1426
1427
|
_renderError(wrapper, messageWrapper, error) {
|
|
1427
1428
|
let errorWrapper = wrapper.querySelector('.fs-form-error-target');
|
|
@@ -1437,8 +1438,7 @@ class FsControlDirective {
|
|
|
1437
1438
|
this._renderer2.addClass(errorWrapper, `${this.appendErrorClass}-${error.name}`);
|
|
1438
1439
|
const errorText = this._renderer2.createText(error.message);
|
|
1439
1440
|
this._renderer2.appendChild(errorWrapper, errorText);
|
|
1440
|
-
|
|
1441
|
-
hintWrapper?.prepend(errorWrapper);
|
|
1441
|
+
messageWrapper?.prepend(errorWrapper);
|
|
1442
1442
|
}
|
|
1443
1443
|
_subscribeToStatusChagnes() {
|
|
1444
1444
|
if (this._control) {
|