air-lib
Version:
This is Air's angular component library
184 lines • 15.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { PagingService } from './../../services/paging.service';
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { HttpService } from '../../services/http.service';
import { PagingEvent } from '../../entities/paging-event';
export class BaseMasterComponent {
/**
* @param {?} router
* @param {?} httpService
*/
constructor(router, httpService) {
this.router = router;
this.httpService = httpService;
}
/**
* @return {?}
*/
ngOnInit() {
this.setData();
}
/**
* @protected
* @return {?}
*/
setData() {
/** @type {?} */
const self = this;
self.httpService.get(self.apiCall.url)
.subscribe((data) => {
/** @type {?} */
const body = (/** @type {?} */ (data.body));
/** @type {?} */
const hash = data.headers.get(BaseMasterComponent.CACHED_HEADER);
if (hash === null) {
return;
}
/** @type {?} */
const pageNo = this.getPageNo(self.apiCall.url);
/** @type {?} */
const itemsOnPage = this.getPageEntries(self.apiCall.url);
this.setHash(hash, pageNo, itemsOnPage);
this.initialize(body);
return body;
}, err => { throw Error(err); });
}
/**
* @param {?} url
* @return {?}
*/
getPageNo(url) {
/** @type {?} */
let result = -1;
/** @type {?} */
const regexp = /page=[0-9]+/gm;
/** @type {?} */
const matches = url.match(regexp);
if (matches && matches.length > 0) {
result = +matches[0].replace('page=', '');
}
if (result === -1) {
return 1;
}
return result;
}
/**
* @param {?} url
* @return {?}
*/
getPageEntries(url) {
/** @type {?} */
let result = -1;
/** @type {?} */
const regexp = /pageentries=[0-9]+/gm;
/** @type {?} */
const matches = url.match(regexp);
if (matches && matches.length > 0) {
result = +matches[0].replace('pageentries=', '');
}
if (result === -1) {
return 50;
}
return result;
}
/**
* @protected
* @param {?} response
* @return {?}
*/
initialize(response) { }
/**
* @param {?} data
* @param {?} apiCall
* @return {?}
*/
parseHttpHeader(data, apiCall) {
this.apiCall = apiCall;
/** @type {?} */
const hash = data.headers.get(BaseMasterComponent.CACHED_HEADER);
/** @type {?} */
const pageNo = this.getPageNo(apiCall.url);
/** @type {?} */
const itemsOnPage = this.getPageEntries(apiCall.url);
if (hash !== null) {
this.setHash(hash, pageNo, itemsOnPage);
}
}
/**
* @protected
* @param {?} id
* @param {?} hash
* @param {?} i
* @param {?} apiCall
* @param {?} total
* @param {?=} itemsOnPage
* @return {?}
*/
openDetails(id, hash, i, apiCall, total, itemsOnPage = 50) {
/** @type {?} */
const pagingEvent = new PagingEvent(hash);
pagingEvent.startIndex = 0;
/** @type {?} */
const index = (this.getPageNo(apiCall.url) - 1) * itemsOnPage + i;
pagingEvent.currentIndex = index;
pagingEvent.total = total;
pagingEvent.itemsOnPage = itemsOnPage;
pagingEvent.backUrl = encodeURIComponent(this.router.url);
pagingEvent.detailsUrl = this.detailsUrl;
pagingEvent.currentId = id;
pagingEvent.targetUrl = PagingService.buildRedirectUrl(pagingEvent);
pagingEvent.apiCall = apiCall;
PagingService.saveToLocalStorage(pagingEvent);
this.router.navigateByUrl(pagingEvent.targetUrl);
}
/**
* @param {?} hashFromHeader
* @param {?} currentPage
* @param {?} itemsOnPage
* @return {?}
*/
setHash(hashFromHeader, currentPage, itemsOnPage) {
this.hash = hashFromHeader;
PagingService.fireHashChangedEvent(hashFromHeader, this.context, currentPage, itemsOnPage);
}
}
BaseMasterComponent.CACHED_HEADER = 'SearchResultsHash';
BaseMasterComponent.decorators = [
{ type: Component, args: [{
template: '',
providers: [PagingService]
}] }
];
BaseMasterComponent.ctorParameters = () => [
{ type: Router },
{ type: HttpService }
];
if (false) {
/** @type {?} */
BaseMasterComponent.CACHED_HEADER;
/** @type {?} */
BaseMasterComponent.prototype.apiCall;
/** @type {?} */
BaseMasterComponent.prototype.detailsUrl;
/** @type {?} */
BaseMasterComponent.prototype.hash;
/** @type {?} */
BaseMasterComponent.prototype.data;
/** @type {?} */
BaseMasterComponent.prototype.context;
/**
* @type {?}
* @protected
*/
BaseMasterComponent.prototype.router;
/**
* @type {?}
* @protected
*/
BaseMasterComponent.prototype.httpService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tYXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2Jhc2UtbWFzdGVyL2Jhc2UtbWFzdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPMUQsTUFBTTs7Ozs7SUFTSixZQUFzQixNQUFjLEVBQVksV0FBd0I7UUFBbEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBRXhFLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7Ozs7O0lBRVMsT0FBTzs7Y0FDVCxJQUFJLEdBQUcsSUFBSTtRQUVqQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUNuQyxTQUFTLENBQ1IsQ0FBQyxJQUEwQixFQUFFLEVBQUU7O2tCQUV2QixJQUFJLEdBQUcsbUJBQUEsSUFBSSxDQUFDLElBQUksRUFBTzs7a0JBQ3ZCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUM7WUFDaEUsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNqQixPQUFPO2FBQ1I7O2tCQUNLLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDOztrQkFDekMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBRXhDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDN0IsQ0FBQztJQUNOLENBQUM7Ozs7O0lBRU0sU0FBUyxDQUFDLEdBQVc7O1lBQ3RCLE1BQU0sR0FBRyxDQUFDLENBQUM7O2NBQ1QsTUFBTSxHQUFHLGVBQWU7O2NBQ3hCLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztTQUMzQztRQUNELElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7OztJQUVNLGNBQWMsQ0FBQyxHQUFXOztZQUMzQixNQUFNLEdBQUcsQ0FBQyxDQUFDOztjQUNULE1BQU0sR0FBRyxzQkFBc0I7O2NBQy9CLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNsRDtRQUNELElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2pCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7Ozs7SUFFUyxVQUFVLENBQUMsUUFBYSxJQUFJLENBQUM7Ozs7OztJQUVoQyxlQUFlLENBQUMsSUFBMEIsRUFBRSxPQUFvQjtRQUNyRSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQzs7Y0FDakIsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQzs7Y0FDMUQsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzs7Y0FDcEMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNwRCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7SUFFUyxXQUFXLENBQUMsRUFBVSxFQUFFLElBQVksRUFBRSxDQUFTLEVBQUUsT0FBb0IsRUFBRSxLQUFhLEVBQUUsY0FBc0IsRUFBRTs7Y0FFaEgsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQztRQUV6QyxXQUFXLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQzs7Y0FDckIsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUM7UUFDakUsV0FBVyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDakMsV0FBVyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDMUIsV0FBVyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDdEMsV0FBVyxDQUFDLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUMzQixXQUFXLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxXQUFXLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM5QixhQUFhLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRW5ELENBQUM7Ozs7Ozs7SUFFTSxPQUFPLENBQUMsY0FBc0IsRUFBRSxXQUFtQixFQUFFLFdBQW1CO1FBQzdFLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO1FBQzNCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDN0YsQ0FBQzs7QUFuR2EsaUNBQWEsR0FBRyxtQkFBbUIsQ0FBQzs7WUFQbkQsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxFQUFFO2dCQUNaLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQzthQUMzQjs7O1lBUFEsTUFBTTtZQUNOLFdBQVc7Ozs7SUFVbEIsa0NBQWtEOztJQUNsRCxzQ0FBNEI7O0lBQzVCLHlDQUEwQjs7SUFDMUIsbUNBQW9COztJQUNwQixtQ0FBaUI7O0lBQ2pCLHNDQUF1Qjs7Ozs7SUFFWCxxQ0FBd0I7Ozs7O0lBQUUsMENBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBpQ2FsbEluZm8gfSBmcm9tICcuLy4uLy4uL2VudGl0aWVzL2FwaS1jYWxsLWluZm8nO1xyXG5pbXBvcnQgeyBQYWdpbmdTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9zZXJ2aWNlcy9wYWdpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdpbmdFdmVudCB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3BhZ2luZy1ldmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgcHJvdmlkZXJzOiBbUGFnaW5nU2VydmljZV1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlTWFzdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBDQUNIRURfSEVBREVSID0gJ1NlYXJjaFJlc3VsdHNIYXNoJztcclxuICBwdWJsaWMgYXBpQ2FsbDogQXBpQ2FsbEluZm87XHJcbiAgcHVibGljIGRldGFpbHNVcmw6IHN0cmluZztcclxuICBwdWJsaWMgaGFzaDogc3RyaW5nO1xyXG4gIHB1YmxpYyBkYXRhOiBhbnk7XHJcbiAgcHVibGljIGNvbnRleHQ6IHN0cmluZztcclxuICBcclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsIHByb3RlY3RlZCBodHRwU2VydmljZTogSHR0cFNlcnZpY2UpIHtcclxuICBcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0RGF0YSgpIHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgIHNlbGYuaHR0cFNlcnZpY2UuZ2V0KHNlbGYuYXBpQ2FsbC51cmwpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGRhdGE6IEh0dHBSZXNwb25zZTxPYmplY3Q+KSA9PiB7XHJcblxyXG4gICAgICAgICAgY29uc3QgYm9keSA9IGRhdGEuYm9keSBhcyBhbnk7XHJcbiAgICAgICAgICBjb25zdCBoYXNoID0gZGF0YS5oZWFkZXJzLmdldChCYXNlTWFzdGVyQ29tcG9uZW50LkNBQ0hFRF9IRUFERVIpO1xyXG4gICAgICAgICAgaWYgKGhhc2ggPT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgcGFnZU5vID0gdGhpcy5nZXRQYWdlTm8oc2VsZi5hcGlDYWxsLnVybCk7XHJcbiAgICAgICAgICBjb25zdCBpdGVtc09uUGFnZSA9IHRoaXMuZ2V0UGFnZUVudHJpZXMoc2VsZi5hcGlDYWxsLnVybCk7XHJcbiAgICAgICAgICB0aGlzLnNldEhhc2goaGFzaCwgcGFnZU5vLCBpdGVtc09uUGFnZSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5pbml0aWFsaXplKGJvZHkpO1xyXG4gICAgICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4geyB0aHJvdyBFcnJvcihlcnIpOyB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UGFnZU5vKHVybDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCByZXN1bHQgPSAtMTtcclxuICAgIGNvbnN0IHJlZ2V4cCA9IC9wYWdlPVswLTldKy9nbTtcclxuICAgIGNvbnN0IG1hdGNoZXMgPSB1cmwubWF0Y2gocmVnZXhwKTtcclxuICAgIGlmIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXN1bHQgPSArbWF0Y2hlc1swXS5yZXBsYWNlKCdwYWdlPScsICcnKTtcclxuICAgIH1cclxuICAgIGlmIChyZXN1bHQgPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYWdlRW50cmllcyh1cmw6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgcmVzdWx0ID0gLTE7XHJcbiAgICBjb25zdCByZWdleHAgPSAvcGFnZWVudHJpZXM9WzAtOV0rL2dtO1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IHVybC5tYXRjaChyZWdleHApO1xyXG4gICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJlc3VsdCA9ICttYXRjaGVzWzBdLnJlcGxhY2UoJ3BhZ2VlbnRyaWVzPScsICcnKTtcclxuICAgIH1cclxuICAgIGlmIChyZXN1bHQgPT09IC0xKSB7XHJcbiAgICAgIHJldHVybiA1MDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZShyZXNwb25zZTogYW55KSB7IH1cclxuXHJcbiAgcHVibGljIHBhcnNlSHR0cEhlYWRlcihkYXRhOiBIdHRwUmVzcG9uc2U8T2JqZWN0PiwgYXBpQ2FsbDogQXBpQ2FsbEluZm8pIHtcclxuICAgIHRoaXMuYXBpQ2FsbCA9IGFwaUNhbGw7XHJcbiAgICBjb25zdCBoYXNoID0gZGF0YS5oZWFkZXJzLmdldChCYXNlTWFzdGVyQ29tcG9uZW50LkNBQ0hFRF9IRUFERVIpO1xyXG4gICAgY29uc3QgcGFnZU5vID0gdGhpcy5nZXRQYWdlTm8oYXBpQ2FsbC51cmwpO1xyXG4gICAgY29uc3QgaXRlbXNPblBhZ2UgPSB0aGlzLmdldFBhZ2VFbnRyaWVzKGFwaUNhbGwudXJsKTtcclxuICAgIGlmIChoYXNoICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuc2V0SGFzaChoYXNoLCBwYWdlTm8sIGl0ZW1zT25QYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvcGVuRGV0YWlscyhpZDogc3RyaW5nLCBoYXNoOiBzdHJpbmcsIGk6IG51bWJlciwgYXBpQ2FsbDogQXBpQ2FsbEluZm8sIHRvdGFsOiBudW1iZXIsIGl0ZW1zT25QYWdlOiBudW1iZXIgPSA1MCkge1xyXG5cclxuICAgIGNvbnN0IHBhZ2luZ0V2ZW50ID0gbmV3IFBhZ2luZ0V2ZW50KGhhc2gpO1xyXG4gICAgXHJcbiAgICBwYWdpbmdFdmVudC5zdGFydEluZGV4ID0gMDtcclxuICAgIGNvbnN0IGluZGV4ID0gKHRoaXMuZ2V0UGFnZU5vKGFwaUNhbGwudXJsKSAtIDEpICogaXRlbXNPblBhZ2UgKyBpO1xyXG4gICAgcGFnaW5nRXZlbnQuY3VycmVudEluZGV4ID0gaW5kZXg7XHJcbiAgICBwYWdpbmdFdmVudC50b3RhbCA9IHRvdGFsO1xyXG4gICAgcGFnaW5nRXZlbnQuaXRlbXNPblBhZ2UgPSBpdGVtc09uUGFnZTtcclxuICAgIHBhZ2luZ0V2ZW50LmJhY2tVcmwgPSBlbmNvZGVVUklDb21wb25lbnQodGhpcy5yb3V0ZXIudXJsKTtcclxuICAgIHBhZ2luZ0V2ZW50LmRldGFpbHNVcmwgPSB0aGlzLmRldGFpbHNVcmw7XHJcbiAgICBwYWdpbmdFdmVudC5jdXJyZW50SWQgPSBpZDtcclxuICAgIHBhZ2luZ0V2ZW50LnRhcmdldFVybCA9IFBhZ2luZ1NlcnZpY2UuYnVpbGRSZWRpcmVjdFVybChwYWdpbmdFdmVudCk7XHJcbiAgICBwYWdpbmdFdmVudC5hcGlDYWxsID0gYXBpQ2FsbDtcclxuICAgIFBhZ2luZ1NlcnZpY2Uuc2F2ZVRvTG9jYWxTdG9yYWdlKHBhZ2luZ0V2ZW50KTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHBhZ2luZ0V2ZW50LnRhcmdldFVybCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEhhc2goaGFzaEZyb21IZWFkZXI6IHN0cmluZywgY3VycmVudFBhZ2U6IG51bWJlciwgaXRlbXNPblBhZ2U6IG51bWJlcikge1xyXG4gICAgdGhpcy5oYXNoID0gaGFzaEZyb21IZWFkZXI7XHJcbiAgICBQYWdpbmdTZXJ2aWNlLmZpcmVIYXNoQ2hhbmdlZEV2ZW50KGhhc2hGcm9tSGVhZGVyLCB0aGlzLmNvbnRleHQsIGN1cnJlbnRQYWdlLCBpdGVtc09uUGFnZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==