@alfresco/aca-shared 5.4.0-13492897022 → 5.4.0-13560776567
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/rules/app.rules.mjs +30 -150
- package/esm2022/rules/navigation.rules.mjs +1 -68
- package/fesm2022/alfresco-aca-shared-rules.mjs +30 -217
- package/fesm2022/alfresco-aca-shared-rules.mjs.map +1 -1
- package/package.json +1 -1
- package/rules/app.rules.d.ts +1 -93
- package/rules/navigation.rules.d.ts +0 -55
|
@@ -79,64 +79,43 @@ export const isContentServiceEnabled = (context) => {
|
|
|
79
79
|
const flag = context.appConfig.get('plugins.contentService');
|
|
80
80
|
return flag === true || flag === 'true';
|
|
81
81
|
};
|
|
82
|
-
/**
|
|
83
|
-
* Checks if upload action is supported for the given context
|
|
84
|
-
* JSON ref: `app.isUploadSupported`
|
|
85
|
-
*
|
|
86
|
-
* @param context Rule execution context
|
|
87
|
-
*/
|
|
88
|
-
export const isUploadSupported = (context) => [isContentServiceEnabled(context), navigation.isPersonalFiles(context) || navigation.isLibraryContent(context), canUpload(context)].every(Boolean);
|
|
89
|
-
/**
|
|
90
|
-
* Checks if user can copy selected node.
|
|
91
|
-
* JSON ref: `app.canCopyNode`
|
|
92
|
-
*
|
|
93
|
-
* @param context Rule execution context
|
|
94
|
-
*/
|
|
95
|
-
export const canCopyNode = (context) => [hasSelection(context), navigation.isNotTrashcan(context), navigation.isNotLibraries(context)].every(Boolean);
|
|
96
82
|
/**
|
|
97
83
|
* Checks if user can mark selected nodes as **Favorite**.
|
|
98
84
|
* JSON ref: `app.selection.canAddFavorite`
|
|
99
85
|
*/
|
|
100
86
|
export function canAddFavorite(context) {
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
return context.selection.nodes.some((node) => !node.entry.isFavorite);
|
|
87
|
+
if (navigation.isFavorites(context) || navigation.isLibraries(context) || navigation.isTrashcan(context)) {
|
|
88
|
+
return false;
|
|
106
89
|
}
|
|
107
|
-
return
|
|
90
|
+
return context.selection.nodes.some((node) => !node.entry.isFavorite);
|
|
108
91
|
}
|
|
109
92
|
/**
|
|
110
93
|
* Checks if user can un-mark selected nodes as **Favorite**.
|
|
111
94
|
* JSON ref: `app.selection.canRemoveFavorite`
|
|
112
95
|
*/
|
|
113
96
|
export function canRemoveFavorite(context) {
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
return true;
|
|
117
|
-
}
|
|
118
|
-
return context.selection.nodes.every((node) => node.entry.isFavorite);
|
|
97
|
+
if (navigation.isFavorites(context)) {
|
|
98
|
+
return true;
|
|
119
99
|
}
|
|
120
|
-
return
|
|
100
|
+
return context.selection.nodes.every((node) => node.entry.isFavorite);
|
|
121
101
|
}
|
|
122
102
|
/**
|
|
123
103
|
* Checks if user can share selected file.
|
|
124
104
|
* JSON ref: `app.selection.file.canShare`
|
|
125
105
|
*/
|
|
126
|
-
export const canShareFile = (context) => [context.selection.file, navigation.
|
|
106
|
+
export const canShareFile = (context) => [context.selection.file, !navigation.isTrashcan(context), repository.hasQuickShareEnabled(context), !isShared(context)].every(Boolean);
|
|
127
107
|
/**
|
|
128
108
|
* Checks if user can perform "Join" or "Cancel Join Request" on a library.
|
|
129
109
|
* JSON ref: `canToggleJoinLibrary`
|
|
130
110
|
*/
|
|
131
|
-
export const canToggleJoinLibrary = (context) =>
|
|
132
|
-
[hasLibrarySelected(context), isPrivateLibrary(context), hasNoLibraryRole(context), isAdmin(context)].every(Boolean);
|
|
111
|
+
export const canToggleJoinLibrary = (context) => !isPrivateLibrary(context) || [isPrivateLibrary(context), isAdmin(context)].every(Boolean);
|
|
133
112
|
/**
|
|
134
113
|
* Checks if user can edit the selected folder.
|
|
135
114
|
* JSON ref: `canEditFolder`
|
|
136
115
|
*
|
|
137
116
|
* @param context Rule execution context
|
|
138
117
|
*/
|
|
139
|
-
export const canEditFolder = (context) => [canUpdateSelectedFolder(context), navigation.
|
|
118
|
+
export const canEditFolder = (context) => [canUpdateSelectedFolder(context), !navigation.isTrashcan(context)].every(Boolean);
|
|
140
119
|
/**
|
|
141
120
|
* Checks if the selected file is already shared.
|
|
142
121
|
* JSON ref: `app.selection.file.isShared`
|
|
@@ -145,7 +124,7 @@ export function isShared(context) {
|
|
|
145
124
|
if (navigation.isSharedFiles(context) && context.selection.file) {
|
|
146
125
|
return true;
|
|
147
126
|
}
|
|
148
|
-
if (navigation.
|
|
127
|
+
if (!navigation.isTrashcan(context) && hasSelection(context) && context.selection.file) {
|
|
149
128
|
return !!context.selection.file.entry?.properties?.['qshare:sharedId'];
|
|
150
129
|
}
|
|
151
130
|
return false;
|
|
@@ -155,38 +134,23 @@ export function isShared(context) {
|
|
|
155
134
|
* JSON ref: `app.selection.canDelete`
|
|
156
135
|
*/
|
|
157
136
|
export function canDeleteSelection(context) {
|
|
158
|
-
if (
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if (navigation.isPreview(context)) {
|
|
167
|
-
return context.permissions.check(context.selection.nodes, ['delete']);
|
|
168
|
-
}
|
|
169
|
-
// workaround for Shared Files
|
|
170
|
-
if (navigation.isSharedFiles(context)) {
|
|
171
|
-
return context.permissions.check(context.selection.nodes, ['delete'], {
|
|
172
|
-
target: 'allowableOperationsOnTarget'
|
|
173
|
-
});
|
|
174
|
-
}
|
|
137
|
+
if (hasLockedFiles(context)) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
// temp workaround for Favorites api
|
|
141
|
+
if (navigation.isFavorites(context)) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
if (navigation.isPreview(context)) {
|
|
175
145
|
return context.permissions.check(context.selection.nodes, ['delete']);
|
|
176
146
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Checks if user can un-share selected nodes.
|
|
181
|
-
* JSON ref: `app.selection.canUnshare`
|
|
182
|
-
*/
|
|
183
|
-
export function canUnshareNodes(context) {
|
|
184
|
-
if (hasSelection(context)) {
|
|
147
|
+
// workaround for Shared Files
|
|
148
|
+
if (navigation.isSharedFiles(context)) {
|
|
185
149
|
return context.permissions.check(context.selection.nodes, ['delete'], {
|
|
186
150
|
target: 'allowableOperationsOnTarget'
|
|
187
151
|
});
|
|
188
152
|
}
|
|
189
|
-
return
|
|
153
|
+
return context.permissions.check(context.selection.nodes, ['delete']);
|
|
190
154
|
}
|
|
191
155
|
/**
|
|
192
156
|
* Checks if user selected anything.
|
|
@@ -198,7 +162,7 @@ export const hasSelection = (context) => !context.selection.isEmpty;
|
|
|
198
162
|
* JSON ref: `app.navigation.folder.canCreate`
|
|
199
163
|
*/
|
|
200
164
|
export function canCreateFolder(context) {
|
|
201
|
-
if (
|
|
165
|
+
if (navigation.isPersonalFiles(context) || navigation.isLibraryContent(context)) {
|
|
202
166
|
const { currentFolder } = context.navigation;
|
|
203
167
|
if (currentFolder) {
|
|
204
168
|
return context.permissions.check(currentFolder, ['create']);
|
|
@@ -206,29 +170,12 @@ export function canCreateFolder(context) {
|
|
|
206
170
|
}
|
|
207
171
|
return false;
|
|
208
172
|
}
|
|
209
|
-
/**
|
|
210
|
-
* Checks if user can create a Library
|
|
211
|
-
* JSON ref: `app.canCreateLibrary`
|
|
212
|
-
*
|
|
213
|
-
* @param context Rule execution context
|
|
214
|
-
*/
|
|
215
|
-
export const canCreateLibrary = (context) => [isContentServiceEnabled(context), navigation.isLibraries(context)].every(Boolean);
|
|
216
|
-
/**
|
|
217
|
-
* Checks if user can upload content to current folder.
|
|
218
|
-
* JSON ref: `app.navigation.folder.canUpload`
|
|
219
|
-
*/
|
|
220
|
-
export function canUpload(context) {
|
|
221
|
-
return canCreateFolder(context);
|
|
222
|
-
}
|
|
223
173
|
/**
|
|
224
174
|
* Checks if user can download selected nodes (either files or folders).
|
|
225
175
|
* JSON ref: `app.selection.canDownload`
|
|
226
176
|
*/
|
|
227
177
|
export function canDownloadSelection(context) {
|
|
228
|
-
|
|
229
|
-
return context.selection.nodes.every((node) => node.entry && (node.entry.isFile || node.entry.isFolder || !!node.entry.nodeId));
|
|
230
|
-
}
|
|
231
|
-
return false;
|
|
178
|
+
return context.selection.nodes.every((node) => node.entry && (node.entry.isFile || node.entry.isFolder || !!node.entry.nodeId));
|
|
232
179
|
}
|
|
233
180
|
/**
|
|
234
181
|
* Checks if user has selected a folder.
|
|
@@ -255,11 +202,6 @@ export function hasLibraryRole(context) {
|
|
|
255
202
|
const library = context.selection.library;
|
|
256
203
|
return library ? !!library.entry?.role : false;
|
|
257
204
|
}
|
|
258
|
-
/**
|
|
259
|
-
* Checks if the selected library has no **role** property defined.
|
|
260
|
-
* JSON ref: `app.selection.hasNoLibraryRole`
|
|
261
|
-
*/
|
|
262
|
-
export const hasNoLibraryRole = (context) => !hasLibraryRole(context);
|
|
263
205
|
/**
|
|
264
206
|
* Checks if user has selected a file.
|
|
265
207
|
* JSON ref: `app.selection.file`
|
|
@@ -351,52 +293,17 @@ export function canUploadVersion(context) {
|
|
|
351
293
|
}
|
|
352
294
|
return [
|
|
353
295
|
hasFileSelected(context),
|
|
354
|
-
navigation.
|
|
296
|
+
!navigation.isTrashcan(context),
|
|
355
297
|
isWriteLocked(context) ? isUserWriteLockOwner(context) : canUpdateSelectedNode(context)
|
|
356
298
|
].every(Boolean);
|
|
357
299
|
}
|
|
358
|
-
/**
|
|
359
|
-
* Checks if user has trashcan item selected.
|
|
360
|
-
* JSON ref: `isTrashcanItemSelected`
|
|
361
|
-
*
|
|
362
|
-
* @param context Rule execution context
|
|
363
|
-
*/
|
|
364
|
-
export const isTrashcanItemSelected = (context) => [navigation.isTrashcan(context), hasSelection(context)].every(Boolean);
|
|
365
|
-
/**
|
|
366
|
-
* Checks if user can view the file.
|
|
367
|
-
* JSON ref: `canViewFile`
|
|
368
|
-
*
|
|
369
|
-
* @param context Rule execution context
|
|
370
|
-
*/
|
|
371
|
-
export const canViewFile = (context) => [hasFileSelected(context), navigation.isNotTrashcan(context)].every(Boolean);
|
|
372
|
-
/**
|
|
373
|
-
* Checks if user can **Leave** selected library.
|
|
374
|
-
* JSON ref: `canLeaveLibrary`
|
|
375
|
-
*
|
|
376
|
-
* @param context Rule execution context
|
|
377
|
-
*/
|
|
378
|
-
export const canLeaveLibrary = (context) => [hasLibrarySelected(context), hasLibraryRole(context)].every(Boolean);
|
|
379
300
|
/**
|
|
380
301
|
* Checks if user can toggle shared link mode.
|
|
381
302
|
* JSON ref: `canToggleSharedLink`
|
|
382
303
|
*
|
|
383
304
|
* @param context Rule execution context
|
|
384
305
|
*/
|
|
385
|
-
export const canToggleSharedLink = (context) => [
|
|
386
|
-
/**
|
|
387
|
-
* Checks if user can show **Info Drawer** for the selected node.
|
|
388
|
-
* JSON ref: `canShowInfoDrawer`
|
|
389
|
-
*
|
|
390
|
-
* @param context Rule execution context
|
|
391
|
-
*/
|
|
392
|
-
export const canShowInfoDrawer = (context) => [hasSelection(context), navigation.isNotLibraries(context), navigation.isNotTrashcan(context)].every(Boolean);
|
|
393
|
-
/**
|
|
394
|
-
* Checks if user can manage file versions for the selected node.
|
|
395
|
-
* JSON ref: `canManageFileVersions`
|
|
396
|
-
*
|
|
397
|
-
* @param context Rule execution context
|
|
398
|
-
*/
|
|
399
|
-
export const canManageFileVersions = (context) => [hasFileSelected(context), navigation.isNotTrashcan(context), !hasLockedFiles(context)].every(Boolean);
|
|
306
|
+
export const canToggleSharedLink = (context) => [canShareFile(context), isShared(context)].some(Boolean);
|
|
400
307
|
/**
|
|
401
308
|
* Checks if user can edit aspects for the selected node.
|
|
402
309
|
* JSON ref: `canEditAspects`
|
|
@@ -407,24 +314,10 @@ export const canEditAspects = (context) => [
|
|
|
407
314
|
!isMultiselection(context),
|
|
408
315
|
canUpdateSelectedNode(context),
|
|
409
316
|
!isWriteLocked(context),
|
|
410
|
-
navigation.
|
|
317
|
+
!navigation.isTrashcan(context),
|
|
411
318
|
repository.isMajorVersionAvailable(context, '7')
|
|
412
319
|
].every(Boolean);
|
|
413
|
-
export const
|
|
414
|
-
/**
|
|
415
|
-
* Checks if user can manage permissions for the selected node.
|
|
416
|
-
* JSON ref: `canManagePermissions`
|
|
417
|
-
*
|
|
418
|
-
* @param context Rule execution context
|
|
419
|
-
*/
|
|
420
|
-
export const canManagePermissions = (context) => [canUpdateSelectedNode(context), navigation.isNotTrashcan(context), !isSmartFolder(context), !isMultiselection(context)].every(Boolean);
|
|
421
|
-
/**
|
|
422
|
-
* Checks if user can toggle **Edit Offline** mode for selected node.
|
|
423
|
-
* JSON ref: `canToggleEditOffline`
|
|
424
|
-
*
|
|
425
|
-
* @param context Rule execution context
|
|
426
|
-
*/
|
|
427
|
-
export const canToggleEditOffline = (context) => [hasFileSelected(context), navigation.isNotTrashcan(context), canLockFile(context) || canUnlockFile(context)].every(Boolean);
|
|
320
|
+
export const canToggleFileLock = (context) => [canLockFile(context) || canUnlockFile(context)].some(Boolean);
|
|
428
321
|
/**
|
|
429
322
|
* @deprecated Uses workarounds for for recent files and search api issues.
|
|
430
323
|
* Checks if user can toggle **Favorite** state for a node.
|
|
@@ -447,20 +340,7 @@ export const canShowLogout = (context) => !context.withCredentials;
|
|
|
447
340
|
*
|
|
448
341
|
* @param context Rule execution context
|
|
449
342
|
*/
|
|
450
|
-
export const isLibraryManager = (context) =>
|
|
451
|
-
/**
|
|
452
|
-
* Checks if the preview button for search results can be showed
|
|
453
|
-
* JSON ref: `canInfoPreview`
|
|
454
|
-
*
|
|
455
|
-
* @param context Rule execution context
|
|
456
|
-
*/
|
|
457
|
-
export const canInfoPreview = (context) => {
|
|
458
|
-
const isSearchResult = navigation.isSearchResults(context);
|
|
459
|
-
const isNotMultiselect = !isMultiselection(context);
|
|
460
|
-
const isFileSelected = !hasFolderSelected(context);
|
|
461
|
-
const isPreview = !navigation.isPreview(context);
|
|
462
|
-
return isSearchResult && isNotMultiselect && isFileSelected && isPreview;
|
|
463
|
-
};
|
|
343
|
+
export const isLibraryManager = (context) => context.selection.library?.entry.role === 'SiteManager' || isAdmin(context);
|
|
464
344
|
/**
|
|
465
345
|
* Checks if the file can be opened with MS Office
|
|
466
346
|
* JSON ref: `aos.canOpenWithOffice`
|
|
@@ -528,5 +408,5 @@ export const canDisplayKnowledgeRetrievalButton = (context) => context.appConfig
|
|
|
528
408
|
navigation.isSharedFiles(context) ||
|
|
529
409
|
navigation.isRecentFiles(context) ||
|
|
530
410
|
navigation.isFavorites(context) ||
|
|
531
|
-
((navigation.isSearchResults(context) || navigation.isLibraryContent(context)) && navigation.
|
|
532
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9ydWxlcy9zcmMvYXBwLnJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBSUgsT0FBTyxLQUFLLFVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssVUFBVSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdkMsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFVBQVU7SUFDZixJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsVUFBVTtJQUNoQixHQUFHLEVBQUUsVUFBVTtJQUNmLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLEdBQUcsRUFBRSxlQUFlO0lBQ3BCLElBQUksRUFBRSxlQUFlO0lBQ3JCLEdBQUcsRUFBRSxlQUFlO0lBQ3BCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLEdBQUcsRUFBRSxlQUFlO0lBQ3BCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLEdBQUcsRUFBRSxVQUFVO0lBQ2YsR0FBRyxFQUFFLFVBQVU7SUFDZixHQUFHLEVBQUUsVUFBVTtJQUNmLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0NBQ2pCLENBQUM7QUFFRixtQkFBbUI7QUFFbkIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQy9DLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFdkUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFPRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQXVCLEVBQVcsRUFBRTtJQUMxRSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBbUIsd0JBQXdCLENBQUMsQ0FBQztJQUMvRSxPQUFPLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBdUIsRUFBVyxFQUFFLENBQ3BFLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JKOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQzNELENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVoSDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQW9CO0lBQ2pELElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDMUIsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3pHLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFvQjtJQUNwRCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM3RCxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQzVELENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFM0k7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FDcEUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNuRyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUV2SDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVySjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLE9BQW9CO0lBQzNDLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6RixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQW9CO0lBQ3JELElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCw4QkFBOEI7UUFDOUIsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNwRSxNQUFNLEVBQUUsNkJBQTZCO2FBQ3RDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFvQjtJQUNsRCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNwRSxNQUFNLEVBQUUsNkJBQTZCO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0FBRTFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBdUI7SUFDckQsSUFBSSx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0SCxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUU3QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUF1QixFQUFXLEVBQUUsQ0FDbkUsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXJGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBdUI7SUFDL0MsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFvQjtJQUN2RCxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDL0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZJLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUUvRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztBQUVqRzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDbkQsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQztBQUNwRSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFvQjtJQUNqRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUMxQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDakQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFNUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO0FBRTdGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxPQUFvQjtJQUN4RCxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFFckMsSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFvQjtJQUNuRCxJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDL0MsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBb0I7SUFDMUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDckMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU87UUFDTCwrQkFBK0I7UUFDL0IsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDdkYsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQW9CO0lBQ2pELElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssZ0JBQWdCLENBQUM7UUFDNUYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQzdELENBQUMsQ0FBQyxDQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxZQUFZO0lBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxnQkFBZ0IsQ0FDbEYsQ0FBQztBQUVKOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUNwRSxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3hELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBRXJGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXhIOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBb0I7SUFDaEQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDbkMsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3pILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDbkQsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTztRQUNMLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDeEIsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDakMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDO0tBQ3hGLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVoSjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFM0k7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUV4STs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQ25FLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUV0Rzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQ2pFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVoSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQ3JFLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFekc7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FDOUQ7SUFDRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztJQUMxQixxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ2pDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO0NBQ2pELENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5CLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVsSjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQ3BFLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRTFJOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FDcEUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRS9IOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUNqRTtJQUNFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNuRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9JLE9BQU8sQ0FDUjtDQUNGLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5COzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBdUIsRUFBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0FBRTVGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FDaEUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUUvRzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRTtJQUM5RCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxNQUFNLGNBQWMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVqRCxPQUFPLGNBQWMsSUFBSSxnQkFBZ0IsSUFBSSxjQUFjLElBQUksU0FBUyxDQUFDO0FBQzNFLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQXVCO0lBQ3ZELE1BQU0sSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQW1CLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFFdEYsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBRW5DLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDakIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUN2SCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4RCxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDbkQsaURBQWlEO1FBQ2pELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2pELE1BQU0sRUFBRSw2QkFBNkI7YUFDdEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBb0I7SUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQ2xELE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBdUIsRUFBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFdkgsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUF1QixFQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUVuSSxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLE9BQXVCLEVBQVcsRUFBRSxDQUNyRixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUM7SUFDakUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUMvQixDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFJ1bGVDb250ZXh0IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCAqIGFzIG5hdmlnYXRpb24gZnJvbSAnLi9uYXZpZ2F0aW9uLnJ1bGVzJztcbmltcG9ydCAqIGFzIHJlcG9zaXRvcnkgZnJvbSAnLi9yZXBvc2l0b3J5LnJ1bGVzJztcbmltcG9ydCB7IGlzQWRtaW4gfSBmcm9tICcuL3VzZXIucnVsZXMnO1xuXG4vKiBjc3BlbGw6ZGlzYWJsZSAqL1xuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZEV4dGVuc2lvbnMgPSB7XG4gIGRvYzogJ21zLXdvcmQnLFxuICBkb2N4OiAnbXMtd29yZCcsXG4gIGRvY206ICdtcy13b3JkJyxcbiAgZG90OiAnbXMtd29yZCcsXG4gIGRvdHg6ICdtcy13b3JkJyxcbiAgZG90bTogJ21zLXdvcmQnLFxuICBydGY6ICdtcy13b3JkJyxcbiAgeGxzOiAnbXMtZXhjZWwnLFxuICB4bHN4OiAnbXMtZXhjZWwnLFxuICB4bHNiOiAnbXMtZXhjZWwnLFxuICB4bHNtOiAnbXMtZXhjZWwnLFxuICB4bHQ6ICdtcy1leGNlbCcsXG4gIHhsdHg6ICdtcy1leGNlbCcsXG4gIHhsdG06ICdtcy1leGNlbCcsXG4gIHhsYW06ICdtcy1leGNlbCcsXG4gIHBwdDogJ21zLXBvd2VycG9pbnQnLFxuICBwcHR4OiAnbXMtcG93ZXJwb2ludCcsXG4gIHBvdDogJ21zLXBvd2VycG9pbnQnLFxuICBwb3R4OiAnbXMtcG93ZXJwb2ludCcsXG4gIHBvdG06ICdtcy1wb3dlcnBvaW50JyxcbiAgcHB0bTogJ21zLXBvd2VycG9pbnQnLFxuICBwcHM6ICdtcy1wb3dlcnBvaW50JyxcbiAgcHBzeDogJ21zLXBvd2VycG9pbnQnLFxuICBwcGFtOiAnbXMtcG93ZXJwb2ludCcsXG4gIHBwc206ICdtcy1wb3dlcnBvaW50JyxcbiAgc2xkeDogJ21zLXBvd2VycG9pbnQnLFxuICBzbGRtOiAnbXMtcG93ZXJwb2ludCcsXG4gIHZzZDogJ21zLXZpc2lvJyxcbiAgdnNzOiAnbXMtdmlzaW8nLFxuICB2c3Q6ICdtcy12aXNpbycsXG4gIHZzZHg6ICdtcy12aXNpbycsXG4gIHZzZG06ICdtcy12aXNpbycsXG4gIHZzc3g6ICdtcy12aXNpbycsXG4gIHZzc206ICdtcy12aXNpbycsXG4gIHZzdHg6ICdtcy12aXNpbycsXG4gIHZzdG06ICdtcy12aXNpbydcbn07XG5cbi8qIGNzcGVsbDplbmFibGUgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24oZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoZmlsZU5hbWUpIHtcbiAgICBjb25zdCBtYXRjaCA9IGZpbGVOYW1lLnRvTG93ZXJDYXNlKCkubWF0Y2goL1xcLihbXlxcLi9cXD9cXCNdKykoJHxcXD98XFwjKS8pO1xuXG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNhUnVsZUNvbnRleHQgZXh0ZW5kcyBSdWxlQ29udGV4dCB7XG4gIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbjtcbiAgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY29udGVudCBwbHVnaW4gaXMgZW5hYmxlZC5cbiAqIEpTT04gcmVmOiBgYXBwLmlzQ29udGVudFNlcnZpY2VFbmFibGVkYFxuICovXG5leHBvcnQgY29uc3QgaXNDb250ZW50U2VydmljZUVuYWJsZWQgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+IHtcbiAgY29uc3QgZmxhZyA9IGNvbnRleHQuYXBwQ29uZmlnLmdldDxib29sZWFuIHwgc3RyaW5nPigncGx1Z2lucy5jb250ZW50U2VydmljZScpO1xuICByZXR1cm4gZmxhZyA9PT0gdHJ1ZSB8fCBmbGFnID09PSAndHJ1ZSc7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB1cGxvYWQgYWN0aW9uIGlzIHN1cHBvcnRlZCBmb3IgdGhlIGdpdmVuIGNvbnRleHRcbiAqIEpTT04gcmVmOiBgYXBwLmlzVXBsb2FkU3VwcG9ydGVkYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVXBsb2FkU3VwcG9ydGVkID0gKGNvbnRleHQ6IEFjYVJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbaXNDb250ZW50U2VydmljZUVuYWJsZWQoY29udGV4dCksIG5hdmlnYXRpb24uaXNQZXJzb25hbEZpbGVzKGNvbnRleHQpIHx8IG5hdmlnYXRpb24uaXNMaWJyYXJ5Q29udGVudChjb250ZXh0KSwgY2FuVXBsb2FkKGNvbnRleHQpXS5ldmVyeShCb29sZWFuKTtcbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIGNvcHkgc2VsZWN0ZWQgbm9kZS5cbiAqIEpTT04gcmVmOiBgYXBwLmNhbkNvcHlOb2RlYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbkNvcHlOb2RlID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbaGFzU2VsZWN0aW9uKGNvbnRleHQpLCBuYXZpZ2F0aW9uLmlzTm90VHJhc2hjYW4oY29udGV4dCksIG5hdmlnYXRpb24uaXNOb3RMaWJyYXJpZXMoY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiBtYXJrIHNlbGVjdGVkIG5vZGVzIGFzICoqRmF2b3JpdGUqKi5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5jYW5BZGRGYXZvcml0ZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkFkZEZhdm9yaXRlKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGlmIChoYXNTZWxlY3Rpb24oY29udGV4dCkpIHtcbiAgICBpZiAobmF2aWdhdGlvbi5pc0Zhdm9yaXRlcyhjb250ZXh0KSB8fCBuYXZpZ2F0aW9uLmlzTGlicmFyaWVzKGNvbnRleHQpIHx8IG5hdmlnYXRpb24uaXNUcmFzaGNhbihjb250ZXh0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dC5zZWxlY3Rpb24ubm9kZXMuc29tZSgobm9kZSkgPT4gIW5vZGUuZW50cnkuaXNGYXZvcml0ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiB1bi1tYXJrIHNlbGVjdGVkIG5vZGVzIGFzICoqRmF2b3JpdGUqKi5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5jYW5SZW1vdmVGYXZvcml0ZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblJlbW92ZUZhdm9yaXRlKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGlmIChoYXNTZWxlY3Rpb24oY29udGV4dCkgJiYgIW5hdmlnYXRpb24uaXNUcmFzaGNhbihjb250ZXh0KSkge1xuICAgIGlmIChuYXZpZ2F0aW9uLmlzRmF2b3JpdGVzKGNvbnRleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLmV2ZXJ5KChub2RlKSA9PiBub2RlLmVudHJ5LmlzRmF2b3JpdGUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gc2hhcmUgc2VsZWN0ZWQgZmlsZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmNhblNoYXJlYFxuICovXG5leHBvcnQgY29uc3QgY2FuU2hhcmVGaWxlID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbY29udGV4dC5zZWxlY3Rpb24uZmlsZSwgbmF2aWdhdGlvbi5pc05vdFRyYXNoY2FuKGNvbnRleHQpLCByZXBvc2l0b3J5Lmhhc1F1aWNrU2hhcmVFbmFibGVkKGNvbnRleHQpLCAhaXNTaGFyZWQoY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiBwZXJmb3JtIFwiSm9pblwiIG9yIFwiQ2FuY2VsIEpvaW4gUmVxdWVzdFwiIG9uIGEgbGlicmFyeS5cbiAqIEpTT04gcmVmOiBgY2FuVG9nZ2xlSm9pbkxpYnJhcnlgXG4gKi9cbmV4cG9ydCBjb25zdCBjYW5Ub2dnbGVKb2luTGlicmFyeSA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT5cbiAgW2hhc0xpYnJhcnlTZWxlY3RlZChjb250ZXh0KSwgIWlzUHJpdmF0ZUxpYnJhcnkoY29udGV4dCksIGhhc05vTGlicmFyeVJvbGUoY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pIHx8XG4gIFtoYXNMaWJyYXJ5U2VsZWN0ZWQoY29udGV4dCksIGlzUHJpdmF0ZUxpYnJhcnkoY29udGV4dCksIGhhc05vTGlicmFyeVJvbGUoY29udGV4dCksIGlzQWRtaW4oY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiBlZGl0IHRoZSBzZWxlY3RlZCBmb2xkZXIuXG4gKiBKU09OIHJlZjogYGNhbkVkaXRGb2xkZXJgXG4gKlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dFxuICovXG5leHBvcnQgY29uc3QgY2FuRWRpdEZvbGRlciA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gW2NhblVwZGF0ZVNlbGVjdGVkRm9sZGVyKGNvbnRleHQpLCBuYXZpZ2F0aW9uLmlzTm90VHJhc2hjYW4oY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgc2VsZWN0ZWQgZmlsZSBpcyBhbHJlYWR5IHNoYXJlZC5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmlzU2hhcmVkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTaGFyZWQoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgaWYgKG5hdmlnYXRpb24uaXNTaGFyZWRGaWxlcyhjb250ZXh0KSAmJiBjb250ZXh0LnNlbGVjdGlvbi5maWxlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAobmF2aWdhdGlvbi5pc05vdFRyYXNoY2FuKGNvbnRleHQpICYmIGhhc1NlbGVjdGlvbihjb250ZXh0KSAmJiBjb250ZXh0LnNlbGVjdGlvbi5maWxlKSB7XG4gICAgcmV0dXJuICEhY29udGV4dC5zZWxlY3Rpb24uZmlsZS5lbnRyeT8ucHJvcGVydGllcz8uWydxc2hhcmU6c2hhcmVkSWQnXTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gZGVsZXRlIHNlbGVjdGVkIG5vZGVzLlxuICogSlNPTiByZWY6IGBhcHAuc2VsZWN0aW9uLmNhbkRlbGV0ZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkRlbGV0ZVNlbGVjdGlvbihjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAobmF2aWdhdGlvbi5pc05vdFRyYXNoY2FuKGNvbnRleHQpICYmIG5hdmlnYXRpb24uaXNOb3RMaWJyYXJpZXMoY29udGV4dCkgJiYgaGFzU2VsZWN0aW9uKGNvbnRleHQpKSB7XG4gICAgaWYgKGhhc0xvY2tlZEZpbGVzKGNvbnRleHQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gdGVtcCB3b3JrYXJvdW5kIGZvciBGYXZvcml0ZXMgYXBpXG4gICAgaWYgKG5hdmlnYXRpb24uaXNGYXZvcml0ZXMoY29udGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChuYXZpZ2F0aW9uLmlzUHJldmlldyhjb250ZXh0KSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQucGVybWlzc2lvbnMuY2hlY2soY29udGV4dC5zZWxlY3Rpb24ubm9kZXMsIFsnZGVsZXRlJ10pO1xuICAgIH1cblxuICAgIC8vIHdvcmthcm91bmQgZm9yIFNoYXJlZCBGaWxlc1xuICAgIGlmIChuYXZpZ2F0aW9uLmlzU2hhcmVkRmlsZXMoY29udGV4dCkpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnBlcm1pc3Npb25zLmNoZWNrKGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLCBbJ2RlbGV0ZSddLCB7XG4gICAgICAgIHRhcmdldDogJ2FsbG93YWJsZU9wZXJhdGlvbnNPblRhcmdldCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb250ZXh0LnBlcm1pc3Npb25zLmNoZWNrKGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLCBbJ2RlbGV0ZSddKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHVuLXNoYXJlIHNlbGVjdGVkIG5vZGVzLlxuICogSlNPTiByZWY6IGBhcHAuc2VsZWN0aW9uLmNhblVuc2hhcmVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5VbnNoYXJlTm9kZXMoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgaWYgKGhhc1NlbGVjdGlvbihjb250ZXh0KSkge1xuICAgIHJldHVybiBjb250ZXh0LnBlcm1pc3Npb25zLmNoZWNrKGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLCBbJ2RlbGV0ZSddLCB7XG4gICAgICB0YXJnZXQ6ICdhbGxvd2FibGVPcGVyYXRpb25zT25UYXJnZXQnXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIHNlbGVjdGVkIGFueXRoaW5nLlxuICogSlNPTiByZWY6IGBhcHAuc2VsZWN0aW9uLm5vdEVtcHR5YFxuICovXG5leHBvcnQgY29uc3QgaGFzU2VsZWN0aW9uID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhY29udGV4dC5zZWxlY3Rpb24uaXNFbXB0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gY3JlYXRlIGEgbmV3IGZvbGRlciB3aXRoIGN1cnJlbnQgcGF0aC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uZm9sZGVyLmNhbkNyZWF0ZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkNyZWF0ZUZvbGRlcihjb250ZXh0OiBBY2FSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAoaXNDb250ZW50U2VydmljZUVuYWJsZWQoY29udGV4dCkgJiYgKG5hdmlnYXRpb24uaXNQZXJzb25hbEZpbGVzKGNvbnRleHQpIHx8IG5hdmlnYXRpb24uaXNMaWJyYXJ5Q29udGVudChjb250ZXh0KSkpIHtcbiAgICBjb25zdCB7IGN1cnJlbnRGb2xkZXIgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcblxuICAgIGlmIChjdXJyZW50Rm9sZGVyKSB7XG4gICAgICByZXR1cm4gY29udGV4dC5wZXJtaXNzaW9ucy5jaGVjayhjdXJyZW50Rm9sZGVyLCBbJ2NyZWF0ZSddKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiBjcmVhdGUgYSBMaWJyYXJ5XG4gKiBKU09OIHJlZjogYGFwcC5jYW5DcmVhdGVMaWJyYXJ5YFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbkNyZWF0ZUxpYnJhcnkgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+XG4gIFtpc0NvbnRlbnRTZXJ2aWNlRW5hYmxlZChjb250ZXh0KSwgbmF2aWdhdGlvbi5pc0xpYnJhcmllcyhjb250ZXh0KV0uZXZlcnkoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHVwbG9hZCBjb250ZW50IHRvIGN1cnJlbnQgZm9sZGVyLlxuICogSlNPTiByZWY6IGBhcHAubmF2aWdhdGlvbi5mb2xkZXIuY2FuVXBsb2FkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuVXBsb2FkKGNvbnRleHQ6IEFjYVJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIHJldHVybiBjYW5DcmVhdGVGb2xkZXIoY29udGV4dCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIGRvd25sb2FkIHNlbGVjdGVkIG5vZGVzIChlaXRoZXIgZmlsZXMgb3IgZm9sZGVycykuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uY2FuRG93bmxvYWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5Eb3dubG9hZFNlbGVjdGlvbihjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAoaGFzU2VsZWN0aW9uKGNvbnRleHQpICYmIG5hdmlnYXRpb24uaXNOb3RUcmFzaGNhbihjb250ZXh0KSkge1xuICAgIHJldHVybiBjb250ZXh0LnNlbGVjdGlvbi5ub2Rlcy5ldmVyeSgobm9kZTogYW55KSA9PiBub2RlLmVudHJ5ICYmIChub2RlLmVudHJ5LmlzRmlsZSB8fCBub2RlLmVudHJ5LmlzRm9sZGVyIHx8ICEhbm9kZS5lbnRyeS5ub2RlSWQpKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgaGFzIHNlbGVjdGVkIGEgZm9sZGVyLlxuICogSlNPTiByZWY6IGBhcHAuc2VsZWN0aW9uLmZvbGRlcmBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0ZvbGRlclNlbGVjdGVkID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhIWNvbnRleHQuc2VsZWN0aW9uLmZvbGRlcjtcblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBoYXMgc2VsZWN0ZWQgYSBsaWJyYXJ5IChzaXRlKS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5saWJyYXJ5YFxuICovXG5leHBvcnQgY29uc3QgaGFzTGlicmFyeVNlbGVjdGVkID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhIWNvbnRleHQuc2VsZWN0aW9uLmxpYnJhcnk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgaGFzIHNlbGVjdGVkIGEgKipwcml2YXRlKiogbGlicmFyeSAoc2l0ZSlcbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5pc1ByaXZhdGVMaWJyYXJ5YFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcml2YXRlTGlicmFyeShjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY29udGV4dC5zZWxlY3Rpb24ubGlicmFyeT8uZW50cnk/LnZpc2liaWxpdHkgPT09ICdQUklWQVRFJztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHNlbGVjdGVkIGxpYnJhcnkgaGFzIGEgKipyb2xlKiogcHJvcGVydHkgZGVmaW5lZC5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5oYXNMaWJyYXJ5Um9sZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0xpYnJhcnlSb2xlKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IGxpYnJhcnkgPSBjb250ZXh0LnNlbGVjdGlvbi5saWJyYXJ5O1xuICByZXR1cm4gbGlicmFyeSA/ICEhbGlicmFyeS5lbnRyeT8ucm9sZSA6IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgc2VsZWN0ZWQgbGlicmFyeSBoYXMgbm8gKipyb2xlKiogcHJvcGVydHkgZGVmaW5lZC5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5oYXNOb0xpYnJhcnlSb2xlYFxuICovXG5leHBvcnQgY29uc3QgaGFzTm9MaWJyYXJ5Um9sZSA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gIWhhc0xpYnJhcnlSb2xlKGNvbnRleHQpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGhhcyBzZWxlY3RlZCBhIGZpbGUuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZWBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0ZpbGVTZWxlY3RlZCA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gISFjb250ZXh0Py5zZWxlY3Rpb24/LmZpbGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHVwZGF0ZSB0aGUgZmlyc3Qgc2VsZWN0ZWQgbm9kZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maXJzdC5jYW5VcGRhdGVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5VcGRhdGVTZWxlY3RlZE5vZGUoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgaWYgKGNvbnRleHQuc2VsZWN0aW9uICYmIGhhc1NlbGVjdGlvbihjb250ZXh0KSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb250ZXh0LnNlbGVjdGlvbi5maXJzdDtcblxuICAgIGlmIChub2RlPy5lbnRyeS5pc0ZpbGUgJiYgaGFzTG9ja2VkRmlsZXMoY29udGV4dCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dC5wZXJtaXNzaW9ucy5jaGVjayhub2RlLCBbJ3VwZGF0ZSddKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc011bHRpc2VsZWN0aW9uKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGxldCBpc011bHRpTm9kZVNlbGVjdGVkID0gZmFsc2U7XG4gIGlmIChjb250ZXh0LnNlbGVjdGlvbiAmJiBoYXNTZWxlY3Rpb24oY29udGV4dCkpIHtcbiAgICBpc011bHRpTm9kZVNlbGVjdGVkID0gY29udGV4dC5zZWxlY3Rpb24uY291bnQgPiAxO1xuICB9XG4gIHJldHVybiBpc011bHRpTm9kZVNlbGVjdGVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiB1cGRhdGUgdGhlIGZpcnN0IHNlbGVjdGVkIGZvbGRlci5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5mb2xkZXIuY2FuVXBkYXRlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuVXBkYXRlU2VsZWN0ZWRGb2xkZXIoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyBmb2xkZXIgfSA9IGNvbnRleHQuc2VsZWN0aW9uO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIEZhdm9yaXRlcyBBcGlcbiAgICAgIG5hdmlnYXRpb24uaXNGYXZvcml0ZXMoY29udGV4dCkgfHwgY29udGV4dC5wZXJtaXNzaW9ucy5jaGVjayhmb2xkZXIuZW50cnksIFsndXBkYXRlJ10pXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgaGFzIHNlbGVjdGVkIGEgKipsb2NrZWQqKiBmaWxlIG5vZGUuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZS5pc0xvY2tlZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0xvY2tlZEZpbGVzKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGlmIChjb250ZXh0Py5zZWxlY3Rpb24/Lm5vZGVzKSB7XG4gICAgcmV0dXJuIGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLnNvbWUoKG5vZGUpID0+IHtcbiAgICAgIGlmICghbm9kZS5lbnRyeS5pc0ZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZS5lbnRyeS5pc0xvY2tlZCB8fCBub2RlLmVudHJ5LnByb3BlcnRpZXM/LlsnY206bG9ja1R5cGUnXSA9PT0gJ1JFQURfT05MWV9MT0NLJztcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHNlbGVjdGVkIGZpbGUgaGFzICoqd3JpdGUqKiBvciAqKnJlYWQtb25seSoqIGxvY2tzIHNwZWNpZmllZC5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmlzTG9ja2VkYFxuICovXG5leHBvcnQgY29uc3QgaXNXcml0ZUxvY2tlZCA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT5cbiAgISEoXG4gICAgY29udGV4dD8uc2VsZWN0aW9uPy5maWxlPy5lbnRyeT8ucHJvcGVydGllcz8uWydjbTpsb2NrVHlwZSddID09PSAnV1JJVEVfTE9DSycgfHxcbiAgICBjb250ZXh0Py5zZWxlY3Rpb24/LmZpbGU/LmVudHJ5Py5wcm9wZXJ0aWVzPy5bJ2NtOmxvY2tUeXBlJ10gPT09ICdSRUFEX09OTFlfTE9DSydcbiAgKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHNlbGVjdGVkIGZpbGUgaGFzICoqd3JpdGUqKiBvciAqKnJlYWQtb25seSoqIGxvY2tzIHNwZWNpZmllZCxcbiAqIGFuZCB0aGF0IGN1cnJlbnQgdXNlciBpcyB0aGUgb3duZXIgb2YgdGhlIGxvY2suXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZS5pc0xvY2tPd25lcmBcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVXNlcldyaXRlTG9ja093bmVyID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBpc1dyaXRlTG9ja2VkKGNvbnRleHQpICYmXG4gIGNvbnRleHQuc2VsZWN0aW9uLmZpbGU/LmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tPd25lciddICYmXG4gIGNvbnRleHQuc2VsZWN0aW9uLmZpbGU/LmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tPd25lciddLmlkID09PSBjb250ZXh0LnByb2ZpbGUuaWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIGxvY2sgc2VsZWN0ZWQgZmlsZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmNhbkxvY2tgXG4gKi9cbmV4cG9ydCBjb25zdCBjYW5Mb2NrRmlsZSA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gIWlzV3JpdGVMb2NrZWQoY29udGV4dCkgJiYgY2FuVXBkYXRlU2VsZWN0ZWROb2RlKGNvbnRleHQpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiB1bmxvY2sgc2VsZWN0ZWQgZmlsZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmNhblVubG9ja2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblVubG9ja0ZpbGUoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyBmaWxlIH0gPSBjb250ZXh0LnNlbGVjdGlvbjtcbiAgcmV0dXJuIGlzV3JpdGVMb2NrZWQoY29udGV4dCkgJiYgKGNvbnRleHQucGVybWlzc2lvbnMuY2hlY2soZmlsZT8uZW50cnksIFsnZGVsZXRlJ10pIHx8IGlzVXNlcldyaXRlTG9ja093bmVyKGNvbnRleHQpKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gdXBsb2FkIGEgbmV3IHZlcnNpb24gb2YgdGhlIGZpbGUuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZS5jYW5VcGxvYWRWZXJzaW9uYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuVXBsb2FkVmVyc2lvbihjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAobmF2aWdhdGlvbi5pc0Zhdm9yaXRlcyhjb250ZXh0KSB8fCBuYXZpZ2F0aW9uLmlzU2hhcmVkRmlsZXMoY29udGV4dCkpIHtcbiAgICByZXR1cm4gaGFzRmlsZVNlbGVjdGVkKGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBoYXNGaWxlU2VsZWN0ZWQoY29udGV4dCksXG4gICAgbmF2aWdhdGlvbi5pc05vdFRyYXNoY2FuKGNvbnRleHQpLFxuICAgIGlzV3JpdGVMb2NrZWQoY29udGV4dCkgPyBpc1VzZXJXcml0ZUxvY2tPd25lcihjb250ZXh0KSA6IGNhblVwZGF0ZVNlbGVjdGVkTm9kZShjb250ZXh0KVxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGhhcyB0cmFzaGNhbiBpdGVtIHNlbGVjdGVkLlxuICogSlNPTiByZWY6IGBpc1RyYXNoY2FuSXRlbVNlbGVjdGVkYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVHJhc2hjYW5JdGVtU2VsZWN0ZWQgPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+IFtuYXZpZ2F0aW9uLmlzVHJhc2hjYW4oY29udGV4dCksIGhhc1NlbGVjdGlvbihjb250ZXh0KV0uZXZlcnkoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHZpZXcgdGhlIGZpbGUuXG4gKiBKU09OIHJlZjogYGNhblZpZXdGaWxlYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhblZpZXdGaWxlID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiBbaGFzRmlsZVNlbGVjdGVkKGNvbnRleHQpLCBuYXZpZ2F0aW9uLmlzTm90VHJhc2hjYW4oY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiAqKkxlYXZlKiogc2VsZWN0ZWQgbGlicmFyeS5cbiAqIEpTT04gcmVmOiBgY2FuTGVhdmVMaWJyYXJ5YFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbkxlYXZlTGlicmFyeSA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gW2hhc0xpYnJhcnlTZWxlY3RlZChjb250ZXh0KSwgaGFzTGlicmFyeVJvbGUoY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiB0b2dnbGUgc2hhcmVkIGxpbmsgbW9kZS5cbiAqIEpTT04gcmVmOiBgY2FuVG9nZ2xlU2hhcmVkTGlua2BcbiAqXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0XG4gKi9cbmV4cG9ydCBjb25zdCBjYW5Ub2dnbGVTaGFyZWRMaW5rID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbaGFzRmlsZVNlbGVjdGVkKGNvbnRleHQpLCBbY2FuU2hhcmVGaWxlKGNvbnRleHQpLCBpc1NoYXJlZChjb250ZXh0KV0uc29tZShCb29sZWFuKV0uZXZlcnkoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHNob3cgKipJbmZvIERyYXdlcioqIGZvciB0aGUgc2VsZWN0ZWQgbm9kZS5cbiAqIEpTT04gcmVmOiBgY2FuU2hvd0luZm9EcmF3ZXJgXG4gKlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dFxuICovXG5leHBvcnQgY29uc3QgY2FuU2hvd0luZm9EcmF3ZXIgPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+XG4gIFtoYXNTZWxlY3Rpb24oY29udGV4dCksIG5hdmlnYXRpb24uaXNOb3RMaWJyYXJpZXMoY29udGV4dCksIG5hdmlnYXRpb24uaXNOb3RUcmFzaGNhbihjb250ZXh0KV0uZXZlcnkoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIG1hbmFnZSBmaWxlIHZlcnNpb25zIGZvciB0aGUgc2VsZWN0ZWQgbm9kZS5cbiAqIEpTT04gcmVmOiBgY2FuTWFuYWdlRmlsZVZlcnNpb25zYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbk1hbmFnZUZpbGVWZXJzaW9ucyA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT5cbiAgW2hhc0ZpbGVTZWxlY3RlZChjb250ZXh0KSwgbmF2aWdhdGlvbi5pc05vdFRyYXNoY2FuKGNvbnRleHQpLCAhaGFzTG9ja2VkRmlsZXMoY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiBlZGl0IGFzcGVjdHMgZm9yIHRoZSBzZWxlY3RlZCBub2RlLlxuICogSlNPTiByZWY6IGBjYW5FZGl0QXNwZWN0c2BcbiAqXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0XG4gKi9cbmV4cG9ydCBjb25zdCBjYW5FZGl0QXNwZWN0cyA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT5cbiAgW1xuICAgICFpc011bHRpc2VsZWN0aW9uKGNvbnRleHQpLFxuICAgIGNhblVwZGF0ZVNlbGVjdGVkTm9kZShjb250ZXh0KSxcbiAgICAhaXNXcml0ZUxvY2tlZChjb250ZXh0KSxcbiAgICBuYXZpZ2F0aW9uLmlzTm90VHJhc2hjYW4oY29udGV4dCksXG4gICAgcmVwb3NpdG9yeS5pc01ham9yVmVyc2lvbkF2YWlsYWJsZShjb250ZXh0LCAnNycpXG4gIF0uZXZlcnkoQm9vbGVhbik7XG5cbmV4cG9ydCBjb25zdCBjYW5TaG93RXhwYW5kID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiBbIW5hdmlnYXRpb24uaXNMaWJyYXJpZXMoY29udGV4dCksICFuYXZpZ2F0aW9uLmlzRGV0YWlscyhjb250ZXh0KV0uZXZlcnkoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIG1hbmFnZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlbGVjdGVkIG5vZGUuXG4gKiBKU09OIHJlZjogYGNhbk1hbmFnZVBlcm1pc3Npb25zYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbk1hbmFnZVBlcm1pc3Npb25zID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbY2FuVXBkYXRlU2VsZWN0ZWROb2RlKGNvbnRleHQpLCBuYXZpZ2F0aW9uLmlzTm90VHJhc2hjYW4oY29udGV4dCksICFpc1NtYXJ0Rm9sZGVyKGNvbnRleHQpLCAhaXNNdWx0aXNlbGVjdGlvbihjb250ZXh0KV0uZXZlcnkoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHRvZ2dsZSAqKkVkaXQgT2ZmbGluZSoqIG1vZGUgZm9yIHNlbGVjdGVkIG5vZGUuXG4gKiBKU09OIHJlZjogYGNhblRvZ2dsZUVkaXRPZmZsaW5lYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhblRvZ2dsZUVkaXRPZmZsaW5lID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbaGFzRmlsZVNlbGVjdGVkKGNvbnRleHQpLCBuYXZpZ2F0aW9uLmlzTm90VHJhc2hjYW4oY29udGV4dCksIGNhbkxvY2tGaWxlKGNvbnRleHQpIHx8IGNhblVubG9ja0ZpbGUoY29udGV4dCldLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZXMgd29ya2Fyb3VuZHMgZm9yIGZvciByZWNlbnQgZmlsZXMgYW5kIHNlYXJjaCBhcGkgaXNzdWVzLlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHRvZ2dsZSAqKkZhdm9yaXRlKiogc3RhdGUgZm9yIGEgbm9kZS5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhblRvZ2dsZUZhdm9yaXRlID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbXG4gICAgW2NhbkFkZEZhdm9yaXRlKGNvbnRleHQpLCBjYW5SZW1vdmVGYXZvcml0ZShjb250ZXh0KV0uc29tZShCb29sZWFuKSxcbiAgICBbbmF2aWdhdGlvbi5pc1JlY2VudEZpbGVzKGNvbnRleHQpLCBuYXZpZ2F0aW9uLmlzU2hhcmVkRmlsZXMoY29udGV4dCksIG5hdmlnYXRpb24uaXNTZWFyY2hSZXN1bHRzKGNvbnRleHQpLCBuYXZpZ2F0aW9uLmlzRmF2b3JpdGVzKGNvbnRleHQpXS5zb21lKFxuICAgICAgQm9vbGVhblxuICAgIClcbiAgXS5ldmVyeShCb29sZWFuKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYXBwbGljYXRpb24gc2hvdWxkIHJlbmRlciBsb2dvdXQgb3B0aW9uLlxuICogSlNPTiByZWY6IGBjYW5TaG93TG9nb3V0YFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhblNob3dMb2dvdXQgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+ICFjb250ZXh0LndpdGhDcmVkZW50aWFscztcblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBpcyBsaWJyYXJ5IG1hbmFnZXJcbiAqIEpTT04gcmVmOiBgaXNMaWJyYXJ5TWFuYWdlcmBcbiAqXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0XG4gKi9cbmV4cG9ydCBjb25zdCBpc0xpYnJhcnlNYW5hZ2VyID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBoYXNMaWJyYXJ5U2VsZWN0ZWQoY29udGV4dCkgJiYgKGNvbnRleHQuc2VsZWN0aW9uLmxpYnJhcnk/LmVudHJ5LnJvbGUgPT09ICdTaXRlTWFuYWdlcicgfHwgaXNBZG1pbihjb250ZXh0KSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBwcmV2aWV3IGJ1dHRvbiBmb3Igc2VhcmNoIHJlc3VsdHMgY2FuIGJlIHNob3dlZFxuICogSlNPTiByZWY6IGBjYW5JbmZvUHJldmlld2BcbiAqXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0XG4gKi9cbmV4cG9ydCBjb25zdCBjYW5JbmZvUHJldmlldyA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBpc1NlYXJjaFJlc3VsdCA9IG5hdmlnYXRpb24uaXNTZWFyY2hSZXN1bHRzKGNvbnRleHQpO1xuICBjb25zdCBpc05vdE11bHRpc2VsZWN0ID0gIWlzTXVsdGlzZWxlY3Rpb24oY29udGV4dCk7XG4gIGNvbnN0IGlzRmlsZVNlbGVjdGVkID0gIWhhc0ZvbGRlclNlbGVjdGVkKGNvbnRleHQpO1xuICBjb25zdCBpc1ByZXZpZXcgPSAhbmF2aWdhdGlvbi5pc1ByZXZpZXcoY29udGV4dCk7XG5cbiAgcmV0dXJuIGlzU2VhcmNoUmVzdWx0ICYmIGlzTm90TXVsdGlzZWxlY3QgJiYgaXNGaWxlU2VsZWN0ZWQgJiYgaXNQcmV2aWV3O1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGZpbGUgY2FuIGJlIG9wZW5lZCB3aXRoIE1TIE9mZmljZVxuICogSlNPTiByZWY6IGBhb3MuY2FuT3BlbldpdGhPZmZpY2VgXG4gKlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuT3BlbldpdGhPZmZpY2UoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgZmxhZyA9IGAke2NvbnRleHQuYXBwQ29uZmlnLmdldDxib29sZWFuIHwgc3RyaW5nPigncGx1Z2lucy5hb3NQbHVnaW4nLCBmYWxzZSl9YDtcblxuICBpZiAoZmxhZyAhPT0gJ3RydWUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGNvbnRleHQubmF2aWdhdGlvbj8udXJsPy5zdGFydHNXaXRoKCcvdHJhc2hjYW4nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghY29udGV4dD8uc2VsZWN0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgeyBmaWxlIH0gPSBjb250ZXh0LnNlbGVjdGlvbjtcblxuICBpZiAoIWZpbGU/LmVudHJ5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZXh0ZW5zaW9uID0gZ2V0RmlsZUV4dGVuc2lvbihmaWxlLmVudHJ5Lm5hbWUpO1xuICBpZiAoIWV4dGVuc2lvbiB8fCAhc3VwcG9ydGVkRXh0ZW5zaW9uc1tleHRlbnNpb25dKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFmaWxlLmVudHJ5LnByb3BlcnRpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoZmlsZS5lbnRyeS5pc0xvY2tlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChmaWxlLmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tUeXBlJ10gPT09ICdXUklURV9MT0NLJyB8fCBmaWxlLmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tUeXBlJ10gPT09ICdSRUFEX09OTFlfTE9DSycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsb2NrT3duZXIgPSBmaWxlLmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tPd25lciddO1xuICBpZiAobG9ja093bmVyICYmIGxvY2tPd25lci5pZCAhPT0gY29udGV4dC5wcm9maWxlLmlkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gd29ya2Fyb3VuZCBmb3IgU2hhcmVkIGZpbGVzXG4gIGlmIChjb250ZXh0Lm5hdmlnYXRpb24/LnVybD8uc3RhcnRzV2l0aCgnL3NoYXJlZCcpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgIGlmIChmaWxlLmVudHJ5Lmhhc093blByb3BlcnR5KCdhbGxvd2FibGVPcGVyYXRpb25zT25UYXJnZXQnKSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQucGVybWlzc2lvbnMuY2hlY2soZmlsZSwgWyd1cGRhdGUnXSwge1xuICAgICAgICB0YXJnZXQ6ICdhbGxvd2FibGVPcGVyYXRpb25zT25UYXJnZXQnXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29udGV4dC5wZXJtaXNzaW9ucy5jaGVjayhmaWxlLCBbJ3VwZGF0ZSddKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU21hcnRGb2xkZXIoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgaWYgKCFjb250ZXh0LnNlbGVjdGlvbj8uaXNFbXB0eSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb250ZXh0LnNlbGVjdGlvbi5maXJzdDtcbiAgICBpZiAoIW5vZGU/LmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG5vZGVBc3BlY3RzID0gbm9kZS5lbnRyeT8uYXNwZWN0TmFtZXMgPz8gW107XG4gICAgcmV0dXJuIG5vZGVBc3BlY3RzLmluY2x1ZGVzKCdzbWY6Y3VzdG9tQ29uZmlnU21hcnRGb2xkZXInKSB8fCBub2RlQXNwZWN0cy5pbmNsdWRlcygnc21mOnN5c3RlbUNvbmZpZ1NtYXJ0Rm9sZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgYXJlVGFnc0VuYWJsZWQgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+IGNvbnRleHQuYXBwQ29uZmlnLmdldCgncGx1Z2lucy50YWdzRW5hYmxlZCcsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgYXJlQ2F0ZWdvcmllc0VuYWJsZWQgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+IGNvbnRleHQuYXBwQ29uZmlnLmdldCgncGx1Z2lucy5jYXRlZ29yaWVzRW5hYmxlZCcsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgY2FuRGlzcGxheUtub3dsZWRnZVJldHJpZXZhbEJ1dHRvbiA9IChjb250ZXh0OiBBY2FSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT5cbiAgY29udGV4dC5hcHBDb25maWcuZ2V0KCdwbHVnaW5zLmtub3dsZWRnZVJldHJpZXZhbEVuYWJsZWQnLCBmYWxzZSkgJiZcbiAgKG5hdmlnYXRpb24uaXNQZXJzb25hbEZpbGVzKGNvbnRleHQpIHx8XG4gICAgbmF2aWdhdGlvbi5pc1NoYXJlZEZpbGVzKGNvbnRleHQpIHx8XG4gICAgbmF2aWdhdGlvbi5pc1JlY2VudEZpbGVzKGNvbnRleHQpIHx8XG4gICAgbmF2aWdhdGlvbi5pc0Zhdm9yaXRlcyhjb250ZXh0KSB8fFxuICAgICgobmF2aWdhdGlvbi5pc1NlYXJjaFJlc3VsdHMoY29udGV4dCkgfHwgbmF2aWdhdGlvbi5pc0xpYnJhcnlDb250ZW50KGNvbnRleHQpKSAmJiBuYXZpZ2F0aW9uLmlzTm90TGlicmFyaWVzKGNvbnRleHQpKSk7XG4iXX0=
|
|
411
|
+
((navigation.isSearchResults(context) || navigation.isLibraryContent(context)) && !navigation.isLibraries(context)));
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9ydWxlcy9zcmMvYXBwLnJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBSUgsT0FBTyxLQUFLLFVBQVUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssVUFBVSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdkMsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLEdBQUcsRUFBRSxTQUFTO0lBQ2QsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFVBQVU7SUFDZixJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsVUFBVTtJQUNoQixJQUFJLEVBQUUsVUFBVTtJQUNoQixHQUFHLEVBQUUsVUFBVTtJQUNmLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLEdBQUcsRUFBRSxlQUFlO0lBQ3BCLElBQUksRUFBRSxlQUFlO0lBQ3JCLEdBQUcsRUFBRSxlQUFlO0lBQ3BCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLEdBQUcsRUFBRSxlQUFlO0lBQ3BCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxlQUFlO0lBQ3JCLEdBQUcsRUFBRSxVQUFVO0lBQ2YsR0FBRyxFQUFFLFVBQVU7SUFDZixHQUFHLEVBQUUsVUFBVTtJQUNmLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0lBQ2hCLElBQUksRUFBRSxVQUFVO0NBQ2pCLENBQUM7QUFFRixtQkFBbUI7QUFFbkIsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQy9DLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFdkUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFPRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQXVCLEVBQVcsRUFBRTtJQUMxRSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBbUIsd0JBQXdCLENBQUMsQ0FBQztJQUMvRSxPQUFPLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQW9CO0lBQ2pELElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6RyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsT0FBb0I7SUFDcEQsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUM1RCxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFekk7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FDcEUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUU3Rjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5KOzs7R0FHRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsT0FBb0I7SUFDM0MsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkYsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFvQjtJQUNyRCxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNwRSxNQUFNLEVBQUUsNkJBQTZCO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztBQUUxRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQXVCO0lBQ3JELElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNoRixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUU3QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFvQjtJQUN2RCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkksQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBRS9GOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0FBRWpHOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFvQjtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEtBQUssU0FBUyxDQUFDO0FBQ3BFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQW9CO0lBQ2pELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQzFDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO0FBRTdGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxPQUFvQjtJQUN4RCxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFFckMsSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFvQjtJQUNuRCxJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNoQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDL0MsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBb0I7SUFDMUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDckMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU87UUFDTCwrQkFBK0I7UUFDL0IsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDdkYsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQW9CO0lBQ2pELElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5QixPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssZ0JBQWdCLENBQUM7UUFDNUYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQzdELENBQUMsQ0FBQyxDQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxZQUFZO0lBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxnQkFBZ0IsQ0FDbEYsQ0FBQztBQUVKOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUNwRSxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3hELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBRXJGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXhIOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBb0I7SUFDaEQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDbkMsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3pILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDbkQsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxPQUFPLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTztRQUNMLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUMvQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7S0FDeEYsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFL0g7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FDOUQ7SUFDRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztJQUMxQixxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFDOUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDL0IsVUFBVSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7Q0FDakQsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFbkIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFvQixFQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFbkk7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQ2pFO0lBQ0UsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ25FLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0ksT0FBTyxDQUNSO0NBQ0YsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFbkI7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUF1QixFQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7QUFFNUY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUUvSTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUF1QjtJQUN2RCxNQUFNLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFtQixtQkFBbUIsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBRXRGLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDckQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDbEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDM0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLGdCQUFnQixFQUFFLENBQUM7UUFDdkgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEQsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3JELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ25ELGlEQUFpRDtRQUNqRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUFDLEVBQUUsQ0FBQztZQUM3RCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNqRCxNQUFNLEVBQUUsNkJBQTZCO2FBQ3RDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQW9CO0lBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUNsRCxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQXVCLEVBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXZILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBdUIsRUFBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFbkksTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBQyxPQUF1QixFQUFXLEVBQUUsQ0FDckYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDO0lBQ2pFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDbEMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDakMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDakMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDL0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IFJ1bGVDb250ZXh0IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCAqIGFzIG5hdmlnYXRpb24gZnJvbSAnLi9uYXZpZ2F0aW9uLnJ1bGVzJztcbmltcG9ydCAqIGFzIHJlcG9zaXRvcnkgZnJvbSAnLi9yZXBvc2l0b3J5LnJ1bGVzJztcbmltcG9ydCB7IGlzQWRtaW4gfSBmcm9tICcuL3VzZXIucnVsZXMnO1xuXG4vKiBjc3BlbGw6ZGlzYWJsZSAqL1xuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZEV4dGVuc2lvbnMgPSB7XG4gIGRvYzogJ21zLXdvcmQnLFxuICBkb2N4OiAnbXMtd29yZCcsXG4gIGRvY206ICdtcy13b3JkJyxcbiAgZG90OiAnbXMtd29yZCcsXG4gIGRvdHg6ICdtcy13b3JkJyxcbiAgZG90bTogJ21zLXdvcmQnLFxuICBydGY6ICdtcy13b3JkJyxcbiAgeGxzOiAnbXMtZXhjZWwnLFxuICB4bHN4OiAnbXMtZXhjZWwnLFxuICB4bHNiOiAnbXMtZXhjZWwnLFxuICB4bHNtOiAnbXMtZXhjZWwnLFxuICB4bHQ6ICdtcy1leGNlbCcsXG4gIHhsdHg6ICdtcy1leGNlbCcsXG4gIHhsdG06ICdtcy1leGNlbCcsXG4gIHhsYW06ICdtcy1leGNlbCcsXG4gIHBwdDogJ21zLXBvd2VycG9pbnQnLFxuICBwcHR4OiAnbXMtcG93ZXJwb2ludCcsXG4gIHBvdDogJ21zLXBvd2VycG9pbnQnLFxuICBwb3R4OiAnbXMtcG93ZXJwb2ludCcsXG4gIHBvdG06ICdtcy1wb3dlcnBvaW50JyxcbiAgcHB0bTogJ21zLXBvd2VycG9pbnQnLFxuICBwcHM6ICdtcy1wb3dlcnBvaW50JyxcbiAgcHBzeDogJ21zLXBvd2VycG9pbnQnLFxuICBwcGFtOiAnbXMtcG93ZXJwb2ludCcsXG4gIHBwc206ICdtcy1wb3dlcnBvaW50JyxcbiAgc2xkeDogJ21zLXBvd2VycG9pbnQnLFxuICBzbGRtOiAnbXMtcG93ZXJwb2ludCcsXG4gIHZzZDogJ21zLXZpc2lvJyxcbiAgdnNzOiAnbXMtdmlzaW8nLFxuICB2c3Q6ICdtcy12aXNpbycsXG4gIHZzZHg6ICdtcy12aXNpbycsXG4gIHZzZG06ICdtcy12aXNpbycsXG4gIHZzc3g6ICdtcy12aXNpbycsXG4gIHZzc206ICdtcy12aXNpbycsXG4gIHZzdHg6ICdtcy12aXNpbycsXG4gIHZzdG06ICdtcy12aXNpbydcbn07XG5cbi8qIGNzcGVsbDplbmFibGUgKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24oZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoZmlsZU5hbWUpIHtcbiAgICBjb25zdCBtYXRjaCA9IGZpbGVOYW1lLnRvTG93ZXJDYXNlKCkubWF0Y2goL1xcLihbXlxcLi9cXD9cXCNdKykoJHxcXD98XFwjKS8pO1xuXG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNhUnVsZUNvbnRleHQgZXh0ZW5kcyBSdWxlQ29udGV4dCB7XG4gIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbjtcbiAgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgY29udGVudCBwbHVnaW4gaXMgZW5hYmxlZC5cbiAqIEpTT04gcmVmOiBgYXBwLmlzQ29udGVudFNlcnZpY2VFbmFibGVkYFxuICovXG5leHBvcnQgY29uc3QgaXNDb250ZW50U2VydmljZUVuYWJsZWQgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+IHtcbiAgY29uc3QgZmxhZyA9IGNvbnRleHQuYXBwQ29uZmlnLmdldDxib29sZWFuIHwgc3RyaW5nPigncGx1Z2lucy5jb250ZW50U2VydmljZScpO1xuICByZXR1cm4gZmxhZyA9PT0gdHJ1ZSB8fCBmbGFnID09PSAndHJ1ZSc7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiBtYXJrIHNlbGVjdGVkIG5vZGVzIGFzICoqRmF2b3JpdGUqKi5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5jYW5BZGRGYXZvcml0ZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkFkZEZhdm9yaXRlKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGlmIChuYXZpZ2F0aW9uLmlzRmF2b3JpdGVzKGNvbnRleHQpIHx8IG5hdmlnYXRpb24uaXNMaWJyYXJpZXMoY29udGV4dCkgfHwgbmF2aWdhdGlvbi5pc1RyYXNoY2FuKGNvbnRleHQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBjb250ZXh0LnNlbGVjdGlvbi5ub2Rlcy5zb21lKChub2RlKSA9PiAhbm9kZS5lbnRyeS5pc0Zhdm9yaXRlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gdW4tbWFyayBzZWxlY3RlZCBub2RlcyBhcyAqKkZhdm9yaXRlKiouXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uY2FuUmVtb3ZlRmF2b3JpdGVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5SZW1vdmVGYXZvcml0ZShjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAobmF2aWdhdGlvbi5pc0Zhdm9yaXRlcyhjb250ZXh0KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBjb250ZXh0LnNlbGVjdGlvbi5ub2Rlcy5ldmVyeSgobm9kZSkgPT4gbm9kZS5lbnRyeS5pc0Zhdm9yaXRlKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gc2hhcmUgc2VsZWN0ZWQgZmlsZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmNhblNoYXJlYFxuICovXG5leHBvcnQgY29uc3QgY2FuU2hhcmVGaWxlID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbY29udGV4dC5zZWxlY3Rpb24uZmlsZSwgIW5hdmlnYXRpb24uaXNUcmFzaGNhbihjb250ZXh0KSwgcmVwb3NpdG9yeS5oYXNRdWlja1NoYXJlRW5hYmxlZChjb250ZXh0KSwgIWlzU2hhcmVkKGNvbnRleHQpXS5ldmVyeShCb29sZWFuKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gcGVyZm9ybSBcIkpvaW5cIiBvciBcIkNhbmNlbCBKb2luIFJlcXVlc3RcIiBvbiBhIGxpYnJhcnkuXG4gKiBKU09OIHJlZjogYGNhblRvZ2dsZUpvaW5MaWJyYXJ5YFxuICovXG5leHBvcnQgY29uc3QgY2FuVG9nZ2xlSm9pbkxpYnJhcnkgPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+XG4gICFpc1ByaXZhdGVMaWJyYXJ5KGNvbnRleHQpIHx8IFtpc1ByaXZhdGVMaWJyYXJ5KGNvbnRleHQpLCBpc0FkbWluKGNvbnRleHQpXS5ldmVyeShCb29sZWFuKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gZWRpdCB0aGUgc2VsZWN0ZWQgZm9sZGVyLlxuICogSlNPTiByZWY6IGBjYW5FZGl0Rm9sZGVyYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbkVkaXRGb2xkZXIgPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+IFtjYW5VcGRhdGVTZWxlY3RlZEZvbGRlcihjb250ZXh0KSwgIW5hdmlnYXRpb24uaXNUcmFzaGNhbihjb250ZXh0KV0uZXZlcnkoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzZWxlY3RlZCBmaWxlIGlzIGFscmVhZHkgc2hhcmVkLlxuICogSlNPTiByZWY6IGBhcHAuc2VsZWN0aW9uLmZpbGUuaXNTaGFyZWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAobmF2aWdhdGlvbi5pc1NoYXJlZEZpbGVzKGNvbnRleHQpICYmIGNvbnRleHQuc2VsZWN0aW9uLmZpbGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghbmF2aWdhdGlvbi5pc1RyYXNoY2FuKGNvbnRleHQpICYmIGhhc1NlbGVjdGlvbihjb250ZXh0KSAmJiBjb250ZXh0LnNlbGVjdGlvbi5maWxlKSB7XG4gICAgcmV0dXJuICEhY29udGV4dC5zZWxlY3Rpb24uZmlsZS5lbnRyeT8ucHJvcGVydGllcz8uWydxc2hhcmU6c2hhcmVkSWQnXTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gZGVsZXRlIHNlbGVjdGVkIG5vZGVzLlxuICogSlNPTiByZWY6IGBhcHAuc2VsZWN0aW9uLmNhbkRlbGV0ZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbkRlbGV0ZVNlbGVjdGlvbihjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAoaGFzTG9ja2VkRmlsZXMoY29udGV4dCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyB0ZW1wIHdvcmthcm91bmQgZm9yIEZhdm9yaXRlcyBhcGlcbiAgaWYgKG5hdmlnYXRpb24uaXNGYXZvcml0ZXMoY29udGV4dCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuYXZpZ2F0aW9uLmlzUHJldmlldyhjb250ZXh0KSkge1xuICAgIHJldHVybiBjb250ZXh0LnBlcm1pc3Npb25zLmNoZWNrKGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLCBbJ2RlbGV0ZSddKTtcbiAgfVxuXG4gIC8vIHdvcmthcm91bmQgZm9yIFNoYXJlZCBGaWxlc1xuICBpZiAobmF2aWdhdGlvbi5pc1NoYXJlZEZpbGVzKGNvbnRleHQpKSB7XG4gICAgcmV0dXJuIGNvbnRleHQucGVybWlzc2lvbnMuY2hlY2soY29udGV4dC5zZWxlY3Rpb24ubm9kZXMsIFsnZGVsZXRlJ10sIHtcbiAgICAgIHRhcmdldDogJ2FsbG93YWJsZU9wZXJhdGlvbnNPblRhcmdldCdcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBjb250ZXh0LnBlcm1pc3Npb25zLmNoZWNrKGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLCBbJ2RlbGV0ZSddKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBzZWxlY3RlZCBhbnl0aGluZy5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5ub3RFbXB0eWBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc1NlbGVjdGlvbiA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gIWNvbnRleHQuc2VsZWN0aW9uLmlzRW1wdHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIGNyZWF0ZSBhIG5ldyBmb2xkZXIgd2l0aCBjdXJyZW50IHBhdGguXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmZvbGRlci5jYW5DcmVhdGVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5DcmVhdGVGb2xkZXIoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgaWYgKG5hdmlnYXRpb24uaXNQZXJzb25hbEZpbGVzKGNvbnRleHQpIHx8IG5hdmlnYXRpb24uaXNMaWJyYXJ5Q29udGVudChjb250ZXh0KSkge1xuICAgIGNvbnN0IHsgY3VycmVudEZvbGRlciB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuXG4gICAgaWYgKGN1cnJlbnRGb2xkZXIpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnBlcm1pc3Npb25zLmNoZWNrKGN1cnJlbnRGb2xkZXIsIFsnY3JlYXRlJ10pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIGRvd25sb2FkIHNlbGVjdGVkIG5vZGVzIChlaXRoZXIgZmlsZXMgb3IgZm9sZGVycykuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uY2FuRG93bmxvYWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5Eb3dubG9hZFNlbGVjdGlvbihjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY29udGV4dC5zZWxlY3Rpb24ubm9kZXMuZXZlcnkoKG5vZGU6IGFueSkgPT4gbm9kZS5lbnRyeSAmJiAobm9kZS5lbnRyeS5pc0ZpbGUgfHwgbm9kZS5lbnRyeS5pc0ZvbGRlciB8fCAhIW5vZGUuZW50cnkubm9kZUlkKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgaGFzIHNlbGVjdGVkIGEgZm9sZGVyLlxuICogSlNPTiByZWY6IGBhcHAuc2VsZWN0aW9uLmZvbGRlcmBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0ZvbGRlclNlbGVjdGVkID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhIWNvbnRleHQuc2VsZWN0aW9uLmZvbGRlcjtcblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBoYXMgc2VsZWN0ZWQgYSBsaWJyYXJ5IChzaXRlKS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5saWJyYXJ5YFxuICovXG5leHBvcnQgY29uc3QgaGFzTGlicmFyeVNlbGVjdGVkID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhIWNvbnRleHQuc2VsZWN0aW9uLmxpYnJhcnk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgaGFzIHNlbGVjdGVkIGEgKipwcml2YXRlKiogbGlicmFyeSAoc2l0ZSlcbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5pc1ByaXZhdGVMaWJyYXJ5YFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcml2YXRlTGlicmFyeShjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY29udGV4dC5zZWxlY3Rpb24ubGlicmFyeT8uZW50cnk/LnZpc2liaWxpdHkgPT09ICdQUklWQVRFJztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHNlbGVjdGVkIGxpYnJhcnkgaGFzIGEgKipyb2xlKiogcHJvcGVydHkgZGVmaW5lZC5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5oYXNMaWJyYXJ5Um9sZWBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0xpYnJhcnlSb2xlKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IGxpYnJhcnkgPSBjb250ZXh0LnNlbGVjdGlvbi5saWJyYXJ5O1xuICByZXR1cm4gbGlicmFyeSA/ICEhbGlicmFyeS5lbnRyeT8ucm9sZSA6IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGhhcyBzZWxlY3RlZCBhIGZpbGUuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZWBcbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0ZpbGVTZWxlY3RlZCA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gISFjb250ZXh0Py5zZWxlY3Rpb24/LmZpbGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIHVwZGF0ZSB0aGUgZmlyc3Qgc2VsZWN0ZWQgbm9kZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maXJzdC5jYW5VcGRhdGVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5VcGRhdGVTZWxlY3RlZE5vZGUoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgaWYgKGNvbnRleHQuc2VsZWN0aW9uICYmIGhhc1NlbGVjdGlvbihjb250ZXh0KSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb250ZXh0LnNlbGVjdGlvbi5maXJzdDtcblxuICAgIGlmIChub2RlPy5lbnRyeS5pc0ZpbGUgJiYgaGFzTG9ja2VkRmlsZXMoY29udGV4dCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dC5wZXJtaXNzaW9ucy5jaGVjayhub2RlLCBbJ3VwZGF0ZSddKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc011bHRpc2VsZWN0aW9uKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGxldCBpc011bHRpTm9kZVNlbGVjdGVkID0gZmFsc2U7XG4gIGlmIChjb250ZXh0LnNlbGVjdGlvbiAmJiBoYXNTZWxlY3Rpb24oY29udGV4dCkpIHtcbiAgICBpc011bHRpTm9kZVNlbGVjdGVkID0gY29udGV4dC5zZWxlY3Rpb24uY291bnQgPiAxO1xuICB9XG4gIHJldHVybiBpc011bHRpTm9kZVNlbGVjdGVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiB1cGRhdGUgdGhlIGZpcnN0IHNlbGVjdGVkIGZvbGRlci5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5mb2xkZXIuY2FuVXBkYXRlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuVXBkYXRlU2VsZWN0ZWRGb2xkZXIoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyBmb2xkZXIgfSA9IGNvbnRleHQuc2VsZWN0aW9uO1xuICBpZiAoZm9sZGVyKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8vIHdvcmthcm91bmQgZm9yIEZhdm9yaXRlcyBBcGlcbiAgICAgIG5hdmlnYXRpb24uaXNGYXZvcml0ZXMoY29udGV4dCkgfHwgY29udGV4dC5wZXJtaXNzaW9ucy5jaGVjayhmb2xkZXIuZW50cnksIFsndXBkYXRlJ10pXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgaGFzIHNlbGVjdGVkIGEgKipsb2NrZWQqKiBmaWxlIG5vZGUuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZS5pc0xvY2tlZGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0xvY2tlZEZpbGVzKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGlmIChjb250ZXh0Py5zZWxlY3Rpb24/Lm5vZGVzKSB7XG4gICAgcmV0dXJuIGNvbnRleHQuc2VsZWN0aW9uLm5vZGVzLnNvbWUoKG5vZGUpID0+IHtcbiAgICAgIGlmICghbm9kZS5lbnRyeS5pc0ZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZS5lbnRyeS5pc0xvY2tlZCB8fCBub2RlLmVudHJ5LnByb3BlcnRpZXM/LlsnY206bG9ja1R5cGUnXSA9PT0gJ1JFQURfT05MWV9MT0NLJztcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHNlbGVjdGVkIGZpbGUgaGFzICoqd3JpdGUqKiBvciAqKnJlYWQtb25seSoqIGxvY2tzIHNwZWNpZmllZC5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmlzTG9ja2VkYFxuICovXG5leHBvcnQgY29uc3QgaXNXcml0ZUxvY2tlZCA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT5cbiAgISEoXG4gICAgY29udGV4dD8uc2VsZWN0aW9uPy5maWxlPy5lbnRyeT8ucHJvcGVydGllcz8uWydjbTpsb2NrVHlwZSddID09PSAnV1JJVEVfTE9DSycgfHxcbiAgICBjb250ZXh0Py5zZWxlY3Rpb24/LmZpbGU/LmVudHJ5Py5wcm9wZXJ0aWVzPy5bJ2NtOmxvY2tUeXBlJ10gPT09ICdSRUFEX09OTFlfTE9DSydcbiAgKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHNlbGVjdGVkIGZpbGUgaGFzICoqd3JpdGUqKiBvciAqKnJlYWQtb25seSoqIGxvY2tzIHNwZWNpZmllZCxcbiAqIGFuZCB0aGF0IGN1cnJlbnQgdXNlciBpcyB0aGUgb3duZXIgb2YgdGhlIGxvY2suXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZS5pc0xvY2tPd25lcmBcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVXNlcldyaXRlTG9ja093bmVyID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBpc1dyaXRlTG9ja2VkKGNvbnRleHQpICYmXG4gIGNvbnRleHQuc2VsZWN0aW9uLmZpbGU/LmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tPd25lciddICYmXG4gIGNvbnRleHQuc2VsZWN0aW9uLmZpbGU/LmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tPd25lciddLmlkID09PSBjb250ZXh0LnByb2ZpbGUuaWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIGxvY2sgc2VsZWN0ZWQgZmlsZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmNhbkxvY2tgXG4gKi9cbmV4cG9ydCBjb25zdCBjYW5Mb2NrRmlsZSA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gIWlzV3JpdGVMb2NrZWQoY29udGV4dCkgJiYgY2FuVXBkYXRlU2VsZWN0ZWROb2RlKGNvbnRleHQpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGNhbiB1bmxvY2sgc2VsZWN0ZWQgZmlsZS5cbiAqIEpTT04gcmVmOiBgYXBwLnNlbGVjdGlvbi5maWxlLmNhblVubG9ja2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhblVubG9ja0ZpbGUoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyBmaWxlIH0gPSBjb250ZXh0LnNlbGVjdGlvbjtcbiAgcmV0dXJuIGlzV3JpdGVMb2NrZWQoY29udGV4dCkgJiYgKGNvbnRleHQucGVybWlzc2lvbnMuY2hlY2soZmlsZT8uZW50cnksIFsnZGVsZXRlJ10pIHx8IGlzVXNlcldyaXRlTG9ja093bmVyKGNvbnRleHQpKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gdXBsb2FkIGEgbmV3IHZlcnNpb24gb2YgdGhlIGZpbGUuXG4gKiBKU09OIHJlZjogYGFwcC5zZWxlY3Rpb24uZmlsZS5jYW5VcGxvYWRWZXJzaW9uYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuVXBsb2FkVmVyc2lvbihjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBpZiAobmF2aWdhdGlvbi5pc0Zhdm9yaXRlcyhjb250ZXh0KSB8fCBuYXZpZ2F0aW9uLmlzU2hhcmVkRmlsZXMoY29udGV4dCkpIHtcbiAgICByZXR1cm4gaGFzRmlsZVNlbGVjdGVkKGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBoYXNGaWxlU2VsZWN0ZWQoY29udGV4dCksXG4gICAgIW5hdmlnYXRpb24uaXNUcmFzaGNhbihjb250ZXh0KSxcbiAgICBpc1dyaXRlTG9ja2VkKGNvbnRleHQpID8gaXNVc2VyV3JpdGVMb2NrT3duZXIoY29udGV4dCkgOiBjYW5VcGRhdGVTZWxlY3RlZE5vZGUoY29udGV4dClcbiAgXS5ldmVyeShCb29sZWFuKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gdG9nZ2xlIHNoYXJlZCBsaW5rIG1vZGUuXG4gKiBKU09OIHJlZjogYGNhblRvZ2dsZVNoYXJlZExpbmtgXG4gKlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dFxuICovXG5leHBvcnQgY29uc3QgY2FuVG9nZ2xlU2hhcmVkTGluayA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gW2NhblNoYXJlRmlsZShjb250ZXh0KSwgaXNTaGFyZWQoY29udGV4dCldLnNvbWUoQm9vbGVhbik7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHVzZXIgY2FuIGVkaXQgYXNwZWN0cyBmb3IgdGhlIHNlbGVjdGVkIG5vZGUuXG4gKiBKU09OIHJlZjogYGNhbkVkaXRBc3BlY3RzYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbkVkaXRBc3BlY3RzID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PlxuICBbXG4gICAgIWlzTXVsdGlzZWxlY3Rpb24oY29udGV4dCksXG4gICAgY2FuVXBkYXRlU2VsZWN0ZWROb2RlKGNvbnRleHQpLFxuICAgICFpc1dyaXRlTG9ja2VkKGNvbnRleHQpLFxuICAgICFuYXZpZ2F0aW9uLmlzVHJhc2hjYW4oY29udGV4dCksXG4gICAgcmVwb3NpdG9yeS5pc01ham9yVmVyc2lvbkF2YWlsYWJsZShjb250ZXh0LCAnNycpXG4gIF0uZXZlcnkoQm9vbGVhbik7XG5cbmV4cG9ydCBjb25zdCBjYW5Ub2dnbGVGaWxlTG9jayA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gW2NhbkxvY2tGaWxlKGNvbnRleHQpIHx8IGNhblVubG9ja0ZpbGUoY29udGV4dCldLnNvbWUoQm9vbGVhbik7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlcyB3b3JrYXJvdW5kcyBmb3IgZm9yIHJlY2VudCBmaWxlcyBhbmQgc2VhcmNoIGFwaSBpc3N1ZXMuXG4gKiBDaGVja3MgaWYgdXNlciBjYW4gdG9nZ2xlICoqRmF2b3JpdGUqKiBzdGF0ZSBmb3IgYSBub2RlLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dFxuICovXG5leHBvcnQgY29uc3QgY2FuVG9nZ2xlRmF2b3JpdGUgPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+XG4gIFtcbiAgICBbY2FuQWRkRmF2b3JpdGUoY29udGV4dCksIGNhblJlbW92ZUZhdm9yaXRlKGNvbnRleHQpXS5zb21lKEJvb2xlYW4pLFxuICAgIFtuYXZpZ2F0aW9uLmlzUmVjZW50RmlsZXMoY29udGV4dCksIG5hdmlnYXRpb24uaXNTaGFyZWRGaWxlcyhjb250ZXh0KSwgbmF2aWdhdGlvbi5pc1NlYXJjaFJlc3VsdHMoY29udGV4dCksIG5hdmlnYXRpb24uaXNGYXZvcml0ZXMoY29udGV4dCldLnNvbWUoXG4gICAgICBCb29sZWFuXG4gICAgKVxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhcHBsaWNhdGlvbiBzaG91bGQgcmVuZGVyIGxvZ291dCBvcHRpb24uXG4gKiBKU09OIHJlZjogYGNhblNob3dMb2dvdXRgXG4gKlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dFxuICovXG5leHBvcnQgY29uc3QgY2FuU2hvd0xvZ291dCA9IChjb250ZXh0OiBBY2FSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gIWNvbnRleHQud2l0aENyZWRlbnRpYWxzO1xuXG4vKipcbiAqIENoZWNrcyBpZiB1c2VyIGlzIGxpYnJhcnkgbWFuYWdlclxuICogSlNPTiByZWY6IGBpc0xpYnJhcnlNYW5hZ2VyYFxuICpcbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTGlicmFyeU1hbmFnZXIgPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+IGNvbnRleHQuc2VsZWN0aW9uLmxpYnJhcnk/LmVudHJ5LnJvbGUgPT09ICdTaXRlTWFuYWdlcicgfHwgaXNBZG1pbihjb250ZXh0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGZpbGUgY2FuIGJlIG9wZW5lZCB3aXRoIE1TIE9mZmljZVxuICogSlNPTiByZWY6IGBhb3MuY2FuT3BlbldpdGhPZmZpY2VgXG4gKlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuT3BlbldpdGhPZmZpY2UoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgZmxhZyA9IGAke2NvbnRleHQuYXBwQ29uZmlnLmdldDxib29sZWFuIHwgc3RyaW5nPigncGx1Z2lucy5hb3NQbHVnaW4nLCBmYWxzZSl9YDtcblxuICBpZiAoZmxhZyAhPT0gJ3RydWUnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGNvbnRleHQubmF2aWdhdGlvbj8udXJsPy5zdGFydHNXaXRoKCcvdHJhc2hjYW4nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghY29udGV4dD8uc2VsZWN0aW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgeyBmaWxlIH0gPSBjb250ZXh0LnNlbGVjdGlvbjtcblxuICBpZiAoIWZpbGU/LmVudHJ5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZXh0ZW5zaW9uID0gZ2V0RmlsZUV4dGVuc2lvbihmaWxlLmVudHJ5Lm5hbWUpO1xuICBpZiAoIWV4dGVuc2lvbiB8fCAhc3VwcG9ydGVkRXh0ZW5zaW9uc1tleHRlbnNpb25dKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFmaWxlLmVudHJ5LnByb3BlcnRpZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoZmlsZS5lbnRyeS5pc0xvY2tlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChmaWxlLmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tUeXBlJ10gPT09ICdXUklURV9MT0NLJyB8fCBmaWxlLmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tUeXBlJ10gPT09ICdSRUFEX09OTFlfTE9DSycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBsb2NrT3duZXIgPSBmaWxlLmVudHJ5LnByb3BlcnRpZXNbJ2NtOmxvY2tPd25lciddO1xuICBpZiAobG9ja093bmVyICYmIGxvY2tPd25lci5pZCAhPT0gY29udGV4dC5wcm9maWxlLmlkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gd29ya2Fyb3VuZCBmb3IgU2hhcmVkIGZpbGVzXG4gIGlmIChjb250ZXh0Lm5hdmlnYXRpb24/LnVybD8uc3RhcnRzV2l0aCgnL3NoYXJlZCcpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgIGlmIChmaWxlLmVudHJ5Lmhhc093blByb3BlcnR5KCdhbGxvd2FibGVPcGVyYXRpb25zT25UYXJnZXQnKSkge1xuICAgICAgcmV0dXJuIGNvbnRleHQucGVybWlzc2lvbnMuY2hlY2soZmlsZSwgWyd1cGRhdGUnXSwge1xuICAgICAgICB0YXJnZXQ6ICdhbGxvd2FibGVPcGVyYXRpb25zT25UYXJnZXQnXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29udGV4dC5wZXJtaXNzaW9ucy5jaGVjayhmaWxlLCBbJ3VwZGF0ZSddKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU21hcnRGb2xkZXIoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgaWYgKCFjb250ZXh0LnNlbGVjdGlvbj8uaXNFbXB0eSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb250ZXh0LnNlbGVjdGlvbi5maXJzdDtcbiAgICBpZiAoIW5vZGU/LmVudHJ5LmlzRm9sZGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IG5vZGVBc3BlY3RzID0gbm9kZS5lbnRyeT8uYXNwZWN0TmFtZXMgPz8gW107XG4gICAgcmV0dXJuIG5vZGVBc3BlY3RzLmluY2x1ZGVzKCdzbWY6Y3VzdG9tQ29uZmlnU21hcnRGb2xkZXInKSB8fCBub2RlQXNwZWN0cy5pbmNsdWRlcygnc21mOnN5c3RlbUNvbmZpZ1NtYXJ0Rm9sZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgYXJlVGFnc0VuYWJsZWQgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+IGNvbnRleHQuYXBwQ29uZmlnLmdldCgncGx1Z2lucy50YWdzRW5hYmxlZCcsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgYXJlQ2F0ZWdvcmllc0VuYWJsZWQgPSAoY29udGV4dDogQWNhUnVsZUNvbnRleHQpOiBib29sZWFuID0+IGNvbnRleHQuYXBwQ29uZmlnLmdldCgncGx1Z2lucy5jYXRlZ29yaWVzRW5hYmxlZCcsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgY2FuRGlzcGxheUtub3dsZWRnZVJldHJpZXZhbEJ1dHRvbiA9IChjb250ZXh0OiBBY2FSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT5cbiAgY29udGV4dC5hcHBDb25maWcuZ2V0KCdwbHVnaW5zLmtub3dsZWRnZVJldHJpZXZhbEVuYWJsZWQnLCBmYWxzZSkgJiZcbiAgKG5hdmlnYXRpb24uaXNQZXJzb25hbEZpbGVzKGNvbnRleHQpIHx8XG4gICAgbmF2aWdhdGlvbi5pc1NoYXJlZEZpbGVzKGNvbnRleHQpIHx8XG4gICAgbmF2aWdhdGlvbi5pc1JlY2VudEZpbGVzKGNvbnRleHQpIHx8XG4gICAgbmF2aWdhdGlvbi5pc0Zhdm9yaXRlcyhjb250ZXh0KSB8fFxuICAgICgobmF2aWdhdGlvbi5pc1NlYXJjaFJlc3VsdHMoY29udGV4dCkgfHwgbmF2aWdhdGlvbi5pc0xpYnJhcnlDb250ZW50KGNvbnRleHQpKSAmJiAhbmF2aWdhdGlvbi5pc0xpYnJhcmllcyhjb250ZXh0KSkpO1xuIl19
|
|
@@ -37,11 +37,6 @@ export function isFavorites(context) {
|
|
|
37
37
|
const { url } = context.navigation;
|
|
38
38
|
return url?.startsWith('/favorites') && !isPreview(context);
|
|
39
39
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Checks if the activated route is not **Favorites**.
|
|
42
|
-
* JSON ref: `app.navigation.isNotFavorites`
|
|
43
|
-
*/
|
|
44
|
-
export const isNotFavorites = (context) => !isFavorites(context);
|
|
45
40
|
/**
|
|
46
41
|
* Checks if a **Shared Files** route is activated.
|
|
47
42
|
* JSON ref: `app.navigation.isSharedFiles`
|
|
@@ -50,11 +45,6 @@ export function isSharedFiles(context) {
|
|
|
50
45
|
const { url } = context.navigation;
|
|
51
46
|
return url?.startsWith('/shared') && !isPreview(context);
|
|
52
47
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Checks if the activated route is not **Shared Files**.
|
|
55
|
-
* JSON ref: `app.navigation.isNotSharedFiles`
|
|
56
|
-
*/
|
|
57
|
-
export const isNotSharedFiles = (context) => !isSharedFiles(context);
|
|
58
48
|
/**
|
|
59
49
|
* Checks if a **Trashcan** route is activated.
|
|
60
50
|
* JSON ref: `app.navigation.isTrashcan`
|
|
@@ -63,11 +53,6 @@ export function isTrashcan(context) {
|
|
|
63
53
|
const { url } = context.navigation;
|
|
64
54
|
return url?.startsWith('/trashcan');
|
|
65
55
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Checks if the activated route is not **Trashcan**.
|
|
68
|
-
* JSON ref: `app.navigation.isNotTrashcan`
|
|
69
|
-
*/
|
|
70
|
-
export const isNotTrashcan = (context) => !isTrashcan(context);
|
|
71
56
|
/**
|
|
72
57
|
* Checks if a **Personal Files** route is activated.
|
|
73
58
|
* JSON ref: `app.navigation.isPersonalFiles`
|
|
@@ -76,14 +61,6 @@ export function isPersonalFiles(context) {
|
|
|
76
61
|
const { url } = context.navigation;
|
|
77
62
|
return url?.startsWith('/personal-files');
|
|
78
63
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Checks if a **Library Files** route is activated.
|
|
81
|
-
* JSON ref: `app.navigation.isLibraryFiles`
|
|
82
|
-
*/
|
|
83
|
-
export function isLibraryFiles(context) {
|
|
84
|
-
const { url } = context.navigation;
|
|
85
|
-
return url?.startsWith('/libraries');
|
|
86
|
-
}
|
|
87
64
|
/**
|
|
88
65
|
* Checks if a **Library Files** or **Library Search Result** route is activated.
|
|
89
66
|
* JSON ref: `app.navigation.isLibraryFiles`
|
|
@@ -100,16 +77,6 @@ export function isDetails(context) {
|
|
|
100
77
|
const { url } = context.navigation;
|
|
101
78
|
return url?.includes('/details');
|
|
102
79
|
}
|
|
103
|
-
/**
|
|
104
|
-
* Checks if the activated route is not **Details**.
|
|
105
|
-
* JSON ref: `app.navigation.isNotDetails`
|
|
106
|
-
*/
|
|
107
|
-
export const isNotDetails = (context) => !isDetails(context);
|
|
108
|
-
/**
|
|
109
|
-
* Checks if the activated route is neither **Libraries** nor **Library Search Results**.
|
|
110
|
-
* JSON ref: `app.navigation.isNotLibraries`
|
|
111
|
-
*/
|
|
112
|
-
export const isNotLibraries = (context) => !isLibraries(context);
|
|
113
80
|
/**
|
|
114
81
|
* Checks if a **Recent Files** route is activated.
|
|
115
82
|
* JSON ref: `app.navigation.isRecentFiles`
|
|
@@ -118,11 +85,6 @@ export function isRecentFiles(context) {
|
|
|
118
85
|
const { url } = context.navigation;
|
|
119
86
|
return url?.startsWith('/recent-files');
|
|
120
87
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Checks if the activated route is not **Recent Files**.
|
|
123
|
-
* JSON ref: `app.navigation.isNotRecentFiles`
|
|
124
|
-
*/
|
|
125
|
-
export const isNotRecentFiles = (context) => !isRecentFiles(context);
|
|
126
88
|
/**
|
|
127
89
|
* Checks if a **Search Results** route is activated.
|
|
128
90
|
* JSON ref: `app.navigation.isSearchResults`
|
|
@@ -133,33 +95,4 @@ export function isSearchResults(context
|
|
|
133
95
|
const { url } = context.navigation;
|
|
134
96
|
return url?.startsWith('/search');
|
|
135
97
|
}
|
|
136
|
-
|
|
137
|
-
* Checks if the activated route is not **Search Results**.
|
|
138
|
-
* JSON ref: `app.navigation.isNotSearchResults`
|
|
139
|
-
*/
|
|
140
|
-
export const isNotSearchResults = (context) => !isSearchResults(context);
|
|
141
|
-
/**
|
|
142
|
-
* Checks if a **Shared Preview** route is activated.
|
|
143
|
-
* JSON ref: `app.navigation.isSharedPreview`
|
|
144
|
-
*/
|
|
145
|
-
export function isSharedPreview(context) {
|
|
146
|
-
const { url } = context.navigation;
|
|
147
|
-
return url?.startsWith('/shared/preview/') || (url?.startsWith('/shared') && url?.includes('viewer:view'));
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Checks if a **Favorites Preview** route is activated.
|
|
151
|
-
* JSON ref: `app.navigation.isFavoritesPreview`
|
|
152
|
-
*/
|
|
153
|
-
export function isFavoritesPreview(context) {
|
|
154
|
-
const { url } = context.navigation;
|
|
155
|
-
return url?.startsWith('/favorites/preview/') || (url?.startsWith('/favorites') && url?.includes('viewer:view'));
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Checks if a **Shared File Preview** route is activated.
|
|
159
|
-
* JSON ref: `app.navigation.isFavoritesPreview`
|
|
160
|
-
*/
|
|
161
|
-
export function isSharedFileViewer(context) {
|
|
162
|
-
const { url } = context.navigation;
|
|
163
|
-
return url?.startsWith('/preview/s/');
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5ydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvcnVsZXMvc3JjL25hdmlnYXRpb24ucnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFJSDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQW9CO0lBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFvQjtJQUM5QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxPQUFPLEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQW9CLEVBQVcsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXZGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBb0I7SUFDaEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDbkMsT0FBTyxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7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Q0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsT0FBb0IsRUFBVyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFL0Y7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFvQjtJQUNsRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxPQUFPLEdBQUcsRUFBRSxVQUFVLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQzdHLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBb0I7SUFDckQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDbkMsT0FBTyxHQUFHLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUNuSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQW9CO0lBQ3JELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ25DLE9BQU8sR0FBRyxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IFJ1bGVDb250ZXh0IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBQcmV2aWV3IHJvdXRlIGlzIGFjdGl2YXRlZC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNQcmV2aWV3YFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQcmV2aWV3KGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmwgJiYgKHVybC5pbmNsdWRlcygnL3ByZXZpZXcvJykgfHwgdXJsLmluY2x1ZGVzKCd2aWV3ZXI6dmlldycpIHx8IHVybC5pbmNsdWRlcygnL3ZpZXcvJykpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqRmF2b3JpdGVzKiogcm91dGUgaXMgYWN0aXZhdGVkLlxuICogSlNPTiByZWY6IGBhcHAubmF2aWdhdGlvbi5pc0Zhdm9yaXRlc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmF2b3JpdGVzKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmw/LnN0YXJ0c1dpdGgoJy9mYXZvcml0ZXMnKSAmJiAhaXNQcmV2aWV3KGNvbnRleHQpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYWN0aXZhdGVkIHJvdXRlIGlzIG5vdCAqKkZhdm9yaXRlcyoqLlxuICogSlNPTiByZWY6IGBhcHAubmF2aWdhdGlvbi5pc05vdEZhdm9yaXRlc2BcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTm90RmF2b3JpdGVzID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhaXNGYXZvcml0ZXMoY29udGV4dCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgKipTaGFyZWQgRmlsZXMqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzU2hhcmVkRmlsZXNgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZEZpbGVzKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmw/LnN0YXJ0c1dpdGgoJy9zaGFyZWQnKSAmJiAhaXNQcmV2aWV3KGNvbnRleHQpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYWN0aXZhdGVkIHJvdXRlIGlzIG5vdCAqKlNoYXJlZCBGaWxlcyoqLlxuICogSlNPTiByZWY6IGBhcHAubmF2aWdhdGlvbi5pc05vdFNoYXJlZEZpbGVzYFxuICovXG5leHBvcnQgY29uc3QgaXNOb3RTaGFyZWRGaWxlcyA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gIWlzU2hhcmVkRmlsZXMoY29udGV4dCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgKipUcmFzaGNhbioqIHJvdXRlIGlzIGFjdGl2YXRlZC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNUcmFzaGNhbmBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJhc2hjYW4oY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybD8uc3RhcnRzV2l0aCgnL3RyYXNoY2FuJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBhY3RpdmF0ZWQgcm91dGUgaXMgbm90ICoqVHJhc2hjYW4qKi5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNOb3RUcmFzaGNhbmBcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTm90VHJhc2hjYW4gPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+ICFpc1RyYXNoY2FuKGNvbnRleHQpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqUGVyc29uYWwgRmlsZXMqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzUGVyc29uYWxGaWxlc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGVyc29uYWxGaWxlcyhjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5zdGFydHNXaXRoKCcvcGVyc29uYWwtZmlsZXMnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSAqKkxpYnJhcnkgRmlsZXMqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzTGlicmFyeUZpbGVzYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaWJyYXJ5RmlsZXMoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybD8uc3RhcnRzV2l0aCgnL2xpYnJhcmllcycpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqTGlicmFyeSBGaWxlcyoqIG9yICoqTGlicmFyeSBTZWFyY2ggUmVzdWx0Kiogcm91dGUgaXMgYWN0aXZhdGVkLlxuICogSlNPTiByZWY6IGBhcHAubmF2aWdhdGlvbi5pc0xpYnJhcnlGaWxlc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTGlicmFyaWVzKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmw/LmVuZHNXaXRoKCcvbGlicmFyaWVzJykgfHwgdXJsPy5zdGFydHNXaXRoKCcvc2VhcmNoLWxpYnJhcmllcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaWJyYXJ5Q29udGVudChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5lbmRzV2l0aCgnL2xpYnJhcmllcycpIHx8IHVybD8uaW5jbHVkZXMoJy9saWJyYXJpZXMvJykgfHwgdXJsPy5zdGFydHNXaXRoKCcvc2VhcmNoLWxpYnJhcmllcycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXRhaWxzKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmw/LmluY2x1ZGVzKCcvZGV0YWlscycpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYWN0aXZhdGVkIHJvdXRlIGlzIG5vdCAqKkRldGFpbHMqKi5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNOb3REZXRhaWxzYFxuICovXG5leHBvcnQgY29uc3QgaXNOb3REZXRhaWxzID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhaXNEZXRhaWxzKGNvbnRleHQpO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYWN0aXZhdGVkIHJvdXRlIGlzIG5laXRoZXIgKipMaWJyYXJpZXMqKiBub3IgKipMaWJyYXJ5IFNlYXJjaCBSZXN1bHRzKiouXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzTm90TGlicmFyaWVzYFxuICovXG5leHBvcnQgY29uc3QgaXNOb3RMaWJyYXJpZXMgPSAoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuID0+ICFpc0xpYnJhcmllcyhjb250ZXh0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSAqKlJlY2VudCBGaWxlcyoqIHJvdXRlIGlzIGFjdGl2YXRlZC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNSZWNlbnRGaWxlc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVjZW50RmlsZXMoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybD8uc3RhcnRzV2l0aCgnL3JlY2VudC1maWxlcycpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgYWN0aXZhdGVkIHJvdXRlIGlzIG5vdCAqKlJlY2VudCBGaWxlcyoqLlxuICogSlNPTiByZWY6IGBhcHAubmF2aWdhdGlvbi5pc05vdFJlY2VudEZpbGVzYFxuICovXG5leHBvcnQgY29uc3QgaXNOb3RSZWNlbnRGaWxlcyA9IChjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4gPT4gIWlzUmVjZW50RmlsZXMoY29udGV4dCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgKipTZWFyY2ggUmVzdWx0cyoqIHJvdXRlIGlzIGFjdGl2YXRlZC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNTZWFyY2hSZXN1bHRzYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZWFyY2hSZXN1bHRzKFxuICBjb250ZXh0OiBSdWxlQ29udGV4dFxuICAvLyAuLi5hcmdzOiBSdWxlUGFyYW1ldGVyW11cbik6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5zdGFydHNXaXRoKCcvc2VhcmNoJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBhY3RpdmF0ZWQgcm91dGUgaXMgbm90ICoqU2VhcmNoIFJlc3VsdHMqKi5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNOb3RTZWFyY2hSZXN1bHRzYFxuICovXG5leHBvcnQgY29uc3QgaXNOb3RTZWFyY2hSZXN1bHRzID0gKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiA9PiAhaXNTZWFyY2hSZXN1bHRzKGNvbnRleHQpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqU2hhcmVkIFByZXZpZXcqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzU2hhcmVkUHJldmlld2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2hhcmVkUHJldmlldyhjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5zdGFydHNXaXRoKCcvc2hhcmVkL3ByZXZpZXcvJykgfHwgKHVybD8uc3RhcnRzV2l0aCgnL3NoYXJlZCcpICYmIHVybD8uaW5jbHVkZXMoJ3ZpZXdlcjp2aWV3JykpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqRmF2b3JpdGVzIFByZXZpZXcqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzRmF2b3JpdGVzUHJldmlld2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRmF2b3JpdGVzUHJldmlldyhjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5zdGFydHNXaXRoKCcvZmF2b3JpdGVzL3ByZXZpZXcvJykgfHwgKHVybD8uc3RhcnRzV2l0aCgnL2Zhdm9yaXRlcycpICYmIHVybD8uaW5jbHVkZXMoJ3ZpZXdlcjp2aWV3JykpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqU2hhcmVkIEZpbGUgUHJldmlldyoqIHJvdXRlIGlzIGFjdGl2YXRlZC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNGYXZvcml0ZXNQcmV2aWV3YFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTaGFyZWRGaWxlVmlld2VyKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmw/LnN0YXJ0c1dpdGgoJy9wcmV2aWV3L3MvJyk7XG59XG4iXX0=
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5ydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1zaGFyZWQvcnVsZXMvc3JjL25hdmlnYXRpb24ucnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFJSDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQW9CO0lBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNyRyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFvQjtJQUM5QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxPQUFPLEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBb0I7SUFDaEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDbkMsT0FBTyxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQW9CO0lBQzdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ25DLE9BQU8sR0FBRyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxPQUFvQjtJQUNsRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxPQUFPLEdBQUcsRUFBRSxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFvQjtJQUM5QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxPQUFPLEdBQUcsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBb0I7SUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDbkMsT0FBTyxHQUFHLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzdHLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLE9BQW9CO0lBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ25DLE9BQU8sR0FBRyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFvQjtJQUNoRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxPQUFPLEdBQUcsRUFBRSxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLE9BQW9CO0FBQ3BCLDJCQUEyQjs7SUFFM0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDbkMsT0FBTyxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgUnVsZUNvbnRleHQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIFByZXZpZXcgcm91dGUgaXMgYWN0aXZhdGVkLlxuICogSlNPTiByZWY6IGBhcHAubmF2aWdhdGlvbi5pc1ByZXZpZXdgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXZpZXcoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybCAmJiAodXJsLmluY2x1ZGVzKCcvcHJldmlldy8nKSB8fCB1cmwuaW5jbHVkZXMoJ3ZpZXdlcjp2aWV3JykgfHwgdXJsLmluY2x1ZGVzKCcvdmlldy8nKSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgKipGYXZvcml0ZXMqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzRmF2b3JpdGVzYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGYXZvcml0ZXMoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybD8uc3RhcnRzV2l0aCgnL2Zhdm9yaXRlcycpICYmICFpc1ByZXZpZXcoY29udGV4dCk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgKipTaGFyZWQgRmlsZXMqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzU2hhcmVkRmlsZXNgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZEZpbGVzKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmw/LnN0YXJ0c1dpdGgoJy9zaGFyZWQnKSAmJiAhaXNQcmV2aWV3KGNvbnRleHQpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqVHJhc2hjYW4qKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzVHJhc2hjYW5gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RyYXNoY2FuKGNvbnRleHQ6IFJ1bGVDb250ZXh0KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdXJsIH0gPSBjb250ZXh0Lm5hdmlnYXRpb247XG4gIHJldHVybiB1cmw/LnN0YXJ0c1dpdGgoJy90cmFzaGNhbicpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqUGVyc29uYWwgRmlsZXMqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzUGVyc29uYWxGaWxlc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGVyc29uYWxGaWxlcyhjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5zdGFydHNXaXRoKCcvcGVyc29uYWwtZmlsZXMnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSAqKkxpYnJhcnkgRmlsZXMqKiBvciAqKkxpYnJhcnkgU2VhcmNoIFJlc3VsdCoqIHJvdXRlIGlzIGFjdGl2YXRlZC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNMaWJyYXJ5RmlsZXNgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xpYnJhcmllcyhjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5lbmRzV2l0aCgnL2xpYnJhcmllcycpIHx8IHVybD8uc3RhcnRzV2l0aCgnL3NlYXJjaC1saWJyYXJpZXMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGlicmFyeUNvbnRlbnQoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybD8uZW5kc1dpdGgoJy9saWJyYXJpZXMnKSB8fCB1cmw/LmluY2x1ZGVzKCcvbGlicmFyaWVzLycpIHx8IHVybD8uc3RhcnRzV2l0aCgnL3NlYXJjaC1saWJyYXJpZXMnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGV0YWlscyhjb250ZXh0OiBSdWxlQ29udGV4dCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHVybCB9ID0gY29udGV4dC5uYXZpZ2F0aW9uO1xuICByZXR1cm4gdXJsPy5pbmNsdWRlcygnL2RldGFpbHMnKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSAqKlJlY2VudCBGaWxlcyoqIHJvdXRlIGlzIGFjdGl2YXRlZC5cbiAqIEpTT04gcmVmOiBgYXBwLm5hdmlnYXRpb24uaXNSZWNlbnRGaWxlc2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVjZW50RmlsZXMoY29udGV4dDogUnVsZUNvbnRleHQpOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybD8uc3RhcnRzV2l0aCgnL3JlY2VudC1maWxlcycpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhICoqU2VhcmNoIFJlc3VsdHMqKiByb3V0ZSBpcyBhY3RpdmF0ZWQuXG4gKiBKU09OIHJlZjogYGFwcC5uYXZpZ2F0aW9uLmlzU2VhcmNoUmVzdWx0c2BcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2VhcmNoUmVzdWx0cyhcbiAgY29udGV4dDogUnVsZUNvbnRleHRcbiAgLy8gLi4uYXJnczogUnVsZVBhcmFtZXRlcltdXG4pOiBib29sZWFuIHtcbiAgY29uc3QgeyB1cmwgfSA9IGNvbnRleHQubmF2aWdhdGlvbjtcbiAgcmV0dXJuIHVybD8uc3RhcnRzV2l0aCgnL3NlYXJjaCcpO1xufVxuIl19
|