@eo-sdk/client 7.14.0 → 7.15.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts +6 -0
- package/assets/_default/i18n/de.json +1 -0
- package/assets/_default/i18n/en.json +1 -0
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +17 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +28 -4
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-framework/prepare-details/prepare-details.component.js +21 -3
- package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +3 -2
- package/esm2015/projects/eo-sdk/core/lib/service/prepare/prepare.service.js +16 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +17 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +22 -4
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +10 -0
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -285,7 +285,8 @@ export class BackendService {
|
|
|
285
285
|
}
|
|
286
286
|
getFileNameFromHttpResponse(res, version) {
|
|
287
287
|
const contentDispositionHeader = res.headers.get('Content-Disposition') || '';
|
|
288
|
-
const encodedFileNameMatchResult = contentDispositionHeader.match('filename\\*=UTF-8\'\'(.*)')
|
|
288
|
+
const encodedFileNameMatchResult = contentDispositionHeader.match('filename\\*=UTF-8\'\'(.*)')
|
|
289
|
+
|| contentDispositionHeader.match('filename=\"(.*)\"');
|
|
289
290
|
const encodedFileName = encodedFileNameMatchResult ? encodedFileNameMatchResult[1] : null;
|
|
290
291
|
const filename = encodedFileName ? decodeURIComponent(encodedFileName) : 'unknown';
|
|
291
292
|
const index = !~filename.lastIndexOf('.') ? filename.length : filename.lastIndexOf('.');
|
|
@@ -313,4 +314,4 @@ BackendService.ctorParameters = () => [
|
|
|
313
314
|
{ type: Logger },
|
|
314
315
|
{ type: Config }
|
|
315
316
|
];
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBQyxNQUFNLEVBQU8sR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRCxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFJeEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQXlCckQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBU3pCOztPQUVHO0lBQ0gsWUFBb0IsSUFBZ0IsRUFDaEIsTUFBYyxFQUNkLE1BQWM7UUFGZCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWjNCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUdqRCxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUMvQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBU3pDOzs7V0FHRztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDakIsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjLENBQUMsT0FBcUI7UUFDekMsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3pCLDBEQUEwRDthQUMzRDtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDekMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxjQUE0QjtRQUNoRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsS0FBYSxFQUFFO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQWEsRUFBRSxjQUE0QjtRQUNqRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxHQUFHLENBQUMsR0FBVyxFQUFFLElBQVUsRUFBRSxJQUFhLEVBQUUsY0FBNEI7UUFDN0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQWE7UUFDdkMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUMsWUFBWSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxJQUFJLENBQUMsR0FBVyxFQUFFLElBQUssRUFBRSxJQUFhLEVBQUUsY0FBNEI7UUFDekUsTUFBTSxPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxhQUFhLENBQUMsR0FBVyxFQUFFLFFBQWtCLEVBQUUsSUFBYSxFQUFFLGNBQTRCO1FBQy9GLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFhLEVBQUUsY0FBNEI7UUFDakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksTUFBTSxDQUFDLElBQVcsRUFBRSxJQUFtQztRQUM1RCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUUsSUFBSSxFQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEVBQUUsRUFBRTtnQkFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7YUFDMUU7aUJBQU0sSUFBSSxJQUFJLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVcsQ0FBQyxHQUFXO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBQyxZQUFZLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3BGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksZUFBZSxDQUFDLEVBQVUsRUFBRSxPQUFrQjtRQUNuRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUI7YUFBTTtZQUNMLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDcEQsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZSxDQUFDLFVBQXVCLEVBQUUsU0FBNEMsRUFBRSx5QkFBbUM7UUFFL0gsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBRXJCLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxpQkFBaUIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLGtCQUFrQixDQUFDO2dCQUN4SCxJQUFJLFNBQVMsRUFBRTtvQkFDYixHQUFHLElBQUksY0FBYyxTQUFTLHFCQUFxQixTQUFTLEVBQUUsQ0FBQztpQkFDaEU7cUJBQU07b0JBQ0wsR0FBRyxJQUFJLG1CQUFtQixDQUFDO2lCQUM1QjtnQkFDRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3pDLEdBQUcsSUFBSSxZQUFZLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDeEM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVcsRUFBRSxPQUFnQjtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsQ0FBQzthQUM1RCxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixTQUFTLENBQUMsTUFBTSxDQUNkLEdBQUcsQ0FBQyxJQUFJLEVBQ1IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FDL0MsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDJCQUEyQixDQUFDLEdBQXNCLEVBQUUsT0FBZTtRQUN6RSxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlFLE1BQU0sMEJBQTBCLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0YsTUFBTSxlQUFlLEdBQUcsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDMUYsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ25GLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFHRDs7OztPQUlHO0lBQ0ssaUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDckIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxvQkFBb0IsRUFBRSxPQUFPO1lBQzdCLHNCQUFzQixFQUFFLE9BQU87WUFDL0IsaUJBQWlCLEVBQUUsTUFBTTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUF4VUYsVUFBVTs7O1lBdkNILFVBQVU7WUFLVixNQUFNO1lBSE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7b2YgYXMgb2JzZXJ2YWJsZU9mLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJSHR0cE9wdGlvbnN9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9odHRwLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL2xvZ2dlcic7XHJcbmltcG9ydCB7QXV0aFByb2ZpbGV9IGZyb20gJy4uL2F1dGgvYXV0aC1wcm9maWxlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7SHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtmaW5hbGl6ZSwgc2hhcmVSZXBsYXl9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKlxyXG4gKiBIdHRwT3B0aW9ucyBmb3IgaHR0cCByZXF1ZXN0XHJcbiAqIEBwYXJhbSBvYnNlcnZlOiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSdcclxuICogQHBhcmFtIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0J1xyXG4gKi9cclxuIGV4cG9ydCBpbnRlcmZhY2UgSHR0cE9wdGlvbnMge1xyXG4gIGhlYWRlcnM/OlxyXG4gICAgfCBIdHRwSGVhZGVyc1xyXG4gICAgfCB7XHJcbiAgICAgICAgW2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICAgIH07XHJcbiAgb2JzZXJ2ZT86IGFueTtcclxuICBwYXJhbXM/OlxyXG4gICAgfCBIdHRwUGFyYW1zXHJcbiAgICB8IHtcclxuICAgICAgICBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgICB9O1xyXG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcclxuICByZXNwb25zZVR5cGU/OiBhbnk7XHJcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBgQmFja2VuZFNlcnZpY2VgIGVuY2Fwc3VsYXRlcyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB5dXV2aXM8c3VwPiZyZWc7PC9zdXA+IFJBRCBSRVNUIGVuZHBvaW50cy5cclxuICpcclxuICogQXMgeXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgcHJvdmlkZXMgZGlmZmVyZW50IHNlcnZpY2VzLCB0aGlzIHNlcnZpY2UgaXMgYWxzbyBjYXBhYmxlIG9mIHByb3ZpZGluZyB0aGUgYmFzZSBVUklzIGZvciB0aG9zZSBzZXJ2aWNlcy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhY2tlbmRTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGdyaWREYXRhRmlsdGVyID0gZmlsdGVyKCh2OiBhbnkpID0+ICF2Ll9fcmVtb3ZlZCk7XHJcblxyXG4gIHByaXZhdGUgYXV0aFByb2ZpbGU6IEF1dGhQcm9maWxlO1xyXG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xyXG4gIHByaXZhdGUgdGVtcCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgcHJpdmF0ZSBoZWFkZXJzID0gdGhpcy5zZXREZWZhdWx0SGVhZGVycygpO1xyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZykge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVmYXVsdCBwcm9maWxlIGlzIHN1cHBvc2VkIHRvIHVzZSBOVExNXHJcbiAgICAgKiBAdHlwZSB7aG9zdDogc3RyaW5nOyBudGxtOiBib29sZWFufVxyXG4gICAgICovXHJcbiAgICB0aGlzLmF1dGhQcm9maWxlID0ge1xyXG4gICAgICBob3N0OiAnJyxcclxuICAgICAgbnRsbTogdHJ1ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0QXV0aFByb2ZpbGUocHJvZmlsZT86IEF1dGhQcm9maWxlKSB7XHJcbiAgICBpZiAocHJvZmlsZSkge1xyXG4gICAgICB0aGlzLmhlYWRlcnMgPSB0aGlzLnNldERlZmF1bHRIZWFkZXJzKCk7XHJcbiAgICAgIHRoaXMuYXV0aFByb2ZpbGUgPSBwcm9maWxlO1xyXG4gICAgICBpZiAodGhpcy5hdXRoUHJvZmlsZS5hdXRoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCB0aGlzLmF1dGhQcm9maWxlLmF1dGgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaGVhZGVycy5kZWxldGUoJ0F1dGhvcml6YXRpb24nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhIG5ldyBoZWFkZXIuXHJcbiAgICogQHBhcmFtIGtleSBUaGUgaGVhZGVycyBuYW1lXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXRIZWFkZXIoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzID0gdGhpcy5oZWFkZXJzLnNldChrZXksIHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBoZWFkZXJzXHJcbiAgICogQHJldHVybnMgVGhlIGBIdHRwSGVhZGVyc2AgdGhhdCBhcmUgY3VycmVudGx5IHNldCB1cFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgIHJldHVybiB0aGlzLmhlYWRlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBIdHRwT3B0aW9ucyB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7aGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCl9LCByZXF1ZXN0T3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIERNUy1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VydmljZUJhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ3NlcnZpY2VCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIFNlYXJjaC1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VhcmNoQmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnc2VhcmNoQmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBDb250ZXh0LVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRDb250ZXh0QmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnY29udGV4dEJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgSW5ib3gtU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldEluYm94QmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnaW5ib3hCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIEJQTS1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0QnBtQmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnYnBtQmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBBZ2VudC1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0QWdlbnRCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdhZ2VudEJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgU3RhdHVzLVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTdGF0dXNCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdzdGF0dXNCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldEljb25CYXNlKGlkOiBzdHJpbmcgPSAnJykge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U2VydmljZUJhc2UoKSArICcvdWkvaWNvbi8nICsgaWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldEhvc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRoUHJvZmlsZS5ob3N0IHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JhcHBlZCBIVFRQIEdFVCBtZXRob2RcclxuICAgKiBAcGFyYW0gdXJpIFRoZSBSRVNUIFVSSSB0byBiZSBxdWVyaWVkXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgZGF0YSByZXRyaWV2ZWQgZnJvbSB0aGUgZ2l2ZW4gZW5kcG9pbnRcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0KHVyaTogc3RyaW5nLCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KChiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKSkgKyB1cmksIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcclxuICB9XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogV3JhcHBlZCBIVFRQIFBVVCBtZXRob2RcclxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcclxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIGJlICdwb3N0ZWQnXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgUFVUIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHVibGljIHB1dCh1cmk6IHN0cmluZywgZGF0YT86IGFueSwgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCgoYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCkpICsgdXJpLCBkYXRhLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIGdldEpzb24odXJpOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KHVyaSwgYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCksIHtyZXNwb25zZVR5cGU6ICdqc29uJ30pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogV3JhcHBlZCBIVFRQIFBPU1QgbWV0aG9kXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXHJcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSAncG9zdGVkJ1xyXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXHJcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXHJcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBPU1QgZW5kcG9pbnRcclxuICAgKi9cclxuICBwdWJsaWMgcG9zdCh1cmk6IHN0cmluZywgZGF0YT8sIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYmFzZVVyaSA9IGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpO1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6ICcnO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke2Jhc2VVcml9JHt1cml9YCwgcGF5bG9hZCwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybXMgYSBtdWx0aXBhcnQgZm9ybSBkYXRhIFBPU1QgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gdXJpIFRoZSB0YXJnZXQgUkVTVCBVUklcclxuICAgKiBAcGFyYW0gZm9ybURhdGEgRm9ybURhdGEgdG8gYmUgJ3Bvc3RlZCdcclxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBQT1NUIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHVibGljIHBvc3RNdWx0aVBhcnQodXJpOiBzdHJpbmcsIGZvcm1EYXRhOiBGb3JtRGF0YSwgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBiYXNlVXJpID0gYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICBoZWFkZXJzLmRlbGV0ZSgnQ29udGVudC1UeXBlJyk7XHJcbiAgICBjb25zdCByZXFPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7aGVhZGVyczogaGVhZGVyc30sIHJlcXVlc3RPcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtiYXNlVXJpfSR7dXJpfWAsIGZvcm1EYXRhLCByZXFPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyYXBwZWQgSFRUUCBERUxFVEUgbWV0aG9kXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgREVMRVRFIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHVibGljIGRlbCh1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSgoYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCkpICsgdXJpLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICogU29mdCB1cGRhdGUgZm9yIGxpc3RzIC0gZW5hYmxlcyBncmlkIHRvIGhhbmRsZSBhbGwgY2hhbmdlc1xyXG4gICAqIHRvIGFkZCBuZXcgLSBvbmx5IGl0ZW0gc2hvdWxkIGJlIHNwZWNpZmllZFxyXG4gICAqIHRvIHJlbW92ZSAtIG9ubHkgaWQgc2hvdWxkIGJlIHNwZWNpZmllZFxyXG4gICAqIHRvIHVwZGF0ZSAtIGJvdGggcGFyYW1zIHNob3VsZCBiZSBzcGVjaWZpZWRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBhbnlbXSBsaXN0IE9yaWdpbmFsIGxpc3Qgb2YgaXRlbXNcclxuICAgKiBAcGFyYW0gaWQ/OiBzdHJpbmc7IGl0ZW0/OiBhbnkgZGF0YVtdXHJcbiAgICogQHJldHVybnMgYW55W11cclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlKGxpc3Q6IGFueVtdLCBkYXRhOiB7IGlkPzogc3RyaW5nLCBpdGVtPzogYW55IH1bXSkge1xyXG4gICAgZGF0YS5mb3JFYWNoKCh7aWQsIGl0ZW19KSA9PiB7XHJcbiAgICAgIGlmIChpZCkge1xyXG4gICAgICAgIGNvbnN0IF9pdGVtID0gbGlzdC5maW5kKGwgPT4gbC5pZCA9PT0gaWQpO1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oX2l0ZW0sIGl0ZW0sIGl0ZW0gPyB7X191cGRhdGVkOiB0cnVlfSA6IHtfX3JlbW92ZWQ6IHRydWV9KTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtKSB7XHJcbiAgICAgICAgbGlzdC51bnNoaWZ0KE9iamVjdC5hc3NpZ24oaXRlbSwge19fYWRkZWQ6IHRydWV9KSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICogQ2FjaGUgZm9yIHNtYWxsIHJlcXVlc3RzIGxpa2UgaWNvbnMgYW5kIGNvbmZpZ3NcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdHJpbmcgdXJpXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcHVibGljIGdldFZpYUNhY2hlKHVyaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmICh0aGlzLmNhY2hlLmhhcyh1cmkpKSB7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5jYWNoZS5nZXQodXJpKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRWaWFUZW1wQ2FjaGUodXJpLCAoKSA9PiB0aGlzLmh0dHAuZ2V0KHVyaSwge3Jlc3BvbnNlVHlwZTogJ3RleHQnfSkucGlwZShcclxuICAgICAgICB0YXAodGV4dCA9PiB0aGlzLmNhY2hlLnNldCh1cmksIHRleHQpKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqIFRlbXBvcmFyeSBDYWNoZSBmb3IgbXVsdGlwbGUgaWRlbnRpY2FsIHJlcXVlc3RzXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIGlkXHJcbiAgICogQHBhcmFtIEZ1bmN0aW9uIHJlcXVlc3RcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VmlhVGVtcENhY2hlKGlkOiBzdHJpbmcsIHJlcXVlc3Q/OiBGdW5jdGlvbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy50ZW1wLmhhcyhpZCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMudGVtcC5nZXQoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzcCA9IChyZXF1ZXN0ID8gcmVxdWVzdCgpIDogdGhpcy5nZXQoaWQpKS5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMudGVtcC5kZWxldGUoaWQpKSxcclxuICAgICAgICBzaGFyZVJlcGxheSgxKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnRlbXAuc2V0KGlkLCByZXNwKTtcclxuICAgICAgcmV0dXJuIHJlc3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEb3dubG9hZCB0aGUgY29udGVudCBvZiBkbXMgb2JqZWN0cy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBEbXNPYmplY3RbXSBkbXNPYmplY3RzIEFycmF5IG9mIGRtcyBvYmplY3RzIHRvIGJlIGRvd25sb2FkZWRcclxuICAgKiBAcGFyYW0gXCJQREZcIiB8IFwiVElGRlwiIHwgXCJURVhUXCIgfCBcIkpQRUdcIiByZW5kaXRpb24gVGhlIHR5cGUgb2YgcmVuZGl0aW9uIHRvIGJlIGRvd25sb2FkZWQuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBvcmlnaW5hbCBjb250ZW50IHdpbGwgYmUgZG93bmxvYWRlZC5cclxuICAgKiBQb3NzaWJsZSByZW5kaXRpb25zIGFyZSBgUERGYCwgYFRJRkZgLCBgVEVYVGAsIGBKUEVHYC5cclxuICAgKi9cclxuICBwdWJsaWMgZG93bmxvYWRDb250ZW50KGRtc09iamVjdHM6IERtc09iamVjdFtdLCByZW5kaXRpb24/OiAnUERGJyB8ICdUSUZGJyB8ICdURVhUJyB8ICdKUEVHJywgZmlsZU5hbWVXaXRoVmVyc2lvbk51bWJlcj86IGJvb2xlYW4pIHtcclxuXHJcbiAgICBkbXNPYmplY3RzLmZvckVhY2goZG1zT2JqZWN0ID0+IHtcclxuICAgICAgaWYgKGRtc09iamVjdC5jb250ZW50KSB7XHJcblxyXG4gICAgICAgIGxldCB1cmkgPSBgJHt0aGlzLmdldFNlcnZpY2VCYXNlKCl9L2Rtcy8ke2Rtc09iamVjdC5jb250ZW50LmlkfS9jb250ZW50P3R5cGU9JHtkbXNPYmplY3QuY29udGVudC50eXBlfSZhc2Rvd25sb2FkPXRydWVgO1xyXG4gICAgICAgIGlmIChyZW5kaXRpb24pIHtcclxuICAgICAgICAgIHVyaSArPSBgJnJlbmRpdGlvbj0ke3JlbmRpdGlvbn0mX2ludGVudD1ET1dOTE9BRF8ke3JlbmRpdGlvbn1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB1cmkgKz0gJyZfaW50ZW50PURPV05MT0FEJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRtc09iamVjdC5jb250ZW50LmlkID09PSBkbXNPYmplY3QuaWQpIHtcclxuICAgICAgICAgIHVyaSArPSBgJnZlcnNpb249JHtkbXNPYmplY3QudmVyc2lvbn1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvd25sb2FkKHVyaSwgZmlsZU5hbWVXaXRoVmVyc2lvbk51bWJlciA/IGRtc09iamVjdC52ZXJzaW9uIDogbnVsbCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ1RoZSBwcm92aWRlZCBkbXMgb2JqZWN0IGhhcyBubyBjb250ZW50JywgZG1zT2JqZWN0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG93bmxvYWQodXJpOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpIHtcclxuICAgIHRoaXMuaHR0cC5nZXQodXJpLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnYmxvYid9KVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKFxyXG4gICAgICAgICAgcmVzLmJvZHksXHJcbiAgICAgICAgICB0aGlzLmdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXMsIHZlcnNpb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbGVOYW1lRnJvbUh0dHBSZXNwb25zZShyZXM6IEh0dHBSZXNwb25zZTxhbnk+LCB2ZXJzaW9uOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlciA9IHJlcy5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpIHx8ICcnO1xyXG4gICAgY29uc3QgZW5jb2RlZEZpbGVOYW1lTWF0Y2hSZXN1bHQgPSBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIubWF0Y2goJ2ZpbGVuYW1lXFxcXCo9VVRGLThcXCdcXCcoLiopJyk7XHJcbiAgICBjb25zdCBlbmNvZGVkRmlsZU5hbWUgPSBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdCA/IGVuY29kZWRGaWxlTmFtZU1hdGNoUmVzdWx0WzFdIDogbnVsbDtcclxuICAgIGNvbnN0IGZpbGVuYW1lID0gZW5jb2RlZEZpbGVOYW1lID8gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRGaWxlTmFtZSkgOiAndW5rbm93bic7XHJcbiAgICBjb25zdCBpbmRleCA9ICF+ZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKSA/IGZpbGVuYW1lLmxlbmd0aCA6IGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJyk7XHJcbiAgICByZXR1cm4gIXZlcnNpb24gPyBmaWxlbmFtZSA6IGAke2ZpbGVuYW1lLnNsaWNlKDAsIGluZGV4KX1fdiR7dmVyc2lvbn0ke2ZpbGVuYW1lLnNsaWNlKGluZGV4KX1gO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgdGhlIEhUVFAgSGVhZGVyc1xyXG4gICAqXHJcbiAgICogQHJldHVybnMgSHR0cEhlYWRlcnNcclxuICAgKi9cclxuICBwcml2YXRlIHNldERlZmF1bHRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnWC1vcy1pbmNsdWRlLWxpbmtzJzogJ2ZhbHNlJyxcclxuICAgICAgJ1gtb3MtaW5jbHVkZS1hY3Rpb25zJzogJ2ZhbHNlJyxcclxuICAgICAgJ1gtb3Mtc3luYy1pbmRleCc6ICd0cnVlJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBQyxNQUFNLEVBQU8sR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRCxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFJeEMsT0FBTyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQXlCckQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBU3pCOztPQUVHO0lBQ0gsWUFBb0IsSUFBZ0IsRUFDaEIsTUFBYyxFQUNkLE1BQWM7UUFGZCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWjNCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUdqRCxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUMvQixTQUFJLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksQ0FB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RixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNqRyxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNLLGlCQUFpQjtRQUN2QixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsb0JBQW9CLEVBQUUsT0FBTztZQUM3QixzQkFBc0IsRUFBRSxPQUFPO1lBQy9CLGlCQUFpQixFQUFFLE1BQU07U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBelVGLFVBQVU7OztZQXZDSCxVQUFVO1lBS1YsTUFBTTtZQUhOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQge2ZpbHRlciwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7SUh0dHBPcHRpb25zfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvaHR0cC1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQge0Rtc09iamVjdH0gZnJvbSAnLi4vLi4vbW9kZWwvZG1zLW9iamVjdC5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xyXG5pbXBvcnQge0F1dGhQcm9maWxlfSBmcm9tICcuLi9hdXRoL2F1dGgtcHJvZmlsZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0h0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XHJcbmltcG9ydCB7ZmluYWxpemUsIHNoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vKipcclxuICogSHR0cE9wdGlvbnMgZm9yIGh0dHAgcmVxdWVzdFxyXG4gKiBAcGFyYW0gb2JzZXJ2ZTogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnXHJcbiAqIEBwYXJhbSByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCdcclxuICovXHJcbiBleHBvcnQgaW50ZXJmYWNlIEh0dHBPcHRpb25zIHtcclxuICBoZWFkZXJzPzpcclxuICAgIHwgSHR0cEhlYWRlcnNcclxuICAgIHwge1xyXG4gICAgICAgIFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gICAgICB9O1xyXG4gIG9ic2VydmU/OiBhbnk7XHJcbiAgcGFyYW1zPzpcclxuICAgIHwgSHR0cFBhcmFtc1xyXG4gICAgfCB7XHJcbiAgICAgICAgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgICAgfTtcclxuICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XHJcbiAgcmVzcG9uc2VUeXBlPzogYW55O1xyXG4gIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogYEJhY2tlbmRTZXJ2aWNlYCBlbmNhcHN1bGF0ZXMgdGhlIGNvbW11bmljYXRpb24gd2l0aCB0aGUgeXV1dmlzPHN1cD4mcmVnOzwvc3VwPiBSQUQgUkVTVCBlbmRwb2ludHMuXHJcbiAqXHJcbiAqIEFzIHl1dXZpczxzdXA+JnJlZzs8L3N1cD4gUkFEIHByb3ZpZGVzIGRpZmZlcmVudCBzZXJ2aWNlcywgdGhpcyBzZXJ2aWNlIGlzIGFsc28gY2FwYWJsZSBvZiBwcm92aWRpbmcgdGhlIGJhc2UgVVJJcyBmb3IgdGhvc2Ugc2VydmljZXMuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYWNrZW5kU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBncmlkRGF0YUZpbHRlciA9IGZpbHRlcigodjogYW55KSA9PiAhdi5fX3JlbW92ZWQpO1xyXG5cclxuICBwcml2YXRlIGF1dGhQcm9maWxlOiBBdXRoUHJvZmlsZTtcclxuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcclxuICBwcml2YXRlIHRlbXAgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gIHByaXZhdGUgaGVhZGVycyA9IHRoaXMuc2V0RGVmYXVsdEhlYWRlcnMoKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGRlZmF1bHQgcHJvZmlsZSBpcyBzdXBwb3NlZCB0byB1c2UgTlRMTVxyXG4gICAgICogQHR5cGUge2hvc3Q6IHN0cmluZzsgbnRsbTogYm9vbGVhbn1cclxuICAgICAqL1xyXG4gICAgdGhpcy5hdXRoUHJvZmlsZSA9IHtcclxuICAgICAgaG9zdDogJycsXHJcbiAgICAgIG50bG06IHRydWVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgcHVibGljIHNldEF1dGhQcm9maWxlKHByb2ZpbGU/OiBBdXRoUHJvZmlsZSkge1xyXG4gICAgaWYgKHByb2ZpbGUpIHtcclxuICAgICAgdGhpcy5oZWFkZXJzID0gdGhpcy5zZXREZWZhdWx0SGVhZGVycygpO1xyXG4gICAgICB0aGlzLmF1dGhQcm9maWxlID0gcHJvZmlsZTtcclxuICAgICAgaWYgKHRoaXMuYXV0aFByb2ZpbGUuYXV0aCkge1xyXG4gICAgICAgIC8vIHRoaXMuc2V0SGVhZGVyKCdBdXRob3JpemF0aW9uJywgdGhpcy5hdXRoUHJvZmlsZS5hdXRoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmhlYWRlcnMuZGVsZXRlKCdBdXRob3JpemF0aW9uJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBuZXcgaGVhZGVyLlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGhlYWRlcnMgbmFtZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWVcclxuICAgKi9cclxuICBwdWJsaWMgc2V0SGVhZGVyKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVycyA9IHRoaXMuaGVhZGVycy5zZXQoa2V5LCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgaGVhZGVyc1xyXG4gICAqIEByZXR1cm5zIFRoZSBgSHR0cEhlYWRlcnNgIHRoYXQgYXJlIGN1cnJlbnRseSBzZXQgdXBcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogSHR0cE9wdGlvbnMge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe2hlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpfSwgcmVxdWVzdE9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBETVMtU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldFNlcnZpY2VCYXNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9zdCgpICsgdGhpcy5jb25maWcuZ2V0VXJpKCdzZXJ2aWNlQmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBTZWFyY2gtU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldFNlYXJjaEJhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ3NlYXJjaEJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgQ29udGV4dC1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0Q29udGV4dEJhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ2NvbnRleHRCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIEluYm94LVNlcnZpY2UgZW5kcG9pbnRcclxuICAgKiBAcmV0dXJucyBCYXNlIFVSSVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRJbmJveEJhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ2luYm94QmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYmFzZSBVUkkgZm9yIHRoZSBCUE0tU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldEJwbUJhc2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0KCkgKyB0aGlzLmNvbmZpZy5nZXRVcmkoJ2JwbUJhc2UnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGJhc2UgVVJJIGZvciB0aGUgQWdlbnQtU2VydmljZSBlbmRwb2ludFxyXG4gICAqIEByZXR1cm5zIEJhc2UgVVJJXHJcbiAgICovXHJcbiAgcHVibGljIGdldEFnZW50QmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnYWdlbnRCYXNlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBiYXNlIFVSSSBmb3IgdGhlIFN0YXR1cy1TZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgQmFzZSBVUklcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U3RhdHVzQmFzZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEhvc3QoKSArIHRoaXMuY29uZmlnLmdldFVyaSgnc3RhdHVzQmFzZScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRJY29uQmFzZShpZDogc3RyaW5nID0gJycpIHtcclxuICAgIHJldHVybiB0aGlzLmdldFNlcnZpY2VCYXNlKCkgKyAnL3VpL2ljb24vJyArIGlkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRIb3N0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYXV0aFByb2ZpbGUuaG9zdCB8fCAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyYXBwZWQgSFRUUCBHRVQgbWV0aG9kXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgUkVTVCBVUkkgdG8gYmUgcXVlcmllZFxyXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXHJcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXHJcbiAgICogQHJldHVybnMgVGhlIGRhdGEgcmV0cmlldmVkIGZyb20gdGhlIGdpdmVuIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHVibGljIGdldCh1cmk6IHN0cmluZywgYmFzZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCgoYmFzZSB8fCB0aGlzLmdldFNlcnZpY2VCYXNlKCkpICsgdXJpLCB0aGlzLmdldEh0dHBPcHRpb25zKHJlcXVlc3RPcHRpb25zKSk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFdyYXBwZWQgSFRUUCBQVVQgbWV0aG9kXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXHJcbiAgICogQHBhcmFtIGRhdGEgRGF0YSB0byBiZSAncG9zdGVkJ1xyXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXHJcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXHJcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IFBVVCBlbmRwb2ludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwdXQodXJpOiBzdHJpbmcsIGRhdGE/OiBhbnksIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoKGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpKSArIHVyaSwgZGF0YSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRKc29uKHVyaTogc3RyaW5nLCBiYXNlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmdldCh1cmksIGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpLCB7cmVzcG9uc2VUeXBlOiAnanNvbid9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdyYXBwZWQgSFRUUCBQT1NUIG1ldGhvZFxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxyXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgJ3Bvc3RlZCdcclxuICAgKiBAcGFyYW0gYmFzZSBUaGUgQmFzZSBVUkkgKGJhY2tlbmQgc2VydmljZSkgdG8gYmUgdXNlZFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0T3B0aW9ucyBBZGRpdGlvbmFsIHJlcXVlc3Qgb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHRhcmdldCBQT1NUIGVuZHBvaW50XHJcbiAgICovXHJcbiAgcHVibGljIHBvc3QodXJpOiBzdHJpbmcsIGRhdGE/LCBiYXNlPzogc3RyaW5nLCByZXF1ZXN0T3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJhc2VVcmkgPSBiYXNlIHx8IHRoaXMuZ2V0U2VydmljZUJhc2UoKTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiAnJztcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtiYXNlVXJpfSR7dXJpfWAsIHBheWxvYWQsIHRoaXMuZ2V0SHR0cE9wdGlvbnMocmVxdWVzdE9wdGlvbnMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm1zIGEgbXVsdGlwYXJ0IGZvcm0gZGF0YSBQT1NUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdGFyZ2V0IFJFU1QgVVJJXHJcbiAgICogQHBhcmFtIGZvcm1EYXRhIEZvcm1EYXRhIHRvIGJlICdwb3N0ZWQnXHJcbiAgICogQHBhcmFtIGJhc2UgVGhlIEJhc2UgVVJJIChiYWNrZW5kIHNlcnZpY2UpIHRvIGJlIHVzZWRcclxuICAgKiBAcGFyYW0gcmVxdWVzdE9wdGlvbnMgQWRkaXRpb25hbCByZXF1ZXN0IG9wdGlvbnNcclxuICAgKiBAcmV0dXJucyBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB0YXJnZXQgUE9TVCBlbmRwb2ludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwb3N0TXVsdGlQYXJ0KHVyaTogc3RyaW5nLCBmb3JtRGF0YTogRm9ybURhdGEsIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYmFzZVVyaSA9IGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgaGVhZGVycy5kZWxldGUoJ0NvbnRlbnQtVHlwZScpO1xyXG4gICAgY29uc3QgcmVxT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe2hlYWRlcnM6IGhlYWRlcnN9LCByZXF1ZXN0T3B0aW9ucyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7YmFzZVVyaX0ke3VyaX1gLCBmb3JtRGF0YSwgcmVxT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXcmFwcGVkIEhUVFAgREVMRVRFIG1ldGhvZFxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIHRhcmdldCBSRVNUIFVSSVxyXG4gICAqIEBwYXJhbSBiYXNlIFRoZSBCYXNlIFVSSSAoYmFja2VuZCBzZXJ2aWNlKSB0byBiZSB1c2VkXHJcbiAgICogQHBhcmFtIHJlcXVlc3RPcHRpb25zIEFkZGl0aW9uYWwgcmVxdWVzdCBvcHRpb25zXHJcbiAgICogQHJldHVybnMgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgdGFyZ2V0IERFTEVURSBlbmRwb2ludFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWwodXJpOiBzdHJpbmcsIGJhc2U/OiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoKGJhc2UgfHwgdGhpcy5nZXRTZXJ2aWNlQmFzZSgpKSArIHVyaSwgdGhpcy5nZXRIdHRwT3B0aW9ucyhyZXF1ZXN0T3B0aW9ucykpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqIFNvZnQgdXBkYXRlIGZvciBsaXN0cyAtIGVuYWJsZXMgZ3JpZCB0byBoYW5kbGUgYWxsIGNoYW5nZXNcclxuICAgKiB0byBhZGQgbmV3IC0gb25seSBpdGVtIHNob3VsZCBiZSBzcGVjaWZpZWRcclxuICAgKiB0byByZW1vdmUgLSBvbmx5IGlkIHNob3VsZCBiZSBzcGVjaWZpZWRcclxuICAgKiB0byB1cGRhdGUgLSBib3RoIHBhcmFtcyBzaG91bGQgYmUgc3BlY2lmaWVkXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYW55W10gbGlzdCBPcmlnaW5hbCBsaXN0IG9mIGl0ZW1zXHJcbiAgICogQHBhcmFtIGlkPzogc3RyaW5nOyBpdGVtPzogYW55IGRhdGFbXVxyXG4gICAqIEByZXR1cm5zIGFueVtdXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZShsaXN0OiBhbnlbXSwgZGF0YTogeyBpZD86IHN0cmluZywgaXRlbT86IGFueSB9W10pIHtcclxuICAgIGRhdGEuZm9yRWFjaCgoe2lkLCBpdGVtfSkgPT4ge1xyXG4gICAgICBpZiAoaWQpIHtcclxuICAgICAgICBjb25zdCBfaXRlbSA9IGxpc3QuZmluZChsID0+IGwuaWQgPT09IGlkKTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKF9pdGVtLCBpdGVtLCBpdGVtID8ge19fdXBkYXRlZDogdHJ1ZX0gOiB7X19yZW1vdmVkOiB0cnVlfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbSkge1xyXG4gICAgICAgIGxpc3QudW5zaGlmdChPYmplY3QuYXNzaWduKGl0ZW0sIHtfX2FkZGVkOiB0cnVlfSkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqIENhY2hlIGZvciBzbWFsbCByZXF1ZXN0cyBsaWtlIGljb25zIGFuZCBjb25maWdzXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIHVyaVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRWaWFDYWNoZSh1cmk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy5jYWNoZS5oYXModXJpKSkge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuY2FjaGUuZ2V0KHVyaSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmlhVGVtcENhY2hlKHVyaSwgKCkgPT4gdGhpcy5odHRwLmdldCh1cmksIHtyZXNwb25zZVR5cGU6ICd0ZXh0J30pLnBpcGUoXHJcbiAgICAgICAgdGFwKHRleHQgPT4gdGhpcy5jYWNoZS5zZXQodXJpLCB0ZXh0KSkpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKiBUZW1wb3JhcnkgQ2FjaGUgZm9yIG11bHRpcGxlIGlkZW50aWNhbCByZXF1ZXN0c1xyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBpZFxyXG4gICAqIEBwYXJhbSBGdW5jdGlvbiByZXF1ZXN0XHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcHVibGljIGdldFZpYVRlbXBDYWNoZShpZDogc3RyaW5nLCByZXF1ZXN0PzogRnVuY3Rpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMudGVtcC5oYXMoaWQpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRlbXAuZ2V0KGlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc3AgPSAocmVxdWVzdCA/IHJlcXVlc3QoKSA6IHRoaXMuZ2V0KGlkKSkucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLnRlbXAuZGVsZXRlKGlkKSksXHJcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy50ZW1wLnNldChpZCwgcmVzcCk7XHJcbiAgICAgIHJldHVybiByZXNwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWQgdGhlIGNvbnRlbnQgb2YgZG1zIG9iamVjdHMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gRG1zT2JqZWN0W10gZG1zT2JqZWN0cyBBcnJheSBvZiBkbXMgb2JqZWN0cyB0byBiZSBkb3dubG9hZGVkXHJcbiAgICogQHBhcmFtIFwiUERGXCIgfCBcIlRJRkZcIiB8IFwiVEVYVFwiIHwgXCJKUEVHXCIgcmVuZGl0aW9uIFRoZSB0eXBlIG9mIHJlbmRpdGlvbiB0byBiZSBkb3dubG9hZGVkLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgb3JpZ2luYWwgY29udGVudCB3aWxsIGJlIGRvd25sb2FkZWQuXHJcbiAgICogUG9zc2libGUgcmVuZGl0aW9ucyBhcmUgYFBERmAsIGBUSUZGYCwgYFRFWFRgLCBgSlBFR2AuXHJcbiAgICovXHJcbiAgcHVibGljIGRvd25sb2FkQ29udGVudChkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgcmVuZGl0aW9uPzogJ1BERicgfCAnVElGRicgfCAnVEVYVCcgfCAnSlBFRycsIGZpbGVOYW1lV2l0aFZlcnNpb25OdW1iZXI/OiBib29sZWFuKSB7XHJcblxyXG4gICAgZG1zT2JqZWN0cy5mb3JFYWNoKGRtc09iamVjdCA9PiB7XHJcbiAgICAgIGlmIChkbXNPYmplY3QuY29udGVudCkge1xyXG5cclxuICAgICAgICBsZXQgdXJpID0gYCR7dGhpcy5nZXRTZXJ2aWNlQmFzZSgpfS9kbXMvJHtkbXNPYmplY3QuY29udGVudC5pZH0vY29udGVudD90eXBlPSR7ZG1zT2JqZWN0LmNvbnRlbnQudHlwZX0mYXNkb3dubG9hZD10cnVlYDtcclxuICAgICAgICBpZiAocmVuZGl0aW9uKSB7XHJcbiAgICAgICAgICB1cmkgKz0gYCZyZW5kaXRpb249JHtyZW5kaXRpb259Jl9pbnRlbnQ9RE9XTkxPQURfJHtyZW5kaXRpb259YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdXJpICs9ICcmX2ludGVudD1ET1dOTE9BRCc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkbXNPYmplY3QuY29udGVudC5pZCA9PT0gZG1zT2JqZWN0LmlkKSB7XHJcbiAgICAgICAgICB1cmkgKz0gYCZ2ZXJzaW9uPSR7ZG1zT2JqZWN0LnZlcnNpb259YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZCh1cmksIGZpbGVOYW1lV2l0aFZlcnNpb25OdW1iZXIgPyBkbXNPYmplY3QudmVyc2lvbiA6IG51bGwpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdUaGUgcHJvdmlkZWQgZG1zIG9iamVjdCBoYXMgbm8gY29udGVudCcsIGRtc09iamVjdCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRvd25sb2FkKHVyaTogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmh0dHAuZ2V0KHVyaSwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ2Jsb2InfSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhcclxuICAgICAgICAgIHJlcy5ib2R5LFxyXG4gICAgICAgICAgdGhpcy5nZXRGaWxlTmFtZUZyb21IdHRwUmVzcG9uc2UocmVzLCB2ZXJzaW9uKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGaWxlTmFtZUZyb21IdHRwUmVzcG9uc2UocmVzOiBIdHRwUmVzcG9uc2U8YW55PiwgdmVyc2lvbjogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb25IZWFkZXIgPSByZXMuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKSB8fCAnJztcclxuICAgIGNvbnN0IGVuY29kZWRGaWxlTmFtZU1hdGNoUmVzdWx0ID0gY29udGVudERpc3Bvc2l0aW9uSGVhZGVyLm1hdGNoKCdmaWxlbmFtZVxcXFwqPVVURi04XFwnXFwnKC4qKScpXHJcbiAgICAgIHx8IGNvbnRlbnREaXNwb3NpdGlvbkhlYWRlci5tYXRjaCgnZmlsZW5hbWU9XFxcIiguKilcXFwiJyk7XHJcbiAgICBjb25zdCBlbmNvZGVkRmlsZU5hbWUgPSBlbmNvZGVkRmlsZU5hbWVNYXRjaFJlc3VsdCA/IGVuY29kZWRGaWxlTmFtZU1hdGNoUmVzdWx0WzFdIDogbnVsbDtcclxuICAgIGNvbnN0IGZpbGVuYW1lID0gZW5jb2RlZEZpbGVOYW1lID8gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRGaWxlTmFtZSkgOiAndW5rbm93bic7XHJcbiAgICBjb25zdCBpbmRleCA9ICF+ZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKSA/IGZpbGVuYW1lLmxlbmd0aCA6IGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJyk7XHJcbiAgICByZXR1cm4gIXZlcnNpb24gPyBmaWxlbmFtZSA6IGAke2ZpbGVuYW1lLnNsaWNlKDAsIGluZGV4KX1fdiR7dmVyc2lvbn0ke2ZpbGVuYW1lLnNsaWNlKGluZGV4KX1gO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgdGhlIEhUVFAgSGVhZGVyc1xyXG4gICAqXHJcbiAgICogQHJldHVybnMgSHR0cEhlYWRlcnNcclxuICAgKi9cclxuICBwcml2YXRlIHNldERlZmF1bHRIZWFkZXJzKCk6IEh0dHBIZWFkZXJzIHtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnWC1vcy1pbmNsdWRlLWxpbmtzJzogJ2ZhbHNlJyxcclxuICAgICAgJ1gtb3MtaW5jbHVkZS1hY3Rpb25zJzogJ2ZhbHNlJyxcclxuICAgICAgJ1gtb3Mtc3luYy1pbmRleCc6ICd0cnVlJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -274,6 +274,21 @@ export class PrepareService {
|
|
|
274
274
|
}
|
|
275
275
|
return uri;
|
|
276
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Deletes a prepared creation object content element by index or the complete content.
|
|
279
|
+
* If you provide an index the content consists only of one element,
|
|
280
|
+
* the content is completely removed from the prepared creation object.
|
|
281
|
+
*
|
|
282
|
+
* @param preparedItemId ID of the item with the content to be removed
|
|
283
|
+
* @param index Parameter that determines which content element should be deleted.
|
|
284
|
+
* @returns Observable<PreparedItem> The updated prepared item
|
|
285
|
+
*/
|
|
286
|
+
deletePreparedItemContent(preparedItemId, index) {
|
|
287
|
+
const url = `/prepare/${preparedItemId}/content` + (index !== undefined ? `?index=${index}` : '');
|
|
288
|
+
return this.backend
|
|
289
|
+
.del(url)
|
|
290
|
+
.pipe(map(res => new PreparedItem(res)));
|
|
291
|
+
}
|
|
277
292
|
}
|
|
278
293
|
PrepareService.decorators = [
|
|
279
294
|
{ type: Injectable }
|
|
@@ -282,4 +297,4 @@ PrepareService.ctorParameters = () => [
|
|
|
282
297
|
{ type: BackendService },
|
|
283
298
|
{ type: UploadService }
|
|
284
299
|
];
|
|
285
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQWEsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUF1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFpQjdEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFBb0IsT0FBdUIsRUFDdkIsYUFBNEI7UUFENUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFSeEMsd0JBQW1CLEdBQUcsSUFBSSxhQUFhLENBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzVELG1CQUFjLEdBQStCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUdwRiw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUN4RCx1QkFBa0IsR0FBdUIsSUFBSSxDQUFDLHVCQUF1QixDQUFD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LEVBQUU7Z0JBQ3pDLFVBQVUsRUFBRSxDQUFDLGNBQWM7Z0JBQzNCLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ2hILENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzs7WUFoVUYsVUFBVTs7O1lBekJILGNBQWM7WUFJZCxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttZXJnZU1hcCwgbWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtVdGlsc30gZnJvbSAnLi4vLi4vdXRpbC91dGlscyc7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gJy4uL2JhY2tlbmQvYmFja2VuZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtPYmplY3RUeXBlfSBmcm9tICcuLi8uLi9tb2RlbC9vYmplY3QtdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7UHJlcGFyZWRJdGVtLCBQcmVwYXJlZEl0ZW1UZW1wbGF0ZX0gZnJvbSAnLi4vLi4vbW9kZWwvcHJlcGFyZWQtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7VXBsb2FkU2VydmljZX0gZnJvbSAnLi4vdXBsb2FkL3VwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtVcGxvYWRUYXJnZXR9IGZyb20gJy4uLy4uL21vZGVsL3VwbG9hZC10YXJnZXQubW9kZWwnO1xyXG5pbXBvcnQge1VwbG9hZEZpbGVJdGVtfSBmcm9tICcuLi8uLi9tb2RlbC91cGxvYWQtZmlsZS1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHtJUHJlcGFyZUNoaWxkVHlwZXN9IGZyb20gJy4vb2JqZWN0VHlwZXMuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVkUG9zdFBhcmFtIHtcclxuICBwYXJlbnRJZDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byBjcmVhdGUgb25lIFByZXBhcmVkSXRlbSB1c2luZyBtdWx0aXBsZSBmaWxlcyB1cGxvYWRlZCAoZmFsc2UpXHJcbiAgICogb3IgY3JlYXRpbmcgYSBQcmVwYXJlZEl0ZW0gZm9yIGVhY2ggZmlsZSBwb3N0ZWQgdG8gdGhlIFVSTCAodHJ1ZSlcclxuICAgKi9cclxuICBjcmVhdGVNYW55PzogYm9vbGVhbjtcclxuICBjaGlsZFR5cGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2xsZWN0aW9uIG9mIFByZXBhcmUgU2VydmljZXNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByZXBhcmVTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1zOiBQcmVwYXJlZEl0ZW1bXTtcclxuICBwcml2YXRlIHByZXBhcmVkSXRlbXNTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxQcmVwYXJlZEl0ZW1bXT4oMSk7XHJcbiAgcHVibGljIHByZXBhcmVkSXRlbXMkOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPiA9IHRoaXMucHJlcGFyZWRJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1Db3VudDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcHJlcGFyZWRJdGVtQ291bnRTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpO1xyXG4gIHB1YmxpYyBwcmVwYXJlZEl0ZW1Db3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPiA9IHRoaXMucHJlcGFyZWRJdGVtQ291bnRTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1cGxvYWRTZXJ2aWNlOiBVcGxvYWRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQdWJsaWMgRmV0Y2ggUHJlcGFyZSBpdGVtc1xyXG4gICAqL1xyXG4gIHJlZnJlc2hQcmVwYXJlZEl0ZW1zQ291bnQoKSB7XHJcbiAgICB0aGlzLmZldGNoUHJlcGFyZWRJdGVtc0NvdW50KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBudW1iZXIgb2YgcHJlcGFyZWQgaXRlbXMgZm9yIHRoZSBjdXJyZW50IHVzZXIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBmZXRjaFByZXBhcmVkSXRlbXNDb3VudCgpIHtcclxuICAgIHRoaXMuYmFja2VuZC5nZXRKc29uKCcvcHJlcGFyZS9zdGF0ZScpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzKSA9PiByZXMuY291bnQpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW1Db3VudCA9IHJlcztcclxuICAgICAgICB0aGlzLnByZXBhcmVkSXRlbUNvdW50U291cmNlLm5leHQodGhpcy5wcmVwYXJlZEl0ZW1Db3VudCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHByZXBhcmVkIGl0ZW0gb24gdGhlIGJhY2tlZCBzaWRlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmVudElkIFRoZSBJRCBvZiB0aGUgcGFyZW50IGRtcyBvYmplY3QgdG8gYWRkIHRoZSBwcmVwYXJlZCBpdGVtIHRvXHJcbiAgICogQHBhcmFtIGNoaWxkVHlwZSBUaGUgdHlwZSBvZiBvYmplY3QgdG8gYmUgY3JlYXRlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVQcmVwYXJlZEl0ZW0ocGFyZW50SWQ6IHN0cmluZywgY2hpbGRUeXBlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wb3N0KHRoaXMuY3JlYXRlUHJlcGFyZWRJdGVtUG9zdFVybCh7XHJcbiAgICAgICAgcGFyZW50SWQ6IHBhcmVudElkLFxyXG4gICAgICAgIGNoaWxkVHlwZTogY2hpbGRUeXBlID8gY2hpbGRUeXBlIDogbnVsbFxyXG4gICAgICB9KSwge30pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZFxyXG4gICAqIEBwYXJhbSBkYXRhXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZVByZXBhcmVkSXRlbUluZGV4RGF0YShwcmVwYXJlZEl0ZW1JZCwgZGF0YSkge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucHV0KCcvcHJlcGFyZS8nICsgcHJlcGFyZWRJdGVtSWQsIGRhdGEpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGFuIFVSTCBmb3IgY3JlYXRpbmcgYSBQcmVwYXJlZEl0ZW0uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcGFyYW1zIFBhcmFtcyBmb3IgZ2VuZXJhdGluZyBhcHByb3ByaWF0ZSB1cmkuXHJcbiAgICogQHJldHVybnMgc3RyaW5nIEEgUE9TVCBVUkwgZm9yIGNyZWF0aW5nIFByZXBhcmVkSXRlbXNcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlUHJlcGFyZWRJdGVtUG9zdFVybChwYXJhbXM6IFByZXBhcmVkUG9zdFBhcmFtKTogc3RyaW5nIHtcclxuXHJcbiAgICBsZXQgdXJsID0gcGFyYW1zLmNyZWF0ZU1hbnkgPyAnL3ByZXBhcmUvY3JlYXRlbWFueScgOiAnL3ByZXBhcmUvY3JlYXRlJztcclxuICAgIGlmIChwYXJhbXMpIHtcclxuICAgICAgdXJsID0gVXRpbHMuYnVpbGRVcmkodXJsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGxpc3Qgb2YgdGhlIHVzZXJzIHByZXBhcmVkIGl0ZW1zLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIG5vRm9ybXMgSWYgc2V0IHRvIHRydWUgdGhlIHByZXBhcmVkIGl0ZW1zIHdpbGwgYmUgZmV0Y2hlZCB3aXRob3V0IHRoZSBmb3JtIHdoaWNoIGlzIGZhc3RlclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8UHJlcGFyZWRJdGVtW10+IEEgY29sbGVjdGlvbiBvZiBwcmVwYXJlZCBpdGVtIG9iamVjdHNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UHJlcGFyZWRJdGVtcyQobm9Gb3Jtcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPiB7XHJcbiAgICB0aGlzLmZldGNoUHJlcGFyZWRJdGVtcyhub0Zvcm1zKS5zdWJzY3JpYmUoKTtcclxuICAgIHJldHVybiB0aGlzLnByZXBhcmVkSXRlbXMkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgUHJlcGFyZUl0ZW1zIGFuZCBmb3JtIHRoZW1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBib29sZWFuIG5vRm9ybXNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmV0Y2hQcmVwYXJlZEl0ZW1zKG5vRm9ybXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT4ge1xyXG4gICAgbGV0IHVyaSA9IChub0Zvcm1zKSA/ICcvcHJlcGFyZScgOiAnL3ByZXBhcmU/Zm9ybT10cnVlJztcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldEpzb24odXJpKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiByZXMubWFwKGkgPT4gbmV3IFByZXBhcmVkSXRlbShpKSkpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmZldGNoUHJlcGFyZWRJdGVtc0NvdW50KCkpLFxyXG4gICAgICAgIHRhcCgocHJlcGFyZWRJdGVtczogUHJlcGFyZWRJdGVtW10pID0+IHRoaXMucHJlcGFyZWRJdGVtc1NvdXJjZS5uZXh0KHByZXBhcmVkSXRlbXMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdjcmVhdGVkJywgJ2Rlc2MnKSkpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIHByZXBhcmVkIGl0ZW0uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWQgSUQgb2YgdGhlIGl0ZW0gdG8gYmUgcmVtb3ZlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PiBTZXJ2ZXIgcmVzcG9uc2VcclxuICAgKi9cclxuICBkZWxldGVQcmVwYXJlZEl0ZW0ocHJlcGFyZWRJdGVtSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5kZWwoYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIG9iamVjdCB0eXBlcyBhbGxvd2VkIHRvIGJlIHBsYWNlZCBkaXJlY3RseSBiZWxvdyByb290LlxyXG4gICAqXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPYmplY3RUeXBlW10+IEEgbGlzdCBvZiBzdXBwb3J0ZWQgb2JqZWN0IHR5cGVzXHJcbiAgICovXHJcbiAgcHVibGljIGdldFByZXBhcmVSb290VHlwZXMoKTogT2JzZXJ2YWJsZTxPYmplY3RUeXBlW10+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldFZpYVRlbXBDYWNoZSgnL3ByZXBhcmUvdHlwZXMnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlcykgPT4gcmVzLnR5cGVzLm1hcCgodHlwZSkgPT4gbmV3IE9iamVjdFR5cGUodHlwZSkpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgYWxsb3dlZCBjaGlsZCBvYmplY3QgdHlwZXMgZm9yIGEgc2VsZWN0ZWQgcGFyZW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmVudElkIFRoZSBpZCBvZiB0aGUgcGFyZW50IGRtcyBvYmplY3QgKGNvbnRleHQgZm9sZGVyKVxyXG4gICAqIEBwYXJhbSB3aXRoQ29udGVudE9ubHkgSWYgc2V0IHRvIHRydWUgb25seSBjaGlsZCB0eXBlcywgdGhhdCBzdXBwb3J0IGNvbnRlbnQgYXJlIHJldHVybmVkLlxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8SVByZXBhcmVDaGlsZFR5cGVzPiBBIGxpc3Qgb2Ygc3VwcG9ydGVkIG9iamVjdCB0eXBlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRQcmVwYXJlQ2hpbGRUeXBlcyhwYXJlbnRJZDogc3RyaW5nLCB3aXRoQ29udGVudE9ubHk/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxJUHJlcGFyZUNoaWxkVHlwZXM+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHBhcmVudElkID8ge3BhcmVudElkLCB3aXRoY29udGVudDogd2l0aENvbnRlbnRPbmx5fSA6IHt3aXRoY29udGVudDogd2l0aENvbnRlbnRPbmx5fVxyXG4gICAgY29uc3QgdXJpID0gVXRpbHMuYnVpbGRVcmkoJy9wcmVwYXJlL3R5cGVzJywgcGFyYW1zKTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldFZpYVRlbXBDYWNoZSh1cmkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gKHtwYXJlbnQ6IHJlcy5wYXJlbnQsIHR5cGVzOiByZXMudHlwZXMubWFwKCh0eXBlKSA9PiBuZXcgT2JqZWN0VHlwZSh0eXBlKSl9KSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGZldGNoIHRoZSBwcmV2aWV3IHVyaSBmb3IgYSBwcmVwYXJlZCBpdGVtXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBwcmVwYXJlZCBpdGVtXHJcbiAgICogQHBhcmFtIGluZGV4IFdoZW4gYSBwcmVwYXJlZCBpdGVtIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgY29udGVudHMsIHRoZSBpbmRleCBzcGVjaWZpZXMgd2hpY2ggY29udGVudFxyXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxyXG4gICAqIHRvIHJldHJpZXZlIHRoZSBwcmV2aWV3IHVyaSBmb3JcclxuICAgKiBAcmV0dXJucyBzdHJpbmcgUHJldmlldyB1cmlcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UHJldmlld1VyaShpZDogc3RyaW5nLCBpbmRleD86IG51bWJlciwgcmVuZGl0aW9uPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vcHJlcGFyZS8ke2lkfS9jb250ZW50YCwge3JlbmRpdGlvbiwgaW5kZXh9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIHByZXBhcmVkIGl0ZW1zIHRhcmdldCBvYmplY3QgdHlwZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBvYmplY3RUeXBlIFRoZSB0YXJnZXQgb2JqZWN0IHR5cGVzIG5hbWVcclxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWQgVGhlIGlkIG9mIHRoZSBwcmVwYXJlZCBpdGVtIHRvIHNldCB0aGUgdHlwZSBmb3JcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4gVGhlIHVwZGF0ZWQgcHJlcGFyZWQgaXRlbVxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVDaGlsZFR5cGUob2JqZWN0VHlwZTogc3RyaW5nLCBwcmVwYXJlZEl0ZW1JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW0+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnB1dChgL3ByZXBhcmUvJHtwcmVwYXJlZEl0ZW1JZH0vJHtvYmplY3RUeXBlfT9mb3JtPXRydWUmY29udGVudG1ldGE9dHJ1ZWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gbmV3IFByZXBhcmVkSXRlbShyZXMpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgdGVtcGxhdGUgdG8gYSBwcmVwYXJlZCBpdGVtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbUlkIFRoZSBpZCBvZiB0aGUgcHJlcGFyZWQgaXRlbSB0byBhZGQgdGhlIHRlbXBsYXRlIHRvXHJcbiAgICogQHBhcmFtIHRlbXBsYXRlSWQgVGhlIGlkIG9mIHRoZSB0ZW1wbGF0ZSB0byBiZSBhZGRlZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8UHJlcGFyZWRJdGVtPiAgVGhlIHVwZGF0ZWQgcHJlcGFyZWQgaXRlbVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhZGRUZW1wbGF0ZShwcmVwYXJlZEl0ZW1JZCwgdGVtcGxhdGVJZCk6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wdXQoYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9L3RlbXBsYXRlP3RlbXBsYXRlaWQ9JHt0ZW1wbGF0ZUlkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gbmV3IFByZXBhcmVkSXRlbShyZXMpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBhIGxpc3Qgb2YgYXZhaWxhYmxlIHRlbXBsYXRlcyBmb3IgYSBnaXZlbiBvYmplY3QgdHlwZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVRlbXBsYXRlW10+IG9iamVjdFR5cGVOYW1lXHJcbiAgICovXHJcbiAgcHVibGljIGdldFRlbXBsYXRlcyhvYmplY3RUeXBlTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKCcvdGVtcGxhdGUvbGlzdD90eXBlPScgKyBvYmplY3RUeXBlTmFtZSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzIGFzIFByZXBhcmVkSXRlbVRlbXBsYXRlW10pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHVybCBvZiBhIHRlbXBsYXRlIHByZXZpZXdcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBUZW1wbGF0ZSBJRFxyXG4gICAqIEBwYXJhbSByZW5kaXRpb24gVGFyZ2V0IHJlbmRpdGlvbiAoUERGKVxyXG4gICAqIEByZXR1cm5zIHN0cmluZyBUaGUgdGVtcGxhdGUgcHJldmlldyB1cmwuXHJcbiAgICovXHJcbiAgcHVibGljIGdldFRlbXBsYXRlUHJldmlld1VyaShpZCwgcmVuZGl0aW9uPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVdGlscy5idWlsZFVyaShgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vdGVtcGxhdGUvJHtpZH0vY29udGVudGAsIHtyZW5kaXRpb259KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbW1pdCBhIHByZXBhcmVkIGl0ZW0uIFRoaXMgd2lsbCBjcmVhdGUgYW4gYWN0dWFsIGRtcyBvYmplY3QuXHJcbiAgICogVXBkYXRlcyB0aGUgcHJlcGFyZWQgY3JlYXRpb24gb2JqZWN0IHRhcmdldCB0eXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWQgSUQgb2YgdGhlIHByZXBhcmVkIGl0ZW1cclxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtVHlwZSBOYW1lIG9mIHRoZSBwcmVwYXJlZCBpdGVtcyB0YXJnZXQgb2JqZWN0IHR5cGVcclxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtRGF0YSBPYmplY3QgaG9sZGluZyBkYXRhIG9mIHRoZSBwcmVwYXJlZCBpdGVtXHJcbiAgICogQHJldHVybnMgVGhlIGlkIG9mIHRoZSBjcmVhdGVkIGRtcyBvYmplY3RcclxuICAgKi9cclxuICBwdWJsaWMgY29tbWl0UHJlcGFyZWRJdGVtKHByZXBhcmVkSXRlbUlkLCBwcmVwYXJlZEl0ZW1UeXBlLCBwcmVwYXJlZEl0ZW1EYXRhKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnB1dChgL3ByZXBhcmUvJHtwcmVwYXJlZEl0ZW1JZH0vJHtwcmVwYXJlZEl0ZW1UeXBlfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuYmFja2VuZC5wb3N0KGAvcHJlcGFyZS9jb21taXQvJHtwcmVwYXJlZEl0ZW1JZH1gLCBwcmVwYXJlZEl0ZW1EYXRhKSksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSksXHJcbiAgICAgICAgbWFwKHJlcyA9PiByZXMuaWQpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGxvYWQgQ29udGVudFxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBwcmVwYXJlZEl0ZW1JZFxyXG4gICAqIEBwYXJhbSBGaWxlIGZpbGVcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICB1cGxvYWRDb250ZW50KHByZXBhcmVkSXRlbUlkOiBzdHJpbmcsIGZpbGU6IEZpbGUpIHtcclxuICAgIGNvbnN0IHVyaSA9IGAke3RoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpfS9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9L2NvbnRlbnQuanNvbj9mb3JtPXRydWUmY29udGVudG1ldGE9dHJ1ZWA7XHJcbiAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlXHJcbiAgICAgIC51cGxvYWQodXJpLCBbZmlsZV0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIC8vIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGxvYWRzIGZpbGVzIHRvIGFuIHVwbG9hZCB0YXJnZXQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXBsb2FkVGFyZ2V0IFRoZSB1cGxvYWQgdGFyZ2V0IHRvIHVwbG9hZCBmaWxlcyB0b1xyXG4gICAqIEBwYXJhbSB1cGxvYWRGaWxlcyBGaWxlcyB0byBiZSB1cGxvYWRlZFxyXG4gICAqIEBwYXJhbSB1c2VCYXRjaFVwbG9hZCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXNlIGJhdGNoIHByb2Nlc3Npbmcgb24gdGhlIGJhY2tlbmQgc2lkZVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHVwbG9hZFRvVGFyZ2V0KHVwbG9hZFRhcmdldDogVXBsb2FkVGFyZ2V0LCB1cGxvYWRGaWxlczogVXBsb2FkRmlsZUl0ZW1bXSwgdXNlQmF0Y2hVcGxvYWQ/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICBjb25zdCBmaWxlcyA9IHVwbG9hZEZpbGVzLm1hcChmID0+IGYuX2ZpbGUpO1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkU2VydmljZVxyXG4gICAgICAudXBsb2FkKHRoaXMuZ2V0VXBsb2FkVGFyZ2V0KHVwbG9hZFRhcmdldCwgdXNlQmF0Y2hVcGxvYWQpLCBmaWxlcylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuZ2V0UHJlcGFyZWRJdGVtcyQoKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgdXJpIHRvIHBvc3QgZmlsZXMgdG8gYmFzZWQgb24gdGhlIHVwbG9hZCB0YXJnZXQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXBsb2FkVGFyZ2V0IFRoZSB0YXJnZXQgdG8gdXBsb2FkIGZpbGVzIHRvXHJcbiAgICogQHBhcmFtIHVzZUJhdGNoVXBsb2FkIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0byB1cGxvYWQgYWxsIGZpbGVzIGluIGEgc2luZ2xlIHBvc3RcclxuICAgKiBAcmV0dXJucyBzdHJpbmcgdGhlIHVyaVxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0VXBsb2FkVGFyZ2V0KHVwbG9hZFRhcmdldDogVXBsb2FkVGFyZ2V0LCB1c2VCYXRjaFVwbG9hZD86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgbGV0IHVyaTtcclxuXHJcbiAgICBpZiAodXBsb2FkVGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5ST09UKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiB1cGxvYWQgdG8gZ2VuZXJhbCBmaWxpbmcgbG9jYXRpb25cclxuICAgICAgICpcclxuICAgICAgICogQHR5cGUgc3RyaW5nXHJcbiAgICAgICAqL1xyXG4gICAgICB1cmkgPSB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKSArIHRoaXMuY3JlYXRlUHJlcGFyZWRJdGVtUG9zdFVybCh7XHJcbiAgICAgICAgICBwYXJlbnRJZDogbnVsbCxcclxuICAgICAgICAgIGNyZWF0ZU1hbnk6ICF1c2VCYXRjaFVwbG9hZFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuT0JKRUNUKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiB1cGxvYWQgdG8gZG1zIG9iamVjdCwgbWVhbnMgYWRkaW5nIG9yIHJlcGxhY2luZyBjb250ZW50IGZpbGVcclxuICAgICAgICovXHJcbiAgICAgIGNvbnN0IHtyZWZlcmVuY2VPYmplY3R9ID0gdXBsb2FkVGFyZ2V0O1xyXG4gICAgICB1cmkgPSBgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vZG1zLyR7cmVmZXJlbmNlT2JqZWN0LmlkfS9jb250ZW50cz90eXBlPSR7cmVmZXJlbmNlT2JqZWN0LnR5cGUubmFtZX1gO1xyXG5cclxuICAgIH0gZWxzZSBpZiAodXBsb2FkVGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5DT05URVhUIHx8IHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVF9UUkVFKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiB1cGxvYWQgdG8gY29udGV4dCBmb2xkZXIsIG1lYW5zIGFkZGluZyBhIG5ldyBkbXMgb2JqZWN0IHRvIGEgc3BlY2lmaWNcclxuICAgICAgICogY29udGV4dCBmb2xkZXIgLi4uXHJcbiAgICAgICAqIC4uLiBpZiB3ZSBnb3QgYSBzdWJGb2xkZXIgKG5vZGUgZnJvbSB0aGUgY29udGV4dCB0cmVlKSBzZXQgdXAgd2UnbGwgYWRkIHRoYXQgdG9vXHJcbiAgICAgICAqXHJcbiAgICAgICAqIEB0eXBlIHN0cmluZ1xyXG4gICAgICAgKi9cclxuICAgICAgdXJpID0gdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyB0aGlzLmNyZWF0ZVByZXBhcmVkSXRlbVBvc3RVcmwoe1xyXG4gICAgICAgIHBhcmVudElkOiB1cGxvYWRUYXJnZXQucmVmZXJlbmNlT2JqZWN0LmlkLFxyXG4gICAgICAgIGNyZWF0ZU1hbnk6ICF1c2VCYXRjaFVwbG9hZCxcclxuICAgICAgICBjaGlsZFR5cGU6IHVwbG9hZFRhcmdldC5zdWJGb2xkZXIgJiYgdXBsb2FkVGFyZ2V0LnN1YkZvbGRlci5kYXRhLnR5cGUgPyB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyLmRhdGEudHlwZSA6IG51bGxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcGFyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9zZXJ2aWNlL3ByZXBhcmUvcHJlcGFyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQWEsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsWUFBWSxFQUF1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFpQjdEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFVekIsWUFBb0IsT0FBdUIsRUFDdkIsYUFBNEI7UUFENUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDdkIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFSeEMsd0JBQW1CLEdBQUcsSUFBSSxhQUFhLENBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzVELG1CQUFjLEdBQStCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUdwRiw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUN4RCx1QkFBa0IsR0FBdUIsSUFBSSxDQUFDLHVCQUF1QixDQUFD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LEVBQUU7Z0JBQ3pDLFVBQVUsRUFBRSxDQUFDLGNBQWM7Z0JBQzNCLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQ2hILENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSx5QkFBeUIsQ0FBQyxjQUFzQixFQUFFLEtBQWM7UUFDckUsTUFBTSxHQUFHLEdBQUcsWUFBWSxjQUFjLFVBQVUsR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDaEIsR0FBRyxDQUFDLEdBQUcsQ0FBQzthQUNSLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNsQyxDQUFDO0lBQ04sQ0FBQzs7O1lBbFZGLFVBQVU7OztZQXpCSCxjQUFjO1lBSWQsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWVyZ2VNYXAsIG1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tICcuLi9iYWNrZW5kL2JhY2tlbmQuc2VydmljZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7T2JqZWN0VHlwZX0gZnJvbSAnLi4vLi4vbW9kZWwvb2JqZWN0LXR5cGUubW9kZWwnO1xyXG5pbXBvcnQge1ByZXBhcmVkSXRlbSwgUHJlcGFyZWRJdGVtVGVtcGxhdGV9IGZyb20gJy4uLy4uL21vZGVsL3ByZXBhcmVkLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQge1VwbG9hZFNlcnZpY2V9IGZyb20gJy4uL3VwbG9hZC91cGxvYWQuc2VydmljZSc7XHJcbmltcG9ydCB7VXBsb2FkVGFyZ2V0fSBmcm9tICcuLi8uLi9tb2RlbC91cGxvYWQtdGFyZ2V0Lm1vZGVsJztcclxuaW1wb3J0IHtVcGxvYWRGaWxlSXRlbX0gZnJvbSAnLi4vLi4vbW9kZWwvdXBsb2FkLWZpbGUtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7SVByZXBhcmVDaGlsZFR5cGVzfSBmcm9tICcuL29iamVjdFR5cGVzLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcmVwYXJlZFBvc3RQYXJhbSB7XHJcbiAgcGFyZW50SWQ6IHN0cmluZztcclxuICAvKipcclxuICAgKiBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gY3JlYXRlIG9uZSBQcmVwYXJlZEl0ZW0gdXNpbmcgbXVsdGlwbGUgZmlsZXMgdXBsb2FkZWQgKGZhbHNlKVxyXG4gICAqIG9yIGNyZWF0aW5nIGEgUHJlcGFyZWRJdGVtIGZvciBlYWNoIGZpbGUgcG9zdGVkIHRvIHRoZSBVUkwgKHRydWUpXHJcbiAgICovXHJcbiAgY3JlYXRlTWFueT86IGJvb2xlYW47XHJcbiAgY2hpbGRUeXBlPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQ29sbGVjdGlvbiBvZiBQcmVwYXJlIFNlcnZpY2VzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcmVwYXJlU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZWRJdGVtczogUHJlcGFyZWRJdGVtW107XHJcbiAgcHJpdmF0ZSBwcmVwYXJlZEl0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJlcGFyZWRJdGVtW10+KDEpO1xyXG4gIHB1YmxpYyBwcmVwYXJlZEl0ZW1zJDogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT4gPSB0aGlzLnByZXBhcmVkSXRlbXNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZWRJdGVtQ291bnQ6IG51bWJlcjtcclxuICBwcml2YXRlIHByZXBhcmVkSXRlbUNvdW50U291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcclxuICBwdWJsaWMgcHJlcGFyZWRJdGVtQ291bnQkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLnByZXBhcmVkSXRlbUNvdW50U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUHVibGljIEZldGNoIFByZXBhcmUgaXRlbXNcclxuICAgKi9cclxuICByZWZyZXNoUHJlcGFyZWRJdGVtc0NvdW50KCkge1xyXG4gICAgdGhpcy5mZXRjaFByZXBhcmVkSXRlbXNDb3VudCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgbnVtYmVyIG9mIHByZXBhcmVkIGl0ZW1zIGZvciB0aGUgY3VycmVudCB1c2VyLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZmV0Y2hQcmVwYXJlZEl0ZW1zQ291bnQoKSB7XHJcbiAgICB0aGlzLmJhY2tlbmQuZ2V0SnNvbignL3ByZXBhcmUvc3RhdGUnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlcykgPT4gcmVzLmNvdW50KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMucHJlcGFyZWRJdGVtQ291bnQgPSByZXM7XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlZEl0ZW1Db3VudFNvdXJjZS5uZXh0KHRoaXMucHJlcGFyZWRJdGVtQ291bnQpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBwcmVwYXJlZCBpdGVtIG9uIHRoZSBiYWNrZWQgc2lkZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwYXJlbnRJZCBUaGUgSUQgb2YgdGhlIHBhcmVudCBkbXMgb2JqZWN0IHRvIGFkZCB0aGUgcHJlcGFyZWQgaXRlbSB0b1xyXG4gICAqIEBwYXJhbSBjaGlsZFR5cGUgVGhlIHR5cGUgb2Ygb2JqZWN0IHRvIGJlIGNyZWF0ZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlUHJlcGFyZWRJdGVtKHBhcmVudElkOiBzdHJpbmcsIGNoaWxkVHlwZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdCh0aGlzLmNyZWF0ZVByZXBhcmVkSXRlbVBvc3RVcmwoe1xyXG4gICAgICAgIHBhcmVudElkOiBwYXJlbnRJZCxcclxuICAgICAgICBjaGlsZFR5cGU6IGNoaWxkVHlwZSA/IGNoaWxkVHlwZSA6IG51bGxcclxuICAgICAgfSksIHt9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5nZXRQcmVwYXJlZEl0ZW1zJCgpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWRcclxuICAgKiBAcGFyYW0gZGF0YVxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YW55PlxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVQcmVwYXJlZEl0ZW1JbmRleERhdGEocHJlcGFyZWRJdGVtSWQsIGRhdGEpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnB1dCgnL3ByZXBhcmUvJyArIHByZXBhcmVkSXRlbUlkLCBkYXRhKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5nZXRQcmVwYXJlZEl0ZW1zJCgpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhbiBVUkwgZm9yIGNyZWF0aW5nIGEgUHJlcGFyZWRJdGVtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHBhcmFtcyBQYXJhbXMgZm9yIGdlbmVyYXRpbmcgYXBwcm9wcmlhdGUgdXJpLlxyXG4gICAqIEByZXR1cm5zIHN0cmluZyBBIFBPU1QgVVJMIGZvciBjcmVhdGluZyBQcmVwYXJlZEl0ZW1zXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZVByZXBhcmVkSXRlbVBvc3RVcmwocGFyYW1zOiBQcmVwYXJlZFBvc3RQYXJhbSk6IHN0cmluZyB7XHJcblxyXG4gICAgbGV0IHVybCA9IHBhcmFtcy5jcmVhdGVNYW55ID8gJy9wcmVwYXJlL2NyZWF0ZW1hbnknIDogJy9wcmVwYXJlL2NyZWF0ZSc7XHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIHVybCA9IFV0aWxzLmJ1aWxkVXJpKHVybCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBsaXN0IG9mIHRoZSB1c2VycyBwcmVwYXJlZCBpdGVtcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBub0Zvcm1zIElmIHNldCB0byB0cnVlIHRoZSBwcmVwYXJlZCBpdGVtcyB3aWxsIGJlIGZldGNoZWQgd2l0aG91dCB0aGUgZm9ybSB3aGljaCBpcyBmYXN0ZXJcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbVtdPiBBIGNvbGxlY3Rpb24gb2YgcHJlcGFyZWQgaXRlbSBvYmplY3RzXHJcbiAgICovXHJcbiAgcHVibGljIGdldFByZXBhcmVkSXRlbXMkKG5vRm9ybXM/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT4ge1xyXG4gICAgdGhpcy5mZXRjaFByZXBhcmVkSXRlbXMobm9Gb3Jtcykuc3Vic2NyaWJlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5wcmVwYXJlZEl0ZW1zJDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIFByZXBhcmVJdGVtcyBhbmQgZm9ybSB0aGVtXHJcbiAgICpcclxuICAgKiBAcGFyYW0gYm9vbGVhbiBub0Zvcm1zXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1bXT5cclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoUHJlcGFyZWRJdGVtcyhub0Zvcm1zPzogYm9vbGVhbik6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtW10+IHtcclxuICAgIGxldCB1cmkgPSAobm9Gb3JtcykgPyAnL3ByZXBhcmUnIDogJy9wcmVwYXJlP2Zvcm09dHJ1ZSc7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKHVyaSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLm1hcChpID0+IG5ldyBQcmVwYXJlZEl0ZW0oaSkpKSxcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5mZXRjaFByZXBhcmVkSXRlbXNDb3VudCgpKSxcclxuICAgICAgICB0YXAoKHByZXBhcmVkSXRlbXM6IFByZXBhcmVkSXRlbVtdKSA9PiB0aGlzLnByZXBhcmVkSXRlbXNTb3VyY2UubmV4dChwcmVwYXJlZEl0ZW1zLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnY3JlYXRlZCcsICdkZXNjJykpKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBwcmVwYXJlZCBpdGVtLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbUlkIElEIG9mIHRoZSBpdGVtIHRvIGJlIHJlbW92ZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT4gU2VydmVyIHJlc3BvbnNlXHJcbiAgICovXHJcbiAgZGVsZXRlUHJlcGFyZWRJdGVtKHByZXBhcmVkSXRlbUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZGVsKGAvcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaGVzIGEgbGlzdCBvZiBvYmplY3QgdHlwZXMgYWxsb3dlZCB0byBiZSBwbGFjZWQgZGlyZWN0bHkgYmVsb3cgcm9vdC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8T2JqZWN0VHlwZVtdPiBBIGxpc3Qgb2Ygc3VwcG9ydGVkIG9iamVjdCB0eXBlc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRQcmVwYXJlUm9vdFR5cGVzKCk6IE9ic2VydmFibGU8T2JqZWN0VHlwZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRWaWFUZW1wQ2FjaGUoJy9wcmVwYXJlL3R5cGVzJylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXMpID0+IHJlcy50eXBlcy5tYXAoKHR5cGUpID0+IG5ldyBPYmplY3RUeXBlKHR5cGUpKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIGFsbG93ZWQgY2hpbGQgb2JqZWN0IHR5cGVzIGZvciBhIHNlbGVjdGVkIHBhcmVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwYXJlbnRJZCBUaGUgaWQgb2YgdGhlIHBhcmVudCBkbXMgb2JqZWN0IChjb250ZXh0IGZvbGRlcilcclxuICAgKiBAcGFyYW0gd2l0aENvbnRlbnRPbmx5IElmIHNldCB0byB0cnVlIG9ubHkgY2hpbGQgdHlwZXMsIHRoYXQgc3VwcG9ydCBjb250ZW50IGFyZSByZXR1cm5lZC5cclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPElQcmVwYXJlQ2hpbGRUeXBlcz4gQSBsaXN0IG9mIHN1cHBvcnRlZCBvYmplY3QgdHlwZXNcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UHJlcGFyZUNoaWxkVHlwZXMocGFyZW50SWQ6IHN0cmluZywgd2l0aENvbnRlbnRPbmx5PzogYm9vbGVhbik6IE9ic2VydmFibGU8SVByZXBhcmVDaGlsZFR5cGVzPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBwYXJlbnRJZCA/IHtwYXJlbnRJZCwgd2l0aGNvbnRlbnQ6IHdpdGhDb250ZW50T25seX0gOiB7d2l0aGNvbnRlbnQ6IHdpdGhDb250ZW50T25seX1cclxuICAgIGNvbnN0IHVyaSA9IFV0aWxzLmJ1aWxkVXJpKCcvcHJlcGFyZS90eXBlcycsIHBhcmFtcyk7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRWaWFUZW1wQ2FjaGUodXJpKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAocmVzID0+ICh7cGFyZW50OiByZXMucGFyZW50LCB0eXBlczogcmVzLnR5cGVzLm1hcCgodHlwZSkgPT4gbmV3IE9iamVjdFR5cGUodHlwZSkpfSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBmZXRjaCB0aGUgcHJldmlldyB1cmkgZm9yIGEgcHJlcGFyZWQgaXRlbVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgcHJlcGFyZWQgaXRlbVxyXG4gICAqIEBwYXJhbSBpbmRleCBXaGVuIGEgcHJlcGFyZWQgaXRlbSBjb250YWlucyBtb3JlIHRoYW4gb25lIGNvbnRlbnRzLCB0aGUgaW5kZXggc3BlY2lmaWVzIHdoaWNoIGNvbnRlbnRcclxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIFRhcmdldCByZW5kaXRpb24gKFBERilcclxuICAgKiB0byByZXRyaWV2ZSB0aGUgcHJldmlldyB1cmkgZm9yXHJcbiAgICogQHJldHVybnMgc3RyaW5nIFByZXZpZXcgdXJpXHJcbiAgICovXHJcbiAgcHVibGljIGdldFByZXZpZXdVcmkoaWQ6IHN0cmluZywgaW5kZXg/OiBudW1iZXIsIHJlbmRpdGlvbj86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoYCR7dGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCl9L3ByZXBhcmUvJHtpZH0vY29udGVudGAsIHtyZW5kaXRpb24sIGluZGV4fSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSBwcmVwYXJlZCBpdGVtcyB0YXJnZXQgb2JqZWN0IHR5cGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gb2JqZWN0VHlwZSBUaGUgdGFyZ2V0IG9iamVjdCB0eXBlcyBuYW1lXHJcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbUlkIFRoZSBpZCBvZiB0aGUgcHJlcGFyZWQgaXRlbSB0byBzZXQgdGhlIHR5cGUgZm9yXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW0+IFRoZSB1cGRhdGVkIHByZXBhcmVkIGl0ZW1cclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQ2hpbGRUeXBlKG9iamVjdFR5cGU6IHN0cmluZywgcHJlcGFyZWRJdGVtSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wdXQoYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9LyR7b2JqZWN0VHlwZX0/Zm9ybT10cnVlJmNvbnRlbnRtZXRhPXRydWVgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAocmVzID0+IG5ldyBQcmVwYXJlZEl0ZW0ocmVzKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBhIHRlbXBsYXRlIHRvIGEgcHJlcGFyZWQgaXRlbS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBwcmVwYXJlZEl0ZW1JZCBUaGUgaWQgb2YgdGhlIHByZXBhcmVkIGl0ZW0gdG8gYWRkIHRoZSB0ZW1wbGF0ZSB0b1xyXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZUlkIFRoZSBpZCBvZiB0aGUgdGVtcGxhdGUgdG8gYmUgYWRkZWRcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4gIFRoZSB1cGRhdGVkIHByZXBhcmVkIGl0ZW1cclxuICAgKi9cclxuICBwdWJsaWMgYWRkVGVtcGxhdGUocHJlcGFyZWRJdGVtSWQsIHRlbXBsYXRlSWQpOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucHV0KGAvcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfS90ZW1wbGF0ZT90ZW1wbGF0ZWlkPSR7dGVtcGxhdGVJZH1gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAocmVzID0+IG5ldyBQcmVwYXJlZEl0ZW0ocmVzKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgYSBsaXN0IG9mIGF2YWlsYWJsZSB0ZW1wbGF0ZXMgZm9yIGEgZ2l2ZW4gb2JqZWN0IHR5cGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gT2JzZXJ2YWJsZTxQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdPiBvYmplY3RUeXBlTmFtZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZXMob2JqZWN0VHlwZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8UHJlcGFyZWRJdGVtVGVtcGxhdGVbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbignL3RlbXBsYXRlL2xpc3Q/dHlwZT0nICsgb2JqZWN0VHlwZU5hbWUpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcyBhcyBQcmVwYXJlZEl0ZW1UZW1wbGF0ZVtdKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB1cmwgb2YgYSB0ZW1wbGF0ZSBwcmV2aWV3XHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgVGVtcGxhdGUgSURcclxuICAgKiBAcGFyYW0gcmVuZGl0aW9uIFRhcmdldCByZW5kaXRpb24gKFBERilcclxuICAgKiBAcmV0dXJucyBzdHJpbmcgVGhlIHRlbXBsYXRlIHByZXZpZXcgdXJsLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRUZW1wbGF0ZVByZXZpZXdVcmkoaWQsIHJlbmRpdGlvbj86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbHMuYnVpbGRVcmkoYCR7dGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCl9L3RlbXBsYXRlLyR7aWR9L2NvbnRlbnRgLCB7cmVuZGl0aW9ufSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb21taXQgYSBwcmVwYXJlZCBpdGVtLiBUaGlzIHdpbGwgY3JlYXRlIGFuIGFjdHVhbCBkbXMgb2JqZWN0LlxyXG4gICAqIFVwZGF0ZXMgdGhlIHByZXBhcmVkIGNyZWF0aW9uIG9iamVjdCB0YXJnZXQgdHlwZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbUlkIElEIG9mIHRoZSBwcmVwYXJlZCBpdGVtXHJcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbVR5cGUgTmFtZSBvZiB0aGUgcHJlcGFyZWQgaXRlbXMgdGFyZ2V0IG9iamVjdCB0eXBlXHJcbiAgICogQHBhcmFtIHByZXBhcmVkSXRlbURhdGEgT2JqZWN0IGhvbGRpbmcgZGF0YSBvZiB0aGUgcHJlcGFyZWQgaXRlbVxyXG4gICAqIEByZXR1cm5zIFRoZSBpZCBvZiB0aGUgY3JlYXRlZCBkbXMgb2JqZWN0XHJcbiAgICovXHJcbiAgcHVibGljIGNvbW1pdFByZXBhcmVkSXRlbShwcmVwYXJlZEl0ZW1JZCwgcHJlcGFyZWRJdGVtVHlwZSwgcHJlcGFyZWRJdGVtRGF0YSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5wdXQoYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9LyR7cHJlcGFyZWRJdGVtVHlwZX1gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmJhY2tlbmQucG9zdChgL3ByZXBhcmUvY29tbWl0LyR7cHJlcGFyZWRJdGVtSWR9YCwgcHJlcGFyZWRJdGVtRGF0YSkpLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpLFxyXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmlkKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkIENvbnRlbnRcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzdHJpbmcgcHJlcGFyZWRJdGVtSWRcclxuICAgKiBAcGFyYW0gRmlsZSBmaWxlXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhbnk+XHJcbiAgICovXHJcbiAgdXBsb2FkQ29udGVudChwcmVwYXJlZEl0ZW1JZDogc3RyaW5nLCBmaWxlOiBGaWxlKSB7XHJcbiAgICBjb25zdCB1cmkgPSBgJHt0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKX0vcHJlcGFyZS8ke3ByZXBhcmVkSXRlbUlkfS9jb250ZW50Lmpzb24/Zm9ybT10cnVlJmNvbnRlbnRtZXRhPXRydWVgO1xyXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkU2VydmljZVxyXG4gICAgICAudXBsb2FkKHVyaSwgW2ZpbGVdKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICAvLyB0YXAoKCkgPT4gdGhpcy5nZXRQcmVwYXJlZEl0ZW1zJCgpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBsb2FkcyBmaWxlcyB0byBhbiB1cGxvYWQgdGFyZ2V0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVwbG9hZFRhcmdldCBUaGUgdXBsb2FkIHRhcmdldCB0byB1cGxvYWQgZmlsZXMgdG9cclxuICAgKiBAcGFyYW0gdXBsb2FkRmlsZXMgRmlsZXMgdG8gYmUgdXBsb2FkZWRcclxuICAgKiBAcGFyYW0gdXNlQmF0Y2hVcGxvYWQgRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBiYXRjaCBwcm9jZXNzaW5nIG9uIHRoZSBiYWNrZW5kIHNpZGVcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFueT5cclxuICAgKi9cclxuICB1cGxvYWRUb1RhcmdldCh1cGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldCwgdXBsb2FkRmlsZXM6IFVwbG9hZEZpbGVJdGVtW10sIHVzZUJhdGNoVXBsb2FkPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgY29uc3QgZmlsZXMgPSB1cGxvYWRGaWxlcy5tYXAoZiA9PiBmLl9maWxlKTtcclxuICAgIHJldHVybiB0aGlzLnVwbG9hZFNlcnZpY2VcclxuICAgICAgLnVwbG9hZCh0aGlzLmdldFVwbG9hZFRhcmdldCh1cGxvYWRUYXJnZXQsIHVzZUJhdGNoVXBsb2FkKSwgZmlsZXMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmdldFByZXBhcmVkSXRlbXMkKCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIHVyaSB0byBwb3N0IGZpbGVzIHRvIGJhc2VkIG9uIHRoZSB1cGxvYWQgdGFyZ2V0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVwbG9hZFRhcmdldCBUaGUgdGFyZ2V0IHRvIHVwbG9hZCBmaWxlcyB0b1xyXG4gICAqIEBwYXJhbSB1c2VCYXRjaFVwbG9hZCBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXBsb2FkIGFsbCBmaWxlcyBpbiBhIHNpbmdsZSBwb3N0XHJcbiAgICogQHJldHVybnMgc3RyaW5nIHRoZSB1cmlcclxuICAgKi9cclxuICBwcml2YXRlIGdldFVwbG9hZFRhcmdldCh1cGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldCwgdXNlQmF0Y2hVcGxvYWQ/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCB1cmk7XHJcblxyXG4gICAgaWYgKHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuUk9PVCkge1xyXG4gICAgICAvKipcclxuICAgICAgICogdXBsb2FkIHRvIGdlbmVyYWwgZmlsaW5nIGxvY2F0aW9uXHJcbiAgICAgICAqXHJcbiAgICAgICAqIEB0eXBlIHN0cmluZ1xyXG4gICAgICAgKi9cclxuICAgICAgdXJpID0gdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCkgKyB0aGlzLmNyZWF0ZVByZXBhcmVkSXRlbVBvc3RVcmwoe1xyXG4gICAgICAgICAgcGFyZW50SWQ6IG51bGwsXHJcbiAgICAgICAgICBjcmVhdGVNYW55OiAhdXNlQmF0Y2hVcGxvYWRcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfSBlbHNlIGlmICh1cGxvYWRUYXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0Lk9CSkVDVCkge1xyXG4gICAgICAvKipcclxuICAgICAgICogdXBsb2FkIHRvIGRtcyBvYmplY3QsIG1lYW5zIGFkZGluZyBvciByZXBsYWNpbmcgY29udGVudCBmaWxlXHJcbiAgICAgICAqL1xyXG4gICAgICBjb25zdCB7cmVmZXJlbmNlT2JqZWN0fSA9IHVwbG9hZFRhcmdldDtcclxuICAgICAgdXJpID0gYCR7dGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKCl9L2Rtcy8ke3JlZmVyZW5jZU9iamVjdC5pZH0vY29udGVudHM/dHlwZT0ke3JlZmVyZW5jZU9iamVjdC50eXBlLm5hbWV9YDtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVCB8fCB1cGxvYWRUYXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LkNPTlRFWFRfVFJFRSkge1xyXG4gICAgICAvKipcclxuICAgICAgICogdXBsb2FkIHRvIGNvbnRleHQgZm9sZGVyLCBtZWFucyBhZGRpbmcgYSBuZXcgZG1zIG9iamVjdCB0byBhIHNwZWNpZmljXHJcbiAgICAgICAqIGNvbnRleHQgZm9sZGVyIC4uLlxyXG4gICAgICAgKiAuLi4gaWYgd2UgZ290IGEgc3ViRm9sZGVyIChub2RlIGZyb20gdGhlIGNvbnRleHQgdHJlZSkgc2V0IHVwIHdlJ2xsIGFkZCB0aGF0IHRvb1xyXG4gICAgICAgKlxyXG4gICAgICAgKiBAdHlwZSBzdHJpbmdcclxuICAgICAgICovXHJcbiAgICAgIHVyaSA9IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpICsgdGhpcy5jcmVhdGVQcmVwYXJlZEl0ZW1Qb3N0VXJsKHtcclxuICAgICAgICBwYXJlbnRJZDogdXBsb2FkVGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5pZCxcclxuICAgICAgICBjcmVhdGVNYW55OiAhdXNlQmF0Y2hVcGxvYWQsXHJcbiAgICAgICAgY2hpbGRUeXBlOiB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyICYmIHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS50eXBlID8gdXBsb2FkVGFyZ2V0LnN1YkZvbGRlci5kYXRhLnR5cGUgOiBudWxsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVyaTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSBwcmVwYXJlZCBjcmVhdGlvbiBvYmplY3QgY29udGVudCBlbGVtZW50IGJ5IGluZGV4IG9yIHRoZSBjb21wbGV0ZSBjb250ZW50LlxyXG4gICAqIElmIHlvdSBwcm92aWRlIGFuIGluZGV4IHRoZSBjb250ZW50IGNvbnNpc3RzIG9ubHkgb2Ygb25lIGVsZW1lbnQsXHJcbiAgICogdGhlIGNvbnRlbnQgaXMgY29tcGxldGVseSByZW1vdmVkIGZyb20gdGhlIHByZXBhcmVkIGNyZWF0aW9uIG9iamVjdC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gcHJlcGFyZWRJdGVtSWQgSUQgb2YgdGhlIGl0ZW0gd2l0aCB0aGUgY29udGVudCB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIGluZGV4IFBhcmFtZXRlciB0aGF0IGRldGVybWluZXMgd2hpY2ggY29udGVudCBlbGVtZW50IHNob3VsZCBiZSBkZWxldGVkLlxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8UHJlcGFyZWRJdGVtPiBUaGUgdXBkYXRlZCBwcmVwYXJlZCBpdGVtXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZVByZXBhcmVkSXRlbUNvbnRlbnQocHJlcGFyZWRJdGVtSWQ6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpOiBPYnNlcnZhYmxlPFByZXBhcmVkSXRlbT4ge1xyXG4gICAgY29uc3QgdXJsID0gYC9wcmVwYXJlLyR7cHJlcGFyZWRJdGVtSWR9L2NvbnRlbnRgICsgKGluZGV4ICE9PSB1bmRlZmluZWQgPyBgP2luZGV4PSR7aW5kZXh9YCA6ICcnKTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmRlbCh1cmwpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gbmV3IFByZXBhcmVkSXRlbShyZXMpKVxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1121,7 +1121,8 @@ class BackendService {
|
|
|
1121
1121
|
}
|
|
1122
1122
|
getFileNameFromHttpResponse(res, version) {
|
|
1123
1123
|
const contentDispositionHeader = res.headers.get('Content-Disposition') || '';
|
|
1124
|
-
const encodedFileNameMatchResult = contentDispositionHeader.match('filename\\*=UTF-8\'\'(.*)')
|
|
1124
|
+
const encodedFileNameMatchResult = contentDispositionHeader.match('filename\\*=UTF-8\'\'(.*)')
|
|
1125
|
+
|| contentDispositionHeader.match('filename=\"(.*)\"');
|
|
1125
1126
|
const encodedFileName = encodedFileNameMatchResult ? encodedFileNameMatchResult[1] : null;
|
|
1126
1127
|
const filename = encodedFileName ? decodeURIComponent(encodedFileName) : 'unknown';
|
|
1127
1128
|
const index = !~filename.lastIndexOf('.') ? filename.length : filename.lastIndexOf('.');
|
|
@@ -2206,6 +2207,21 @@ class PrepareService {
|
|
|
2206
2207
|
}
|
|
2207
2208
|
return uri;
|
|
2208
2209
|
}
|
|
2210
|
+
/**
|
|
2211
|
+
* Deletes a prepared creation object content element by index or the complete content.
|
|
2212
|
+
* If you provide an index the content consists only of one element,
|
|
2213
|
+
* the content is completely removed from the prepared creation object.
|
|
2214
|
+
*
|
|
2215
|
+
* @param preparedItemId ID of the item with the content to be removed
|
|
2216
|
+
* @param index Parameter that determines which content element should be deleted.
|
|
2217
|
+
* @returns Observable<PreparedItem> The updated prepared item
|
|
2218
|
+
*/
|
|
2219
|
+
deletePreparedItemContent(preparedItemId, index) {
|
|
2220
|
+
const url = `/prepare/${preparedItemId}/content` + (index !== undefined ? `?index=${index}` : '');
|
|
2221
|
+
return this.backend
|
|
2222
|
+
.del(url)
|
|
2223
|
+
.pipe(map(res => new PreparedItem(res)));
|
|
2224
|
+
}
|
|
2209
2225
|
}
|
|
2210
2226
|
PrepareService.decorators = [
|
|
2211
2227
|
{ type: Injectable }
|