UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

123 lines 17.4 kB
import { Component } from '@angular/core'; import { ValidationAlertSeverity } from '../../form/validation-alert/validation-alert'; import { BaseDialogComponent } from '../base-dialog.component'; import { DialogService } from '../dialog.service'; import * as i0 from "@angular/core"; import * as i1 from "../dialog.service"; import * as i2 from "@angular/common"; import * as i3 from "@angular/forms"; import * as i4 from "../../form/form-field/radio-group/classic/radio-group-form-field.component"; import * as i5 from "../../form/form-field/options-form-field/form-field-option.component"; import * as i6 from "../../form/validation-alert/validation-alert.component"; import * as i7 from "../../form/form-field/form-field-accessor.directive"; import * as i8 from "../../form/form-field/form-field-validator.directive"; import * as i9 from "../dialog.component"; function ChoiceDialogComponent_sme_option_8_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "sme-option", 7); } if (rf & 2) { const choice_r2 = ctx.$implicit; i0.ɵɵproperty("value", choice_r2.value)("label", choice_r2.name); } } /** * The Choice Dialog Component * @deprecated since 02/20/18. Please use AppContextService.frame.showDialogChoice instead */ export class ChoiceDialogComponent extends BaseDialogComponent { /** * Initializes a new instance of the ConfirmationDialogComponent class. */ constructor(dialogService) { super(dialogService); } /** * The method called after the component inputs are set. */ ngOnInit() { super.ngOnInit(); } /** * handler for when a close is requested * this override cancels the confirmation when requested to close * @param reason - reason for the close following DialogCloseReason */ closeRequested(reason) { this.onCancel(); } /** * The method to call when the confirm button is clicked. */ onConfirm() { this.hide({ confirmed: true, choice: this.choices.first((choice) => choice.value === this.selection) }); } /** * The method to call when the cancel button is clicked. */ onCancel() { this.hide({ confirmed: false, choice: null }); } /** * Shows the dialog. * * @param options The options for the dialog. * @return The dialog result subject. */ show(options) { if (!options) { throw new Error('ConfirmationDialogComponent.show: Options are required to show the dialog.'); } const result = super.show(options); this.cancelButtonText = options.cancelButtonText; this.confirmButtonText = options.confirmButtonText; this.message = options.message; this.title = options.title; this.footnoteAlert = { severity: ValidationAlertSeverity.Informational, valid: true, message: options.footnote }; this.choices = options.choices; this.selection = this.choices[0].value; return result; } } /** @nocollapse */ ChoiceDialogComponent.ɵfac = function ChoiceDialogComponent_Factory(t) { return new (t || ChoiceDialogComponent)(i0.ɵɵdirectiveInject(i1.DialogService)); }; /** @nocollapse */ ChoiceDialogComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ChoiceDialogComponent, selectors: [["sme-choice-dialog"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 15, vars: 8, consts: [["dialogMode", "centered", 3, "clickBackdrop"], ["dialog", ""], ["type", "radiogroup", "name", "choice", 3, "ngModel", "label", "ngModelChange"], [3, "value", "label", 4, "ngFor", "ngForOf"], [3, "alert"], ["type", "button", 1, "sme-button-primary", 3, "click"], ["type", "button", 3, "click"], [3, "value", "label"]], template: function ChoiceDialogComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "sme-dialog", 0, 1)(2, "sme-dialog-header")(3, "h2"); i0.ɵɵtext(4); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(5, "sme-dialog-content")(6, "form")(7, "sme-form-field", 2); i0.ɵɵlistener("ngModelChange", function ChoiceDialogComponent_Template_sme_form_field_ngModelChange_7_listener($event) { return ctx.selection = $event; }); i0.ɵɵtemplate(8, ChoiceDialogComponent_sme_option_8_Template, 1, 2, "sme-option", 3); i0.ɵɵelementEnd(); i0.ɵɵelement(9, "sme-alert", 4); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(10, "sme-dialog-footer")(11, "button", 5); i0.ɵɵlistener("click", function ChoiceDialogComponent_Template_button_click_11_listener() { return ctx.onConfirm(); }); i0.ɵɵtext(12); i0.ɵɵelementEnd(); i0.ɵɵelementStart(13, "button", 6); i0.ɵɵlistener("click", function ChoiceDialogComponent_Template_button_click_13_listener() { return ctx.onCancel(); }); i0.ɵɵtext(14); i0.ɵɵelementEnd()()(); } if (rf & 2) { i0.ɵɵproperty("clickBackdrop", false); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate(ctx.title); i0.ɵɵadvance(3); i0.ɵɵproperty("ngModel", ctx.selection)("label", ctx.message); i0.ɵɵadvance(1); i0.ɵɵproperty("ngForOf", ctx.choices); i0.ɵɵadvance(1); i0.ɵɵproperty("alert", ctx.footnoteAlert); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(ctx.confirmButtonText); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate(ctx.cancelButtonText); } }, dependencies: [i2.NgForOf, i3.ɵNgNoValidate, i3.NgControlStatus, i3.NgControlStatusGroup, i3.NgModel, i3.NgForm, i4.RadioGroupFormFieldComponent, i5.FormFieldOptionComponent, i6.ValidationAlertComponent, i7.FormFieldAccessorDirective, i8.FormFieldValidatorDirective, i9.DialogComponent, i9.DialogContentComponent, i9.DialogFooterComponent, i9.DialogHeaderComponent], encapsulation: 2 }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ChoiceDialogComponent, [{ type: Component, args: [{ selector: 'sme-choice-dialog', template: "<sme-dialog #dialog dialogMode=\"centered\" [clickBackdrop]='false'>\r\n <sme-dialog-header>\r\n <h2>{{ title }}</h2>\r\n </sme-dialog-header>\r\n <sme-dialog-content>\r\n <form>\r\n <sme-form-field type=\"radiogroup\" name=\"choice\" [(ngModel)]=\"selection\" [label]=\"message\">\r\n <sme-option *ngFor=\"let choice of choices\" [value]=\"choice.value\" [label]=\"choice.name\"></sme-option>\r\n </sme-form-field>\r\n <sme-alert [alert]=\"footnoteAlert\"></sme-alert>\r\n </form>\r\n\r\n </sme-dialog-content>\r\n <sme-dialog-footer>\r\n <button type=\"button\" class=\"sme-button-primary\" (click)=\"onConfirm()\">{{ confirmButtonText }}</button>\r\n <button type=\"button\" (click)=\"onCancel()\">{{ cancelButtonText }}</button>\r\n </sme-dialog-footer>\r\n</sme-dialog>\r\n" }] }], function () { return [{ type: i1.DialogService }]; }, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9kaWFsb2cvY2hvaWNlLWRpYWxvZy9jaG9pY2UtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL2RpYWxvZy9jaG9pY2UtZGlhbG9nL2Nob2ljZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQW1CLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDeEcsT0FBTyxFQUFFLG1CQUFtQixFQUErQixNQUFNLDBCQUEwQixDQUFDO0FBRTVGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7O0lDRTFDLGdDQUFxRzs7O0lBQTFELHVDQUFzQix5QkFBQTs7QURrRHpFOzs7R0FHRztBQUtILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxtQkFBNEQ7SUFvQ25HOztPQUVHO0lBQ0gsWUFBWSxhQUE0QjtRQUNwQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNYLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWMsQ0FBQyxNQUF5QjtRQUMzQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDTixTQUFTLEVBQUUsSUFBSTtZQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzFFLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ04sU0FBUyxFQUFFLEtBQUs7WUFDaEIsTUFBTSxFQUFFLElBQUk7U0FDZixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxJQUFJLENBQUMsT0FBNEI7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztTQUNqRztRQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUUvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRXZDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OzZHQXJHUSxxQkFBcUI7dUdBQXJCLHFCQUFxQjtRQ2pFbEMsd0NBQWtFLHdCQUFBLFNBQUE7UUFFMUQsWUFBVztRQUFBLGlCQUFLLEVBQUE7UUFFdEIsMENBQW9CLFdBQUEsd0JBQUE7UUFFZ0MsMEpBQXVCO1FBQ3JFLG9GQUFxRztRQUN2RyxpQkFBaUI7UUFDakIsK0JBQStDO1FBQ2pELGlCQUFPLEVBQUE7UUFHVCwwQ0FBbUIsaUJBQUE7UUFDZ0MsbUdBQVMsZUFBVyxJQUFDO1FBQUMsYUFBdUI7UUFBQSxpQkFBUztRQUN2RyxrQ0FBMkM7UUFBckIsbUdBQVMsY0FBVSxJQUFDO1FBQUMsYUFBc0I7UUFBQSxpQkFBUyxFQUFBLEVBQUE7O1FBZnBDLHFDQUF1QjtRQUV6RCxlQUFXO1FBQVgsK0JBQVc7UUFJbUMsZUFBdUI7UUFBdkIsdUNBQXVCLHNCQUFBO1FBQ3RDLGVBQVU7UUFBVixxQ0FBVTtRQUVoQyxlQUF1QjtRQUF2Qix5Q0FBdUI7UUFLbUMsZUFBdUI7UUFBdkIsMkNBQXVCO1FBQ25ELGVBQXNCO1FBQXRCLDBDQUFzQjs7dUZEa0R4RCxxQkFBcUI7Y0FKakMsU0FBUzsyQkFDSSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25BbGVydCwgVmFsaWRhdGlvbkFsZXJ0U2V2ZXJpdHkgfSBmcm9tICcuLi8uLi9mb3JtL3ZhbGlkYXRpb24tYWxlcnQvdmFsaWRhdGlvbi1hbGVydCc7XHJcbmltcG9ydCB7IEJhc2VEaWFsb2dDb21wb25lbnQsIERpYWxvZ09wdGlvbnMsIERpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2Jhc2UtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0Nsb3NlUmVhc29uIH0gZnJvbSAnLi4vZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9kaWFsb2cuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogVGhlIGNob2ljZSBkaWFsb2cgb3B0aW9ucy5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hvaWNlRGlhbG9nT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dCBmb3IgdGhlIGRpYWxvZyBjYW5jZWwgYnV0dG9uLlxyXG4gICAgICovXHJcbiAgICBjYW5jZWxCdXR0b25UZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY2hvaWNlcyBvZiB0aGVcclxuICAgICAqL1xyXG4gICAgY2hvaWNlczogeyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkgfVtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRleHQgZm9yIHRoZSBkaWFsb2cgY29uZmlybSBidXR0b24uXHJcbiAgICAgKi9cclxuICAgIGNvbmZpcm1CdXR0b25UZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dCBhdCB0aGUgYm90dG9tIG9mIHRoZSBkaWFsb2cgY29udGVudC5cclxuICAgICAqL1xyXG4gICAgZm9vdG5vdGU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXNzYWdlIG9mIHRoZSBkaWFsb2cgYm9keS5cclxuICAgICAqL1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSBkaWFsb2cuXHJcbiAgICAgKi9cclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgY2hvaWNlIGRpYWxvZyByZXN1bHQuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENob2ljZURpYWxvZ1Jlc3VsdCBleHRlbmRzIERpYWxvZ1Jlc3VsdCB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZyBjb25maXJtYXRpb24uXHJcbiAgICAgKi9cclxuICAgIGNvbmZpcm1lZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZyBjaGVja2JveC5cclxuICAgICAqL1xyXG4gICAgY2hvaWNlOiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSB9O1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIENob2ljZSBEaWFsb2cgQ29tcG9uZW50XHJcbiAqIEBkZXByZWNhdGVkIHNpbmNlIDAyLzIwLzE4LiBQbGVhc2UgdXNlIEFwcENvbnRleHRTZXJ2aWNlLmZyYW1lLnNob3dEaWFsb2dDaG9pY2UgaW5zdGVhZFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1jaG9pY2UtZGlhbG9nJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaG9pY2UtZGlhbG9nLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hvaWNlRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpYWxvZ0NvbXBvbmVudDxDaG9pY2VEaWFsb2dPcHRpb25zLCBDaG9pY2VEaWFsb2dSZXN1bHQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGNhbmNlbCBidXR0b24gdGV4dC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNhbmNlbEJ1dHRvblRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjaG9pY2VzIHRvIGRpc3BsYXkuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaG9pY2VzOiB7IG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSB9W107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29uZmlybSBidXR0b24gdGV4dC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbmZpcm1CdXR0b25UZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZm9vdG5vdGUuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBmb290bm90ZUFsZXJ0OiBWYWxpZGF0aW9uQWxlcnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWVzc2FnZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzZWxlY3RlZCBjaG9pY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZWxlY3Rpb246IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0aXRsZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoZGlhbG9nU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIGNhbGxlZCBhZnRlciB0aGUgY29tcG9uZW50IGlucHV0cyBhcmUgc2V0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhhbmRsZXIgZm9yIHdoZW4gYSBjbG9zZSBpcyByZXF1ZXN0ZWRcclxuICAgICAqIHRoaXMgb3ZlcnJpZGUgY2FuY2VscyB0aGUgY29uZmlybWF0aW9uIHdoZW4gcmVxdWVzdGVkIHRvIGNsb3NlXHJcbiAgICAgKiBAcGFyYW0gcmVhc29uIC0gcmVhc29uIGZvciB0aGUgY2xvc2UgZm9sbG93aW5nIERpYWxvZ0Nsb3NlUmVhc29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbG9zZVJlcXVlc3RlZChyZWFzb246IERpYWxvZ0Nsb3NlUmVhc29uKSB7XHJcbiAgICAgICAgdGhpcy5vbkNhbmNlbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCB0byBjYWxsIHdoZW4gdGhlIGNvbmZpcm0gYnV0dG9uIGlzIGNsaWNrZWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBvbkNvbmZpcm0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5oaWRlKHtcclxuICAgICAgICAgICAgY29uZmlybWVkOiB0cnVlLFxyXG4gICAgICAgICAgICBjaG9pY2U6IHRoaXMuY2hvaWNlcy5maXJzdCgoY2hvaWNlKSA9PiBjaG9pY2UudmFsdWUgPT09IHRoaXMuc2VsZWN0aW9uKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCB0byBjYWxsIHdoZW4gdGhlIGNhbmNlbCBidXR0b24gaXMgY2xpY2tlZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaGlkZSh7XHJcbiAgICAgICAgICAgIGNvbmZpcm1lZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGNob2ljZTogbnVsbFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvd3MgdGhlIGRpYWxvZy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIGRpYWxvZy5cclxuICAgICAqIEByZXR1cm4gVGhlIGRpYWxvZyByZXN1bHQgc3ViamVjdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNob3cob3B0aW9uczogQ2hvaWNlRGlhbG9nT3B0aW9ucyk6IFN1YmplY3Q8Q2hvaWNlRGlhbG9nUmVzdWx0PiB7XHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LnNob3c6IE9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIHNob3cgdGhlIGRpYWxvZy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHN1cGVyLnNob3cob3B0aW9ucyk7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxCdXR0b25UZXh0ID0gb3B0aW9ucy5jYW5jZWxCdXR0b25UZXh0O1xyXG4gICAgICAgIHRoaXMuY29uZmlybUJ1dHRvblRleHQgPSBvcHRpb25zLmNvbmZpcm1CdXR0b25UZXh0O1xyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG9wdGlvbnMubWVzc2FnZTtcclxuICAgICAgICB0aGlzLnRpdGxlID0gb3B0aW9ucy50aXRsZTtcclxuICAgICAgICB0aGlzLmZvb3Rub3RlQWxlcnQgPSB7IHNldmVyaXR5OiBWYWxpZGF0aW9uQWxlcnRTZXZlcml0eS5JbmZvcm1hdGlvbmFsLCB2YWxpZDogdHJ1ZSwgbWVzc2FnZTogb3B0aW9ucy5mb290bm90ZSB9O1xyXG4gICAgICAgIHRoaXMuY2hvaWNlcyA9IG9wdGlvbnMuY2hvaWNlcztcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0aGlzLmNob2ljZXNbMF0udmFsdWU7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbn1cclxuIiwiPHNtZS1kaWFsb2cgI2RpYWxvZyBkaWFsb2dNb2RlPVwiY2VudGVyZWRcIiBbY2xpY2tCYWNrZHJvcF09J2ZhbHNlJz5cclxuICA8c21lLWRpYWxvZy1oZWFkZXI+XHJcbiAgICA8aDI+e3sgdGl0bGUgfX08L2gyPlxyXG4gIDwvc21lLWRpYWxvZy1oZWFkZXI+XHJcbiAgPHNtZS1kaWFsb2ctY29udGVudD5cclxuICAgIDxmb3JtPlxyXG4gICAgICA8c21lLWZvcm0tZmllbGQgdHlwZT1cInJhZGlvZ3JvdXBcIiBuYW1lPVwiY2hvaWNlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3Rpb25cIiBbbGFiZWxdPVwibWVzc2FnZVwiPlxyXG4gICAgICAgIDxzbWUtb3B0aW9uICpuZ0Zvcj1cImxldCBjaG9pY2Ugb2YgY2hvaWNlc1wiIFt2YWx1ZV09XCJjaG9pY2UudmFsdWVcIiBbbGFiZWxdPVwiY2hvaWNlLm5hbWVcIj48L3NtZS1vcHRpb24+XHJcbiAgICAgIDwvc21lLWZvcm0tZmllbGQ+XHJcbiAgICAgIDxzbWUtYWxlcnQgW2FsZXJ0XT1cImZvb3Rub3RlQWxlcnRcIj48L3NtZS1hbGVydD5cclxuICAgIDwvZm9ybT5cclxuXHJcbiAgPC9zbWUtZGlhbG9nLWNvbnRlbnQ+XHJcbiAgPHNtZS1kaWFsb2ctZm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzbWUtYnV0dG9uLXByaW1hcnlcIiAoY2xpY2spPVwib25Db25maXJtKClcIj57eyBjb25maXJtQnV0dG9uVGV4dCB9fTwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj57eyBjYW5jZWxCdXR0b25UZXh0IH19PC9idXR0b24+XHJcbiAgPC9zbWUtZGlhbG9nLWZvb3Rlcj5cclxuPC9zbWUtZGlhbG9nPlxyXG4iXX0=