fantasy-ngzorro 1.2.13 → 1.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -150,7 +150,7 @@ export class HdFilterComponent {
150
150
  HdFilterComponent.decorators = [
151
151
  { type: Component, args: [{
152
152
  selector: 'hd-filter',
153
- template: "<form nz-form [formGroup]=\"validateFilterForm\" class=\"ant-advanced-search-form hd-filter-container\">\n <!-- \u6574\u4F53\u7ED3\u6784 -->\n <div nz-row [nzGutter]=\"24\">\n <!-- \u5BF9\u7EC4\u4EF6\u5217\u8868\u5FAA\u73AF\u5904\u7406 -->\n <ng-container *ngFor=\"let filter of filterList\">\n <div nz-col [nzSpan]=\"6\" [hidden]=\"!filter.show\">\n <nz-form-item nzFlex>\n <nz-form-label class=\"hd-filter-label\">{{filter.label}}</nz-form-label>\n <nz-form-control class=\"hd-filter-control\">\n <ng-container [ngSwitch]=\"filter.type\">\n <!-- \u8FD9\u91CC\u6570\u5B57\u5BF9\u5E94\u679A\u4E3E\u7C7B\u578B\uFF0C\u53EF\u5728hd-filter.service.ts\u6587\u4EF6\u4E2D\u67E5\u770B\u5BF9\u5E94\u5173\u7CFB -->\n <ng-container *ngSwitchCase=\"0\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input nz-input [placeholder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u8F93\u5165' + filter.label\"\n [formControlName]=\"filter.name\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\" />\n </nz-input-group>\n <ng-template #inputCleanTemplate><i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\"\n nzType=\"close-circle\" *ngIf=\"validateFilterForm.get(filter.name).value\"\n (click)=\"inputClean(filter)\"></i></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <nz-select nzShowSearch [nzServerSearch]=\"filter.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"filter.selectOption.hdDropdownMatchSelectWidth ? filter.selectOption.hdDropdownMatchSelectWidth : false\"\n nzAllowClear (nzOnSearch)=\"triggerEvent(filter.onSearchEvent || null, $event, filter.selectOption)\"\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\"\n nzAllowClear>\n <nz-option *ngFor=\"let selectItem of filter.selectOption.selectList\"\n [nzValue]=\"selectItem[filter.selectOption.value]\" [nzLabel]=\"filter.selectOption.showLabelAndValue ? '['+ selectItem[filter.selectOption.value] +']' +\n selectItem[filter.selectOption.label] : selectItem[filter.selectOption.label]\"></nz-option>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <nz-date-picker *ngIf=\"filter.showTime\"\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" [nzDisabledDate]=\"filter.hdDisabledDate\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\" nzShowTime\n nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n <nz-date-picker *ngIf=\"!filter.showTime\"\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" [nzDisabledDate]=\"filter.hdDisabledDate\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"3\">\n <nz-range-picker [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\" [formControlName]=\"filter.name\">\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\"\n </nz-range-picker>\n </ng-container>\n <!-- \u591A\u9879\u9009\u62E9\u5668 -->\n <ng-container *ngSwitchCase=\"4\">\n <nz-select\n [nzDropdownMatchSelectWidth]=\"filter.selectOption.hdDropdownMatchSelectWidth ? filter.selectOption.hdDropdownMatchSelectWidth : false\"\n nzMode=\"multiple\" nzShowSearch nzAllowClear\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" [nzServerSearch]=\"filter.selectOption.hdServerSearch || false\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\"\n (nzOnSearch)=\"triggerEvent(filter.onSearchEvent || null, $event)\">\n <nz-option *ngFor=\"let selectItem of filter.selectOption.selectList\"\n [nzValue]=\"selectItem[filter.selectOption.value]\" [nzLabel]=\"filter.selectOption.showLabelAndValue ? '['+ selectItem[filter.selectOption.value] +']' +\n selectItem[filter.selectOption.label] : selectItem[filter.selectOption.label]\"></nz-option>\n </nz-select>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n </div>\n </ng-container>\n\n <div class=\"hd-filter-btn\" nz-col [nzSpan]=\"6\" [nzOffset]=\"computeOffset()\">\n <a *ngIf=\"filterList.length > 7\" class=\"hd-filter-more\" (click)=\"showMore()\">\n {{isShowMore ? '\u5C55\u5F00' : '\u6536\u8D77'}}\n <i nz-icon [nzType]=\"isShowMore ? 'down' : 'up'\"></i>\n </a>\n <hd-button type=\"primary\" (click)=\"submitForm()\">\u67E5\u8BE2</hd-button>\n <hd-button type=\"reset\" (click)=\"resetForm()\">\u91CD\u7F6E</hd-button>\n </div>\n </div>\n</form>",
153
+ template: "<form nz-form [formGroup]=\"validateFilterForm\" class=\"ant-advanced-search-form hd-filter-container\">\n <!-- \u6574\u4F53\u7ED3\u6784 -->\n <div nz-row [nzGutter]=\"24\">\n <!-- \u5BF9\u7EC4\u4EF6\u5217\u8868\u5FAA\u73AF\u5904\u7406 -->\n <ng-container *ngFor=\"let filter of filterList\">\n <div nz-col [nzSpan]=\"6\" [hidden]=\"!filter.show\">\n <nz-form-item nzFlex>\n <nz-form-label class=\"hd-filter-label\">{{filter.label}}</nz-form-label>\n <nz-form-control class=\"hd-filter-control\">\n <ng-container [ngSwitch]=\"filter.type\">\n <!-- \u8FD9\u91CC\u6570\u5B57\u5BF9\u5E94\u679A\u4E3E\u7C7B\u578B\uFF0C\u53EF\u5728hd-filter.service.ts\u6587\u4EF6\u4E2D\u67E5\u770B\u5BF9\u5E94\u5173\u7CFB -->\n <ng-container *ngSwitchCase=\"0\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input nz-input [placeholder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u8F93\u5165' + filter.label\"\n [formControlName]=\"filter.name\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\" />\n </nz-input-group>\n <ng-template #inputCleanTemplate><i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\"\n nzType=\"close-circle\" *ngIf=\"validateFilterForm.get(filter.name).value\"\n (click)=\"inputClean(filter)\"></i></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <nz-select\n [nzShowSearch]=\"filter.selectOption.hdShowSearch != null ? filter.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"filter.selectOption.hdAllowClear != null ? filter.selectOption.hdAllowClear : true\"\n [nzServerSearch]=\"filter.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"filter.selectOption.hdDropdownMatchSelectWidth ? filter.selectOption.hdDropdownMatchSelectWidth : false\"\n (nzOnSearch)=\"triggerEvent(filter.onSearchEvent || null, $event, filter.selectOption)\"\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\">\n <nz-option *ngFor=\"let selectItem of filter.selectOption.selectList\"\n [nzValue]=\"selectItem[filter.selectOption.value]\" [nzLabel]=\"filter.selectOption.showLabelAndValue ? '['+ selectItem[filter.selectOption.value] +']' +\n selectItem[filter.selectOption.label] : selectItem[filter.selectOption.label]\"></nz-option>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <nz-date-picker *ngIf=\"filter.showTime\"\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" [nzDisabledDate]=\"filter.hdDisabledDate\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\" nzShowTime\n nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n <nz-date-picker *ngIf=\"!filter.showTime\"\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" [nzDisabledDate]=\"filter.hdDisabledDate\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"3\">\n <nz-range-picker [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\" [formControlName]=\"filter.name\">\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\"\n </nz-range-picker>\n </ng-container>\n <!-- \u591A\u9879\u9009\u62E9\u5668 -->\n <ng-container *ngSwitchCase=\"4\">\n <nz-select\n [nzDropdownMatchSelectWidth]=\"filter.selectOption.hdDropdownMatchSelectWidth ? filter.selectOption.hdDropdownMatchSelectWidth : false\"\n nzMode=\"multiple\"\n [nzShowSearch]=\"filter.selectOption.hdShowSearch != null ? filter.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"filter.selectOption.hdAllowClear != null ? filter.selectOption.hdAllowClear : true\"\n [nzPlaceHolder]=\"filter.placeholder ? filter.placeholder : '\u8BF7\u9009\u62E9' + filter.label\"\n [formControlName]=\"filter.name\" [nzServerSearch]=\"filter.selectOption.hdServerSearch || false\"\n (ngModelChange)=\"triggerEvent(filter.onChangeEvent || null, $event)\"\n (nzOnSearch)=\"triggerEvent(filter.onSearchEvent || null, $event)\">\n <nz-option *ngFor=\"let selectItem of filter.selectOption.selectList\"\n [nzValue]=\"selectItem[filter.selectOption.value]\" [nzLabel]=\"filter.selectOption.showLabelAndValue ? '['+ selectItem[filter.selectOption.value] +']' +\n selectItem[filter.selectOption.label] : selectItem[filter.selectOption.label]\"></nz-option>\n </nz-select>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n </div>\n </ng-container>\n\n <div class=\"hd-filter-btn\" nz-col [nzSpan]=\"6\" [nzOffset]=\"computeOffset()\">\n <a *ngIf=\"filterList.length > 7\" class=\"hd-filter-more\" (click)=\"showMore()\">\n {{isShowMore ? '\u5C55\u5F00' : '\u6536\u8D77'}}\n <i nz-icon [nzType]=\"isShowMore ? 'down' : 'up'\"></i>\n </a>\n <hd-button type=\"primary\" (click)=\"submitForm()\">\u67E5\u8BE2</hd-button>\n <hd-button type=\"reset\" (click)=\"resetForm()\">\u91CD\u7F6E</hd-button>\n </div>\n </div>\n</form>",
154
154
  styles: ["::ng-deep .common-btn-group>a{font-size:12px;font-weight:400;color:#12a34f!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e}::ng-deep .ant-input-number-input{height:28px}::ng-deep .ant-input-number{height:28px}textarea.ant-input{height:auto;min-height:28px}::ng-deep .ant-select-selection--multiple{min-height:28px}::ng-deep .ant-select-selection__rendered>ul>li{height:22px!important;margin-top:3px!important;line-height:22px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:28px!important}::ng-deep .ant-input{height:28px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:28px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:12px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-time-picker{width:100%}.hd-filter-container{padding:20px 23px;background:#fff;box-shadow:0 0 12px 0 rgba(93,114,103,.08);border-radius:4px;margin-bottom:8px!important;font-size:12px}.hd-filter-container .ant-row{margin-right:0!important;margin-left:0!important}.hd-filter-container .ant-col-6{padding-left:0!important;padding-right:0!important}.hd-filter-container .hd-filter-label{width:108px;word-break:break-all}.hd-filter-container .hd-filter-control{width:calc(100% - 108px)}.hd-filter-container ::ng-deep .ant-calendar-picker{width:100%}.hd-filter-container .hd-filter-more{color:#12a34f}.hd-filter-container .hd-filter-btn{height:40px;display:inline-flex;align-items:center;justify-content:flex-end}.hd-filter-container hd-button{margin-left:12px}.hd-filter-container ::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}.hd-filter-container ::ng-deep .ant-select-selection--single{height:28px!important}.hd-filter-container ::ng-deep .ant-input{height:28px!important}.hd-filter-container ::ng-deep .ant-calendar-range-picker-input{text-align:left!important}.hd-filter-container .ant-input-number{width:100%}"]
155
155
  }] }
156
156
  ];
@@ -179,4 +179,4 @@ if (false) {
179
179
  */
180
180
  HdFilterComponent.prototype.fb;
181
181
  }
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWZpbHRlci9oZC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFRckUsTUFBTSxPQUFPLGlCQUFpQjs7OztJQVU1QixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVB6QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHM0MsZUFBVSxHQUFZLElBQUksQ0FBQzs7UUFFM0Isc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBRVMsQ0FBQzs7OztJQUV4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDOzs7OztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixPQUFPO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0saUJBQWlCLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOzs7WUFFaEQsYUFBYSxHQUFHLEVBQUU7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7OztRQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3RDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFB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Q0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRU0sVUFBVSxDQUFDLE1BQWM7O2NBQ3hCLFdBQVcsR0FBRyxFQUFFO1FBQ3RCLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRWhDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7O1lBckdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsbXJMQUF5Qzs7YUFFMUM7Ozs7WUFQUSxXQUFXOzs7eUJBVWpCLEtBQUs7MEJBQ0wsTUFBTTs7OztJQURQLHVDQUFtQzs7SUFDbkMsd0NBQTJDOztJQUUzQywrQ0FBOEI7O0lBQzlCLHVDQUEyQjs7SUFFM0IsOENBQThCOzs7OztJQUVsQiwrQkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyTGlzdFR5cGUgfSBmcm9tICcuL2hkLWZpbHRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hkLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hkLWZpbHRlci5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIEhkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBmaWx0ZXJMaXN0OiBBcnJheTxGaWx0ZXI+O1xuICBAT3V0cHV0KCkgc2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdmFsaWRhdGVGaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG4gIGlzU2hvd01vcmU6IGJvb2xlYW4gPSB0cnVlO1xuICAvLyDlr7lmaWx0ZXJMaXN05Y+W5qih6L+Q566XXG4gIGZpbHRlckxpc3RNb2R1bGFyOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNTaG93TW9yZSA9IHRydWU7XG4gICAgLy8g5byC5bi45o2V6I63XG4gICAgaWYgKCF0aGlzLmNoZWNrTGlzdCh0aGlzLmZpbHRlckxpc3QpKSB7XG4gICAgICB0aHJvdyAnZmlsdGVy57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyDJztcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJMaXN0TW9kdWxhciA9IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggJSA0O1xuICAgIC8vIOmmluWFiOagueaNruWumuS5ieeahOe7hOS7tuaVsOe7hCAg5Y675Yid5aeL5YyW6KGo5Y2VXG4gICAgbGV0IGZvcm1Hcm91cExpc3QgPSB7fTtcbiAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGZvcm1Hcm91cExpc3RbaXRlbS5uYW1lXSA9IHRoaXMuZmIuY29udHJvbChpdGVtLnZhbHVlLCBbXSk7XG4gICAgICAvLyDliJ3lp4vljJbmjqfku7bmmL7lvbFcbiAgICAgIGl0ZW0uc2hvdyA9IGluZGV4IDwgNztcbiAgICB9KTtcbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoZm9ybUdyb3VwTGlzdCk7XG4gIH1cblxuICB0cmlnZ2VyRXZlbnQoZm46IGFueSwgZXZlbnQ6IGFueSwgc2VsZWN0T3B0aW9uPzogYW55KXtcbiAgICBpZihmbiAmJiBzZWxlY3RPcHRpb24pe1xuICAgICAgZm4oZXZlbnQsIHNlbGVjdE9wdGlvbik7XG4gICAgfWVsc2UgaWYoZm4pe1xuICAgICAgZm4oZXZlbnQpO1xuICAgIH1lbHNle1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGNvbXB1dGVPZmZzZXQoKXtcbiAgICAvLyDnibnmrorlpITnkIbkuIvnrYnkuo405Liq6YCJ6aG555qE5oOF5Ya1XG4gICAgaWYgKHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggPT09IDQpIHtcbiAgICAgIHJldHVybiAxODtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNTaG93TW9yZSA/ICgodGhpcy5maWx0ZXJMaXN0TW9kdWxhciA9PT0gMCB8fCB0aGlzLmZpbHRlckxpc3QubGVuZ3RoID4gNyApID8gMCA6ICgzIC0gdGhpcy5maWx0ZXJMaXN0TW9kdWxhcikgKiA2KSA6ICh0aGlzLmZpbHRlckxpc3RNb2R1bGFyID09PSAwID8gMTggOiAoMyAtIHRoaXMuZmlsdGVyTGlzdE1vZHVsYXIpICogNik7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTGlzdChsaXN0OiBBcnJheTxGaWx0ZXI+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFsaXN0IHx8IChsaXN0ICYmIGxpc3QubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBuYW1lTGlzdCA9IFtdO1xuICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgLy8g5qCh6aqM5Y2V6aG56YCJ5oup5ZmoXG4gICAgICAvLyBpZiAoaXRlbS50eXBlID09PSBGaWx0ZXJMaXN0VHlwZS5TZWxlY3QgJiYgKCFpdGVtLnNlbGVjdE9wdGlvbi5zZWxlY3RMaXN0IHx8IChpdGVtLnNlbGVjdE9wdGlvbi5zZWxlY3RMaXN0ICYmIGl0ZW0uc2VsZWN0T3B0aW9uLnNlbGVjdExpc3QubGVuZ3RoID09PSAwKSkpIHtcbiAgICAgIC8vICAgdGhyb3cgJ2ZpbHRlcue7hOS7tuaVsOaNruagvOW8j+S4jeinhOiMg++8jOWtmOWcqOWNlemhuemAieaLqeWZqOayoeacieS8oOWFpemAiemhuSEnXG4gICAgICAvLyB9XG4gICAgICBuYW1lTGlzdC5wdXNoKGl0ZW0ubmFtZSk7XG4gICAgfSlcbiAgICAvLyDmoKHpqoxuYW1l5piv5ZCm6YeN5aSNXG4gICAgaWYgKFsuLi5uZXcgU2V0KG5hbWVMaXN0KV0ubGVuZ3RoICE9PSBsaXN0Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgJ2ZpbHRlcue7hOS7tuaVsOaNruagvOW8j+S4jeinhOiMg++8jOWtmOWcqOmHjeWkjW5hbWXlgLwhJ1xuICAgIH1cbiAgICAvLyAuLi5tb3JlIGNoZWNrXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEV2ZW50LmVtaXQodGhpcy52YWxpZGF0ZUZpbHRlckZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5zZWFyY2hFdmVudC5lbWl0KHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHNob3dNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTaG93TW9yZSA9ICF0aGlzLmlzU2hvd01vcmU7XG4gICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpdGVtLnNob3cgPSB0aGlzLmlzU2hvd01vcmUgPyBpbmRleCA8IDcgOiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlucHV0Q2xlYW4oZmlsdGVyOiBGaWx0ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYXRjaE9iamVjdCA9IHt9O1xuICAgIHBhdGNoT2JqZWN0W2ZpbHRlci5uYW1lXSA9IG51bGw7XG5cbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5wYXRjaFZhbHVlKHBhdGNoT2JqZWN0KTtcbiAgfVxufVxuIl19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWZpbHRlci9oZC1maWx0ZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFRckUsTUFBTSxPQUFPLGlCQUFpQjs7OztJQVU1QixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVB6QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHM0MsZUFBVSxHQUFZLElBQUksQ0FBQzs7UUFFM0Isc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBRVMsQ0FBQzs7OztJQUV4QyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDOzs7OztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixPQUFPO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0saUJBQWlCLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOzs7WUFFaEQsYUFBYSxHQUFHLEVBQUU7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPOzs7OztRQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3RDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFB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Q0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqRCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRU0sVUFBVSxDQUFDLE1BQWM7O2NBQ3hCLFdBQVcsR0FBRyxFQUFFO1FBQ3RCLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBRWhDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7O1lBckdGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsV0FBVztnQkFDckIsc2xNQUF5Qzs7YUFFMUM7Ozs7WUFQUSxXQUFXOzs7eUJBVWpCLEtBQUs7MEJBQ0wsTUFBTTs7OztJQURQLHVDQUFtQzs7SUFDbkMsd0NBQTJDOztJQUUzQywrQ0FBOEI7O0lBQzlCLHVDQUEyQjs7SUFFM0IsOENBQThCOzs7OztJQUVsQiwrQkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyTGlzdFR5cGUgfSBmcm9tICcuL2hkLWZpbHRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGQtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hkLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hkLWZpbHRlci5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIEhkRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBmaWx0ZXJMaXN0OiBBcnJheTxGaWx0ZXI+O1xuICBAT3V0cHV0KCkgc2VhcmNoRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdmFsaWRhdGVGaWx0ZXJGb3JtOiBGb3JtR3JvdXA7XG4gIGlzU2hvd01vcmU6IGJvb2xlYW4gPSB0cnVlO1xuICAvLyDlr7lmaWx0ZXJMaXN05Y+W5qih6L+Q566XXG4gIGZpbHRlckxpc3RNb2R1bGFyOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNTaG93TW9yZSA9IHRydWU7XG4gICAgLy8g5byC5bi45o2V6I63XG4gICAgaWYgKCF0aGlzLmNoZWNrTGlzdCh0aGlzLmZpbHRlckxpc3QpKSB7XG4gICAgICB0aHJvdyAnZmlsdGVy57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyDJztcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJMaXN0TW9kdWxhciA9IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggJSA0O1xuICAgIC8vIOmmluWFiOagueaNruWumuS5ieeahOe7hOS7tuaVsOe7hCAg5Y675Yid5aeL5YyW6KGo5Y2VXG4gICAgbGV0IGZvcm1Hcm91cExpc3QgPSB7fTtcbiAgICB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGZvcm1Hcm91cExpc3RbaXRlbS5uYW1lXSA9IHRoaXMuZmIuY29udHJvbChpdGVtLnZhbHVlLCBbXSk7XG4gICAgICAvLyDliJ3lp4vljJbmjqfku7bmmL7lvbFcbiAgICAgIGl0ZW0uc2hvdyA9IGluZGV4IDwgNztcbiAgICB9KTtcbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoZm9ybUdyb3VwTGlzdCk7XG4gIH1cblxuICB0cmlnZ2VyRXZlbnQoZm46IGFueSwgZXZlbnQ6IGFueSwgc2VsZWN0T3B0aW9uPzogYW55KXtcbiAgICBpZihmbiAmJiBzZWxlY3RPcHRpb24pe1xuICAgICAgZm4oZXZlbnQsIHNlbGVjdE9wdGlvbik7XG4gICAgfWVsc2UgaWYoZm4pe1xuICAgICAgZm4oZXZlbnQpO1xuICAgIH1lbHNle1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGNvbXB1dGVPZmZzZXQoKXtcbiAgICAvLyDnibnmrorlpITnkIbkuIvnrYnkuo405Liq6YCJ6aG555qE5oOF5Ya1XG4gICAgaWYgKHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggPT09IDQpIHtcbiAgICAgIHJldHVybiAxODtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNTaG93TW9yZSA/ICgodGhpcy5maWx0ZXJMaXN0TW9kdWxhciA9PT0gMCB8fCB0aGlzLmZpbHRlckxpc3QubGVuZ3RoID4gNyApID8gMCA6ICgzIC0gdGhpcy5maWx0ZXJMaXN0TW9kdWxhcikgKiA2KSA6ICh0aGlzLmZpbHRlckxpc3RNb2R1bGFyID09PSAwID8gMTggOiAoMyAtIHRoaXMuZmlsdGVyTGlzdE1vZHVsYXIpICogNik7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTGlzdChsaXN0OiBBcnJheTxGaWx0ZXI+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFsaXN0IHx8IChsaXN0ICYmIGxpc3QubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxldCBuYW1lTGlzdCA9IFtdO1xuICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgLy8g5qCh6aqM5Y2V6aG56YCJ5oup5ZmoXG4gICAgICAvLyBpZiAoaXRlbS50eXBlID09PSBGaWx0ZXJMaXN0VHlwZS5TZWxlY3QgJiYgKCFpdGVtLnNlbGVjdE9wdGlvbi5zZWxlY3RMaXN0IHx8IChpdGVtLnNlbGVjdE9wdGlvbi5zZWxlY3RMaXN0ICYmIGl0ZW0uc2VsZWN0T3B0aW9uLnNlbGVjdExpc3QubGVuZ3RoID09PSAwKSkpIHtcbiAgICAgIC8vICAgdGhyb3cgJ2ZpbHRlcue7hOS7tuaVsOaNruagvOW8j+S4jeinhOiMg++8jOWtmOWcqOWNlemhuemAieaLqeWZqOayoeacieS8oOWFpemAiemhuSEnXG4gICAgICAvLyB9XG4gICAgICBuYW1lTGlzdC5wdXNoKGl0ZW0ubmFtZSk7XG4gICAgfSlcbiAgICAvLyDmoKHpqoxuYW1l5piv5ZCm6YeN5aSNXG4gICAgaWYgKFsuLi5uZXcgU2V0KG5hbWVMaXN0KV0ubGVuZ3RoICE9PSBsaXN0Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgJ2ZpbHRlcue7hOS7tuaVsOaNruagvOW8j+S4jeinhOiMg++8jOWtmOWcqOmHjeWkjW5hbWXlgLwhJ1xuICAgIH1cbiAgICAvLyAuLi5tb3JlIGNoZWNrXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEV2ZW50LmVtaXQodGhpcy52YWxpZGF0ZUZpbHRlckZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5zZWFyY2hFdmVudC5lbWl0KHRoaXMudmFsaWRhdGVGaWx0ZXJGb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHNob3dNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNTaG93TW9yZSA9ICF0aGlzLmlzU2hvd01vcmU7XG4gICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBpdGVtLnNob3cgPSB0aGlzLmlzU2hvd01vcmUgPyBpbmRleCA8IDcgOiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGlucHV0Q2xlYW4oZmlsdGVyOiBGaWx0ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYXRjaE9iamVjdCA9IHt9O1xuICAgIHBhdGNoT2JqZWN0W2ZpbHRlci5uYW1lXSA9IG51bGw7XG5cbiAgICB0aGlzLnZhbGlkYXRlRmlsdGVyRm9ybS5wYXRjaFZhbHVlKHBhdGNoT2JqZWN0KTtcbiAgfVxufVxuIl19
@@ -325,7 +325,7 @@ export class HdFormComponent {
325
325
  HdFormComponent.decorators = [
326
326
  { type: Component, args: [{
327
327
  selector: 'hd-form',
328
- template: "<form nz-form [formGroup]=\"validateHdForm\" class=\"ant-advanced-search-form hd-formItem-container\">\n <!-- \u6574\u4F53\u7ED3\u6784 -->\n <div nz-row [nzGutter]=\"24\">\n <!-- \u5BF9\u7EC4\u4EF6\u5217\u8868\u5FAA\u73AF\u5904\u7406 -->\n <ng-container *ngFor=\"let formItem of formList;index as i\">\n <div nz-row *ngIf=\"formItem.isRowFirst && formItem.isRowFirst === 1\">\n <div nz-col *ngIf=\"!formItem.hide\" [nzSpan]=\"formItem.width? formItem.width * 6 : 6\">\n <nz-form-item nzFlex>\n <nz-form-label class=\"hd-formItem-label\" [nzNoColon]=\"true\">\n <div class=\"hd-formItem-label-flex\">\n <span>\n <span class=\"hd-formItem-label-require\" *ngIf=\"formItem.require\">*</span>\n <span\n [ngStyle]=\"{'color': formItem?.labelColor ? formItem.labelColor : null}\">{{formItem.label}}</span>\n </span>\n <ng-container *ngIf=\"formItem.explain\">\n <span class=\"hd-formItem-label-explain\">{{formItem.explain}}</span>\n </ng-container>\n </div>\n </nz-form-label>\n <nz-form-control class=\"hd-formItem-control\" [nzErrorTip]=\"formItemErrorTpl\">\n <ng-template #formItemErrorTpl let-control>\n <ng-container *ngFor=\"let validatorKey of formItem.validatorKeys;index as i\">\n <ng-container *ngIf=\"control.hasError(validatorKey.key)\">\n {{ validatorKey.label }}\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"control.hasError('required')\">\n {{ formItem.label + '\u4E0D\u80FD\u4E3A\u7A7A' }}\n </ng-container>\n </ng-template>\n <ng-container [ngSwitch]=\"formItem.type\">\n <ng-container *ngSwitchCase=\"0\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input nz-input [ngStyle]=\"{'color': formItem?.color ? formItem.color : null}\"\n [maxlength]=\"formItem.maxLength || null\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [formControlName]=\"formItem.name\" />\n </nz-input-group>\n <ng-template #inputCleanTemplate><i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\"\n nzType=\"close-circle\" *ngIf=\"validateHdForm.get(formItem.name).value && !formItem.disabled\"\n (click)=\"inputClean(formItem)\"></i></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <nz-select nzShowSearch [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n nzAllowClear [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, formItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of formItem.selectOption.selectList\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\"></nz-option>\n <nz-option *ngIf=\"formItem.defaultLabel\" [nzLabel]=\"formItem.defaultLabel\"\n [nzValue]=\"formItem.value\" nzHide></nz-option>\n <nz-option\n *ngIf=\"formItem.selectOption.label && validateHdForm.get(formItem.name) && validateHdForm.get(formItem.selectOption.label)?.value && validateHdForm.get(formItem.selectOption.value)?.value\"\n [nzLabel]=\"(formItem.selectOption.showLabelAndValue || formItem.selectOption.hdShowItemCode) ? ('['+ validateHdForm.get(formItem.selectOption.value).value + ']' + validateHdForm.get(formItem.selectOption.label).value) : validateHdForm.get(formItem.selectOption.label).value\"\n [nzValue]=\"validateHdForm.get(formItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <nz-date-picker *ngIf=\"!formItem.showTime\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\">\n </nz-date-picker>\n <nz-date-picker *ngIf=\"formItem.showTime\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" nzShowTime nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"3\">\n <nz-range-picker [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\" [formControlName]=\"formItem.name\">\n </nz-range-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"4\">\n <textarea [ngStyle]=\"{'color': formItem?.color ? formItem.color : null}\"\n [rows]=\"formItem.textAreaRows ? formItem.textAreaRows : 1\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\" rows=\"1\"\n nz-input [maxlength]=\"formItem.maxLength || null\" [formControlName]=\"formItem.name\"></textarea>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <nz-input-number [ngStyle]=\"{'color': formItem?.color ? formItem.color : null}\"\n [formControlName]=\"formItem.name\" [nzMin]=\"formItem?.inputNumber?.min || 0\"\n [nzMax]=\"formItem?.inputNumber?.max || 99999999\" [nzStep]=\"formItem?.inputNumber?.step || 1\"\n [nzPlaceHolder]=\"'\u8BF7\u8F93\u5165' + formItem.label\" [nzPrecision]=\"formItem?.inputNumber?.precision || 4\">\n </nz-input-number>\n </ng-container>\n <!-- \u591A\u9879\u9009\u62E9\u5668 -->\n <ng-container *ngSwitchCase=\"6\">\n <nz-select [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n nzMode=\"multiple\" nzShowSearch nzAllowClear\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, formItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of formItem.selectOption.selectList\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\"></nz-option>\n <ng-container *ngIf=\"formItem.defaultLabel\">\n <nz-option *ngFor=\"let option of formItem.defaultLabel;index as i\" [nzLabel]=\"option\"\n [nzValue]=\"formItem.value[i]\" nzHide></nz-option>\n </ng-container>\n <ng-container\n *ngIf=\"formItem.selectOption.label && validateHdForm.get(formItem.name) && validateHdForm.get(formItem.selectOption.label)?.value && validateHdForm.get(formItem.selectOption.value)?.value\">\n <nz-option *ngFor=\"let option of validateHdForm.get(formItem.selectOption.value).value;index as i\"\n [nzLabel]=\"validateHdForm.get(formItem.selectOption.label).value[i]\" [nzValue]=\"option\" nzHide>\n </nz-option>\n </ng-container>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"7\">\n <span>{{formItem.value || validateHdForm.get(formItem.name).value}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"8\">\n <nz-switch [formControlName]=\"formItem.name\"></nz-switch>\n </ng-container>\n <ng-container *ngSwitchCase=\"9\">\n <nz-time-picker [formControlName]=\"formItem.name\"></nz-time-picker>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n </div>\n <!-- \u5FAA\u73AF\u6700\u591A\u56DB\u6B21 -->\n <ng-container *ngFor=\"let columnItem of formItem.columnItems;index as columnItemIndex\">\n <div nz-col *ngIf=\"!columnItem.hide\" [nzSpan]=\"columnItem.width? columnItem.width * 6 : 6\">\n <nz-form-item nzFlex>\n <nz-form-label class=\"hd-formItem-label\" [nzNoColon]=\"true\">\n <div class=\"hd-formItem-label-flex\">\n <span>\n <span class=\"hd-formItem-label-require\" *ngIf=\"columnItem.require\">*</span>\n <span\n [ngStyle]=\"{'color': columnItem?.labelColor ? columnItem.labelColor : null}\">{{columnItem.label}}</span>\n </span>\n <ng-container *ngIf=\"columnItem.explain\">\n <span class=\"hd-formItem-label-explain\">{{columnItem.explain}}</span>\n </ng-container>\n </div>\n </nz-form-label>\n <nz-form-control class=\"hd-formItem-control\" [nzErrorTip]=\"columnItemErrorTpl\">\n <ng-template #columnItemErrorTpl let-control>\n <ng-container *ngFor=\"let validatorKey of columnItem.validatorKeys;index as i\">\n <ng-container *ngIf=\"control.hasError(validatorKey.key)\">\n {{ validatorKey.label }}\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"control.hasError('required')\">\n {{ columnItem.label + '\u4E0D\u80FD\u4E3A\u7A7A' }}\n </ng-container>\n </ng-template>\n <ng-container [ngSwitch]=\"columnItem.type\">\n <ng-container *ngSwitchCase=\"0\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input *ngIf=\"columnItem.disabled === true;else inputTemplate\" nz-input\n [ngStyle]=\"{'color': columnItem?.color ? columnItem.color : null}\" [disabled]=\"true\"\n [attr.disabled]=\"true\" [maxlength]=\"columnItem.maxLength || null\"\n [placeholder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [formControlName]=\"columnItem.name\" />\n <ng-template #inputTemplate>\n <input nz-input [ngStyle]=\"{'color': columnItem?.color ? formItem.color : null}\"\n [maxlength]=\"columnItem.maxLength || null\"\n [placeholder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [formControlName]=\"columnItem.name\" />\n </ng-template>\n </nz-input-group>\n <ng-template #inputCleanTemplate><i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\"\n nzType=\"close-circle\" *ngIf=\"validateHdForm.get(columnItem.name).value && !columnItem.disabled\"\n (click)=\"inputClean(columnItem)\"></i></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <nz-select [nzServerSearch]=\"columnItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"columnItem.selectOption.hdDropdownMatchSelectWidth ? columnItem.selectOption.hdDropdownMatchSelectWidth : false\"\n nzShowSearch nzAllowClear\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\"\n (nzOnSearch)=\"onSearchEvent(columnItem.onSearchEvent || null, $event, columnItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of columnItem.selectOption.selectList\"\n [nzValue]=\"selectItem[columnItem.selectOption.value]\" [nzLabel]=\"columnItem.selectOption.showLabelAndValue ? '['+ selectItem[columnItem.selectOption.value] +']' +\n selectItem[columnItem.selectOption.label] : selectItem[columnItem.selectOption.label]\">\n </nz-option>\n <nz-option\n *ngIf=\"columnItem.selectOption.label && validateHdForm.get(columnItem.name) && validateHdForm.get(columnItem.selectOption.label)?.value && validateHdForm.get(columnItem.selectOption.value)?.value\"\n [nzLabel]=\"(columnItem.selectOption.showLabelAndValue || columnItem.selectOption.hdShowItemCode) ? ('['+ validateHdForm.get(columnItem.selectOption.value).value + ']' + validateHdForm.get(columnItem.selectOption.label).value) : validateHdForm.get(columnItem.selectOption.label).value\"\n [nzValue]=\"validateHdForm.get(columnItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <nz-date-picker *ngIf=\"columnItem.showTime\" [nzDisabledDate]=\"columnItem.hdDisabledDate\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\" nzShowTime nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n <nz-date-picker *ngIf=\"!columnItem.showTime\" [nzDisabledDate]=\"columnItem.hdDisabledDate\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"3\">\n <nz-range-picker [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\" [formControlName]=\"columnItem.name\">\n </nz-range-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"4\">\n <textarea [ngStyle]=\"{'color': columnItem?.color ? columnItem.color : null}\"\n [rows]=\"columnItem.textAreaRows ? columnItem.textAreaRows : 1\" rows=\"1\" nz-input\n [placeholder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [maxlength]=\"columnItem.maxLength || null\" [formControlName]=\"columnItem.name\"></textarea>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <nz-input-number [ngStyle]=\"{'color': columnItem?.color ? columnItem.color : null}\"\n [formControlName]=\"columnItem.name\" [nzMin]=\"columnItem?.inputNumber?.min || 0\"\n [nzMax]=\"columnItem?.inputNumber?.max || 99999999\" [nzStep]=\"columnItem?.inputNumber?.step || 1\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [nzPrecision]=\"columnItem?.inputNumber?.precision || 4\">\n </nz-input-number>\n </ng-container>\n <!-- \u591A\u9879\u9009\u62E9\u5668 -->\n <ng-container *ngSwitchCase=\"6\">\n <nz-select [nzServerSearch]=\"columnItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"columnItem.selectOption.hdDropdownMatchSelectWidth ? columnItem.selectOption.hdDropdownMatchSelectWidth : false\"\n nzMode=\"multiple\" nzShowSearch nzAllowClear\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\"\n (nzOnSearch)=\"onSearchEvent(columnItem.onSearchEvent || null, $event, columnItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of columnItem.selectOption.selectList\"\n [nzValue]=\"selectItem[columnItem.selectOption.value]\" [nzLabel]=\"columnItem.selectOption.showLabelAndValue ? '['+ selectItem[columnItem.selectOption.value] +']' +\n selectItem[columnItem.selectOption.label] : selectItem[columnItem.selectOption.label]\">\n </nz-option>\n <ng-container *ngIf=\"columnItem.defaultLabel\">\n <nz-option *ngFor=\"let option of columnItem.defaultLabel;index as i\" [nzLabel]=\"option\"\n [nzValue]=\"columnItem.value[i]\" nzHide></nz-option>\n </ng-container>\n <ng-container\n *ngIf=\"columnItem.selectOption.label && validateHdForm.get(columnItem.name) && validateHdForm.get(columnItem.selectOption.label)?.value && validateHdForm.get(columnItem.selectOption.value)?.value\">\n <nz-option\n *ngFor=\"let option of validateHdForm.get(columnItem.selectOption.value).value;index as i\"\n [nzLabel]=\"validateHdForm.get(columnItem.selectOption.label).value[i]\" [nzValue]=\"option\"\n nzHide>\n </nz-option>\n </ng-container>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"7\">\n <span>{{columnItem.value || validateHdForm.get(columnItem.name).value}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"8\">\n <nz-switch [formControlName]=\"columnItem.name\"></nz-switch>\n </ng-container>\n <ng-container *ngSwitchCase=\"9\">\n <nz-time-picker [formControlName]=\"columnItem.name\"></nz-time-picker>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</form>",
328
+ template: "<form nz-form [formGroup]=\"validateHdForm\" class=\"ant-advanced-search-form hd-formItem-container\">\n <!-- \u6574\u4F53\u7ED3\u6784 -->\n <div nz-row [nzGutter]=\"24\">\n <!-- \u5BF9\u7EC4\u4EF6\u5217\u8868\u5FAA\u73AF\u5904\u7406 -->\n <ng-container *ngFor=\"let formItem of formList;index as i\">\n <div nz-row *ngIf=\"formItem.isRowFirst && formItem.isRowFirst === 1\">\n <div nz-col *ngIf=\"!formItem.hide\" [nzSpan]=\"formItem.width? formItem.width * 6 : 6\">\n <nz-form-item nzFlex>\n <nz-form-label class=\"hd-formItem-label\" [nzNoColon]=\"true\">\n <div class=\"hd-formItem-label-flex\">\n <span>\n <span class=\"hd-formItem-label-require\" *ngIf=\"formItem.require\">*</span>\n <span\n [ngStyle]=\"{'color': formItem?.labelColor ? formItem.labelColor : null}\">{{formItem.label}}</span>\n </span>\n <ng-container *ngIf=\"formItem.explain\">\n <span class=\"hd-formItem-label-explain\">{{formItem.explain}}</span>\n </ng-container>\n </div>\n </nz-form-label>\n <nz-form-control class=\"hd-formItem-control\" [nzErrorTip]=\"formItemErrorTpl\">\n <ng-template #formItemErrorTpl let-control>\n <ng-container *ngFor=\"let validatorKey of formItem.validatorKeys;index as i\">\n <ng-container *ngIf=\"control.hasError(validatorKey.key)\">\n {{ validatorKey.label }}\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"control.hasError('required')\">\n {{ formItem.label + '\u4E0D\u80FD\u4E3A\u7A7A' }}\n </ng-container>\n </ng-template>\n <ng-container [ngSwitch]=\"formItem.type\">\n <ng-container *ngSwitchCase=\"0\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input nz-input [ngStyle]=\"{'color': formItem?.color ? formItem.color : null}\"\n [maxlength]=\"formItem.maxLength || null\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\"\n [formControlName]=\"formItem.name\" />\n </nz-input-group>\n <ng-template #inputCleanTemplate><i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\"\n nzType=\"close-circle\" *ngIf=\"validateHdForm.get(formItem.name).value && !formItem.disabled\"\n (click)=\"inputClean(formItem)\"></i></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <nz-select\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, formItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of formItem.selectOption.selectList\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\"></nz-option>\n <nz-option *ngIf=\"formItem.defaultLabel\" [nzLabel]=\"formItem.defaultLabel\"\n [nzValue]=\"formItem.value\" nzHide></nz-option>\n <nz-option\n *ngIf=\"formItem.selectOption.label && validateHdForm.get(formItem.name) && validateHdForm.get(formItem.selectOption.label)?.value && validateHdForm.get(formItem.selectOption.value)?.value\"\n [nzLabel]=\"(formItem.selectOption.showLabelAndValue || formItem.selectOption.hdShowItemCode) ? ('['+ validateHdForm.get(formItem.selectOption.value).value + ']' + validateHdForm.get(formItem.selectOption.label).value) : validateHdForm.get(formItem.selectOption.label).value\"\n [nzValue]=\"validateHdForm.get(formItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <nz-date-picker *ngIf=\"!formItem.showTime\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\">\n </nz-date-picker>\n <nz-date-picker *ngIf=\"formItem.showTime\" [nzDisabledDate]=\"formItem.hdDisabledDate\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\" nzShowTime nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"3\">\n <nz-range-picker [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\" [formControlName]=\"formItem.name\">\n </nz-range-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"4\">\n <textarea [ngStyle]=\"{'color': formItem?.color ? formItem.color : null}\"\n [rows]=\"formItem.textAreaRows ? formItem.textAreaRows : 1\"\n [placeholder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u8F93\u5165' + formItem.label\" rows=\"1\"\n nz-input [maxlength]=\"formItem.maxLength || null\" [formControlName]=\"formItem.name\"></textarea>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <nz-input-number [ngStyle]=\"{'color': formItem?.color ? formItem.color : null}\"\n [formControlName]=\"formItem.name\" [nzMin]=\"formItem?.inputNumber?.min || 0\"\n [nzMax]=\"formItem?.inputNumber?.max || 99999999\" [nzStep]=\"formItem?.inputNumber?.step || 1\"\n [nzPlaceHolder]=\"'\u8BF7\u8F93\u5165' + formItem.label\" [nzPrecision]=\"formItem?.inputNumber?.precision || 4\">\n </nz-input-number>\n </ng-container>\n <!-- \u591A\u9879\u9009\u62E9\u5668 -->\n <ng-container *ngSwitchCase=\"6\">\n <nz-select [nzServerSearch]=\"formItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"formItem.selectOption.hdDropdownMatchSelectWidth ? formItem.selectOption.hdDropdownMatchSelectWidth : false\"\n nzMode=\"multiple\"\n [nzShowSearch]=\"formItem.selectOption.hdShowSearch != null ? formItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"formItem.selectOption.hdAllowClear != null ? formItem.selectOption.hdAllowClear : true\"\n [nzPlaceHolder]=\"formItem.placeholder ? formItem.placeholder : '\u8BF7\u9009\u62E9' + formItem.label\"\n [formControlName]=\"formItem.name\"\n (nzOnSearch)=\"onSearchEvent(formItem.onSearchEvent || null, $event, formItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of formItem.selectOption.selectList\"\n [nzValue]=\"selectItem[formItem.selectOption.value]\" [nzLabel]=\"formItem.selectOption.showLabelAndValue ? '['+ selectItem[formItem.selectOption.value] +']' +\n selectItem[formItem.selectOption.label] : selectItem[formItem.selectOption.label]\"></nz-option>\n <ng-container *ngIf=\"formItem.defaultLabel\">\n <nz-option *ngFor=\"let option of formItem.defaultLabel;index as i\" [nzLabel]=\"option\"\n [nzValue]=\"formItem.value[i]\" nzHide></nz-option>\n </ng-container>\n <ng-container\n *ngIf=\"formItem.selectOption.label && validateHdForm.get(formItem.name) && validateHdForm.get(formItem.selectOption.label)?.value && validateHdForm.get(formItem.selectOption.value)?.value\">\n <nz-option *ngFor=\"let option of validateHdForm.get(formItem.selectOption.value).value;index as i\"\n [nzLabel]=\"validateHdForm.get(formItem.selectOption.label).value[i]\" [nzValue]=\"option\" nzHide>\n </nz-option>\n </ng-container>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"7\">\n <span>{{formItem.value || validateHdForm.get(formItem.name).value}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"8\">\n <nz-switch [formControlName]=\"formItem.name\"></nz-switch>\n </ng-container>\n <ng-container *ngSwitchCase=\"9\">\n <nz-time-picker [formControlName]=\"formItem.name\"></nz-time-picker>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n </div>\n <!-- \u5FAA\u73AF\u6700\u591A\u56DB\u6B21 -->\n <ng-container *ngFor=\"let columnItem of formItem.columnItems;index as columnItemIndex\">\n <div nz-col *ngIf=\"!columnItem.hide\" [nzSpan]=\"columnItem.width? columnItem.width * 6 : 6\">\n <nz-form-item nzFlex>\n <nz-form-label class=\"hd-formItem-label\" [nzNoColon]=\"true\">\n <div class=\"hd-formItem-label-flex\">\n <span>\n <span class=\"hd-formItem-label-require\" *ngIf=\"columnItem.require\">*</span>\n <span\n [ngStyle]=\"{'color': columnItem?.labelColor ? columnItem.labelColor : null}\">{{columnItem.label}}</span>\n </span>\n <ng-container *ngIf=\"columnItem.explain\">\n <span class=\"hd-formItem-label-explain\">{{columnItem.explain}}</span>\n </ng-container>\n </div>\n </nz-form-label>\n <nz-form-control class=\"hd-formItem-control\" [nzErrorTip]=\"columnItemErrorTpl\">\n <ng-template #columnItemErrorTpl let-control>\n <ng-container *ngFor=\"let validatorKey of columnItem.validatorKeys;index as i\">\n <ng-container *ngIf=\"control.hasError(validatorKey.key)\">\n {{ validatorKey.label }}\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"control.hasError('required')\">\n {{ columnItem.label + '\u4E0D\u80FD\u4E3A\u7A7A' }}\n </ng-container>\n </ng-template>\n <ng-container [ngSwitch]=\"columnItem.type\">\n <ng-container *ngSwitchCase=\"0\">\n <nz-input-group [nzSuffix]=\"inputCleanTemplate\">\n <input *ngIf=\"columnItem.disabled === true;else inputTemplate\" nz-input\n [ngStyle]=\"{'color': columnItem?.color ? columnItem.color : null}\" [disabled]=\"true\"\n [attr.disabled]=\"true\" [maxlength]=\"columnItem.maxLength || null\"\n [placeholder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [formControlName]=\"columnItem.name\" />\n <ng-template #inputTemplate>\n <input nz-input [ngStyle]=\"{'color': columnItem?.color ? formItem.color : null}\"\n [maxlength]=\"columnItem.maxLength || null\"\n [placeholder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [formControlName]=\"columnItem.name\" />\n </ng-template>\n </nz-input-group>\n <ng-template #inputCleanTemplate><i nz-icon nz-tooltip class=\"ant-input-clear-icon\" nzTheme=\"fill\"\n nzType=\"close-circle\" *ngIf=\"validateHdForm.get(columnItem.name).value && !columnItem.disabled\"\n (click)=\"inputClean(columnItem)\"></i></ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <nz-select [nzServerSearch]=\"columnItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"columnItem.selectOption.hdDropdownMatchSelectWidth ? columnItem.selectOption.hdDropdownMatchSelectWidth : false\"\n [nzShowSearch]=\"columnItem.selectOption.hdShowSearch != null ? columnItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"columnItem.selectOption.hdAllowClear != null ? columnItem.selectOption.hdAllowClear : true\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\"\n (nzOnSearch)=\"onSearchEvent(columnItem.onSearchEvent || null, $event, columnItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of columnItem.selectOption.selectList\"\n [nzValue]=\"selectItem[columnItem.selectOption.value]\" [nzLabel]=\"columnItem.selectOption.showLabelAndValue ? '['+ selectItem[columnItem.selectOption.value] +']' +\n selectItem[columnItem.selectOption.label] : selectItem[columnItem.selectOption.label]\">\n </nz-option>\n <nz-option\n *ngIf=\"columnItem.selectOption.label && validateHdForm.get(columnItem.name) && validateHdForm.get(columnItem.selectOption.label)?.value && validateHdForm.get(columnItem.selectOption.value)?.value\"\n [nzLabel]=\"(columnItem.selectOption.showLabelAndValue || columnItem.selectOption.hdShowItemCode) ? ('['+ validateHdForm.get(columnItem.selectOption.value).value + ']' + validateHdForm.get(columnItem.selectOption.label).value) : validateHdForm.get(columnItem.selectOption.label).value\"\n [nzValue]=\"validateHdForm.get(columnItem.selectOption.value).value\" nzHide></nz-option>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <nz-date-picker *ngIf=\"columnItem.showTime\" [nzDisabledDate]=\"columnItem.hdDisabledDate\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\" nzShowTime nzFormat=\"yyyy-MM-dd HH:mm:ss\">\n </nz-date-picker>\n <nz-date-picker *ngIf=\"!columnItem.showTime\" [nzDisabledDate]=\"columnItem.hdDisabledDate\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\">\n </nz-date-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"3\">\n <nz-range-picker [nzPlaceHolder]=\"['\u5F00\u59CB\u65E5\u671F','\u7ED3\u675F\u65E5\u671F']\" [formControlName]=\"columnItem.name\">\n </nz-range-picker>\n </ng-container>\n <ng-container *ngSwitchCase=\"4\">\n <textarea [ngStyle]=\"{'color': columnItem?.color ? columnItem.color : null}\"\n [rows]=\"columnItem.textAreaRows ? columnItem.textAreaRows : 1\" rows=\"1\" nz-input\n [placeholder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [maxlength]=\"columnItem.maxLength || null\" [formControlName]=\"columnItem.name\"></textarea>\n </ng-container>\n <ng-container *ngSwitchCase=\"5\">\n <nz-input-number [ngStyle]=\"{'color': columnItem?.color ? columnItem.color : null}\"\n [formControlName]=\"columnItem.name\" [nzMin]=\"columnItem?.inputNumber?.min || 0\"\n [nzMax]=\"columnItem?.inputNumber?.max || 99999999\" [nzStep]=\"columnItem?.inputNumber?.step || 1\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u8F93\u5165' + columnItem.label\"\n [nzPrecision]=\"columnItem?.inputNumber?.precision || 4\">\n </nz-input-number>\n </ng-container>\n <!-- \u591A\u9879\u9009\u62E9\u5668 -->\n <ng-container *ngSwitchCase=\"6\">\n <nz-select [nzServerSearch]=\"columnItem.selectOption.hdServerSearch || false\"\n [nzDropdownMatchSelectWidth]=\"columnItem.selectOption.hdDropdownMatchSelectWidth ? columnItem.selectOption.hdDropdownMatchSelectWidth : false\"\n nzMode=\"multiple\"\n [nzShowSearch]=\"columnItem.selectOption.hdShowSearch != null ? columnItem.selectOption.hdShowSearch : true\"\n [nzAllowClear]=\"columnItem.selectOption.hdAllowClear != null ? columnItem.selectOption.hdAllowClear : true\"\n [nzPlaceHolder]=\"columnItem.placeholder ? columnItem.placeholder : '\u8BF7\u9009\u62E9' + columnItem.label\"\n [formControlName]=\"columnItem.name\"\n (nzOnSearch)=\"onSearchEvent(columnItem.onSearchEvent || null, $event, columnItem.onSearchEventEventDebounceTime)\">\n <nz-option *ngFor=\"let selectItem of columnItem.selectOption.selectList\"\n [nzValue]=\"selectItem[columnItem.selectOption.value]\" [nzLabel]=\"columnItem.selectOption.showLabelAndValue ? '['+ selectItem[columnItem.selectOption.value] +']' +\n selectItem[columnItem.selectOption.label] : selectItem[columnItem.selectOption.label]\">\n </nz-option>\n <ng-container *ngIf=\"columnItem.defaultLabel\">\n <nz-option *ngFor=\"let option of columnItem.defaultLabel;index as i\" [nzLabel]=\"option\"\n [nzValue]=\"columnItem.value[i]\" nzHide></nz-option>\n </ng-container>\n <ng-container\n *ngIf=\"columnItem.selectOption.label && validateHdForm.get(columnItem.name) && validateHdForm.get(columnItem.selectOption.label)?.value && validateHdForm.get(columnItem.selectOption.value)?.value\">\n <nz-option\n *ngFor=\"let option of validateHdForm.get(columnItem.selectOption.value).value;index as i\"\n [nzLabel]=\"validateHdForm.get(columnItem.selectOption.label).value[i]\" [nzValue]=\"option\"\n nzHide>\n </nz-option>\n </ng-container>\n </nz-select>\n </ng-container>\n <ng-container *ngSwitchCase=\"7\">\n <span>{{columnItem.value || validateHdForm.get(columnItem.name).value}}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"8\">\n <nz-switch [formControlName]=\"columnItem.name\"></nz-switch>\n </ng-container>\n <ng-container *ngSwitchCase=\"9\">\n <nz-time-picker [formControlName]=\"columnItem.name\"></nz-time-picker>\n </ng-container>\n </ng-container>\n </nz-form-control>\n </nz-form-item>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n</form>",
329
329
  styles: ["::ng-deep .common-btn-group>a{font-size:12px;font-weight:400;color:#12a34f!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e}::ng-deep .ant-input-number-input{height:28px}::ng-deep .ant-input-number{height:28px}textarea.ant-input{height:auto;min-height:28px}::ng-deep .ant-select-selection--multiple{min-height:28px}::ng-deep .ant-select-selection__rendered>ul>li{height:22px!important;margin-top:3px!important;line-height:22px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:28px!important}::ng-deep .ant-input{height:28px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:28px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:12px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:12px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-time-picker{width:100%}.hd-formItem-container .hd-formItem-label{width:108px;word-break:break-all;text-align:right}.hd-formItem-container .hd-formItem-control{width:calc(100% - 108px)}.hd-formItem-container .ant-input-number{width:100%}.hd-formItem-container .hd-formItem-label-flex{display:inline-flex;flex-direction:column}.hd-formItem-container .hd-formItem-label-flex span{display:inline-block}.hd-formItem-container .hd-formItem-label-flex .hd-formItem-label-require{margin-right:4px;color:#f5222d;font-size:12px;font-family:SimSun,sans-serif}.hd-formItem-container .hd-formItem-label-flex .hd-formItem-label-explain{margin-top:-13px;color:#f5222d}.hd-formItem-container textarea{margin-top:8px}"]
330
330
  }] }
331
331
  ];
@@ -367,4 +367,4 @@ if (false) {
367
367
  */
368
368
  HdFormComponent.prototype.fb;
369
369
  }
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mYW50YXN5LW5nem9ycm8vIiwic291cmNlcyI6WyJoZC1mb3JtL2hkLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFROUMsTUFBTSxPQUFPLGVBQWU7Ozs7SUFXMUIsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFSekIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSW5DLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFDeEQsb0JBQWUsR0FBVyxDQUFDLENBQUMsQ0FBRSxTQUFTO1FBSTdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDbkMsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUMsQ0FBQztJQUMvRCxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFD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QUM7Ozs7O0lBRU0sVUFBVSxDQUFDLE1BQWdCOztjQUMxQixXQUFXLEdBQUcsRUFBRTtRQUN0QixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs7WUFsT0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxTQUFTO2dCQUNuQix1am5CQUF1Qzs7YUFFeEM7Ozs7WUFUUSxXQUFXOzs7dUJBWWpCLEtBQUs7MEJBQ0wsTUFBTTs7OztJQURQLG1DQUFtQzs7SUFDbkMsc0NBQTJDOztJQUMzQyx5Q0FBMEI7O0lBQzFCLHFDQUFtQjs7Ozs7SUFFbkIsd0NBQWdFOzs7OztJQUNoRSwwQ0FBb0M7Ozs7O0lBRXBDLDZDQUFxRDs7Ozs7SUFDekMsNkJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUl0ZW0gfSBmcm9tICcuL2hkLWZvcm0uc2VydmljZSc7XG4vLyBpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hkLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaGQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hkLWZvcm0uY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBIZEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGZvcm1MaXN0OiBBcnJheTxGb3JtSXRlbT47XG4gIEBPdXRwdXQoKSBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgdmFsaWRhdGVIZEZvcm06IEZvcm1Hcm91cDtcbiAgaW5wdXRWYWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZm46IGFueSwgZXZlbnQ6IGFueTsgfT4oKTtcbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVvdXQ6IG51bWJlciA9IDA7ICAvLyDpu5jorqTpmLLmipbml7bpl7RcblxuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5zZWFyY2hTdWJqZWN0LnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVvdXQpXG4gICAgKS5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50IH0pID0+IHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCkpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1MaXN0IHx8IHRoaXMuZm9ybUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2Zvcm1MaXN0J10gJiYgSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1snZm9ybUxpc3QnXS5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydmb3JtTGlzdCddLnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybUxpc3QgfHwgdGhpcy5mb3JtTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hFdmVudChmbjogYW55LCBldmVudDogYW55LCBvblNlYXJjaEV2ZW50RGVib3VuY2VUaW1lOiBhbnkpIHtcbiAgICBpZiAob25TZWFyY2hFdmVudERlYm91bmNlVGltZSkge1xuICAgICAgLy8g5pu05paw6Ziy5oqW5pe26Ze0XG4gICAgICB0aGlzLmRlYm91bmNlVGltZW91dCA9IG9uU2VhcmNoRXZlbnREZWJvdW5jZVRpbWU7XG5cbiAgICAgIC8vIOWPlua2iOS5i+WJjeeahOiuoumYhVxuICAgICAgaWYgKHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIOWIm+W7uuaWsOeahOiuoumYhVxuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaFN1YmplY3QucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lb3V0KVxuICAgICAgKS5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50IH0pID0+IHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCkpO1xuXG4gICAgICAvLyDlj5HpgIHkuovku7ZcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHsgZm4sIGV2ZW50IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyaWdnZXJFdmVudChmbiwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRyaWdnZXJFdmVudChmbjogYW55LCBldmVudDogYW55KSB7XG4gICAgaWYgKGZuKSB7XG4gICAgICBmbihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIOW8guW4uOaNleiOt1xuICAgIGlmICghdGhpcy5jaGVja0xpc3QodGhpcy5mb3JtTGlzdCkpIHtcbiAgICAgIHRocm93ICdmb3Jt57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyDJztcbiAgICB9XG4gICAgLy8g5a+56KGo5Y2V5pWw5o2u5YGa5Yid5aeL5YyW77yM55Socm936ZqU56a75q+P6KGM5pWw5o2uaXRlbVxuICAgIHRoaXMuZGVhbFJvdygpO1xuICAgIC8vIOmmluWFiOagueaNruWumuS5ieeahOe7hOS7tuaVsOe7hCAg5Y675Yid5aeL5YyW6KGo5Y2VXG4gICAgbGV0IGZvcm1Hcm91cExpc3QgPSB7fTtcbiAgICB0aGlzLmZvcm1MaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAvLyDml6XmnJ/nm7jlhbPnmoTmjqfku7blgZrnibnmrorlpITnkIZcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IDIgJiYgaXRlbS52YWx1ZSkge1xuICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBpdGVtLnZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy0nKS5tYXAoc3RyID0+IHBhcnNlSW50KHN0cikpO1xuICAgICAgICBjb25zdCBuZXdEYXRlU3RyID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpXG4gICAgICAgICAgLnRvTG9jYWxlRGF0ZVN0cmluZygnemgtSGFucy1DTicsIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyB9KVxuICAgICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJy0nKTtcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9yKSB7XG4gICAgICAgICAgZm9ybUdyb3VwTGlzdFtpdGVtLm5hbWVdID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IG5ldyBEYXRlKG5ld0RhdGVTdHIpLCBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9LCBpdGVtLnJlcXVpcmUgJiYgIWl0ZW0uaGlkZSA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpdGVtLnZhbGlkYXRvcl0gOiBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9ybUdyb3VwTGlzdFtpdGVtLm5hbWVdID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IG5ldyBEYXRlKG5ld0RhdGVTdHIpLCBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9LCBpdGVtLnJlcXVpcmUgJiYgIWl0ZW0uaGlkZSA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IDMgJiYgaXRlbS52YWx1ZSkge1xuICAgICAgICBsZXQgZm9ybUl0ZW1EYXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtLnZhbHVlKSk7XG4gICAgICAgIGlmIChmb3JtSXRlbURhdGUgJiYgZm9ybUl0ZW1EYXRlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICBmb3JtSXRlbURhdGUgPSBmb3JtSXRlbURhdGUubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBpdGVtLnNwbGl0KCctJykubWFwKHN0ciA9PiBwYXJzZUludChzdHIpKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGVTdHIgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSlcbiAgICAgICAgICAgICAgLnRvTG9jYWxlRGF0ZVN0cmluZygnemgtSGFucy1DTicsIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyB9KVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvL2csICctJyk7XG4gICAgICAgICAgICBpdGVtID0gbmV3IERhdGUobmV3RGF0ZVN0cik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9yKSB7XG4gICAgICAgICAgICBmb3JtR3JvdXBMaXN0W2l0ZW0ubmFtZV0gPSB0aGlzLmZiLmNvbnRyb2woeyB2YWx1ZTogZm9ybUl0ZW1EYXRlLCBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9LCBpdGVtLnJlcXVpcmUgJiYgIWl0ZW0uaGlkZSA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpdGVtLnZhbGlkYXRvcl0gOiBbXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cExpc3RbaXRlbS5uYW1lXSA9IHRoaXMuZmIuY29udHJvbCh7IHZhbHVlOiBmb3JtSXRlbURhdGUsIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkIH0sIGl0ZW0ucmVxdWlyZSAmJiAhaXRlbS5oaWRlID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyAnZm9ybee7hOS7tuS4rURhdGVSYW5nZeaOp+S7tnZhbHVl5YC85qC85byP5LiN6KeE6IyD77yM5q2j56Gu56S65L6LW1xcJzIwMjAtMDEtMjJcXCcsIFxcJzIwMjAtMDEtMjNcXCddJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9yKSB7XG4gICAgICAgICAgZm9ybUdyb3VwTGlzdFtpdGVtLm5hbWVdID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IGl0ZW0udmFsdWUsIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkIH0sIGl0ZW0ucmVxdWlyZSAmJiAhaXRlbS5oaWRlID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGl0ZW0udmFsaWRhdG9yXSA6IFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtR3JvdXBMaXN0W2l0ZW0ubmFtZV0gPSB0aGlzLmZiLmNvbnRyb2woeyB2YWx1ZTogaXRlbS52YWx1ZSwgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWQgfSwgaXRlbS5yZXF1aXJlICYmICFpdGVtLmhpZGUgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVIZEZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cExpc3QpO1xuXG4gICAgdGhpcy5mb3JtTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5vbkNoYW5nZUV2ZW50KSB7XG4gICAgICAgIGlmIChpdGVtLm9uQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICBpZiAoaXRlbS5vbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlSGRGb3JtLmdldChpdGVtLm5hbWUpLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoaXRlbS5vbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlSGRGb3JtLmdldChpdGVtLm5hbWUpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGVIZEZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShkYXRhID0+IHRoaXMub25IZEZvcm1WYWx1ZUNoYW5nZWQoZGF0YSkpO1xuICAgIHRoaXMub25IZEZvcm1WYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVhbFJvdygpIHtcbiAgICAvLyDkuIDpmLbmrrUg6YGN5Y6G5pWw5o2u6K6h566X55u45YWz5pWw5o2uXG4gICAgY29uc3QgZm9ybUxpc3RMZW5ndGggPSB0aGlzLmZvcm1MaXN0Lmxlbmd0aDtcbiAgICBsZXQgc3RlcCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtTGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybUxpc3RbaV0uaGlkZSkge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZm9ybUxpc3RbaV0udG90YWxXaWR0aCA9IHRoaXMuZm9ybUxpc3RbaV0ud2lkdGggfHwgMTtcbiAgICAgICAgICB0aGlzLmZvcm1MaXN0W2ldLmlzUm93Rmlyc3QgPSAxO1xuICAgICAgICAgIHN0ZXAgPSBzdGVwICsgNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyDljrvmib7liLDliY3kuIDkuKrpnZ5oaWRl55qE5o6n5Lu2XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGkgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUxpc3Rbal0udG90YWxXaWR0aCkge1xuICAgICAgICAgICAgICB0aGlzLmZvcm1MaXN0W2ldLnRvdGFsV2lkdGggPSB0aGlzLmZvcm1MaXN0W2pdLnRvdGFsV2lkdGggKyAodGhpcy5mb3JtTGlzdFtpXS53aWR0aCB8fCAxKTtcbiAgICAgICAgICAgICAgaWYgKCh0aGlzLmZvcm1MaXN0W2pdLnRvdGFsV2lkdGggKyB0aGlzLmZvcm1MaXN0W2ldLndpZHRoKSA+IHN0ZXAgJiYgdGhpcy5mb3JtTGlzdFtqXS50b3RhbFdpZHRoIDw9IHN0ZXApIHtcbiAgICAgICAgICAgICAgICBzdGVwID0gc3RlcCArIDQ7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtTGlzdFtpXS5pc1Jvd0ZpcnN0ID0gMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1MaXN0W2ldLmlzUm93Rmlyc3QgPSAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyDkuozpmLbmrrUgaXNSb3dGaXJzdOeahOaVsOe7hOmhueWinuWKoOWtkOiKgueCuVxuICAgIGZvciAobGV0IG0gPSAwOyBtIDwgZm9ybUxpc3RMZW5ndGg7IG0rKykge1xuICAgICAgaWYgKHRoaXMuZm9ybUxpc3RbbV0uaXNSb3dGaXJzdCA9PT0gMSkge1xuICAgICAgICB0aGlzLmZvcm1MaXN0W21dLmNvbHVtbkl0ZW1zID0gW107XG4gICAgICAgIGxldCBzcGFjZSA9IDA7XG4gICAgICAgIGZvciAobGV0IG4gPSAxOyBuIDwgZm9ybUxpc3RMZW5ndGggLSBtOyBuKyspIHtcbiAgICAgICAgICBpZiAoc3BhY2UgPT09IDQgfHwgdGhpcy5mb3JtTGlzdFttICsgbl0uaXNSb3dGaXJzdCA9PT0gMSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghdGhpcy5mb3JtTGlzdFttICsgbl0uaGlkZSAmJiB0aGlzLmZvcm1MaXN0W20gKyBuXSAmJiB0aGlzLmZvcm1MaXN0W20gKyBuXS5pc1Jvd0ZpcnN0ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1MaXN0W21dLmNvbHVtbkl0ZW1zLnB1c2godGhpcy5mb3JtTGlzdFttICsgbl0pO1xuICAgICAgICAgICAgc3BhY2UrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uSGRGb3JtVmFsdWVDaGFuZ2VkKGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodGhpcy52YWxpZGF0ZUhkRm9ybSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTGlzdChsaXN0OiBBcnJheTxGb3JtSXRlbT4pOiBib29sZWFuIHtcbiAgICBpZiAoIWxpc3QgfHwgKGxpc3QgJiYgbGlzdC5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBuYW1lTGlzdCA9IFtdO1xuICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgLy8g5qCh6aqM5Y2V6aG56YCJ5oup5ZmoXG4gICAgICAvLyBpZiAoaXRlbS50eXBlID09PSBGb3JtTGlzdFR5cGUuU2VsZWN0ICYmICghaXRlbS5zZWxlY3RPcHRpb24uc2VsZWN0TGlzdCB8fCAoaXRlbS5zZWxlY3RPcHRpb24uc2VsZWN0TGlzdCAmJiBpdGVtLnNlbGVjdE9wdGlvbi5zZWxlY3RMaXN0Lmxlbmd0aCA9PT0gMCkpKSB7XG4gICAgICAvLyAgIHRocm93ICdmb3Jt57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyD77yM5a2Y5Zyo5Y2V6aG56YCJ5oup5Zmo5rKh5pyJ5Lyg5YWl6YCJ6aG5ISdcbiAgICAgIC8vIH1cbiAgICAgIG5hbWVMaXN0LnB1c2goaXRlbS5uYW1lKTtcbiAgICB9KTtcbiAgICAvLyDmoKHpqoxuYW1l5piv5ZCm6YeN5aSNXG4gICAgaWYgKFsuLi5uZXcgU2V0KG5hbWVMaXN0KV0ubGVuZ3RoICE9PSBsaXN0Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgJ2Zvcm3nu4Tku7bmlbDmja7moLzlvI/kuI3op4TojIPvvIzlrZjlnKjph43lpI1uYW1l5YC8ISc7XG4gICAgfVxuICAgIC8vIC4uLm1vcmUgY2hlY2tcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRGb3JtKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy52YWxpZGF0ZUhkRm9ybS5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh0aGlzLnZhbGlkYXRlSGRGb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlSGRGb3JtLnJlc2V0KCk7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnZhbGlkYXRlSGRGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHRoaXMudmFsaWRhdGVIZEZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRDbGVhbihmaWx0ZXI6IEZvcm1JdGVtKTogdm9pZCB7XG4gICAgY29uc3QgcGF0Y2hPYmplY3QgPSB7fTtcbiAgICBwYXRjaE9iamVjdFtmaWx0ZXIubmFtZV0gPSBudWxsO1xuICAgIHRoaXMudmFsaWRhdGVIZEZvcm0ucGF0Y2hWYWx1ZShwYXRjaE9iamVjdCk7XG4gIH1cbn1cbiJdfQ==
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mYW50YXN5LW5nem9ycm8vIiwic291cmNlcyI6WyJoZC1mb3JtL2hkLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFROUMsTUFBTSxPQUFPLGVBQWU7Ozs7SUFXMUIsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFSekIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSW5DLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFDeEQsb0JBQWUsR0FBVyxDQUFDLENBQUMsQ0FBRSxTQUFTO1FBSTdDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0MsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FDbkMsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUMsQ0FBQztJQUMvRCxDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNoRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFD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QUM7Ozs7O0lBRU0sVUFBVSxDQUFDLE1BQWdCOztjQUMxQixXQUFXLEdBQUcsRUFBRTtRQUN0QixXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDOzs7WUFsT0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxTQUFTO2dCQUNuQiw2OW9CQUF1Qzs7YUFFeEM7Ozs7WUFUUSxXQUFXOzs7dUJBWWpCLEtBQUs7MEJBQ0wsTUFBTTs7OztJQURQLG1DQUFtQzs7SUFDbkMsc0NBQTJDOztJQUMzQyx5Q0FBMEI7O0lBQzFCLHFDQUFtQjs7Ozs7SUFFbkIsd0NBQWdFOzs7OztJQUNoRSwwQ0FBb0M7Ozs7O0lBRXBDLDZDQUFxRDs7Ozs7SUFDekMsNkJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUl0ZW0gfSBmcm9tICcuL2hkLWZvcm0uc2VydmljZSc7XG4vLyBpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hkLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaGQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hkLWZvcm0uY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBIZEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGZvcm1MaXN0OiBBcnJheTxGb3JtSXRlbT47XG4gIEBPdXRwdXQoKSBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgdmFsaWRhdGVIZEZvcm06IEZvcm1Hcm91cDtcbiAgaW5wdXRWYWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHsgZm46IGFueSwgZXZlbnQ6IGFueTsgfT4oKTtcbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVvdXQ6IG51bWJlciA9IDA7ICAvLyDpu5jorqTpmLLmipbml7bpl7RcblxuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5zZWFyY2hTdWJqZWN0LnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVvdXQpXG4gICAgKS5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50IH0pID0+IHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCkpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1MaXN0IHx8IHRoaXMuZm9ybUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2Zvcm1MaXN0J10gJiYgSlNPTi5zdHJpbmdpZnkoY2hhbmdlc1snZm9ybUxpc3QnXS5jdXJyZW50VmFsdWUpICE9PSBKU09OLnN0cmluZ2lmeShjaGFuZ2VzWydmb3JtTGlzdCddLnByZXZpb3VzVmFsdWUpKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybUxpc3QgfHwgdGhpcy5mb3JtTGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuICB9XG5cbiAgb25TZWFyY2hFdmVudChmbjogYW55LCBldmVudDogYW55LCBvblNlYXJjaEV2ZW50RGVib3VuY2VUaW1lOiBhbnkpIHtcbiAgICBpZiAob25TZWFyY2hFdmVudERlYm91bmNlVGltZSkge1xuICAgICAgLy8g5pu05paw6Ziy5oqW5pe26Ze0XG4gICAgICB0aGlzLmRlYm91bmNlVGltZW91dCA9IG9uU2VhcmNoRXZlbnREZWJvdW5jZVRpbWU7XG5cbiAgICAgIC8vIOWPlua2iOS5i+WJjeeahOiuoumYhVxuICAgICAgaWYgKHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIOWIm+W7uuaWsOeahOiuoumYhVxuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaFN1YmplY3QucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lb3V0KVxuICAgICAgKS5zdWJzY3JpYmUoKHsgZm4sIGV2ZW50IH0pID0+IHRoaXMudHJpZ2dlckV2ZW50KGZuLCBldmVudCkpO1xuXG4gICAgICAvLyDlj5HpgIHkuovku7ZcbiAgICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHsgZm4sIGV2ZW50IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyaWdnZXJFdmVudChmbiwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRyaWdnZXJFdmVudChmbjogYW55LCBldmVudDogYW55KSB7XG4gICAgaWYgKGZuKSB7XG4gICAgICBmbihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIOW8guW4uOaNleiOt1xuICAgIGlmICghdGhpcy5jaGVja0xpc3QodGhpcy5mb3JtTGlzdCkpIHtcbiAgICAgIHRocm93ICdmb3Jt57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyDJztcbiAgICB9XG4gICAgLy8g5a+56KGo5Y2V5pWw5o2u5YGa5Yid5aeL5YyW77yM55Socm936ZqU56a75q+P6KGM5pWw5o2uaXRlbVxuICAgIHRoaXMuZGVhbFJvdygpO1xuICAgIC8vIOmmluWFiOagueaNruWumuS5ieeahOe7hOS7tuaVsOe7hCAg5Y675Yid5aeL5YyW6KGo5Y2VXG4gICAgbGV0IGZvcm1Hcm91cExpc3QgPSB7fTtcbiAgICB0aGlzLmZvcm1MaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAvLyDml6XmnJ/nm7jlhbPnmoTmjqfku7blgZrnibnmrorlpITnkIZcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IDIgJiYgaXRlbS52YWx1ZSkge1xuICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBpdGVtLnZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy0nKS5tYXAoc3RyID0+IHBhcnNlSW50KHN0cikpO1xuICAgICAgICBjb25zdCBuZXdEYXRlU3RyID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpXG4gICAgICAgICAgLnRvTG9jYWxlRGF0ZVN0cmluZygnemgtSGFucy1DTicsIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyB9KVxuICAgICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJy0nKTtcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9yKSB7XG4gICAgICAgICAgZm9ybUdyb3VwTGlzdFtpdGVtLm5hbWVdID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IG5ldyBEYXRlKG5ld0RhdGVTdHIpLCBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9LCBpdGVtLnJlcXVpcmUgJiYgIWl0ZW0uaGlkZSA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpdGVtLnZhbGlkYXRvcl0gOiBbXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZm9ybUdyb3VwTGlzdFtpdGVtLm5hbWVdID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IG5ldyBEYXRlKG5ld0RhdGVTdHIpLCBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9LCBpdGVtLnJlcXVpcmUgJiYgIWl0ZW0uaGlkZSA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IDMgJiYgaXRlbS52YWx1ZSkge1xuICAgICAgICBsZXQgZm9ybUl0ZW1EYXRlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtLnZhbHVlKSk7XG4gICAgICAgIGlmIChmb3JtSXRlbURhdGUgJiYgZm9ybUl0ZW1EYXRlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICBmb3JtSXRlbURhdGUgPSBmb3JtSXRlbURhdGUubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSBpdGVtLnNwbGl0KCctJykubWFwKHN0ciA9PiBwYXJzZUludChzdHIpKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGVTdHIgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSlcbiAgICAgICAgICAgICAgLnRvTG9jYWxlRGF0ZVN0cmluZygnemgtSGFucy1DTicsIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyB9KVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXFwvL2csICctJyk7XG4gICAgICAgICAgICBpdGVtID0gbmV3IERhdGUobmV3RGF0ZVN0cik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9yKSB7XG4gICAgICAgICAgICBmb3JtR3JvdXBMaXN0W2l0ZW0ubmFtZV0gPSB0aGlzLmZiLmNvbnRyb2woeyB2YWx1ZTogZm9ybUl0ZW1EYXRlLCBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9LCBpdGVtLnJlcXVpcmUgJiYgIWl0ZW0uaGlkZSA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBpdGVtLnZhbGlkYXRvcl0gOiBbXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1Hcm91cExpc3RbaXRlbS5uYW1lXSA9IHRoaXMuZmIuY29udHJvbCh7IHZhbHVlOiBmb3JtSXRlbURhdGUsIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkIH0sIGl0ZW0ucmVxdWlyZSAmJiAhaXRlbS5oaWRlID8gW1ZhbGlkYXRvcnMucmVxdWlyZWRdIDogW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyAnZm9ybee7hOS7tuS4rURhdGVSYW5nZeaOp+S7tnZhbHVl5YC85qC85byP5LiN6KeE6IyD77yM5q2j56Gu56S65L6LW1xcJzIwMjAtMDEtMjJcXCcsIFxcJzIwMjAtMDEtMjNcXCddJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGl0ZW0udmFsaWRhdG9yKSB7XG4gICAgICAgICAgZm9ybUdyb3VwTGlzdFtpdGVtLm5hbWVdID0gdGhpcy5mYi5jb250cm9sKHsgdmFsdWU6IGl0ZW0udmFsdWUsIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkIH0sIGl0ZW0ucmVxdWlyZSAmJiAhaXRlbS5oaWRlID8gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGl0ZW0udmFsaWRhdG9yXSA6IFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3JtR3JvdXBMaXN0W2l0ZW0ubmFtZV0gPSB0aGlzLmZiLmNvbnRyb2woeyB2YWx1ZTogaXRlbS52YWx1ZSwgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWQgfSwgaXRlbS5yZXF1aXJlICYmICFpdGVtLmhpZGUgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVIZEZvcm0gPSB0aGlzLmZiLmdyb3VwKGZvcm1Hcm91cExpc3QpO1xuXG4gICAgdGhpcy5mb3JtTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5vbkNoYW5nZUV2ZW50KSB7XG4gICAgICAgIGlmIChpdGVtLm9uQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICBpZiAoaXRlbS5vbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lKSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlSGRGb3JtLmdldChpdGVtLm5hbWUpLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoaXRlbS5vbkNoYW5nZUV2ZW50RGVib3VuY2VUaW1lKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlSGRGb3JtLmdldChpdGVtLm5hbWUpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy50cmlnZ2VyRXZlbnQoaXRlbS5vbkNoYW5nZUV2ZW50LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGVIZEZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShkYXRhID0+IHRoaXMub25IZEZvcm1WYWx1ZUNoYW5nZWQoZGF0YSkpO1xuICAgIHRoaXMub25IZEZvcm1WYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVhbFJvdygpIHtcbiAgICAvLyDkuIDpmLbmrrUg6YGN5Y6G5pWw5o2u6K6h566X55u45YWz5pWw5o2uXG4gICAgY29uc3QgZm9ybUxpc3RMZW5ndGggPSB0aGlzLmZvcm1MaXN0Lmxlbmd0aDtcbiAgICBsZXQgc3RlcCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtTGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIXRoaXMuZm9ybUxpc3RbaV0uaGlkZSkge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZm9ybUxpc3RbaV0udG90YWxXaWR0aCA9IHRoaXMuZm9ybUxpc3RbaV0ud2lkdGggfHwgMTtcbiAgICAgICAgICB0aGlzLmZvcm1MaXN0W2ldLmlzUm93Rmlyc3QgPSAxO1xuICAgICAgICAgIHN0ZXAgPSBzdGVwICsgNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyDljrvmib7liLDliY3kuIDkuKrpnZ5oaWRl55qE5o6n5Lu2XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGkgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUxpc3Rbal0udG90YWxXaWR0aCkge1xuICAgICAgICAgICAgICB0aGlzLmZvcm1MaXN0W2ldLnRvdGFsV2lkdGggPSB0aGlzLmZvcm1MaXN0W2pdLnRvdGFsV2lkdGggKyAodGhpcy5mb3JtTGlzdFtpXS53aWR0aCB8fCAxKTtcbiAgICAgICAgICAgICAgaWYgKCh0aGlzLmZvcm1MaXN0W2pdLnRvdGFsV2lkdGggKyB0aGlzLmZvcm1MaXN0W2ldLndpZHRoKSA+IHN0ZXAgJiYgdGhpcy5mb3JtTGlzdFtqXS50b3RhbFdpZHRoIDw9IHN0ZXApIHtcbiAgICAgICAgICAgICAgICBzdGVwID0gc3RlcCArIDQ7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtTGlzdFtpXS5pc1Jvd0ZpcnN0ID0gMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1MaXN0W2ldLmlzUm93Rmlyc3QgPSAwO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyDkuozpmLbmrrUgaXNSb3dGaXJzdOeahOaVsOe7hOmhueWinuWKoOWtkOiKgueCuVxuICAgIGZvciAobGV0IG0gPSAwOyBtIDwgZm9ybUxpc3RMZW5ndGg7IG0rKykge1xuICAgICAgaWYgKHRoaXMuZm9ybUxpc3RbbV0uaXNSb3dGaXJzdCA9PT0gMSkge1xuICAgICAgICB0aGlzLmZvcm1MaXN0W21dLmNvbHVtbkl0ZW1zID0gW107XG4gICAgICAgIGxldCBzcGFjZSA9IDA7XG4gICAgICAgIGZvciAobGV0IG4gPSAxOyBuIDwgZm9ybUxpc3RMZW5ndGggLSBtOyBuKyspIHtcbiAgICAgICAgICBpZiAoc3BhY2UgPT09IDQgfHwgdGhpcy5mb3JtTGlzdFttICsgbl0uaXNSb3dGaXJzdCA9PT0gMSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghdGhpcy5mb3JtTGlzdFttICsgbl0uaGlkZSAmJiB0aGlzLmZvcm1MaXN0W20gKyBuXSAmJiB0aGlzLmZvcm1MaXN0W20gKyBuXS5pc1Jvd0ZpcnN0ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1MaXN0W21dLmNvbHVtbkl0ZW1zLnB1c2godGhpcy5mb3JtTGlzdFttICsgbl0pO1xuICAgICAgICAgICAgc3BhY2UrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uSGRGb3JtVmFsdWVDaGFuZ2VkKGRhdGE/OiBhbnkpIHtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodGhpcy52YWxpZGF0ZUhkRm9ybSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTGlzdChsaXN0OiBBcnJheTxGb3JtSXRlbT4pOiBib29sZWFuIHtcbiAgICBpZiAoIWxpc3QgfHwgKGxpc3QgJiYgbGlzdC5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBuYW1lTGlzdCA9IFtdO1xuICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgLy8g5qCh6aqM5Y2V6aG56YCJ5oup5ZmoXG4gICAgICAvLyBpZiAoaXRlbS50eXBlID09PSBGb3JtTGlzdFR5cGUuU2VsZWN0ICYmICghaXRlbS5zZWxlY3RPcHRpb24uc2VsZWN0TGlzdCB8fCAoaXRlbS5zZWxlY3RPcHRpb24uc2VsZWN0TGlzdCAmJiBpdGVtLnNlbGVjdE9wdGlvbi5zZWxlY3RMaXN0Lmxlbmd0aCA9PT0gMCkpKSB7XG4gICAgICAvLyAgIHRocm93ICdmb3Jt57uE5Lu25pWw5o2u5qC85byP5LiN6KeE6IyD77yM5a2Y5Zyo5Y2V6aG56YCJ5oup5Zmo5rKh5pyJ5Lyg5YWl6YCJ6aG5ISdcbiAgICAgIC8vIH1cbiAgICAgIG5hbWVMaXN0LnB1c2goaXRlbS5uYW1lKTtcbiAgICB9KTtcbiAgICAvLyDmoKHpqoxuYW1l5piv5ZCm6YeN5aSNXG4gICAgaWYgKFsuLi5uZXcgU2V0KG5hbWVMaXN0KV0ubGVuZ3RoICE9PSBsaXN0Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgJ2Zvcm3nu4Tku7bmlbDmja7moLzlvI/kuI3op4TojIPvvIzlrZjlnKjph43lpI1uYW1l5YC8ISc7XG4gICAgfVxuICAgIC8vIC4uLm1vcmUgY2hlY2tcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRGb3JtKCk6IHZvaWQge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy52YWxpZGF0ZUhkRm9ybS5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh0aGlzLnZhbGlkYXRlSGRGb3JtLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlSGRGb3JtLnJlc2V0KCk7XG4gICAgT2JqZWN0LnZhbHVlcyh0aGlzLnZhbGlkYXRlSGRGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSk7XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHRoaXMudmFsaWRhdGVIZEZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRDbGVhbihmaWx0ZXI6IEZvcm1JdGVtKTogdm9pZCB7XG4gICAgY29uc3QgcGF0Y2hPYmplY3QgPSB7fTtcbiAgICBwYXRjaE9iamVjdFtmaWx0ZXIubmFtZV0gPSBudWxsO1xuICAgIHRoaXMudmFsaWRhdGVIZEZvcm0ucGF0Y2hWYWx1ZShwYXRjaE9iamVjdCk7XG4gIH1cbn1cbiJdfQ==