@snabcentr/client-ui 3.27.6 → 3.29.0

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.
@@ -37,11 +37,11 @@ export class ScPriceWarehouseStockComponent {
37
37
  this.warehousesList$ = this.selectedWarehouse$.pipe(switchMap((warehouse) => this.warehouseService.getWarehouses$().pipe(map((warehouses) => this.product.stockCount?.map((sc) => ({ w: warehouses.find((w) => w.id === sc.warehouseId), sc: sc }))), map((items) => items?.sort((item) => (item.w?.id === warehouse?.id ? -1 : 1))))));
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScPriceWarehouseStockComponent, deps: [{ token: i1.ScWarehouseService }], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScPriceWarehouseStockComponent, isStandalone: true, selector: "sc-price-warehouse-stock", inputs: { classList: "classList", product: "product", withStockHint: "withStockHint", fromMain: "fromMain" }, ngImport: i0, template: "<ng-container *ngIf=\"product\">\n <ng-container *ngIf=\"selectedWarehouse$ | async as warehouseSelect\">\n <span\n *tuiLet=\"withStockHint && !!(warehousesList$ | async)?.length as showStockHint\"\n [tuiHint]=\"showStockHint && stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n >\n <ng-container *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\">\n <a\n *tuiLet=\"!!(product.properties?.planingIncomingDate || product.properties?.planingProductionDate) as showPlaningHint\"\n tuiLink\n [pseudo]=\"showPlaningHint\"\n [tuiHint]=\"showPlaningHint && planingHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n [style.color]=\"'var(--tui-status-negative)'\"\n [ngClass]=\"classList\"\n >\n {{ message }}\n </a>\n </ng-container>\n <ng-template #planingHint>\n <span *ngIf=\"product.properties?.planingIncomingDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F <br />\n \u043D\u0430 \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u043A\u043B\u0430\u0434:\n <span class=\"font-bold\">{{ product.properties?.planingIncomingDate }}</span>\n </span>\n <span *ngIf=\"product.properties?.planingProductionDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0430:\n <span class=\"font-bold\">{{ product.properties?.planingProductionDate }}</span>\n </span>\n </ng-template>\n <a\n *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\"\n tuiLink\n [pseudo]=\"showStockHint\"\n [style.color]=\"'var(--tui-status-positive)'\"\n [ngClass]=\"classList\"\n >\n \u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </a>\n <span\n *ngIf=\"product.onOrder\"\n [style.color]=\"'var(--tui-status-warning)'\"\n [ngClass]=\"classList\"\n >\u041F\u043E\u0434 \u0437\u0430\u043A\u0430\u0437</span\n >\n </span>\n </ng-container>\n\n <ng-template #stockHint>\n <table\n *ngIf=\"selectedWarehouse$ | async as warehouseSelect\"\n class=\"stock-table table-auto text-body-s\"\n [ngClass]=\"classList\"\n >\n <tbody>\n <tr\n *ngFor=\"let item of warehousesList$ | async\"\n class=\"border-b\"\n >\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : '\u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep tui-hint:has(.stock-table){max-inline-size:22rem}[tuiIconButton]{--tui-radius-m: .75rem;--tui-height-xs: 1.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScPriceWarehouseStockComponent, isStandalone: true, selector: "sc-price-warehouse-stock", inputs: { classList: "classList", product: "product", withStockHint: "withStockHint", fromMain: "fromMain" }, ngImport: i0, template: "<ng-container *ngIf=\"product\">\n @let isDisabled = product.isHidden || product.isNull;\n\n <ng-container *ngIf=\"selectedWarehouse$ | async as warehouseSelect\">\n <span *tuiLet=\"withStockHint && !!(warehousesList$ | async)?.length as showStockHint\">\n <ng-container *ngIf=\"!product.stockCount?.length && product.getNotStockMessage(warehouseSelect) as message\">\n <a\n *tuiLet=\"!!(product.properties?.planingIncomingDate || product.properties?.planingProductionDate) as showPlaningHint\"\n tuiLink\n [pseudo]=\"showPlaningHint\"\n [tuiHint]=\"showPlaningHint && planingHint\"\n [class.disabled]=\"isDisabled\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n [style.color]=\"'var(--tui-status-negative)'\"\n [style.cursor]=\"showPlaningHint && planingHint ? 'pointer' : 'default'\"\n [ngClass]=\"classList\"\n >\n {{ message }}\n </a>\n </ng-container>\n <ng-template #planingHint>\n <span *ngIf=\"product.properties?.planingIncomingDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F <br />\n \u043D\u0430 \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u043A\u043B\u0430\u0434:\n <span class=\"font-bold\">{{ product.properties?.planingIncomingDate }}</span>\n </span>\n <span *ngIf=\"product.properties?.planingProductionDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0430:\n <span class=\"font-bold\">{{ product.properties?.planingProductionDate }}</span>\n </span>\n </ng-template>\n <span *ngIf=\"product.stockCount && product.stockCount.length && !product.onOrder\">\n \u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0430&nbsp;\n <span\n tuiLink\n [style.color]=\"'var(--tui-status-positive)'\"\n [tuiHint]=\"showStockHint && stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n [ngClass]=\"classList\"\n [class.disabled]=\"isDisabled\"\n class=\"!underline\"\n >\n {{ product.stockCount.length }} \u0441\u043A\u043B\u0430\u0434{{ product.stockCount.length > 1 ? '\u0430\u0445' : '\u0435' }}\n </span>\n </span>\n\n <span\n *ngIf=\"product.onOrder\"\n [style.color]=\"'var(--tui-status-warning)'\"\n [ngClass]=\"classList\"\n >\n \u041F\u043E\u0434 \u0437\u0430\u043A\u0430\u0437\n </span>\n </span>\n </ng-container>\n\n <ng-template #stockHint>\n <table\n *ngIf=\"selectedWarehouse$ | async as warehouseSelect\"\n class=\"stock-table table-auto text-body-s\"\n [ngClass]=\"classList\"\n >\n <tbody>\n <tr\n *ngFor=\"let item of warehousesList$ | async\"\n class=\"border-b\"\n >\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : '\u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep tui-hint:has(.stock-table){max-inline-size:22rem}[tuiIconButton]{--tui-radius-m: .75rem;--tui-height-xs: 1.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
41
41
  }
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScPriceWarehouseStockComponent, decorators: [{
43
43
  type: Component,
44
- args: [{ standalone: true, selector: 'sc-price-warehouse-stock', imports: [CommonModule, RouterModule, TuiTextfieldControllerModule, FormsModule, ReactiveFormsModule, ...TuiHint, TuiLink, TuiLet, ScFormatDatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"product\">\n <ng-container *ngIf=\"selectedWarehouse$ | async as warehouseSelect\">\n <span\n *tuiLet=\"withStockHint && !!(warehousesList$ | async)?.length as showStockHint\"\n [tuiHint]=\"showStockHint && stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n >\n <ng-container *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\">\n <a\n *tuiLet=\"!!(product.properties?.planingIncomingDate || product.properties?.planingProductionDate) as showPlaningHint\"\n tuiLink\n [pseudo]=\"showPlaningHint\"\n [tuiHint]=\"showPlaningHint && planingHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n [style.color]=\"'var(--tui-status-negative)'\"\n [ngClass]=\"classList\"\n >\n {{ message }}\n </a>\n </ng-container>\n <ng-template #planingHint>\n <span *ngIf=\"product.properties?.planingIncomingDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F <br />\n \u043D\u0430 \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u043A\u043B\u0430\u0434:\n <span class=\"font-bold\">{{ product.properties?.planingIncomingDate }}</span>\n </span>\n <span *ngIf=\"product.properties?.planingProductionDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0430:\n <span class=\"font-bold\">{{ product.properties?.planingProductionDate }}</span>\n </span>\n </ng-template>\n <a\n *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\"\n tuiLink\n [pseudo]=\"showStockHint\"\n [style.color]=\"'var(--tui-status-positive)'\"\n [ngClass]=\"classList\"\n >\n \u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </a>\n <span\n *ngIf=\"product.onOrder\"\n [style.color]=\"'var(--tui-status-warning)'\"\n [ngClass]=\"classList\"\n >\u041F\u043E\u0434 \u0437\u0430\u043A\u0430\u0437</span\n >\n </span>\n </ng-container>\n\n <ng-template #stockHint>\n <table\n *ngIf=\"selectedWarehouse$ | async as warehouseSelect\"\n class=\"stock-table table-auto text-body-s\"\n [ngClass]=\"classList\"\n >\n <tbody>\n <tr\n *ngFor=\"let item of warehousesList$ | async\"\n class=\"border-b\"\n >\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : '\u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep tui-hint:has(.stock-table){max-inline-size:22rem}[tuiIconButton]{--tui-radius-m: .75rem;--tui-height-xs: 1.25rem}\n"] }]
44
+ args: [{ standalone: true, selector: 'sc-price-warehouse-stock', imports: [CommonModule, RouterModule, TuiTextfieldControllerModule, FormsModule, ReactiveFormsModule, ...TuiHint, TuiLink, TuiLet, ScFormatDatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"product\">\n @let isDisabled = product.isHidden || product.isNull;\n\n <ng-container *ngIf=\"selectedWarehouse$ | async as warehouseSelect\">\n <span *tuiLet=\"withStockHint && !!(warehousesList$ | async)?.length as showStockHint\">\n <ng-container *ngIf=\"!product.stockCount?.length && product.getNotStockMessage(warehouseSelect) as message\">\n <a\n *tuiLet=\"!!(product.properties?.planingIncomingDate || product.properties?.planingProductionDate) as showPlaningHint\"\n tuiLink\n [pseudo]=\"showPlaningHint\"\n [tuiHint]=\"showPlaningHint && planingHint\"\n [class.disabled]=\"isDisabled\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n [style.color]=\"'var(--tui-status-negative)'\"\n [style.cursor]=\"showPlaningHint && planingHint ? 'pointer' : 'default'\"\n [ngClass]=\"classList\"\n >\n {{ message }}\n </a>\n </ng-container>\n <ng-template #planingHint>\n <span *ngIf=\"product.properties?.planingIncomingDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F <br />\n \u043D\u0430 \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u043A\u043B\u0430\u0434:\n <span class=\"font-bold\">{{ product.properties?.planingIncomingDate }}</span>\n </span>\n <span *ngIf=\"product.properties?.planingProductionDate\">\n \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 <br />\n \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0430:\n <span class=\"font-bold\">{{ product.properties?.planingProductionDate }}</span>\n </span>\n </ng-template>\n <span *ngIf=\"product.stockCount && product.stockCount.length && !product.onOrder\">\n \u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0430&nbsp;\n <span\n tuiLink\n [style.color]=\"'var(--tui-status-positive)'\"\n [tuiHint]=\"showStockHint && stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n [ngClass]=\"classList\"\n [class.disabled]=\"isDisabled\"\n class=\"!underline\"\n >\n {{ product.stockCount.length }} \u0441\u043A\u043B\u0430\u0434{{ product.stockCount.length > 1 ? '\u0430\u0445' : '\u0435' }}\n </span>\n </span>\n\n <span\n *ngIf=\"product.onOrder\"\n [style.color]=\"'var(--tui-status-warning)'\"\n [ngClass]=\"classList\"\n >\n \u041F\u043E\u0434 \u0437\u0430\u043A\u0430\u0437\n </span>\n </span>\n </ng-container>\n\n <ng-template #stockHint>\n <table\n *ngIf=\"selectedWarehouse$ | async as warehouseSelect\"\n class=\"stock-table table-auto text-body-s\"\n [ngClass]=\"classList\"\n >\n <tbody>\n <tr\n *ngFor=\"let item of warehousesList$ | async\"\n class=\"border-b\"\n >\n <ng-container>\n <td class=\"px-1\">{{ item.w?.name }}:</td>\n <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : '\u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </ng-template>\n</ng-container>\n", styles: ["::ng-deep tui-hint:has(.stock-table){max-inline-size:22rem}[tuiIconButton]{--tui-radius-m: .75rem;--tui-height-xs: 1.25rem}\n"] }]
45
45
  }], ctorParameters: () => [{ type: i1.ScWarehouseService }], propDecorators: { classList: [{
46
46
  type: Input
47
47
  }], product: [{
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
51
51
  }], fromMain: [{
52
52
  type: Input
53
53
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL3ByaWNlLXdhcmVob3VzZS1zdG9jay9zYy1wcmljZS13YXJlaG91c2Utc3RvY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvcHJpY2Utd2FyZWhvdXNlLXN0b2NrL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBRTlEOztHQUVHO0FBU0gsTUFBTSxPQUFPLDhCQUE4QjtJQStCdkM7Ozs7T0FJRztJQUNILFlBQW9DLGdCQUFvQztRQUFwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBekJ4RTs7V0FFRztRQUNhLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRTlDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLElBQUksQ0FBQztJQWlCa0MsQ0FBQztJQUU1RSxrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqSixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQy9DLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQ3ZDLEdBQUcsQ0FBQyxDQUFDLFVBQTBCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzNJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqRixDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7K0dBbERRLDhCQUE4QjttR0FBOUIsOEJBQThCLGtNQ3ZCM0Msc3JIQTJFQSxzTER2RGMsWUFBWSxrWkFBRSxZQUFZLDhCQUFFLDRCQUE0Qiw4QkFBRSxXQUFXLDhCQUFFLG1CQUFtQix1TUFBYyxPQUFPLDRGQUFFLE1BQU07OzRGQUd4SCw4QkFBOEI7a0JBUjFDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDBCQUEwQixXQUczQixDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsbUJBQ25JLHVCQUF1QixDQUFDLE1BQU07dUZBTS9CLFNBQVM7c0JBQXhCLEtBQUs7Z0JBS1UsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxhQUFhO3NCQUE1QixLQUFLO2dCQUtVLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2NJV2FyZWhvdXNlLCBTY0lXYXJlaG91c2VTdG9ja0NvdW50LCBTY1Byb2R1Y3QsIFNjV2FyZWhvdXNlU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpTGV0IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlIaW50LCBUdWlMaW5rIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NGb3JtYXREYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3NjLWZvcm1hdC1kYXRlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LTQsNC90L3Ri9GFINC+INC90LDQu9C40YfQuNC4INGC0L7QstCw0YDQsCDQvdCwINGB0LrQu9Cw0LTQtS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByaWNlLXdhcmVob3VzZS1zdG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICdzYy1wcmljZS13YXJlaG91c2Utc3RvY2suY29tcG9uZW50LnNjc3MnLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIC4uLlR1aUhpbnQsIFR1aUxpbmssIFR1aUxldCwgU2NGb3JtYXREYXRlUGlwZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjUHJpY2VXYXJlaG91c2VTdG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0KHRgtGA0L7QutCwINC60LvQsNGB0YHQvtCyINC00LvRjyDRgdCy0L7QudGB0YLQsiDRgdGC0LDRgtGD0YHQvtCyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGFzc0xpc3Q6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDRgtC+0LLQsNGA0LUv0YPRgdC70YPQs9C1LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcm9kdWN0OiBTY1Byb2R1Y3Q7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC/0L7QtNGB0LrQsNC30LrRgyDQv9C+INGB0LrQu9Cw0LTQsNC8LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB3aXRoU3RvY2tIaW50OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQv9C40YHQvtC6INC+0YHRgtCw0YLQutC+0LIg0L/QviDRgdC60LvQsNC00LDQvCDQv9GA0Lgg0LLRi9Cx0YDQsNC90L3QvtC8INC+0YHQvdC+0LLQvdC+0Lwg0YHQutC70LDQtNC1LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmcm9tTWFpbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINCy0YvQsdGA0LDQvdC90L7Qs9C+INGB0LrQu9Cw0LTQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0ZWRXYXJlaG91c2UkOiBPYnNlcnZhYmxlPFNjSVdhcmVob3VzZSB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0YHQutC70LDQtNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHdhcmVob3VzZXNMaXN0JD86IE9ic2VydmFibGU8QXJyYXk8eyBzYzogU2NJV2FyZWhvdXNlU3RvY2tDb3VudDsgdzogU2NJV2FyZWhvdXNlIHwgdW5kZWZpbmVkIH0+IHwgdW5kZWZpbmVkPjtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQcmljZVdhcmVob3VzZVN0b2NrQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3YXJlaG91c2VTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGB0L4g0YHQutC70LDQtNCw0LzQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3YXJlaG91c2VTZXJ2aWNlOiBTY1dhcmVob3VzZVNlcnZpY2UpIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UkID0gdGhpcy5mcm9tTWFpbiA/IHRoaXMud2FyZWhvdXNlU2VydmljZS5nZXRDYXRhbG9nV2FyZWhvdXNlQ2hhbmdlJCgpIDogdGhpcy53YXJlaG91c2VTZXJ2aWNlLmdldFdhcmVob3VzZVNlbGVjdENoYW5nZSQoKTtcblxuICAgICAgICB0aGlzLndhcmVob3VzZXNMaXN0JCA9IHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHdhcmVob3VzZSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLndhcmVob3VzZVNlcnZpY2UuZ2V0V2FyZWhvdXNlcyQoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHdhcmVob3VzZXM6IFNjSVdhcmVob3VzZVtdKSA9PiB0aGlzLnByb2R1Y3Quc3RvY2tDb3VudD8ubWFwKChzYykgPT4gKHsgdzogd2FyZWhvdXNlcy5maW5kKCh3KSA9PiB3LmlkID09PSBzYy53YXJlaG91c2VJZCksIHNjOiBzYyB9KSkpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiBpdGVtcz8uc29ydCgoaXRlbSkgPT4gKGl0ZW0udz8uaWQgPT09IHdhcmVob3VzZT8uaWQgPyAtMSA6IDEpKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2R1Y3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRXYXJlaG91c2UkIHwgYXN5bmMgYXMgd2FyZWhvdXNlU2VsZWN0XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqdHVpTGV0PVwid2l0aFN0b2NrSGludCAmJiAhISh3YXJlaG91c2VzTGlzdCQgfCBhc3luYyk/Lmxlbmd0aCBhcyBzaG93U3RvY2tIaW50XCJcbiAgICAgICAgICAgIFt0dWlIaW50XT1cInNob3dTdG9ja0hpbnQgJiYgc3RvY2tIaW50XCJcbiAgICAgICAgICAgIFt0dWlIaW50U2hvd0RlbGF5XT1cIjEwMFwiXG4gICAgICAgICAgICB0dWlIaW50RGlyZWN0aW9uPVwidG9wXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2R1Y3QuZ2V0Tm90U3RvY2tNZXNzYWdlKHdhcmVob3VzZVNlbGVjdCkgYXMgbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICp0dWlMZXQ9XCIhIShwcm9kdWN0LnByb3BlcnRpZXM/LnBsYW5pbmdJbmNvbWluZ0RhdGUgfHwgcHJvZHVjdC5wcm9wZXJ0aWVzPy5wbGFuaW5nUHJvZHVjdGlvbkRhdGUpIGFzIHNob3dQbGFuaW5nSGludFwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgW3BzZXVkb109XCJzaG93UGxhbmluZ0hpbnRcIlxuICAgICAgICAgICAgICAgICAgICBbdHVpSGludF09XCJzaG93UGxhbmluZ0hpbnQgJiYgcGxhbmluZ0hpbnRcIlxuICAgICAgICAgICAgICAgICAgICBbdHVpSGludFNob3dEZWxheV09XCIxMDBcIlxuICAgICAgICAgICAgICAgICAgICB0dWlIaW50RGlyZWN0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIid2YXIoLS10dWktc3RhdHVzLW5lZ2F0aXZlKSdcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFuaW5nSGludD5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3QucHJvcGVydGllcz8ucGxhbmluZ0luY29taW5nRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICDQn9C70LDQvdC40YDRg9C10LzQsNGPINC00LDRgtCwINC/0L7RgdGC0YPQv9C70LXQvdC40Y8gPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgINC90LAg0J7RgdC90L7QstC90L7QuSDRgdC60LvQsNC0OlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QucHJvcGVydGllcz8ucGxhbmluZ0luY29taW5nRGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LnByb3BlcnRpZXM/LnBsYW5pbmdQcm9kdWN0aW9uRGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICDQn9C70LDQvdC40YDRg9C10LzQsNGPINC00LDRgtCwIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICDQv9GA0L7QuNC30LLQvtC00YHRgtCy0LA6XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgcHJvZHVjdC5wcm9wZXJ0aWVzPy5wbGFuaW5nUHJvZHVjdGlvbkRhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0LmlzV2FyZWhvdXNlU3RvY2tFeGlzdCh3YXJlaG91c2VTZWxlY3QuaWQpXCJcbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3BzZXVkb109XCJzaG93U3RvY2tIaW50XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLXR1aS1zdGF0dXMtcG9zaXRpdmUpJ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQkiDQvdCw0LvQuNGH0LjQuDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9kdWN0LmdldFdhcmVob3VzZVN0b2NrQ291bnQod2FyZWhvdXNlU2VsZWN0LmlkKSBhcyBjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgID46XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2hpdGVzcGFjZS1ub3dyYXBcIj57eyBjb3VudCB9fSB7eyBwcm9kdWN0LnF1YW50aXR5VW5pdCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9kdWN0Lm9uT3JkZXJcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIndmFyKC0tdHVpLXN0YXR1cy13YXJuaW5nKSdcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgPtCf0L7QtCDQt9Cw0LrQsNC3PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc3RvY2tIaW50PlxuICAgICAgICA8dGFibGVcbiAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0ZWRXYXJlaG91c2UkIHwgYXN5bmMgYXMgd2FyZWhvdXNlU2VsZWN0XCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RvY2stdGFibGUgdGFibGUtYXV0byB0ZXh0LWJvZHktc1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHdhcmVob3VzZXNMaXN0JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItYlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHgtMVwiPnt7IGl0ZW0udz8ubmFtZSB9fTo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwicHgtMVwiPnt7IGl0ZW0uc2MuY291bnQgPyBpdGVtLnNjLmNvdW50ICsgJyAnICsgcHJvZHVjdC5xdWFudGl0eVVuaXQgOiAn0JIg0L3QsNC70LjRh9C40LgnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL3ByaWNlLXdhcmVob3VzZS1zdG9jay9zYy1wcmljZS13YXJlaG91c2Utc3RvY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvcHJpY2Utd2FyZWhvdXNlLXN0b2NrL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7O0FBRTlEOztHQUVHO0FBU0gsTUFBTSxPQUFPLDhCQUE4QjtJQStCdkM7Ozs7T0FJRztJQUNILFlBQW9DLGdCQUFvQztRQUFwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBekJ4RTs7V0FFRztRQUNhLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBRTlDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLElBQUksQ0FBQztJQWlCa0MsQ0FBQztJQUU1RSxrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqSixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQy9DLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQ3ZDLEdBQUcsQ0FBQyxDQUFDLFVBQTBCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzNJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqRixDQUNKLENBQ0osQ0FBQztJQUNOLENBQUM7K0dBbERRLDhCQUE4QjttR0FBOUIsOEJBQThCLGtNQ3ZCM0MsdStIQStFQSxzTEQzRGMsWUFBWSxrWkFBRSxZQUFZLDhCQUFFLDRCQUE0Qiw4QkFBRSxXQUFXLDhCQUFFLG1CQUFtQix1TUFBYyxPQUFPLDRGQUFFLE1BQU07OzRGQUd4SCw4QkFBOEI7a0JBUjFDLFNBQVM7aUNBQ00sSUFBSSxZQUNOLDBCQUEwQixXQUczQixDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsbUJBQ25JLHVCQUF1QixDQUFDLE1BQU07dUZBTS9CLFNBQVM7c0JBQXhCLEtBQUs7Z0JBS1UsT0FBTztzQkFBdEIsS0FBSztnQkFLVSxhQUFhO3NCQUE1QixLQUFLO2dCQUtVLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2NJV2FyZWhvdXNlLCBTY0lXYXJlaG91c2VTdG9ja0NvdW50LCBTY1Byb2R1Y3QsIFNjV2FyZWhvdXNlU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpTGV0IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlIaW50LCBUdWlMaW5rIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NGb3JtYXREYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3NjLWZvcm1hdC1kYXRlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LTQsNC90L3Ri9GFINC+INC90LDQu9C40YfQuNC4INGC0L7QstCw0YDQsCDQvdCwINGB0LrQu9Cw0LTQtS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLXByaWNlLXdhcmVob3VzZS1zdG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICdzYy1wcmljZS13YXJlaG91c2Utc3RvY2suY29tcG9uZW50LnNjc3MnLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIC4uLlR1aUhpbnQsIFR1aUxpbmssIFR1aUxldCwgU2NGb3JtYXREYXRlUGlwZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjUHJpY2VXYXJlaG91c2VTdG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICog0KHRgtGA0L7QutCwINC60LvQsNGB0YHQvtCyINC00LvRjyDRgdCy0L7QudGB0YLQsiDRgdGC0LDRgtGD0YHQvtCyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjbGFzc0xpc3Q6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDRgtC+0LLQsNGA0LUv0YPRgdC70YPQs9C1LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwcm9kdWN0OiBTY1Byb2R1Y3Q7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC/0L7QtNGB0LrQsNC30LrRgyDQv9C+INGB0LrQu9Cw0LTQsNC8LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB3aXRoU3RvY2tIaW50OiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQv9C40YHQvtC6INC+0YHRgtCw0YLQutC+0LIg0L/QviDRgdC60LvQsNC00LDQvCDQv9GA0Lgg0LLRi9Cx0YDQsNC90L3QvtC8INC+0YHQvdC+0LLQvdC+0Lwg0YHQutC70LDQtNC1LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmcm9tTWFpbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINCy0YvQsdGA0LDQvdC90L7Qs9C+INGB0LrQu9Cw0LTQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0ZWRXYXJlaG91c2UkOiBPYnNlcnZhYmxlPFNjSVdhcmVob3VzZSB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC/0LjRgdC60LAg0YHQutC70LDQtNC+0LIuXG4gICAgICovXG4gICAgcHVibGljIHdhcmVob3VzZXNMaXN0JD86IE9ic2VydmFibGU8QXJyYXk8eyBzYzogU2NJV2FyZWhvdXNlU3RvY2tDb3VudDsgdzogU2NJV2FyZWhvdXNlIHwgdW5kZWZpbmVkIH0+IHwgdW5kZWZpbmVkPjtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQcmljZVdhcmVob3VzZVN0b2NrQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB3YXJlaG91c2VTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGB0L4g0YHQutC70LDQtNCw0LzQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3YXJlaG91c2VTZXJ2aWNlOiBTY1dhcmVob3VzZVNlcnZpY2UpIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UkID0gdGhpcy5mcm9tTWFpbiA/IHRoaXMud2FyZWhvdXNlU2VydmljZS5nZXRDYXRhbG9nV2FyZWhvdXNlQ2hhbmdlJCgpIDogdGhpcy53YXJlaG91c2VTZXJ2aWNlLmdldFdhcmVob3VzZVNlbGVjdENoYW5nZSQoKTtcblxuICAgICAgICB0aGlzLndhcmVob3VzZXNMaXN0JCA9IHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHdhcmVob3VzZSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLndhcmVob3VzZVNlcnZpY2UuZ2V0V2FyZWhvdXNlcyQoKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAoKHdhcmVob3VzZXM6IFNjSVdhcmVob3VzZVtdKSA9PiB0aGlzLnByb2R1Y3Quc3RvY2tDb3VudD8ubWFwKChzYykgPT4gKHsgdzogd2FyZWhvdXNlcy5maW5kKCh3KSA9PiB3LmlkID09PSBzYy53YXJlaG91c2VJZCksIHNjOiBzYyB9KSkpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiBpdGVtcz8uc29ydCgoaXRlbSkgPT4gKGl0ZW0udz8uaWQgPT09IHdhcmVob3VzZT8uaWQgPyAtMSA6IDEpKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2R1Y3RcIj5cbiAgICBAbGV0IGlzRGlzYWJsZWQgPSBwcm9kdWN0LmlzSGlkZGVuIHx8IHByb2R1Y3QuaXNOdWxsO1xuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkV2FyZWhvdXNlJCB8IGFzeW5jIGFzIHdhcmVob3VzZVNlbGVjdFwiPlxuICAgICAgICA8c3BhbiAqdHVpTGV0PVwid2l0aFN0b2NrSGludCAmJiAhISh3YXJlaG91c2VzTGlzdCQgfCBhc3luYyk/Lmxlbmd0aCBhcyBzaG93U3RvY2tIaW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXByb2R1Y3Quc3RvY2tDb3VudD8ubGVuZ3RoICYmIHByb2R1Y3QuZ2V0Tm90U3RvY2tNZXNzYWdlKHdhcmVob3VzZVNlbGVjdCkgYXMgbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICp0dWlMZXQ9XCIhIShwcm9kdWN0LnByb3BlcnRpZXM/LnBsYW5pbmdJbmNvbWluZ0RhdGUgfHwgcHJvZHVjdC5wcm9wZXJ0aWVzPy5wbGFuaW5nUHJvZHVjdGlvbkRhdGUpIGFzIHNob3dQbGFuaW5nSGludFwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgW3BzZXVkb109XCJzaG93UGxhbmluZ0hpbnRcIlxuICAgICAgICAgICAgICAgICAgICBbdHVpSGludF09XCJzaG93UGxhbmluZ0hpbnQgJiYgcGxhbmluZ0hpbnRcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFt0dWlIaW50U2hvd0RlbGF5XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUhpbnREaXJlY3Rpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLXR1aS1zdGF0dXMtbmVnYXRpdmUpJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jdXJzb3JdPVwic2hvd1BsYW5pbmdIaW50ICYmIHBsYW5pbmdIaW50ID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IG1lc3NhZ2UgfX1cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhbmluZ0hpbnQ+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0LnByb3BlcnRpZXM/LnBsYW5pbmdJbmNvbWluZ0RhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAg0J/Qu9Cw0L3QuNGA0YPQtdC80LDRjyDQtNCw0YLQsCDQv9C+0YHRgtGD0L/Qu9C10L3QuNGPIDxiciAvPlxuICAgICAgICAgICAgICAgICAgICDQvdCwINCe0YHQvdC+0LLQvdC+0Lkg0YHQutC70LDQtDpcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0LnByb3BlcnRpZXM/LnBsYW5pbmdJbmNvbWluZ0RhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdC5wcm9wZXJ0aWVzPy5wbGFuaW5nUHJvZHVjdGlvbkRhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAg0J/Qu9Cw0L3QuNGA0YPQtdC80LDRjyDQtNCw0YLQsCA8YnIgLz5cbiAgICAgICAgICAgICAgICAgICAg0L/RgNC+0LjQt9Cy0L7QtNGB0YLQstCwOlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QucHJvcGVydGllcz8ucGxhbmluZ1Byb2R1Y3Rpb25EYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb2R1Y3Quc3RvY2tDb3VudCAmJiBwcm9kdWN0LnN0b2NrQ291bnQubGVuZ3RoICYmICFwcm9kdWN0Lm9uT3JkZXJcIj5cbiAgICAgICAgICAgICAgICDQkiDQvdCw0LvQuNGH0LjQuCDQvdCwJm5ic3A7XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLXR1aS1zdGF0dXMtcG9zaXRpdmUpJ1wiXG4gICAgICAgICAgICAgICAgICAgIFt0dWlIaW50XT1cInNob3dTdG9ja0hpbnQgJiYgc3RvY2tIaW50XCJcbiAgICAgICAgICAgICAgICAgICAgW3R1aUhpbnRTaG93RGVsYXldPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgdHVpSGludERpcmVjdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNsYXNzTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIhdW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3Quc3RvY2tDb3VudC5sZW5ndGggfX0g0YHQutC70LDQtHt7IHByb2R1Y3Quc3RvY2tDb3VudC5sZW5ndGggPiAxID8gJ9Cw0YUnIDogJ9C1JyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cInByb2R1Y3Qub25PcmRlclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIid2YXIoLS10dWktc3RhdHVzLXdhcm5pbmcpJ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LQg0LfQsNC60LDQt1xuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI3N0b2NrSGludD5cbiAgICAgICAgPHRhYmxlXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkV2FyZWhvdXNlJCB8IGFzeW5jIGFzIHdhcmVob3VzZVNlbGVjdFwiXG4gICAgICAgICAgICBjbGFzcz1cInN0b2NrLXRhYmxlIHRhYmxlLWF1dG8gdGV4dC1ib2R5LXNcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB3YXJlaG91c2VzTGlzdCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTFcIj57eyBpdGVtLnc/Lm5hbWUgfX06PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInB4LTFcIj57eyBpdGVtLnNjLmNvdW50ID8gaXRlbS5zYy5jb3VudCArICcgJyArIHByb2R1Y3QucXVhbnRpdHlVbml0IDogJ9CSINC90LDQu9C40YfQuNC4JyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -12,13 +12,14 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "@snabcentr/client-core";
13
13
  import * as i2 from "@angular/forms";
14
14
  import * as i3 from "@angular/common";
15
- import * as i4 from "@taiga-ui/core";
16
- import * as i5 from "@taiga-ui/legacy";
17
- import * as i6 from "@taiga-ui/legacy/components/primitive-textfield";
18
- import * as i7 from "@taiga-ui/core/components/data-list";
19
- import * as i8 from "@maskito/angular";
20
- import * as i9 from "../../form-fields/suggestion-field/sc-suggestion-field.component";
21
- import * as i10 from "@taiga-ui/kit";
15
+ import * as i4 from "@taiga-ui/cdk";
16
+ import * as i5 from "@taiga-ui/core";
17
+ import * as i6 from "@taiga-ui/legacy";
18
+ import * as i7 from "@taiga-ui/legacy/components/primitive-textfield";
19
+ import * as i8 from "@taiga-ui/core/components/data-list";
20
+ import * as i9 from "@taiga-ui/kit";
21
+ import * as i10 from "@maskito/angular";
22
+ import * as i11 from "../../form-fields/suggestion-field/sc-suggestion-field.component";
22
23
  /**
23
24
  * Форма создания нового контрагента.
24
25
  */
@@ -149,6 +150,13 @@ export class ScNewContragentFormComponent {
149
150
  */
150
151
  // eslint-disable-next-line security/detect-object-injection
151
152
  this.okpoMask = (opf) => (ScOpfList[opf] > ScOpfList.entrepreneur ? scLegalOkpoMask : scEntrepreneurOkpoMask);
153
+ /**
154
+ * Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.
155
+ *
156
+ * @param item Выбранный объект выпадающего списка.
157
+ * @param item.name Название страны/региона/города, которое будет отображено в поле.
158
+ */
159
+ this.stringify = (item) => item.name;
152
160
  this.referencesService.directions$
153
161
  .pipe(filter(tuiIsPresent), filter((directions) => directions.length > 0), takeUntilDestroyed())
154
162
  .subscribe((directions) => {
@@ -213,11 +221,11 @@ export class ScNewContragentFormComponent {
213
221
  return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));
214
222
  }
215
223
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScNewContragentFormComponent, deps: [{ token: i1.ScReferencesService }, { token: i1.ScLocationsService }, { token: FormGroupDirective, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
216
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScNewContragentFormComponent, selector: "sc-new-contragent-form", inputs: { opfControl: "opfControl" }, ngImport: i0, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @let nameLabel = opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438';\n <label tuiLabel>\n {{ nameLabel }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual) {\n {{ nameLabel }}\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] > opfListEnum.individual) {\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i5.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i5.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i6.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i7.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i4.TuiOption, selector: "button[tuiOption]:not([new]), a[tuiOption]:not([new]), label[tuiOption]:not([new])", inputs: ["disabled", "value"] }, { kind: "directive", type: i4.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i5.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i8.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i9.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScNewContragentFormComponent, selector: "sc-new-contragent-form", inputs: { opfControl: "opfControl" }, ngImport: i0, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @let nameLabel = opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438';\n <label tuiLabel>\n {{ nameLabel }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual) {\n {{ nameLabel }}\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] > opfListEnum.individual) {\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n\n <tui-combo-box\n *tuiLet=\"(getCountries$() | async) ?? [] as countries\"\n formControlName=\"registrationCountryId\"\n [stringify]=\"stringify\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <input\n tuiTextfieldLegacy\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocomplete=\"new-password\"\n />\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"countries | tuiFilterByInput\"\n />\n </tui-combo-box>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i5.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i6.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i6.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i7.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i5.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i8.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i5.TuiOption, selector: "button[tuiOption]:not([new]), a[tuiOption]:not([new]), label[tuiOption]:not([new])", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels]), tui-data-list-wrapper:not([labels])[new]", inputs: ["items", "disabledItemHandler", "emptyContent", "size", "itemContent"], outputs: ["itemClick"] }, { kind: "directive", type: i5.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i6.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i6.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i10.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i11.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "component", type: i6.TuiComboBoxComponent, selector: "tui-combo-box", inputs: ["stringify", "strictMatcher", "identityMatcher", "valueContent", "strict", "search"], outputs: ["searchChange"] }, { kind: "directive", type: i6.TuiComboBoxDirective, selector: "tui-combo-box" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "pipe", type: i9.TuiStringifyContentPipe, name: "tuiStringifyContent" }, { kind: "pipe", type: i9.TuiFilterByInputPipe, name: "tuiFilterByInput" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
217
225
  }
218
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScNewContragentFormComponent, decorators: [{
219
227
  type: Component,
220
- args: [{ selector: 'sc-new-contragent-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @let nameLabel = opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438';\n <label tuiLabel>\n {{ nameLabel }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual) {\n {{ nameLabel }}\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] > opfListEnum.individual) {\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"] }]
228
+ args: [{ selector: 'sc-new-contragent-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n @let nameLabel = opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438';\n <label tuiLabel>\n {{ nameLabel }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual) {\n {{ nameLabel }}\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] > opfListEnum.individual) {\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] === opfListEnum.legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n\n <tui-combo-box\n *tuiLet=\"(getCountries$() | async) ?? [] as countries\"\n formControlName=\"registrationCountryId\"\n [stringify]=\"stringify\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <input\n tuiTextfieldLegacy\n autocapitalize=\"off\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocomplete=\"new-password\"\n />\n <tui-data-list-wrapper\n *tuiDataList\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"countries | tuiFilterByInput\"\n />\n </tui-combo-box>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"] }]
221
229
  }], ctorParameters: () => [{ type: i1.ScReferencesService }, { type: i1.ScLocationsService }, { type: i2.FormGroupDirective, decorators: [{
222
230
  type: SkipSelf
223
231
  }, {
@@ -226,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
226
234
  }] }], propDecorators: { opfControl: [{
227
235
  type: Input
228
236
  }] } });
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvbmV3LWNvbnRyYWdlbnQtZm9ybS9zYy1uZXctY29udHJhZ2VudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9uZXctY29udHJhZ2VudC1mb3JtL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBRTdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBcUQsaUJBQWlCLEVBQXNCLFNBQVMsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNsSyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRixPQUFPLEVB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MU9RLDRCQUE0Qix1RkE2SnpCLGtCQUFrQjttR0E3SnJCLDRCQUE0QixvR0N2QnpDLDY2WEFrUEE7OzRGRDNOYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNOzswQkE4SjFDLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsa0JBQWtCO3lDQXhKdkIsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjSUNvdW50cnksIFNjSVJlZmVyZW5jZXNUeXBlcywgU2NJU2FsZXNEaXJlY3Rpb24sIFNjSVN1Z2dlc3Rpb25UeXBlLCBTY0xvY2F0aW9uc1NlcnZpY2UsIFNjT3BmTGlzdCwgU2NSZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpQ29udHJvbFZhbHVlLCB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQmFua0FjY291bnRGb3JtR3JvdXAsIFNjQ29udGFjdEZvcm1Hcm91cCB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBzY0VudHJlcHJlbmV1cklubk1hc2ssIHNjRW50cmVwcmVuZXVyT2twb01hc2ssIHNjS3BwTWFzaywgc2NMZWdhbElubk1hc2ssIHNjTGVnYWxPa3BvTWFzayB9IGZyb20gJy4uLy4uL21hc2tzJztcbmltcG9ydCB7IHNjQmljVmFsaWRhdG9yLCBzY0NvcnJlc3BvbmRlbnRBY2NvdW50VmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBwaG9uZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvc2MtcGhvbmUtdmFsaWRhdG9yJztcblxuLyoqXG4gKiDQpNC+0YDQvNCwINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7Qs9C+INC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtbmV3LWNvbnRyYWdlbnQtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NOZXdDb250cmFnZW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiDQn9C+0LvQtSDQstGL0LHQvtGA0LAg0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQvtC5INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3BmQ29udHJvbD86IEZvcm1Db250cm9sPGtleW9mIHR5cGVvZiBTY09wZkxpc3QgfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INC00LDQvdC90YvRhSDQviDQutC+0L3RgtGA0LDQs9C10L3RgtC1IC0g0LjQvdC00LjQstC40LTRg9Cw0LvRjNC90L7QvCDQv9GA0LXQtNC/0YDQuNC90LjQvNCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnRyZXByZW5ldXJHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBpbm46IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgb2twbzogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBkaXJlY3Rvck5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgZGlyZWN0b3JQb3NpdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBkaXJlY3RvckFjdHNPbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBsZWdhbEFkZHJlc3M6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgcG9zdGFsQWRkcmVzczogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBhY3R1YWxBZGRyZXNzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGJhbmtBY2NvdW50czogbmV3IEZvcm1BcnJheTxTY0JhbmtBY2NvdW50Rm9ybUdyb3VwPihcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgICAgICAgICAgICAgYmFua05hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYmljOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDkpLCBzY0JpY1ZhbGlkYXRvcl0pLFxuICAgICAgICAgICAgICAgICAgICBhY2NvdW50TnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKV0pLFxuICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyMCksIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3JdKSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INC00LDQvdC90YvRhSDQviDQutC+0L3RgtGA0LDQs9C10L3RgtC1IC0g0Y7RgNC40LTQuNGH0LXRgdC60L7QvCDQu9C40YbQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGxlZ2FsR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAga3BwOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDkpXSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQtNCw0L3QvdGL0YUg0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQtSAtINGO0YDQuNC00LjRh9C10YHQutC+0Lwg0LvQuNGG0LUg0L3QtdGA0LXQt9C40LTQtdC90YLQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vblJlc2lkZW50TGVnYWxHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICByZWdpc3RyYXRpb25Db3VudHJ5SWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgcmVnaXN0cmF0aW9uTnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIHRheE51bWJlcjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtCz0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsCDRhNC40LfQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgb3BmOiBuZXcgRm9ybUNvbnRyb2w8a2V5b2YgdHlwZW9mIFNjT3BmTGlzdD4oJ2luZGl2aWR1YWwnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgc2FsZXNEaXJlY3Rpb25JZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBjb250YWN0czogbmV3IEZvcm1BcnJheTxTY0NvbnRhY3RGb3JtR3JvdXA+KFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHBob25lVmFsaWRhdG9yKCldKSxcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLmVtYWlsKSxcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQstGL0LHQvtGA0LAg0J7Qn9CkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZWxlY3RPcGYkOiBPYnNlcnZhYmxlPGtleW9mIHR5cGVvZiBTY09wZkxpc3Q+ID0gdHVpQ29udHJvbFZhbHVlPGtleW9mIHR5cGVvZiBTY09wZkxpc3Q+KHRoaXMuZm9ybS5jb250cm9scy5vcGYpLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRhcCgob3BmKSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh7IC4uLnRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMsIC4uLnRoaXMubGVnYWxHcm91cC5jb250cm9scywgLi4udGhpcy5ub25SZXNpZGVudExlZ2FsR3JvdXAuY29udHJvbHMgfSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgYWRkQ29udHJvbHMgPSAoZm9ybUdyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh7IC4uLmZvcm1Hcm91cC5jb250cm9scyB9KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldChrZXkpPy5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLnNldENvbnRyb2w8dHlwZW9mIGtleT4oa2V5LCBmb3JtR3JvdXAuZ2V0KGtleSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBpZiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuaW5kaXZpZHVhbCkge1xuICAgICAgICAgICAgICAgIGFkZENvbnRyb2xzKHRoaXMuZW50cmVwcmVuZXVyR3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMuaW5uLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEyKV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMub2twby5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBpZiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuZW50cmVwcmVuZXVyKSB7XG4gICAgICAgICAgICAgICAgYWRkQ29udHJvbHModGhpcy5sZWdhbEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLmlubi5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLm9rcG8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBpZiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QubGVnYWwpIHtcbiAgICAgICAgICAgICAgICBhZGRDb250cm9scyh0aGlzLm5vblJlc2lkZW50TGVnYWxHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWdhbEdyb3VwLmNvbnRyb2xzLmtwcC5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyZXByZW5ldXJHcm91cC5jb250cm9scy5pbm4uZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMub2twby5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdC60LAg0L/QvtC70Y8g0LLQstC+0LTQsCDQmtCf0J8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGtwcE1hc2sgPSBzY0twcE1hc2s7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLRi9GFINGE0L7RgNC8LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvcGZMaXN0RW51bTogdHlwZW9mIFNjT3BmTGlzdCA9IFNjT3BmTGlzdDtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0L/RgNCw0LLQu9C10L3QuNGPINGD0L3QuNGH0YLQvtC20LXQvdC40LXQvCDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0LrQsCDQv9C+0LvRjyDQstCy0L7QtNCwINCY0J3QnS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcGYg0J7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LAuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgcHVibGljIHJlYWRvbmx5IGlubk1hc2sgPSAob3BmOiBrZXlvZiB0eXBlb2YgU2NPcGZMaXN0KSA9PiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuZW50cmVwcmVuZXVyID8gc2NMZWdhbElubk1hc2sgOiBzY0VudHJlcHJlbmV1cklubk1hc2spO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0LrQsCDQv9C+0LvRjyDQstCy0L7QtNCwINCe0JrQn9CeLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wZiDQntGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstCw0Y8g0YTQvtGA0LzQsC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICBwdWJsaWMgcmVhZG9ubHkgb2twb01hc2sgPSAob3BmOiBrZXlvZiB0eXBlb2YgU2NPcGZMaXN0KSA9PiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuZW50cmVwcmVuZXVyID8gc2NMZWdhbE9rcG9NYXNrIDogc2NFbnRyZXByZW5ldXJPa3BvTWFzayk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjTmV3Q29udHJhZ2VudEZvcm1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlZmVyZW5jZXNTZXJ2aWNlINCh0LXRgNCy0LjRgSDRgdC/0YDQsNCy0L7Rh9C90LjQutC+0LIuXG4gICAgICogQHBhcmFtIGxvY2F0aW9uc1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutC+0LIg0YHRgtGA0LDQvSwg0YDQtdCz0LjQvtC90L7Qsiwg0LPQvtGA0L7QtNC+0LIuXG4gICAgICogQHBhcmFtIGZvcm1Hcm91cERpcmVjdGl2ZSDQlNC40YDQtdC60YLQuNCy0LAgYyBgRm9ybUdyb3VwYCDQuNC3IERPTS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmZXJlbmNlc1NlcnZpY2U6IFNjUmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25zU2VydmljZTogU2NMb2NhdGlvbnNTZXJ2aWNlLFxuICAgICAgICBAU2tpcFNlbGYoKVxuICAgICAgICBASW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSB8IG51bGxcbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzU2VydmljZS5kaXJlY3Rpb25zJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChkaXJlY3Rpb25zKSA9PiBkaXJlY3Rpb25zLmxlbmd0aCA+IDApLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkaXJlY3Rpb25zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBzYWxlc0RpcmVjdGlvbklkOiBkaXJlY3Rpb25zWzBdLmlkIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KDQvtC00LjRgtC10LvRjNGB0LrQsNGPIGBGb3JtR3JvdXBgLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGFyZW50Rm9ybSgpOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBEaXJlY3RpdmU/LmZvcm07XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhcmVudEZvcm0/LnNldENvbnRyb2woJ2NvbnRyYWdlbnQnLCB0aGlzLmZvcm0pO1xuICAgICAgICBpZiAodGhpcy5wYXJlbnRGb3JtICYmIHRoaXMub3BmQ29udHJvbCkge1xuICAgICAgICAgICAgdHVpQ29udHJvbFZhbHVlPGtleW9mIHR5cGVvZiBTY09wZkxpc3QgfCBudWxsPih0aGlzLm9wZkNvbnRyb2wpXG4gICAgICAgICAgICAgICAgLnBpcGUoZmlsdGVyKHR1aUlzUHJlc2VudCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9wZikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3BmLnBhdGNoVmFsdWUob3BmKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtPy5yZW1vdmVDb250cm9sKCdjb250cmFnZW50Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDQvdCw0L/RgNCw0LLQu9C10L3QuNC5INC/0YDQvtC00LDQti5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXJlY3Rpb25JZCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCw0L/RgNCw0LLQu9C10L3QuNGPINC/0YDQvtC00LDQti5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGlyZWN0aW9uQnlJZCQoZGlyZWN0aW9uSWQ6IG51bWJlcik6IE9ic2VydmFibGU8U2NJU2FsZXNEaXJlY3Rpb24gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuZ2V0RGlyZWN0aW9uQnlJZCQoZGlyZWN0aW9uSWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC/0LjRgdC+0Log0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLRi9GFINGE0L7RgNC8Li5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T3BmJCgpOiBPYnNlcnZhYmxlPEFycmF5PFNjSVJlZmVyZW5jZXNUeXBlczxTY09wZkxpc3QsIHR5cGVvZiBTY09wZkxpc3Q+Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzU2VydmljZS5vcGYkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstC+0Lkg0YTQvtGA0LzRiywg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC5INGB0LjQvNCy0L7Qu9GM0L3QvtC80YMg0L7QsdC+0LfQvdCw0YfQtdC90LjRjiAoc2x1Zykg0L3QsCDQstGF0L7QtNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIHNsdWcg0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1ZykuXG4gICAgICovXG4gICAgcHVibGljIGdldE9wZkJ5U2x1ZyQoc2x1Zzoga2V5b2YgdHlwZW9mIFNjT3BmTGlzdCk6IE9ic2VydmFibGU8U2NJUmVmZXJlbmNlc1R5cGVzPFNjT3BmTGlzdCwgdHlwZW9mIFNjT3BmTGlzdD4gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuZ2V0T3BmQnlTbHVnJChzbHVnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQutCwINGB0YLRgNCw0L1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q291bnRyaWVzJCgpOiBPYnNlcnZhYmxlPFNjSUNvdW50cnlbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhdGlvbnNTZXJ2aWNlLmdldENvdW50cmllcyQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHRgtGA0LDQvdGLINC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRgy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb3VudHJ5SWQg4oCUINCY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINGB0YLRgNCw0L3Riy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q291bnRyaWVzQnlJZCQoY291bnRyeUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSUNvdW50cnkgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRDb3VudHJpZXMkKCkucGlwZShtYXAoKGNvdW50cmllcykgPT4gY291bnRyaWVzLmZpbmQoKGNvdW50cnkpID0+IGNvdW50cnkuaWQgPT09IGNvdW50cnlJZCkpKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAqbmdJZj1cInNlbGVjdE9wZiQgfCBhc3luYyBhcyBzZWxlY3RPcGZcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBwYi0xXCJcbj5cbiAgICA8cCBjbGFzcz1cInRleHQtbGcgZm9udC1ib2xkXCI+0J7QsdGJ0LjQtSDQtNCw0L3QvdGL0LUg0LrQvtC90YLRgNCw0LPQtdC90YLQsDwvcD5cbiAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgINCi0LjQvyDQutC+0L3RgtGA0LDQs9C10L3RgtCwICjQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstCw0Y8g0YTQvtGA0LzQsClcbiAgICAgICAgPHR1aS1zZWxlY3RcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9wZlwiXG4gICAgICAgICAgICBbdmFsdWVDb250ZW50XT1cIm9wZkNvbnRlbnRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cIiEhb3BmQ29udHJvbFwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCi0LjQvyDQutC+0L3RgtGA0LDQs9C10L3RgtCwICjQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstCw0Y8g0YTQvtGA0LzQsClcbiAgICAgICAgICAgIDx0dWktZGF0YS1saXN0ICp0dWlEYXRhTGlzdD5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE9wZiQoKSB8IGFzeW5jOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5zbHVnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgICAgICA8L3R1aS1zZWxlY3Q+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI29wZkNvbnRlbnRcbiAgICAgICAgICAgIGxldC1kYXRhXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXY+e3sgKGdldE9wZkJ5U2x1ZyQoZGF0YSkgfCBhc3luYyk/Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3BmXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIEBsZXQgbmFtZUxhYmVsID0gb3BmTGlzdEVudW1bc2VsZWN0T3BmXSA9PT0gb3BmTGlzdEVudW0uaW5kaXZpZHVhbCA/ICfQpC7QmC7Qni4nIDogJ9Cd0LDQt9Cy0LDQvdC40LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCc7XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICB7eyBuYW1lTGFiZWwgfX1cbiAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gPT09IG9wZkxpc3RFbnVtLmluZGl2aWR1YWwpIHtcbiAgICAgICAgICAgICAgICB7eyBuYW1lTGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZmlvXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAg0J3QsNC30LLQsNC90LjQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4XG4gICAgICAgICAgICAgICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdICE9PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgPC9sYWJlbD5cbiAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gPiBvcGZMaXN0RW51bS5pbmRpdmlkdWFsKSB7XG4gICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSA9PT0gb3BmTGlzdEVudW0ubGVnYWwpIHtcbiAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICDQmNCd0J0g0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQuNC70Lgg0JjQn1xuICAgICAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiaW5uXCI+XG4gICAgICAgICAgICAgICAgICAgINCY0J3QnSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INC40LvQuCDQmNCfXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFza2l0b109XCJpbm5NYXNrKHNlbGVjdE9wZilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiaW5uXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlublwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAg0JrQvtC0INCe0JrQn9CeXG4gICAgICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJva3BvXCI+XG4gICAgICAgICAgICAgICAgICAgINCa0L7QtCDQntCa0J/QnlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICAgICAgW21hc2tpdG9dPVwib2twb01hc2soc2VsZWN0T3BmKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJva3BvXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9rcG9cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICB9XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCkLtCYLtCeLiDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y9cbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JOYW1lXCI+XG4gICAgICAgICAgICAgICAg0KQu0Jgu0J4uINGA0YPQutC+0LLQvtC00LjRgtC10LvRj1xuICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5maW9cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3Rvck5hbWVcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQlNC+0LvQttC90L7RgdGC0Ywg0YDRg9C60L7QstC+0LTQuNGC0LXQu9GPXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImRpcmVjdG9yUG9zaXRpb25cIj4g0JTQvtC70LbQvdC+0YHRgtGMINGA0YPQutC+0LLQvtC00LjRgtC10LvRjyA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3RvclBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0J7RgdC90L7QstCw0L3QuNGPINC/0L7Qu9C90L7QvNC+0YfQuNC5INGA0YPQutC+0LLQvtC00LjRgtC10LvRj1xuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3RvckFjdHNPblwiPiDQntGB0L3QvtCy0LDQvdC40Y8g0L/QvtC70L3QvtC80L7Rh9C40Lkg0YDRg9C60L7QstC+0LTQuNGC0LXQu9GPIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpcmVjdG9yQWN0c09uXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0K7RgNC40LTQuNGH0LXRgdC60LjQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImxlZ2FsQWRkcmVzc1wiPlxuICAgICAgICAgICAgICAgINCu0YDQuNC00LjRh9C10YHQutC40Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSAhPT0gb3BmTGlzdEVudW0ubm9uX3Jlc2lkZW50X2xlZ2FsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2FsQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCf0L7Rh9GC0L7QstGL0Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwb3N0YWxBZGRyZXNzXCI+XG4gICAgICAgICAgICAgICAg0J/QvtGH0YLQvtCy0YvQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICAgICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdICE9PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicG9zdGFsQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCk0LDQutGC0LjRh9C10YHQutC40Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhY3R1YWxBZGRyZXNzXCI+XG4gICAgICAgICAgICAgICAg0KTQsNC60YLQuNGH0LXRgdC60LjQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICAgICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdICE9PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWN0dWFsQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSA9PT0gb3BmTGlzdEVudW0ubGVnYWwpIHtcbiAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICDQmtCf0J8g0L7RgNCz0LDQvdC40LfQsNGG0LjQuFxuICAgICAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwia3BwXCI+XG4gICAgICAgICAgICAgICAgICAgINCa0J/QnyDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFza2l0b109XCJrcHBNYXNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImtwcFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJrcHBcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdID09PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KHRgtGA0LDQvdCwINGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwXG4gICAgICAgICAgICA8dHVpLXNlbGVjdFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbkNvdW50cnlJZFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlQ29udGVudF09XCJDb3VudHJ5Q29udGVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KHRgtGA0LDQvdCwINGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwXG4gICAgICAgICAgICAgICAgPHR1aS1kYXRhLWxpc3QgKnR1aURhdGFMaXN0PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRDb3VudHJpZXMkKCkgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3R1aS1kYXRhLWxpc3Q+XG4gICAgICAgICAgICA8L3R1aS1zZWxlY3Q+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjQ291bnRyeUNvbnRlbnRcbiAgICAgICAgICAgICAgICBsZXQtZGF0YVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgKGdldENvdW50cmllc0J5SWQkKGRhdGEpIHwgYXN5bmMpPy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbkNvdW50cnlJZFwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCg0LXQs9C40YHRgtGA0LDRhtC40L7QvdC90YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RyYXRpb25OdW1iZXJcIj4g0KDQtdCz0LjRgdGC0YDQsNGG0LjQvtC90L3Ri9C5INC90L7QvNC10YAg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbk51bWJlclwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCd0LDQu9C+0LPQvtCy0YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0YXhOdW1iZXJcIj4g0J3QsNC70L7Qs9C+0LLRi9C5INC90L7QvNC10YAg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheE51bWJlclwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgfVxuPC9kaXY+XG4iXX0=
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvbmV3LWNvbnRyYWdlbnQtZm9ybS9zYy1uZXctY29udHJhZ2VudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9uZXctY29udHJhZ2VudC1mb3JtL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBRTdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBcUQsaUJBQWlCLEVBQXNCLFNBQVMsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNsSyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRixPQUFPLEVB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QUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pJLENBQUM7K0dBbFBRLDRCQUE0Qix1RkFxS3pCLGtCQUFrQjttR0FyS3JCLDRCQUE0QixvR0N2QnpDLHltWUF1UEE7OzRGRGhPYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFzSzFDLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsa0JBQWtCO3lDQWhLdkIsVUFBVTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFNraXBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjSUNvdW50cnksIFNjSVJlZmVyZW5jZXNUeXBlcywgU2NJU2FsZXNEaXJlY3Rpb24sIFNjSVN1Z2dlc3Rpb25UeXBlLCBTY0xvY2F0aW9uc1NlcnZpY2UsIFNjT3BmTGlzdCwgU2NSZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpQ29udHJvbFZhbHVlLCB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjQmFua0FjY291bnRGb3JtR3JvdXAsIFNjQ29udGFjdEZvcm1Hcm91cCB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBzY0VudHJlcHJlbmV1cklubk1hc2ssIHNjRW50cmVwcmVuZXVyT2twb01hc2ssIHNjS3BwTWFzaywgc2NMZWdhbElubk1hc2ssIHNjTGVnYWxPa3BvTWFzayB9IGZyb20gJy4uLy4uL21hc2tzJztcbmltcG9ydCB7IHNjQmljVmFsaWRhdG9yLCBzY0NvcnJlc3BvbmRlbnRBY2NvdW50VmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBwaG9uZVZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvc2MtcGhvbmUtdmFsaWRhdG9yJztcblxuLyoqXG4gKiDQpNC+0YDQvNCwINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7Qs9C+INC60L7QvdGC0YDQsNCz0LXQvdGC0LAuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtbmV3LWNvbnRyYWdlbnQtZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NOZXdDb250cmFnZW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiDQn9C+0LvQtSDQstGL0LHQvtGA0LAg0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQvtC5INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3BmQ29udHJvbD86IEZvcm1Db250cm9sPGtleW9mIHR5cGVvZiBTY09wZkxpc3QgfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INC00LDQvdC90YvRhSDQviDQutC+0L3RgtGA0LDQs9C10L3RgtC1IC0g0LjQvdC00LjQstC40LTRg9Cw0LvRjNC90L7QvCDQv9GA0LXQtNC/0YDQuNC90LjQvNCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnRyZXByZW5ldXJHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBpbm46IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgb2twbzogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBkaXJlY3Rvck5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgZGlyZWN0b3JQb3NpdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBkaXJlY3RvckFjdHNPbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBsZWdhbEFkZHJlc3M6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgcG9zdGFsQWRkcmVzczogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBhY3R1YWxBZGRyZXNzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGJhbmtBY2NvdW50czogbmV3IEZvcm1BcnJheTxTY0JhbmtBY2NvdW50Rm9ybUdyb3VwPihcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgICAgICAgICAgICAgYmFua05hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICAgICAgYmljOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDkpLCBzY0JpY1ZhbGlkYXRvcl0pLFxuICAgICAgICAgICAgICAgICAgICBhY2NvdW50TnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKV0pLFxuICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kZW50QWNjb3VudDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgyMCksIHNjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3JdKSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INC00LDQvdC90YvRhSDQviDQutC+0L3RgtGA0LDQs9C10L3RgtC1IC0g0Y7RgNC40LTQuNGH0LXRgdC60L7QvCDQu9C40YbQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGxlZ2FsR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAga3BwOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDkpXSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQk9GA0YPQv9C/0LAg0L/QvtC70LXQuSDQtNCw0L3QvdGL0YUg0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQtSAtINGO0YDQuNC00LjRh9C10YHQutC+0Lwg0LvQuNGG0LUg0L3QtdGA0LXQt9C40LTQtdC90YLQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vblJlc2lkZW50TGVnYWxHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICByZWdpc3RyYXRpb25Db3VudHJ5SWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgcmVnaXN0cmF0aW9uTnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIHRheE51bWJlcjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtCz0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsCDRhNC40LfQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgb3BmOiBuZXcgRm9ybUNvbnRyb2w8a2V5b2YgdHlwZW9mIFNjT3BmTGlzdD4oJ2luZGl2aWR1YWwnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgc2FsZXNEaXJlY3Rpb25JZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBjb250YWN0czogbmV3IEZvcm1BcnJheTxTY0NvbnRhY3RGb3JtR3JvdXA+KFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICAgIHBob25lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHBob25lVmFsaWRhdG9yKCldKSxcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLmVtYWlsKSxcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICAgICksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQstGL0LHQvtGA0LAg0J7Qn9CkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZWxlY3RPcGYkOiBPYnNlcnZhYmxlPGtleW9mIHR5cGVvZiBTY09wZkxpc3Q+ID0gdHVpQ29udHJvbFZhbHVlPGtleW9mIHR5cGVvZiBTY09wZkxpc3Q+KHRoaXMuZm9ybS5jb250cm9scy5vcGYpLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRhcCgob3BmKSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh7IC4uLnRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMsIC4uLnRoaXMubGVnYWxHcm91cC5jb250cm9scywgLi4udGhpcy5ub25SZXNpZGVudExlZ2FsR3JvdXAuY29udHJvbHMgfSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgYWRkQ29udHJvbHMgPSAoZm9ybUdyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh7IC4uLmZvcm1Hcm91cC5jb250cm9scyB9KS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUdyb3VwLmdldChrZXkpPy5lbmFibGUoKTtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZm9ybSBhcyBGb3JtR3JvdXApLnNldENvbnRyb2w8dHlwZW9mIGtleT4oa2V5LCBmb3JtR3JvdXAuZ2V0KGtleSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBpZiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuaW5kaXZpZHVhbCkge1xuICAgICAgICAgICAgICAgIGFkZENvbnRyb2xzKHRoaXMuZW50cmVwcmVuZXVyR3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMuaW5uLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEyKV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMub2twby5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBpZiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuZW50cmVwcmVuZXVyKSB7XG4gICAgICAgICAgICAgICAgYWRkQ29udHJvbHModGhpcy5sZWdhbEdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLmlubi5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLm9rcG8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICBpZiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QubGVnYWwpIHtcbiAgICAgICAgICAgICAgICBhZGRDb250cm9scyh0aGlzLm5vblJlc2lkZW50TGVnYWxHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sZWdhbEdyb3VwLmNvbnRyb2xzLmtwcC5kaXNhYmxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyZXByZW5ldXJHcm91cC5jb250cm9scy5pbm4uZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMub2twby5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdC60LAg0L/QvtC70Y8g0LLQstC+0LTQsCDQmtCf0J8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGtwcE1hc2sgPSBzY0twcE1hc2s7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLRi9GFINGE0L7RgNC8LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvcGZMaXN0RW51bTogdHlwZW9mIFNjT3BmTGlzdCA9IFNjT3BmTGlzdDtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0L/RgNCw0LLQu9C10L3QuNGPINGD0L3QuNGH0YLQvtC20LXQvdC40LXQvCDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0LrQsCDQv9C+0LvRjyDQstCy0L7QtNCwINCY0J3QnS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcGYg0J7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LAuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgcHVibGljIHJlYWRvbmx5IGlubk1hc2sgPSAob3BmOiBrZXlvZiB0eXBlb2YgU2NPcGZMaXN0KSA9PiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuZW50cmVwcmVuZXVyID8gc2NMZWdhbElubk1hc2sgOiBzY0VudHJlcHJlbmV1cklubk1hc2spO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0LrQsCDQv9C+0LvRjyDQstCy0L7QtNCwINCe0JrQn9CeLlxuICAgICAqXG4gICAgICogQHBhcmFtIG9wZiDQntGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstCw0Y8g0YTQvtGA0LzQsC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICBwdWJsaWMgcmVhZG9ubHkgb2twb01hc2sgPSAob3BmOiBrZXlvZiB0eXBlb2YgU2NPcGZMaXN0KSA9PiAoU2NPcGZMaXN0W29wZl0gPiBTY09wZkxpc3QuZW50cmVwcmVuZXVyID8gc2NMZWdhbE9rcG9NYXNrIDogc2NFbnRyZXByZW5ldXJPa3BvTWFzayk7XG5cbiAgICAvKipcbiAgICAgKiDQpNGD0L3QutGG0LjRjyDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNGPINC+0LHRitC10LrRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyINC30L3QsNGH0LXQvdC40LUsINC+0YLQvtCx0YDQsNC20LDQtdC80L7QtSDQsiDQv9C+0LvQtSDQstCy0L7QtNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0g0JLRi9Cx0YDQsNC90L3Ri9C5INC+0LHRitC10LrRgiDQstGL0L/QsNC00LDRjtGJ0LXQs9C+INGB0L/QuNGB0LrQsC5cbiAgICAgKiBAcGFyYW0gaXRlbS5uYW1lINCd0LDQt9Cy0LDQvdC40LUg0YHRgtGA0LDQvdGLL9GA0LXQs9C40L7QvdCwL9Cz0L7RgNC+0LTQsCwg0LrQvtGC0L7RgNC+0LUg0LHRg9C00LXRgiDQvtGC0L7QsdGA0LDQttC10L3QviDQsiDQv9C+0LvQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RyaW5naWZ5ID0gKGl0ZW06IHsgbmFtZTogc3RyaW5nIH0pOiBzdHJpbmcgPT4gaXRlbS5uYW1lO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VzU2VydmljZSDQodC10YDQstC40YEg0YHQv9GA0LDQstC+0YfQvdC40LrQvtCyLlxuICAgICAqIEBwYXJhbSBsb2NhdGlvbnNTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQvtCyINGB0YLRgNCw0L0sINGA0LXQs9C40L7QvdC+0LIsINCz0L7RgNC+0LTQvtCyLlxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXBEaXJlY3RpdmUg0JTQuNGA0LXQutGC0LjQstCwIGMgYEZvcm1Hcm91cGAg0LjQtyBET00uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlZmVyZW5jZXNTZXJ2aWNlOiBTY1JlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uc1NlcnZpY2U6IFNjTG9jYXRpb25zU2VydmljZSxcbiAgICAgICAgQFNraXBTZWxmKClcbiAgICAgICAgQEluamVjdChGb3JtR3JvdXBEaXJlY3RpdmUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBudWxsXG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuZGlyZWN0aW9ucyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZGlyZWN0aW9ucykgPT4gZGlyZWN0aW9ucy5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGlyZWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgc2FsZXNEaXJlY3Rpb25JZDogZGlyZWN0aW9uc1swXS5pZCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCg0L7QtNC40YLQtdC70YzRgdC60LDRjyBgRm9ybUdyb3VwYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHBhcmVudEZvcm0oKTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlPy5mb3JtO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtPy5zZXRDb250cm9sKCdjb250cmFnZW50JywgdGhpcy5mb3JtKTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Rm9ybSAmJiB0aGlzLm9wZkNvbnRyb2wpIHtcbiAgICAgICAgICAgIHR1aUNvbnRyb2xWYWx1ZTxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0IHwgbnVsbD4odGhpcy5vcGZDb250cm9sKVxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcih0dWlJc1ByZXNlbnQpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChvcGYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm9wZi5wYXRjaFZhbHVlKG9wZik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFyZW50Rm9ybT8ucmVtb3ZlQ29udHJvbCgnY29udHJhZ2VudCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC/0LjRgdC60LAg0L3QsNC/0YDQsNCy0LvQtdC90LjQuSDQv9GA0L7QtNCw0LYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlyZWN0aW9uSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsNC/0YDQsNCy0LvQtdC90LjRjyDQv9GA0L7QtNCw0LYuXG4gICAgICovXG4gICAgcHVibGljIGdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSVNhbGVzRGlyZWN0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQvtC6INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC4uXG4gICAgICovXG4gICAgcHVibGljIGdldE9wZiQoKTogT2JzZXJ2YWJsZTxBcnJheTxTY0lSZWZlcmVuY2VzVHlwZXM8U2NPcGZMaXN0LCB0eXBlb2YgU2NPcGZMaXN0Pj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2Uub3BmJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQvtC5INGE0L7RgNC80YssINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQuSDRgdC40LzQstC+0LvRjNC90L7QvNGDINC+0LHQvtC30L3QsNGH0LXQvdC40Y4gKHNsdWcpINC90LAg0LLRhdC+0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzbHVnINCh0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcGZCeVNsdWckKHNsdWc6IGtleW9mIHR5cGVvZiBTY09wZkxpc3QpOiBPYnNlcnZhYmxlPFNjSVJlZmVyZW5jZXNUeXBlczxTY09wZkxpc3QsIHR5cGVvZiBTY09wZkxpc3Q+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldE9wZkJ5U2x1ZyQoc2x1Zyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDRgdGC0YDQsNC9XG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50cmllcyQoKTogT2JzZXJ2YWJsZTxTY0lDb3VudHJ5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRDb3VudHJpZXMkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0YLRgNCw0L3RiyDQv9C+INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY291bnRyeUlkIOKAlCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdGC0YDQsNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50cmllc0J5SWQkKGNvdW50cnlJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY0lDb3VudHJ5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZ2V0Q291bnRyaWVzJCgpLnBpcGUobWFwKChjb3VudHJpZXMpID0+IGNvdW50cmllcy5maW5kKChjb3VudHJ5KSA9PiBjb3VudHJ5LmlkID09PSBjb3VudHJ5SWQpKSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKm5nSWY9XCJzZWxlY3RPcGYkIHwgYXN5bmMgYXMgc2VsZWN0T3BmXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTMgcGItMVwiXG4+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPtCe0LHRidC40LUg0LTQsNC90L3Ri9C1INC60L7QvdGC0YDQsNCz0LXQvdGC0LA8L3A+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQotC40L8g0LrQvtC90YLRgNCw0LPQtdC90YLQsCAo0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LApXG4gICAgICAgIDx0dWktc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcGZcIlxuICAgICAgICAgICAgW3ZhbHVlQ29udGVudF09XCJvcGZDb250ZW50XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCIhIW9wZkNvbnRyb2xcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQotC40L8g0LrQvtC90YLRgNCw0LPQtdC90YLQsCAo0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LApXG4gICAgICAgICAgICA8dHVpLWRhdGEtbGlzdCAqdHVpRGF0YUxpc3Q+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRPcGYkKCkgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0uc2x1Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdHVpLWRhdGEtbGlzdD5cbiAgICAgICAgPC90dWktc2VsZWN0PlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNvcGZDb250ZW50XG4gICAgICAgICAgICBsZXQtZGF0YVxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2Pnt7IChnZXRPcGZCeVNsdWckKGRhdGEpIHwgYXN5bmMpPy5uYW1lIH19PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9wZlwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICBAbGV0IG5hbWVMYWJlbCA9IG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gPT09IG9wZkxpc3RFbnVtLmluZGl2aWR1YWwgPyAn0KQu0Jgu0J4uJyA6ICfQndCw0LfQstCw0L3QuNC1INC+0YDQs9Cw0L3QuNC30LDRhtC40LgnO1xuICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAge3sgbmFtZUxhYmVsIH19XG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdID09PSBvcGZMaXN0RW51bS5pbmRpdmlkdWFsKSB7XG4gICAgICAgICAgICAgICAge3sgbmFtZUxhYmVsIH19XG4gICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmZpb1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgINCd0LDQt9Cy0LDQvdC40LUg0L7RgNCz0LDQvdC40LfQsNGG0LjQuFxuICAgICAgICAgICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSAhPT0gb3BmTGlzdEVudW0ubm9uX3Jlc2lkZW50X2xlZ2FsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLm9yZ2FuaXphdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdID4gb3BmTGlzdEVudW0uaW5kaXZpZHVhbCkge1xuICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gPT09IG9wZkxpc3RFbnVtLmxlZ2FsKSB7XG4gICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAg0JjQndCdINC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0LjQu9C4INCY0J9cbiAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImlublwiPlxuICAgICAgICAgICAgICAgICAgICDQmNCd0J0g0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQuNC70Lgg0JjQn1xuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICAgICAgW21hc2tpdG9dPVwiaW5uTWFzayhzZWxlY3RPcGYpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImlublwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLm9yZ2FuaXphdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbm5cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgINCa0L7QtCDQntCa0J/QnlxuICAgICAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwib2twb1wiPlxuICAgICAgICAgICAgICAgICAgICDQmtC+0LQg0J7QmtCf0J5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXNraXRvXT1cIm9rcG9NYXNrKHNlbGVjdE9wZilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2twb1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJva3BvXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgfVxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQpC7QmC7Qni4g0YDRg9C60L7QstC+0LTQuNGC0LXQu9GPXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImRpcmVjdG9yTmFtZVwiPlxuICAgICAgICAgICAgICAgINCkLtCYLtCeLiDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y9cbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZmlvXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JOYW1lXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0JTQvtC70LbQvdC+0YHRgtGMINGA0YPQutC+0LLQvtC00LjRgtC10LvRj1xuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3RvclBvc2l0aW9uXCI+INCU0L7Qu9C20L3QvtGB0YLRjCDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y8gPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JQb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCe0YHQvdC+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LzQvtGH0LjQuSDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y9cbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JBY3RzT25cIj4g0J7RgdC90L7QstCw0L3QuNGPINC/0L7Qu9C90L7QvNC+0YfQuNC5INGA0YPQutC+0LLQvtC00LjRgtC10LvRjyA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3RvckFjdHNPblwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCu0YDQuNC00LjRh9C10YHQutC40Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsZWdhbEFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICDQrtGA0LjQtNC40YfQtdGB0LrQuNC5INCw0LTRgNC10YFcbiAgICAgICAgICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gIT09IG9wZkxpc3RFbnVtLm5vbl9yZXNpZGVudF9sZWdhbCkge1xuICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5hZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsZWdhbEFkZHJlc3NcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQn9C+0YfRgtC+0LLRi9C5INCw0LTRgNC10YFcbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicG9zdGFsQWRkcmVzc1wiPlxuICAgICAgICAgICAgICAgINCf0L7Rh9GC0L7QstGL0Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSAhPT0gb3BmTGlzdEVudW0ubm9uX3Jlc2lkZW50X2xlZ2FsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBvc3RhbEFkZHJlc3NcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQpNCw0LrRgtC40YfQtdGB0LrQuNC5INCw0LTRgNC10YFcbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYWN0dWFsQWRkcmVzc1wiPlxuICAgICAgICAgICAgICAgINCk0LDQutGC0LjRh9C10YHQutC40Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSAhPT0gb3BmTGlzdEVudW0ubm9uX3Jlc2lkZW50X2xlZ2FsKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjdHVhbEFkZHJlc3NcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gPT09IG9wZkxpc3RFbnVtLmxlZ2FsKSB7XG4gICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAg0JrQn9CfINC+0YDQs9Cw0L3QuNC30LDRhtC40LhcbiAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImtwcFwiPlxuICAgICAgICAgICAgICAgICAgICDQmtCf0J8g0L7RgNCz0LDQvdC40LfQsNGG0LjQuFxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICAgICAgW21hc2tpdG9dPVwia3BwTWFza1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJrcHBcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwia3BwXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSA9PT0gb3BmTGlzdEVudW0ubm9uX3Jlc2lkZW50X2xlZ2FsKSB7XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCh0YLRgNCw0L3QsCDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuXG4gICAgICAgICAgICA8dHVpLWNvbWJvLWJveFxuICAgICAgICAgICAgICAgICp0dWlMZXQ9XCIoZ2V0Q291bnRyaWVzJCgpIHwgYXN5bmMpID8/IFtdIGFzIGNvdW50cmllc1wiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVnaXN0cmF0aW9uQ291bnRyeUlkXCJcbiAgICAgICAgICAgICAgICBbc3RyaW5naWZ5XT1cInN0cmluZ2lmeVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KHRgtGA0LDQvdCwINGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwXG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDx0dWktZGF0YS1saXN0LXdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgIFtpdGVtQ29udGVudF09XCJzdHJpbmdpZnkgfCB0dWlTdHJpbmdpZnlDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImNvdW50cmllcyB8IHR1aUZpbHRlckJ5SW5wdXRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS1jb21iby1ib3g+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjQ291bnRyeUNvbnRlbnRcbiAgICAgICAgICAgICAgICBsZXQtZGF0YVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgKGdldENvdW50cmllc0J5SWQkKGRhdGEpIHwgYXN5bmMpPy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbkNvdW50cnlJZFwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCg0LXQs9C40YHRgtGA0LDRhtC40L7QvdC90YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RyYXRpb25OdW1iZXJcIj4g0KDQtdCz0LjRgdGC0YDQsNGG0LjQvtC90L3Ri9C5INC90L7QvNC10YAg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbk51bWJlclwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCd0LDQu9C+0LPQvtCy0YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0YXhOdW1iZXJcIj4g0J3QsNC70L7Qs9C+0LLRi9C5INC90L7QvNC10YAg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheE51bWJlclwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgfVxuPC9kaXY+XG4iXX0=
@@ -4,8 +4,8 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { MaskitoDirective } from '@maskito/angular';
5
5
  import { TuiLet } from '@taiga-ui/cdk';
6
6
  import { TuiButton, TuiDataList, TuiError, TuiLabel, TuiLoader, TuiNotification } from '@taiga-ui/core';
7
- import { TuiButtonLoading, TuiCarousel, TuiDataListWrapper, TuiElasticContainer, TuiFieldErrorPipe } from '@taiga-ui/kit';
8
- import { TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/legacy';
7
+ import { TuiButtonLoading, TuiCarousel, TuiDataListWrapper, TuiElasticContainer, TuiFieldErrorPipe, TuiFilterByInputPipe, TuiStringifyContentPipe } from '@taiga-ui/kit';
8
+ import { TuiComboBoxModule, TuiInputModule, TuiInputPhoneModule, TuiSelectModule } from '@taiga-ui/legacy';
9
9
  import { ScAccordionModule } from '../accordion';
10
10
  import { ScContactsModule } from '../contacts/sc-contacts.module';
11
11
  import { ScFormFieldsModule } from '../form-fields/form-fields.module';
@@ -46,7 +46,10 @@ export class ScContragentsModule {
46
46
  TuiInputPhoneModule,
47
47
  MaskitoDirective,
48
48
  ScFormFieldsModule,
49
- TuiElasticContainer, i4.TuiItem, i2.TuiCarouselComponent, i2.TuiCarouselDirective, i2.TuiCarouselAutoscroll, i2.TuiCarouselButtons, i2.TuiCarouselScroll, TuiButtonLoading], exports: [ScContragentsAccordionComponent,
49
+ TuiElasticContainer, i4.TuiItem, i2.TuiCarouselComponent, i2.TuiCarouselDirective, i2.TuiCarouselAutoscroll, i2.TuiCarouselButtons, i2.TuiCarouselScroll, TuiButtonLoading,
50
+ TuiComboBoxModule,
51
+ TuiStringifyContentPipe,
52
+ TuiFilterByInputPipe], exports: [ScContragentsAccordionComponent,
50
53
  ScNewContragentBankAccountsFormComponent,
51
54
  ScAddContragentBankAccountsDialogComponent,
52
55
  ScAddContragentDialogComponent,
@@ -61,7 +64,8 @@ export class ScContragentsModule {
61
64
  TuiSelectModule, i1.TuiDataListComponent, i1.TuiOption, i2.TuiDataListWrapperComponent, i2.TuiDataListGroupWrapperComponent, TuiInputModule,
62
65
  TuiInputPhoneModule,
63
66
  ScFormFieldsModule,
64
- TuiElasticContainer, i2.TuiCarouselComponent, TuiButtonLoading] }); }
67
+ TuiElasticContainer, i2.TuiCarouselComponent, TuiButtonLoading,
68
+ TuiComboBoxModule] }); }
65
69
  }
