UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

359 lines 27.2 kB
/** * @fileoverview added by tsickle * Generated from: pagination.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __decorate, __metadata } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core'; import { gridResponsiveMap, NzBreakpointEnum, NzBreakpointService } from 'ng-zorro-antd/core/services'; import { InputBoolean, InputNumber } from 'ng-zorro-antd/core/util'; import { NzI18nService } from 'ng-zorro-antd/i18n'; import { ReplaySubject, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; export class NzPaginationComponent { /** * @param {?} i18n * @param {?} cdr * @param {?} breakpointService */ constructor(i18n, cdr, breakpointService) { this.i18n = i18n; this.cdr = cdr; this.breakpointService = breakpointService; this.nzPageSizeChange = new EventEmitter(); this.nzPageIndexChange = new EventEmitter(); this.nzShowTotal = null; this.nzSize = 'default'; this.nzPageSizeOptions = [10, 20, 30, 40]; this.nzDisabled = false; this.nzShowSizeChanger = false; this.nzHideOnSinglePage = false; this.nzShowQuickJumper = false; this.nzSimple = false; this.nzResponsive = false; this.nzTotal = 0; this.nzPageIndex = 1; this.nzPageSize = 10; this.showPagination = true; this.locale = {}; this.size = 'default'; this.destroy$ = new Subject(); this.total$ = new ReplaySubject(1); } /** * @param {?} value * @param {?} lastIndex * @return {?} */ validatePageIndex(value, lastIndex) { if (value > lastIndex) { return lastIndex; } else if (value < 1) { return 1; } else { return value; } } /** * @param {?} index * @return {?} */ onPageIndexChange(index) { /** @type {?} */ const lastIndex = this.getLastIndex(this.nzTotal, this.nzPageSize); /** @type {?} */ const validIndex = this.validatePageIndex(index, lastIndex); if (validIndex !== this.nzPageIndex && !this.nzDisabled) { this.nzPageIndex = validIndex; this.nzPageIndexChange.emit(this.nzPageIndex); } } /** * @param {?} size * @return {?} */ onPageSizeChange(size) { this.nzPageSize = size; this.nzPageSizeChange.emit(size); /** @type {?} */ const lastIndex = this.getLastIndex(this.nzTotal, this.nzPageSize); if (this.nzPageIndex > lastIndex) { this.onPageIndexChange(lastIndex); } } /** * @param {?} total * @return {?} */ onTotalChange(total) { /** @type {?} */ const lastIndex = this.getLastIndex(total, this.nzPageSize); if (this.nzPageIndex > lastIndex) { Promise.resolve().then((/** * @return {?} */ () => this.onPageIndexChange(lastIndex))); } } /** * @param {?} total * @param {?} pageSize * @return {?} */ getLastIndex(total, pageSize) { return Math.ceil(total / pageSize); } /** * @return {?} */ ngOnInit() { this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe((/** * @return {?} */ () => { this.locale = this.i18n.getLocaleData('Pagination'); this.cdr.markForCheck(); })); this.total$.pipe(takeUntil(this.destroy$)).subscribe((/** * @param {?} total * @return {?} */ total => { this.onTotalChange(total); })); this.breakpointService .subscribe(gridResponsiveMap) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @param {?} bp * @return {?} */ bp => { if (this.nzResponsive) { this.size = bp === NzBreakpointEnum.xs ? 'small' : 'default'; this.cdr.markForCheck(); } })); } /** * @return {?} */ ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { const { nzHideOnSinglePage, nzTotal, nzPageSize, nzSize } = changes; if (nzTotal) { this.total$.next(this.nzTotal); } if (nzHideOnSinglePage || nzTotal || nzPageSize) { this.showPagination = (this.nzHideOnSinglePage && this.nzTotal > this.nzPageSize) || (this.nzTotal > 0 && !this.nzHideOnSinglePage); } if (nzSize) { this.size = nzSize.currentValue; } } } NzPaginationComponent.decorators = [ { type: Component, args: [{ selector: 'nz-pagination', exportAs: 'nzPagination', preserveWhitespaces: false, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` <ng-container *ngIf="showPagination"> <ng-container *ngIf="nzSimple; else defaultPagination.template"> <ng-template [ngTemplateOutlet]="simplePagination.template"></ng-template> </ng-container> </ng-container> <nz-pagination-simple #simplePagination [disabled]="nzDisabled" [itemRender]="nzItemRender" [locale]="locale" [pageSize]="nzPageSize" [total]="nzTotal" [pageIndex]="nzPageIndex" (pageIndexChange)="onPageIndexChange($event)" ></nz-pagination-simple> <nz-pagination-default #defaultPagination [nzSize]="size" [itemRender]="nzItemRender" [showTotal]="nzShowTotal" [disabled]="nzDisabled" [locale]="locale" [showSizeChanger]="nzShowSizeChanger" [showQuickJumper]="nzShowQuickJumper" [total]="nzTotal" [pageIndex]="nzPageIndex" [pageSize]="nzPageSize" [pageSizeOptions]="nzPageSizeOptions" (pageIndexChange)="onPageIndexChange($event)" (pageSizeChange)="onPageSizeChange($event)" ></nz-pagination-default> `, host: { '[class.ant-pagination]': 'true', '[class.ant-pagination-simple]': 'nzSimple', '[class.ant-pagination-disabled]': 'nzDisabled', '[class.mini]': `!nzSimple && size === 'small'` } }] } ]; /** @nocollapse */ NzPaginationComponent.ctorParameters = () => [ { type: NzI18nService }, { type: ChangeDetectorRef }, { type: NzBreakpointService } ]; NzPaginationComponent.propDecorators = { nzPageSizeChange: [{ type: Output }], nzPageIndexChange: [{ type: Output }], nzShowTotal: [{ type: Input }], nzSize: [{ type: Input }], nzPageSizeOptions: [{ type: Input }], nzItemRender: [{ type: Input }], nzDisabled: [{ type: Input }], nzShowSizeChanger: [{ type: Input }], nzHideOnSinglePage: [{ type: Input }], nzShowQuickJumper: [{ type: Input }], nzSimple: [{ type: Input }], nzResponsive: [{ type: Input }], nzTotal: [{ type: Input }], nzPageIndex: [{ type: Input }], nzPageSize: [{ type: Input }] }; __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzDisabled", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzShowSizeChanger", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzHideOnSinglePage", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzShowQuickJumper", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzSimple", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzResponsive", void 0); __decorate([ InputNumber(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzTotal", void 0); __decorate([ InputNumber(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzPageIndex", void 0); __decorate([ InputNumber(), __metadata("design:type", Object) ], NzPaginationComponent.prototype, "nzPageSize", void 0); if (false) { /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzDisabled; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzShowSizeChanger; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzHideOnSinglePage; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzShowQuickJumper; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzSimple; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzResponsive; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzTotal; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzPageIndex; /** @type {?} */ NzPaginationComponent.ngAcceptInputType_nzPageSize; /** @type {?} */ NzPaginationComponent.prototype.nzPageSizeChange; /** @type {?} */ NzPaginationComponent.prototype.nzPageIndexChange; /** @type {?} */ NzPaginationComponent.prototype.nzShowTotal; /** @type {?} */ NzPaginationComponent.prototype.nzSize; /** @type {?} */ NzPaginationComponent.prototype.nzPageSizeOptions; /** @type {?} */ NzPaginationComponent.prototype.nzItemRender; /** @type {?} */ NzPaginationComponent.prototype.nzDisabled; /** @type {?} */ NzPaginationComponent.prototype.nzShowSizeChanger; /** @type {?} */ NzPaginationComponent.prototype.nzHideOnSinglePage; /** @type {?} */ NzPaginationComponent.prototype.nzShowQuickJumper; /** @type {?} */ NzPaginationComponent.prototype.nzSimple; /** @type {?} */ NzPaginationComponent.prototype.nzResponsive; /** @type {?} */ NzPaginationComponent.prototype.nzTotal; /** @type {?} */ NzPaginationComponent.prototype.nzPageIndex; /** @type {?} */ NzPaginationComponent.prototype.nzPageSize; /** @type {?} */ NzPaginationComponent.prototype.showPagination; /** @type {?} */ NzPaginationComponent.prototype.locale; /** @type {?} */ NzPaginationComponent.prototype.size; /** * @type {?} * @private */ NzPaginationComponent.prototype.destroy$; /** * @type {?} * @private */ NzPaginationComponent.prototype.total$; /** * @type {?} * @private */ NzPaginationComponent.prototype.i18n; /** * @type {?} * @private */ NzPaginationComponent.prototype.cdr; /** * @type {?} * @private */ NzPaginationComponent.prototype.breakpointService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkL3BhZ2luYXRpb24vIiwic291cmNlcyI6WyJwYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFdBQVcsRUFDWCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBa0QzQyxNQUFNLE9BQU8scUJBQXFCOzs7Ozs7SUF5RWhDLFlBQW9CLElBQW1CLEVBQVUsR0FBc0IsRUFBVSxpQkFBc0M7UUFBbkcsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQTlEcEcscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUQsc0JBQWlCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkUsZ0JBQVcsR0FBdUUsSUFBSSxDQUFDO1FBQ3ZGLFdBQU0sR0FBd0IsU0FBUyxDQUFDO1FBQ3hDLHNCQUFpQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7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LEVBQUU7O3VEQUFrQjtBQUNqQjtJQUFmLFlBQVksRUFBRTs7MkRBQXNCO0FBQ3RCO0lBQWQsV0FBVyxFQUFFOztzREFBYTtBQUNaO0lBQWQsV0FBVyxFQUFFOzswREFBaUI7QUFDaEI7SUFBZCxXQUFXLEVBQUU7O3lEQUFpQjs7O0lBeEJ4QyxtREFBa0Q7O0lBQ2xELDBEQUF5RDs7SUFDekQsMkRBQTBEOztJQUMxRCwwREFBeUQ7O0lBQ3pELGlEQUFnRDs7SUFDaEQscURBQW9EOztJQUNwRCxnREFBOEM7O0lBQzlDLG9EQUFrRDs7SUFDbEQsbURBQWlEOztJQUVqRCxpREFBK0U7O0lBQy9FLGtEQUFnRjs7SUFDaEYsNENBQWdHOztJQUNoRyx1Q0FBaUQ7O0lBQ2pELGtEQUE4Qzs7SUFDOUMsNkNBQWdFOztJQUNoRSwyQ0FBNEM7O0lBQzVDLGtEQUFtRDs7SUFDbkQsbURBQW9EOztJQUNwRCxrREFBbUQ7O0lBQ25ELHlDQUEwQzs7SUFDMUMsNkNBQThDOztJQUM5Qyx3Q0FBb0M7O0lBQ3BDLDRDQUF3Qzs7SUFDeEMsMkNBQXdDOztJQUV4QywrQ0FBc0I7O0lBQ3RCLHVDQUF1Qjs7SUFDdkIscUNBQXNDOzs7OztJQUV0Qyx5Q0FBdUM7Ozs7O0lBQ3ZDLHVDQUE4Qzs7Ozs7SUF5Q2xDLHFDQUEyQjs7Ozs7SUFBRSxvQ0FBOEI7Ozs7O0lBQUUsa0RBQThDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdyaWRSZXNwb25zaXZlTWFwLCBOekJyZWFrcG9pbnRFbnVtLCBOekJyZWFrcG9pbnRTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3NlcnZpY2VzJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQsIE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuaW1wb3J0IHsgTnpJMThuU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaTE4bic7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBhZ2luYXRpb25JdGVtUmVuZGVyQ29udGV4dCB9IGZyb20gJy4vcGFnaW5hdGlvbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256LXBhZ2luYXRpb24nLFxuICBleHBvcnRBczogJ256UGFnaW5hdGlvbicsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1BhZ2luYXRpb25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJuelNpbXBsZTsgZWxzZSBkZWZhdWx0UGFnaW5hdGlvbi50ZW1wbGF0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2ltcGxlUGFnaW5hdGlvbi50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bnotcGFnaW5hdGlvbi1zaW1wbGVcbiAgICAgICNzaW1wbGVQYWdpbmF0aW9uXG4gICAgICBbZGlzYWJsZWRdPVwibnpEaXNhYmxlZFwiXG4gICAgICBbaXRlbVJlbmRlcl09XCJuekl0ZW1SZW5kZXJcIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW3BhZ2VTaXplXT1cIm56UGFnZVNpemVcIlxuICAgICAgW3RvdGFsXT1cIm56VG90YWxcIlxuICAgICAgW3BhZ2VJbmRleF09XCJuelBhZ2VJbmRleFwiXG4gICAgICAocGFnZUluZGV4Q2hhbmdlKT1cIm9uUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxuICAgID48L256LXBhZ2luYXRpb24tc2ltcGxlPlxuICAgIDxuei1wYWdpbmF0aW9uLWRlZmF1bHRcbiAgICAgICNkZWZhdWx0UGFnaW5hdGlvblxuICAgICAgW256U2l6ZV09XCJzaXplXCJcbiAgICAgIFtpdGVtUmVuZGVyXT1cIm56SXRlbVJlbmRlclwiXG4gICAgICBbc2hvd1RvdGFsXT1cIm56U2hvd1RvdGFsXCJcbiAgICAgIFtkaXNhYmxlZF09XCJuekRpc2FibGVkXCJcbiAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgIFtzaG93U2l6ZUNoYW5nZXJdPVwibnpTaG93U2l6ZUNoYW5nZXJcIlxuICAgICAgW3Nob3dRdWlja0p1bXBlcl09XCJuelNob3dRdWlja0p1bXBlclwiXG4gICAgICBbdG90YWxdPVwibnpUb3RhbFwiXG4gICAgICBbcGFnZUluZGV4XT1cIm56UGFnZUluZGV4XCJcbiAgICAgIFtwYWdlU2l6ZV09XCJuelBhZ2VTaXplXCJcbiAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwibnpQYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgKHBhZ2VJbmRleENoYW5nZSk9XCJvblBhZ2VJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgID48L256LXBhZ2luYXRpb24tZGVmYXVsdD5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYW50LXBhZ2luYXRpb25dJzogJ3RydWUnLFxuICAgICdbY2xhc3MuYW50LXBhZ2luYXRpb24tc2ltcGxlXSc6ICduelNpbXBsZScsXG4gICAgJ1tjbGFzcy5hbnQtcGFnaW5hdGlvbi1kaXNhYmxlZF0nOiAnbnpEaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5taW5pXSc6IGAhbnpTaW1wbGUgJiYgc2l6ZSA9PT0gJ3NtYWxsJ2BcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBOelBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256RGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256U2hvd1NpemVDaGFuZ2VyOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekhpZGVPblNpbmdsZVBhZ2U6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256U2hvd1F1aWNrSnVtcGVyOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNpbXBsZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpSZXNwb25zaXZlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelRvdGFsOiBOdW1iZXJJbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256UGFnZUluZGV4OiBOdW1iZXJJbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256UGFnZVNpemU6IE51bWJlcklucHV0O1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBuelBhZ2VTaXplQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56UGFnZUluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbnpTaG93VG90YWw6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBudW1iZXI7IHJhbmdlOiBbbnVtYmVyLCBudW1iZXJdIH0+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG56U2l6ZTogJ2RlZmF1bHQnIHwgJ3NtYWxsJyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbnpQYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDIwLCAzMCwgNDBdO1xuICBASW5wdXQoKSBuekl0ZW1SZW5kZXI6IFRlbXBsYXRlUmVmPFBhZ2luYXRpb25JdGVtUmVuZGVyQ29udGV4dD47XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dTaXplQ2hhbmdlciA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpIaWRlT25TaW5nbGVQYWdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dRdWlja0p1bXBlciA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTaW1wbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56UmVzcG9uc2l2ZSA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBuelRvdGFsID0gMDtcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgbnpQYWdlSW5kZXggPSAxO1xuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBuelBhZ2VTaXplID0gMTA7XG5cbiAgc2hvd1BhZ2luYXRpb24gPSB0cnVlO1xuICBsb2NhbGU6IE56U2FmZUFueSA9IHt9O1xuICBzaXplOiAnZGVmYXVsdCcgfCAnc21hbGwnID0gJ2RlZmF1bHQnO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHRvdGFsJCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG5cbiAgdmFsaWRhdGVQYWdlSW5kZXgodmFsdWU6IG51bWJlciwgbGFzdEluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICh2YWx1ZSA+IGxhc3RJbmRleCkge1xuICAgICAgcmV0dXJuIGxhc3RJbmRleDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBvblBhZ2VJbmRleENoYW5nZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gdGhpcy5nZXRMYXN0SW5kZXgodGhpcy5uelRvdGFsLCB0aGlzLm56UGFnZVNpemUpO1xuICAgIGNvbnN0IHZhbGlkSW5kZXggPSB0aGlzLnZhbGlkYXRlUGFnZUluZGV4KGluZGV4LCBsYXN0SW5kZXgpO1xuICAgIGlmICh2YWxpZEluZGV4ICE9PSB0aGlzLm56UGFnZUluZGV4ICYmICF0aGlzLm56RGlzYWJsZWQpIHtcbiAgICAgIHRoaXMubnpQYWdlSW5kZXggPSB2YWxpZEluZGV4O1xuICAgICAgdGhpcy5uelBhZ2VJbmRleENoYW5nZS5lbWl0KHRoaXMubnpQYWdlSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFnZVNpemVDaGFuZ2Uoc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5uelBhZ2VTaXplID0gc2l6ZTtcbiAgICB0aGlzLm56UGFnZVNpemVDaGFuZ2UuZW1pdChzaXplKTtcbiAgICBjb25zdCBsYXN0SW5kZXggPSB0aGlzLmdldExhc3RJbmRleCh0aGlzLm56VG90YWwsIHRoaXMubnpQYWdlU2l6ZSk7XG4gICAgaWYgKHRoaXMubnpQYWdlSW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgIHRoaXMub25QYWdlSW5kZXhDaGFuZ2UobGFzdEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBvblRvdGFsQ2hhbmdlKHRvdGFsOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0SW5kZXggPSB0aGlzLmdldExhc3RJbmRleCh0b3RhbCwgdGhpcy5uelBhZ2VTaXplKTtcbiAgICBpZiAodGhpcy5uelBhZ2VJbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLm9uUGFnZUluZGV4Q2hhbmdlKGxhc3RJbmRleCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldExhc3RJbmRleCh0b3RhbDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThuOiBOekkxOG5TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYnJlYWtwb2ludFNlcnZpY2U6IE56QnJlYWtwb2ludFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5pMThuLmdldExvY2FsZURhdGEoJ1BhZ2luYXRpb24nKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b3RhbCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh0b3RhbCA9PiB7XG4gICAgICB0aGlzLm9uVG90YWxDaGFuZ2UodG90YWwpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5icmVha3BvaW50U2VydmljZVxuICAgICAgLnN1YnNjcmliZShncmlkUmVzcG9uc2l2ZU1hcClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoYnAgPT4ge1xuICAgICAgICBpZiAodGhpcy5uelJlc3BvbnNpdmUpIHtcbiAgICAgICAgICB0aGlzLnNpemUgPSBicCA9PT0gTnpCcmVha3BvaW50RW51bS54cyA/ICdzbWFsbCcgOiAnZGVmYXVsdCc7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbnpIaWRlT25TaW5nbGVQYWdlLCBuelRvdGFsLCBuelBhZ2VTaXplLCBuelNpemUgfSA9IGNoYW5nZXM7XG4gICAgaWYgKG56VG90YWwpIHtcbiAgICAgIHRoaXMudG90YWwkLm5leHQodGhpcy5uelRvdGFsKTtcbiAgICB9XG4gICAgaWYgKG56SGlkZU9uU2luZ2xlUGFnZSB8fCBuelRvdGFsIHx8IG56UGFnZVNpemUpIHtcbiAgICAgIHRoaXMuc2hvd1BhZ2luYXRpb24gPSAodGhpcy5uekhpZGVPblNpbmdsZVBhZ2UgJiYgdGhpcy5uelRvdGFsID4gdGhpcy5uelBhZ2VTaXplKSB8fCAodGhpcy5uelRvdGFsID4gMCAmJiAhdGhpcy5uekhpZGVPblNpbmdsZVBhZ2UpO1xuICAgIH1cblxuICAgIGlmIChuelNpemUpIHtcbiAgICAgIHRoaXMuc2l6ZSA9IG56U2l6ZS5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=