@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
134 lines • 14.9 kB
JavaScript
import { Directive, Input, ViewChild } from '@angular/core';
import { Subject } from 'rxjs';
import { DialogComponent } from './dialog.component';
import { DialogChangeEvent, DialogService } from './dialog.service';
import * as i0 from "@angular/core";
import * as i1 from "./dialog.service";
const _c0 = ["dialog"];
/**
* The base dialog component for extending.
*/
// eslint-disable-next-line @angular-eslint/directive-class-suffix
export class BaseDialogComponent {
/**
* Initializes a new instance of the BaseDialogComponent class.
*/
constructor(dialogService) {
this.dialogService = dialogService;
/**
* Keeps the dialog open when another dialog pops up
* by default the dialog will be closed if another dialog opens while this dialog is visible
*/
this.keepOpen = false;
this.internalLevel = 1;
}
set level(value) {
if (this.dialog) {
this.dialog.dialogLevel = value;
}
this.internalLevel = value;
}
/**
* The method to run when the component initialized.
*/
// eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
ngOnInit() {
/* empty */
}
/**
* The method to run after the component view initialized
*/
ngAfterViewInit() {
if (!this.dialog) {
throw new Error('BaseDialogComponent.ngOnInit: Dialog is not defined');
}
if (!this.id) {
throw new Error('BaseDialogComponent.ngOnInit: ID is not defined');
}
this.level = this.internalLevel;
this.dialogService.register(this.id, this);
this.closeSubscription = this.dialog.closeRequested.subscribe(reason => {
this.closeRequested(reason);
});
}
/**
* The method to run when the component is destroyed.
*/
ngOnDestroy() {
this.dialogService.unregister(this.id);
// the close subscription is created in ngAfterViewInit, if the component is destroyed before that
// then the subscription will not exist and causing an error.
this.closeSubscription?.unsubscribe();
}
/**
* handler for when a close is requested
* by default this closes the dialog with no result.
* override this function to prevent this behavior
* @param reason - reason for the close following DialogCloseReason
*/
closeRequested(reason) {
this.hide();
}
/**
* Shows the dialog.
*
* @param options The options for the dialog.
* @return The dialog result subject.
*/
show(options) {
this.dialog.show();
this.dialogResult = new Subject();
this.dialogService.emitDialogChangeEvent(this.id, DialogChangeEvent.Show);
return this.dialogResult;
}
/**
* Sets the level of the dialogso it overlays on top of anything else
* This is set by the dialog service when a dialog opens another dialog
* @param level The level of the dialog so it shows up on top of other items. this should be a number greater than 0
*/
setLevel(level) {
this.level = level;
}
/**
* refocuses the keyboard on the dialog
*/
autoFocus() {
this.dialog.autoFocus();
}
/**
* Hides the dialog.
*
* @param result The result of the dialog action.
*/
hide(result) {
this.dialog.hide();
this.dialogResult.next(result);
this.dialogResult.complete();
this.dialogService.resumeFocus(this.id);
this.dialogService.emitDialogChangeEvent(this.id, DialogChangeEvent.Hide);
}
/**
* Handles clicking on background
*/
onBackgroundClicked() {
if (this.dialog.clickBackdrop) {
this.dialog.onBackgroundClicked();
}
}
}
/** @nocollapse */ BaseDialogComponent.ɵfac = function BaseDialogComponent_Factory(t) { return new (t || BaseDialogComponent)(i0.ɵɵdirectiveInject(i1.DialogService)); };
/** @nocollapse */ BaseDialogComponent.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: BaseDialogComponent, viewQuery: function BaseDialogComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(_c0, 5);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dialog = _t.first);
} }, inputs: { id: "id" } });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseDialogComponent, [{
type: Directive
}], function () { return [{ type: i1.DialogService }]; }, { id: [{
type: Input
}], dialog: [{
type: ViewChild,
args: ['dialog']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZGlhbG9nL2Jhc2UtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQXFCLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQWdCcEU7O0dBRUc7QUFFSCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLG1CQUFtQjtJQTBCNUI7O09BRUc7SUFDSCxZQUFzQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXBCbEQ7OztXQUdHO1FBQ0ksYUFBUSxHQUFHLEtBQUssQ0FBQztRQVdoQixrQkFBYSxHQUFHLENBQUMsQ0FBQztJQU0xQixDQUFDO0lBYkQsSUFBWSxLQUFLLENBQUMsS0FBYTtRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBVUQ7O09BRUc7SUFDSCxxRUFBcUU7SUFDOUQsUUFBUTtRQUNYLFdBQVc7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDdEU7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLGtHQUFrRztRQUNsRyw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxNQUF5QjtRQUMzQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksSUFBSSxDQUFDLE9BQWlCO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxNQUFnQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDckM7SUFDTCxDQUFDOzt5R0FqSVEsbUJBQW1CO3FHQUFuQixtQkFBbUI7Ozs7Ozt1RkFBbkIsbUJBQW1CO2NBRi9CLFNBQVM7Z0VBSUMsRUFBRTtrQkFEUixLQUFLO1lBSUMsTUFBTTtrQkFEWixTQUFTO21CQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dDbG9zZVJlYXNvbiwgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nQ2hhbmdlRXZlbnQsIERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBUaGUgZGVmYXVsdCBkaWFsb2cgb3B0aW9ucy5cclxuICovXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nT3B0aW9ucyB7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaGUgZGVmYXVsdCBkaWFsb2cgcmVzdWx0LlxyXG4gKi9cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2VcclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZXN1bHQge1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIGJhc2UgZGlhbG9nIGNvbXBvbmVudCBmb3IgZXh0ZW5kaW5nLlxyXG4gKi9cclxuQERpcmVjdGl2ZSgpXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQmFzZURpYWxvZ0NvbXBvbmVudDxUT3B0aW9ucyBleHRlbmRzIERpYWxvZ09wdGlvbnMsIFRSZXN1bHQgZXh0ZW5kcyBEaWFsb2dSZXN1bHQ+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZycpXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBEaWFsb2dDb21wb25lbnQ7XHJcblxyXG4gICAgcHVibGljIGRpYWxvZ1Jlc3VsdDogU3ViamVjdDxUUmVzdWx0PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEtlZXBzIHRoZSBkaWFsb2cgb3BlbiB3aGVuIGFub3RoZXIgZGlhbG9nIHBvcHMgdXBcclxuICAgICAqIGJ5IGRlZmF1bHQgdGhlIGRpYWxvZyB3aWxsIGJlIGNsb3NlZCBpZiBhbm90aGVyIGRpYWxvZyBvcGVucyB3aGlsZSB0aGlzIGRpYWxvZyBpcyB2aXNpYmxlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBrZWVwT3BlbiA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgY2xvc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBwcml2YXRlIHNldCBsZXZlbCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nLmRpYWxvZ0xldmVsID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxMZXZlbCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW50ZXJuYWxMZXZlbCA9IDE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgQmFzZURpYWxvZ0NvbXBvbmVudCBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgdG8gcnVuIHdoZW4gdGhlIGNvbXBvbmVudCBpbml0aWFsaXplZC5cclxuICAgICAqL1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1lbXB0eS1saWZlY3ljbGUtbWV0aG9kXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgLyogZW1wdHkgKi9cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgdG8gcnVuIGFmdGVyIHRoZSBjb21wb25lbnQgdmlldyBpbml0aWFsaXplZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5kaWFsb2cpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCYXNlRGlhbG9nQ29tcG9uZW50Lm5nT25Jbml0OiBEaWFsb2cgaXMgbm90IGRlZmluZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jhc2VEaWFsb2dDb21wb25lbnQubmdPbkluaXQ6IElEIGlzIG5vdCBkZWZpbmVkJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxldmVsID0gdGhpcy5pbnRlcm5hbExldmVsO1xyXG5cclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UucmVnaXN0ZXIodGhpcy5pZCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5jbG9zZVN1YnNjcmlwdGlvbiA9IHRoaXMuZGlhbG9nLmNsb3NlUmVxdWVzdGVkLnN1YnNjcmliZShyZWFzb24gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlUmVxdWVzdGVkKHJlYXNvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWV0aG9kIHRvIHJ1biB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcy5pZCk7XHJcbiAgICAgICAgLy8gdGhlIGNsb3NlIHN1YnNjcmlwdGlvbiBpcyBjcmVhdGVkIGluIG5nQWZ0ZXJWaWV3SW5pdCwgaWYgdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQgYmVmb3JlIHRoYXRcclxuICAgICAgICAvLyB0aGVuIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBub3QgZXhpc3QgYW5kIGNhdXNpbmcgYW4gZXJyb3IuXHJcbiAgICAgICAgdGhpcy5jbG9zZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhhbmRsZXIgZm9yIHdoZW4gYSBjbG9zZSBpcyByZXF1ZXN0ZWRcclxuICAgICAqIGJ5IGRlZmF1bHQgdGhpcyBjbG9zZXMgdGhlIGRpYWxvZyB3aXRoIG5vIHJlc3VsdC5cclxuICAgICAqIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gcHJldmVudCB0aGlzIGJlaGF2aW9yXHJcbiAgICAgKiBAcGFyYW0gcmVhc29uIC0gcmVhc29uIGZvciB0aGUgY2xvc2UgZm9sbG93aW5nIERpYWxvZ0Nsb3NlUmVhc29uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjbG9zZVJlcXVlc3RlZChyZWFzb246IERpYWxvZ0Nsb3NlUmVhc29uKSB7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93cyB0aGUgZGlhbG9nLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgZGlhbG9nLlxyXG4gICAgICogQHJldHVybiBUaGUgZGlhbG9nIHJlc3VsdCBzdWJqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvdyhvcHRpb25zOiBUT3B0aW9ucyk6IFN1YmplY3Q8VFJlc3VsdD4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nLnNob3coKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1Jlc3VsdCA9IG5ldyBTdWJqZWN0PFRSZXN1bHQ+KCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVtaXREaWFsb2dDaGFuZ2VFdmVudCh0aGlzLmlkLCBEaWFsb2dDaGFuZ2VFdmVudC5TaG93KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSBsZXZlbCBvZiB0aGUgZGlhbG9nc28gaXQgb3ZlcmxheXMgb24gdG9wIG9mIGFueXRoaW5nIGVsc2VcclxuICAgICAqIFRoaXMgaXMgc2V0IGJ5IHRoZSBkaWFsb2cgc2VydmljZSB3aGVuIGEgZGlhbG9nIG9wZW5zIGFub3RoZXIgZGlhbG9nXHJcbiAgICAgKiBAcGFyYW0gbGV2ZWwgVGhlIGxldmVsIG9mIHRoZSBkaWFsb2cgc28gaXQgc2hvd3MgdXAgb24gdG9wIG9mIG90aGVyIGl0ZW1zLiB0aGlzIHNob3VsZCBiZSBhIG51bWJlciBncmVhdGVyIHRoYW4gMFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TGV2ZWwobGV2ZWw6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSBsZXZlbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlZm9jdXNlcyB0aGUga2V5Ym9hcmQgb24gdGhlIGRpYWxvZ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b0ZvY3VzKCkge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nLmF1dG9Gb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZXMgdGhlIGRpYWxvZy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVzdWx0IFRoZSByZXN1bHQgb2YgdGhlIGRpYWxvZyBhY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRlKHJlc3VsdD86IFRSZXN1bHQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpYWxvZy5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZXN1bHQubmV4dChyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVzdWx0LmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnJlc3VtZUZvY3VzKHRoaXMuaWQpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lbWl0RGlhbG9nQ2hhbmdlRXZlbnQodGhpcy5pZCwgRGlhbG9nQ2hhbmdlRXZlbnQuSGlkZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGNsaWNraW5nIG9uIGJhY2tncm91bmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9uQmFja2dyb3VuZENsaWNrZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nLmNsaWNrQmFja2Ryb3ApIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2cub25CYWNrZ3JvdW5kQ2xpY2tlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=