angular-instantsearch
Version:
Lightning-fast search for Angular apps, by Algolia.
162 lines (158 loc) • 14.1 kB
JavaScript
import { Component, Input, Inject, forwardRef, Optional } from '@angular/core';
import { connectPagination } from 'instantsearch.js/es/connectors';
import { TypedBaseWidget } from '../typed-base-widget';
import { NgAisInstantSearch } from '../instantsearch/instantsearch';
import { NgAisIndex } from '../index-widget/index-widget';
import { parseNumberInput, noop } from '../utils';
export class NgAisPagination extends TypedBaseWidget {
constructor(parentIndex, instantSearchInstance) {
super('Pagination');
this.parentIndex = parentIndex;
this.instantSearchInstance = instantSearchInstance;
// rendering options
this.showFirst = true;
this.showLast = true;
this.showPrevious = true;
this.showNext = true;
// TODO: check if this works, padding and totalPages are most likely strings when passed to the template
this.state = {
createURL: () => '#',
currentRefinement: 0,
nbHits: 0,
nbPages: 0,
refine: noop,
pages: [],
canRefine: false,
isFirstPage: false,
isLastPage: false,
};
}
ngOnInit() {
this.createWidget(connectPagination, {
padding: parseNumberInput(this.padding),
totalPages: parseNumberInput(this.totalPages),
}, {
$$widgetType: 'ais.pagination',
});
super.ngOnInit();
}
refine(event, page) {
event.stopPropagation();
event.preventDefault();
if (page < 0 ||
page === this.state.currentRefinement ||
page >= this.state.nbPages) {
return;
}
this.state.refine(page);
}
}
NgAisPagination.decorators = [
{ type: Component, args: [{
selector: 'ais-pagination',
template: `
<div [ngClass]="[cx(), state.nbPages <= 1 ? cx('', 'noRefinement') : '']">
<ul [class]="cx('list')">
<li
*ngIf="showFirst"
(click)="refine($event, 0)"
[class]="
cx('item') +
' ' +
cx('item', 'firstPage') +
(state.currentRefinement === 0 ? ' ' + cx('item', 'disabled') : '')
"
>
<a
[href]="state.createURL(0)"
[class]="cx('link')"
>
‹‹
</a>
</li>
<li
*ngIf="showPrevious"
(click)="refine($event, state.currentRefinement - 1)"
[class]="
cx('item') +
' ' +
cx('item', 'previousPage') +
(state.currentRefinement === 0 ? ' ' + cx('item', 'disabled') : '')
"
>
<a
[href]="state.createURL(state.currentRefinement - 1)"
[class]="cx('link')"
>
‹
</a>
</li>
<li
[class]="
cx('item') +
' ' +
cx('item', 'page') +
(state.currentRefinement === page ? ' ' + cx('item', 'selected') : '')
"
*ngFor="let page of state.pages"
(click)="refine($event, page)"
>
<a
[class]="cx('link')"
[href]="state.createURL(page)"
>
{{page + 1}}
</a>
</li>
<li
*ngIf="showNext"
(click)="refine($event, state.currentRefinement + 1)"
[class]="
cx('item') +
' ' +
cx('item', 'nextPage') +
(state.currentRefinement + 1 === state.nbPages ? ' ' + cx('item', 'disabled') : '')
"
>
<a
[href]="state.createURL(state.currentRefinement + 1)"
[class]="cx('link')"
>
›
</a>
</li>
<li
*ngIf="showLast"
(click)="refine($event, state.nbPages - 1)"
[class]="
cx('item') +
' ' +
cx('item', 'lastPage') +
(state.currentRefinement + 1 === state.nbPages ? ' ' + cx('item', 'disabled') : '')
"
>
<a
[href]="state.createURL(state.nbPages - 1)"
[class]="cx('link')"
>
››
</a>
</li>
</ul>
</div>
`
},] }
];
NgAisPagination.ctorParameters = () => [
{ type: NgAisIndex, decorators: [{ type: Inject, args: [forwardRef(() => NgAisIndex),] }, { type: Optional }] },
{ type: NgAisInstantSearch, decorators: [{ type: Inject, args: [forwardRef(() => NgAisInstantSearch),] }] }
];
NgAisPagination.propDecorators = {
showFirst: [{ type: Input }],
showLast: [{ type: Input }],
showPrevious: [{ type: Input }],
showNext: [{ type: Input }],
padding: [{ type: Input }],
totalPages: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdpbmF0aW9uL3BhZ2luYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFTLE1BQU0sVUFBVSxDQUFDO0FBMkd6RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUdwQztJQXdCQyxZQUdTLFdBQXVCLEVBRXZCLHFCQUF5QztRQUVoRCxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFKYixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUV2QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQW9CO1FBNUJsRCxvQkFBb0I7UUFDSixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsYUFBUSxHQUFZLElBQUksQ0FBQztRQUt6Qyx3R0FBd0c7UUFFakcsVUFBSyxHQUEwQjtZQUNwQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRztZQUNwQixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRSxFQUFFO1lBQ1QsU0FBUyxFQUFFLEtBQUs7WUFDaEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsVUFBVSxFQUFFLEtBQUs7U0FDbEIsQ0FBQztJQVVGLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FDZixpQkFBaUIsRUFDakI7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN2QyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUM5QyxFQUNEO1lBQ0UsWUFBWSxFQUFFLGdCQUFnQjtTQUMvQixDQUNGLENBQUM7UUFDRixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFpQixFQUFFLElBQVk7UUFDM0MsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUNFLElBQUksR0FBRyxDQUFDO1lBQ1IsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCO1lBQ3JDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFDMUI7WUFDQSxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzs7WUFsS0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThGVDthQUNGOzs7WUEzR1EsVUFBVSx1QkF3SWQsTUFBTSxTQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FDbkMsUUFBUTtZQTFJSixrQkFBa0IsdUJBNEl0QixNQUFNLFNBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDOzs7d0JBMUI3QyxLQUFLO3VCQUNMLEtBQUs7MkJBQ0wsS0FBSzt1QkFDTCxLQUFLO3NCQUdMLEtBQUs7eUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEluamVjdCwgZm9yd2FyZFJlZiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbm5lY3RQYWdpbmF0aW9uIH0gZnJvbSAnaW5zdGFudHNlYXJjaC5qcy9lcy9jb25uZWN0b3JzJztcbmltcG9ydCB7IFR5cGVkQmFzZVdpZGdldCB9IGZyb20gJy4uL3R5cGVkLWJhc2Utd2lkZ2V0JztcbmltcG9ydCB7IE5nQWlzSW5zdGFudFNlYXJjaCB9IGZyb20gJy4uL2luc3RhbnRzZWFyY2gvaW5zdGFudHNlYXJjaCc7XG5pbXBvcnQgeyBOZ0Fpc0luZGV4IH0gZnJvbSAnLi4vaW5kZXgtd2lkZ2V0L2luZGV4LXdpZGdldCc7XG5pbXBvcnQgeyBwYXJzZU51bWJlcklucHV0LCBub29wLCByYW5nZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIFBhZ2luYXRpb25Db25uZWN0b3JQYXJhbXMsXG4gIFBhZ2luYXRpb25XaWRnZXREZXNjcmlwdGlvbixcbiAgUGFnaW5hdGlvblJlbmRlclN0YXRlLFxufSBmcm9tICdpbnN0YW50c2VhcmNoLmpzL2VzL2Nvbm5lY3RvcnMvcGFnaW5hdGlvbi9jb25uZWN0UGFnaW5hdGlvbic7XG5cbmV4cG9ydCB7IFBhZ2luYXRpb25Db25uZWN0b3JQYXJhbXMsIFBhZ2luYXRpb25SZW5kZXJTdGF0ZSB9O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhaXMtcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbbmdDbGFzc109XCJbY3goKSwgc3RhdGUubmJQYWdlcyA8PSAxID8gY3goJycsICdub1JlZmluZW1lbnQnKSA6ICcnXVwiPlxuICAgICAgPHVsIFtjbGFzc109XCJjeCgnbGlzdCcpXCI+XG4gICAgICAgIDxsaVxuICAgICAgICAgICpuZ0lmPVwic2hvd0ZpcnN0XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVmaW5lKCRldmVudCwgMClcIlxuICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgIGN4KCdpdGVtJykgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIGN4KCdpdGVtJywgJ2ZpcnN0UGFnZScpICtcbiAgICAgICAgICAgIChzdGF0ZS5jdXJyZW50UmVmaW5lbWVudCA9PT0gMCA/ICcgJyArIGN4KCdpdGVtJywgJ2Rpc2FibGVkJykgOiAnJylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIFtocmVmXT1cInN0YXRlLmNyZWF0ZVVSTCgwKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiY3goJ2xpbmsnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oC54oC5XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuXG4gICAgICAgIDxsaVxuICAgICAgICAgICpuZ0lmPVwic2hvd1ByZXZpb3VzXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVmaW5lKCRldmVudCwgc3RhdGUuY3VycmVudFJlZmluZW1lbnQgLSAxKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgY3goJ2l0ZW0nKSArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgY3goJ2l0ZW0nLCAncHJldmlvdXNQYWdlJykgK1xuICAgICAgICAgICAgKHN0YXRlLmN1cnJlbnRSZWZpbmVtZW50ID09PSAwID8gJyAnICsgY3goJ2l0ZW0nLCAnZGlzYWJsZWQnKSA6ICcnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW2hyZWZdPVwic3RhdGUuY3JlYXRlVVJMKHN0YXRlLmN1cnJlbnRSZWZpbmVtZW50IC0gMSlcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImN4KCdsaW5rJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKAuVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cblxuICAgICAgICA8bGlcbiAgICAgICAgICBbY2xhc3NdPVwiXG4gICAgICAgICAgICBjeCgnaXRlbScpICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBjeCgnaXRlbScsICdwYWdlJykgK1xuICAgICAgICAgICAgKHN0YXRlLmN1cnJlbnRSZWZpbmVtZW50ID09PSBwYWdlID8gJyAnICsgY3goJ2l0ZW0nLCAnc2VsZWN0ZWQnKSA6ICcnKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBhZ2Ugb2Ygc3RhdGUucGFnZXNcIlxuICAgICAgICAgIChjbGljayk9XCJyZWZpbmUoJGV2ZW50LCBwYWdlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW2NsYXNzXT1cImN4KCdsaW5rJylcIlxuICAgICAgICAgICAgW2hyZWZdPVwic3RhdGUuY3JlYXRlVVJMKHBhZ2UpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e3BhZ2UgKyAxfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG5cbiAgICAgICAgPGxpXG4gICAgICAgICAgKm5nSWY9XCJzaG93TmV4dFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlZmluZSgkZXZlbnQsIHN0YXRlLmN1cnJlbnRSZWZpbmVtZW50ICsgMSlcIlxuICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgIGN4KCdpdGVtJykgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIGN4KCdpdGVtJywgJ25leHRQYWdlJykgK1xuICAgICAgICAgICAgKHN0YXRlLmN1cnJlbnRSZWZpbmVtZW50ICsgMSA9PT0gc3RhdGUubmJQYWdlcyA/ICcgJyArIGN4KCdpdGVtJywgJ2Rpc2FibGVkJykgOiAnJylcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIFtocmVmXT1cInN0YXRlLmNyZWF0ZVVSTChzdGF0ZS5jdXJyZW50UmVmaW5lbWVudCArIDEpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJjeCgnbGluaycpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDigLpcbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG5cbiAgICAgICAgPGxpXG4gICAgICAgICAgKm5nSWY9XCJzaG93TGFzdFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlZmluZSgkZXZlbnQsIHN0YXRlLm5iUGFnZXMgLSAxKVwiXG4gICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgY3goJ2l0ZW0nKSArXG4gICAgICAgICAgICAnICcgK1xuICAgICAgICAgICAgY3goJ2l0ZW0nLCAnbGFzdFBhZ2UnKSArXG4gICAgICAgICAgICAoc3RhdGUuY3VycmVudFJlZmluZW1lbnQgKyAxID09PSBzdGF0ZS5uYlBhZ2VzID8gJyAnICsgY3goJ2l0ZW0nLCAnZGlzYWJsZWQnKSA6ICcnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW2hyZWZdPVwic3RhdGUuY3JlYXRlVVJMKHN0YXRlLm5iUGFnZXMgLSAxKVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiY3goJ2xpbmsnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oC64oC6XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTmdBaXNQYWdpbmF0aW9uIGV4dGVuZHMgVHlwZWRCYXNlV2lkZ2V0PFxuICBQYWdpbmF0aW9uV2lkZ2V0RGVzY3JpcHRpb24sXG4gIFBhZ2luYXRpb25Db25uZWN0b3JQYXJhbXNcbj4ge1xuICAvLyByZW5kZXJpbmcgb3B0aW9uc1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0ZpcnN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dMYXN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHNob3dQcmV2aW91czogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93TmV4dDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLy8gaW5zdGFuY2Ugb3B0aW9uc1xuICBASW5wdXQoKSBwdWJsaWMgcGFkZGluZz86IFBhZ2luYXRpb25Db25uZWN0b3JQYXJhbXNbJ3BhZGRpbmcnXTtcbiAgQElucHV0KCkgcHVibGljIHRvdGFsUGFnZXM/OiBQYWdpbmF0aW9uQ29ubmVjdG9yUGFyYW1zWyd0b3RhbFBhZ2VzJ107XG4gIC8vIFRPRE86IGNoZWNrIGlmIHRoaXMgd29ya3MsIHBhZGRpbmcgYW5kIHRvdGFsUGFnZXMgYXJlIG1vc3QgbGlrZWx5IHN0cmluZ3Mgd2hlbiBwYXNzZWQgdG8gdGhlIHRlbXBsYXRlXG5cbiAgcHVibGljIHN0YXRlOiBQYWdpbmF0aW9uUmVuZGVyU3RhdGUgPSB7XG4gICAgY3JlYXRlVVJMOiAoKSA9PiAnIycsXG4gICAgY3VycmVudFJlZmluZW1lbnQ6IDAsXG4gICAgbmJIaXRzOiAwLFxuICAgIG5iUGFnZXM6IDAsXG4gICAgcmVmaW5lOiBub29wLFxuICAgIHBhZ2VzOiBbXSxcbiAgICBjYW5SZWZpbmU6IGZhbHNlLFxuICAgIGlzRmlyc3RQYWdlOiBmYWxzZSxcbiAgICBpc0xhc3RQYWdlOiBmYWxzZSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTmdBaXNJbmRleCkpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgcGFyZW50SW5kZXg6IE5nQWlzSW5kZXgsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE5nQWlzSW5zdGFudFNlYXJjaCkpXG4gICAgcHVibGljIGluc3RhbnRTZWFyY2hJbnN0YW5jZTogTmdBaXNJbnN0YW50U2VhcmNoXG4gICkge1xuICAgIHN1cGVyKCdQYWdpbmF0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVXaWRnZXQoXG4gICAgICBjb25uZWN0UGFnaW5hdGlvbixcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogcGFyc2VOdW1iZXJJbnB1dCh0aGlzLnBhZGRpbmcpLFxuICAgICAgICB0b3RhbFBhZ2VzOiBwYXJzZU51bWJlcklucHV0KHRoaXMudG90YWxQYWdlcyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAkJHdpZGdldFR5cGU6ICdhaXMucGFnaW5hdGlvbicsXG4gICAgICB9XG4gICAgKTtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIHJlZmluZShldmVudDogTW91c2VFdmVudCwgcGFnZTogbnVtYmVyKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChcbiAgICAgIHBhZ2UgPCAwIHx8XG4gICAgICBwYWdlID09PSB0aGlzLnN0YXRlLmN1cnJlbnRSZWZpbmVtZW50IHx8XG4gICAgICBwYWdlID49IHRoaXMuc3RhdGUubmJQYWdlc1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUucmVmaW5lKHBhZ2UpO1xuICB9XG59XG4iXX0=