com.phloxui
Version:
PhloxUI Ng2+ Framework
207 lines (206 loc) • 19.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Output, ViewContainerRef, Type, EventEmitter, ComponentFactoryResolver } from '@angular/core';
import { AbstractDataViewWrapper } from '../dataview/AbstractDataViewWrapper';
import { DATA_CHANGE_EVENT } from '../../share/CustomEventType';
var /** @type {?} */ TYPE_NAME = "phx-record-data-view-wrapper";
var RecordDataViewWrapper = /** @class */ (function (_super) {
tslib_1.__extends(RecordDataViewWrapper, _super);
function RecordDataViewWrapper(target, componentFactoryResolver) {
return _super.call(this, target, componentFactoryResolver) || this;
}
/**
* @return {?}
*/
RecordDataViewWrapper.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @param {?} key
* @param {?} dataObj
* @return {?}
*/
RecordDataViewWrapper.prototype.parseValue = /**
* @param {?} key
* @param {?} dataObj
* @return {?}
*/
function (key, dataObj) {
if (key == null || dataObj == null) {
return null;
}
var /** @type {?} */ result = null;
if (key.indexOf(".") > 0) {
var /** @type {?} */ splitKeys = key.split(".");
if (splitKeys.length > 0) {
var /** @type {?} */ firstKey = splitKeys[0];
var /** @type {?} */ firstValue = dataObj[firstKey];
if (firstValue != null && typeof firstValue !== 'undefined') {
if (typeof firstValue === 'object') {
if (splitKeys.length > 1) {
var /** @type {?} */ secondKey = key.substring(key.indexOf(".") + 1, key.length);
return this.parseValue(secondKey, firstValue); // recursive beware looping
}
}
}
}
}
else {
result = dataObj[key];
}
if (result != null && typeof result !== 'undefined') {
return result;
}
return null;
};
/**
* @param {?} key
* @param {?} dataObj
* @param {?} value
* @return {?}
*/
RecordDataViewWrapper.prototype.editDataObjectValue = /**
* @param {?} key
* @param {?} dataObj
* @param {?} value
* @return {?}
*/
function (key, dataObj, value) {
if (key == null || dataObj == null || value == null) {
return;
}
if (key.indexOf(".") > 0) {
var /** @type {?} */ splitKeys = key.split(".");
if (splitKeys.length > 0) {
var /** @type {?} */ firstKey = splitKeys[0];
var /** @type {?} */ firstValue = dataObj[firstKey];
if (firstValue != null && typeof firstValue !== 'undefined') {
if (typeof firstValue === 'object') {
if (splitKeys.length > 1) {
var /** @type {?} */ secondKey = key.substring(key.indexOf(".") + 1, key.length);
this.editDataObjectValue(secondKey, firstValue, value); // recursive beware looping
}
}
}
}
}
else {
dataObj[key] = value;
}
};
/**
* @return {?}
*/
RecordDataViewWrapper.prototype.render = /**
* @return {?}
*/
function () {
var _this = this;
if (this.componentType != null && (typeof this.componentType !== 'undefined')) {
var /** @type {?} */ simpleCompoFactory = this.componentFactoryResolver.resolveComponentFactory(this.componentType);
var /** @type {?} */ compRef = this.target.createComponent(simpleCompoFactory);
if (typeof compRef.instance.setData === 'function') {
compRef.instance.setData(this.data);
}
if (typeof compRef.instance.setField === 'function') {
compRef.instance.setField(this.fieldValue);
}
if (typeof compRef.instance.setOptions === 'function') {
compRef.instance.setOptions(this.options);
}
var /** @type {?} */ compHandler = null;
if (typeof compRef.instance.getEventHandler === 'function') {
compHandler = compRef.instance.getEventHandler();
}
if (compHandler !== null && typeof compHandler !== 'undefined') {
compHandler.subscribe(function (event) {
if (event.type == DATA_CHANGE_EVENT) {
// update data row
if (_this.editorHandler != null) {
_this.editorHandler.onDataChange(event.detail.data);
}
else {
_this.editDataObjectValue(_this.fieldValue, _this.data, event.detail.data);
}
}
_this.eventHandler.emit(event);
});
}
}
};
/**
* @return {?}
*/
RecordDataViewWrapper.prototype.getEventHandler = /**
* @return {?}
*/
function () {
return this.eventHandler;
};
/**
* @param {?} event
* @return {?}
*/
RecordDataViewWrapper.prototype.setEventHandler = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.eventHandler = event;
};
RecordDataViewWrapper.TYPE_NAME = TYPE_NAME;
RecordDataViewWrapper.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: ""
},] },
];
/** @nocollapse */
RecordDataViewWrapper.ctorParameters = function () { return [
{ type: ViewContainerRef, },
{ type: ComponentFactoryResolver, },
]; };
RecordDataViewWrapper.propDecorators = {
"componentType": [{ type: Input },],
"data": [{ type: Input },],
"eventHandler": [{ type: Output },],
"fieldValue": [{ type: Input },],
"options": [{ type: Input },],
"editorHandler": [{ type: Input },],
};
return RecordDataViewWrapper;
}(AbstractDataViewWrapper));
export { RecordDataViewWrapper };
function RecordDataViewWrapper_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
RecordDataViewWrapper.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
RecordDataViewWrapper.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
RecordDataViewWrapper.propDecorators;
/** @type {?} */
RecordDataViewWrapper.TYPE_NAME;
/** @type {?} */
RecordDataViewWrapper.prototype.componentType;
/** @type {?} */
RecordDataViewWrapper.prototype.data;
/** @type {?} */
RecordDataViewWrapper.prototype.eventHandler;
/** @type {?} */
RecordDataViewWrapper.prototype.fieldValue;
/** @type {?} */
RecordDataViewWrapper.prototype.options;
/** @type {?} */
RecordDataViewWrapper.prototype.editorHandler;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkRGF0YVZpZXdXcmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9lZGl0b3IvUmVjb3JkRGF0YVZpZXdXcmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSWhFLHFCQUFNLFNBQVMsR0FBVyw4QkFBOEIsQ0FBQzs7SUFPZCxpREFBdUI7SUFpQmhFLCtCQUFZLE1BQXdCLEVBQUUsd0JBQWtEO2VBQ3RGLGtCQUFNLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQztLQUN4Qzs7OztJQUVNLHdDQUFROzs7O1FBQ2IsaUJBQU0sUUFBUSxXQUFFLENBQUM7Ozs7Ozs7SUFHWCwwQ0FBVTs7Ozs7Y0FBQyxHQUFXLEVBQUUsT0FBWTtRQUMxQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDYjtRQUVELHFCQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbEIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLHFCQUFJLFNBQVMsR0FBYSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFD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SSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUMvQixLQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUNwRDt3QkFBQyxJQUFJLENBQUMsQ0FBQzs0QkFDTixLQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSSxDQUFDLFVBQVUsRUFBRSxLQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ3pFO3FCQUNGO29CQUVELEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUMvQixDQUFDLENBQUM7YUFDSjtTQUVGOzs7OztJQUdJLCtDQUFlOzs7O1FBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDOzs7Ozs7SUFHcEIsK0NBQWU7Ozs7Y0FBQyxLQUFVO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDOztzQ0E5SGUsU0FBUzs7Z0JBUHJELFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ25CLFFBQVEsRUFBRSxTQUFTO29CQUNuQixRQUFRLEVBQUUsRUFBRTtpQkFDYjs7OztnQkFiMEMsZ0JBQWdCO2dCQUFzQix3QkFBd0I7OztrQ0FrQnRHLEtBQUs7eUJBRUwsS0FBSztpQ0FFTCxNQUFNOytCQUVOLEtBQUs7NEJBRUwsS0FBSztrQ0FFTCxLQUFLOztnQ0E1QlI7RUFjMkMsdUJBQXVCO1NBQXJELHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q29udGFpbmVyUmVmLCBUeXBlLCBFdmVudEVtaXR0ZXIsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhVmlld1dyYXBwZXIgfSBmcm9tICcuLi9kYXRhdmlldy9BYnN0cmFjdERhdGFWaWV3V3JhcHBlcic7XG5pbXBvcnQgeyBJRWRpdG9ySGFuZGxlciB9IGZyb20gJy4vSUVkaXRvckhhbmRsZXInO1xuaW1wb3J0IHsgREFUQV9DSEFOR0VfRVZFTlQgfSBmcm9tICcuLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtcmVjb3JkLWRhdGEtdmlldy13cmFwcGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgY2xhc3MgUmVjb3JkRGF0YVZpZXdXcmFwcGVyIGV4dGVuZHMgQWJzdHJhY3REYXRhVmlld1dyYXBwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGRhdGE6IGFueTtcbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZmllbGRWYWx1ZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb3B0aW9uczogYW55O1xuICBASW5wdXQoKVxuICBwcml2YXRlIGVkaXRvckhhbmRsZXI6IElFZGl0b3JIYW5kbGVyO1xuXG4gIGNvbnN0cnVjdG9yKHRhcmdldDogVmlld0NvbnRhaW5lclJlZiwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgICBzdXBlcih0YXJnZXQsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VWYWx1ZShrZXk6IHN0cmluZywgZGF0YU9iajogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoa2V5ID09IG51bGwgfHwgZGF0YU9iaiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgIGlmIChrZXkuaW5kZXhPZihcIi5cIikgPiAwKSB7XG4gICAgICBsZXQgc3BsaXRLZXlzOiBzdHJpbmdbXSA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICBpZiAoc3BsaXRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZpcnN0S2V5OiBzdHJpbmcgPSBzcGxpdEtleXNbMF07XG4gICAgICAgIGxldCBmaXJzdFZhbHVlOiBhbnkgPSBkYXRhT2JqW2ZpcnN0S2V5XTtcblxuICAgICAgICBpZiAoZmlyc3RWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBmaXJzdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGlmICh0eXBlb2YgZmlyc3RWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChzcGxpdEtleXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBsZXQgc2Vjb25kS2V5OiBzdHJpbmcgPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKFwiLlwiKSArIDEsIGtleS5sZW5ndGgpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlVmFsdWUoc2Vjb25kS2V5LCBmaXJzdFZhbHVlKTsgLy8gcmVjdXJzaXZlIGJld2FyZSBsb29waW5nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGRhdGFPYmpba2V5XTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ICE9IG51bGwgJiYgdHlwZW9mIHJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGVkaXREYXRhT2JqZWN0VmFsdWUoa2V5OiBzdHJpbmcsIGRhdGFPYmo6IGFueSwgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmIChrZXkgPT0gbnVsbCB8fCBkYXRhT2JqID09IG51bGwgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrZXkuaW5kZXhPZihcIi5cIikgPiAwKSB7XG4gICAgICBsZXQgc3BsaXRLZXlzOiBzdHJpbmdbXSA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICBpZiAoc3BsaXRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZpcnN0S2V5OiBzdHJpbmcgPSBzcGxpdEtleXNbMF07XG4gICAgICAgIGxldCBmaXJzdFZhbHVlOiBhbnkgPSBkYXRhT2JqW2ZpcnN0S2V5XTtcblxuICAgICAgICBpZiAoZmlyc3RWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBmaXJzdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGlmICh0eXBlb2YgZmlyc3RWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChzcGxpdEtleXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBsZXQgc2Vjb25kS2V5OiBzdHJpbmcgPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKFwiLlwiKSArIDEsIGtleS5sZW5ndGgpO1xuXG4gICAgICAgICAgICAgIHRoaXMuZWRpdERhdGFPYmplY3RWYWx1ZShzZWNvbmRLZXksIGZpcnN0VmFsdWUsIHZhbHVlKTsgLy8gcmVjdXJzaXZlIGJld2FyZSBsb29waW5nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFPYmpba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50VHlwZSAhPSBudWxsICYmICh0eXBlb2YgdGhpcy5jb21wb25lbnRUeXBlICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgIGNvbnN0IHNpbXBsZUNvbXBvRmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY29tcG9uZW50VHlwZSk7XG4gICAgICBsZXQgY29tcFJlZiA9IHRoaXMudGFyZ2V0LmNyZWF0ZUNvbXBvbmVudChzaW1wbGVDb21wb0ZhY3RvcnkpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBSZWYuaW5zdGFuY2Uuc2V0RGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLnNldERhdGEodGhpcy5kYXRhKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY29tcFJlZi5pbnN0YW5jZS5zZXRGaWVsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLnNldEZpZWxkKHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGNvbXBSZWYuaW5zdGFuY2Uuc2V0T3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb21wUmVmLmluc3RhbmNlLnNldE9wdGlvbnModGhpcy5vcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNvbXBIYW5kbGVyID0gbnVsbDtcbiAgICAgIGlmICh0eXBlb2YgY29tcFJlZi5pbnN0YW5jZS5nZXRFdmVudEhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29tcEhhbmRsZXIgPSBjb21wUmVmLmluc3RhbmNlLmdldEV2ZW50SGFuZGxlcigpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tcEhhbmRsZXIgIT09IG51bGwgJiYgdHlwZW9mIGNvbXBIYW5kbGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb21wSGFuZGxlci5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PSBEQVRBX0NIQU5HRV9FVkVOVCkge1xuICAgICAgICAgICAgLy8gdXBkYXRlIGRhdGEgcm93XG4gICAgICAgICAgICBpZiAodGhpcy5lZGl0b3JIYW5kbGVyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgdGhpcy5lZGl0b3JIYW5kbGVyLm9uRGF0YUNoYW5nZShldmVudC5kZXRhaWwuZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmVkaXREYXRhT2JqZWN0VmFsdWUodGhpcy5maWVsZFZhbHVlLCB0aGlzLmRhdGEsIGV2ZW50LmRldGFpbC5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmV2ZW50SGFuZGxlci5lbWl0KGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0RXZlbnRIYW5kbGVyKCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudEhhbmRsZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0RXZlbnRIYW5kbGVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmV2ZW50SGFuZGxlciA9IGV2ZW50O1xuICB9XG5cbn1cbiJdfQ==