66
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScContragentsModule, decorators: [{
67
71
  type: NgModule,
@@ -97,6 +101,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
97
101
  TuiElasticContainer,
98
102
  ...TuiCarousel,
99
103
  TuiButtonLoading,
104
+ TuiComboBoxModule,
105
+ TuiStringifyContentPipe,
106
+ TuiFilterByInputPipe,
100
107
  ],
101
108
  exports: [
102
109
  ScContragentsAccordionComponent,
@@ -107,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
107
114
  ],
108
115
  }]
109
116
  }] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udHJhZ2VudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbnRyYWdlbnRzL3NjLWNvbnRyYWdlbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFILE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQ2xKLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ2pKLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQzVJLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7QUFFdEc7O0dBRUc7QUEwQ0gsTUFBTSxPQUFPLG1CQUFtQjsrR0FBbkIsbUJBQW1CO2dIQUFuQixtQkFBbUIsaUJBdkN4QiwrQkFBK0I7WUFDL0IsbUNBQW1DO1lBQ25DLHdDQUF3QztZQUN4QywwQ0FBMEM7WUFDMUMsOEJBQThCO1lBQzlCLDRCQUE0QixhQUc1QixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixpQkFBaUI7WUFDakIsU0FBUztZQUNULFNBQVM7WUFDVCxNQUFNO1lBQ04sZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsUUFBUTtZQUNSLGVBQWUsd05BR2YsUUFBUTtZQUNSLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixtQkFBbUIsdUlBRW5CLGdCQUFnQixhQUdoQiwrQkFBK0I7WUFDL0Isd0NBQXdDO1lBQ3hDLDBDQUEwQztZQUMxQyw4QkFBOEI7WUFDOUIsNEJBQTRCO2dIQUd2QixtQkFBbUIsWUEvQnhCLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsWUFBWTtZQUNaLGlCQUFpQjtZQUVqQixTQUFTO1lBR1QsZ0JBQWdCO1lBRWhCLFFBQVE7WUFDUixlQUFlLDhHQUlmLGNBQWM7WUFDZCxtQkFBbUI7WUFFbkIsa0JBQWtCO1lBQ2xCLG1CQUFtQiwyQkFFbkIsZ0JBQWdCOzs0RkFVWCxtQkFBbUI7a0JBekMvQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRTt3QkFDViwrQkFBK0I7d0JBQy9CLG1DQUFtQzt3QkFDbkMsd0NBQXdDO3dCQUN4QywwQ0FBMEM7d0JBQzFDLDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3FCQUMvQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULFNBQVM7d0JBQ1QsTUFBTTt3QkFDTixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixRQUFRO3dCQUNSLGVBQWU7d0JBQ2YsR0FBRyxXQUFXO3dCQUNkLEdBQUcsa0JBQWtCO3dCQUNyQixRQUFRO3dCQUNSLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixHQUFHLFdBQVc7d0JBQ2QsZ0JBQWdCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsK0JBQStCO3dCQUMvQix3Q0FBd0M7d0JBQ3hDLDBDQUEwQzt3QkFDMUMsOEJBQThCO3dCQUM5Qiw0QkFBNEI7cUJBQy9CO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hc2tpdG9EaXJlY3RpdmUgfSBmcm9tICdAbWFza2l0by9hbmd1bGFyJztcbmltcG9ydCB7IFR1aUxldCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEYXRhTGlzdCwgVHVpRXJyb3IsIFR1aUxhYmVsLCBUdWlMb2FkZXIsIFR1aU5vdGlmaWNhdGlvbiB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUNhcm91c2VsLCBUdWlEYXRhTGlzdFdyYXBwZXIsIFR1aUVsYXN0aWNDb250YWluZXIsIFR1aUZpZWxkRXJyb3JQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlJbnB1dE1vZHVsZSwgVHVpSW5wdXRQaG9uZU1vZHVsZSwgVHVpU2VsZWN0TW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5cbmltcG9ydCB7IFNjQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAnLi4vYWNjb3JkaW9uJztcbmltcG9ydCB7IFNjQ29udGFjdHNNb2R1bGUgfSBmcm9tICcuLi9jb250YWN0cy9zYy1jb250YWN0cy5tb2R1bGUnO1xuaW1wb3J0IHsgU2NGb3JtRmllbGRzTW9kdWxlIH0gZnJvbSAnLi4vZm9ybS1maWVsZHMvZm9ybS1maWVsZHMubW9kdWxlJztcbmltcG9ydCB7IFNjQWRkQ29udHJhZ2VudEJhbmtBY2NvdW50c0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy9zYy1hZGQtY29udHJhZ2VudC1iYW5rLWFjY291bnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2FkZC1jb250cmFnZW50LWRpYWxvZy9zYy1hZGQtY29udHJhZ2VudC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNjQ29udHJhZ2VudHNBY2NvcmRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cmFnZW50cy1hY2NvcmRpb24vY29udHJhZ2VudHMtYWNjb3JkaW9uLWl0ZW0vc2MtY29udHJhZ2VudHMtYWNjb3JkaW9uLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFNjQ29udHJhZ2VudHNBY2NvcmRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbnRyYWdlbnRzLWFjY29yZGlvbi9zYy1jb250cmFnZW50cy1hY2NvcmRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNjTmV3Q29udHJhZ2VudEJhbmtBY2NvdW50c0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL25ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtL3NjLW5ldy1jb250cmFnZW50LWJhbmstYWNjb3VudC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9uZXctY29udHJhZ2VudC1mb3JtL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50JztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40LUg0LrQvtC90YLQtdC90YLQsCDRgNCw0LfQtNC10LvQsNC80LgsINGBINCy0L7Qt9C80L7QttC90L7RgdGC0YzRjiDRgdC60YDRi9Cy0LDRgtGMINC4INC+0YLQvtCx0YDQsNC20LDRgtGMINGB0L7QtNC10YDQttC40LzQvtC1LlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBTY0NvbnRyYWdlbnRzQWNjb3JkaW9uQ29tcG9uZW50LFxuICAgICAgICBTY0NvbnRyYWdlbnRzQWNjb3JkaW9uSXRlbUNvbXBvbmVudCxcbiAgICAgICAgU2NOZXdDb250cmFnZW50QmFua0FjY291bnRzRm9ybUNvbXBvbmVudCxcbiAgICAgICAgU2NBZGRDb250cmFnZW50QmFua0FjY291bnRzRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBTY0FkZENvbnRyYWdlbnREaWFsb2dDb21wb25lbnQsXG4gICAgICAgIFNjTmV3Q29udHJhZ2VudEZvcm1Db21wb25lbnQsXG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFNjQWNjb3JkaW9uTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUxvYWRlcixcbiAgICAgICAgVHVpTGV0LFxuICAgICAgICBUdWlOb3RpZmljYXRpb24sXG4gICAgICAgIFNjQ29udGFjdHNNb2R1bGUsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgICAgICBUdWlFcnJvcixcbiAgICAgICAgVHVpU2VsZWN0TW9kdWxlLFxuICAgICAgICAuLi5UdWlEYXRhTGlzdCxcbiAgICAgICAgLi4uVHVpRGF0YUxpc3RXcmFwcGVyLFxuICAgICAgICBUdWlMYWJlbCxcbiAgICAgICAgVHVpSW5wdXRNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGhvbmVNb2R1bGUsXG4gICAgICAgIE1hc2tpdG9EaXJlY3RpdmUsXG4gICAgICAgIFNjRm9ybUZpZWxkc01vZHVsZSxcbiAgICAgICAgVHVpRWxhc3RpY0NvbnRhaW5lcixcbiAgICAgICAgLi4uVHVpQ2Fyb3VzZWwsXG4gICAgICAgIFR1aUJ1dHRvbkxvYWRpbmcsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIFNjQ29udHJhZ2VudHNBY2NvcmRpb25Db21wb25lbnQsXG4gICAgICAgIFNjTmV3Q29udHJhZ2VudEJhbmtBY2NvdW50c0Zvcm1Db21wb25lbnQsXG4gICAgICAgIFNjQWRkQ29udHJhZ2VudEJhbmtBY2NvdW50c0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgU2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQ29udHJhZ2VudHNNb2R1bGUge31cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY29udHJhZ2VudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NvbnRyYWdlbnRzL3NjLWNvbnRyYWdlbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pLLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQ2xKLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ2pKLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQzVJLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDOzs7Ozs7QUFFdEc7O0dBRUc7QUE2Q0gsTUFBTSxPQUFPLG1CQUFtQjsrR0FBbkIsbUJBQW1CO2dIQUFuQixtQkFBbUIsaUJBMUN4QiwrQkFBK0I7WUFDL0IsbUNBQW1DO1lBQ25DLHdDQUF3QztZQUN4QywwQ0FBMEM7WUFDMUMsOEJBQThCO1lBQzlCLDRCQUE0QixhQUc1QixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixpQkFBaUI7WUFDakIsU0FBUztZQUNULFNBQVM7WUFDVCxNQUFNO1lBQ04sZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsUUFBUTtZQUNSLGVBQWUsd05BR2YsUUFBUTtZQUNSLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtZQUNsQixtQkFBbUIsdUlBRW5CLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsdUJBQXVCO1lBQ3ZCLG9CQUFvQixhQUdwQiwrQkFBK0I7WUFDL0Isd0NBQXdDO1lBQ3hDLDBDQUEwQztZQUMxQyw4QkFBOEI7WUFDOUIsNEJBQTRCO2dIQUd2QixtQkFBbUIsWUFsQ3hCLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsWUFBWTtZQUNaLGlCQUFpQjtZQUVqQixTQUFTO1lBR1QsZ0JBQWdCO1lBRWhCLFFBQVE7WUFDUixlQUFlLDhHQUlmLGNBQWM7WUFDZCxtQkFBbUI7WUFFbkIsa0JBQWtCO1lBQ2xCLG1CQUFtQiwyQkFFbkIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjs7NEZBWVosbUJBQW1CO2tCQTVDL0IsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YsK0JBQStCO3dCQUMvQixtQ0FBbUM7d0JBQ25DLHdDQUF3Qzt3QkFDeEMsMENBQTBDO3dCQUMxQyw4QkFBOEI7d0JBQzlCLDRCQUE0QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsU0FBUzt3QkFDVCxTQUFTO3dCQUNULE1BQU07d0JBQ04sZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsUUFBUTt3QkFDUixlQUFlO3dCQUNmLEdBQUcsV0FBVzt3QkFDZCxHQUFHLGtCQUFrQjt3QkFDckIsUUFBUTt3QkFDUixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLG1CQUFtQjt3QkFDbkIsR0FBRyxXQUFXO3dCQUNkLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjtxQkFDdkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLCtCQUErQjt3QkFDL0Isd0NBQXdDO3dCQUN4QywwQ0FBMEM7d0JBQzFDLDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3FCQUMvQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXNraXRvRGlyZWN0aXZlIH0gZnJvbSAnQG1hc2tpdG8vYW5ndWxhcic7XG5pbXBvcnQgeyBUdWlMZXQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRGF0YUxpc3QsIFR1aUVycm9yLCBUdWlMYWJlbCwgVHVpTG9hZGVyLCBUdWlOb3RpZmljYXRpb24gfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlCdXR0b25Mb2FkaW5nLCBUdWlDYXJvdXNlbCwgVHVpRGF0YUxpc3RXcmFwcGVyLCBUdWlFbGFzdGljQ29udGFpbmVyLCBUdWlGaWVsZEVycm9yUGlwZSwgVHVpRmlsdGVyQnlJbnB1dFBpcGUsIFR1aVN0cmluZ2lmeUNvbnRlbnRQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlDb21ib0JveE1vZHVsZSwgVHVpSW5wdXRNb2R1bGUsIFR1aUlucHV0UGhvbmVNb2R1bGUsIFR1aVNlbGVjdE1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuXG5pbXBvcnQgeyBTY0FjY29yZGlvbk1vZHVsZSB9IGZyb20gJy4uL2FjY29yZGlvbic7XG5pbXBvcnQgeyBTY0NvbnRhY3RzTW9kdWxlIH0gZnJvbSAnLi4vY29udGFjdHMvc2MtY29udGFjdHMubW9kdWxlJztcbmltcG9ydCB7IFNjRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uL2Zvcm0tZmllbGRzL2Zvcm0tZmllbGRzLm1vZHVsZSc7XG5pbXBvcnQgeyBTY0FkZENvbnRyYWdlbnRCYW5rQWNjb3VudHNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2FkZC1jb250cmFnZW50LWJhbmstYWNjb3VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtYmFuay1hY2NvdW50LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtY29udHJhZ2VudC1kaWFsb2cvc2MtYWRkLWNvbnRyYWdlbnQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NvbnRyYWdlbnRzQWNjb3JkaW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29udHJhZ2VudHMtYWNjb3JkaW9uL2NvbnRyYWdlbnRzLWFjY29yZGlvbi1pdGVtL3NjLWNvbnRyYWdlbnRzLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0NvbnRyYWdlbnRzQWNjb3JkaW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cmFnZW50cy1hY2NvcmRpb24vc2MtY29udHJhZ2VudHMtYWNjb3JkaW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY05ld0NvbnRyYWdlbnRCYW5rQWNjb3VudHNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9uZXctY29udHJhZ2VudC1iYW5rLWFjY291bnQtZm9ybS9zYy1uZXctY29udHJhZ2VudC1iYW5rLWFjY291bnQtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NOZXdDb250cmFnZW50Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vbmV3LWNvbnRyYWdlbnQtZm9ybS9zYy1uZXctY29udHJhZ2VudC1mb3JtLmNvbXBvbmVudCc7XG5cbi8qKlxuICog0JzQvtC00YPQu9GMINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNC1INC60L7QvdGC0LXQvdGC0LAg0YDQsNC30LTQtdC70LDQvNC4LCDRgSDQstC+0LfQvNC+0LbQvdC+0YHRgtGM0Y4g0YHQutGA0YvQstCw0YLRjCDQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRgdC+0LTQtdGA0LbQuNC80L7QtS5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgU2NDb250cmFnZW50c0FjY29yZGlvbkNvbXBvbmVudCxcbiAgICAgICAgU2NDb250cmFnZW50c0FjY29yZGlvbkl0ZW1Db21wb25lbnQsXG4gICAgICAgIFNjTmV3Q29udHJhZ2VudEJhbmtBY2NvdW50c0Zvcm1Db21wb25lbnQsXG4gICAgICAgIFNjQWRkQ29udHJhZ2VudEJhbmtBY2NvdW50c0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgU2NBZGRDb250cmFnZW50RGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50LFxuICAgIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBTY0FjY29yZGlvbk1vZHVsZSxcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBUdWlMb2FkZXIsXG4gICAgICAgIFR1aUxldCxcbiAgICAgICAgVHVpTm90aWZpY2F0aW9uLFxuICAgICAgICBTY0NvbnRhY3RzTW9kdWxlLFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgVHVpRXJyb3IsXG4gICAgICAgIFR1aVNlbGVjdE1vZHVsZSxcbiAgICAgICAgLi4uVHVpRGF0YUxpc3QsXG4gICAgICAgIC4uLlR1aURhdGFMaXN0V3JhcHBlcixcbiAgICAgICAgVHVpTGFiZWwsXG4gICAgICAgIFR1aUlucHV0TW9kdWxlLFxuICAgICAgICBUdWlJbnB1dFBob25lTW9kdWxlLFxuICAgICAgICBNYXNraXRvRGlyZWN0aXZlLFxuICAgICAgICBTY0Zvcm1GaWVsZHNNb2R1bGUsXG4gICAgICAgIFR1aUVsYXN0aWNDb250YWluZXIsXG4gICAgICAgIC4uLlR1aUNhcm91c2VsLFxuICAgICAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgICAgICBUdWlDb21ib0JveE1vZHVsZSxcbiAgICAgICAgVHVpU3RyaW5naWZ5Q29udGVudFBpcGUsXG4gICAgICAgIFR1aUZpbHRlckJ5SW5wdXRQaXBlLFxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBTY0NvbnRyYWdlbnRzQWNjb3JkaW9uQ29tcG9uZW50LFxuICAgICAgICBTY05ld0NvbnRyYWdlbnRCYW5rQWNjb3VudHNGb3JtQ29tcG9uZW50LFxuICAgICAgICBTY0FkZENvbnRyYWdlbnRCYW5rQWNjb3VudHNEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIFNjQWRkQ29udHJhZ2VudERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgU2NOZXdDb250cmFnZW50Rm9ybUNvbXBvbmVudCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NvbnRyYWdlbnRzTW9kdWxlIHt9XG4iXX0=