@kre-form/ant
Version:
216 lines (214 loc) • 18.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewChild, HostListener } from "@angular/core";
import { CdkOverlayOrigin } from "@angular/cdk/overlay";
import { FieldType } from "@kre-form/core";
import { ActivatedRoute } from "@angular/router";
export class KreFormFieldTextI18n extends FieldType {
/**
* @param {?} route
*/
constructor(route) {
super();
this.route = route;
this.triggerWidth = "260px";
this.languageList = [
{ languageType: "zh-cn", label: "中", resValue: null },
{ languageType: "en", label: "英", resValue: null },
];
}
/**
* @param {?} event
* @return {?}
*/
resize(event) {
this.visibleChange(event);
}
/**
* @return {?}
*/
ngOnInit() {
if (!!this.route.snapshot.queryParams["lang"] &&
((/** @type {?} */ (this.route.snapshot.queryParams["lang"]))).toLocaleLowerCase() === "en") {
this.languageList = [
{ languageType: "zh-cn", label: "中", resValue: null },
{ languageType: "en", label: "EN", resValue: null },
];
}
}
/**
* @return {?}
*/
get language() {
if (this.model != undefined &&
this.model != null &&
this.key != undefined &&
this.key != null &&
this.model.hasOwnProperty(this.key)) {
if (this.formControl.value != undefined &&
this.formControl.value != null &&
this.formControl.value != [] &&
this.formControl.value.length > 0) {
if (this.formControl.value != this.languageList) {
this.languageList = this.formControl.value;
}
}
}
return this.languageList;
}
/**
* @param {?} value
* @return {?}
*/
onChange(value) {
if (this.to.required) {
/** @type {?} */
let empty = this.languageList.some((/**
* @param {?} item
* @return {?}
*/
(item) => {
return ((item.resValue === null ||
item.resValue === "" ||
item.resValue === " ") &&
item.languageType === "zh-cn");
}));
if (empty) {
this.formControl.setValue([]);
}
else {
this.formControl.setValue(this.languageList);
}
}
else {
this.formControl.setValue(this.languageList);
}
this.formControl.markAsTouched();
}
/**
* @param {?} event
* @return {?}
*/
visibleChange(event) {
if (event) {
if (this.cdkOverlayOrigin !== undefined) {
this.triggerWidth =
this.cdkOverlayOrigin.elementRef.nativeElement.getBoundingClientRect()
.width -
0 +
"px";
}
}
}
/**
* @return {?}
*/
get langText() {
if (this.model != undefined &&
this.model != null &&
this.key != undefined &&
this.key != null &&
this.model[this.key] != undefined) {
/** @type {?} */
let lang = this.model[this.key];
if (lang != undefined &&
lang != null &&
lang != "" &&
lang instanceof Array &&
lang.length > 0) {
return lang[0]["resValue"];
}
return "";
}
return "";
}
}
KreFormFieldTextI18n.decorators = [
{ type: Component, args: [{
selector: "kreform-field-inputi18n",
template: `
<ng-container *ngIf="formStatus !== 0; else other">
<div class="control-design">
<input nz-input disabled />
</div>
</ng-container>
<ng-template #other>
<ng-container *ngIf="editor === true">
<div class="inputi18n">
<div class="inputi18n-text" cdkOverlayOrigin>
<input
nz-input
autocomplete="off"
[(ngModel)]="language[0].resValue"
[kreFormAttributes]="field"
(ngModelChange)="onChange(language[0].resValue)"
nz-popover
nzPopoverTrigger="click"
[nzPopoverContent]="contentTemplate"
nzOverlayClassName="inputi18n-template"
nzPopoverPlacement="bottom"
[nzOverlayStyle]="{ width: triggerWidth }"
(nzVisibleChange)="visibleChange($event)"
[maxLength]="to.maxLength || 200"
[minLength]="to.minLength || 0"
/>
<i nz-icon class="inputi18n-i" nzType="global"></i>
</div>
<!-- <div class="tips">
<i
class="icon-bangzhu"
[nzTooltipTitle]="tips"
nzTooltipPlacement="top"
nz-tooltip
*ngIf="tips != ''"
></i>
</div> -->
</div>
<ng-template #contentTemplate>
<ul>
<ng-container *ngFor="let item of language; let i = index">
<li *ngIf="i > 0">
<label>{{ item.label }}</label>
<input
nz-input
autocomplete="off"
[(ngModel)]="item.resValue"
[kreFormAttributes]="field"
(ngModelChange)="onChange(item.resValue)"
[maxLength]="to.maxLength || 200"
[minLength]="to.minLength || 0"
/>
</li>
</ng-container>
</ul>
</ng-template>
</ng-container>
<div class="fieldtext" *ngIf="editor === false">{{ langText }}</div>
</ng-template>
`
}] }
];
/** @nocollapse */
KreFormFieldTextI18n.ctorParameters = () => [
{ type: ActivatedRoute }
];
KreFormFieldTextI18n.propDecorators = {
cdkOverlayOrigin: [{ type: ViewChild, args: [CdkOverlayOrigin, { static: false },] }],
resize: [{ type: HostListener, args: ["window:resize", ["$event"],] }]
};
if (false) {
/** @type {?} */
KreFormFieldTextI18n.prototype.triggerWidth;
/** @type {?} */
KreFormFieldTextI18n.prototype.cdkOverlayOrigin;
/** @type {?} */
KreFormFieldTextI18n.prototype.languageList;
/**
* @type {?}
* @private
*/
KreFormFieldTextI18n.prototype.route;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGkxOG4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3JlLWZvcm0vYW50LyIsInNvdXJjZXMiOlsibGliL3R5cGVzL3RleHRpMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUF1QixnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFxRXpELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUFTOzs7O0lBQ2pELFlBQW9CLEtBQXFCO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBRFUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFJekMsaUJBQVksR0FBRyxPQUFPLENBQUM7UUFRdkIsaUJBQVksR0FBZTtZQUN6QixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3JELEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDbkQsQ0FBQztJQWJGLENBQUM7Ozs7O0lBT0QsTUFBTSxDQUFDLEtBQVU7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7SUFNRCxRQUFRO1FBQ04sSUFDRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUN6QyxDQUNFLG1CQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBVSxDQUNsRCxDQUFDLGlCQUFpQixFQUFFLEtBQUssSUFBSSxFQUM5QjtZQUNBLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ3JELEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7YUFDcEQsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7OztJQUVELElBQUksUUFBUTtRQUNWLElBQ0UsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtZQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLFNBQVM7WUFDckIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDbkM7WUFDQSxJQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLFNBQVM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUk7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2pDO2dCQUNBLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztpQkFDNUM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTs7Z0JBQ2hCLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7Ozs7WUFBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUMvQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUk7b0JBQ3JCLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUM5QixDQUFDO1lBQ0osQ0FBQyxFQUFDO1lBQ0YsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDL0I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7Ozs7SUFFRCxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFlBQVk7b0JBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUU7eUJBQ25FLEtBQUs7d0JBQ1IsQ0FBQzt3QkFDRCxJQUFJLENBQUM7YUFDUjtTQUNGO0lBQ0gsQ0FBQzs7OztJQUVELElBQUksUUFBUTtRQUNWLElBQ0UsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtZQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLFNBQVM7WUFDckIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsRUFDakM7O2dCQUNJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDL0IsSUFDRSxJQUFJLElBQUksU0FBUztnQkFDakIsSUFBSSxJQUFJLElBQUk7Z0JBQ1osSUFBSSxJQUFJLEVBQUU7Z0JBQ1YsSUFBSSxZQUFZLEtBQUs7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNmO2dCQUNBLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7O1lBN0tGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RFQ7YUFDRjs7OztZQXBFUSxjQUFjOzs7K0JBNEVwQixTQUFTLFNBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO3FCQUU3QyxZQUFZLFNBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDOzs7O0lBSnpDLDRDQUF1Qjs7SUFFdkIsZ0RBQytDOztJQUsvQyw0Q0FHRTs7Ozs7SUFmVSxxQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBrcmUtZm9ybS9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImtyZWZvcm0tZmllbGQtaW5wdXRpMThuXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1TdGF0dXMgIT09IDA7IGVsc2Ugb3RoZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sLWRlc2lnblwiPlxuICAgICAgICA8aW5wdXQgbnotaW5wdXQgZGlzYWJsZWQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNvdGhlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0b3IgPT09IHRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0aTE4blwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dGkxOG4tdGV4dFwiIGNka092ZXJsYXlPcmlnaW4+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbnotaW5wdXRcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsYW5ndWFnZVswXS5yZXNWYWx1ZVwiXG4gICAgICAgICAgICAgIFtrcmVGb3JtQXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKGxhbmd1YWdlWzBdLnJlc1ZhbHVlKVwiXG4gICAgICAgICAgICAgIG56LXBvcG92ZXJcbiAgICAgICAgICAgICAgbnpQb3BvdmVyVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICAgICAgW256UG9wb3ZlckNvbnRlbnRdPVwiY29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgbnpPdmVybGF5Q2xhc3NOYW1lPVwiaW5wdXRpMThuLXRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgbnpQb3BvdmVyUGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgW256T3ZlcmxheVN0eWxlXT1cInsgd2lkdGg6IHRyaWdnZXJXaWR0aCB9XCJcbiAgICAgICAgICAgICAgKG56VmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInRvLm1heExlbmd0aCB8fCAyMDBcIlxuICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInRvLm1pbkxlbmd0aCB8fCAwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aSBuei1pY29uIGNsYXNzPVwiaW5wdXRpMThuLWlcIiBuelR5cGU9XCJnbG9iYWxcIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGlwc1wiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWJhbmd6aHVcIlxuICAgICAgICAgICAgICBbbnpUb29sdGlwVGl0bGVdPVwidGlwc1wiXG4gICAgICAgICAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgIG56LXRvb2x0aXBcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aXBzICE9ICcnXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZT5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxhbmd1YWdlOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgPiAwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsPnt7IGl0ZW0ubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgbnotaW5wdXRcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0ucmVzVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2tyZUZvcm1BdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKGl0ZW0ucmVzVmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwidG8ubWF4TGVuZ3RoIHx8IDIwMFwiXG4gICAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInRvLm1pbkxlbmd0aCB8fCAwXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkdGV4dFwiICpuZ0lmPVwiZWRpdG9yID09PSBmYWxzZVwiPnt7IGxhbmdUZXh0IH19PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgS3JlRm9ybUZpZWxkVGV4dEkxOG4gZXh0ZW5kcyBGaWVsZFR5cGUgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0cmlnZ2VyV2lkdGggPSBcIjI2MHB4XCI7XG5cbiAgQFZpZXdDaGlsZChDZGtPdmVybGF5T3JpZ2luLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY2RrT3ZlcmxheU9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbiB8IHVuZGVmaW5lZDtcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxuICByZXNpemUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZShldmVudCk7XG4gIH1cbiAgbGFuZ3VhZ2VMaXN0OiBBcnJheTxhbnk+ID0gW1xuICAgIHsgbGFuZ3VhZ2VUeXBlOiBcInpoLWNuXCIsIGxhYmVsOiBcIuS4rVwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICAgIHsgbGFuZ3VhZ2VUeXBlOiBcImVuXCIsIGxhYmVsOiBcIuiLsVwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICBdO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChcbiAgICAgICEhdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcImxhbmdcIl0gJiZcbiAgICAgIChcbiAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcImxhbmdcIl0gYXMgc3RyaW5nXG4gICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IFwiZW5cIlxuICAgICkge1xuICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSBbXG4gICAgICAgIHsgbGFuZ3VhZ2VUeXBlOiBcInpoLWNuXCIsIGxhYmVsOiBcIuS4rVwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICAgICAgICB7IGxhbmd1YWdlVHlwZTogXCJlblwiLCBsYWJlbDogXCJFTlwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBnZXQgbGFuZ3VhZ2UoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tb2RlbCAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMubW9kZWwgIT0gbnVsbCAmJlxuICAgICAgdGhpcy5rZXkgIT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLmtleSAhPSBudWxsICYmXG4gICAgICB0aGlzLm1vZGVsLmhhc093blByb3BlcnR5KHRoaXMua2V5KVxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPSBbXSAmJlxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPSB0aGlzLmxhbmd1YWdlTGlzdCkge1xuICAgICAgICAgIHRoaXMubGFuZ3VhZ2VMaXN0ID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZUxpc3Q7XG4gIH1cblxuICBvbkNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMudG8ucmVxdWlyZWQpIHtcbiAgICAgIGxldCBlbXB0eSA9IHRoaXMubGFuZ3VhZ2VMaXN0LnNvbWUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChpdGVtLnJlc1ZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICBpdGVtLnJlc1ZhbHVlID09PSBcIlwiIHx8XG4gICAgICAgICAgICBpdGVtLnJlc1ZhbHVlID09PSBcIiBcIikgJiZcbiAgICAgICAgICBpdGVtLmxhbmd1YWdlVHlwZSA9PT0gXCJ6aC1jblwiXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGlmIChlbXB0eSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5sYW5ndWFnZUxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMubGFuZ3VhZ2VMaXN0KTtcbiAgICB9XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cblxuICB2aXNpYmxlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGlmICh0aGlzLmNka092ZXJsYXlPcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnRyaWdnZXJXaWR0aCA9XG4gICAgICAgICAgdGhpcy5jZGtPdmVybGF5T3JpZ2luLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgLndpZHRoIC1cbiAgICAgICAgICAwICtcbiAgICAgICAgICBcInB4XCI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxhbmdUZXh0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubW9kZWwgIT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLm1vZGVsICE9IG51bGwgJiZcbiAgICAgIHRoaXMua2V5ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5rZXkgIT0gbnVsbCAmJlxuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0gIT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBsZXQgbGFuZyA9IHRoaXMubW9kZWxbdGhpcy5rZXldO1xuICAgICAgaWYgKFxuICAgICAgICBsYW5nICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICBsYW5nICE9IG51bGwgJiZcbiAgICAgICAgbGFuZyAhPSBcIlwiICYmXG4gICAgICAgIGxhbmcgaW5zdGFuY2VvZiBBcnJheSAmJlxuICAgICAgICBsYW5nLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbGFuZ1swXVtcInJlc1ZhbHVlXCJdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBcIlwiO1xuICB9XG59XG4iXX0=