@snabcentr/client-core 2.50.0 → 2.52.0
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/catalog/services/sc-catalog.service.d.ts +7 -42
- package/contacts/services/sc-feedback.service.d.ts +4 -0
- package/esm2022/catalog/services/sc-catalog.service.mjs +27 -80
- package/esm2022/contacts/enums/sc-feedback-forms.mjs +31 -2
- package/esm2022/contacts/services/sc-feedback.service.mjs +10 -7
- package/esm2022/guards/sc-id-or-slug.guard.mjs +2 -2
- package/esm2022/utm/services/sc-utm.service.mjs +23 -12
- package/fesm2022/snabcentr-client-core.mjs +565 -574
- package/fesm2022/snabcentr-client-core.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +4 -3
- package/utm/services/sc-utm.service.d.ts +10 -0
|
@@ -4,7 +4,7 @@ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
|
4
4
|
import { WA_LOCAL_STORAGE } from '@ng-web-apis/common';
|
|
5
5
|
import { filterByKey, StorageService, toValue, WA_STORAGE_EVENT } from '@ng-web-apis/storage';
|
|
6
6
|
import { isMatch, isString } from 'lodash-es';
|
|
7
|
-
import { combineLatest,
|
|
7
|
+
import { combineLatest, filter, map, startWith, switchMap, tap } from 'rxjs';
|
|
8
8
|
import { ScAuthService } from '../../auth/services/sc-auth.service';
|
|
9
9
|
import { IS_BROWSER } from '../../providers';
|
|
10
10
|
import { SC_CACHE_LIFETIME, SC_URLS } from '../../tokens';
|
|
@@ -78,17 +78,12 @@ export class ScUTMService {
|
|
|
78
78
|
// При получении UTM-метки сохраняем ее в Storage и создаём запрос сохранения метки за клиентом.
|
|
79
79
|
this.authService
|
|
80
80
|
.getAuthChange()
|
|
81
|
-
.pipe(switchMap(() => this.utmParamsFromRoute
|
|
81
|
+
.pipe(switchMap(() => this.utmParamsFromRoute$), tap(() => {
|
|
82
|
+
this.updateTimestamp();
|
|
83
|
+
}), filter((utm) => !this.isExistingUTM(utm)), tap((utm) => {
|
|
82
84
|
this.setUTM(utm);
|
|
83
85
|
}), switchMap((utm) => this.saveUTM$(utm)))
|
|
84
86
|
.subscribe();
|
|
85
|
-
// Удаляем UTM при выходе из аккаунта.
|
|
86
|
-
this.authService
|
|
87
|
-
.getAuthChange()
|
|
88
|
-
.pipe(skip(1), filter((state) => !state))
|
|
89
|
-
.subscribe(() => {
|
|
90
|
-
this.removeUTM();
|
|
91
|
-
});
|
|
92
87
|
}
|
|
93
88
|
/**
|
|
94
89
|
* Возвращает строчное представление параметров UTM из {@link Storage}.
|
|
@@ -108,9 +103,8 @@ export class ScUTMService {
|
|
|
108
103
|
* @param utm Данные о UTM-метке.
|
|
109
104
|
*/
|
|
110
105
|
setUTM(utm) {
|
|
111
|
-
if (this.storage && this.isBrowser) {
|
|
106
|
+
if (this.storage && this.isBrowser && !this.isExistingUTM(utm)) {
|
|
112
107
|
this.storageService.setItem('utm', JSON.stringify(utm));
|
|
113
|
-
this.storageService.setItem('utmTimestamp', JSON.stringify(Date.now()));
|
|
114
108
|
}
|
|
115
109
|
}
|
|
116
110
|
/**
|
|
@@ -139,6 +133,23 @@ export class ScUTMService {
|
|
|
139
133
|
saveUTM$(utm) {
|
|
140
134
|
return this.http.post(`${this.urls.apiUrl}/utm`, utm);
|
|
141
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Проверяет, существует ли уже сохраненная UTM-метка.
|
|
138
|
+
*
|
|
139
|
+
* @param utm Данные о UTM-метке.
|
|
140
|
+
*/
|
|
141
|
+
isExistingUTM(utm) {
|
|
142
|
+
const existingUTM = this.getUTMParams();
|
|
143
|
+
return existingUTM ? isMatch(utm, JSON.parse(existingUTM)) : false;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Обновляет timestamp сохранения UTM в {@link Storage}.
|
|
147
|
+
*/
|
|
148
|
+
updateTimestamp() {
|
|
149
|
+
if (this.getUTMParams()) {
|
|
150
|
+
this.storageService.setItem('utmTimestamp', JSON.stringify(Date.now()));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
142
153
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScUTMService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
143
154
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScUTMService, providedIn: 'root' }); }
|
|
144
155
|
}
|
|
@@ -148,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
148
159
|
providedIn: 'root',
|
|
149
160
|
}]
|
|
150
161
|
}], ctorParameters: () => [] });
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXRtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3V0bS9zZXJ2aWNlcy9zYy11dG0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVySCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRzFEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUF1RnJCOztPQUVHO0lBQ0g7UUF6RkE7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsU0FBSSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV2RDs7V0FFRztR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QUMsSUFBSSxDQUFDLE1BQU0sTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBeEtRLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXQV9MT0NBTF9TVE9SQUdFIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQgeyBmaWx0ZXJCeUtleSwgU3RvcmFnZVNlcnZpY2UsIHRvVmFsdWUsIFdBX1NUT1JBR0VfRVZFTlQgfSBmcm9tICdAbmctd2ViLWFwaXMvc3RvcmFnZSc7XG5pbXBvcnQgeyBpc01hdGNoLCBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHNraXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2NBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL2F1dGgvc2VydmljZXMvc2MtYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFNjSVVybHMgfSBmcm9tICcuLi8uLi9jb25maWcvc2MtaS11cmxzJztcbmltcG9ydCB7IElTX0JST1dTRVIgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgU0NfQ0FDSEVfTElGRVRJTUUsIFNDX1VSTFMgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xuaW1wb3J0IHsgU2NVVE0sIFNjVVRNUGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEgVVRNLdC80LXRgtC60L7QuSDRgdGC0YDQsNC90LjRhtGLLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY1VUTVNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyA9IGluamVjdChTQ19VUkxTKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0LLRi9C/0L7Qu9C90LXQvdC40Y8gSFRUUC3Qt9Cw0L/RgNC+0YHQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aFNlcnZpY2U6IFNjQXV0aFNlcnZpY2UgPSBpbmplY3QoU2NBdXRoU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9GO0YnQuNC5INC00L7RgdGC0YPQvyDQuiDQtNCw0L3QvdGL0Lwg0L4g0LzQsNGA0YjRgNGD0YLQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQvNCw0YDRiNGA0YPRgtC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEge0BsaW5rIFN0b3JhZ2V9INC4INCy0L3QtdC00YDQtdC90LjRjiDQtdCz0L4g0YfQtdGA0LXQtyBESS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlID0gaW5qZWN0KFN0b3JhZ2VTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0YHQutGA0LjQv9GCINCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0LIg0LHRgNCw0YPQt9C10YDQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbiA9IGluamVjdChJU19CUk9XU0VSKTtcblxuICAgIC8qKlxuICAgICAqINCl0YDQsNC90LjQu9C40YnQtSB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlOiBTdG9yYWdlIHwgbnVsbCA9IGluamVjdChXQV9MT0NBTF9TVE9SQUdFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JLRgNC10LzRjyDQttC40LfQvdC4IFVUTSDQvNC10YLQutC4IChtcykuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dG1MaWZlVGltZT86IG51bWJlciA9IGluamVjdChTQ19DQUNIRV9MSUZFVElNRSkudXRtO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9IFVUTS3QvNC10YLQutCwINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dG0kOiBPYnNlcnZhYmxlPFNjVVRNIHwgbnVsbD4gPSBpbmplY3QoV0FfU1RPUkFHRV9FVkVOVCkucGlwZShcbiAgICAgICAgZmlsdGVyQnlLZXkoJ3V0bScpLFxuICAgICAgICB0b1ZhbHVlKCksXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldFVUTVBhcmFtcygpKSxcbiAgICAgICAgbWFwKCh1dG1TdHJpbmcpID0+ICh1dG1TdHJpbmcgPT09IG51bGwgPyB1dG1TdHJpbmcgOiAoSlNPTi5wYXJzZSh1dG1TdHJpbmcpIGFzIFNjVVRNKSkpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSB0aW1lc3RhbXAg0YHQvtGF0YDQsNC90LXQvdC40Y8gVVRNINCyIHtAbGluayBTdG9yYWdlfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bVRpbWVzdGFtcCQgPSBpbmplY3QoV0FfU1RPUkFHRV9FVkVOVCkucGlwZShcbiAgICAgICAgZmlsdGVyQnlLZXkoJ3V0bVRpbWVzdGFtcCcpLFxuICAgICAgICB0b1ZhbHVlKCksXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldFVUTVRpbWVzdGFtcCgpKSxcbiAgICAgICAgbWFwKCh0aW1lc3RhbXApID0+IChpc1N0cmluZyh0aW1lc3RhbXApID8gTnVtYmVyKHRpbWVzdGFtcCkgOiB0aW1lc3RhbXApKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0gVVRNLdC80LXRgtC60Lgg0YHRgtGA0LDQvdC40YbRiyDQuNC3INC/0LDRgNCw0LzQtdGC0YDQvtCyINGA0L7Rg9GC0LjQvdCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1dG1QYXJhbXNGcm9tUm91dGUkOiBPYnNlcnZhYmxlPFNjVVRNPiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBCb29sZWFuKHRoaXMuc3RvcmFnZSkgJiYgdGhpcy5pc0Jyb3dzZXIgJiYgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuYWN0aXZhdGVkUm91dGUpLFxuICAgICAgICBzdGFydFdpdGgodGhpcy5hY3RpdmF0ZWRSb3V0ZSksXG4gICAgICAgIG1hcCgocm91dGUpID0+IHJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIGZpbHRlcigocGFyYW1zKTogcGFyYW1zIGlzIFNjVVRNUGFyYW1zID0+IHBhcmFtc1sndXRtX3NvdXJjZSddICYmIHBhcmFtc1sndXRtX21lZGl1bSddICYmIHBhcmFtc1sndXRtX2NhbXBhaWduJ10pLFxuICAgICAgICBtYXAoKHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHBhcmFtcy51dG1fc291cmNlLFxuICAgICAgICAgICAgICAgIG1lZGl1bTogcGFyYW1zLnV0bV9tZWRpdW0sXG4gICAgICAgICAgICAgICAgY2FtcGFpZ246IHBhcmFtcy51dG1fY2FtcGFpZ24sXG4gICAgICAgICAgICAgICAgY29udGVudDogcGFyYW1zLnV0bV9jb250ZW50LFxuICAgICAgICAgICAgICAgIHRlcm06IHBhcmFtcy51dG1fdGVybSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NVVE1TZXJ2aWNlfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vINCf0YDQuCDQv9C+0LvRg9GH0LXQvdC40LggVVRNLdC80LXRgtC60Lgg0YHQvtGF0YDQsNC90Y/QtdC8INC10LUg0LIgU3RvcmFnZSDQuCDRgdC+0LfQtNCw0ZHQvCDQt9Cw0L/RgNC+0YEg0YHQvtGF0YDQsNC90LXQvdC40Y8g0LzQtdGC0LrQuCDQt9CwINC60LvQuNC10L3RgtC+0LwuXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBdXRoQ2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnV0bVBhcmFtc0Zyb21Sb3V0ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IGlzTWF0Y2gocHJldmlvdXMsIGN1cnJlbnQpKSkpLFxuICAgICAgICAgICAgICAgIHRhcCgodXRtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VVRNKHV0bSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh1dG0pID0+IHRoaXMuc2F2ZVVUTSQodXRtKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICAvLyDQo9C00LDQu9GP0LXQvCBVVE0g0L/RgNC4INCy0YvRhdC+0LTQtSDQuNC3INCw0LrQutCw0YPQvdGC0LAuXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRBdXRoQ2hhbmdlKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gIXN0YXRlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVVVE0oKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0YLRgNC+0YfQvdC+0LUg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40LUg0L/QsNGA0LDQvNC10YLRgNC+0LIgVVRNINC40Lcge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VVRNUGFyYW1zKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0b3JhZ2UpICYmIHRoaXMuaXNCcm93c2VyID8gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1dG0nKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgtGA0L7Rh9C90L7QtSDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtSB0aW1lc3RhbXAg0YHQvtGF0YDQsNC90LXQvdC40Y8gVVRNINC40Lcge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VVRNVGltZXN0YW1wKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnN0b3JhZ2UpICYmIHRoaXMuaXNCcm93c2VyID8gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1dG1UaW1lc3RhbXAnKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgVVRNLdC80LXRgtC60YMg0YHRgtGA0LDQvdC40YbRiyDQsiB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXRtINCU0LDQvdC90YvQtSDQviBVVE0t0LzQtdGC0LrQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFVUTSh1dG06IFNjVVRNKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2UgJiYgdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgndXRtJywgSlNPTi5zdHJpbmdpZnkodXRtKSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ3V0bVRpbWVzdGFtcCcsIEpTT04uc3RyaW5naWZ5KERhdGUubm93KCkpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCIFVUTS3QvNC10YLQutGDINGB0YLRgNCw0L3QuNGG0Ysg0LjQtyB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZVVUTSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmFnZSAmJiB0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKCd1dG0nKTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgndXRtVGltZXN0YW1wJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LTQsNC90L3Ri9GFINC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRVVE0kKCk6IE9ic2VydmFibGU8U2NVVE0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgICAgICAgIHV0bTogdGhpcy51dG0kLFxuICAgICAgICAgICAgdGltZXN0YW1wOiB0aGlzLnV0bVRpbWVzdGFtcCQsXG4gICAgICAgIH0pLnBpcGUobWFwKCh7IHV0bSwgdGltZXN0YW1wIH0pID0+ICghdGhpcy51dG1MaWZlVGltZSB8fCAodGltZXN0YW1wICYmIHRpbWVzdGFtcCArIHRoaXMudXRtTGlmZVRpbWUgPiBEYXRlLm5vdygpKSA/IHV0bSA6IG51bGwpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L7RhdGA0LDQvdC10L3QuNGPIHtAbGluayBTY1VUTX0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXRtINCU0LDQvdC90YvQtSDQviBVVE0t0LzQtdGC0LrQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2F2ZVVUTSQodXRtOiBTY1VUTSk6IE9ic2VydmFibGU8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx1bmRlZmluZWQ+KGAke3RoaXMudXJscy5hcGlVcmx9L3V0bWAsIHV0bSk7XG4gICAgfVxufVxuIl19
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXRtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3V0bS9zZXJ2aWNlcy9zYy11dG0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHMUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sWUFBWTtJQXVGckI7O09BRUc7SUFDSDtRQXpGQTs7V0FFRztRQUNjLFNBQUksR0FBWSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakQ7O1dBRUc7UUFDYyxTQUFJLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXZEOztXQUVHO1FBQ2MsZ0JBQVcsR0FBa0IsTUFBTSxD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QztJQUVEOztPQUVHO0lBQ0ssZUFBZTtRQUNuQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7K0dBbkxRLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBXQV9MT0NBTF9TVE9SQUdFIH0gZnJvbSAnQG5nLXdlYi1hcGlzL2NvbW1vbic7XG5pbXBvcnQgeyBmaWx0ZXJCeUtleSwgU3RvcmFnZVNlcnZpY2UsIHRvVmFsdWUsIFdBX1NUT1JBR0VfRVZFTlQgfSBmcm9tICdAbmctd2ViLWFwaXMvc3RvcmFnZSc7XG5pbXBvcnQgeyBpc01hdGNoLCBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aC9zZXJ2aWNlcy9zYy1hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NJVXJscyB9IGZyb20gJy4uLy4uL2NvbmZpZy9zYy1pLXVybHMnO1xuaW1wb3J0IHsgSVNfQlJPV1NFUiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBTQ19DQUNIRV9MSUZFVElNRSwgU0NfVVJMUyB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBTY1VUTSwgU2NVVE1QYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSBVVE0t0LzQtdGC0LrQvtC5INGB0YLRgNCw0L3QuNGG0YsuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNjVVRNU2VydmljZSB7XG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzID0gaW5qZWN0KFNDX1VSTFMpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDQstGL0L/QvtC70L3QtdC90LjRjyBIVFRQLdC30LDQv9GA0L7RgdC+0LIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogU2NBdXRoU2VydmljZSA9IGluamVjdChTY0F1dGhTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQv9GA0LXQtNC+0YHRgtCw0LLQu9GP0Y7RidC40Lkg0LTQvtGB0YLRg9C/INC6INC00LDQvdC90YvQvCDQviDQvNCw0YDRiNGA0YPRgtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC80LDRgNGI0YDRg9GC0LjQt9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSB7QGxpbmsgU3RvcmFnZX0g0Lgg0LLQvdC10LTRgNC10L3QuNGOINC10LPQviDRh9C10YDQtdC3IERJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDRgdC60YDQuNC/0YIg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDQsiDQsdGA0LDRg9C30LXRgNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyOiBib29sZWFuID0gaW5qZWN0KElTX0JST1dTRVIpO1xuXG4gICAgLyoqXG4gICAgICog0KXRgNCw0L3QuNC70LjRidC1IHtAbGluayBTdG9yYWdlfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2U6IFN0b3JhZ2UgfCBudWxsID0gaW5qZWN0KFdBX0xPQ0FMX1NUT1JBR0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQktGA0LXQvNGPINC20LjQt9C90LggVVRNINC80LXRgtC60LggKG1zKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bUxpZmVUaW1lPzogbnVtYmVyID0gaW5qZWN0KFNDX0NBQ0hFX0xJRkVUSU1FKS51dG07XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0gVVRNLdC80LXRgtC60LAg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bSQ6IE9ic2VydmFibGU8U2NVVE0gfCBudWxsPiA9IGluamVjdChXQV9TVE9SQUdFX0VWRU5UKS5waXBlKFxuICAgICAgICBmaWx0ZXJCeUtleSgndXRtJyksXG4gICAgICAgIHRvVmFsdWUoKSxcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuZ2V0VVRNUGFyYW1zKCkpLFxuICAgICAgICBtYXAoKHV0bVN0cmluZykgPT4gKHV0bVN0cmluZyA9PT0gbnVsbCA/IHV0bVN0cmluZyA6IChKU09OLnBhcnNlKHV0bVN0cmluZykgYXMgU2NVVE0pKSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9IHRpbWVzdGFtcCDRgdC+0YXRgNCw0L3QtdC90LjRjyBVVE0g0LIge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXRtVGltZXN0YW1wJCA9IGluamVjdChXQV9TVE9SQUdFX0VWRU5UKS5waXBlKFxuICAgICAgICBmaWx0ZXJCeUtleSgndXRtVGltZXN0YW1wJyksXG4gICAgICAgIHRvVmFsdWUoKSxcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuZ2V0VVRNVGltZXN0YW1wKCkpLFxuICAgICAgICBtYXAoKHRpbWVzdGFtcCkgPT4gKGlzU3RyaW5nKHRpbWVzdGFtcCkgPyBOdW1iZXIodGltZXN0YW1wKSA6IHRpbWVzdGFtcCkpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSBVVE0t0LzQtdGC0LrQuCDRgdGC0YDQsNC90LjRhtGLINC40Lcg0L/QsNGA0LDQvNC10YLRgNC+0LIg0YDQvtGD0YLQuNC90LPQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHV0bVBhcmFtc0Zyb21Sb3V0ZSQ6IE9ic2VydmFibGU8U2NVVE0+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IEJvb2xlYW4odGhpcy5zdG9yYWdlKSAmJiB0aGlzLmlzQnJvd3NlciAmJiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5hY3RpdmF0ZWRSb3V0ZSksXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLmFjdGl2YXRlZFJvdXRlKSxcbiAgICAgICAgbWFwKChyb3V0ZSkgPT4gcm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpLFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgZmlsdGVyKChwYXJhbXMpOiBwYXJhbXMgaXMgU2NVVE1QYXJhbXMgPT4gcGFyYW1zWyd1dG1fc291cmNlJ10gJiYgcGFyYW1zWyd1dG1fbWVkaXVtJ10gJiYgcGFyYW1zWyd1dG1fY2FtcGFpZ24nXSksXG4gICAgICAgIG1hcCgocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogcGFyYW1zLnV0bV9zb3VyY2UsXG4gICAgICAgICAgICAgICAgbWVkaXVtOiBwYXJhbXMudXRtX21lZGl1bSxcbiAgICAgICAgICAgICAgICBjYW1wYWlnbjogcGFyYW1zLnV0bV9jYW1wYWlnbixcbiAgICAgICAgICAgICAgICBjb250ZW50OiBwYXJhbXMudXRtX2NvbnRlbnQsXG4gICAgICAgICAgICAgICAgdGVybTogcGFyYW1zLnV0bV90ZXJtLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1VUTVNlcnZpY2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8g0J/RgNC4INC/0L7Qu9GD0YfQtdC90LjQuCBVVE0t0LzQtdGC0LrQuCDRgdC+0YXRgNCw0L3Rj9C10Lwg0LXQtSDQsiBTdG9yYWdlINC4INGB0L7Qt9C00LDRkdC8INC30LDQv9GA0L7RgSDRgdC+0YXRgNCw0L3QtdC90LjRjyDQvNC10YLQutC4INC30LAg0LrQu9C40LXQvdGC0L7QvC5cbiAgICAgICAgdGhpcy5hdXRoU2VydmljZVxuICAgICAgICAgICAgLmdldEF1dGhDaGFuZ2UoKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXRtUGFyYW1zRnJvbVJvdXRlJCksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lc3RhbXAoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHV0bSkgPT4gIXRoaXMuaXNFeGlzdGluZ1VUTSh1dG0pKSxcbiAgICAgICAgICAgICAgICB0YXAoKHV0bSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFVUTSh1dG0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodXRtKSA9PiB0aGlzLnNhdmVVVE0kKHV0bSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgtGA0L7Rh9C90L7QtSDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtSDQv9Cw0YDQsNC80LXRgtGA0L7QsiBVVE0g0LjQtyB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVVE1QYXJhbXMoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RvcmFnZSkgJiYgdGhpcy5pc0Jyb3dzZXIgPyB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3V0bScpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdGC0YDQvtGH0L3QvtC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1IHRpbWVzdGFtcCDRgdC+0YXRgNCw0L3QtdC90LjRjyBVVE0g0LjQtyB7QGxpbmsgU3RvcmFnZX0uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVVE1UaW1lc3RhbXAoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3RvcmFnZSkgJiYgdGhpcy5pc0Jyb3dzZXIgPyB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3V0bVRpbWVzdGFtcCcpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBVVE0t0LzQtdGC0LrRgyDRgdGC0YDQsNC90LjRhtGLINCyIHtAbGluayBTdG9yYWdlfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1dG0g0JTQsNC90L3Ri9C1INC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0VVRNKHV0bTogU2NVVE0pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmFnZSAmJiB0aGlzLmlzQnJvd3NlciAmJiAhdGhpcy5pc0V4aXN0aW5nVVRNKHV0bSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgndXRtJywgSlNPTi5zdHJpbmdpZnkodXRtKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiBVVE0t0LzQtdGC0LrRgyDRgdGC0YDQsNC90LjRhtGLINC40Lcge0BsaW5rIFN0b3JhZ2V9LlxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVVVE0oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2UgJiYgdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSgndXRtJyk7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oJ3V0bVRpbWVzdGFtcCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INC00LDQvdC90YvRhSDQviBVVE0t0LzQtdGC0LrQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VVRNJCgpOiBPYnNlcnZhYmxlPFNjVVRNIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgICAgICAgICB1dG06IHRoaXMudXRtJCxcbiAgICAgICAgICAgIHRpbWVzdGFtcDogdGhpcy51dG1UaW1lc3RhbXAkLFxuICAgICAgICB9KS5waXBlKG1hcCgoeyB1dG0sIHRpbWVzdGFtcCB9KSA9PiAoIXRoaXMudXRtTGlmZVRpbWUgfHwgKHRpbWVzdGFtcCAmJiB0aW1lc3RhbXAgKyB0aGlzLnV0bUxpZmVUaW1lID4gRGF0ZS5ub3coKSkgPyB1dG0gOiBudWxsKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC+0YXRgNCw0L3QtdC90LjRjyB7QGxpbmsgU2NVVE19LlxuICAgICAqXG4gICAgICogQHBhcmFtIHV0bSDQlNCw0L3QvdGL0LUg0L4gVVRNLdC80LXRgtC60LUuXG4gICAgICovXG4gICAgcHVibGljIHNhdmVVVE0kKHV0bTogU2NVVE0pOiBPYnNlcnZhYmxlPHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8dW5kZWZpbmVkPihgJHt0aGlzLnVybHMuYXBpVXJsfS91dG1gLCB1dG0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0YHRg9GJ0LXRgdGC0LLRg9C10YIg0LvQuCDRg9C20LUg0YHQvtGF0YDQsNC90LXQvdC90LDRjyBVVE0t0LzQtdGC0LrQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1dG0g0JTQsNC90L3Ri9C1INC+IFVUTS3QvNC10YLQutC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNFeGlzdGluZ1VUTSh1dG06IFNjVVRNKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nVVRNID0gdGhpcy5nZXRVVE1QYXJhbXMoKTtcbiAgICAgICAgcmV0dXJuIGV4aXN0aW5nVVRNID8gaXNNYXRjaCh1dG0sIEpTT04ucGFyc2UoZXhpc3RpbmdVVE0pIGFzIFNjVVRNKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiB0aW1lc3RhbXAg0YHQvtGF0YDQsNC90LXQvdC40Y8gVVRNINCyIHtAbGluayBTdG9yYWdlfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVzdGFtcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VVRNUGFyYW1zKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgndXRtVGltZXN0YW1wJywgSlNPTi5zdHJpbmdpZnkoRGF0ZS5ub3coKSkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|