@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
126 lines • 18.7 kB
JavaScript
import { Injectable } from '@angular/core';
import { map } from 'rxjs/operators';
import { ResourceProvider } from '../resource-provider.service';
import { FilterType } from '../../filter/models/filter-type';
import { AbstractResourceService } from '../abstract-endpoint/abstract-resource.service';
import * as i0 from "@angular/core";
import * as i1 from "../resource-provider.service";
import * as i2 from "../../configuration/configuration.service";
export class CaseResourceService extends AbstractResourceService {
constructor(provider, configService) {
super('case', provider, configService);
}
/**
* Get count of the cases
* POST
* {{baseUrl}}/api/workflow/case/count
*/
count(filter) {
if (filter.type !== FilterType.CASE) {
throw new Error('Provided filter doesn\'t have type CASE');
}
return this._resourceProvider.post$('workflow/case/count', this.SERVER_URL, filter.getRequestBody(), filter.getRequestParams())
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get all cases of the system
* GET
* {{baseUrl}}/api/workflow/all
*/
getAllCase() {
return this._resourceProvider.get$('workflow/all', this.SERVER_URL).pipe(map(r => this.changeType(r, 'cases')));
}
/**
* Generic case search
* POST
* {{baseUrl}}/api/workflow/case/search
* @param filter filter used to search cases. Must be of type `CASE`.
* @param params request parameters, that can be used for sorting of results.
*/
searchCases(filter, params) {
if (filter.type !== FilterType.CASE) {
throw new Error('Provided filter doesn\'t have type CASE');
}
params = ResourceProvider.combineParams(filter.getRequestParams(), params);
return this._resourceProvider.post$('workflow/case/search', this.SERVER_URL, filter.getRequestBody(), params)
.pipe(map(r => this.getResourcePage(r, 'cases')));
}
/**
* Delete case
* DELETE
* {{baseUrl}}/api/workflow/case/:id
*/
deleteCase(caseID, deleteSubtree = false) {
return this._resourceProvider.delete$('workflow/case/' + caseID, this.SERVER_URL, deleteSubtree ? { deleteSubtree: deleteSubtree.toString() } : {})
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Download case file field value
* GET
* {{baseUrl}}/api/workflow/case/:id/file/:field
*/
getCaseFile(caseID, params) {
return this._resourceProvider.get$('workflow/case/' + caseID + '/file', this.SERVER_URL, params).pipe(map(r => this.changeType(r, undefined)));
}
/**
* Create new case
* POST
* {{baseUrl}}/api/workflow/case
*/
createCase(body) {
return this._resourceProvider.post$('workflow/case/', this.SERVER_URL, body).pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get all cases by user that created them
* POST
* {{baseUrl}}/api/workflow/case/author/:id
*/
getAllCaseUser(userId, body) {
return this._resourceProvider.post$('workflow/case/author/' + userId, this.SERVER_URL, body).pipe(map(r => this.changeType(r, 'cases')));
}
/**
* Generic case search with QueryDSL predicate
* POST
* {{baseUrl}}/api/workflow/case/search2
*/
getCasesQueryDSL(body) {
return this._resourceProvider.post$('workflow/case/search2', this.SERVER_URL, body).pipe(map(r => this.getResourcePage(r, 'cases')));
}
/**
* Generic case search with object encoded search query. Similar to [getCasesQueryDSL]{@link CaseResourceService#getCasesQueryDSL}
* POST
* {{baseUrl}}/api/workflow/case/search_mongo
* @param body object defining the search query
* @param params request parameters, that can be used for sorting of results.
*/
getCases(body, params) {
return this._resourceProvider.post$('workflow/case/search_mongo', this.SERVER_URL, body, params)
.pipe(map(r => this.getResourcePage(r, 'cases')));
}
/**
* Search one case by it's id.
* GET
* {{baseUrl}}/api/workflow/case/:id
*/
getOneCase(caseId) {
return this._resourceProvider.get$('workflow/case/' + caseId, this.SERVER_URL).pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get options for enumeration or multiple-choice data field
* GET
* {{baseUrl}}/api/workflow/case/:caseId/field/:fieldId
*/
getOptionsEnumeration(caseId, fieldId) {
return this._resourceProvider.get$('workflow/case/' + caseId + '/field/' + fieldId, this.SERVER_URL)
.pipe(map(r => this.changeType(r, undefined)));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseResourceService, deps: [{ token: i1.ResourceProvider }, { token: i2.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseResourceService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseResourceService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.ResourceProvider }, { type: i2.ConfigurationService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXNvdXJjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L2Nhc2UtcmVzb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQVMsZ0JBQWdCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU90RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFHM0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0RBQWdELENBQUM7Ozs7QUFRdkYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHVCQUF1QjtJQUU1RCxZQUFZLFFBQTBCLEVBQUUsYUFBbUM7UUFDdkUsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsTUFBYztRQUN2QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRTtZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDMUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxD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QUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7d0dBcElRLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzRGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BhcmFtcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0NvdW50fSBmcm9tICcuLi9pbnRlcmZhY2UvY291bnQnO1xuaW1wb3J0IHtDYXNlfSBmcm9tICcuLi9pbnRlcmZhY2UvY2FzZSc7XG5pbXBvcnQge0ZpbGVSZXNvdXJjZX0gZnJvbSAnLi4vaW50ZXJmYWNlL2ZpbGUtcmVzb3VyY2UnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDb3VudFNlcnZpY2V9IGZyb20gJy4uL2Fic3RyYWN0LWVuZHBvaW50L2NvdW50LXNlcnZpY2UnO1xuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7RmlsdGVyVHlwZX0gZnJvbSAnLi4vLi4vZmlsdGVyL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4uL2ludGVyZmFjZS9wYWdlJztcbmltcG9ydCB7Q2FzZUdldFJlcXVlc3RCb2R5fSBmcm9tICcuLi9pbnRlcmZhY2UvY2FzZS1nZXQtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7QWJzdHJhY3RSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL2Fic3RyYWN0LWVuZHBvaW50L2Fic3RyYWN0LXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcbmltcG9ydCB7Q3JlYXRlQ2FzZVJlcXVlc3RCb2R5fSBmcm9tICcuLi9pbnRlcmZhY2UvY3JlYXRlLWNhc2UtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7SHR0cFBhcmFtc30gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVJlc291cmNlU2VydmljZSBleHRlbmRzIEFic3RyYWN0UmVzb3VyY2VTZXJ2aWNlIGltcGxlbWVudHMgQ291bnRTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3ZpZGVyOiBSZXNvdXJjZVByb3ZpZGVyLCBjb25maWdTZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSkge1xuICAgICAgICBzdXBlcignY2FzZScsIHByb3ZpZGVyLCBjb25maWdTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY291bnQgb2YgdGhlIGNhc2VzXG4gICAgICogUE9TVFxuICAgICAqIHt7YmFzZVVybH19L2FwaS93b3JrZmxvdy9jYXNlL2NvdW50XG4gICAgICovXG4gICAgcHVibGljIGNvdW50KGZpbHRlcjogRmlsdGVyKTogT2JzZXJ2YWJsZTxDb3VudD4ge1xuICAgICAgICBpZiAoZmlsdGVyLnR5cGUgIT09IEZpbHRlclR5cGUuQ0FTRSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm92aWRlZCBmaWx0ZXIgZG9lc25cXCd0IGhhdmUgdHlwZSBDQVNFJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3dvcmtmbG93L2Nhc2UvY291bnQnLCB0aGlzLlNFUlZFUl9VUkwsIGZpbHRlci5nZXRSZXF1ZXN0Qm9keSgpLCBmaWx0ZXIuZ2V0UmVxdWVzdFBhcmFtcygpKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIGNhc2VzIG9mIHRoZSBzeXN0ZW1cbiAgICAgKiBHRVRcbiAgICAgKiB7e2Jhc2VVcmx9fS9hcGkvd29ya2Zsb3cvYWxsXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbENhc2UoKTogT2JzZXJ2YWJsZTxBcnJheTxDYXNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd3b3JrZmxvdy9hbGwnLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsICdjYXNlcycpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJpYyBjYXNlIHNlYXJjaFxuICAgICAqIFBPU1RcbiAgICAgKiB7e2Jhc2VVcmx9fS9hcGkvd29ya2Zsb3cvY2FzZS9zZWFyY2hcbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciB1c2VkIHRvIHNlYXJjaCBjYXNlcy4gTXVzdCBiZSBvZiB0eXBlIGBDQVNFYC5cbiAgICAgKiBAcGFyYW0gcGFyYW1zIHJlcXVlc3QgcGFyYW1ldGVycywgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc29ydGluZyBvZiByZXN1bHRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWFyY2hDYXNlcyhmaWx0ZXI6IEZpbHRlciwgcGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlPENhc2U+PiB7XG4gICAgICAgIGlmIChmaWx0ZXIudHlwZSAhPT0gRmlsdGVyVHlwZS5DQVNFKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVkIGZpbHRlciBkb2VzblxcJ3QgaGF2ZSB0eXBlIENBU0UnKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJhbXMgPSBSZXNvdXJjZVByb3ZpZGVyLmNvbWJpbmVQYXJhbXMoZmlsdGVyLmdldFJlcXVlc3RQYXJhbXMoKSwgcGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3dvcmtmbG93L2Nhc2Uvc2VhcmNoJywgdGhpcy5TRVJWRVJfVVJMLCBmaWx0ZXIuZ2V0UmVxdWVzdEJvZHkoKSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5nZXRSZXNvdXJjZVBhZ2U8Q2FzZT4ociwgJ2Nhc2VzJykpKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBjYXNlXG4gICAgICogREVMRVRFXG4gICAgICoge3tiYXNlVXJsfX0vYXBpL3dvcmtmbG93L2Nhc2UvOmlkXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUNhc2UoY2FzZUlEOiBzdHJpbmcsIGRlbGV0ZVN1YnRyZWUgPSBmYWxzZSk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmRlbGV0ZSQoJ3dvcmtmbG93L2Nhc2UvJyArIGNhc2VJRCxcbiAgICAgICAgICAgIHRoaXMuU0VSVkVSX1VSTCxcbiAgICAgICAgICAgIGRlbGV0ZVN1YnRyZWUgPyB7ZGVsZXRlU3VidHJlZTogZGVsZXRlU3VidHJlZS50b1N0cmluZygpfSA6IHt9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIERvd25sb2FkIGNhc2UgZmlsZSBmaWVsZCB2YWx1ZVxuICAgICAqIEdFVFxuICAgICAqIHt7YmFzZVVybH19L2FwaS93b3JrZmxvdy9jYXNlLzppZC9maWxlLzpmaWVsZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXNlRmlsZShjYXNlSUQ6IHN0cmluZywgcGFyYW1zOiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxGaWxlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgnd29ya2Zsb3cvY2FzZS8nICsgY2FzZUlEICsgJy9maWxlJywgdGhpcy5TRVJWRVJfVVJMLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBuZXcgY2FzZVxuICAgICAqIFBPU1RcbiAgICAgKiB7e2Jhc2VVcmx9fS9hcGkvd29ya2Zsb3cvY2FzZVxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVDYXNlKGJvZHk6IENyZWF0ZUNhc2VSZXF1ZXN0Qm9keSk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCd3b3JrZmxvdy9jYXNlLycsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSkucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgY2FzZXMgYnkgdXNlciB0aGF0IGNyZWF0ZWQgdGhlbVxuICAgICAqIFBPU1RcbiAgICAgKiB7e2Jhc2VVcmx9fS9hcGkvd29ya2Zsb3cvY2FzZS9hdXRob3IvOmlkXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbENhc2VVc2VyKHVzZXJJZDogc3RyaW5nLCBib2R5OiBvYmplY3QpOiBPYnNlcnZhYmxlPEFycmF5PENhc2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCd3b3JrZmxvdy9jYXNlL2F1dGhvci8nICsgdXNlcklkLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHkpLnBpcGUoXG4gICAgICAgICAgICBtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgJ2Nhc2VzJykpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmljIGNhc2Ugc2VhcmNoIHdpdGggUXVlcnlEU0wgcHJlZGljYXRlXG4gICAgICogUE9TVFxuICAgICAqIHt7YmFzZVVybH19L2FwaS93b3JrZmxvdy9jYXNlL3NlYXJjaDJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2FzZXNRdWVyeURTTChib2R5OiBvYmplY3QpOiBPYnNlcnZhYmxlPFBhZ2U8Q2FzZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3dvcmtmbG93L2Nhc2Uvc2VhcmNoMicsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSkucGlwZShcbiAgICAgICAgICAgIG1hcChyID0+IHRoaXMuZ2V0UmVzb3VyY2VQYWdlPENhc2U+KHIsICdjYXNlcycpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyaWMgY2FzZSBzZWFyY2ggd2l0aCBvYmplY3QgZW5jb2RlZCBzZWFyY2ggcXVlcnkuIFNpbWlsYXIgdG8gW2dldENhc2VzUXVlcnlEU0xde0BsaW5rIENhc2VSZXNvdXJjZVNlcnZpY2UjZ2V0Q2FzZXNRdWVyeURTTH1cbiAgICAgKiBQT1NUXG4gICAgICoge3tiYXNlVXJsfX0vYXBpL3dvcmtmbG93L2Nhc2Uvc2VhcmNoX21vbmdvXG4gICAgICogQHBhcmFtIGJvZHkgb2JqZWN0IGRlZmluaW5nIHRoZSBzZWFyY2ggcXVlcnlcbiAgICAgKiBAcGFyYW0gcGFyYW1zIHJlcXVlc3QgcGFyYW1ldGVycywgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc29ydGluZyBvZiByZXN1bHRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXNlcyhib2R5OiBDYXNlR2V0UmVxdWVzdEJvZHksIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UGFnZTxDYXNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgnd29ya2Zsb3cvY2FzZS9zZWFyY2hfbW9uZ28nLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHksIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuZ2V0UmVzb3VyY2VQYWdlPENhc2U+KHIsICdjYXNlcycpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoIG9uZSBjYXNlIGJ5IGl0J3MgaWQuXG4gICAgICogR0VUXG4gICAgICoge3tiYXNlVXJsfX0vYXBpL3dvcmtmbG93L2Nhc2UvOmlkXG4gICAgICovXG4gICAgcHVibGljIGdldE9uZUNhc2UoY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgnd29ya2Zsb3cvY2FzZS8nICsgY2FzZUlkLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEdldCBvcHRpb25zIGZvciBlbnVtZXJhdGlvbiBvciBtdWx0aXBsZS1jaG9pY2UgZGF0YSBmaWVsZFxuICAgICAqIEdFVFxuICAgICAqIHt7YmFzZVVybH19L2FwaS93b3JrZmxvdy9jYXNlLzpjYXNlSWQvZmllbGQvOmZpZWxkSWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T3B0aW9uc0VudW1lcmF0aW9uKGNhc2VJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgnd29ya2Zsb3cvY2FzZS8nICsgY2FzZUlkICsgJy9maWVsZC8nICsgZmllbGRJZCwgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbn1cblxuIl19