@tilde-nlp/ngx-common 4.1.56 → 4.1.58
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.
- package/esm2022/lib/services/quota/models/quota-service-configuration.model.mjs +1 -1
- package/esm2022/lib/services/quota/quota.service.mjs +5 -3
- package/esm2022/lib/terminology/services/terminology/terminology.service.mjs +2 -3
- package/fesm2022/tilde-nlp-ngx-common.mjs +4 -4
- package/fesm2022/tilde-nlp-ngx-common.mjs.map +1 -1
- package/lib/services/quota/models/quota-service-configuration.model.d.ts +2 -0
- package/lib/services/quota/quota.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtc2VydmljZS1jb25maWd1cmF0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3F1b3RhL21vZGVscy9xdW90YS1zZXJ2aWNlLWNvbmZpZ3VyYXRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUXVvdGFTZXJ2aWNlQ29uZmlndXJhdGlvbiB7XHJcbiAgYXBpVXJsOiBzdHJpbmc7XHJcbiAgeEFwaUtleTogc3RyaW5nO1xyXG4gIGFwcElkOiBzdHJpbmc7XHJcbn0iXX0=
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { QUOTA_SERVICE_CONFIGURATION_TOKEN } from './injection-tokens/quota-service-configuration.token';
|
|
3
|
+
import { AuthHeadersHelper } from '../../helpers';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common/http";
|
|
5
6
|
export class QuotaService {
|
|
6
7
|
constructor(http, config) {
|
|
7
8
|
this.http = http;
|
|
8
|
-
this.
|
|
9
|
+
this.config = config;
|
|
9
10
|
}
|
|
10
11
|
getQuotaUsage() {
|
|
11
|
-
|
|
12
|
+
const headers = AuthHeadersHelper.getApiV2AuthHeaders(this.config.xApiKey, this.config.appId);
|
|
13
|
+
return this.http.get(this.config.apiUrl, { headers });
|
|
12
14
|
}
|
|
13
15
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuotaService, deps: [{ token: i1.HttpClient }, { token: QUOTA_SERVICE_CONFIGURATION_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14
16
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuotaService, providedIn: 'root' }); }
|
|
@@ -22,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
22
24
|
type: Inject,
|
|
23
25
|
args: [QUOTA_SERVICE_CONFIGURATION_TOKEN]
|
|
24
26
|
}] }]; } });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9xdW90YS9xdW90YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRXpHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBS2xELE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQ21CLElBQWdCLEVBQ1UsTUFBaUM7UUFEM0QsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUdqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7K0dBZFUsWUFBWSw0Q0FLYixpQ0FBaUM7bUhBTGhDLFlBQVksY0FGWCxNQUFNOzs0RkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksTUFBTTsyQkFBQyxpQ0FBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBRdW90YVVzYWdlIH0gZnJvbSAnLi9tb2RlbHMvcXVvdGEtdXNhZ2UubW9kZWwnO1xyXG5pbXBvcnQgeyBRVU9UQV9TRVJWSUNFX0NPTkZJR1VSQVRJT05fVE9LRU4gfSBmcm9tICcuL2luamVjdGlvbi10b2tlbnMvcXVvdGEtc2VydmljZS1jb25maWd1cmF0aW9uLnRva2VuJztcclxuaW1wb3J0IHsgUXVvdGFTZXJ2aWNlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vbW9kZWxzL3F1b3RhLXNlcnZpY2UtY29uZmlndXJhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEF1dGhIZWFkZXJzSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUXVvdGFTZXJ2aWNlIHtcclxuICBwcml2YXRlIGNvbmZpZyE6IFF1b3RhU2VydmljZUNvbmZpZ3VyYXRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChRVU9UQV9TRVJWSUNFX0NPTkZJR1VSQVRJT05fVE9LRU4pIGNvbmZpZzogUXVvdGFTZXJ2aWNlQ29uZmlndXJhdGlvblxyXG4gICkge1xyXG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XHJcbiAgfVxyXG5cclxuICBnZXRRdW90YVVzYWdlKCk6IE9ic2VydmFibGU8eyB1c2FnZTogUXVvdGFVc2FnZVtdIH0+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBBdXRoSGVhZGVyc0hlbHBlci5nZXRBcGlWMkF1dGhIZWFkZXJzKHRoaXMuY29uZmlnLnhBcGlLZXksIHRoaXMuY29uZmlnLmFwcElkKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDx7IHVzYWdlOiBRdW90YVVzYWdlW10gfT4odGhpcy5jb25maWcuYXBpVXJsLCB7IGhlYWRlcnMgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -292,8 +292,7 @@ export class TerminologyService {
|
|
|
292
292
|
if (!localStorageObject) {
|
|
293
293
|
localStorageObject = {};
|
|
294
294
|
}
|
|
295
|
-
localStorageObject[engineId] = this.engines[engineId].selected ?
|
|
296
|
-
// store term id if it exists
|
|
295
|
+
localStorageObject[engineId] = this.engines[engineId].selected ? this.engines[engineId]?.selected?.mtCollection?.id : null;
|
|
297
296
|
localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(localStorageObject));
|
|
298
297
|
}
|
|
299
298
|
readLocalStorage() {
|
|
@@ -317,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
317
316
|
providedIn: 'root',
|
|
318
317
|
}]
|
|
319
318
|
}], ctorParameters: function () { return [{ type: i1.TerminologyConfigService }, { type: i2.AlertService }, { type: i3.TerminologyCollectionService }, { type: i4.TerminologyApiService }]; } });
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWlub2xvZ3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXJtaW5vbG9neS9zZXJ2aWNlcy90ZXJtaW5vbG9neS90ZXJtaW5vbG9neS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBUWxELE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQzlELElBQUksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQSxDQUFDLENBQUM7SUFJaEYsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxDQUNMLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDOUIsSUFBSSxDQUFDLG9CQUFvQjtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUNtQixNQUFnQyxFQUNoQyxLQUFtQixFQUNuQixpQkFBK0MsRUFDL0MsS0FBNEI7UUFINUIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQThC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QUFnQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZCLGtCQUFrQixHQUFHLEVBQVMsQ0FBQztTQUNoQztRQUVELGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckwsNkJBQTZCO1FBQzdCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQVcsQ0FBQztRQUNwRSxJQUFJO1lBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO1FBQUMsTUFBTTtZQUNOLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU8sc0NBQXNDO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7K0dBM1pVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZm9ya0pvaW4sIG9mLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUZXJtaW5vbG9neUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb25maWcvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZSwgTXRDb2xsZWN0aW9uU3RhdHVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBDb21iaW5lZENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBUZXJtaW5vbG9neUVuZ2luZSB9IGZyb20gJy4uLy4uL21vZGVscy90ZXJtaW5vbG9neS1lbmdpbmUubW9kZWwnO1xyXG5pbXBvcnQgeyBUZXJtaW5vbG9neUFwaVNlcnZpY2UgfSBmcm9tICcuLi90ZXJtaW5vbG9neS1hcGkvdGVybWlub2xvZ3ktYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXJtaW5vbG9neUNvbGxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdGVybWlub2xvZ3ktY29sbGVjdGlvbi90ZXJtaW5vbG9neS1jb2xsZWN0aW9uLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlcm1pbm9sb2d5U2VydmljZSB7XHJcbiAgcHVibGljIGVuZ2luZXM6IHsgW2VuZ2luZUlkOiBzdHJpbmddOiBUZXJtaW5vbG9neUVuZ2luZSB9ID0ge307XHJcblxyXG4gIHByaXZhdGUgcmV0cmFuc2xhdGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwcml2YXRlIGVuZ2luZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuZW5naW5lcyk7XHJcbiAgcHJpdmF0ZSB1cGRhdGVkRW5naW5lc1N1YmplY3QgPSBuZXcgU3ViamVjdDx7W2VuZ2luZUlkOiBzdHJpbmddOiBUZXJtaW5vbG9neUVuZ2luZX0+KCk7XHJcblxyXG4gIGdldCBpc0F1dGhlbnRpY2F0ZWQoKSB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLmlzQXV0aCB9XHJcbiAgZ2V0IGNhbkNyZWF0ZUNvbGxlY3Rpb25zKCkgeyByZXR1cm4gdGhpcy5jb25maWcudGVybUNvbmZpZy5jYW5DcmVhdGVDb2xsZWN0aW9uIH1cclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IExPQ0FMX1NUT1JBR0VfS0VZID0gJ3N5c3RlbUxhc3RDb2xsZWN0aW9ucyc7XHJcblxyXG4gIGdldCBoYXNFZGl0UGVybWlzc2lvbnMoKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmNvbmZpZz8udGVybUNvbmZpZy5pc0F1dGggJiZcclxuICAgICAgdGhpcy5jYW5DcmVhdGVDb2xsZWN0aW9ucyAmJlxyXG4gICAgICB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLmlzVGVybVBvcnRhbFN1cHBvcnRlZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFRlcm1pbm9sb2d5Q29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnQ6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVybUNvbGxlY3Rpb25BcGk6IFRlcm1pbm9sb2d5Q29sbGVjdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG10QXBpOiBUZXJtaW5vbG9neUFwaVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGdldFJldHJhbnNsYXRlU2lnbmFsKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmV0cmFuc2xhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRFbmdpbmVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lbmdpbmVzID0ge307XHJcbiAgfVxyXG5cclxuICBoYXNBbnlDb2xsZWN0aW9ucyhzeXN0ZW1JZDogc3RyaW5nKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVuZ2luZXNbc3lzdGVtSWRdPy5jb2xsZWN0aW9ucy5zaXplID4gMCB9XHJcblxyXG4gIGdldEVuZ2luZXNXaXRoU2VsZWN0ZWRDb2xsZWN0aW9uQ2hhbmdlKCk6IE9ic2VydmFibGU8e1tlbmdpbmVJZDogc3RyaW5nXTogVGVybWlub2xvZ3lFbmdpbmV9PiB7XHJcbiAgICByZXR1cm4gdGhpcy51cGRhdGVkRW5naW5lc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRFbmdpbmUoXHJcbiAgICBlbmdpbmVJZDogc3RyaW5nLFxyXG4gICAgbGFuZ3VhZ2VzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLFxyXG4gICAgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlID0gZmFsc2UsXHJcbiAgICB0ZXJtQ29sbGVjdGlvbnMgPSB0cnVlLFxyXG4gICAgbXRDb2xsZWN0aW9ucyA9IHRydWUsXHJcbiAgICBzZWxlY3RlZENvbGxlY3Rpb24/OiBDb21iaW5lZENvbGxlY3Rpb24sXHJcbiAgICBhdXRvUmVmcmVzaD86IGJvb2xlYW5cclxuICApIHtcclxuICAgIGNvbnN0IGVuZ2luZUV4aXN0cyA9IHRoaXMuZW5naW5lc1tlbmdpbmVJZF0gPz8gbnVsbDtcclxuXHJcbiAgICBpZiAoIWVuZ2luZUV4aXN0cykge1xyXG4gICAgICBjb25zdCBuZXdFbmdpbmU6IFRlcm1pbm9sb2d5RW5naW5lID0ge1xyXG4gICAgICAgIHNlbGVjdGVkOiBzZWxlY3RlZENvbGxlY3Rpb24gfHwgbnVsbCxcclxuICAgICAgICBpc0ltcG9ydGluZzogZmFsc2UsXHJcbiAgICAgICAgaXNBbnlJbXBvcnRpbmc6IGZhbHNlLFxyXG4gICAgICAgIGhhc0FueUNvbGxlY3Rpb25zOiBmYWxzZSxcclxuICAgICAgICBpc1JlZnJlc2hpbmdDb2xsZWN0aW9uczogZmFsc2UsXHJcbiAgICAgICAgY29sbGVjdGlvbnM6IG5ldyBTZXQ8Q29tYmluZWRDb2xsZWN0aW9uPixcclxuICAgICAgICByZWZyZXNoTXRDb2xsZWN0aW9uczogbXRDb2xsZWN0aW9ucyxcclxuICAgICAgICByZWZyZXNoVGVybUNvbGxlY3Rpb25zOiB0ZXJtQ29sbGVjdGlvbnMsXHJcbiAgICAgICAgZW5naW5lTGFuZ3VhZ2VzOiBsYW5ndWFnZXMgfHwgW10sXHJcbiAgICAgICAgaXNTb2Z0QXV0b1JlZnJlc2hPbjogZmFsc2UsXHJcbiAgICAgICAgaGFyZEF1dG9SZWZyZXNoOiBhdXRvUmVmcmVzaCA/PyBmYWxzZSxcclxuICAgICAgICByZWZyZXNoVGltZW91dDogMFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXSA9IG5ld0VuZ2luZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVuZ2luZUV4aXN0cy5oYXJkQXV0b1JlZnJlc2ggPSBhdXRvUmVmcmVzaCA/PyBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5sb2FkQ29sbGVjdGlvbnMoZW5naW5lSWQsIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZENvbGxlY3Rpb24oZW5naW5lSWQ6IHN0cmluZywgY29sbGVjdGlvbjogQ29tYmluZWRDb2xsZWN0aW9uIHwgbnVsbCwgc3RvcmVTZWxlY3RlZEluTG9jYWxTdG9yYWdlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbmdpbmVzW2VuZ2luZUlkXSkge1xyXG4gICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnNlbGVjdGVkID0gY29sbGVjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RvcmVTZWxlY3RlZEluTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIHRoaXMuc3RvcmVTZWxlY3RlZEluTG9jYWxTdG9yYWdlKGVuZ2luZUlkKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJldHJhbnNsYXRlU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbG9hZENvbGxlY3Rpb25zKGVuZ2luZUlkOiBzdHJpbmcsIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHtbZW5naW5lSWQ6IHN0cmluZ106IFRlcm1pbm9sb2d5RW5naW5lO30+IHtcclxuICAgICAgLy8gY2xlYXIgdGltZW91dCBzaW5jZSB0aGlzIHJlZnJlc2ggcmVwbGFjZXMgc2NoZWR1bGVkXHJcbiAgICAgIHRoaXMuY2xlYXJUaW1lb3V0KGVuZ2luZUlkKTtcclxuXHJcbiAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0gPSB7Li4udGhpcy5lbmdpbmVzW2VuZ2luZUlkXSwgaXNSZWZyZXNoaW5nQ29sbGVjdGlvbnM6IHRydWV9XHJcblxyXG4gICAgICBsZXQgdGVybVJlc3BvbnNlOiBDb21iaW5lZENvbGxlY3Rpb25bXTtcclxuICAgICAgbGV0IG10QXBpUmVzcG9uc2U6IENvbWJpbmVkQ29sbGVjdGlvbltdO1xyXG5cclxuICAgICAgY29uc3Qgb2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8Q29tYmluZWRDb2xsZWN0aW9uW10+W10gPSBbXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnJlZnJlc2hUZXJtQ29sbGVjdGlvbnMpIHtcclxuICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy50ZXJtQ29sbGVjdGlvbkFwaVxyXG4gICAgICAgICAgICAuZ2V0Q29sbGVjdGlvbkxpc3QoKVxyXG4gICAgICAgICAgICAucGlwZSh0YXAoKHJlc3BvbnNlKSA9PiAodGVybVJlc3BvbnNlID0gcmVzcG9uc2UpKSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnJlZnJlc2hNdENvbGxlY3Rpb25zKSB7XHJcbiAgICAgICAgb2JzZXJ2YWJsZXMucHVzaChcclxuICAgICAgICAgIHRoaXMubXRBcGlcclxuICAgICAgICAgICAgLmdldExpc3QoZW5naW5lSWQpXHJcbiAgICAgICAgICAgIC5waXBlKHRhcCgocmVzcG9uc2UpID0+IChtdEFwaVJlc3BvbnNlID0gcmVzcG9uc2UpKSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIC8vIGRvIG5vdCBuZWVkIHJlc3BvbnNlIGJlY2F1ZSByZXNwb25zZXMgYXJlIHNhdmVkIGluIHBpcGUgbWV0aG9kc1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNBbnlJbXBvcnRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIG5vdGUgdGhhdCB0ZXJtUmVzcG9uc2UgYW5kIG10YXBpcmVzcG9uc2UgZ2V0cyBjaGFuZ2VkIGR1cmluZyByZW1vdmUgbWV0aG9kXHJcbiAgICAgICAgICB0aGlzLnJlbW92ZURlbGV0ZWQodGVybVJlc3BvbnNlLCBtdEFwaVJlc3BvbnNlLCBlbmdpbmVJZCk7XHJcblxyXG4gICAgICAgICAgY29uc3Qgam9pbmVkID0gW107XHJcbiAgICAgICAgICBpZiAobXRBcGlSZXNwb25zZSkge1xyXG4gICAgICAgICAgICBqb2luZWQucHVzaCguLi5tdEFwaVJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0ZXJtUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgam9pbmVkLnB1c2goLi4udGVybVJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmFkZENvbGxlY3Rpb25zKGpvaW5lZCwgZW5naW5lSWQpO1xyXG4gICAgICAgICAgaWYgKHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZShlbmdpbmVJZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmlzUmVmcmVzaGluZ0NvbGxlY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNjaGVkdWxlUmVmcmVzaChlbmdpbmVJZCwgbnVsbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmlzUmVmcmVzaGluZ0NvbGxlY3Rpb25zID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyBpdCBpcyBlbm91Z2ggdG8gc2hvdyBlcnJvciBvbmx5IGluIGNvbnNvbGUuIE5vIHNwZWNpYWwgdGhpbmcgaXMgbmVjZXNzYXJ5LlxyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5lbmdpbmVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29sbGVjdGlvbnMoKTogT2JzZXJ2YWJsZTx7IFtlbmdpbmVJZDogc3RyaW5nXTogVGVybWlub2xvZ3lFbmdpbmUgfT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW5naW5lU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0QXV0b1JlZnJlc2goZW5naW5lSWQ6IHN0cmluZywgbGFuZ3VhZ2VzOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsLCBzZXRTZWxlY3RlZEZyb21Mb2NhbFN0b3JhZ2UgPSBmYWxzZSwgdGVybUNvbGxlY3Rpb25zID0gdHJ1ZSwgbXRDb2xsZWN0aW9ucyA9IHRydWUpIHtcclxuICAgIHJldHVybiB0aGlzLnNldEVuZ2luZShlbmdpbmVJZCwgbGFuZ3VhZ2VzID8/IHRoaXMuZW5naW5lc1tlbmdpbmVJZF0/LmVuZ2luZUxhbmd1YWdlcywgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlLCB0ZXJtQ29sbGVjdGlvbnMsIG10Q29sbGVjdGlvbnMsIHVuZGVmaW5lZCwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzdG9wQXV0b1JlZnJlc2goZW5naW5lSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGVhclRpbWVvdXQoZW5naW5lSWQpO1xyXG5cclxuICAgIGlmICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdKSB7XHJcbiAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNTb2Z0QXV0b1JlZnJlc2hPbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmhhcmRBdXRvUmVmcmVzaCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlKFxyXG4gICAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcclxuICAgIHRhcmdldExhbmd1YWdlOiBzdHJpbmcsXHJcbiAgICBjb2xsZWN0aW9uTmFtZTogc3RyaW5nLFxyXG4gICAgZW5naW5lSWQ6IHN0cmluZyxcclxuICAgIHJlZGlyZWN0VG9FZGl0ID0gdHJ1ZVxyXG4gICkge1xyXG4gICAgcmV0dXJuIHRoaXMudGVybUNvbGxlY3Rpb25BcGlcclxuICAgICAgLmNyZWF0ZUNvbGxlY3Rpb24oW3NvdXJjZUxhbmd1YWdlLCB0YXJnZXRMYW5ndWFnZV0sIGNvbGxlY3Rpb25OYW1lKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKGNvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICAgIGlmIChyZWRpcmVjdFRvRWRpdCkge1xyXG4gICAgICAgICAgICB3aW5kb3cub3BlbihcclxuICAgICAgICAgICAgICB0aGlzLnRlcm1Db2xsZWN0aW9uQXBpLmdldEVkaXRMaW5rKFxyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbj8uaWQgPz8gJycsXHJcbiAgICAgICAgICAgICAgICBzb3VyY2VMYW5ndWFnZSxcclxuICAgICAgICAgICAgICAgIHRhcmdldExhbmd1YWdlXHJcbiAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAnX2JsYW5rJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0/LmNvbGxlY3Rpb25zPy5hZGQoY29sbGVjdGlvbik7XHJcblxyXG4gICAgICAgICAgdGhpcy5sb2FkQ29sbGVjdGlvbnMoZW5naW5lSWQpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZElkRm9yVHJhbnNsYXRpb24oZW5naW5lSWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmVuZ2luZXNbZW5naW5lSWRdPy5zZWxlY3RlZDtcclxuICAgIGlmIChcclxuICAgICAgc2VsZWN0ZWQ/Lm10Q29sbGVjdGlvbiAmJlxyXG4gICAgICAoc2VsZWN0ZWQubXRDb2xsZWN0aW9uLmxhc3RVcGRhdGVkIHx8XHJcbiAgICAgICAgc2VsZWN0ZWQubXRDb2xsZWN0aW9uLnN0YXR1cyA9PT0gTXRDb2xsZWN0aW9uU3RhdHVzLlJFQURZKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBzZWxlY3RlZC5tdENvbGxlY3Rpb24uaWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUlmTmVjZXNzYXJ5KFxyXG4gICAgY29sbGVjdGlvbjogQ29tYmluZWRDb2xsZWN0aW9uLFxyXG4gICAgZW5naW5lSWQ6IHN0cmluZyxcclxuICAgIGlzRWRpdGVkID0gZmFsc2VcclxuICApOiBPYnNlcnZhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj4ge1xyXG4gICAgLy8gY29sbGVjdGlvbiBpcyBub3QgaW1wb3J0ZWQgYW5kIHNob3VsZCBiZSBhdHRhY2hlZCB0byBlbmdpbmVcclxuICAgIGlmIChjb2xsZWN0aW9uLmlzRWRpdGVkKCkgfHwgaXNFZGl0ZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubXRBcGkuYWRkKGVuZ2luZUlkLCBjb2xsZWN0aW9uKS5waXBlKFxyXG4gICAgICAgIHRhcCgodXBkYXRlZENvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKHVwZGF0ZWRDb2xsZWN0aW9uKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9mKGNvbGxlY3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQWRkVG9FbmdpbmVFcnJvcihlcnJvcjogYW55LCBlbmdpbmVJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0LnVuaGFuZGVsZWRFcnJvcihlcnJvcik7XHJcbiAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnNlbGVjdGVkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHN5bmMoXHJcbiAgICBjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24sXHJcbiAgICBlbmdpbmVJZDogc3RyaW5nXHJcbiAgKTogT2JzZXJ2YWJsZTxDb21iaW5lZENvbGxlY3Rpb24+IHtcclxuICAgIHJldHVybiB0aGlzLm10QXBpLnN5bmMoZW5naW5lSWQsIGNvbGxlY3Rpb24pLnBpcGUoXHJcbiAgICAgIHRhcCgodXBkYXRlZENvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICBjb2xsZWN0aW9uLnVwZGF0ZSh1cGRhdGVkQ29sbGVjdGlvbik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTXRDb2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbiwgZW5naW5lSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubXRBcGkucmVtb3ZlKGVuZ2luZUlkLCBjb2xsZWN0aW9uKS5waXBlKFxyXG4gICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgY29sbGVjdGlvbi51cGRhdGUocmVzcG9uc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFkZFRvRW5naW5lVmFsaWRhdGlvbihjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24pOiBib29sZWFuIHtcclxuICAgIGlmICghY29sbGVjdGlvbiB8fCAhY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiVHJ5aW5nIHRvIGF0dGFjaCBjb2xsZWN0aW9uIHRoYXQgaGFzIG5vIHRpbGRlIHRlcm0gaWQuXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJUaW1lb3V0KGVuZ2luZUlkOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdPy5yZWZyZXNoVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5yZWZyZXNoVGltZW91dCk7XHJcbiAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0ucmVmcmVzaFRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTZWxlY3RlZEZyb21Mb2NhbFN0b3JhZ2UoZW5naW5lSWQ6IHN0cmluZykge1xyXG4gICAgLy8gSWYgbm8gY29sbGVjdGlvbnMgb3Igc2VsZWN0ZWQgaXMgYWxyZWFkeSBzZXQsIGl0IHNob3VsZCBub3QgYmUgY2hhbmdlZCBmcm9tIGxvY2Fsc3RvcmFnZSB2YWx1ZS4gKFVzdWFsbHksIGxvY2Fsc3RvcmFnZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZSkuXHJcbiAgICBpZiAodGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5jb2xsZWN0aW9ucz8uc2l6ZSA9PT0gMCB8fCB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnNlbGVjdGVkKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb2xsZWN0aW9uT3V0c2lkZVNlcnZpY2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0b3JlZElkID0gdGhpcy5yZWFkTG9jYWxTdG9yYWdlKCk/LltlbmdpbmVJZF07XHJcblxyXG4gICAgaWYgKCFzdG9yZWRJZCkge1xyXG4gICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbGxlY3Rpb25PdXRzaWRlU2VydmljZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBBcnJheS5mcm9tKHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uY29sbGVjdGlvbnMpLmZpbmQoXHJcbiAgICAgIChpdGVtKSA9PiBpdGVtLm10Q29sbGVjdGlvbj8uaWQgPT09IHN0b3JlZElkIHx8IGl0ZW0udGVybUNvbGxlY3Rpb24/LmlkID09PSBzdG9yZWRJZCk7XHJcbiAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnNlbGVjdGVkID0gZXhpc3RpbmcgYXMgQ29tYmluZWRDb2xsZWN0aW9uO1xyXG5cclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb2xsZWN0aW9uT3V0c2lkZVNlcnZpY2UoKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHJlbW92ZURlbGV0ZWQodGVybVJlc3BvbnNlOiBDb21iaW5lZENvbGxlY3Rpb25bXSwgbXRSZXNwb25zZTogQ29tYmluZWRDb2xsZWN0aW9uW10sIGVuZ2luZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBvZiB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmNvbGxlY3Rpb25zKSB7XHJcbiAgICAgIGNvbnN0IHRlcm1FeGlzdGluZ0l4ID0gQ29tYmluZWRDb2xsZWN0aW9uLmZpbmRFeGlzdGluZ0luZGV4RnJvbUxpc3QodGVybVJlc3BvbnNlLCBjb2xsZWN0aW9uKTtcclxuICAgICAgY29uc3QgbXRFeGlzdGluZ0l4ID0gQ29tYmluZWRDb2xsZWN0aW9uLmZpbmRFeGlzdGluZ0luZGV4RnJvbUxpc3QobXRSZXNwb25zZSwgY29sbGVjdGlvbik7XHJcblxyXG4gICAgICBpZiAodGVybUV4aXN0aW5nSXggPT09IG51bGwgJiYgbXRFeGlzdGluZ0l4ID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXT8uY29sbGVjdGlvbnMuZGVsZXRlKGNvbGxlY3Rpb24pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5lbmdpbmVzW2VuZ2luZUlkXT8uc2VsZWN0ZWQgPT09IGNvbGxlY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbGxlY3Rpb25PdXRzaWRlU2VydmljZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGVybUV4aXN0aW5nSXggIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVGVybSA9IHRlcm1SZXNwb25zZVt0ZXJtRXhpc3RpbmdJeF07XHJcbiAgICAgICAgICBjb2xsZWN0aW9uLnVwZGF0ZShleGlzdGluZ1Rlcm0pO1xyXG4gICAgICAgICAgdGVybVJlc3BvbnNlLnNwbGljZSh0ZXJtRXhpc3RpbmdJeCwgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbGxlY3Rpb24uZGVsZXRlVGVybXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChtdEV4aXN0aW5nSXggIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nTXQgPSBtdFJlc3BvbnNlW210RXhpc3RpbmdJeF07XHJcbiAgICAgICAgICBjb2xsZWN0aW9uLnVwZGF0ZShleGlzdGluZ010KTtcclxuICAgICAgICAgIG10UmVzcG9uc2Uuc3BsaWNlKG10RXhpc3RpbmdJeCwgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbGxlY3Rpb24uZGVsZXRlTVQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29sbGVjdGlvbnMobmV3Q29sbGVjdGlvbnM6IEl0ZXJhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj4sIGVuZ2luZUlkOiBzdHJpbmcpIHtcclxuICAgIC8vIHNldHMgY29sbGVjdGlvbiBsaXN0IHRvIHRoaXMgdmFsdWUgYXQgdGhlIGVuZCwgc28gZGVsZXRlZCBjb2xsZWN0aW9ucyBhcmUgbm90IGluIHRoZSBsaXN0LlxyXG4gICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIG5ld0NvbGxlY3Rpb25zKSB7XHJcbiAgICAgIC8vIFVzZXIgc2hvdWxkbid0IHNlZSBmYWlsZWQgY29sbGVjdGlvbnMgaWYgaGUgY2FuJ3QgcmV0cnkgdG8gaW1wb3J0IHRoZW0uXHJcbiAgICAgIGlmICghdGhpcy5oYXNFZGl0UGVybWlzc2lvbnMgJiYgY29sbGVjdGlvbi5tdFN0YXR1cyA9PT0gTXRDb2xsZWN0aW9uU3RhdHVzLkVSUk9SIHx8IGNvbGxlY3Rpb24ubXRTdGF0dXMgPT09IE10Q29sbGVjdGlvblN0YXR1cy5ERUxFVElORykge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29sbGVjdGlvbi5pc0ltcG9ydGluZykge1xyXG4gICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNBbnlJbXBvcnRpbmcgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBleGlzdGluZzogQ29tYmluZWRDb2xsZWN0aW9uIHwgbnVsbCA9IENvbWJpbmVkQ29sbGVjdGlvbi5maW5kRXhpc3RpbmdDb2xsZWN0aW9uRnJvbUxpc3QodGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5jb2xsZWN0aW9ucywgY29sbGVjdGlvbik7XHJcblxyXG4gICAgICAvLyBJZiB0ZXJtIGFwaSBkb2Vzbid0IGhhdmUgZW5naW5lIGxhbmd1YWdlcywgY29sbGVjdGlvbiBzaG91bGQgbm90IGJlIHNob3duIChpZiBpdCBpcyBub3QgYWxyZWFkeSBpbXBvcnRlZCBzb21laG93KTtcclxuICAgICAgaWYgKCFleGlzdGluZyAmJiBjb2xsZWN0aW9uLnNvdXJjZSA9PT0gRW5naW5lVGVybUNvbGxlY3Rpb25Tb3VyY2UuVElMREVfVEVSTSkge1xyXG4gICAgICAgIGxldCBoYXNMYW5ndWFnZXMgPSB0cnVlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5lbmdpbmVMYW5ndWFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgIWNvbGxlY3Rpb24udGVybUNvbGxlY3Rpb24/Lmxhbmd1YWdlcz8uZmluZChcclxuICAgICAgICAgICAgICAobGFuZykgPT4gbGFuZy5pZCA9PT0gdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5lbmdpbmVMYW5ndWFnZXNbaV1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGhhc0xhbmd1YWdlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghaGFzTGFuZ3VhZ2VzKSB7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghZXhpc3RpbmcpIHtcclxuICAgICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmNvbGxlY3Rpb25zLmFkZChjb2xsZWN0aW9uKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleGlzdGluZy51cGRhdGUoY29sbGVjdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmhhc0FueUNvbGxlY3Rpb25zID0gdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5jb2xsZWN0aW9ucy5zaXplID4gMDtcclxuXHJcbiAgICB0aGlzLmVuZ2luZVN1YmplY3QubmV4dCh0aGlzLmVuZ2luZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzY2hlZHVsZVJlZnJlc2goZW5naW5lSWQ6IHN0cmluZywgdGltZW91dD86IG51bWJlciB8IG51bGwsKSB7XHJcbiAgICAvLyBpZiBtZW51IGlzIGNsb3NlZCBhbmQgc2VsZWN0ZWQgY29sbGVjdGlvbiBpcyBub3QgaW1wb3J0aW5nIGFueW1vcmUgLSBhdXRvIHJlZnJlc2hpbmcgc2hvdWxkIGJlIGNhbmNlbGxlZC5cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaGFyZEF1dG9SZWZyZXNoICYmXHJcbiAgICAgICF0aGlzLmVuZ2luZXNbZW5naW5lSWRdPy5pc0ltcG9ydGluZyAmJlxyXG4gICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmlzU29mdEF1dG9SZWZyZXNoT25cclxuICAgICkge1xyXG4gICAgICB0aGlzLnN0b3BBdXRvUmVmcmVzaChlbmdpbmVJZCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiBoYXJkIGF1dG8gcmVmcmVzaG8gb24sIGF1dG8gcmVmcmVzaCBzaG91bGQgYmUgb24uIElmIGhhcmQgYXV0b3JlZmVyZXNoIGlzIG9mZiAsIHJlZnJlc2ggbmVlZHMgdG8gYmUgZG9uZSBvbmx5IGlmIHNlbGVjdGVkIGlzIGltcG9ydGluZy5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5oYXJkQXV0b1JlZnJlc2ggfHxcclxuICAgICAgKCh0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmlzU29mdEF1dG9SZWZyZXNoT24gfHwgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5zZWxlY3RlZD8uaXNJbXBvcnRpbmcpKVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHRpbWVvdXRNcyA9XHJcbiAgICAgICAgdGltZW91dCA/P1xyXG4gICAgICAgICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmlzQW55SW1wb3J0aW5nXHJcbiAgICAgICAgICA/IHRoaXMuY29uZmlnLnRlcm1Db25maWcucmVmcmVzaFRpbWVvdXRNc1doZW5JbXBvcnRpbmdcclxuICAgICAgICAgIDogdGhpcy5jb25maWcudGVybUNvbmZpZy5yZWZyZXNoVGltZW91dE1zKTtcclxuICAgICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0ucmVmcmVzaFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5yZWZyZXNoVGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5sb2FkQ29sbGVjdGlvbnMoZW5naW5lSWQpO1xyXG4gICAgICB9LCB0aW1lb3V0TXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdG9yZVNlbGVjdGVkSW5Mb2NhbFN0b3JhZ2UoZW5naW5lSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGxvY2FsU3RvcmFnZU9iamVjdCA9IHRoaXMucmVhZExvY2FsU3RvcmFnZSgpO1xyXG5cclxuICAgIGlmICghbG9jYWxTdG9yYWdlT2JqZWN0KSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZU9iamVjdCA9IHt9IGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBsb2NhbFN0b3JhZ2VPYmplY3RbZW5naW5lSWRdID0gdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5zZWxlY3RlZCA/ICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdPy5zZWxlY3RlZD8ubXRDb2xsZWN0aW9uPy5pZCA/PyB0aGlzLmVuZ2luZXNbZW5naW5lSWRdPy5zZWxlY3RlZD8udGVybUNvbGxlY3Rpb24/LmlkKSA6IG51bGw7XHJcbiAgICAvLyBzdG9yZSB0ZXJtIGlkIGlmIGl0IGV4aXN0c1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5MT0NBTF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkobG9jYWxTdG9yYWdlT2JqZWN0KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRMb2NhbFN0b3JhZ2UoKTogYW55IHtcclxuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMX1NUT1JBR0VfS0VZKSBhcyBzdHJpbmc7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRDb2xsZWN0aW9uT3V0c2lkZVNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZWRFbmdpbmVzU3ViamVjdC5uZXh0KHRoaXMuZW5naW5lcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWlub2xvZ3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21tb24vc3JjL2xpYi90ZXJtaW5vbG9neS9zZXJ2aWNlcy90ZXJtaW5vbG9neS90ZXJtaW5vbG9neS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0FBUWxELE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsSUFBSSxlQUFlLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQzlELElBQUksb0JBQW9CLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQSxDQUFDLENBQUM7SUFJaEYsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxDQUNMLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07WUFDOUIsSUFBSSxDQUFDLG9CQUFvQjtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUNtQixNQUFnQyxFQUNoQyxLQUFtQixFQUNuQixpQkFBK0MsRUFDL0MsS0FBNEI7UUFINUIsV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQThC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QUFnQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZCLGtCQUFrQixHQUFHLEVBQVMsQ0FBQztTQUNoQztRQUVELGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFM0gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBVyxDQUFDO1FBQ3BFLElBQUk7WUFDRixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFBQyxNQUFNO1lBQ04sT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTyxzQ0FBc0M7UUFDNUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQzsrR0EzWlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmb3JrSm9pbiwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFRlcm1pbm9sb2d5Q29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbmZpZy9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEVuZ2luZVRlcm1Db2xsZWN0aW9uU291cmNlLCBNdENvbGxlY3Rpb25TdGF0dXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IENvbWJpbmVkQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFRlcm1pbm9sb2d5RW5naW5lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Rlcm1pbm9sb2d5LWVuZ2luZS5tb2RlbCc7XHJcbmltcG9ydCB7IFRlcm1pbm9sb2d5QXBpU2VydmljZSB9IGZyb20gJy4uL3Rlcm1pbm9sb2d5LWFwaS90ZXJtaW5vbG9neS1hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFRlcm1pbm9sb2d5Q29sbGVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi90ZXJtaW5vbG9neS1jb2xsZWN0aW9uL3Rlcm1pbm9sb2d5LWNvbGxlY3Rpb24uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVybWlub2xvZ3lTZXJ2aWNlIHtcclxuICBwdWJsaWMgZW5naW5lczogeyBbZW5naW5lSWQ6IHN0cmluZ106IFRlcm1pbm9sb2d5RW5naW5lIH0gPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSByZXRyYW5zbGF0ZVN1YmplY3QgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHByaXZhdGUgZW5naW5lU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5lbmdpbmVzKTtcclxuICBwcml2YXRlIHVwZGF0ZWRFbmdpbmVzU3ViamVjdCA9IG5ldyBTdWJqZWN0PHtbZW5naW5lSWQ6IHN0cmluZ106IFRlcm1pbm9sb2d5RW5naW5lfT4oKTtcclxuXHJcbiAgZ2V0IGlzQXV0aGVudGljYXRlZCgpIHsgcmV0dXJuIHRoaXMuY29uZmlnLnRlcm1Db25maWcuaXNBdXRoIH1cclxuICBnZXQgY2FuQ3JlYXRlQ29sbGVjdGlvbnMoKSB7IHJldHVybiB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLmNhbkNyZWF0ZUNvbGxlY3Rpb24gfVxyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgTE9DQUxfU1RPUkFHRV9LRVkgPSAnc3lzdGVtTGFzdENvbGxlY3Rpb25zJztcclxuXHJcbiAgZ2V0IGhhc0VkaXRQZXJtaXNzaW9ucygpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY29uZmlnPy50ZXJtQ29uZmlnLmlzQXV0aCAmJlxyXG4gICAgICB0aGlzLmNhbkNyZWF0ZUNvbGxlY3Rpb25zICYmXHJcbiAgICAgIHRoaXMuY29uZmlnLnRlcm1Db25maWcuaXNUZXJtUG9ydGFsU3VwcG9ydGVkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogVGVybWlub2xvZ3lDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydDogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXJtQ29sbGVjdGlvbkFwaTogVGVybWlub2xvZ3lDb2xsZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbXRBcGk6IFRlcm1pbm9sb2d5QXBpU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgZ2V0UmV0cmFuc2xhdGVTaWduYWwoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXRyYW5zbGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEVuZ2luZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVuZ2luZXMgPSB7fTtcclxuICB9XHJcblxyXG4gIGhhc0FueUNvbGxlY3Rpb25zKHN5c3RlbUlkOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZW5naW5lc1tzeXN0ZW1JZF0/LmNvbGxlY3Rpb25zLnNpemUgPiAwIH1cclxuXHJcbiAgZ2V0RW5naW5lc1dpdGhTZWxlY3RlZENvbGxlY3Rpb25DaGFuZ2UoKTogT2JzZXJ2YWJsZTx7W2VuZ2luZUlkOiBzdHJpbmddOiBUZXJtaW5vbG9neUVuZ2luZX0+IHtcclxuICAgIHJldHVybiB0aGlzLnVwZGF0ZWRFbmdpbmVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHNldEVuZ2luZShcclxuICAgIGVuZ2luZUlkOiBzdHJpbmcsXHJcbiAgICBsYW5ndWFnZXM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsXHJcbiAgICBzZXRTZWxlY3RlZEZyb21Mb2NhbFN0b3JhZ2UgPSBmYWxzZSxcclxuICAgIHRlcm1Db2xsZWN0aW9ucyA9IHRydWUsXHJcbiAgICBtdENvbGxlY3Rpb25zID0gdHJ1ZSxcclxuICAgIHNlbGVjdGVkQ29sbGVjdGlvbj86IENvbWJpbmVkQ29sbGVjdGlvbixcclxuICAgIGF1dG9SZWZyZXNoPzogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3QgZW5naW5lRXhpc3RzID0gdGhpcy5lbmdpbmVzW2VuZ2luZUlkXSA/PyBudWxsO1xyXG5cclxuICAgIGlmICghZW5naW5lRXhpc3RzKSB7XHJcbiAgICAgIGNvbnN0IG5ld0VuZ2luZTogVGVybWlub2xvZ3lFbmdpbmUgPSB7XHJcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkQ29sbGVjdGlvbiB8fCBudWxsLFxyXG4gICAgICAgIGlzSW1wb3J0aW5nOiBmYWxzZSxcclxuICAgICAgICBpc0FueUltcG9ydGluZzogZmFsc2UsXHJcbiAgICAgICAgaGFzQW55Q29sbGVjdGlvbnM6IGZhbHNlLFxyXG4gICAgICAgIGlzUmVmcmVzaGluZ0NvbGxlY3Rpb25zOiBmYWxzZSxcclxuICAgICAgICBjb2xsZWN0aW9uczogbmV3IFNldDxDb21iaW5lZENvbGxlY3Rpb24+LFxyXG4gICAgICAgIHJlZnJlc2hNdENvbGxlY3Rpb25zOiBtdENvbGxlY3Rpb25zLFxyXG4gICAgICAgIHJlZnJlc2hUZXJtQ29sbGVjdGlvbnM6IHRlcm1Db2xsZWN0aW9ucyxcclxuICAgICAgICBlbmdpbmVMYW5ndWFnZXM6IGxhbmd1YWdlcyB8fCBbXSxcclxuICAgICAgICBpc1NvZnRBdXRvUmVmcmVzaE9uOiBmYWxzZSxcclxuICAgICAgICBoYXJkQXV0b1JlZnJlc2g6IGF1dG9SZWZyZXNoID8/IGZhbHNlLFxyXG4gICAgICAgIHJlZnJlc2hUaW1lb3V0OiAwXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdID0gbmV3RW5naW5lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZW5naW5lRXhpc3RzLmhhcmRBdXRvUmVmcmVzaCA9IGF1dG9SZWZyZXNoID8/IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmxvYWRDb2xsZWN0aW9ucyhlbmdpbmVJZCwgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkQ29sbGVjdGlvbihlbmdpbmVJZDogc3RyaW5nLCBjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24gfCBudWxsLCBzdG9yZVNlbGVjdGVkSW5Mb2NhbFN0b3JhZ2U6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdKSB7XHJcbiAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uc2VsZWN0ZWQgPSBjb2xsZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdG9yZVNlbGVjdGVkSW5Mb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgdGhpcy5zdG9yZVNlbGVjdGVkSW5Mb2NhbFN0b3JhZ2UoZW5naW5lSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmV0cmFuc2xhdGVTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBsb2FkQ29sbGVjdGlvbnMoZW5naW5lSWQ6IHN0cmluZywgc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlPzogYm9vbGVhbik6IE9ic2VydmFibGU8e1tlbmdpbmVJZDogc3RyaW5nXTogVGVybWlub2xvZ3lFbmdpbmU7fT4ge1xyXG4gICAgICAvLyBjbGVhciB0aW1lb3V0IHNpbmNlIHRoaXMgcmVmcmVzaCByZXBsYWNlcyBzY2hlZHVsZWRcclxuICAgICAgdGhpcy5jbGVhclRpbWVvdXQoZW5naW5lSWQpO1xyXG5cclxuICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXSA9IHsuLi50aGlzLmVuZ2luZXNbZW5naW5lSWRdLCBpc1JlZnJlc2hpbmdDb2xsZWN0aW9uczogdHJ1ZX1cclxuXHJcbiAgICAgIGxldCB0ZXJtUmVzcG9uc2U6IENvbWJpbmVkQ29sbGVjdGlvbltdO1xyXG4gICAgICBsZXQgbXRBcGlSZXNwb25zZTogQ29tYmluZWRDb2xsZWN0aW9uW107XHJcblxyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlczogT2JzZXJ2YWJsZTxDb21iaW5lZENvbGxlY3Rpb25bXT5bXSA9IFtdO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZW5naW5lc1tlbmdpbmVJZF0ucmVmcmVzaFRlcm1Db2xsZWN0aW9ucykge1xyXG4gICAgICAgIG9ic2VydmFibGVzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLnRlcm1Db2xsZWN0aW9uQXBpXHJcbiAgICAgICAgICAgIC5nZXRDb2xsZWN0aW9uTGlzdCgpXHJcbiAgICAgICAgICAgIC5waXBlKHRhcCgocmVzcG9uc2UpID0+ICh0ZXJtUmVzcG9uc2UgPSByZXNwb25zZSkpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZW5naW5lc1tlbmdpbmVJZF0ucmVmcmVzaE10Q29sbGVjdGlvbnMpIHtcclxuICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5tdEFwaVxyXG4gICAgICAgICAgICAuZ2V0TGlzdChlbmdpbmVJZClcclxuICAgICAgICAgICAgLnBpcGUodGFwKChyZXNwb25zZSkgPT4gKG10QXBpUmVzcG9uc2UgPSByZXNwb25zZSkpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgLy8gZG8gbm90IG5lZWQgcmVzcG9uc2UgYmVjYXVlIHJlc3BvbnNlcyBhcmUgc2F2ZWQgaW4gcGlwZSBtZXRob2RzXHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5pc0FueUltcG9ydGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gbm90ZSB0aGF0IHRlcm1SZXNwb25zZSBhbmQgbXRhcGlyZXNwb25zZSBnZXRzIGNoYW5nZWQgZHVyaW5nIHJlbW92ZSBtZXRob2RcclxuICAgICAgICAgIHRoaXMucmVtb3ZlRGVsZXRlZCh0ZXJtUmVzcG9uc2UsIG10QXBpUmVzcG9uc2UsIGVuZ2luZUlkKTtcclxuXHJcbiAgICAgICAgICBjb25zdCBqb2luZWQgPSBbXTtcclxuICAgICAgICAgIGlmIChtdEFwaVJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIGpvaW5lZC5wdXNoKC4uLm10QXBpUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRlcm1SZXNwb25zZSkge1xyXG4gICAgICAgICAgICBqb2luZWQucHVzaCguLi50ZXJtUmVzcG9uc2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuYWRkQ29sbGVjdGlvbnMoam9pbmVkLCBlbmdpbmVJZCk7XHJcbiAgICAgICAgICBpZiAoc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRGcm9tTG9jYWxTdG9yYWdlKGVuZ2luZUlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2NoZWR1bGVSZWZyZXNoKGVuZ2luZUlkLCBudWxsKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNSZWZyZXNoaW5nQ29sbGVjdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIGl0IGlzIGVub3VnaCB0byBzaG93IGVycm9yIG9ubHkgaW4gY29uc29sZS4gTm8gc3BlY2lhbCB0aGluZyBpcyBuZWNlc3NhcnkuXHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmVuZ2luZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb2xsZWN0aW9ucygpOiBPYnNlcnZhYmxlPHsgW2VuZ2luZUlkOiBzdHJpbmddOiBUZXJtaW5vbG9neUVuZ2luZSB9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbmdpbmVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRBdXRvUmVmcmVzaChlbmdpbmVJZDogc3RyaW5nLCBsYW5ndWFnZXM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGwsIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZSA9IGZhbHNlLCB0ZXJtQ29sbGVjdGlvbnMgPSB0cnVlLCBtdENvbGxlY3Rpb25zID0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0RW5naW5lKGVuZ2luZUlkLCBsYW5ndWFnZXMgPz8gdGhpcy5lbmdpbmVzW2VuZ2luZUlkXT8uZW5naW5lTGFuZ3VhZ2VzLCBzZXRTZWxlY3RlZEZyb21Mb2NhbFN0b3JhZ2UsIHRlcm1Db2xsZWN0aW9ucywgbXRDb2xsZWN0aW9ucywgdW5kZWZpbmVkLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIHN0b3BBdXRvUmVmcmVzaChlbmdpbmVJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNsZWFyVGltZW91dChlbmdpbmVJZCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZW5naW5lc1tlbmdpbmVJZF0pIHtcclxuICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5pc1NvZnRBdXRvUmVmcmVzaE9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaGFyZEF1dG9SZWZyZXNoID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGUoXHJcbiAgICBzb3VyY2VMYW5ndWFnZTogc3RyaW5nLFxyXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IHN0cmluZyxcclxuICAgIGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsXHJcbiAgICBlbmdpbmVJZDogc3RyaW5nLFxyXG4gICAgcmVkaXJlY3RUb0VkaXQgPSB0cnVlXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtQ29sbGVjdGlvbkFwaVxyXG4gICAgICAuY3JlYXRlQ29sbGVjdGlvbihbc291cmNlTGFuZ3VhZ2UsIHRhcmdldExhbmd1YWdlXSwgY29sbGVjdGlvbk5hbWUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoY29sbGVjdGlvbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlZGlyZWN0VG9FZGl0KSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKFxyXG4gICAgICAgICAgICAgIHRoaXMudGVybUNvbGxlY3Rpb25BcGkuZ2V0RWRpdExpbmsoXHJcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnRlcm1Db2xsZWN0aW9uPy5pZCA/PyAnJyxcclxuICAgICAgICAgICAgICAgIHNvdXJjZUxhbmd1YWdlLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0TGFuZ3VhZ2VcclxuICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICdfYmxhbmsnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXT8uY29sbGVjdGlvbnM/LmFkZChjb2xsZWN0aW9uKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmxvYWRDb2xsZWN0aW9ucyhlbmdpbmVJZCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkSWRGb3JUcmFuc2xhdGlvbihlbmdpbmVJZDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZW5naW5lc1tlbmdpbmVJZF0/LnNlbGVjdGVkO1xyXG4gICAgaWYgKFxyXG4gICAgICBzZWxlY3RlZD8ubXRDb2xsZWN0aW9uICYmXHJcbiAgICAgIChzZWxlY3RlZC5tdENvbGxlY3Rpb24ubGFzdFVwZGF0ZWQgfHxcclxuICAgICAgICBzZWxlY3RlZC5tdENvbGxlY3Rpb24uc3RhdHVzID09PSBNdENvbGxlY3Rpb25TdGF0dXMuUkVBRFkpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkLm10Q29sbGVjdGlvbi5pZDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlSWZOZWNlc3NhcnkoXHJcbiAgICBjb2xsZWN0aW9uOiBDb21iaW5lZENvbGxlY3Rpb24sXHJcbiAgICBlbmdpbmVJZDogc3RyaW5nLFxyXG4gICAgaXNFZGl0ZWQgPSBmYWxzZVxyXG4gICk6IE9ic2VydmFibGU8Q29tYmluZWRDb2xsZWN0aW9uPiB7XHJcbiAgICAvLyBjb2xsZWN0aW9uIGlzIG5vdCBpbXBvcnRlZCBhbmQgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIGVuZ2luZVxyXG4gICAgaWYgKGNvbGxlY3Rpb24uaXNFZGl0ZWQoKSB8fCBpc0VkaXRlZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5tdEFwaS5hZGQoZW5naW5lSWQsIGNvbGxlY3Rpb24pLnBpcGUoXHJcbiAgICAgICAgdGFwKCh1cGRhdGVkQ29sbGVjdGlvbikgPT4ge1xyXG4gICAgICAgICAgY29sbGVjdGlvbi51cGRhdGUodXBkYXRlZENvbGxlY3Rpb24pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2YoY29sbGVjdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVBZGRUb0VuZ2luZUVycm9yKGVycm9yOiBhbnksIGVuZ2luZUlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnQudW5oYW5kZWxlZEVycm9yKGVycm9yKTtcclxuICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uc2VsZWN0ZWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgc3luYyhcclxuICAgIGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbixcclxuICAgIGVuZ2luZUlkOiBzdHJpbmdcclxuICApOiBPYnNlcnZhYmxlPENvbWJpbmVkQ29sbGVjdGlvbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMubXRBcGkuc3luYyhlbmdpbmVJZCwgY29sbGVjdGlvbikucGlwZShcclxuICAgICAgdGFwKCh1cGRhdGVkQ29sbGVjdGlvbikgPT4ge1xyXG4gICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKHVwZGF0ZWRDb2xsZWN0aW9uKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVNdENvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29tYmluZWRDb2xsZWN0aW9uLCBlbmdpbmVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tdEFwaS5yZW1vdmUoZW5naW5lSWQsIGNvbGxlY3Rpb24pLnBpcGUoXHJcbiAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb2xsZWN0aW9uLnVwZGF0ZShyZXNwb25zZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9FbmdpbmVWYWxpZGF0aW9uKGNvbGxlY3Rpb246IENvbWJpbmVkQ29sbGVjdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb2xsZWN0aW9uIHx8ICFjb2xsZWN0aW9uLnRlcm1Db2xsZWN0aW9uKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUcnlpbmcgdG8gYXR0YWNoIGNvbGxlY3Rpb24gdGhhdCBoYXMgbm8gdGlsZGUgdGVybSBpZC5cIik7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclRpbWVvdXQoZW5naW5lSWQ6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuZW5naW5lc1tlbmdpbmVJZF0/LnJlZnJlc2hUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnJlZnJlc2hUaW1lb3V0KTtcclxuICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5yZWZyZXNoVGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFNlbGVjdGVkRnJvbUxvY2FsU3RvcmFnZShlbmdpbmVJZDogc3RyaW5nKSB7XHJcbiAgICAvLyBJZiBubyBjb2xsZWN0aW9ucyBvciBzZWxlY3RlZCBpcyBhbHJlYWR5IHNldCwgaXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGZyb20gbG9jYWxzdG9yYWdlIHZhbHVlLiAoVXN1YWxseSwgbG9jYWxzdG9yYWdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIHZhbHVlKS5cclxuICAgIGlmICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmNvbGxlY3Rpb25zPy5zaXplID09PSAwIHx8IHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uc2VsZWN0ZWQpIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbGxlY3Rpb25PdXRzaWRlU2VydmljZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RvcmVkSWQgPSB0aGlzLnJlYWRMb2NhbFN0b3JhZ2UoKT8uW2VuZ2luZUlkXTtcclxuXHJcbiAgICBpZiAoIXN0b3JlZElkKSB7XHJcbiAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uc2VsZWN0ZWQgPSBudWxsO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sbGVjdGlvbk91dHNpZGVTZXJ2aWNlKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBleGlzdGluZyA9IEFycmF5LmZyb20odGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5jb2xsZWN0aW9ucykuZmluZChcclxuICAgICAgKGl0ZW0pID0+IGl0ZW0ubXRDb2xsZWN0aW9uPy5pZCA9PT0gc3RvcmVkSWQgfHwgaXRlbS50ZXJtQ29sbGVjdGlvbj8uaWQgPT09IHN0b3JlZElkKTtcclxuICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uc2VsZWN0ZWQgPSBleGlzdGluZyBhcyBDb21iaW5lZENvbGxlY3Rpb247XHJcblxyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZENvbGxlY3Rpb25PdXRzaWRlU2VydmljZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlRGVsZXRlZCh0ZXJtUmVzcG9uc2U6IENvbWJpbmVkQ29sbGVjdGlvbltdLCBtdFJlc3BvbnNlOiBDb21iaW5lZENvbGxlY3Rpb25bXSwgZW5naW5lSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uY29sbGVjdGlvbnMpIHtcclxuICAgICAgY29uc3QgdGVybUV4aXN0aW5nSXggPSBDb21iaW5lZENvbGxlY3Rpb24uZmluZEV4aXN0aW5nSW5kZXhGcm9tTGlzdCh0ZXJtUmVzcG9uc2UsIGNvbGxlY3Rpb24pO1xyXG4gICAgICBjb25zdCBtdEV4aXN0aW5nSXggPSBDb21iaW5lZENvbGxlY3Rpb24uZmluZEV4aXN0aW5nSW5kZXhGcm9tTGlzdChtdFJlc3BvbnNlLCBjb2xsZWN0aW9uKTtcclxuXHJcbiAgICAgIGlmICh0ZXJtRXhpc3RpbmdJeCA9PT0gbnVsbCAmJiBtdEV4aXN0aW5nSXggPT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdPy5jb2xsZWN0aW9ucy5kZWxldGUoY29sbGVjdGlvbik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmVuZ2luZXNbZW5naW5lSWRdPy5zZWxlY3RlZCA9PT0gY29sbGVjdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5zZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ29sbGVjdGlvbk91dHNpZGVTZXJ2aWNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0ZXJtRXhpc3RpbmdJeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdUZXJtID0gdGVybVJlc3BvbnNlW3Rlcm1FeGlzdGluZ0l4XTtcclxuICAgICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKGV4aXN0aW5nVGVybSk7XHJcbiAgICAgICAgICB0ZXJtUmVzcG9uc2Uuc3BsaWNlKHRlcm1FeGlzdGluZ0l4LCAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29sbGVjdGlvbi5kZWxldGVUZXJtcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG10RXhpc3RpbmdJeCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdNdCA9IG10UmVzcG9uc2VbbXRFeGlzdGluZ0l4XTtcclxuICAgICAgICAgIGNvbGxlY3Rpb24udXBkYXRlKGV4aXN0aW5nTXQpO1xyXG4gICAgICAgICAgbXRSZXNwb25zZS5zcGxpY2UobXRFeGlzdGluZ0l4LCAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29sbGVjdGlvbi5kZWxldGVNVCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRDb2xsZWN0aW9ucyhuZXdDb2xsZWN0aW9uczogSXRlcmFibGU8Q29tYmluZWRDb2xsZWN0aW9uPiwgZW5naW5lSWQ6IHN0cmluZykge1xyXG4gICAgLy8gc2V0cyBjb2xsZWN0aW9uIGxpc3QgdG8gdGhpcyB2YWx1ZSBhdCB0aGUgZW5kLCBzbyBkZWxldGVkIGNvbGxlY3Rpb25zIGFyZSBub3QgaW4gdGhlIGxpc3QuXHJcbiAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgbmV3Q29sbGVjdGlvbnMpIHtcclxuICAgICAgLy8gVXNlciBzaG91bGRuJ3Qgc2VlIGZhaWxlZCBjb2xsZWN0aW9ucyBpZiBoZSBjYW4ndCByZXRyeSB0byBpbXBvcnQgdGhlbS5cclxuICAgICAgaWYgKCF0aGlzLmhhc0VkaXRQZXJtaXNzaW9ucyAmJiBjb2xsZWN0aW9uLm10U3RhdHVzID09PSBNdENvbGxlY3Rpb25TdGF0dXMuRVJST1IgfHwgY29sbGVjdGlvbi5tdFN0YXR1cyA9PT0gTXRDb2xsZWN0aW9uU3RhdHVzLkRFTEVUSU5HKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjb2xsZWN0aW9uLmlzSW1wb3J0aW5nKSB7XHJcbiAgICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5pc0FueUltcG9ydGluZyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nOiBDb21iaW5lZENvbGxlY3Rpb24gfCBudWxsID0gQ29tYmluZWRDb2xsZWN0aW9uLmZpbmRFeGlzdGluZ0NvbGxlY3Rpb25Gcm9tTGlzdCh0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmNvbGxlY3Rpb25zLCBjb2xsZWN0aW9uKTtcclxuXHJcbiAgICAgIC8vIElmIHRlcm0gYXBpIGRvZXNuJ3QgaGF2ZSBlbmdpbmUgbGFuZ3VhZ2VzLCBjb2xsZWN0aW9uIHNob3VsZCBub3QgYmUgc2hvd24gKGlmIGl0IGlzIG5vdCBhbHJlYWR5IGltcG9ydGVkIHNvbWVob3cpO1xyXG4gICAgICBpZiAoIWV4aXN0aW5nICYmIGNvbGxlY3Rpb24uc291cmNlID09PSBFbmdpbmVUZXJtQ29sbGVjdGlvblNvdXJjZS5USUxERV9URVJNKSB7XHJcbiAgICAgICAgbGV0IGhhc0xhbmd1YWdlcyA9IHRydWU7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmVuZ2luZUxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhY29sbGVjdGlvbi50ZXJtQ29sbGVjdGlvbj8ubGFuZ3VhZ2VzPy5maW5kKFxyXG4gICAgICAgICAgICAgIChsYW5nKSA9PiBsYW5nLmlkID09PSB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmVuZ2luZUxhbmd1YWdlc1tpXVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgaGFzTGFuZ3VhZ2VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFoYXNMYW5ndWFnZXMpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFleGlzdGluZykge1xyXG4gICAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uY29sbGVjdGlvbnMuYWRkKGNvbGxlY3Rpb24pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGV4aXN0aW5nLnVwZGF0ZShjb2xsZWN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaGFzQW55Q29sbGVjdGlvbnMgPSB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmNvbGxlY3Rpb25zLnNpemUgPiAwO1xyXG5cclxuICAgIHRoaXMuZW5naW5lU3ViamVjdC5uZXh0KHRoaXMuZW5naW5lcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNjaGVkdWxlUmVmcmVzaChlbmdpbmVJZDogc3RyaW5nLCB0aW1lb3V0PzogbnVtYmVyIHwgbnVsbCwpIHtcclxuICAgIC8vIGlmIG1lbnUgaXMgY2xvc2VkIGFuZCBzZWxlY3RlZCBjb2xsZWN0aW9uIGlzIG5vdCBpbXBvcnRpbmcgYW55bW9yZSAtIGF1dG8gcmVmcmVzaGluZyBzaG91bGQgYmUgY2FuY2VsbGVkLlxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5oYXJkQXV0b1JlZnJlc2ggJiZcclxuICAgICAgIXRoaXMuZW5naW5lc1tlbmdpbmVJZF0/LmlzSW1wb3J0aW5nICYmXHJcbiAgICAgIHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNTb2Z0QXV0b1JlZnJlc2hPblxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RvcEF1dG9SZWZyZXNoKGVuZ2luZUlkKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGlmIGhhcmQgYXV0byByZWZyZXNobyBvbiwgYXV0byByZWZyZXNoIHNob3VsZCBiZSBvbi4gSWYgaGFyZCBhdXRvcmVmZXJlc2ggaXMgb2ZmICwgcmVmcmVzaCBuZWVkcyB0byBiZSBkb25lIG9ubHkgaWYgc2VsZWN0ZWQgaXMgaW1wb3J0aW5nLlxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLmhhcmRBdXRvUmVmcmVzaCB8fFxyXG4gICAgICAoKHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNTb2Z0QXV0b1JlZnJlc2hPbiB8fCB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnNlbGVjdGVkPy5pc0ltcG9ydGluZykpXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgdGltZW91dE1zID1cclxuICAgICAgICB0aW1lb3V0ID8/XHJcbiAgICAgICAgKHRoaXMuZW5naW5lc1tlbmdpbmVJZF0uaXNBbnlJbXBvcnRpbmdcclxuICAgICAgICAgID8gdGhpcy5jb25maWcudGVybUNvbmZpZy5yZWZyZXNoVGltZW91dE1zV2hlbkltcG9ydGluZ1xyXG4gICAgICAgICAgOiB0aGlzLmNvbmZpZy50ZXJtQ29uZmlnLnJlZnJlc2hUaW1lb3V0TXMpO1xyXG4gICAgICAgICAgdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5yZWZyZXNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuZ2luZXNbZW5naW5lSWRdLnJlZnJlc2hUaW1lb3V0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmxvYWRDb2xsZWN0aW9ucyhlbmdpbmVJZCk7XHJcbiAgICAgIH0sIHRpbWVvdXRNcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0b3JlU2VsZWN0ZWRJbkxvY2FsU3RvcmFnZShlbmdpbmVJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgbG9jYWxTdG9yYWdlT2JqZWN0ID0gdGhpcy5yZWFkTG9jYWxTdG9yYWdlKCk7XHJcblxyXG4gICAgaWYgKCFsb2NhbFN0b3JhZ2VPYmplY3QpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlT2JqZWN0ID0ge30gYXMgYW55O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBsb2NhbFN0b3JhZ2VPYmplY3RbZW5naW5lSWRdID0gdGhpcy5lbmdpbmVzW2VuZ2luZUlkXS5zZWxlY3RlZCA/IHRoaXMuZW5naW5lc1tlbmdpbmVJZF0/LnNlbGVjdGVkPy5tdENvbGxlY3Rpb24/LmlkIDogbnVsbDtcclxuICAgIFxyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5MT0NBTF9TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkobG9jYWxTdG9yYWdlT2JqZWN0KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRMb2NhbFN0b3JhZ2UoKTogYW55IHtcclxuICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMX1NUT1JBR0VfS0VZKSBhcyBzdHJpbmc7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRDb2xsZWN0aW9uT3V0c2lkZVNlcnZpY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZWRFbmdpbmVzU3ViamVjdC5uZXh0KHRoaXMuZW5naW5lcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1336,10 +1336,11 @@ const QUOTA_SERVICE_CONFIGURATION_TOKEN = 'QUOTA_SERVICE_CONFIGURATION_TOKEN';
|
|
|
1336
1336
|
class QuotaService {
|
|
1337
1337
|
constructor(http, config) {
|
|
1338
1338
|
this.http = http;
|
|
1339
|
-
this.
|
|
1339
|
+
this.config = config;
|
|
1340
1340
|
}
|
|
1341
1341
|
getQuotaUsage() {
|
|
1342
|
-
|
|
1342
|
+
const headers = AuthHeadersHelper.getApiV2AuthHeaders(this.config.xApiKey, this.config.appId);
|
|
1343
|
+
return this.http.get(this.config.apiUrl, { headers });
|
|
1343
1344
|
}
|
|
1344
1345
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuotaService, deps: [{ token: i1$2.HttpClient }, { token: QUOTA_SERVICE_CONFIGURATION_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1345
1346
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QuotaService, providedIn: 'root' }); }
|
|
@@ -3450,8 +3451,7 @@ class TerminologyService {
|
|
|
3450
3451
|
if (!localStorageObject) {
|
|
3451
3452
|
localStorageObject = {};
|
|
3452
3453
|
}
|
|
3453
|
-
localStorageObject[engineId] = this.engines[engineId].selected ?
|
|
3454
|
-
// store term id if it exists
|
|
3454
|
+
localStorageObject[engineId] = this.engines[engineId].selected ? this.engines[engineId]?.selected?.mtCollection?.id : null;
|
|
3455
3455
|
localStorage.setItem(this.LOCAL_STORAGE_KEY, JSON.stringify(localStorageObject));
|
|
3456
3456
|
}
|
|
3457
3457
|
readLocalStorage() {
|