@ethlete/query 2.9.2 → 3.0.1
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/esm2020/index.mjs +2 -1
- package/esm2020/lib/auth/auth-provider.types.mjs +1 -1
- package/esm2020/lib/auth/auth-provider.utils.mjs +1 -1
- package/esm2020/lib/auth/bearer-auth-provider.mjs +2 -2
- package/esm2020/lib/directives/infinity-query-trigger.directive.mjs +4 -4
- package/esm2020/lib/directives/infinity-query.directive.mjs +18 -24
- package/esm2020/lib/directives/query.directive.mjs +9 -11
- package/esm2020/lib/entity/entity-store.mjs +73 -119
- package/esm2020/lib/entity/entity.types.mjs +1 -1
- package/esm2020/lib/entity/entity.utils.mjs +5 -0
- package/esm2020/lib/entity/index.mjs +2 -1
- package/esm2020/lib/infinite-query/infinity-query.mjs +47 -71
- package/esm2020/lib/infinite-query/infinity-query.types.mjs +1 -1
- package/esm2020/lib/infinite-query/infinity-query.utils.mjs +1 -1
- package/esm2020/lib/query/query.mjs +118 -211
- package/esm2020/lib/query/query.types.mjs +1 -1
- package/esm2020/lib/query/query.utils.mjs +1 -1
- package/esm2020/lib/query-client/query-client.mjs +3 -31
- package/esm2020/lib/query-client/query-client.types.mjs +1 -1
- package/esm2020/lib/query-creator/index.mjs +3 -0
- package/esm2020/lib/query-creator/query-creator.mjs +35 -0
- package/esm2020/lib/query-creator/query-creator.types.mjs +2 -0
- package/esm2020/lib/request/request.types.mjs +1 -1
- package/esm2020/lib/request/request.util.mjs +1 -7
- package/fesm2015/ethlete-query.mjs +314 -473
- package/fesm2015/ethlete-query.mjs.map +1 -1
- package/fesm2020/ethlete-query.mjs +308 -476
- package/fesm2020/ethlete-query.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/lib/auth/auth-provider.types.d.ts +3 -4
- package/lib/auth/auth-provider.utils.d.ts +2 -2
- package/lib/auth/bearer-auth-provider.d.ts +1 -1
- package/lib/directives/infinity-query-trigger.directive.d.ts +1 -1
- package/lib/directives/infinity-query.directive.d.ts +6 -11
- package/lib/directives/query.directive.d.ts +7 -7
- package/lib/entity/entity-store.d.ts +13 -27
- package/lib/entity/entity.types.d.ts +0 -5
- package/lib/entity/entity.utils.d.ts +2 -0
- package/lib/entity/index.d.ts +1 -0
- package/lib/infinite-query/infinity-query.d.ts +10 -19
- package/lib/infinite-query/infinity-query.types.d.ts +4 -4
- package/lib/infinite-query/infinity-query.utils.d.ts +2 -3
- package/lib/query/query.d.ts +19 -12
- package/lib/query/query.types.d.ts +86 -51
- package/lib/query/query.utils.d.ts +16 -14
- package/lib/query-client/query-client.d.ts +12 -10
- package/lib/query-client/query-client.types.d.ts +2 -22
- package/lib/query-creator/index.d.ts +2 -0
- package/lib/query-creator/query-creator.d.ts +14 -0
- package/lib/query-creator/query-creator.types.d.ts +13 -0
- package/lib/request/request.types.d.ts +1 -1
- package/lib/request/request.util.d.ts +0 -1
- package/package.json +1 -1
|
@@ -1,23 +1,29 @@
|
|
|
1
1
|
import { BehaviorSubjectWithSubscriberCount } from '@ethlete/core';
|
|
2
|
-
import {
|
|
2
|
+
import { filter, interval, map, of, shareReplay, skip, Subject, switchMap, takeUntil, takeWhile, tap, } from 'rxjs';
|
|
3
3
|
import { isBearerAuthProvider } from '../auth';
|
|
4
4
|
import { request } from '../request';
|
|
5
|
-
import { computeQueryBody, computeQueryHeaders, computeQueryMethod,
|
|
5
|
+
import { computeQueryBody, computeQueryHeaders, computeQueryMethod, isGqlQueryConfig, isQueryStateLoading, isQueryStateSuccess, takeUntilResponse, } from './query.utils';
|
|
6
6
|
export class Query {
|
|
7
7
|
get _nextId() {
|
|
8
8
|
return ++this._currentId;
|
|
9
9
|
}
|
|
10
10
|
get state$() {
|
|
11
|
-
return this._state$.
|
|
11
|
+
return this._state$.pipe(switchMap((s) => this._transformState(s)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* The current state of the query.
|
|
15
|
+
*
|
|
16
|
+
* **Warning!** This differs from the `state$` observable in that it does not use the query store. Thus, the response data might be outdated.
|
|
17
|
+
* Use `state$` (or `firstValueFrom(state$)`) the most up-to-date data.
|
|
18
|
+
*/
|
|
19
|
+
get rawState() {
|
|
14
20
|
return this._state$.value;
|
|
15
21
|
}
|
|
16
22
|
get isExpired() {
|
|
17
|
-
if (!isQueryStateSuccess(this.
|
|
23
|
+
if (!isQueryStateSuccess(this._state$.value)) {
|
|
18
24
|
return false;
|
|
19
25
|
}
|
|
20
|
-
const ts = this.
|
|
26
|
+
const ts = this._state$.value.meta.expiresAt;
|
|
21
27
|
if (!ts) {
|
|
22
28
|
return true;
|
|
23
29
|
}
|
|
@@ -53,7 +59,7 @@ export class Query {
|
|
|
53
59
|
this._args = _args;
|
|
54
60
|
this._currentId = 0;
|
|
55
61
|
this._pollingSubscription = null;
|
|
56
|
-
this.
|
|
62
|
+
this._requestSubscription = null;
|
|
57
63
|
this._onAbort$ = new Subject();
|
|
58
64
|
this._currentPollConfig = null;
|
|
59
65
|
/**
|
|
@@ -64,193 +70,39 @@ export class Query {
|
|
|
64
70
|
type: "PREPARED" /* QueryStateType.Prepared */,
|
|
65
71
|
meta: { id: this._currentId, triggeredVia: 'program' },
|
|
66
72
|
});
|
|
67
|
-
if (this._queryConfig.entity?.store) {
|
|
68
|
-
this._entitySubscription = this._queryConfig.entity.store.events$.subscribe((event) => {
|
|
69
|
-
if (event.type !== 'update' && event.type !== 'set') {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
if (!isQueryStateSuccess(this.state)) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
const response = this.state.response;
|
|
76
|
-
const rawResponse = this.state.rawResponse;
|
|
77
|
-
const key = this._queryConfig.entity?.store.config.idKey;
|
|
78
|
-
if (!key) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
const newData = this._queryConfig.entity?.store.getOne(event.key);
|
|
82
|
-
if (!newData) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const newResponse = this._queryConfig.entity?.valueUpdater
|
|
86
|
-
? this._queryConfig.entity?.valueUpdater({
|
|
87
|
-
args: this._args,
|
|
88
|
-
entity: newData,
|
|
89
|
-
rawResponse,
|
|
90
|
-
response,
|
|
91
|
-
})
|
|
92
|
-
: response[key] === newData[key]
|
|
93
|
-
? {
|
|
94
|
-
response: newData,
|
|
95
|
-
rawResponse: newData,
|
|
96
|
-
}
|
|
97
|
-
: null;
|
|
98
|
-
if (!newResponse) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
this._state$.next({
|
|
102
|
-
...this.state,
|
|
103
|
-
response: newResponse.response,
|
|
104
|
-
rawResponse: newResponse.rawResponse,
|
|
105
|
-
meta: {
|
|
106
|
-
...this.state.meta,
|
|
107
|
-
triggeredVia: 'auto',
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
clone() {
|
|
114
|
-
return this._client.fetch(this._queryConfig);
|
|
115
73
|
}
|
|
116
|
-
execute(options) {
|
|
117
|
-
const
|
|
118
|
-
|
|
74
|
+
execute(options = {}) {
|
|
75
|
+
const { skipCache = false, _triggeredVia: triggeredVia = 'program' } = options;
|
|
76
|
+
const { authProvider } = this._client;
|
|
77
|
+
const queryConfig = this._queryConfig;
|
|
78
|
+
if (!this.isExpired && !skipCache && isQueryStateSuccess(this.rawState)) {
|
|
119
79
|
return this;
|
|
120
80
|
}
|
|
121
|
-
if (
|
|
81
|
+
if (queryConfig.secure && !authProvider) {
|
|
122
82
|
throw new Error('Cannot execute secure query without auth provider');
|
|
123
83
|
}
|
|
124
84
|
const id = this._nextId;
|
|
125
|
-
|
|
85
|
+
const meta = { id, triggeredVia };
|
|
86
|
+
if (isQueryStateLoading(this.rawState)) {
|
|
126
87
|
this.abort();
|
|
127
88
|
}
|
|
128
|
-
|
|
129
|
-
this.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
this._updateUseResultInDependencies();
|
|
134
|
-
const method = computeQueryMethod({ config: this._queryConfig, client: this._client });
|
|
135
|
-
const body = computeQueryBody({
|
|
136
|
-
config: this._queryConfig,
|
|
137
|
-
client: this._client,
|
|
138
|
-
args: this._args,
|
|
139
|
-
method,
|
|
140
|
-
});
|
|
141
|
-
const headers = computeQueryHeaders({ client: this._client, config: this._queryConfig, args: this._args });
|
|
142
|
-
request({
|
|
89
|
+
this._state$.next({ type: "LOADING" /* QueryStateType.Loading */, meta });
|
|
90
|
+
const method = computeQueryMethod({ config: queryConfig, client: this._client });
|
|
91
|
+
const body = computeQueryBody({ config: queryConfig, client: this._client, args: this._args, method });
|
|
92
|
+
const headers = computeQueryHeaders({ client: this._client, config: queryConfig, args: this._args });
|
|
93
|
+
this._requestSubscription = request({
|
|
143
94
|
urlWithParams: this._routeWithParams,
|
|
144
95
|
method,
|
|
145
96
|
body,
|
|
146
97
|
headers,
|
|
147
|
-
reportProgress:
|
|
148
|
-
responseType:
|
|
149
|
-
withCredentials:
|
|
98
|
+
reportProgress: queryConfig.reportProgress,
|
|
99
|
+
responseType: queryConfig.responseType,
|
|
100
|
+
withCredentials: queryConfig.withCredentials,
|
|
150
101
|
cacheAdapter: this._client.config.request?.cacheAdapter,
|
|
151
102
|
retryFn: this._client.config.request?.retryFn,
|
|
152
103
|
})
|
|
153
|
-
.pipe(takeUntil(this._onAbort$))
|
|
154
|
-
.subscribe(
|
|
155
|
-
next: (state) => {
|
|
156
|
-
if (state.type === 'start' || state.type === 'delay-retry') {
|
|
157
|
-
const newMeta = {
|
|
158
|
-
...meta,
|
|
159
|
-
isWaitingForRetry: state.type === 'delay-retry',
|
|
160
|
-
retryDelay: state.retryDelay,
|
|
161
|
-
retryNumber: state.retryNumber,
|
|
162
|
-
};
|
|
163
|
-
this._state$.next({
|
|
164
|
-
type: "LOADING" /* QueryStateType.Loading */,
|
|
165
|
-
meta: newMeta,
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
else if (state.type === 'download-progress') {
|
|
169
|
-
this._state$.next({
|
|
170
|
-
type: "LOADING" /* QueryStateType.Loading */,
|
|
171
|
-
progress: state.progress,
|
|
172
|
-
partialText: state.partialText,
|
|
173
|
-
meta,
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
else if (state.type === 'upload-progress') {
|
|
177
|
-
this._state$.next({
|
|
178
|
-
type: "LOADING" /* QueryStateType.Loading */,
|
|
179
|
-
progress: state.progress,
|
|
180
|
-
meta,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
else if (state.type === 'success') {
|
|
184
|
-
const isResponseObject = typeof state.response === 'object';
|
|
185
|
-
const isGql = isGqlQueryConfig(this._queryConfig);
|
|
186
|
-
let responseData = null;
|
|
187
|
-
if (isGql &&
|
|
188
|
-
isResponseObject &&
|
|
189
|
-
!!state.response &&
|
|
190
|
-
typeof state.response === 'object' &&
|
|
191
|
-
'data' in state.response) {
|
|
192
|
-
responseData = state.response['data'];
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
responseData = state.response;
|
|
196
|
-
}
|
|
197
|
-
const transformedResponse = this._queryConfig.responseTransformer
|
|
198
|
-
? this._queryConfig.responseTransformer(responseData)
|
|
199
|
-
: responseData;
|
|
200
|
-
this._queryConfig.entity?.successAction?.({
|
|
201
|
-
args: this._args,
|
|
202
|
-
rawResponse: state.response,
|
|
203
|
-
response: transformedResponse,
|
|
204
|
-
store: this._queryConfig.entity.store,
|
|
205
|
-
});
|
|
206
|
-
this._state$.next({
|
|
207
|
-
type: "SUCCESS" /* QueryStateType.Success */,
|
|
208
|
-
rawResponse: state.response,
|
|
209
|
-
response: transformedResponse,
|
|
210
|
-
meta: { ...meta, expiresAt: state.expiresInTimestamp },
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
else if (state.type === 'failure') {
|
|
214
|
-
const failure = () => {
|
|
215
|
-
this._state$.next({
|
|
216
|
-
type: "FAILURE" /* QueryStateType.Failure */,
|
|
217
|
-
error: state.error,
|
|
218
|
-
meta,
|
|
219
|
-
});
|
|
220
|
-
};
|
|
221
|
-
const bearerAuthProvider = this._getBearerAuthProvider();
|
|
222
|
-
if (!bearerAuthProvider || options?._isUnauthorizedRetry) {
|
|
223
|
-
return failure();
|
|
224
|
-
}
|
|
225
|
-
else if (state.error.status === 401 /* HttpStatusCode.Unauthorized */ &&
|
|
226
|
-
bearerAuthProvider.shouldRefreshOnUnauthorizedResponse) {
|
|
227
|
-
const query = bearerAuthProvider._refreshQuery();
|
|
228
|
-
if (!query) {
|
|
229
|
-
return failure();
|
|
230
|
-
}
|
|
231
|
-
query.state$
|
|
232
|
-
.pipe(takeUntilResponse(), takeUntil(this._onAbort$), tap((state) => {
|
|
233
|
-
if (isQueryStateSuccess(state)) {
|
|
234
|
-
this.execute({ ...options, _isUnauthorizedRetry: true });
|
|
235
|
-
}
|
|
236
|
-
else if (isQueryStateFailure(state)) {
|
|
237
|
-
failure();
|
|
238
|
-
}
|
|
239
|
-
}))
|
|
240
|
-
.subscribe();
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
failure();
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
else if (state.type === 'cancel') {
|
|
247
|
-
this._state$.next({
|
|
248
|
-
type: "CANCELLED" /* QueryStateType.Cancelled */,
|
|
249
|
-
meta,
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
},
|
|
253
|
-
});
|
|
104
|
+
.pipe(takeUntil(this._onAbort$), tap((state) => this._updateEntityState(state, meta, options)))
|
|
105
|
+
.subscribe();
|
|
254
106
|
return this;
|
|
255
107
|
}
|
|
256
108
|
abort() {
|
|
@@ -262,16 +114,11 @@ export class Query {
|
|
|
262
114
|
return this;
|
|
263
115
|
}
|
|
264
116
|
this._currentPollConfig = config;
|
|
265
|
-
const
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
.subscribe(() => {
|
|
271
|
-
if (this.state.type === "LOADING" /* QueryStateType.Loading */) {
|
|
272
|
-
return;
|
|
273
|
-
}
|
|
274
|
-
this.execute({ skipCache: true, _triggeredVia: 'poll' });
|
|
117
|
+
const interval$ = interval(config.interval);
|
|
118
|
+
const poll$ = interval$.pipe(skip(config.triggerImmediately ? 0 : 1), takeUntil(config.takeUntil), takeWhile(() => !this._isPollingPaused), filter(() => !isQueryStateLoading(this._state$.value)));
|
|
119
|
+
this._pollingSubscription = poll$.subscribe({
|
|
120
|
+
next: () => this.execute({ skipCache: true, _triggeredVia: 'poll' }),
|
|
121
|
+
complete: () => this.stopPolling(),
|
|
275
122
|
});
|
|
276
123
|
return this;
|
|
277
124
|
}
|
|
@@ -294,26 +141,6 @@ export class Query {
|
|
|
294
141
|
this._isPollingPaused = false;
|
|
295
142
|
return this.poll({ ...this._currentPollConfig, triggerImmediately: true });
|
|
296
143
|
}
|
|
297
|
-
_updateUseResultInDependencies() {
|
|
298
|
-
if (!this._args?.useResultIn?.length) {
|
|
299
|
-
return;
|
|
300
|
-
}
|
|
301
|
-
this.state$
|
|
302
|
-
.pipe(filterSuccess(), takeUntil(this._onAbort$), takeUntilResponse(), tap((state) => {
|
|
303
|
-
if (!this._args?.useResultIn) {
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
for (const query of this._args.useResultIn) {
|
|
307
|
-
query._state$.next({
|
|
308
|
-
type: "SUCCESS" /* QueryStateType.Success */,
|
|
309
|
-
meta: { ...state.meta, id: query._nextId },
|
|
310
|
-
rawResponse: state.rawResponse,
|
|
311
|
-
response: state.response,
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
}))
|
|
315
|
-
.subscribe();
|
|
316
|
-
}
|
|
317
144
|
/**
|
|
318
145
|
* @internal
|
|
319
146
|
*/
|
|
@@ -321,7 +148,7 @@ export class Query {
|
|
|
321
148
|
this._state$.complete();
|
|
322
149
|
this._onAbort$.complete();
|
|
323
150
|
this._pollingSubscription?.unsubscribe();
|
|
324
|
-
this.
|
|
151
|
+
this._requestSubscription?.unsubscribe();
|
|
325
152
|
}
|
|
326
153
|
_getBearerAuthProvider() {
|
|
327
154
|
const authProvider = this._client.authProvider;
|
|
@@ -330,5 +157,85 @@ export class Query {
|
|
|
330
157
|
}
|
|
331
158
|
return null;
|
|
332
159
|
}
|
|
160
|
+
_updateEntityState(requestEvent, meta, options) {
|
|
161
|
+
switch (requestEvent.type) {
|
|
162
|
+
case 'start':
|
|
163
|
+
case 'delay-retry': {
|
|
164
|
+
const { type, retryDelay, retryNumber } = requestEvent;
|
|
165
|
+
const newMeta = { ...meta, isWaitingForRetry: type === 'delay-retry', retryDelay, retryNumber };
|
|
166
|
+
this._state$.next({
|
|
167
|
+
type: "LOADING" /* QueryStateType.Loading */,
|
|
168
|
+
meta: newMeta,
|
|
169
|
+
});
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
case 'upload-progress':
|
|
173
|
+
case 'download-progress': {
|
|
174
|
+
this._state$.next({
|
|
175
|
+
type: "LOADING" /* QueryStateType.Loading */,
|
|
176
|
+
progress: requestEvent.progress,
|
|
177
|
+
partialText: 'partialText' in requestEvent ? requestEvent.partialText : undefined,
|
|
178
|
+
meta,
|
|
179
|
+
});
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case 'success': {
|
|
183
|
+
const { response, expiresInTimestamp } = requestEvent;
|
|
184
|
+
const isGql = isGqlQueryConfig(this._queryConfig);
|
|
185
|
+
const responseData = isGql && typeof response === 'object' && !!response && 'data' in response
|
|
186
|
+
? response['data']
|
|
187
|
+
: response;
|
|
188
|
+
this._state$.next({
|
|
189
|
+
type: "SUCCESS" /* QueryStateType.Success */,
|
|
190
|
+
response: responseData,
|
|
191
|
+
meta: { ...meta, expiresAt: expiresInTimestamp },
|
|
192
|
+
});
|
|
193
|
+
if (this._queryConfig.entity && this._queryConfig.entity.set) {
|
|
194
|
+
const id = this._queryConfig.entity?.id({ args: this._args, response: responseData });
|
|
195
|
+
this._queryConfig.entity?.set({
|
|
196
|
+
args: this._args,
|
|
197
|
+
response: responseData,
|
|
198
|
+
id,
|
|
199
|
+
store: this._queryConfig.entity.store,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case 'failure': {
|
|
205
|
+
const { error } = requestEvent;
|
|
206
|
+
const failure = () => this._state$.next({ type: "FAILURE" /* QueryStateType.Failure */, error, meta });
|
|
207
|
+
const bearerAuthProvider = this._getBearerAuthProvider();
|
|
208
|
+
if (!bearerAuthProvider ||
|
|
209
|
+
options?._isUnauthorizedRetry ||
|
|
210
|
+
error.status !== 401 /* HttpStatusCode.Unauthorized */ ||
|
|
211
|
+
!bearerAuthProvider.shouldRefreshOnUnauthorizedResponse) {
|
|
212
|
+
return failure();
|
|
213
|
+
}
|
|
214
|
+
const query = bearerAuthProvider._refreshQuery();
|
|
215
|
+
if (!query)
|
|
216
|
+
return failure();
|
|
217
|
+
query.state$
|
|
218
|
+
.pipe(takeUntilResponse(), takeUntil(this._onAbort$), tap((state) => isQueryStateSuccess(state) ? this.execute({ ...options, _isUnauthorizedRetry: true }) : failure()))
|
|
219
|
+
.subscribe();
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
case 'cancel': {
|
|
223
|
+
this._state$.next({
|
|
224
|
+
type: "CANCELLED" /* QueryStateType.Cancelled */,
|
|
225
|
+
meta,
|
|
226
|
+
});
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
_transformState(s) {
|
|
232
|
+
if (!isQueryStateSuccess(s) || !this._queryConfig.entity?.get) {
|
|
233
|
+
return of(s);
|
|
234
|
+
}
|
|
235
|
+
const id = this._queryConfig.entity.id({ args: this._args, response: s.response });
|
|
236
|
+
return this._queryConfig.entity
|
|
237
|
+
.get({ args: this._args, id, response: s.response, store: this._queryConfig.entity.store })
|
|
238
|
+
.pipe(map((v) => ({ ...s, response: v })));
|
|
239
|
+
}
|
|
333
240
|
}
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9DLE9BQU8sRUFBd0MsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBYzNFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixNQUFNLE9BQU8sS0FBSztJQXFCaEIsSUFBWSxPQUFPO1FBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUVyQyxJQUFJLENBQUMsRUFBRSxFQUFF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LFlBQVksQ0FBQyxFQUFFO1lBQ3RELE9BQU8sWUFBWSxDQUFDO1NBQ3JCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3RXaXRoU3Vic2NyaWJlckNvdW50IH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSwgaW50ZXJ2YWwsIHN0YXJ0V2l0aCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNCZWFyZXJBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9hdXRoJztcbmltcG9ydCB7IFF1ZXJ5Q2xpZW50LCBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZSB9IGZyb20gJy4uL3F1ZXJ5LWNsaWVudCc7XG5pbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSwgTWV0aG9kIGFzIE1ldGhvZFR5cGUsIHJlcXVlc3QgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIEdxbFF1ZXJ5Q29uZmlnLFxuICBQb2xsQ29uZmlnLFxuICBRdWVyeUF1dG9SZWZyZXNoQ29uZmlnLFxuICBRdWVyeVN0YXRlLFxuICBRdWVyeVN0YXRlTWV0YSxcbiAgUXVlcnlTdGF0ZVR5cGUsXG4gIFJlc3RRdWVyeUNvbmZpZyxcbiAgUm91dGVUeXBlLFxuICBSdW5RdWVyeU9wdGlvbnMsXG4gIFdpdGhVc2VSZXN1bHRJbixcbn0gZnJvbSAnLi9xdWVyeS50eXBlcyc7XG5pbXBvcnQge1xuICBjb21wdXRlUXVlcnlCb2R5LFxuICBjb21wdXRlUXVlcnlIZWFkZXJzLFxuICBjb21wdXRlUXVlcnlNZXRob2QsXG4gIGZpbHRlclN1Y2Nlc3MsXG4gIGlzR3FsUXVlcnlDb25maWcsXG4gIGlzUXVlcnlTdGF0ZUZhaWx1cmUsXG4gIGlzUXVlcnlTdGF0ZUxvYWRpbmcsXG4gIGlzUXVlcnlTdGF0ZVN1Y2Nlc3MsXG4gIHRha2VVbnRpbFJlc3BvbnNlLFxufSBmcm9tICcuL3F1ZXJ5LnV0aWxzJztcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5PFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgKEJhc2VBcmd1bWVudHMgJiBXaXRoVXNlUmVzdWx0SW48UmVzcG9uc2UsIFJlc3BvbnNlVHJhbnNmb3JtZXI+KSB8IHVuZGVmaW5lZCxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgTWV0aG9kIGV4dGVuZHMgTWV0aG9kVHlwZSxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPixcbiAgRW50aXR5LFxuPiB7XG4gIHByaXZhdGUgX2N1cnJlbnRJZCA9IDA7XG4gIHByaXZhdGUgX3BvbGxpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9lbnRpdHlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9vbkFib3J0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2N1cnJlbnRQb2xsQ29uZmlnOiBQb2xsQ29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2lzUG9sbGluZ1BhdXNlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlJDogQmVoYXZpb3JTdWJqZWN0V2l0aFN1YnNjcmliZXJDb3VudDxRdWVyeVN0YXRlPFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4sIFJlc3BvbnNlPj47XG5cbiAgcHJpdmF0ZSBnZXQgX25leHRJZCgpIHtcbiAgICByZXR1cm4gKyt0aGlzLl9jdXJyZW50SWQ7XG4gIH1cblxuICBnZXQgc3RhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0V4cGlyZWQoKSB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMuc3RhdGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdHMgPSB0aGlzLnN0YXRlLm1ldGEuZXhwaXJlc0F0O1xuXG4gICAgaWYgKCF0cykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRzIDwgRGF0ZS5ub3coKTtcbiAgfVxuXG4gIGdldCBpc0luVXNlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuc3Vic2NyaWJlckNvdW50ID4gMDtcbiAgfVxuXG4gIGdldCBpc1BvbGxpbmcoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBhdXRvUmVmcmVzaE9uQ29uZmlnKCkge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLl9xdWVyeUNvbmZpZy5hdXRvUmVmcmVzaE9uID8/IHt9O1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWQ6IFJlYWRvbmx5PFF1ZXJ5QXV0b1JlZnJlc2hDb25maWc+ID0ge1xuICAgICAgcXVlcnlDbGllbnREZWZhdWx0SGVhZGVyc0NoYW5nZTogYmFzZS5xdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlID8/IHRydWUsXG4gICAgICB3aW5kb3dGb2N1czogYmFzZS53aW5kb3dGb2N1cyA/PyB0cnVlLFxuICAgIH07XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgX2VuYWJsZVNtYXJ0UG9sbGluZygpIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlDb25maWcuZW5hYmxlU21hcnRQb2xsaW5nID8/IHRydWU7XG4gIH1cblxuICBnZXQgc3RvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uc3RvcmUgPz8gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NsaWVudDogUXVlcnlDbGllbnQsXG4gICAgcHJpdmF0ZSBfcXVlcnlDb25maWc6XG4gICAgICB8IFJlc3RRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lciwgRW50aXR5PlxuICAgICAgfCBHcWxRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lciwgRW50aXR5PixcbiAgICBwcml2YXRlIF9yb3V0ZVdpdGhQYXJhbXM6IFJvdXRlLFxuICAgIHByaXZhdGUgX2FyZ3M6IEFyZ3VtZW50cyxcbiAgKSB7XG4gICAgdGhpcy5fc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdFdpdGhTdWJzY3JpYmVyQ291bnQ8UXVlcnlTdGF0ZTxSZXR1cm5UeXBlPFJlc3BvbnNlVHJhbnNmb3JtZXI+LCBSZXNwb25zZT4+KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkLFxuICAgICAgbWV0YTogeyBpZDogdGhpcy5fY3VycmVudElkLCB0cmlnZ2VyZWRWaWE6ICdwcm9ncmFtJyB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uc3RvcmUpIHtcbiAgICAgIHRoaXMuX2VudGl0eVN1YnNjcmlwdGlvbiA9IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZS5ldmVudHMkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgIT09ICd1cGRhdGUnICYmIGV2ZW50LnR5cGUgIT09ICdzZXQnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMuc3RhdGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLnN0YXRlLnJlc3BvbnNlIGFzIGFueTtcbiAgICAgICAgY29uc3QgcmF3UmVzcG9uc2UgPSB0aGlzLnN0YXRlLnJhd1Jlc3BvbnNlO1xuXG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uc3RvcmUuY29uZmlnLmlkS2V5O1xuXG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uc3RvcmUuZ2V0T25lKGV2ZW50LmtleSk7XG5cbiAgICAgICAgaWYgKCFuZXdEYXRhKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3UmVzcG9uc2UgPSB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LnZhbHVlVXBkYXRlclxuICAgICAgICAgID8gdGhpcy5fcXVlcnlDb25maWcuZW50aXR5Py52YWx1ZVVwZGF0ZXIoe1xuICAgICAgICAgICAgICBhcmdzOiB0aGlzLl9hcmdzLFxuICAgICAgICAgICAgICBlbnRpdHk6IG5ld0RhdGEsXG4gICAgICAgICAgICAgIHJhd1Jlc3BvbnNlLFxuICAgICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiByZXNwb25zZVtrZXldID09PSAobmV3RGF0YSBhcyBhbnkpW2tleV1cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgcmVzcG9uc2U6IG5ld0RhdGEsXG4gICAgICAgICAgICAgIHJhd1Jlc3BvbnNlOiBuZXdEYXRhLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICBpZiAoIW5ld1Jlc3BvbnNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgcmVzcG9uc2U6IG5ld1Jlc3BvbnNlLnJlc3BvbnNlIGFzIGFueSxcbiAgICAgICAgICByYXdSZXNwb25zZTogbmV3UmVzcG9uc2UucmF3UmVzcG9uc2UgYXMgYW55LFxuICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUubWV0YSxcbiAgICAgICAgICAgIHRyaWdnZXJlZFZpYTogJ2F1dG8nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudC5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgTWV0aG9kLCBSZXNwb25zZVRyYW5zZm9ybWVyLCBFbnRpdHk+KHRoaXMuX3F1ZXJ5Q29uZmlnKTtcbiAgfVxuXG4gIGV4ZWN1dGU8XG4gICAgQ29tcHV0ZWRSZXNwb25zZSBleHRlbmRzIFJldHVyblR5cGU8UmVzcG9uc2VUcmFuc2Zvcm1lcj4sXG4gICAgRW50aXR5UmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gaW5mZXIgUiA/IFIgOiBSZXNwb25zZSxcbiAgPihvcHRpb25zPzogUnVuUXVlcnlPcHRpb25zKSB7XG4gICAgY29uc3QgdHJpZ2dlcmVkVmlhID0gb3B0aW9ucz8uX3RyaWdnZXJlZFZpYSA/PyAncHJvZ3JhbSc7XG5cbiAgICBpZiAoIXRoaXMuaXNFeHBpcmVkICYmICFvcHRpb25zPy5za2lwQ2FjaGUgJiYgaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLnN0YXRlKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLnNlY3VyZSAmJiAhdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZXhlY3V0ZSBzZWN1cmUgcXVlcnkgd2l0aG91dCBhdXRoIHByb3ZpZGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9uZXh0SWQ7XG5cbiAgICBpZiAoaXNRdWVyeVN0YXRlTG9hZGluZyh0aGlzLl9zdGF0ZSQudmFsdWUpKSB7XG4gICAgICB0aGlzLmFib3J0KCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YTogUXVlcnlTdGF0ZU1ldGEgPSB7IGlkLCB0cmlnZ2VyZWRWaWEgfTtcblxuICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICBtZXRhLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdXBkYXRlVXNlUmVzdWx0SW5EZXBlbmRlbmNpZXMoKTtcblxuICAgIGNvbnN0IG1ldGhvZCA9IGNvbXB1dGVRdWVyeU1ldGhvZCh7IGNvbmZpZzogdGhpcy5fcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50IH0pO1xuICAgIGNvbnN0IGJvZHkgPSBjb21wdXRlUXVlcnlCb2R5KHtcbiAgICAgIGNvbmZpZzogdGhpcy5fcXVlcnlDb25maWcsXG4gICAgICBjbGllbnQ6IHRoaXMuX2NsaWVudCxcbiAgICAgIGFyZ3M6IHRoaXMuX2FyZ3MsXG4gICAgICBtZXRob2QsXG4gICAgfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IGNvbXB1dGVRdWVyeUhlYWRlcnMoeyBjbGllbnQ6IHRoaXMuX2NsaWVudCwgY29uZmlnOiB0aGlzLl9xdWVyeUNvbmZpZywgYXJnczogdGhpcy5fYXJncyB9KTtcblxuICAgIHJlcXVlc3Q8UmVzcG9uc2U+KHtcbiAgICAgIHVybFdpdGhQYXJhbXM6IHRoaXMuX3JvdXRlV2l0aFBhcmFtcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIGJvZHksXG4gICAgICBoZWFkZXJzLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRoaXMuX3F1ZXJ5Q29uZmlnLnJlcG9ydFByb2dyZXNzLFxuICAgICAgcmVzcG9uc2VUeXBlOiB0aGlzLl9xdWVyeUNvbmZpZy5yZXNwb25zZVR5cGUsXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuX3F1ZXJ5Q29uZmlnLndpdGhDcmVkZW50aWFscyxcbiAgICAgIGNhY2hlQWRhcHRlcjogdGhpcy5fY2xpZW50LmNvbmZpZy5yZXF1ZXN0Py5jYWNoZUFkYXB0ZXIsXG4gICAgICByZXRyeUZuOiB0aGlzLl9jbGllbnQuY29uZmlnLnJlcXVlc3Q/LnJldHJ5Rm4sXG4gICAgfSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkFib3J0JCkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT09ICdzdGFydCcgfHwgc3RhdGUudHlwZSA9PT0gJ2RlbGF5LXJldHJ5Jykge1xuICAgICAgICAgICAgY29uc3QgbmV3TWV0YTogUXVlcnlTdGF0ZU1ldGEgPSB7XG4gICAgICAgICAgICAgIC4uLm1ldGEsXG4gICAgICAgICAgICAgIGlzV2FpdGluZ0ZvclJldHJ5OiBzdGF0ZS50eXBlID09PSAnZGVsYXktcmV0cnknLFxuICAgICAgICAgICAgICByZXRyeURlbGF5OiBzdGF0ZS5yZXRyeURlbGF5LFxuICAgICAgICAgICAgICByZXRyeU51bWJlcjogc3RhdGUucmV0cnlOdW1iZXIsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICAgICAgICAgIG1ldGE6IG5ld01ldGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09ICdkb3dubG9hZC1wcm9ncmVzcycpIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZyxcbiAgICAgICAgICAgICAgcHJvZ3Jlc3M6IHN0YXRlLnByb2dyZXNzLFxuICAgICAgICAgICAgICBwYXJ0aWFsVGV4dDogc3RhdGUucGFydGlhbFRleHQsXG4gICAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09ICd1cGxvYWQtcHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsXG4gICAgICAgICAgICAgIHByb2dyZXNzOiBzdGF0ZS5wcm9ncmVzcyxcbiAgICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICBjb25zdCBpc1Jlc3BvbnNlT2JqZWN0ID0gdHlwZW9mIHN0YXRlLnJlc3BvbnNlID09PSAnb2JqZWN0JztcbiAgICAgICAgICAgIGNvbnN0IGlzR3FsID0gaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZyk7XG5cbiAgICAgICAgICAgIGxldCByZXNwb25zZURhdGE6IFJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzR3FsICYmXG4gICAgICAgICAgICAgIGlzUmVzcG9uc2VPYmplY3QgJiZcbiAgICAgICAgICAgICAgISFzdGF0ZS5yZXNwb25zZSAmJlxuICAgICAgICAgICAgICB0eXBlb2Ygc3RhdGUucmVzcG9uc2UgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICdkYXRhJyBpbiBzdGF0ZS5yZXNwb25zZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJlc3BvbnNlRGF0YSA9IHN0YXRlLnJlc3BvbnNlWydkYXRhJ10gYXMgUmVzcG9uc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXNwb25zZURhdGEgPSBzdGF0ZS5yZXNwb25zZSBhcyBSZXNwb25zZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRSZXNwb25zZSA9IHRoaXMuX3F1ZXJ5Q29uZmlnLnJlc3BvbnNlVHJhbnNmb3JtZXJcbiAgICAgICAgICAgICAgPyB0aGlzLl9xdWVyeUNvbmZpZy5yZXNwb25zZVRyYW5zZm9ybWVyKHJlc3BvbnNlRGF0YSlcbiAgICAgICAgICAgICAgOiByZXNwb25zZURhdGE7XG5cbiAgICAgICAgICAgIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uc3VjY2Vzc0FjdGlvbj8uKHtcbiAgICAgICAgICAgICAgYXJnczogdGhpcy5fYXJncyxcbiAgICAgICAgICAgICAgcmF3UmVzcG9uc2U6IHN0YXRlLnJlc3BvbnNlLFxuICAgICAgICAgICAgICByZXNwb25zZTogdHJhbnNmb3JtZWRSZXNwb25zZSBhcyBFbnRpdHlSZXNwb25zZSxcbiAgICAgICAgICAgICAgc3RvcmU6IHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eS5zdG9yZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3MsXG4gICAgICAgICAgICAgIHJhd1Jlc3BvbnNlOiBzdGF0ZS5yZXNwb25zZSxcbiAgICAgICAgICAgICAgcmVzcG9uc2U6IHRyYW5zZm9ybWVkUmVzcG9uc2UgYXMgQ29tcHV0ZWRSZXNwb25zZSxcbiAgICAgICAgICAgICAgbWV0YTogeyAuLi5tZXRhLCBleHBpcmVzQXQ6IHN0YXRlLmV4cGlyZXNJblRpbWVzdGFtcCB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSAnZmFpbHVyZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGZhaWx1cmUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlLFxuICAgICAgICAgICAgICAgIGVycm9yOiBzdGF0ZS5lcnJvcixcbiAgICAgICAgICAgICAgICBtZXRhLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IGJlYXJlckF1dGhQcm92aWRlciA9IHRoaXMuX2dldEJlYXJlckF1dGhQcm92aWRlcigpO1xuXG4gICAgICAgICAgICBpZiAoIWJlYXJlckF1dGhQcm92aWRlciB8fCBvcHRpb25zPy5faXNVbmF1dGhvcml6ZWRSZXRyeSkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgc3RhdGUuZXJyb3Iuc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQgJiZcbiAgICAgICAgICAgICAgYmVhcmVyQXV0aFByb3ZpZGVyLnNob3VsZFJlZnJlc2hPblVuYXV0aG9yaXplZFJlc3BvbnNlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgcXVlcnkgPSBiZWFyZXJBdXRoUHJvdmlkZXIuX3JlZnJlc2hRdWVyeSgpO1xuXG4gICAgICAgICAgICAgIGlmICghcXVlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbHVyZSgpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcXVlcnkuc3RhdGUkXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YWtlVW50aWxSZXNwb25zZSgpLFxuICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uQWJvcnQkKSxcbiAgICAgICAgICAgICAgICAgIHRhcCgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUXVlcnlTdGF0ZVN1Y2Nlc3Moc3RhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlKHsgLi4ub3B0aW9ucywgX2lzVW5hdXRob3JpemVkUmV0cnk6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNRdWVyeVN0YXRlRmFpbHVyZShzdGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmYWlsdXJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYWlsdXJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSAnY2FuY2VsJykge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQsXG4gICAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5fb25BYm9ydCQubmV4dCgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwb2xsKGNvbmZpZzogUG9sbENvbmZpZykge1xuICAgIGlmICh0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50UG9sbENvbmZpZyA9IGNvbmZpZztcblxuICAgIGNvbnN0IF9pbnRlcnZhbCA9IGNvbmZpZy50cmlnZ2VySW1tZWRpYXRlbHlcbiAgICAgID8gaW50ZXJ2YWwoY29uZmlnLmludGVydmFsKS5waXBlKHN0YXJ0V2l0aCgtMSkpXG4gICAgICA6IGludGVydmFsKGNvbmZpZy5pbnRlcnZhbCk7XG5cbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uID0gX2ludGVydmFsXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKGNvbmZpZy50YWtlVW50aWwpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnN0b3BQb2xsaW5nKCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnR5cGUgPT09IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4ZWN1dGUoeyBza2lwQ2FjaGU6IHRydWUsIF90cmlnZ2VyZWRWaWE6ICdwb2xsJyB9KTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdG9wUG9sbGluZygpIHtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHRoaXMuX2N1cnJlbnRQb2xsQ29uZmlnID0gbnVsbDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGF1c2VQb2xsaW5nKCkge1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICB0aGlzLl9pc1BvbGxpbmdQYXVzZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZXN1bWVQb2xsaW5nKCkge1xuICAgIGlmICghdGhpcy5faXNQb2xsaW5nUGF1c2VkIHx8ICF0aGlzLl9jdXJyZW50UG9sbENvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5faXNQb2xsaW5nUGF1c2VkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5wb2xsKHsgLi4udGhpcy5fY3VycmVudFBvbGxDb25maWcsIHRyaWdnZXJJbW1lZGlhdGVseTogdHJ1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVVzZVJlc3VsdEluRGVwZW5kZW5jaWVzKCkge1xuICAgIGlmICghdGhpcy5fYXJncz8udXNlUmVzdWx0SW4/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyU3VjY2VzcygpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fb25BYm9ydCQpLFxuICAgICAgICB0YWtlVW50aWxSZXNwb25zZSgpLFxuICAgICAgICB0YXAoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLl9hcmdzPy51c2VSZXN1bHRJbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgcXVlcnkgb2YgdGhpcy5fYXJncy51c2VSZXN1bHRJbikge1xuICAgICAgICAgICAgcXVlcnkuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcyxcbiAgICAgICAgICAgICAgbWV0YTogeyAuLi5zdGF0ZS5tZXRhLCBpZDogcXVlcnkuX25leHRJZCB9LFxuICAgICAgICAgICAgICByYXdSZXNwb25zZTogc3RhdGUucmF3UmVzcG9uc2UsXG4gICAgICAgICAgICAgIHJlc3BvbnNlOiBzdGF0ZS5yZXNwb25zZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfZGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0ZSQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9vbkFib3J0JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fZW50aXR5U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QmVhcmVyQXV0aFByb3ZpZGVyKCkge1xuICAgIGNvbnN0IGF1dGhQcm92aWRlciA9IHRoaXMuX2NsaWVudC5hdXRoUHJvdmlkZXI7XG5cbiAgICBpZiAoYXV0aFByb3ZpZGVyICYmIGlzQmVhcmVyQXV0aFByb3ZpZGVyKGF1dGhQcm92aWRlcikpIHtcbiAgICAgIHJldHVybiBhdXRoUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFDTCxNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsRUFFSCxFQUFFLEVBQ0YsV0FBVyxFQUNYLElBQUksRUFDSixPQUFPLEVBRVAsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRy9DLE9BQU8sRUFBa0IsT0FBTyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWFuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE1BQU0sT0FBTyxLQUFLO0lBd0JoQixJQUFZLE9BQU87UUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN6QyxXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixD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QUM7U0FDOUM7UUFFRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFbkYsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07YUFDNUIsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUMxRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdFdpdGhTdWJzY3JpYmVyQ291bnQgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgaW50ZXJ2YWwsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIHNoYXJlUmVwbGF5LFxuICBza2lwLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YWtlV2hpbGUsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc0JlYXJlckF1dGhQcm92aWRlciB9IGZyb20gJy4uL2F1dGgnO1xuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICcuLi9lbnRpdHknO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuLi9xdWVyeS1jbGllbnQnO1xuaW1wb3J0IHsgSHR0cFN0YXR1c0NvZGUsIHJlcXVlc3QsIFJlcXVlc3RFdmVudCB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgQmFzZUFyZ3VtZW50cyxcbiAgRXhlY3V0ZVF1ZXJ5T3B0aW9ucyxcbiAgR3FsUXVlcnlDb25maWcsXG4gIFBvbGxDb25maWcsXG4gIFF1ZXJ5QXV0b1JlZnJlc2hDb25maWcsXG4gIFF1ZXJ5U3RhdGUsXG4gIFF1ZXJ5U3RhdGVNZXRhLFxuICBRdWVyeVN0YXRlVHlwZSxcbiAgUmVzdFF1ZXJ5Q29uZmlnLFxuICBSb3V0ZVR5cGUsXG59IGZyb20gJy4vcXVlcnkudHlwZXMnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZVF1ZXJ5Qm9keSxcbiAgY29tcHV0ZVF1ZXJ5SGVhZGVycyxcbiAgY29tcHV0ZVF1ZXJ5TWV0aG9kLFxuICBpc0dxbFF1ZXJ5Q29uZmlnLFxuICBpc1F1ZXJ5U3RhdGVMb2FkaW5nLFxuICBpc1F1ZXJ5U3RhdGVTdWNjZXNzLFxuICB0YWtlVW50aWxSZXNwb25zZSxcbn0gZnJvbSAnLi9xdWVyeS51dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeTxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiB7XG4gIHByaXZhdGUgX2N1cnJlbnRJZCA9IDA7XG4gIHByaXZhdGUgX3BvbGxpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yZXF1ZXN0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfb25BYm9ydCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9jdXJyZW50UG9sbENvbmZpZzogUG9sbENvbmZpZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc1BvbGxpbmdQYXVzZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0V2l0aFN1YnNjcmliZXJDb3VudDxRdWVyeVN0YXRlPFJlc3BvbnNlPj4oe1xuICAgIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlByZXBhcmVkLFxuICAgIG1ldGE6IHsgaWQ6IHRoaXMuX2N1cnJlbnRJZCwgdHJpZ2dlcmVkVmlhOiAncHJvZ3JhbScgfSxcbiAgfSk7XG5cbiAgcHJpdmF0ZSBnZXQgX25leHRJZCgpIHtcbiAgICByZXR1cm4gKyt0aGlzLl9jdXJyZW50SWQ7XG4gIH1cblxuICBnZXQgc3RhdGUkKCk6IE9ic2VydmFibGU8UXVlcnlTdGF0ZTxEYXRhPj4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocykgPT4gdGhpcy5fdHJhbnNmb3JtU3RhdGUocykpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBxdWVyeS5cbiAgICpcbiAgICogKipXYXJuaW5nISoqIFRoaXMgZGlmZmVycyBmcm9tIHRoZSBgc3RhdGUkYCBvYnNlcnZhYmxlIGluIHRoYXQgaXQgZG9lcyBub3QgdXNlIHRoZSBxdWVyeSBzdG9yZS4gVGh1cywgdGhlIHJlc3BvbnNlIGRhdGEgbWlnaHQgYmUgb3V0ZGF0ZWQuXG4gICAqIFVzZSBgc3RhdGUkYCAob3IgYGZpcnN0VmFsdWVGcm9tKHN0YXRlJClgKSB0aGUgbW9zdCB1cC10by1kYXRlIGRhdGEuXG4gICAqL1xuICBnZXQgcmF3U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0V4cGlyZWQoKSB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHRoaXMuX3N0YXRlJC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0cyA9IHRoaXMuX3N0YXRlJC52YWx1ZS5tZXRhLmV4cGlyZXNBdDtcblxuICAgIGlmICghdHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB0cyA8IERhdGUubm93KCk7XG4gIH1cblxuICBnZXQgaXNJblVzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLnN1YnNjcmliZXJDb3VudCA+IDA7XG4gIH1cblxuICBnZXQgaXNQb2xsaW5nKCkge1xuICAgIHJldHVybiAhIXRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb247XG4gIH1cblxuICBnZXQgYXV0b1JlZnJlc2hPbkNvbmZpZygpIHtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5fcXVlcnlDb25maWcuYXV0b1JlZnJlc2hPbiA/PyB7fTtcblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkOiBSZWFkb25seTxRdWVyeUF1dG9SZWZyZXNoQ29uZmlnPiA9IHtcbiAgICAgIHF1ZXJ5Q2xpZW50RGVmYXVsdEhlYWRlcnNDaGFuZ2U6IGJhc2UucXVlcnlDbGllbnREZWZhdWx0SGVhZGVyc0NoYW5nZSA/PyB0cnVlLFxuICAgICAgd2luZG93Rm9jdXM6IGJhc2Uud2luZG93Rm9jdXMgPz8gdHJ1ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IF9lbmFibGVTbWFydFBvbGxpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5Q29uZmlnLmVuYWJsZVNtYXJ0UG9sbGluZyA/PyB0cnVlO1xuICB9XG5cbiAgZ2V0IHN0b3JlKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LnN0b3JlID8/IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jbGllbnQ6IFF1ZXJ5Q2xpZW50LFxuICAgIHByaXZhdGUgX3F1ZXJ5Q29uZmlnOlxuICAgICAgfCBSZXN0UXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG4gICAgcHJpdmF0ZSBfcm91dGVXaXRoUGFyYW1zOiBSb3V0ZSxcbiAgICBwcml2YXRlIF9hcmdzOiBBcmd1bWVudHMsXG4gICkge31cblxuICBleGVjdXRlKG9wdGlvbnM6IEV4ZWN1dGVRdWVyeU9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHsgc2tpcENhY2hlID0gZmFsc2UsIF90cmlnZ2VyZWRWaWE6IHRyaWdnZXJlZFZpYSA9ICdwcm9ncmFtJyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCB7IGF1dGhQcm92aWRlciB9ID0gdGhpcy5fY2xpZW50O1xuICAgIGNvbnN0IHF1ZXJ5Q29uZmlnID0gdGhpcy5fcXVlcnlDb25maWc7XG5cbiAgICBpZiAoIXRoaXMuaXNFeHBpcmVkICYmICFza2lwQ2FjaGUgJiYgaXNRdWVyeVN0YXRlU3VjY2Vzcyh0aGlzLnJhd1N0YXRlKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHF1ZXJ5Q29uZmlnLnNlY3VyZSAmJiAhYXV0aFByb3ZpZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBleGVjdXRlIHNlY3VyZSBxdWVyeSB3aXRob3V0IGF1dGggcHJvdmlkZXInKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IHRoaXMuX25leHRJZDtcbiAgICBjb25zdCBtZXRhOiBRdWVyeVN0YXRlTWV0YSA9IHsgaWQsIHRyaWdnZXJlZFZpYSB9O1xuXG4gICAgaWYgKGlzUXVlcnlTdGF0ZUxvYWRpbmcodGhpcy5yYXdTdGF0ZSkpIHtcbiAgICAgIHRoaXMuYWJvcnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZSQubmV4dCh7IHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmcsIG1ldGEgfSk7XG5cbiAgICBjb25zdCBtZXRob2QgPSBjb21wdXRlUXVlcnlNZXRob2QoeyBjb25maWc6IHF1ZXJ5Q29uZmlnLCBjbGllbnQ6IHRoaXMuX2NsaWVudCB9KTtcbiAgICBjb25zdCBib2R5ID0gY29tcHV0ZVF1ZXJ5Qm9keSh7IGNvbmZpZzogcXVlcnlDb25maWcsIGNsaWVudDogdGhpcy5fY2xpZW50LCBhcmdzOiB0aGlzLl9hcmdzLCBtZXRob2QgfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IGNvbXB1dGVRdWVyeUhlYWRlcnMoeyBjbGllbnQ6IHRoaXMuX2NsaWVudCwgY29uZmlnOiBxdWVyeUNvbmZpZywgYXJnczogdGhpcy5fYXJncyB9KTtcblxuICAgIHRoaXMuX3JlcXVlc3RTdWJzY3JpcHRpb24gPSByZXF1ZXN0PFJlc3BvbnNlPih7XG4gICAgICB1cmxXaXRoUGFyYW1zOiB0aGlzLl9yb3V0ZVdpdGhQYXJhbXMsXG4gICAgICBtZXRob2QsXG4gICAgICBib2R5LFxuICAgICAgaGVhZGVycyxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiBxdWVyeUNvbmZpZy5yZXBvcnRQcm9ncmVzcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogcXVlcnlDb25maWcucmVzcG9uc2VUeXBlLFxuICAgICAgd2l0aENyZWRlbnRpYWxzOiBxdWVyeUNvbmZpZy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBjYWNoZUFkYXB0ZXI6IHRoaXMuX2NsaWVudC5jb25maWcucmVxdWVzdD8uY2FjaGVBZGFwdGVyLFxuICAgICAgcmV0cnlGbjogdGhpcy5fY2xpZW50LmNvbmZpZy5yZXF1ZXN0Py5yZXRyeUZuLFxuICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uQWJvcnQkKSxcbiAgICAgICAgdGFwKChzdGF0ZSkgPT4gdGhpcy5fdXBkYXRlRW50aXR5U3RhdGUoc3RhdGUsIG1ldGEsIG9wdGlvbnMpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5fb25BYm9ydCQubmV4dCgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwb2xsKGNvbmZpZzogUG9sbENvbmZpZykge1xuICAgIGlmICh0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50UG9sbENvbmZpZyA9IGNvbmZpZztcblxuICAgIGNvbnN0IGludGVydmFsJCA9IGludGVydmFsKGNvbmZpZy5pbnRlcnZhbCk7XG4gICAgY29uc3QgcG9sbCQgPSBpbnRlcnZhbCQucGlwZShcbiAgICAgIHNraXAoY29uZmlnLnRyaWdnZXJJbW1lZGlhdGVseSA/IDAgOiAxKSxcbiAgICAgIHRha2VVbnRpbChjb25maWcudGFrZVVudGlsKSxcbiAgICAgIHRha2VXaGlsZSgoKSA9PiAhdGhpcy5faXNQb2xsaW5nUGF1c2VkKSxcbiAgICAgIGZpbHRlcigoKSA9PiAhaXNRdWVyeVN0YXRlTG9hZGluZyh0aGlzLl9zdGF0ZSQudmFsdWUpKSxcbiAgICApO1xuXG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IHBvbGwkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB0aGlzLmV4ZWN1dGUoeyBza2lwQ2FjaGU6IHRydWUsIF90cmlnZ2VyZWRWaWE6ICdwb2xsJyB9KSxcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLnN0b3BQb2xsaW5nKCksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0b3BQb2xsaW5nKCkge1xuICAgIHRoaXMuX3BvbGxpbmdTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fY3VycmVudFBvbGxDb25maWcgPSBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwYXVzZVBvbGxpbmcoKSB7XG4gICAgdGhpcy5fcG9sbGluZ1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICAgIHRoaXMuX2lzUG9sbGluZ1BhdXNlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlc3VtZVBvbGxpbmcoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1BvbGxpbmdQYXVzZWQgfHwgIXRoaXMuX2N1cnJlbnRQb2xsQ29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLl9pc1BvbGxpbmdQYXVzZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiB0aGlzLnBvbGwoeyAuLi50aGlzLl9jdXJyZW50UG9sbENvbmZpZywgdHJpZ2dlckltbWVkaWF0ZWx5OiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2Rlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdGUkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fb25BYm9ydCQuY29tcGxldGUoKTtcbiAgICB0aGlzLl9wb2xsaW5nU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3JlcXVlc3RTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRCZWFyZXJBdXRoUHJvdmlkZXIoKSB7XG4gICAgY29uc3QgYXV0aFByb3ZpZGVyID0gdGhpcy5fY2xpZW50LmF1dGhQcm92aWRlcjtcblxuICAgIGlmIChhdXRoUHJvdmlkZXIgJiYgaXNCZWFyZXJBdXRoUHJvdmlkZXIoYXV0aFByb3ZpZGVyKSkge1xuICAgICAgcmV0dXJuIGF1dGhQcm92aWRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUVudGl0eVN0YXRlKFxuICAgIHJlcXVlc3RFdmVudDogUmVxdWVzdEV2ZW50PFJlc3BvbnNlPixcbiAgICBtZXRhOiBRdWVyeVN0YXRlTWV0YSxcbiAgICBvcHRpb25zPzogRXhlY3V0ZVF1ZXJ5T3B0aW9ucyxcbiAgKSB7XG4gICAgc3dpdGNoIChyZXF1ZXN0RXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgY2FzZSAnZGVsYXktcmV0cnknOiB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcmV0cnlEZWxheSwgcmV0cnlOdW1iZXIgfSA9IHJlcXVlc3RFdmVudDtcbiAgICAgICAgY29uc3QgbmV3TWV0YTogUXVlcnlTdGF0ZU1ldGEgPSB7IC4uLm1ldGEsIGlzV2FpdGluZ0ZvclJldHJ5OiB0eXBlID09PSAnZGVsYXktcmV0cnknLCByZXRyeURlbGF5LCByZXRyeU51bWJlciB9O1xuXG4gICAgICAgIHRoaXMuX3N0YXRlJC5uZXh0KHtcbiAgICAgICAgICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5Mb2FkaW5nLFxuICAgICAgICAgIG1ldGE6IG5ld01ldGEsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAndXBsb2FkLXByb2dyZXNzJzpcbiAgICAgIGNhc2UgJ2Rvd25sb2FkLXByb2dyZXNzJzoge1xuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZyxcbiAgICAgICAgICBwcm9ncmVzczogcmVxdWVzdEV2ZW50LnByb2dyZXNzLFxuICAgICAgICAgIHBhcnRpYWxUZXh0OiAncGFydGlhbFRleHQnIGluIHJlcXVlc3RFdmVudCA/IHJlcXVlc3RFdmVudC5wYXJ0aWFsVGV4dCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZXRhLFxuICAgICAgICB9KTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc3VjY2Vzcyc6IHtcbiAgICAgICAgY29uc3QgeyByZXNwb25zZSwgZXhwaXJlc0luVGltZXN0YW1wIH0gPSByZXF1ZXN0RXZlbnQ7XG4gICAgICAgIGNvbnN0IGlzR3FsID0gaXNHcWxRdWVyeUNvbmZpZyh0aGlzLl9xdWVyeUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9XG4gICAgICAgICAgaXNHcWwgJiYgdHlwZW9mIHJlc3BvbnNlID09PSAnb2JqZWN0JyAmJiAhIXJlc3BvbnNlICYmICdkYXRhJyBpbiByZXNwb25zZVxuICAgICAgICAgICAgPyAocmVzcG9uc2VbJ2RhdGEnXSBhcyBSZXNwb25zZSlcbiAgICAgICAgICAgIDogKHJlc3BvbnNlIGFzIFJlc3BvbnNlKTtcblxuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcyxcbiAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2VEYXRhLFxuICAgICAgICAgIG1ldGE6IHsgLi4ubWV0YSwgZXhwaXJlc0F0OiBleHBpcmVzSW5UaW1lc3RhbXAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eSAmJiB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkuc2V0KSB7XG4gICAgICAgICAgY29uc3QgaWQgPSB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LmlkKHsgYXJnczogdGhpcy5fYXJncywgcmVzcG9uc2U6IHJlc3BvbnNlRGF0YSB9KTtcblxuICAgICAgICAgIHRoaXMuX3F1ZXJ5Q29uZmlnLmVudGl0eT8uc2V0KHtcbiAgICAgICAgICAgIGFyZ3M6IHRoaXMuX2FyZ3MsXG4gICAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2VEYXRhLFxuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBzdG9yZTogdGhpcy5fcXVlcnlDb25maWcuZW50aXR5LnN0b3JlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2ZhaWx1cmUnOiB7XG4gICAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IHJlcXVlc3RFdmVudDtcbiAgICAgICAgY29uc3QgZmFpbHVyZSA9ICgpID0+IHRoaXMuX3N0YXRlJC5uZXh0KHsgdHlwZTogUXVlcnlTdGF0ZVR5cGUuRmFpbHVyZSwgZXJyb3IsIG1ldGEgfSk7XG4gICAgICAgIGNvbnN0IGJlYXJlckF1dGhQcm92aWRlciA9IHRoaXMuX2dldEJlYXJlckF1dGhQcm92aWRlcigpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhYmVhcmVyQXV0aFByb3ZpZGVyIHx8XG4gICAgICAgICAgb3B0aW9ucz8uX2lzVW5hdXRob3JpemVkUmV0cnkgfHxcbiAgICAgICAgICBlcnJvci5zdGF0dXMgIT09IEh0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZCB8fFxuICAgICAgICAgICFiZWFyZXJBdXRoUHJvdmlkZXIuc2hvdWxkUmVmcmVzaE9uVW5hdXRob3JpemVkUmVzcG9uc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gYmVhcmVyQXV0aFByb3ZpZGVyLl9yZWZyZXNoUXVlcnkoKTtcbiAgICAgICAgaWYgKCFxdWVyeSkgcmV0dXJuIGZhaWx1cmUoKTtcblxuICAgICAgICBxdWVyeS5zdGF0ZSRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbFJlc3BvbnNlKCksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25BYm9ydCQpLFxuICAgICAgICAgICAgdGFwKChzdGF0ZSkgPT5cbiAgICAgICAgICAgICAgaXNRdWVyeVN0YXRlU3VjY2VzcyhzdGF0ZSkgPyB0aGlzLmV4ZWN1dGUoeyAuLi5vcHRpb25zLCBfaXNVbmF1dGhvcml6ZWRSZXRyeTogdHJ1ZSB9KSA6IGZhaWx1cmUoKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY2FuY2VsJzoge1xuICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCh7XG4gICAgICAgICAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuQ2FuY2VsbGVkLFxuICAgICAgICAgIG1ldGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3RyYW5zZm9ybVN0YXRlKHM6IFF1ZXJ5U3RhdGU8UmVzcG9uc2U+KTogT2JzZXJ2YWJsZTxRdWVyeVN0YXRlPERhdGE+PiB7XG4gICAgaWYgKCFpc1F1ZXJ5U3RhdGVTdWNjZXNzKHMpIHx8ICF0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHk/LmdldCkge1xuICAgICAgcmV0dXJuIG9mKHMpIGFzIE9ic2VydmFibGU8UXVlcnlTdGF0ZTxEYXRhPj47XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkuaWQoeyBhcmdzOiB0aGlzLl9hcmdzLCByZXNwb25zZTogcy5yZXNwb25zZSB9KTtcblxuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHlcbiAgICAgIC5nZXQoeyBhcmdzOiB0aGlzLl9hcmdzLCBpZCwgcmVzcG9uc2U6IHMucmVzcG9uc2UsIHN0b3JlOiB0aGlzLl9xdWVyeUNvbmZpZy5lbnRpdHkuc3RvcmUgfSlcbiAgICAgIC5waXBlKG1hcCgodikgPT4gKHsgLi4ucywgcmVzcG9uc2U6IHYgfSkpKTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlLCBFbnRpdHlTdG9yZUFjdGlvblJlc3VsdCB9IGZyb20gJy4uL2VudGl0eSc7XG5pbXBvcnQgeyBBbnlRdWVyeUNyZWF0b3IsIFF1ZXJ5Q3JlYXRvclJldHVyblR5cGUsIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlIH0gZnJvbSAnLi4vcXVlcnktY2xpZW50JztcbmltcG9ydCB7IE1ldGhvZCwgUGF0aFBhcmFtcywgUXVlcnlQYXJhbXMsIFJlcXVlc3RFcnJvciwgUmVxdWVzdFByb2dyZXNzIH0gZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gJy4vcXVlcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5QXV0b1JlZnJlc2hDb25maWcge1xuICAvKipcbiAgICogUmVmcmVzaCB0aGUgcXVlcnkgd2hlbiB0aGUgcXVlcnkgY2xpZW50J3MgaGVhZGVycyBjaGFuZ2UuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHF1ZXJ5Q2xpZW50RGVmYXVsdEhlYWRlcnNDaGFuZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZWZyZXNoIHRoZSBxdWVyeSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICpcbiAgICogVGhpcyBjYW4gb25seSBiZSBkaXNhYmxlZCBpZiBgYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1c2AgaXMgZW5hYmxlZCBvbiB0aGUgcXVlcnkgY2xpZW50LlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB3aW5kb3dGb2N1cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29uZmlnQmFzZTxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4gIEVudGl0eSxcbj4gPSB7XG4gIC8qKlxuICAgKiBUaGUgaHR0cCBtZXRob2QgdG8gdXNlIGZvciB0aGUgcXVlcnkuXG4gICAqL1xuICBtZXRob2Q6IE1ldGhvZDtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgYXV0aCBwcm92aWRlciBzaG91bGQgYmUgdXNlZCBmb3IgdGhpcyBxdWVyeS5cbiAgICogVGhlIHF1ZXJ5ICoqd2lsbCB0aHJvdyoqIGlmIHRoZSBxdWVyeSBjbGllbnQncyBhdXRoIHByb3ZpZGVyIGlzIHVuc2V0LlxuICAgKi9cbiAgc2VjdXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIHRyYW5zZm9ybWVyIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgdHJhbnNmb3JtcyB0aGUgcmVzcG9uc2UgdG8gdGhlIGRlc2lyZWQgdHlwZS5cbiAgICovXG4gIHJlc3BvbnNlVHJhbnNmb3JtZXI/OiBSZXNwb25zZVRyYW5zZm9ybWVyO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBxdWVyeSBzaG91bGQgZW1pdCBwcm9ncmVzcyBldmVudHMuXG4gICAqL1xuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIHF1ZXJ5J3MgcmVzcG9uc2UgdHlwZS5cbiAgICogQGRlZmF1bHQgJ2pzb24nXG4gICAqL1xuICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVxdWVzdCBzaG91bGQgYmUgc2VudCB3aXRoIG91dGdvaW5nIGNyZWRlbnRpYWxzIChjb29raWVzKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGhhbmRsaW5nIGF1dG8gcmVmcmVzaCB0cmlnZ2Vycy5cbiAgICpcbiAgICogKipOb3RlOioqIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHF1ZXJpZXMgdGhhdCBjYW4gYmUgcmVmcmVzaGVkLiAoYEdFVGAsIGBIRUFEYCwgYE9QVElPTlNgLCBgR1FMX1FVRVJZYClcbiAgICovXG4gIGF1dG9SZWZyZXNoT24/OiBRdWVyeUF1dG9SZWZyZXNoQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgc3RvcCBwb2xsaW5nIGZvciB0aGlzIHF1ZXJ5IHdoZW4gdGhlIHdpbmRvdyBsb3NlcyBmb2N1cy5cbiAgICogUG9sbGluZyB3aWxsIHJlc3VtZSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICpcbiAgICogVGhpcyBjYW4gb25seSBiZSBkaXNhYmxlZCBpZiBgZW5hYmxlU21hcnRQb2xsaW5nYCBpcyBlbmFibGVkIG9uIHRoZSBxdWVyeSBjbGllbnQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGVuYWJsZVNtYXJ0UG9sbGluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9iamVjdCBjb250YWluaW5nIHRoZSBxdWVyeSdzIHR5cGUgaW5mb3JtYXRpb24uXG4gICAqL1xuICB0eXBlcz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXNwb25zZS5cbiAgICAgKi9cbiAgICByZXNwb25zZT86IFJlc3BvbnNlO1xuXG4gICAgLyoqXG4gICAgICogQXJndW1lbnRzIGZvciBleGVjdXRpbmcgdGhlIHF1ZXJ5LlxuICAgICAqXG4gICAgICogLSBgcGF0aFBhcmFtc2A6IFRoZSBwYXRoIHBhcmFtZXRlcnMgZm9yIHRoZSBxdWVyeS4gKGluIGZyb250IG9mIHRoZSA/IGluIHRoZSB1cmwpXG4gICAgICogLSBgcXVlcnlQYXJhbXNgOiBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHF1ZXJ5LiAoYWZ0ZXIgdGhlID8gaW4gdGhlIHVybClcbiAgICAgKiAtIGBib2R5YDogVGhlIGJvZHkgZm9yIHRoZSBxdWVyeS4gVW5hdmFpbGFibGUgZm9yIEdFVCwgSEVBRCBhbmQgT1BUSU9OUyByZXF1ZXN0cy5cbiAgICAgKiAtIGBoZWFkZXJzYDogVGhlIGhlYWRlcnMgZm9yIHRoZSBxdWVyeS5cbiAgICAgKiAtIGB2YXJpYWJsZXNgOiBUaGUgdmFyaWFibGVzIGZvciB0aGUgcXVlcnkuIChncmFwaHFsIG9ubHkpXG4gICAgICovXG4gICAgYXJncz86IEFyZ3VtZW50cztcbiAgfTtcblxuICBlbnRpdHk/OiB7XG4gICAgc3RvcmU6IEVudGl0eVN0b3JlPEVudGl0eT47XG4gICAgc3VjY2Vzc0FjdGlvbjogKGRhdGE6IHtcbiAgICAgIHJhd1Jlc3BvbnNlOiBSZXNwb25zZTtcbiAgICAgIHJlc3BvbnNlOiBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gaW5mZXIgUiA/IFIgOiBSZXNwb25zZTtcbiAgICAgIGFyZ3M6IEFyZ3VtZW50cztcbiAgICAgIHN0b3JlOiBFbnRpdHlTdG9yZTxFbnRpdHk+O1xuICAgIH0pID0+IEVudGl0eVN0b3JlQWN0aW9uUmVzdWx0IHwgbnVsbCB8IEFycmF5PEVudGl0eVN0b3JlQWN0aW9uUmVzdWx0IHwgbnVsbD47XG4gICAgdmFsdWVVcGRhdGVyPzogKGRhdGE6IHtcbiAgICAgIHJhd1Jlc3BvbnNlOiBSZXNwb25zZTtcbiAgICAgIHJlc3BvbnNlOiBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gaW5mZXIgUiA/IFIgOiBSZXNwb25zZTtcbiAgICAgIGFyZ3M6IEFyZ3VtZW50cztcbiAgICAgIGVudGl0eTogRW50aXR5O1xuICAgIH0pID0+IHtcbiAgICAgIHJhd1Jlc3BvbnNlOiBSZXNwb25zZTtcbiAgICAgIHJlc3BvbnNlOiBSZXNwb25zZVRyYW5zZm9ybWVyIGV4dGVuZHMgKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gaW5mZXIgUiA/IFIgOiBSZXNwb25zZTtcbiAgICB9IHwgbnVsbDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3RRdWVyeUNvbmZpZzxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4gIEVudGl0eSxcbj4gPSBRdWVyeUNvbmZpZ0Jhc2U8UmVzcG9uc2UsIEFyZ3VtZW50cywgUmVzcG9uc2VUcmFuc2Zvcm1lciwgRW50aXR5PiAmIHtcbiAgLyoqXG4gICAqIFRoZSBhcGkgcm91dGUgdG8gdXNlIGZvciB0aGUgcXVlcnkuXG4gICAqL1xuICByb3V0ZTogUm91dGU7XG59O1xuXG5leHBvcnQgdHlwZSBHcWxUcmFuc2Zlck9wdGlvbiA9ICdHRVQnIHwgJ1BPU1QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdxbFF1ZXJ5Q29uZmlnPFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+IHwgdW5kZWZpbmVkLFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiB8IHVuZGVmaW5lZCxcbiAgRW50aXR5LFxuPiBleHRlbmRzIFF1ZXJ5Q29uZmlnQmFzZTxSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyLCBFbnRpdHk+IHtcbiAgLyoqXG4gICAqIFRoZSBncmFwaHFsIHF1ZXJ5IHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcXVlcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgcXVlcnkgc2hvdWxkIGJlIHNlbnQgdmlhIEdFVCBvciBQT1NULlxuICAgKiAtIGBHRVRgOiBUaGUgcXVlcnkgd2lsbCBiZSBzZW50IHZpYSBxdWVyeSBwYXJhbWV0ZXJzLlxuICAgKiAtIGBQT1NUYDogVGhlIHF1ZXJ5IHdpbGwgYmUgc2VudCB2aWEgdGhlIGJvZHkuXG4gICAqIEBkZWZhdWx0ICdQT1NUJ1xuICAgKi9cbiAgdHJhbnNmZXJWaWE/OiBHcWxUcmFuc2Zlck9wdGlvbjtcblxuICAvKipcbiAgICogU3Vicm91dGUgdG8gdXNlIGZvciB0aGUgcXVlcnkuXG4gICAqL1xuICByb3V0ZT86IFJvdXRlO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgQW55UmVzdFF1ZXJ5Q29uZmlnID0gUmVzdFF1ZXJ5Q29uZmlnPGFueSwgYW55LCBhbnksIGFueSwgYW55Pjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBBbnlHcWxRdWVyeUNvbmZpZyA9IEdxbFF1ZXJ5Q29uZmlnPGFueSwgYW55LCBhbnksIGFueSwgYW55PjtcblxuZXhwb3J0IHR5cGUgUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2VUcmFuc2Zvcm1lciBleHRlbmRzIFJlc3BvbnNlVHJhbnNmb3JtZXJUeXBlPFJlc3BvbnNlPiB8IHVuZGVmaW5lZCxcbiAgRW50aXR5LFxuPiA9IE9taXQ8UmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyLCBFbnRpdHk+LCAnbWV0aG9kJz47XG5cbmV4cG9ydCB0eXBlIEdxbFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4gfCB1bmRlZmluZWQsXG4gIEVudGl0eSxcbj4gPSBPbWl0PEdxbFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBSZXNwb25zZVRyYW5zZm9ybWVyLCBFbnRpdHk+LCAnbWV0aG9kJz47XG5cbmV4cG9ydCB0eXBlIEJhc2VBcmd1bWVudHMgPSBXaXRoSGVhZGVycyAmIFdpdGhWYXJpYWJsZXMgJiBXaXRoQm9keSAmIFdpdGhRdWVyeVBhcmFtcyAmIFdpdGhQYXRoUGFyYW1zO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhIZWFkZXJzIHtcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFZhcmlhYmxlcyB7XG4gIHZhcmlhYmxlcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhCb2R5IHtcbiAgYm9keT86IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aFF1ZXJ5UGFyYW1zIHtcbiAgcXVlcnlQYXJhbXM/OiBRdWVyeVBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUGF0aFBhcmFtcyB7XG4gIHBhdGhQYXJhbXM/OiBQYXRoUGFyYW1zO1xufVxuXG5leHBvcnQgdHlwZSBXaXRoVXNlUmVzdWx0SW48UmVzcG9uc2UsIFJlc3BvbnNlVHJhbnNmb3JtZXIgZXh0ZW5kcyBSZXNwb25zZVRyYW5zZm9ybWVyVHlwZTxSZXNwb25zZT4+ID0ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1c2VSZXN1bHRJbj86IFF1ZXJ5PFJlc3BvbnNlLCBhbnksIGFueSwgYW55LCBSZXNwb25zZVRyYW5zZm9ybWVyLCBhbnk+W107XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeVRyaWdnZXIgPSAncHJvZ3JhbScgfCAncG9sbCcgfCAnYXV0byc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG5leHBvcnQgdHlwZSBFbXB0eU9iamVjdCA9IHt9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1blF1ZXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgdGhlIGNhY2hlIGZvciB0aGlzIHF1ZXJ5LiBUaGlzIHdpbGwgZm9yY2UgdGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLiBJdCBtaWdodCBzdGlsbCBiZSBjYXVnaHQgYnkgdGhlIG5hdGl2ZSBicm93c2VyIGNhY2hlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcENhY2hlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRyaWdnZXIgdHlwZSBmb3IgdGhpcyBxdWVyeS5cbiAgICogLSBgcHJvZ3JhbWA6IFRoZSBxdWVyeSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyLlxuICAgKiAtIGBwb2xsYDogVGhlIHF1ZXJ5IHdhcyB0cmlnZ2VyZWQgYnkgcG9sbGluZy5cbiAgICogLSBgYXV0b2A6IFRoZSBxdWVyeSB3YXMgdHJpZ2dlcmVkIGJ5IGFuIGF1dG8gcmVmcmVzaCBldmVudC5cbiAgICogQGRlZmF1bHQgJ3Byb2dyYW0nXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3RyaWdnZXJlZFZpYT86IFF1ZXJ5VHJpZ2dlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGEgcmV0cnkgb2YgYW4gdW5hdXRob3JpemVkIHJlcXVlc3QuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2lzVW5hdXRob3JpemVkUmV0cnk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBSb3V0ZVR5cGU8QXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZD4gPSBBcmd1bWVudHMgZXh0ZW5kcyB7XG4gIHBhdGhQYXJhbXM6IGluZmVyIFBhdGhQYXJhbXM7XG59XG4gID8gKHA6IFBhdGhQYXJhbXMpID0+IFJvdXRlU3RyaW5nXG4gIDogUm91dGVTdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFJvdXRlU3RyaW5nID0gYC8ke3N0cmluZ31gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGxDb25maWcge1xuICAvKipcbiAgICogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBwb2xsIHRoZSBxdWVyeS5cbiAgICovXG4gIGludGVydmFsOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgc3RvcCB0aGUgcG9sbGluZyB3aGVuIGl0IGVtaXRzLlxuICAgKi9cbiAgdGFrZVVudGlsOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHRyaWdnZXIgdGhlIHF1ZXJ5IGltbWVkaWF0ZWx5IGFmdGVyIHBvbGxpbmcgc3RhcnRzLlxuICAgKi9cbiAgdHJpZ2dlckltbWVkaWF0ZWx5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUXVlcnlTdGF0ZVR5cGUge1xuICBQcmVwYXJlZCA9ICdQUkVQQVJFRCcsXG4gIExvYWRpbmcgPSAnTE9BRElORycsXG4gIFN1Y2Nlc3MgPSAnU1VDQ0VTUycsXG4gIEZhaWx1cmUgPSAnRkFJTFVSRScsXG4gIENhbmNlbGxlZCA9ICdDQU5DRUxMRUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQ7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Y2Nlc3M8UmVzcG9uc2UgPSB1bmtub3duLCBSYXdSZXNwb25zZSA9IHVua25vd24+IHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuU3VjY2VzcztcbiAgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICByYXdSZXNwb25zZTogUmF3UmVzcG9uc2U7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVTdWNjZXNzTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsdXJlIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuRmFpbHVyZTtcbiAgZXJyb3I6IFJlcXVlc3RFcnJvcjtcbiAgbWV0YTogUXVlcnlTdGF0ZU1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZyB7XG4gIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLkxvYWRpbmc7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xuICBwYXJ0aWFsVGV4dD86IHN0cmluZztcbiAgcHJvZ3Jlc3M/OiBSZXF1ZXN0UHJvZ3Jlc3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsbGVkIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuQ2FuY2VsbGVkO1xuICBtZXRhOiBRdWVyeVN0YXRlTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVN0YXRlTWV0YSB7XG4gIGlkOiBudW1iZXI7XG4gIHRyaWdnZXJlZFZpYTogUXVlcnlUcmlnZ2VyO1xuICBpc1dhaXRpbmdGb3JSZXRyeT86IGJvb2xlYW47XG4gIHJldHJ5TnVtYmVyPzogbnVtYmVyO1xuICByZXRyeURlbGF5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RhdGVTdWNjZXNzTWV0YSBleHRlbmRzIFF1ZXJ5U3RhdGVNZXRhIHtcbiAgZXhwaXJlc0F0PzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBRdWVyeVN0YXRlPFJlc3BvbnNlID0gdW5rbm93biwgUmF3UmVzcG9uc2UgPSB1bmtub3duPiA9XG4gIHwgTG9hZGluZ1xuICB8IFN1Y2Nlc3M8UmVzcG9uc2UsIFJhd1Jlc3BvbnNlPlxuICB8IEZhaWx1cmVcbiAgfCBDYW5jZWxsZWRcbiAgfCBQcmVwYXJlZDtcblxuZXhwb3J0IHR5cGUgUXVlcnlTdGF0ZURhdGE8VCBleHRlbmRzIFF1ZXJ5U3RhdGUgPSBRdWVyeVN0YXRlPiA9IFQgZXh0ZW5kcyBTdWNjZXNzPGluZmVyIFJlc3BvbnNlPiA/IFJlc3BvbnNlIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5U3RhdGVSYXdEYXRhPFQgZXh0ZW5kcyBRdWVyeVN0YXRlID0gUXVlcnlTdGF0ZT4gPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIFQgZXh0ZW5kcyBTdWNjZXNzPGluZmVyIFJlc3BvbnNlLCBpbmZlciBSYXdSZXNwb25zZT4gPyBSYXdSZXNwb25zZSA6IG5ldmVyO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgQW55UXVlcnkgPSBRdWVyeTxhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55PjtcblxuZXhwb3J0IHR5cGUgUXVlcnlUeXBlPFxuICBUIGV4dGVuZHMge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJlcGFyZTogKGFyZ3M6IGFueSkgPT4gQW55UXVlcnk7XG4gIH0sXG4+ID0gVFsncHJlcGFyZSddIGV4dGVuZHMgKCkgPT4gaW5mZXIgUlxuICA/IFJcbiAgOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBUWydwcmVwYXJlJ10gZXh0ZW5kcyAoYXJnczogYW55KSA9PiBpbmZlciBSXG4gID8gUlxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBRdWVyeVJlc3BvbnNlVHlwZTxRIGV4dGVuZHMgQW55UXVlcnkgfCBudWxsPiA9IFEgZXh0ZW5kcyBBbnlRdWVyeVxuICA/IFF1ZXJ5U3RhdGVEYXRhPFFbJ3N0YXRlJ10+IHwgbnVsbFxuICA6IG51bGw7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UmF3UmVzcG9uc2VUeXBlPFEgZXh0ZW5kcyBBbnlRdWVyeSB8IG51bGw+ID0gUSBleHRlbmRzIEFueVF1ZXJ5XG4gID8gUXVlcnlTdGF0ZVJhd0RhdGE8UVsnc3RhdGUnXT4gfCBudWxsXG4gIDogbnVsbDtcblxuZXhwb3J0IHR5cGUgQW55UXVlcnlDcmVhdG9yQ29sbGVjdGlvbiA9IHsgW25hbWU6IHN0cmluZ106IEFueVF1ZXJ5Q3JlYXRvciB9O1xuXG5leHBvcnQgdHlwZSBBbnlRdWVyeU9mQ3JlYXRvckNvbGxlY3Rpb248VCBleHRlbmRzIHsgW25hbWU6IHN0cmluZ106IEFueVF1ZXJ5Q3JlYXRvciB9PiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IHsgdHlwZTogSzsgcXVlcnk6IFF1ZXJ5Q3JlYXRvclJldHVyblR5cGU8VFtLXT4gfTtcbn1ba2V5b2YgVF07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T2Y8VCBleHRlbmRzIEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uPiB8IEFueVF1ZXJ5IHwgbnVsbD4gPVxuICBUIGV4dGVuZHMgQW55UXVlcnkgPyBUIDogVCBleHRlbmRzIEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uPiA/IFRbJ3F1ZXJ5J10gOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgQW55UXVlcnlSZXNwb25zZU9mQ3JlYXRvckNvbGxlY3Rpb248VCBleHRlbmRzIEFueVF1ZXJ5T2ZDcmVhdG9yQ29sbGVjdGlvbjxBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uPj4gPVxuICBRdWVyeVJlc3BvbnNlVHlwZTxUWydxdWVyeSddPjtcbmV4cG9ydCB0eXBlIEFueVF1ZXJ5UmF3UmVzcG9uc2VPZkNyZWF0b3JDb2xsZWN0aW9uPFQgZXh0ZW5kcyBBbnlRdWVyeU9mQ3JlYXRvckNvbGxlY3Rpb248QW55UXVlcnlDcmVhdG9yQ29sbGVjdGlvbj4+ID1cbiAgUXVlcnlSYXdSZXNwb25zZVR5cGU8VFsncXVlcnknXT47XG4iXX0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnkvcXVlcnkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vZW50aXR5JztcbmltcG9ydCB7IEFueVF1ZXJ5Q3JlYXRvciwgQ29uc3RydWN0UXVlcnksIFF1ZXJ5UmVzcG9uc2VPZiB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHsgTWV0aG9kLCBQYXRoUGFyYW1zLCBRdWVyeVBhcmFtcywgUmVxdWVzdEVycm9yLCBSZXF1ZXN0UHJvZ3Jlc3MgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSAnLi9xdWVyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlBdXRvUmVmcmVzaENvbmZpZyB7XG4gIC8qKlxuICAgKiBSZWZyZXNoIHRoZSBxdWVyeSB3aGVuIHRoZSBxdWVyeSBjbGllbnQncyBoZWFkZXJzIGNoYW5nZS5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcXVlcnlDbGllbnREZWZhdWx0SGVhZGVyc0NoYW5nZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIHF1ZXJ5IHdoZW4gdGhlIHdpbmRvdyByZWdhaW5zIGZvY3VzLlxuICAgKlxuICAgKiBUaGlzIGNhbiBvbmx5IGJlIGRpc2FibGVkIGlmIGBhdXRvUmVmcmVzaFF1ZXJpZXNPbldpbmRvd0ZvY3VzYCBpcyBlbmFibGVkIG9uIHRoZSBxdWVyeSBjbGllbnQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHdpbmRvd0ZvY3VzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlTZXRQYXJhbXM8U3RvcmUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkPiB7XG4gIC8qKlxuICAgKiBUaGUgcmVzcG9uc2UgZGF0YS5cbiAgICovXG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAvKipcbiAgICogVGhlIGlkKHMpIHJldHVybmVkIGJ5IHRoZSBgaWRgIGZ1bmN0aW9uLlxuICAgKi9cbiAgaWQ6IElkO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcXVlcnkuXG4gICAqL1xuICBhcmdzOiBBcmd1bWVudHM7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnRpdHkgc3RvcmUuXG4gICAqL1xuICBzdG9yZTogU3RvcmU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5R2V0UGFyYW1zPFN0b3JlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4ge1xuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIGRhdGEuXG4gICAqL1xuICByZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBpZChzKSByZXR1cm5lZCBieSB0aGUgYGlkYCBmdW5jdGlvbi5cbiAgICovXG4gIGlkOiBJZDtcblxuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHF1ZXJ5LlxuICAgKi9cbiAgYXJnczogQXJndW1lbnRzO1xuXG4gIC8qKlxuICAgKiBUaGUgZW50aXR5IHN0b3JlLlxuICAgKi9cbiAgc3RvcmU6IFN0b3JlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUlkUGFyYW1zPFJlc3BvbnNlLCBBcmd1bWVudHM+IHtcbiAgLyoqXG4gICAqIFRoZSByZXNwb25zZSBkYXRhLlxuICAgKi9cbiAgcmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgcXVlcnkuXG4gICAqL1xuICBhcmdzOiBBcmd1bWVudHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlFbnRpdHlDb25maWc8U3RvcmUsIERhdGEsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkPiB7XG4gIC8qKlxuICAgKiBUaGUgZW50aXR5IHN0b3JlIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgc3RvcmU6IFN0b3JlO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgaWQgb2YgdGhlIGVudGl0eS4gQ2FuIGFsc28gcmV0dXJuIGFuIGFycmF5IG9mIGlkcy5cbiAgICovXG4gIGlkOiAoZGF0YTogRW50aXR5SWRQYXJhbXM8UmVzcG9uc2UsIEFyZ3VtZW50cz4pID0+IElkO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVzcG9uc2UgZGF0YSAoY2FuIGJlIGEgc3Vic2V0IG9mIHRoZSByZXNwb25zZSkuXG4gICAqL1xuICBnZXQ/OiAoZGF0YTogRW50aXR5R2V0UGFyYW1zPFN0b3JlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZD4pID0+IE9ic2VydmFibGU8RGF0YT47XG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBlbnRpdHkgc3RvcmUgZXZlcnkgdGltZSBhIG5ldyByZXNwb25zZSBpcyByZWNlaXZlZC5cbiAgICovXG4gIHNldD86IChkYXRhOiBFbnRpdHlTZXRQYXJhbXM8U3RvcmUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkPikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlDb25maWdCYXNlPFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgU3RvcmUgZXh0ZW5kcyBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgRGF0YSxcbiAgSWQsXG4+ID0ge1xuICAvKipcbiAgICogVGhlIGh0dHAgbWV0aG9kIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgbWV0aG9kOiBNZXRob2Q7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGF1dGggcHJvdmlkZXIgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgcXVlcnkuXG4gICAqIFRoZSBxdWVyeSAqKndpbGwgdGhyb3cqKiBpZiB0aGUgcXVlcnkgY2xpZW50J3MgYXV0aCBwcm92aWRlciBpcyB1bnNldC5cbiAgICovXG4gIHNlY3VyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHF1ZXJ5IHNob3VsZCBlbWl0IHByb2dyZXNzIGV2ZW50cy5cbiAgICovXG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgcXVlcnkncyByZXNwb25zZSB0eXBlLlxuICAgKiBAZGVmYXVsdCAnanNvbidcbiAgICovXG4gIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXF1ZXN0IHNob3VsZCBiZSBzZW50IHdpdGggb3V0Z29pbmcgY3JlZGVudGlhbHMgKGNvb2tpZXMpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgaGFuZGxpbmcgYXV0byByZWZyZXNoIHRyaWdnZXJzLlxuICAgKlxuICAgKiAqKk5vdGU6KiogVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgcXVlcmllcyB0aGF0IGNhbiBiZSByZWZyZXNoZWQuIChgR0VUYCwgYEhFQURgLCBgT1BUSU9OU2AsIGBHUUxfUVVFUllgKVxuICAgKi9cbiAgYXV0b1JlZnJlc2hPbj86IFF1ZXJ5QXV0b1JlZnJlc2hDb25maWc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzdG9wIHBvbGxpbmcgZm9yIHRoaXMgcXVlcnkgd2hlbiB0aGUgd2luZG93IGxvc2VzIGZvY3VzLlxuICAgKiBQb2xsaW5nIHdpbGwgcmVzdW1lIHdoZW4gdGhlIHdpbmRvdyByZWdhaW5zIGZvY3VzLlxuICAgKlxuICAgKiBUaGlzIGNhbiBvbmx5IGJlIGRpc2FibGVkIGlmIGBlbmFibGVTbWFydFBvbGxpbmdgIGlzIGVuYWJsZWQgb24gdGhlIHF1ZXJ5IGNsaWVudC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZW5hYmxlU21hcnRQb2xsaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT2JqZWN0IGNvbnRhaW5pbmcgdGhlIHF1ZXJ5J3MgdHlwZSBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHR5cGVzPzoge1xuICAgIC8qKlxuICAgICAqIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3BvbnNlLlxuICAgICAqL1xuICAgIHJlc3BvbnNlPzogUmVzcG9uc2U7XG5cbiAgICAvKipcbiAgICAgKiBBcmd1bWVudHMgZm9yIGV4ZWN1dGluZyB0aGUgcXVlcnkuXG4gICAgICpcbiAgICAgKiAtIGBwYXRoUGFyYW1zYDogVGhlIHBhdGggcGFyYW1ldGVycyBmb3IgdGhlIHF1ZXJ5LiAoaW4gZnJvbnQgb2YgdGhlID8gaW4gdGhlIHVybClcbiAgICAgKiAtIGBxdWVyeVBhcmFtc2A6IFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcXVlcnkuIChhZnRlciB0aGUgPyBpbiB0aGUgdXJsKVxuICAgICAqIC0gYGJvZHlgOiBUaGUgYm9keSBmb3IgdGhlIHF1ZXJ5LiBVbmF2YWlsYWJsZSBmb3IgR0VULCBIRUFEIGFuZCBPUFRJT05TIHJlcXVlc3RzLlxuICAgICAqIC0gYGhlYWRlcnNgOiBUaGUgaGVhZGVycyBmb3IgdGhlIHF1ZXJ5LlxuICAgICAqIC0gYHZhcmlhYmxlc2A6IFRoZSB2YXJpYWJsZXMgZm9yIHRoZSBxdWVyeS4gKGdyYXBocWwgb25seSlcbiAgICAgKi9cbiAgICBhcmdzPzogQXJndW1lbnRzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBPYmplY3QgY29udGFpbmluZyB0aGUgcXVlcnkncyBlbnRpdHkgc3RvcmUgaW5mb3JtYXRpb24uXG4gICAqL1xuICBlbnRpdHk/OiBRdWVyeUVudGl0eUNvbmZpZzxTdG9yZSwgRGF0YSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgUmVzdFF1ZXJ5Q29uZmlnPFxuICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICBSZXNwb25zZSxcbiAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgU3RvcmUgZXh0ZW5kcyBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgRGF0YSxcbiAgSWQsXG4+ID0gUXVlcnlDb25maWdCYXNlPFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4gJiB7XG4gIC8qKlxuICAgKiBUaGUgYXBpIHJvdXRlIHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcm91dGU6IFJvdXRlO1xufTtcblxuZXhwb3J0IHR5cGUgR3FsVHJhbnNmZXJPcHRpb24gPSAnR0VUJyB8ICdQT1NUJztcblxuZXhwb3J0IGludGVyZmFjZSBHcWxRdWVyeUNvbmZpZzxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPiB8IHVuZGVmaW5lZCxcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiBleHRlbmRzIFF1ZXJ5Q29uZmlnQmFzZTxSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+IHtcbiAgLyoqXG4gICAqIFRoZSBncmFwaHFsIHF1ZXJ5IHRvIHVzZSBmb3IgdGhlIHF1ZXJ5LlxuICAgKi9cbiAgcXVlcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgcXVlcnkgc2hvdWxkIGJlIHNlbnQgdmlhIEdFVCBvciBQT1NULlxuICAgKiAtIGBHRVRgOiBUaGUgcXVlcnkgd2lsbCBiZSBzZW50IHZpYSBxdWVyeSBwYXJhbWV0ZXJzLlxuICAgKiAtIGBQT1NUYDogVGhlIHF1ZXJ5IHdpbGwgYmUgc2VudCB2aWEgdGhlIGJvZHkuXG4gICAqIEBkZWZhdWx0ICdQT1NUJ1xuICAgKi9cbiAgdHJhbnNmZXJWaWE/OiBHcWxUcmFuc2Zlck9wdGlvbjtcblxuICAvKipcbiAgICogU3Vicm91dGUgdG8gdXNlIGZvciB0aGUgcXVlcnkuXG4gICAqL1xuICByb3V0ZT86IFJvdXRlO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgQW55UmVzdFF1ZXJ5Q29uZmlnID0gUmVzdFF1ZXJ5Q29uZmlnPGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEFueUdxbFF1ZXJ5Q29uZmlnID0gR3FsUXVlcnlDb25maWc8YW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueT47XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiA9IE9taXQ8UmVzdFF1ZXJ5Q29uZmlnPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LCAnbWV0aG9kJz47XG5cbmV4cG9ydCB0eXBlIEdxbFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxcbiAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgUmVzcG9uc2UsXG4gIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQsXG4gIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gIERhdGEsXG4gIElkLFxuPiA9IE9taXQ8R3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sICdtZXRob2QnPjtcblxuZXhwb3J0IHR5cGUgQmFzZUFyZ3VtZW50cyA9IFdpdGhIZWFkZXJzICYgV2l0aFZhcmlhYmxlcyAmIFdpdGhCb2R5ICYgV2l0aFF1ZXJ5UGFyYW1zICYgV2l0aFBhdGhQYXJhbXM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aEhlYWRlcnMge1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoVmFyaWFibGVzIHtcbiAgdmFyaWFibGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0aEJvZHkge1xuICBib2R5PzogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoUXVlcnlQYXJhbXMge1xuICBxdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhQYXRoUGFyYW1zIHtcbiAgcGF0aFBhcmFtcz86IFBhdGhQYXJhbXM7XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5VHJpZ2dlciA9ICdwcm9ncmFtJyB8ICdwb2xsJyB8ICdhdXRvJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCB0eXBlIEVtcHR5T2JqZWN0ID0ge307XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0ZVF1ZXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgdGhlIGNhY2hlIGZvciB0aGlzIHF1ZXJ5LiBUaGlzIHdpbGwgZm9yY2UgdGhlIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLiBJdCBtaWdodCBzdGlsbCBiZSBjYXVnaHQgYnkgdGhlIG5hdGl2ZSBicm93c2VyIGNhY2hlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcENhY2hlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHRyaWdnZXIgdHlwZSBmb3IgdGhpcyBxdWVyeS5cbiAgICogLSBgcHJvZ3JhbWA6IFRoZSBxdWVyeSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyLlxuICAgKiAtIGBwb2xsYDogVGhlIHF1ZXJ5IHdhcyB0cmlnZ2VyZWQgYnkgcG9sbGluZy5cbiAgICogLSBgYXV0b2A6IFRoZSBxdWVyeSB3YXMgdHJpZ2dlcmVkIGJ5IGFuIGF1dG8gcmVmcmVzaCBldmVudC5cbiAgICogQGRlZmF1bHQgJ3Byb2dyYW0nXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX3RyaWdnZXJlZFZpYT86IFF1ZXJ5VHJpZ2dlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGEgcmV0cnkgb2YgYW4gdW5hdXRob3JpemVkIHJlcXVlc3QuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgX2lzVW5hdXRob3JpemVkUmV0cnk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBSb3V0ZVR5cGU8QXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZD4gPSBBcmd1bWVudHMgZXh0ZW5kcyB7XG4gIHBhdGhQYXJhbXM6IGluZmVyIFBhdGhQYXJhbXM7XG59XG4gID8gKHA6IFBhdGhQYXJhbXMpID0+IFJvdXRlU3RyaW5nXG4gIDogUm91dGVTdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFJvdXRlU3RyaW5nID0gYC8ke3N0cmluZ31gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGxDb25maWcge1xuICAvKipcbiAgICogVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyB0byBwb2xsIHRoZSBxdWVyeS5cbiAgICovXG4gIGludGVydmFsOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgc3RvcCB0aGUgcG9sbGluZyB3aGVuIGl0IGVtaXRzLlxuICAgKi9cbiAgdGFrZVVudGlsOiBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHRyaWdnZXIgdGhlIHF1ZXJ5IGltbWVkaWF0ZWx5IGFmdGVyIHBvbGxpbmcgc3RhcnRzLlxuICAgKi9cbiAgdHJpZ2dlckltbWVkaWF0ZWx5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUXVlcnlTdGF0ZVR5cGUge1xuICBQcmVwYXJlZCA9ICdQUkVQQVJFRCcsXG4gIExvYWRpbmcgPSAnTE9BRElORycsXG4gIFN1Y2Nlc3MgPSAnU1VDQ0VTUycsXG4gIEZhaWx1cmUgPSAnRkFJTFVSRScsXG4gIENhbmNlbGxlZCA9ICdDQU5DRUxMRUQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuUHJlcGFyZWQ7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1Y2Nlc3M8UmVzcG9uc2UgPSB1bmtub3duPiB7XG4gIHR5cGU6IFF1ZXJ5U3RhdGVUeXBlLlN1Y2Nlc3M7XG4gIHJlc3BvbnNlOiBSZXNwb25zZTtcbiAgbWV0YTogUXVlcnlTdGF0ZVN1Y2Nlc3NNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5GYWlsdXJlO1xuICBlcnJvcjogUmVxdWVzdEVycm9yO1xuICBtZXRhOiBRdWVyeVN0YXRlTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkaW5nIHtcbiAgdHlwZTogUXVlcnlTdGF0ZVR5cGUuTG9hZGluZztcbiAgbWV0YTogUXVlcnlTdGF0ZU1ldGE7XG4gIHBhcnRpYWxUZXh0Pzogc3RyaW5nO1xuICBwcm9ncmVzcz86IFJlcXVlc3RQcm9ncmVzcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxsZWQge1xuICB0eXBlOiBRdWVyeVN0YXRlVHlwZS5DYW5jZWxsZWQ7XG4gIG1ldGE6IFF1ZXJ5U3RhdGVNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RhdGVNZXRhIHtcbiAgaWQ6IG51bWJlcjtcbiAgdHJpZ2dlcmVkVmlhOiBRdWVyeVRyaWdnZXI7XG4gIGlzV2FpdGluZ0ZvclJldHJ5PzogYm9vbGVhbjtcbiAgcmV0cnlOdW1iZXI/OiBudW1iZXI7XG4gIHJldHJ5RGVsYXk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlTdGF0ZVN1Y2Nlc3NNZXRhIGV4dGVuZHMgUXVlcnlTdGF0ZU1ldGEge1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5U3RhdGU8UmVzcG9uc2UgPSB1bmtub3duPiA9IExvYWRpbmcgfCBTdWNjZXNzPFJlc3BvbnNlPiB8IEZhaWx1cmUgfCBDYW5jZWxsZWQgfCBQcmVwYXJlZDtcblxuZXhwb3J0IHR5cGUgUXVlcnlTdGF0ZVJlc3BvbnNlT2Y8VCBleHRlbmRzIFF1ZXJ5U3RhdGUgPSBRdWVyeVN0YXRlPiA9IFQgZXh0ZW5kcyBTdWNjZXNzPGluZmVyIFJlc3BvbnNlPlxuICA/IFJlc3BvbnNlXG4gIDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBBbnlRdWVyeSA9IFF1ZXJ5PGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG5leHBvcnQgdHlwZSBBbnlRdWVyeUNyZWF0b3JDb2xsZWN0aW9uID0geyBbbmFtZTogc3RyaW5nXTogQW55UXVlcnlDcmVhdG9yIH07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5Q29sbGVjdGlvbk9mPFQgZXh0ZW5kcyB7IFtuYW1lOiBzdHJpbmddOiBBbnlRdWVyeUNyZWF0b3IgfT4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiB7IHR5cGU6IEs7IHF1ZXJ5OiBDb25zdHJ1Y3RRdWVyeTxUW0tdPiB9O1xufVtrZXlvZiBUXTtcblxuZXhwb3J0IHR5cGUgQW55UXVlcnlDb2xsZWN0aW9uID0gUXVlcnlDb2xsZWN0aW9uT2Y8QW55UXVlcnlDcmVhdG9yQ29sbGVjdGlvbj47XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T2Y8VCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvbiB8IEFueVF1ZXJ5IHwgbnVsbD4gPSBUIGV4dGVuZHMgQW55UXVlcnlcbiAgPyBUXG4gIDogVCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvblxuICA/IFRbJ3F1ZXJ5J11cbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgQW55UXVlcnlDb2xsZWN0aW9uUmVzcG9uc2U8VCBleHRlbmRzIEFueVF1ZXJ5Q29sbGVjdGlvbj4gPSBRdWVyeVJlc3BvbnNlT2Y8VFsncXVlcnknXT47XG4iXX0=
|