@kre-form/ant
Version:
153 lines • 18.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component } from "@angular/core";
import { FieldType } from "@kre-form/core";
import * as _ from "lodash";
import { KreFormAntService } from "../tools/service";
import { NzModalService } from "ng-zorro-antd/modal";
import { KreDialogService } from "../service/dialog.service";
import { KreFormTree } from "../components/tree/index.component";
import { KreFormEmployee } from "../components/employee/index.component";
import { KreFormOrg } from "../components/org/index.component";
import { KreFormPostion } from "../components/postion/index.component";
import { KreFormArea } from "../components/area/index.component";
var KreFormFieldLookUp = /** @class */ (function (_super) {
tslib_1.__extends(KreFormFieldLookUp, _super);
function KreFormFieldLookUp(dyService, modal, kreDialogService) {
var _this = _super.call(this) || this;
_this.modal = modal;
_this.kreDialogService = kreDialogService;
_this.service = dyService;
return _this;
}
/**
* @param {?} sign
* @return {?}
*/
KreFormFieldLookUp.prototype.fieldOperational = /**
* @param {?} sign
* @return {?}
*/
function (sign) {
this.service.fieldOperational(sign, this.field);
};
/**
* @return {?}
*/
KreFormFieldLookUp.prototype.lookup = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var template;
/** @type {?} */
var type = _.get(this.field, "templateOptions.type");
/** @type {?} */
var para = {
fieldConfig: this.field,
tag: false,
};
switch (type) {
case "tree":
template = KreFormTree;
para.tag = true;
break;
break;
case "employee":
template = KreFormEmployee;
break;
case "organizational":
template = KreFormOrg;
para.tag = true;
break;
case "position":
template = KreFormPostion;
break;
case "area":
template = KreFormArea;
break;
default:
break;
}
if (template) {
this.kreDialogService.CreateModelDialog({
nzTitle: "选择 - " + this.to["label"],
size: "large",
nzContent: template,
}, para, (/**
* @param {?} instance
* @param {?} modal
* @return {?}
*/
function (instance, modal) {
/** @type {?} */
var res = instance.selectedNode;
if (_this.model != undefined &&
_this.model != null &&
_this.key != undefined &&
_this.key != null) {
if (res != null && res.length > 0) {
_this.model[_this.key] = res;
_this.formControl.markAsTouched();
}
else {
_this.model[_this.key] = [];
_this.formControl.markAsTouched();
}
}
else {
_this.model[_this.key] = res;
_this.formControl.markAsTouched();
}
modal.destroy();
}));
}
};
/**
* @return {?}
*/
KreFormFieldLookUp.prototype.removeValue = /**
* @return {?}
*/
function () {
if (this.model != undefined &&
this.model != null &&
this.key != undefined &&
this.key != null &&
this.model[this.key] != undefined &&
this.model[this.key] != null) {
this.model[this.key] = [];
this.formControl.markAsTouched();
}
};
KreFormFieldLookUp.decorators = [
{ type: Component, args: [{
selector: "krefield-lookup",
template: "\n <ng-container *ngIf=\"formStatus !== 0\">\n <div class=\"fieldOperational\">\n <div class=\"fieldcheckbox\">\n <label\n *ngIf=\"isCheckboxShow == true\"\n nz-checkbox\n [(ngModel)]=\"field.checked\"\n ></label>\n </div>\n <div class=\"fieldControl\">\n <div class=\"label\">\n <span *ngIf=\"to.required\">*</span>{{ to.label }}\n </div>\n <div class=\"control\">\n <input nz-input disabled />\n </div>\n <kreform-fieldbutton\n *ngIf=\"isCheckboxShow == true\"\n [field]=\"field\"\n (buttonClick)=\"fieldOperational($event)\"\n ></kreform-fieldbutton>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"formStatus === 0\">\n <ng-container *ngIf=\"editor === true\">\n <nz-input-group [nzSuffix]=\"suffixTemplate\">\n <input\n nz-input\n [class.is-invalid]=\"showError\"\n [placeholder]=\"placeHolder\"\n [value]=\"textLookUp\"\n readonly=\"true\"\n />\n </nz-input-group>\n <!-- <div class=\"tips\">\n <i\n class=\"icon-bangzhu\"\n [nzTooltipTitle]=\"tips\"\n nzTooltipPlacement=\"top\"\n nz-tooltip\n *ngIf=\"tips != ''\"\n ></i>\n </div> -->\n\n <nz-input-group [nzSuffix]=\"suffixTemplate\" style=\"display:none;\">\n <input\n nz-input\n [formControl]=\"formControl\"\n [kreFormAttributes]=\"field\"\n [class.is-invalid]=\"showError\"\n readonly=\"true\"\n /></nz-input-group>\n </ng-container>\n\n <div class=\"fieldtext\" *ngIf=\"editor === false\">{{ textLookUp }}</div>\n </ng-container>\n <ng-template #suffixTemplate>\n <i (click)=\"lookup()\" class=\"icon-tianjin\"></i>\n <!--<i\n nz-icon\n nzType=\"close\"\n nzTheme=\"outline\"\n (click)=\"removeValue()\"\n *ngIf=\"textLookUp != null && textLookUp != ''\"\n ></i>-->\n </ng-template>\n "
}] }
];
/** @nocollapse */
KreFormFieldLookUp.ctorParameters = function () { return [
{ type: KreFormAntService },
{ type: NzModalService },
{ type: KreDialogService }
]; };
return KreFormFieldLookUp;
}(FieldType));
export { KreFormFieldLookUp };
if (false) {
/** @type {?} */
KreFormFieldLookUp.prototype.service;
/**
* @type {?}
* @private
*/
KreFormFieldLookUp.prototype.modal;
/** @type {?} */
KreFormFieldLookUp.prototype.kreDialogService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy9sb29rdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVqRTtJQXlFd0MsOENBQVM7SUFHL0MsNEJBQ0UsU0FBNEIsRUFDcEIsS0FBcUIsRUFDdEIsZ0JBQWtDO1FBSDNDLFlBS0UsaUJBQU8sU0FFUjtRQUxTLFdBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3RCLHNCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFHekMsS0FBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7O0lBQzNCLENBQUM7Ozs7O0lBRUQsNkNBQWdCOzs7O0lBQWhCLFVBQWlCLElBQVk7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xE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RSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQzs7Z0JBdktGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsdXBFQXFFVDtpQkFDRjs7OztnQkFsRlEsaUJBQWlCO2dCQUNqQixjQUFjO2dCQUNkLGdCQUFnQjs7SUFnTHpCLHlCQUFDO0NBQUEsQUF4S0QsQ0F5RXdDLFNBQVMsR0ErRmhEO1NBL0ZZLGtCQUFrQjs7O0lBQzdCLHFDQUFhOzs7OztJQUlYLG1DQUE2Qjs7SUFDN0IsOENBQXlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCJAa3JlLWZvcm0vY29yZVwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBLcmVGb3JtQW50U2VydmljZSB9IGZyb20gXCIuLi90b29scy9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOek1vZGFsU2VydmljZSB9IGZyb20gXCJuZy16b3Jyby1hbnRkL21vZGFsXCI7XG5pbXBvcnQgeyBLcmVEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2VcIjtcblxuaW1wb3J0IHsgS3JlRm9ybVRyZWUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy90cmVlL2luZGV4LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgS3JlRm9ybUVtcGxveWVlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZW1wbG95ZWUvaW5kZXguY29tcG9uZW50XCI7XG5pbXBvcnQgeyBLcmVGb3JtT3JnIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvb3JnL2luZGV4LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgS3JlRm9ybVBvc3Rpb24gfSBmcm9tIFwiLi4vY29tcG9uZW50cy9wb3N0aW9uL2luZGV4LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgS3JlRm9ybUFyZWEgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9hcmVhL2luZGV4LmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3JlZmllbGQtbG9va3VwXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1TdGF0dXMgIT09IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZE9wZXJhdGlvbmFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZGNoZWNrYm94XCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAqbmdJZj1cImlzQ2hlY2tib3hTaG93ID09IHRydWVcIlxuICAgICAgICAgICAgbnotY2hlY2tib3hcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuY2hlY2tlZFwiXG4gICAgICAgICAgPjwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRDb250cm9sXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRvLnJlcXVpcmVkXCI+Kjwvc3Bhbj57eyB0by5sYWJlbCB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgICA8aW5wdXQgbnotaW5wdXQgZGlzYWJsZWQgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8a3JlZm9ybS1maWVsZGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJpc0NoZWNrYm94U2hvdyA9PSB0cnVlXCJcbiAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiZmllbGRPcGVyYXRpb25hbCgkZXZlbnQpXCJcbiAgICAgICAgICA+PC9rcmVmb3JtLWZpZWxkYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1TdGF0dXMgPT09IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0b3IgPT09IHRydWVcIj5cbiAgICAgICAgPG56LWlucHV0LWdyb3VwIFtuelN1ZmZpeF09XCJzdWZmaXhUZW1wbGF0ZVwiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbnotaW5wdXRcbiAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cInNob3dFcnJvclwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInRleHRMb29rVXBcIlxuICAgICAgICAgICAgcmVhZG9ubHk9XCJ0cnVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L256LWlucHV0LWdyb3VwPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0aXBzXCI+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1iYW5nemh1XCJcbiAgICAgICAgICAgIFtuelRvb2x0aXBUaXRsZV09XCJ0aXBzXCJcbiAgICAgICAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICBuei10b29sdGlwXG4gICAgICAgICAgICAqbmdJZj1cInRpcHMgIT0gJydcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICA8bnotaW5wdXQtZ3JvdXAgW256U3VmZml4XT1cInN1ZmZpeFRlbXBsYXRlXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBuei1pbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtrcmVGb3JtQXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJzaG93RXJyb3JcIlxuICAgICAgICAgICAgcmVhZG9ubHk9XCJ0cnVlXCJcbiAgICAgICAgLz48L256LWlucHV0LWdyb3VwPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZHRleHRcIiAqbmdJZj1cImVkaXRvciA9PT0gZmFsc2VcIj57eyB0ZXh0TG9va1VwIH19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNzdWZmaXhUZW1wbGF0ZT5cbiAgICAgIDxpIChjbGljayk9XCJsb29rdXAoKVwiIGNsYXNzPVwiaWNvbi10aWFuamluXCI+PC9pPlxuICAgICAgPCEtLTxpXG4gICAgICAgIG56LWljb25cbiAgICAgICAgbnpUeXBlPVwiY2xvc2VcIlxuICAgICAgICBuelRoZW1lPVwib3V0bGluZVwiXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVWYWx1ZSgpXCJcbiAgICAgICAgKm5nSWY9XCJ0ZXh0TG9va1VwICE9IG51bGwgJiYgdGV4dExvb2tVcCAhPSAnJ1wiXG4gICAgICA+PC9pPi0tPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEtyZUZvcm1GaWVsZExvb2tVcCBleHRlbmRzIEZpZWxkVHlwZSB7XG4gIHNlcnZpY2U6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkeVNlcnZpY2U6IEtyZUZvcm1BbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE56TW9kYWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBrcmVEaWFsb2dTZXJ2aWNlOiBLcmVEaWFsb2dTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZXJ2aWNlID0gZHlTZXJ2aWNlO1xuICB9XG5cbiAgZmllbGRPcGVyYXRpb25hbChzaWduOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlcnZpY2UuZmllbGRPcGVyYXRpb25hbChzaWduLCB0aGlzLmZpZWxkKTtcbiAgfVxuXG4gIGxvb2t1cCgpIHtcbiAgICBsZXQgdGVtcGxhdGU6IGFueTtcbiAgICBsZXQgdHlwZSA9IF8uZ2V0KHRoaXMuZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnR5cGVcIik7XG4gICAgbGV0IHBhcmEgPSB7XG4gICAgICBmaWVsZENvbmZpZzogdGhpcy5maWVsZCxcbiAgICAgIHRhZzogZmFsc2UsXG4gICAgfTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJ0cmVlXCI6XG4gICAgICAgIHRlbXBsYXRlID0gS3JlRm9ybVRyZWU7XG4gICAgICAgIHBhcmEudGFnID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImVtcGxveWVlXCI6XG4gICAgICAgIHRlbXBsYXRlID0gS3JlRm9ybUVtcGxveWVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJvcmdhbml6YXRpb25hbFwiOlxuICAgICAgICB0ZW1wbGF0ZSA9IEtyZUZvcm1Pcmc7XG4gICAgICAgIHBhcmEudGFnID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicG9zaXRpb25cIjpcbiAgICAgICAgdGVtcGxhdGUgPSBLcmVGb3JtUG9zdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYXJlYVwiOlxuICAgICAgICB0ZW1wbGF0ZSA9IEtyZUZvcm1BcmVhO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIHRoaXMua3JlRGlhbG9nU2VydmljZS5DcmVhdGVNb2RlbERpYWxvZyhcbiAgICAgICAge1xuICAgICAgICAgIG56VGl0bGU6IFwi6YCJ5oupIC0gXCIgKyB0aGlzLnRvW1wibGFiZWxcIl0sXG4gICAgICAgICAgc2l6ZTogXCJsYXJnZVwiLFxuICAgICAgICAgIG56Q29udGVudDogdGVtcGxhdGUsXG4gICAgICAgIH0sXG4gICAgICAgIHBhcmEsXG4gICAgICAgIChpbnN0YW5jZTogYW55LCBtb2RhbDogYW55KSA9PiB7XG4gICAgICAgICAgbGV0IHJlczogYW55ID0gaW5zdGFuY2Uuc2VsZWN0ZWROb2RlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMubW9kZWwgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0aGlzLm1vZGVsICE9IG51bGwgJiZcbiAgICAgICAgICAgIHRoaXMua2V5ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdGhpcy5rZXkgIT0gbnVsbFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldID0gcmVzO1xuXG4gICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0gPSBbXTtcblxuICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0gPSByZXM7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtb2RhbC5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVmFsdWUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tb2RlbCAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMubW9kZWwgIT0gbnVsbCAmJlxuICAgICAgdGhpcy5rZXkgIT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLmtleSAhPSBudWxsICYmXG4gICAgICB0aGlzLm1vZGVsW3RoaXMua2V5XSAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldICE9IG51bGxcbiAgICApIHtcbiAgICAgIHRoaXMubW9kZWxbdGhpcy5rZXldID0gW107XG5cbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxufVxuIl19