@eo-sdk/client 9.3.0-rc.1 → 9.3.0-rc.2
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/actions/actions/delete-action/delete/delete.component.d.ts +2 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +4 -3
- package/app/eo-framework-core/search/app-search.service.d.ts +5 -0
- package/assets/_default/i18n/de.json +6 -1
- package/assets/_default/i18n/en.json +6 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +71 -61
- 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 +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +40 -10
- 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/actions/actions/delete-action/delete/delete.component.js +14 -6
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +10 -4
- package/esm2015/app/eo-framework/ui/signature-tab/signature-tab.component.js +3 -3
- package/esm2015/app/eo-framework-core/search/app-search.service.js +15 -1
- package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +6 -2
- package/esm2015/projects/eo-sdk/core/lib/service/search/search-query.model.js +64 -62
- package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +5 -2
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +71 -62
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +38 -10
- 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/dms/dms.service.d.ts +2 -1
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +3 -1
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { forkJoin as observableForkJoin, from as observableFrom, of as observableOf, Subject } from 'rxjs';
|
|
2
2
|
import { pluck, switchMap } from 'rxjs/operators';
|
|
3
|
-
import { Component, EventEmitter, Output,
|
|
3
|
+
import { ChangeDetectorRef, Component, EventEmitter, Output, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
4
4
|
import { Router } from '@angular/router';
|
|
5
5
|
import { PageTitleService } from '../../../../eo-framework-core/title/page-title.service';
|
|
6
6
|
import { LocaleDatePipe } from '../../../../eo-framework-core/pipes/locale-date.pipe';
|
|
7
7
|
import { AppSearchService } from '../../../../eo-framework-core/search/app-search.service';
|
|
8
|
-
import {
|
|
8
|
+
import { CapabilitiesService, Logger, NotificationsService, PrepareService, RangeValue, SearchFilter, SearchQuery, SearchService, StoredQueriesService, StoredQuery, SystemService, TranslateService, UserService, Utils } from '@eo-sdk/core';
|
|
9
9
|
export var ContextType;
|
|
10
10
|
(function (ContextType) {
|
|
11
11
|
ContextType["sysroot"] = "sysroot";
|
|
@@ -439,7 +439,13 @@ export class AppSearchComponent {
|
|
|
439
439
|
}
|
|
440
440
|
toggleFilter(filterType, operator, key, selected) {
|
|
441
441
|
let filter = this.buildFilter(filterType, operator, key);
|
|
442
|
-
this.
|
|
442
|
+
if (filterType === this.PARAMS.FILESIZE) {
|
|
443
|
+
let folderFilter = this.buildFilter('folder', 'eq', false);
|
|
444
|
+
this.appSearchService.toggleQueryFilters([filter, folderFilter], !selected);
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
this.appSearchService.toggleQueryFilter(filter, !selected);
|
|
448
|
+
}
|
|
443
449
|
}
|
|
444
450
|
isEmpty(value) {
|
|
445
451
|
return (((value instanceof RangeValue || value instanceof SearchFilter) &&
|
|
@@ -725,4 +731,4 @@ AppSearchComponent.propDecorators = {
|
|
|
725
731
|
contextForm: [{ type: ViewChild, args: ['ctxform',] }],
|
|
726
732
|
onExecuteSearch: [{ type: Output }]
|
|
727
733
|
};
|
|
728
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9hcHAtc2hlbGwvYXBwLWJhci9hcHAtc2VhcmNoL2FwcC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxRQUFRLElBQUksa0JBQWtCLEVBQzlCLElBQUksSUFBSSxjQUFjLEVBQ3RCLEVBQUUsSUFBSSxZQUFZLEVBRWxCLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUdULFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLE1BQU0sRUFBbUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQVF4RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDekYsT0FBTyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsVUFBVSxFQUVWLFlBQVksRUFDWixXQUFXLEVBRVgsYUFBYSxFQUNiLGFBQWEsRUFDYixNQUFNLEVBQ04sbUJBQW1CLEVBRW5CLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsS0FBSyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFFakIsTUFBTSxjQUFjLENBQUM7QUFXdEIsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQixrQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBRlcsV0FBVyxLQUFYLFdBQVcsUUFFdEI7QUFVRCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0U3QixZQUNVLGdCQUFrQyxFQUNsQyxZQUE4QixFQUM5QixhQUE0QixFQUM1QixhQUE0QixFQUM1QixhQUFtQyxFQUNwQyxTQUEyQixFQUMxQixNQUFjLEVBQ2QsUUFBbUIsRUFDbkIsRUFBcUIsRUFDckIsb0JBQTBDLEVBQzFDLGlCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixjQUE4QixFQUM5QixNQUFjO1FBYmQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTdFeEIsV0FBTSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDakMsYUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFhakMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFJM0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFNbkIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLHNCQUFpQixHQUFHO1lBQ2xCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsYUFBYSxFQUFFLElBQUk7WUFDbkIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQztRQUVGLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUV2QixtQkFBYyxHQUFHO1lBQ2YsRUFBRSxFQUFFLElBQUk7WUFDUixJQUFJLEVBQUUsV0FBVyxDQUFDLE9BQU87WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDO1lBQzdELFNBQVMsRUFBRSxRQUFRO1lBQ25CLElBQUksRUFBRSxTQUFTO1lBQ2Ysa0JBQWtCLEVBQUU7Z0JBQ2xCLFNBQVMsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFDO2FBQ3ZDO1NBQ0YsQ0FBQztRQUVGLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFVbEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBdUIxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9FLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsT0FBTztnQkFDTCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO2dCQUM1RCxJQUFJLEVBQUUsSUFBSTthQUNYLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ25FLFdBQVcsQ0FBQyxtQkFBbUIsQ0FDaEMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDUixPQUFPO2dCQUNMLEdBQUcsRUFBRSxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHFCQUFxQixHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FDM0Q7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNwRSxXQUFXLENBQUMsbUJBQW1CLENBQ2hDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1IsT0FBTztnQkFDTCxHQUFHLEVBQUUsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMzQixxQkFBcUIsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQzNEO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDekUsV0FBVyxDQUFDLHFCQUFxQixDQUNsQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNSLE9BQU87Z0JBQ0wsR0FBRyxFQUFFLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLEtBQUssRUFBRSxFQUFFO2dCQUNULEtBQUssRUFBRSxXQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO2FBQzVDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3BFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FDOUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDUixPQUFPO2dCQUNMLEdBQUcsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQzNCLHlCQUF5QixHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FDN0Q7YUFDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBdkZELElBQUksUUFBUSxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBS0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBb0IsQ0FBQztJQUNuQyxDQUFDO0lBNEVELFdBQVcsQ0FBQyxRQUFRO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBQy9CLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRSxFQUFDLFFBQVE7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDNUIsSUFBSSxFQUFFLEVBQUU7YUFDVCxDQUFDLENBQUM7U0FDSjthQUFNLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRSxFQUFDLFVBQVU7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDNUIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEVBQUU7YUFDWixDQUFDLENBQUM7U0FDSjthQUFNLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRSxFQUFDLFdBQVc7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDNUIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEVBQUU7YUFDYixDQUFDLENBQUM7U0FDSjthQUFNLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRSxFQUFDLE9BQU87WUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztnQkFDNUIsSUFBSSxFQUFFLEVBQUU7Z0JBQ1IsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLFFBQVEsRUFBRSxFQUFFO2FBQ2IsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFrQjtRQUNyQyxtREFBbUQ7UUFDbkQsaUVBQWlFO1FBQ2pFLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1lBQ2xFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxZQUFZLFdBQVcsQ0FBQztRQUVsRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVTtnQkFDYixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ25FO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLDZFQUE2RTtRQUM3RSxJQUNFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO1lBQ3JDLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFDakM7WUFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUN4QyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3hDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQscURBQXFEO1FBQ3JELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDcEcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDOUQsaUdBQWlHO1lBQ2pHLElBQUksQ0FBQyxlQUFlLENBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkYsQ0FBQztTQUNIO2FBQU0sSUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ3ZFO1lBQ0EsbUdBQW1HO1lBQ25HLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0QyxrSEFBa0g7WUFDbEgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUNqRTtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBZ0I7UUFDdEMsdURBQXVEO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztRQUMvRCxNQUFNLHVCQUF1QixHQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzFFLElBQUksZ0JBQWdCLElBQUksdUJBQXVCLEVBQUU7WUFDL0MsMEVBQTBFO1lBQzFFLGdDQUFnQztZQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLElBQWdCLEVBQUUsaUJBQThCO1FBQ3JFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN4QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDM0UsMEhBQTBIO1lBQzFILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7Z0JBQzVCLElBQUksRUFBRTtvQkFDSixHQUFHLEVBQUU7d0JBQ0gsaUJBQWlCLEVBQUUsRUFBRTtxQkFDdEI7aUJBQ0Y7YUFDRixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ25DO1FBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2YsSUFBSTtZQUNKLGlCQUFpQjtZQUNqQixhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0RCxXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDO1FBRUYsZ0NBQWdDO1FBQ2hDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtZQUNuQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLFVBQVUsRUFBRTtvQkFDZCxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQ2xDLFdBQVcsQ0FBQyxJQUFJLEVBQ2hCLFFBQVEsRUFDUixTQUFTLENBQ1YsQ0FDRixDQUFDO2lCQUNIO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xCLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDakQsZ0RBQWdEO29CQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNqQyw2RkFBNkY7b0JBQzdGLElBQUksaUJBQWlCLEVBQUU7d0JBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDN0MsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLElBQUksQ0FDdkMsQ0FBQzt3QkFFRixJQUFJLEtBQUssRUFBRTs0QkFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUMzQjs2QkFBTSxJQUFJLGlCQUFpQixDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFOzRCQUN6RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzt5QkFDekM7NkJBQU07NEJBQ0wsMkVBQTJFOzRCQUMzRSxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQzt5QkFDekM7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNwRSxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QyxnREFBZ0Q7WUFDaEQsUUFBUSxHQUFHLFVBQVUsQ0FBQztTQUN2QjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxhQUFhO2lCQUNmLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2lCQUN0QyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHO29CQUMzQixTQUFTLEVBQUUsS0FBSztvQkFDaEIsSUFBSSxFQUFFLFFBQVE7aUJBQ2YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsVUFBdUI7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3pHO1NBQ0Y7UUFFRCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLFVBQVUsQ0FBQyxVQUFVLEtBQUssV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDL0ksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RjtRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxXQUFXO1FBQ2xDLElBQUksbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQzdCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUN0RSxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBUztRQUN0QixJQUFJLENBQUMsR0FBaUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO2dCQUM5QyxLQUFLLEVBQUUsSUFBSTtnQkFDWCxVQUFVLEVBQUUsRUFBRTtnQkFDZCxVQUFVLEVBQUUsRUFBRTthQUNmLENBQUM7U0FDSDthQUFNLElBQ0wsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDMUM7WUFDQSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUssR0FDUCxPQUFPLENBQUMsQ0FBQyxVQUFVLEtBQUssUUFBUTtnQkFDOUIsQ0FBQyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0wsSUFDRSxDQUFDLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTztvQkFDOUMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFDL0M7b0JBQ0EsS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ2pFO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7YUFDakQ7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVO2dCQUN0QyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLENBQVMsRUFBRSxFQUFFO2dCQUNyRSxJQUNFLENBQUMsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPO29CQUM5QyxDQUFDLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUMvQztvQkFDQSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztpQkFDeEQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3hCLENBQUM7aUJBQ0g7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUM5QixHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDckI7aUJBQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3BELEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO1lBQ0QsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVELEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFvQixFQUFFLEtBQVU7UUFDM0MsSUFBSSxLQUFLLFlBQVksVUFBVSxFQUFFO1lBQy9CLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMvRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDN0UsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBb0I7UUFDeEMsUUFBUSxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLO2dCQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMzRSxLQUFLLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSztnQkFDOUIsT0FBTyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUMxRSxLQUFLLFlBQVksQ0FBQyxRQUFRLENBQUMscUJBQXFCO2dCQUM5QyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDaEksS0FBSyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtnQkFDekMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQy9ILEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhO2dCQUN0QyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDL0g7Z0JBQ0UsT0FBTyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1NBQzFGO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVLEVBQUUsS0FBWTtRQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVcsRUFBRSxHQUFXLEVBQUUsUUFBaUI7UUFDMUQsT0FBTyxJQUFJO2FBQ1IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDO2FBQ2pGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQWlCO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFLO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFTSxZQUFZLENBQUMsSUFBSTtRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUM3QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQUc7UUFDcEIsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUNaO2FBQU07WUFDTCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFpQjtRQUNqQyw2REFBNkQ7UUFDN0QsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFpQjtRQUNuQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWlCO1FBQ2xDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWlCO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEssQ0FBQztJQUVPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUc7UUFDM0MsSUFBSSxHQUFHLFlBQVksVUFBVSxFQUFFO1lBQzdCLE9BQU8sSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7U0FDbko7YUFBTTtZQUNMLE9BQU8sSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsVUFBa0IsRUFBRSxRQUFnQixFQUFFLEdBQVEsRUFBRSxJQUFhO1FBQzVFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xGLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUvRCxJQUFJLEtBQUssSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNsRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakQ7YUFBTSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRU0sWUFBWSxDQUFDLFVBQWtCLEVBQUUsUUFBZ0IsRUFBRSxHQUFRLEVBQUUsUUFBaUI7UUFDbkYsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQVU7UUFDdkIsT0FBTyxDQUNMLENBQUMsQ0FBQyxLQUFLLFlBQVksVUFBVSxJQUFJLEtBQUssWUFBWSxZQUFZLENBQUM7WUFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWMsQ0FBQyxVQUFrQixFQUFFLFFBQWdCLEVBQUUsR0FBUTtRQUNsRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQVUsRUFBRSxLQUFhO1FBQzFDLElBQUksS0FBSyxDQUFDLFVBQVUsWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN2SCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlDO2FBQU07WUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEdBQUk7UUFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQjtpQkFDbEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7aUJBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2hFLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxDQUM1RSxDQUFDO1NBQ0w7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUNwQyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDekIsZ0ZBQWdGO1lBQ2hGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLGlCQUFFLElBQUksRUFBRSxFQUFDLElBQUksRUFBRSxFQUFFLEVBQUMsSUFBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBdUIsRUFBRSxFQUFFO2dCQUMzSCwyREFBMkQ7Z0JBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO29CQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7aUJBQ2xDO1lBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUNELENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELHVGQUF1RjtJQUN2RixnQ0FBZ0M7SUFDeEIsYUFBYTtRQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFeEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3pELE1BQU0sYUFBYSxHQUFxQixFQUFDLFdBQVcsRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsRUFBQyxDQUFDO1lBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFnQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUFvQjtRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEQsb0ZBQW9GO1FBQ3BGLHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEUsK0JBQStCO1lBQy9CLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ3BFLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxnREFBZ0Q7Z0JBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzVDO2lCQUFNO2dCQUNMLDJDQUEyQztnQkFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNoQztTQUNGO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxVQUFVO1FBQ3hCLElBQUksTUFBTSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxpQkFBeUI7UUFDbEMsSUFBSSxpQkFBaUIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssaUJBQWlCLEVBQUU7WUFDNUUsSUFBSSxDQUFDLHdCQUF3QixHQUFHLGlCQUFpQixDQUFDO1lBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDeEUsSUFBSSxpQkFBaUIsS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEVBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQWUsQ0FBQyxDQUFDO2FBQzdHO2lCQUFNLElBQUksV0FBVyxFQUFFO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ25EO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixpQkFBaUIsY0FBYyxDQUFDLENBQUM7YUFDckU7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGFBQWEsQ0FBQyxHQUFHO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRTtZQUN0RyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVDO2FBQU07WUFDTCxJQUFJLE9BQU8sQ0FBQztZQUNaLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFO2dCQUNwQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2FBQ2Y7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7YUFDNUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTlDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNwRSxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkMsUUFBUSxHQUFHLFVBQVUsQ0FBQzthQUN2QjtZQUVELElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsRUFBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUE2QjtRQUNyRCwrRUFBK0U7UUFDL0UscUVBQXFFO1FBQ3JFLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVPLDhCQUE4QjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixPQUFPO1NBQ1I7UUFFRCxnREFBZ0Q7UUFDaEQsSUFBSSxVQUFVLEdBQW1CLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sT0FBTyxHQUFtQixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFekcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx5QkFBeUIsQ0FBQyxNQUFvQjtRQUNuRCxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3JFLENBQUM7SUFFTSxTQUFTO1FBQ2QsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxNQUFNO2FBQ1IsUUFBUSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDO2FBQ3hELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLElBQUksQ0FBQyxLQUFLLFlBQVksV0FBVyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUM7WUFDM0YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFJO1FBQ2xCLE1BQU0sV0FBVyxHQUFxQixFQUFDLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLEVBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNsRTthQUFNO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLENBQUM7UUFDekssSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUM3RCxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCx5RkFBeUY7UUFDekYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDM0ksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzs7WUFqekJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIseXVzQkFBMEM7Z0JBRTFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxtRkFBbUY7Z0JBQ25GLGtEQUFrRDs7O2FBQ25EOzs7WUExQ08sZ0JBQWdCO1lBVGhCLGdCQUFnQjtZQWtCdEIsYUFBYTtZQUNiLGFBQWE7WUFLYixvQkFBb0I7WUFHcEIsZ0JBQWdCO1lBNUJWLE1BQU07WUFIWixTQUFTO1lBQ1QsaUJBQWlCO1lBMEJqQixvQkFBb0I7WUFGcEIsbUJBQW1CO1lBVm5CLFdBQVc7WUFlWCxjQUFjO1lBTmQsTUFBTTs7OzBCQXFDTCxTQUFTLFNBQUMsYUFBYTswQkFDdkIsU0FBUyxTQUFDLFNBQVM7NEJBQ25CLFNBQVMsU0FBQyxTQUFTOzBCQUNuQixTQUFTLFNBQUMsU0FBUzs4QkFpRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBmb3JrSm9pbiBhcyBvYnNlcnZhYmxlRm9ya0pvaW4sXG4gIGZyb20gYXMgb2JzZXJ2YWJsZUZyb20sXG4gIG9mIGFzIG9ic2VydmFibGVPZixcbiAgU3Vic2NyaXB0aW9uLFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtwbHVjaywgc3dpdGNoTWFwLCB3aXRoTGF0ZXN0RnJvbSwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIFJlbmRlcmVyMixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlciwgTmF2aWdhdGlvbkV4dHJhc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7UGFnZVRpdGxlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvdGl0bGUvcGFnZS10aXRsZS5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE9iamVjdEZvcm1PcHRpb25zLFxuICBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50XG59IGZyb20gJy4uLy4uLy4uL29iamVjdC1mb3JtL2luZGV4JztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdwcmltZW5nL3ByaW1lbmcnO1xuaW1wb3J0IHtOZ0Zvcm19IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtBcHBTZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9zZWFyY2gvYXBwLXNlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFVzZXJTZXJ2aWNlLFxuICBTdG9yZWRRdWVyeSxcbiAgUmFuZ2VWYWx1ZSxcbiAgT2JqZWN0VHlwZSxcbiAgU2VhcmNoRmlsdGVyLFxuICBTZWFyY2hRdWVyeSxcbiAgU2VhcmNoU3RhdGUsXG4gIFNlYXJjaFNlcnZpY2UsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIExvZ2dlcixcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ2FwYWJpbGl0aWVzLFxuICBTdG9yZWRRdWVyaWVzU2VydmljZSxcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gIFV0aWxzLFxuICBQcmVwYXJlU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgUXVlcnlTY29wZVxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElkeFNlYXJjaCB7XG4gIHR5cGU6IE9iamVjdFR5cGU7XG4gIGNvbnRleHRGb2xkZXJUeXBlOiBPYmplY3RUeXBlO1xuICBjb250ZXh0TW9kZWxzPzogYW55W107XG4gIGNvbnRleHRBZ2dyZWdhdGlvbnM/OiB7fTtcbiAgY29udGV4dEZvcm1PcHRpb25zPzogT2JqZWN0Rm9ybU9wdGlvbnM7XG4gIGZvcm1PcHRpb25zPzogT2JqZWN0Rm9ybU9wdGlvbnM7XG59XG5cbmV4cG9ydCBlbnVtIENvbnRleHRUeXBlIHtcbiAgJ3N5c3Jvb3QnID0gJ3N5c3Jvb3QnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWFwcC1zZWFyY2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLXNlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC1zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxuICAvLyB0b2RvOiBhcHBseSBvblB1c2ggY2hhbmdlIGRldGVjdGlvbiAoYWdnIHNlYXJjaCByZXN1bHQgcmlnaHQgbm93IGRvZXNuJ3QgdXBkYXRlKVxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBcHBTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIFBBUkFNUyA9IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TO1xuICBPUEVSQVRPUiA9IFNlYXJjaEZpbHRlci5PUEVSQVRPUjtcbiAgcXVlcnlTY29wZTogUXVlcnlTY29wZTtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0OiBBdXRvQ29tcGxldGU7XG4gIEBWaWV3Q2hpbGQoJ3hwaW5wdXQnKSBleHBlcnRJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaWR4Zm9ybScpIGluZGV4ZGF0YUZvcm06IE9iamVjdEZvcm1Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2N0eGZvcm0nKSBjb250ZXh0Rm9ybTogT2JqZWN0Rm9ybUNvbXBvbmVudDtcblxuICBwcml2YXRlIHF1ZXJ5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcXVlcnlTdGF0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBxdWVyeTogU2VhcmNoUXVlcnk7XG4gIHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlO1xuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcbiAgYWN0aXZlVGFiSW5kZXg6IG51bWJlciA9IDA7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgaXNTdG9yZWRRdWVyeTogYm9vbGVhbjtcbiAgaXNPd25RdWVyeSA9IGZhbHNlO1xuICBvYmplY3RUeXBlR3JvdXBzID0gW107XG4gIHR5cGVHcm91cFRyZWUgPSBbXTtcbiAgYXV0b2NvbXBsZXRlUmVzdWx0czogc3RyaW5nW107XG5cbiAgaWR4U2VhcmNoOiBJZHhTZWFyY2g7XG4gIGN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZTtcblxuICBleHBlcnRNb2RlUXVlcnlFbXB0eSA9IGZhbHNlO1xuICBleHBlcnRNb2RlU3VwcG9ydCA9IHtcbiAgICBiYXNlUGFyYW1zOiBbXSxcbiAgICBzZWxlY3RlZEdyb3VwOiBudWxsLFxuICAgIHNlbGVjdGVkVHlwZTogbnVsbFxuICB9O1xuXG4gIGZpbHRlcnNNb2RlbCA9IHt9O1xuICBhZ2dyZWdhdGlvbnNNb2RlbCA9IHt9O1xuICBkYXRlUGlwZTogTG9jYWxlRGF0ZVBpcGU7XG4gIHN5c1Jvb3RDb250ZXh0ID0ge1xuICAgIGlkOiBudWxsLFxuICAgIG5hbWU6IENvbnRleHRUeXBlLnN5c3Jvb3QsXG4gICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmFkZC50aXRsZS5sb2NhdGlvbi5jb21tb24nKSxcbiAgICBzaXR1YXRpb246ICdTRUFSQ0gnLFxuICAgIG1vZGU6ICdDT05URVhUJyxcbiAgICBjb250ZXh0Rm9ybU9wdGlvbnM6IHtcbiAgICAgIGZvcm1Nb2RlbDoge25hbWU6IENvbnRleHRUeXBlLnN5c3Jvb3R9XG4gICAgfVxuICB9O1xuXG4gIF9zZWxlY3RlZDogbnVtYmVyID0gbnVsbDtcbiAgc2V0IHNlbGVjdGVkKGluZGV4KSB7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZCA9PT0gaW5kZXggPyBudWxsIDogaW5kZXg7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkV4ZWN1dGVTZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZ2V0IHN0b3JlZFF1ZXJ5KCk6IFN0b3JlZFF1ZXJ5IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeSBhcyBTdG9yZWRRdWVyeTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwU2VhcmNoU2VydmljZTogQXBwU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHN0b3JlZFF1ZXJpZXNTZXJ2aWNlOiBTdG9yZWRRdWVyaWVzU2VydmljZSxcbiAgICBwcml2YXRlIGNhcGFiaWxpdHlTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJcbiAgKSB7XG5cbiAgICB0aGlzLmRhdGVQaXBlID0gbmV3IExvY2FsZURhdGVQaXBlKHRyYW5zbGF0ZSk7XG5cbiAgICB0aGlzLmV4cGVydE1vZGVTdXBwb3J0LmJhc2VQYXJhbXMgPSBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykubWFwKGsgPT4ge1xuICAgICAgbGV0IGRhdGEgPSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1trXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5nbG9iYWwuYmFzZXBhcmFtLicgKyBkYXRhKSxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRF0gPSBPYmplY3Qua2V5cyhcbiAgICAgIFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNcbiAgICApLm1hcChrID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1trXSxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAnZW8uc2VhcmNoLmFnZy50aW1lLicgKyBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTW2tdXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEXSA9IE9iamVjdC5rZXlzKFxuICAgICAgU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1xuICAgICkubWFwKGsgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTW2tdLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdlby5zZWFyY2guYWdnLnRpbWUuJyArIFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNba11cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTUlNRVRZUEVHUk9VUF0gPSBPYmplY3Qua2V5cyhcbiAgICAgIFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUU1xuICAgICkubWFwKGsgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBTZWFyY2hRdWVyeS5NSU1FVFlQRUdST1VQX0JVQ0tFVFNba10sXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgbGFiZWw6IFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUU1trXVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuRklMRVNJWkVdID0gT2JqZWN0LmtleXMoXG4gICAgICBTZWFyY2hRdWVyeS5GSUxFX1NJWkVfQlVDS0VUU1xuICAgICkubWFwKGsgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBTZWFyY2hRdWVyeS5GSUxFX1NJWkVfQlVDS0VUU1trXSxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAnZW8uc2VhcmNoLmFnZy5maWxlc2l6ZS4nICsgU2VhcmNoUXVlcnkuRklMRV9TSVpFX0JVQ0tFVFNba11cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uVGFiQ2hhbmdlKHRhYkluZGV4KSB7XG4gICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRhYkluZGV4O1xuICAgIGlmICh0YWJJbmRleCA9PT0gMCkgey8vIHR5cGVzXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0QWdncyh7XG4gICAgICAgIHR5cGU6IHt9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRhYkluZGV4ID09PSAxKSB7Ly8gY3JlYXRlZFxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xuICAgICAgICB0eXBlOiB7fSxcbiAgICAgICAgY3JlYXRlZDoge31cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGFiSW5kZXggPT09IDIpIHsvLyBtb2RpZmllZFxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xuICAgICAgICB0eXBlOiB7fSxcbiAgICAgICAgbW9kaWZpZWQ6IHt9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRhYkluZGV4ID09PSAzKSB7Ly8gZmlsZVxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xuICAgICAgICB0eXBlOiB7fSxcbiAgICAgICAgbWltZXR5cGVncm91cDoge30sXG4gICAgICAgIGZpbGVzaXplOiB7fVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1F1ZXJ5KHF1ZXJ5OiBTZWFyY2hRdWVyeSkge1xuICAgIC8vIElNUE9SVEFOVDogbmV2ZXIgY2hhbmdlIHRoZSBsb2NhbCBxdWVyeSBkaXJlY3RseVxuICAgIC8vIHVzZSBzZWFyY2hTZXJ2aWNlLCBzbyBldmVyeSBjb21wb25lbnRzIHN1YnNjcmliZWQgdG8gdGhlIHF1ZXJ5XG4gICAgLy8gd2lsbCBnZXQgdGhlIG5ldyB2YWx1ZVxuICAgIHRoaXMucXVlcnkgPSBxdWVyeTtcbiAgICB0aGlzLmN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZSA9IHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aFxuICAgICAgPyB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlc1swXS5uYW1lXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy5pc1N0b3JlZFF1ZXJ5ID0gcXVlcnkgaW5zdGFuY2VvZiBTdG9yZWRRdWVyeTtcblxuICAgIGlmICh0aGlzLmlzU3RvcmVkUXVlcnkpIHtcbiAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICB0aGlzLmlzT3duUXVlcnkgPVxuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5LnVzZXIudG9Mb3dlckNhc2UoKSA9PT0gdXNlci5uYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMpLmZvckVhY2goayA9PiB0aGlzLnByb2Nlc3NGaWx0ZXJzKGspKTtcbiAgICAvLyBpZiB3ZSBoYXZlIGFuIGluZGV4ZGF0YSBzZWFyY2ggdXNpbmcgYSBjb250ZXh0IGJ1dCB0aGUgY29udGV4dCB3YXMgcmVtb3ZlZFxuICAgIGlmIChcbiAgICAgICF0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggJiZcbiAgICAgIHRoaXMuaWR4U2VhcmNoICYmXG4gICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9ybU9wdGlvbnNcbiAgICApIHtcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9ucyA9IG51bGw7XG4gICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9sZGVyVHlwZSA9IG51bGw7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hGaWx0ZXJGcm9tRm9ybURhdGEoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIC8vIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBzZXR1cCBhbiBpbmRleGRhdGEgc2VhcmNoXG4gICAgY29uc3QgdXBkYXRlQ2F1c2VkQnlUeXBlVG9nZ2xlID0gdGhpcy5xdWVyeS5fX3VwZGF0ZUNhdXNlID09PSBTZWFyY2hRdWVyeS5VUERBVEVfQ0FVU0UuVE9HR0xFRF9UWVBFO1xuICAgIGlmICh0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJiAhdXBkYXRlQ2F1c2VkQnlUeXBlVG9nZ2xlKSB7XG4gICAgICAvLyBoYXZpbmcganVzdCBvbmUgdGFyZ2V0IHR5cGUgYW5kIGEgY29udGV4dCB0eXBlIHNldHVwIG1lYW5zLCB0aGF0IHdlIGFyZSB1c2luZyBpbmRleGRhdGEgc2VhcmNoXG4gICAgICB0aGlzLmluZGV4ZGF0YVNlYXJjaChcbiAgICAgICAgdGhpcy5xdWVyeS50eXBlc1swXSxcbiAgICAgICAgdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoID4gMCA/IHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdIDogbnVsbFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDEgJiZcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycyh0aGlzLnF1ZXJ5KS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICAvLyBoYXZpbmcganVzdCBvbmUgdGFyZ2V0IHR5cGUgYW5kIGluZGV4ZGF0YSBmaWx0ZXJzIGFsc28gbWVhbnMsIHRoYXQgd2UgYXJlIHVzaW5nIGluZGV4ZGF0YSBzZWFyY2hcbiAgICAgIHRoaXMuaW5kZXhkYXRhU2VhcmNoKHRoaXMucXVlcnkudHlwZXNbMF0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPiAxKSB7XG4gICAgICAvLyByZXNldCBpbmRleGRhdGEgc2VhcmNoIG90aGVyd2lzZSwgYmVjYXVzZSB0aGUgY3VycmVudCBxdWVyeSBtYXkgYmUgcmVzZXQgZnJvbSBvdXQgc2lkZSAoZS5nLiBieSBhIHN0b3JlZCBxdWVyeSlcbiAgICAgIHRoaXMuaWR4U2VhcmNoID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocXVlcnkuZXhwZXJ0TW9kZSkge1xuICAgICAgdGhpcy50eXBlR3JvdXBUcmVlID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmJ1aWxkVHlwZUdyb3VwVHJlZSgpO1xuICAgIH1cbiAgICB0aGlzLnF1ZXJ5U2NvcGUgPSBxdWVyeS5zY29wZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RPYmplY3RUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcbiAgICAvKiogc2V0IHVwIHRoZSByaWdodCB0eXBlIGZpbHRlciBpZiBub3QgYWxyZWFkeSBkb25lICovXG4gICAgY29uc3QgcXVlcnlUeXBlc0xlbmd0aCA9XG4gICAgICB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA+IDEgfHwgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDA7XG4gICAgY29uc3QgcXVlcnlUeXBlc0xlbmd0aEFuZE5hbWUgPVxuICAgICAgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5xdWVyeS50eXBlc1swXS5uYW1lICE9PSB0eXBlLm5hbWU7XG4gICAgaWYgKHF1ZXJ5VHlwZXNMZW5ndGggfHwgcXVlcnlUeXBlc0xlbmd0aEFuZE5hbWUpIHtcbiAgICAgIC8vIHNldHRpbmcgb2JqZWN0IHR5cGVzIHdpbGwgZW1pdCBhIG5ldyBxdWVyeS4gVGhpcyB3aWxsIHRoZW4gdGFrZSBjYXJlIG9mXG4gICAgICAvLyBzZXR0aW5nIHVwIHRoZSBpbmRleGRhdGEgZm9ybVxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFF1ZXJ5VHlwZXMoW3R5cGVdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBpbmRleGRhdGEgc2VhcmNoIGZvciBhIGdpdmVuIG9iamVjdCB0eXBlXG4gICAqIEBwYXJhbSB0eXBlIC0gYW4gb2JqZWN0IHR5cGVcbiAgICogQHBhcmFtIGNvbnRleHRGb2xkZXJUeXBlIC0gY29udGV4dCBmb2xkZXIgdHlwZVxuICAgKi9cbiAgcHVibGljIGluZGV4ZGF0YVNlYXJjaCh0eXBlOiBPYmplY3RUeXBlLCBjb250ZXh0Rm9sZGVyVHlwZT86IE9iamVjdFR5cGUpIHtcbiAgICBpZiAoIXR5cGUgfHwgdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLnF1ZXJ5LnR5cGVzWzBdLm5hbWUgPT09IHR5cGUubmFtZSkge1xuICAgICAgLyoqIGV2ZW4gaWYgd2Ugc2VsZWN0IGEgdHlwZSB0aGF0IGlzIGFscmVhZHkgc2VsZWN0ZWQsIHdlIG5lZWQgdG8gY2FsbCBhZ2dyZWdhdGUgYXMgdGhlcmUgbWF5IGJlIGNvbnRleHQgdHlwZXMgaW52b2x2ZWQgKi9cbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRBZ2dzKHtcbiAgICAgICAgdHlwZToge1xuICAgICAgICAgIHN1Yjoge1xuICAgICAgICAgICAgY29udGV4dGZvbGRlcnR5cGU6IHt9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCB0cnVlKTtcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1Jvb3RUeXBlID0gISF0aGlzLmFwcFNlYXJjaFNlcnZpY2UudHlwZXNBbGxvd2VkVW5kZXJTeXNyb290LmZpbmQoclQgPT4gclQucW5hbWUgPT09IHR5cGUucW5hbWUpO1xuXG4gICAgdGhpcy5pZHhTZWFyY2ggPSB7XG4gICAgICB0eXBlLFxuICAgICAgY29udGV4dEZvbGRlclR5cGUsXG4gICAgICBjb250ZXh0TW9kZWxzOiBpc1Jvb3RUeXBlID8gW3RoaXMuc3lzUm9vdENvbnRleHRdIDogW10sXG4gICAgICBmb3JtT3B0aW9uczogbnVsbFxuICAgIH07XG5cbiAgICAvKiogZmV0Y2ggY29udGV4dCB0eXBlIG1vZGVscyAqL1xuICAgIGlmICh0eXBlLmFsbG93ZWRjb250ZXh0dHlwZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0b0ZldGNoID0gW107XG4gICAgICB0eXBlLmFsbG93ZWRjb250ZXh0dHlwZXMuZm9yRWFjaChjb250ZXh0VHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IG9iamVjdFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShjb250ZXh0VHlwZS5uYW1lKTtcbiAgICAgICAgaWYgKG9iamVjdFR5cGUpIHtcbiAgICAgICAgICB0b0ZldGNoLnB1c2goXG4gICAgICAgICAgICB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZUZvcm0oXG4gICAgICAgICAgICAgIGNvbnRleHRUeXBlLm5hbWUsXG4gICAgICAgICAgICAgICdTRUFSQ0gnLFxuICAgICAgICAgICAgICAnQ09OVEVYVCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICh0b0ZldGNoLmxlbmd0aCkge1xuICAgICAgICBvYnNlcnZhYmxlRm9ya0pvaW4odG9GZXRjaCkuc3Vic2NyaWJlKGZvcm1Nb2RlbHMgPT4ge1xuICAgICAgICAgIC8qKiBhYnN0cmFjdCBjb250ZXh0IHR5cGVzIHNob3VsZCBub3QgYmUgdXNlZCAqL1xuICAgICAgICAgIHRoaXMuYWRkQ29udGV4dE1vZGVsKGZvcm1Nb2RlbHMpO1xuICAgICAgICAgIC8qKiBpZiB0aGVyZSB3YXMgYSBjb250ZXh0IHR5cGUgcHJvdmlkZWQgYnkgdGhlIHF1ZXJ5LCB3ZSdsbCBzZXR1cCB0aGUgcmlnaHQgbW9kZWwgYXMgd2VsbCAqL1xuICAgICAgICAgIGlmIChjb250ZXh0Rm9sZGVyVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgbW9kZWwgPSB0aGlzLmlkeFNlYXJjaC5jb250ZXh0TW9kZWxzLmZpbmQoXG4gICAgICAgICAgICAgIG0gPT4gbS5uYW1lID09PSBjb250ZXh0Rm9sZGVyVHlwZS5uYW1lXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAobW9kZWwpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RDb250ZXh0KG1vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGV4dEZvbGRlclR5cGUubmFtZSA9PT0gQ29udGV4dFR5cGUuc3lzcm9vdCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdENvbnRleHQodGhpcy5zeXNSb290Q29udGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvKiogdGhlIHByb3ZpZGVkIGNvbnRleHQgdHlwZSBkb2VzIG5vdCBleGlzdCBhbnkgbW9yZSwgc28ganVzdCByZW1vdmUgaXQgKi9cbiAgICAgICAgICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEZvbGRlclR5cGUgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZvcm1EYXRhO1xuICAgIGxldCBpZHhGaWx0ZXJzID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmdldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKCk7XG4gICAgaWYgKGlkeEZpbHRlcnMgJiYgaWR4RmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBzZXQgdXAgZm9ybSBkYXRhIGZyb20gaW5kZXhkYXRhIHF1ZXJ5IGZpbHRlcnNcbiAgICAgIGZvcm1EYXRhID0gaWR4RmlsdGVycztcbiAgICB9XG5cbiAgICBjb25zdCBvYmplY3RUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUodHlwZS5uYW1lKTtcbiAgICBpZiAob2JqZWN0VHlwZSkge1xuICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRPYmplY3RUeXBlRm9ybSh0eXBlLm5hbWUsICdTRUFSQ0gnKVxuICAgICAgICAuc3Vic2NyaWJlKG1vZGVsID0+IHtcbiAgICAgICAgICB0aGlzLmlkeFNlYXJjaC5mb3JtT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGZvcm1Nb2RlbDogbW9kZWwsXG4gICAgICAgICAgICBkYXRhOiBmb3JtRGF0YVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1F1ZXJ5U3RhdGUocXVlcnlTdGF0ZTogU2VhcmNoU3RhdGUpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnF1ZXJ5U3RhdGUgPSBxdWVyeVN0YXRlO1xuICAgIGlmICh0aGlzLmlkeFNlYXJjaCkge1xuICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEFnZ3JlZ2F0aW9ucyA9IHt9O1xuICAgICAgaWYgKHF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLmNvbnRleHRUeXBlLnNpemUpIHtcbiAgICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEFnZ3JlZ2F0aW9ucyA9IHRoaXMuYnVpbGRDb250ZXh0QWdncmVnYXRpb25zKHF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLmNvbnRleHRUeXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzYXZlIGFnZ3JlZ2F0aW9ucyB2YWx1ZXNcbiAgICBpZiAoIXRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRV0gfHwgIXRoaXMucXVlcnkudHlwZXMubGVuZ3RoIHx8IHF1ZXJ5U3RhdGUubGFzdENoYW5nZSAhPT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSkge1xuICAgICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFXSA9IG5ldyBNYXAocXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMudHlwZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zeW5jQWdncmVnYXRpb25zKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFURUQsIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRSk7XG4gICAgdGhpcy5zeW5jQWdncmVnYXRpb25zKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVELCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0UpO1xuICAgIHRoaXMuc3luY0FnZ3JlZ2F0aW9ucyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQLCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU4pO1xuICAgIHRoaXMuc3luY0FnZ3JlZ2F0aW9ucyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFU0laRSwgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFKTtcbiAgfVxuXG4gIGJ1aWxkQ29udGV4dEFnZ3JlZ2F0aW9ucyhjb250ZXh0VHlwZSkge1xuICAgIGxldCBjb250ZXh0QWdncmVnYXRpb25zID0ge307XG4gICAgY29udGV4dFR5cGUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gY29udGV4dEFnZ3JlZ2F0aW9uc1trZXldID0gdmFsdWUpO1xuICAgIHJldHVybiBjb250ZXh0QWdncmVnYXRpb25zO1xuICB9XG5cbiAgcHJvY2Vzc0ZpbHRlcnMoazogc3RyaW5nKSB7XG4gICAgbGV0IGY6IFNlYXJjaEZpbHRlciA9IHRoaXMucXVlcnkuZmlsdGVycy5maW5kKGZmID0+IGZmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1trXSk7XG4gICAgaWYgKCFmKSB7XG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNU1trXV0gPSB7XG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICBtdWx0aVZhbHVlOiBbXSxcbiAgICAgICAgaW5uZXJWYWx1ZTogW11cbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICF0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XSB8fFxuICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0uZmlsdGVyICE9PSBmXG4gICAgKSB7XG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XSA9IHt9O1xuICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0uZmlsdGVyID0gZjtcbiAgICAgIGxldCB2YWx1ZTogYW55ID1cbiAgICAgICAgdHlwZW9mIGYuZmlyc3RWYWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICBmLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5cbiAgICAgICAgICA/IEpTT04ucGFyc2UoZi5maXJzdFZhbHVlKVxuICAgICAgICAgIDogZi5maXJzdFZhbHVlLmNvbmNhdChbXSk7XG4gICAgICBpZiAoZi5vcGVyYXRvciA9PT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLm11bHRpVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0udmFsdWUgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGYucHJvcGVydHkgPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFURUQgfHxcbiAgICAgICAgICBmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFRFxuICAgICAgICApIHtcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBSYW5nZVZhbHVlKGYub3BlcmF0b3IsIGYuZmlyc3RWYWx1ZSwgZi5zZWNvbmRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubXVsdGlWYWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5pbm5lclZhbHVlID1cbiAgICAgICAgdmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmxhYmVsID0gW107XG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5pbm5lclZhbHVlLmZvckVhY2goKHY6IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVE9SIHx8XG4gICAgICAgICAgZi5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRVJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubGFiZWxbaV0gPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmxhYmVsW2ldID0gb2JzZXJ2YWJsZU9mKFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJGaWx0ZXIoZiwgdilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzeW5jQWdncmVnYXRpb25zKG5hbWUsIG9wZXJhdG9yKSB7XG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtuYW1lXS5mb3JFYWNoKGFnZyA9PiB7XG4gICAgICBsZXQgYSA9IHRoaXMucXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnNbbmFtZV0uZmluZChhYSA9PiBhYS5rZXkgPT09IGFnZy5rZXkpO1xuICAgICAgaWYgKGEgJiYgYS52YWx1ZSAhPT0gYWdnLnZhbHVlKSB7XG4gICAgICAgIGFnZy52YWx1ZSA9IGEudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKCFhICYmIHRoaXMucXVlcnlTdGF0ZS5sYXN0Q2hhbmdlICE9PSBuYW1lKSB7XG4gICAgICAgIGFnZy52YWx1ZSA9ICcnO1xuICAgICAgfVxuICAgICAgYWdnLnNlbGVjdGVkID0gdGhpcy5pc0ZpbHRlckFjdGl2ZShuYW1lLCBvcGVyYXRvciwgYWdnLmtleSk7XG4gICAgICBhZ2cuc2F2ZWQgPSAhYSAmJiB0aGlzLnF1ZXJ5U3RhdGUubGFzdENoYW5nZSA9PT0gbmFtZTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTUlNRVRZUEVHUk9VUF0uc29ydChVdGlscy5zb3J0VmFsdWVzKCd2YWx1ZScsICdkZXNjJykpO1xuICB9XG5cbiAgcmVuZGVyRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyLCB2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVJlc3RyaWN0aW9uKGZpbHRlcik7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbZmlsdGVyLnByb3BlcnR5XSkge1xuICAgICAgbGV0IGFnZyA9IHRoaXMuYWdncmVnYXRpb25zTW9kZWxbZmlsdGVyLnByb3BlcnR5XS5maW5kKGEgPT4gYS5rZXkgPT09IHZhbHVlKTtcbiAgICAgIHJldHVybiBhZ2cubGFiZWw7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGNyZWF0ZURhdGVSZXN0cmljdGlvbihmaWx0ZXI6IFNlYXJjaEZpbHRlcikge1xuICAgIHN3aXRjaCAoZmlsdGVyLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRTpcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYGVvLnNlYXJjaC5hZ2cudGltZS4ke2ZpbHRlci5maXJzdFZhbHVlfWApO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuRVFVQUw6XG4gICAgICAgIHJldHVybiBgPSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydERhdGUnKX1gO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuSU5URVJWQUxfSU5DTFVERV9CT1RIOlxuICAgICAgICByZXR1cm4gYCR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0Jyl9IC0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuc2Vjb25kVmFsdWUsICdlb1Nob3J0Jyl9YDtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkdSRUFURVJfT1JfRVFVQUw6XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLnRpbWUuc3Bhbi5zaW5jZScpfSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydCcpfWA7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5MRVNTX09SX0VRVUFMOlxuICAgICAgICByZXR1cm4gYCR7dGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLnNwYW4udW50aWwnKX0gJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnQnKX1gO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAoJHtmaWx0ZXIub3BlcmF0b3J9KSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydCcpfWA7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZUxhYmVsKG1vZGVsOiBhbnksIHZhbHVlOiBhbnlbXSkge1xuICAgIG1vZGVsLmxhYmVsLmZvckVhY2goKGwsIGkpID0+IGwubmV4dCh2YWx1ZVtpXS50aXRsZSkpO1xuICB9XG5cbiAgcmVzb2x2ZVNlbGVjdGlvbihhZ2dzOiBhbnlbXSwga2V5OiBzdHJpbmcsIHNlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgcmV0dXJuIGFnZ3NcbiAgICAgIC5maWx0ZXIoYSA9PiBzZWxlY3RlZCA/IGEua2V5ICE9PSBrZXkgJiYgYS5zZWxlY3RlZCA6IGEua2V5ID09PSBrZXkgfHwgYS5zZWxlY3RlZClcbiAgICAgIC5tYXAoYSA9PiBhLmtleSk7XG4gIH1cblxuICByZXNldEV4cGVydE1vZGVJbnB1dCgpIHtcbiAgICB0aGlzLnF1ZXJ5LnRlcm0gPSAnJztcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRXhwZXJ0TW9kZSgpIHtcbiAgICBpZiAodGhpcy50eXBlR3JvdXBUcmVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy50eXBlR3JvdXBUcmVlID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmJ1aWxkVHlwZUdyb3VwVHJlZSgpO1xuICAgIH1cbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UudG9nZ2xlRXhwZXJ0TW9kZSgpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuY2hhbmdlU2VhcmNoSW5wdXRGb2N1cygpO1xuICB9XG5cbiAgcHVibGljIHNldFF1ZXJ5U2NvcGUoc2NvcGU6IFF1ZXJ5U2NvcGUpIHtcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0UXVlcnlTY29wZShzY29wZSk7XG4gIH1cblxuICBwdWJsaWMgeHBTZWxlY3RHcm91cChncm91cCkge1xuICAgIHRoaXMuZXhwZXJ0TW9kZVN1cHBvcnQuc2VsZWN0ZWRHcm91cCA9IGdyb3VwO1xuICAgIHRoaXMuZXhwZXJ0TW9kZVN1cHBvcnQuc2VsZWN0ZWRUeXBlID0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB4cFNlbGVjdFR5cGUodHlwZSkge1xuICAgIHRoaXMuZXhwZXJ0TW9kZVN1cHBvcnQuc2VsZWN0ZWRUeXBlID0gdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyB4cEFkZFRvVGVybShzdHIpIHtcbiAgICBsZXQgdGVybTtcbiAgICBpZiAoIXRoaXMucXVlcnkudGVybSkge1xuICAgICAgdGVybSA9IHN0cjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVybSA9IHRoaXMucXVlcnkudGVybSArICcgJyArIHN0cjtcbiAgICB9XG4gICAgdGhpcy5xdWVyeS50ZXJtID0gdGVybSArICc6JztcbiAgICB0aGlzLmV4cGVydElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVUeXBlKF90eXBlOiBPYmplY3RUeXBlKSB7XG4gICAgLy8gZG8gbm90IGRpcmVjdGx5IHRvZ2dsZSBfdHlwZSBvbiB0aGUgcXVlcnksIGluc3RlYWQgdXNlIHRoZVxuICAgIC8vIHNlYXJjaFNlcnZpY2UgdG8gdXBkYXRlIHRoZSBxdWVyeSBzdG9yZVxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVRdWVyeVR5cGUoX3R5cGUpO1xuICB9XG5cbiAgcHVibGljIGlzVHlwZUFjdGl2ZShfdHlwZTogT2JqZWN0VHlwZSkge1xuICAgIHJldHVybiAhIXRoaXMucXVlcnkudHlwZXMuZmluZCh0ID0+IHQuaWQgPT09IF90eXBlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1R5cGVTYXZlZChfdHlwZTogT2JqZWN0VHlwZSkge1xuICAgIHJldHVybiAoIXRoaXMucXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMudHlwZS5nZXQoX3R5cGUubmFtZSkgJiYgdGhpcy5xdWVyeVN0YXRlLmxhc3RDaGFuZ2UgPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEUpO1xuICB9XG5cbiAgZ2V0QWdncmVnYXRpb25Db3VudChfdHlwZTogT2JqZWN0VHlwZSkge1xuICAgIHJldHVybiAoKHRoaXMuaXNUeXBlU2F2ZWQoX3R5cGUpID8gdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFXS5nZXQoX3R5cGUubmFtZSkgOiB0aGlzLnF1ZXJ5U3RhdGUuYWdncmVnYXRpb25zLnR5cGUuZ2V0KF90eXBlLm5hbWUpKSB8fCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRmlsdGVyKGZpbHRlclR5cGUsIG9wZXJhdG9yLCBrZXkpIHtcbiAgICBpZiAoa2V5IGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSkge1xuICAgICAgcmV0dXJuIG5ldyBTZWFyY2hGaWx0ZXIoZmlsdGVyVHlwZSwga2V5Lm9wZXJhdG9yLCBrZXkuZmlyc3RWYWx1ZSwga2V5LnNlY29uZFZhbHVlLCB7dGltZToga2V5Lm9wZXJhdG9yICE9PSB0aGlzLk9QRVJBVE9SLkVRVUFMLCB0aW1lem9uZTogZmFsc2V9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBTZWFyY2hGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEZpbHRlcihmaWx0ZXJUeXBlOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcsIGtleTogYW55LCBmb3JtPzogTmdGb3JtKSB7XG4gICAgbGV0IGZpbHRlciA9IHRoaXMuYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XG4gICAgbGV0IGVtcHR5ID0gdGhpcy5pc0VtcHR5KGZpbHRlcik7XG4gICAgbGV0IGFjdGl2ZUZpbHRlciA9IHRoaXMucXVlcnkuZmlsdGVycy5maW5kKGZmID0+IGZmLnByb3BlcnR5ID09PSBmaWx0ZXIucHJvcGVydHkpO1xuICAgIGxldCBkdXBsaWNhdGUgPSB0aGlzLmlzRmlsdGVyQWN0aXZlKGZpbHRlclR5cGUsIG9wZXJhdG9yLCBrZXkpO1xuXG4gICAgaWYgKGVtcHR5ICYmIGFjdGl2ZUZpbHRlciAmJiBhY3RpdmVGaWx0ZXIub3BlcmF0b3IgIT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRSkge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlbW92ZVF1ZXJ5RmlsdGVyKGZpbHRlcik7XG4gICAgfSBlbHNlIGlmICghZW1wdHkgJiYgIWR1cGxpY2F0ZSkge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFkZFF1ZXJ5RmlsdGVyKGZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvZ2dsZUZpbHRlcihmaWx0ZXJUeXBlOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcsIGtleTogYW55LCBzZWxlY3RlZDogYm9vbGVhbikge1xuICAgIGxldCBmaWx0ZXIgPSB0aGlzLmJ1aWxkRmlsdGVyKGZpbHRlclR5cGUsIG9wZXJhdG9yLCBrZXkpO1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVRdWVyeUZpbHRlcihmaWx0ZXIsICFzZWxlY3RlZCk7XG4gIH1cblxuICBwdWJsaWMgaXNFbXB0eSh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICgodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlIHx8IHZhbHVlIGluc3RhbmNlb2YgU2VhcmNoRmlsdGVyKSAmJlxuICAgICAgICB0aGlzLmlzRW1wdHkodmFsdWUuZmlyc3RWYWx1ZSkgJiZcbiAgICAgICAgdGhpcy5pc0VtcHR5KHZhbHVlLnNlY29uZFZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzRmlsdGVyQWN0aXZlKGZpbHRlclR5cGU6IHN0cmluZywgb3BlcmF0b3I6IHN0cmluZywga2V5OiBhbnkpIHtcbiAgICBsZXQgZiA9IHRoaXMuYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XG4gICAgcmV0dXJuICEhdGhpcy5xdWVyeS5maWx0ZXJzLmZpbmQoZmYgPT4gZmYubWF0Y2goZi5wcm9wZXJ0eSwgZi5vcGVyYXRvciwgZi5maXJzdFZhbHVlLCBmLnNlY29uZFZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRGaWx0ZXIobW9kZWw6IGFueSwgdmFsdWU6IHN0cmluZykge1xuICAgIGlmIChtb2RlbC5pbm5lclZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgbW9kZWwuaW5uZXJWYWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICBsZXQgZmlsdGVyID0gdGhpcy5idWlsZEZpbHRlcihtb2RlbC5maWx0ZXIucHJvcGVydHksIG1vZGVsLmZpbHRlci5vcGVyYXRvciwgbW9kZWwuaW5uZXJWYWx1ZS5maWx0ZXIoZiA9PiBmICE9PSB2YWx1ZSkpO1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFkZFF1ZXJ5RmlsdGVyKGZpbHRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5yZW1vdmVRdWVyeUZpbHRlcihtb2RlbC5maWx0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhdXRvY29tcGxldGVTdWdnZXN0KGV2dD8pIHtcbiAgICBsZXQgdiA9IFtdO1xuICAgIC8vIGFsc28gdHJpZ2dlciBhZ2dyZWdhdGlvbnMgc2VhcmNoXG4gICAgdGhpcy5hdXRvY29tcGxldGVTZWxlY3QoKTtcbiAgICBpZiAoZXZ0ICYmIGV2dC5xdWVyeSkge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlXG4gICAgICAgIC5hdXRvY29tcGxldGUoZXZ0LnF1ZXJ5KVxuICAgICAgICAucGlwZShzd2l0Y2hNYXAocmVzID0+IG9ic2VydmFibGVGcm9tKHJlcykucGlwZShwbHVjaygndmFsdWUnKSkpKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB2LnB1c2gocmVzKSwgKCkgPT4ge30sICgpID0+ICh0aGlzLmF1dG9jb21wbGV0ZVJlc3VsdHMgPSB2KVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGV4cGVydFRlcm1DaGFuZ2VkKCkge1xuICAgIHRoaXMuZXhwZXJ0TW9kZVF1ZXJ5RW1wdHkgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhdXRvY29tcGxldGVTZWxlY3QoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xuICB9XG5cbiAgYXV0b2NvbXBsZXRlUGFzdGUoZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5xdWVyeS50ZXJtID0gZS50YXJnZXQudmFsdWU7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVNlbGVjdCgpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHVibGljIGV4ZWN1dGVTZWFyY2goKSB7XG4gICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnF1ZXJ5LmV4cGVydE1vZGUpIHtcbiAgICAgIC8vIGluIGV4cGVydCBzZWFyY2ggbW9kZSB3ZSBwcmUtZmV0Y2ggcmVzdWx0cyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3R1YWwgc2VhcmNoXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoU3RhdGUoe2FnZ3M6IHt0eXBlOiB7fX0sIC4uLnRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKCl9KS5zdWJzY3JpYmUoKHF1ZXJ5U3RhdGU6IFNlYXJjaFN0YXRlKSA9PiB7XG4gICAgICAgIC8vIG9ubHkgZXhlY3V0ZSB0aGUgYWN0dWFsIHF1ZXJ5IHdoZW4gd2UndmUgZm91bmQgc29tZXRoaW5nXG4gICAgICAgIGlmICghcXVlcnlTdGF0ZS5pc0VtcHR5KSB7XG4gICAgICAgICAgdGhpcy50cmlnZ2VyU2VhcmNoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sIFV0aWxzLnRocm93KCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHNlYXJjaCByZXN1bHQnKTtcbiAgICAgICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IHRydWU7XG4gICAgICB9KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmlnZ2VyU2VhcmNoKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXhlY3V0ZSB0aGUgYWN0dWFsIHNlYXJjaCBieSByb3V0aW5nIHRvIHRoZSByZXN1bHQgc3RhdGUgd2hpY2ggdGhlbiB3aWxsIGV4ZWN1dGUgdGhlXG4gIC8vIHF1ZXJ5IGFuZCBkaXNwbGF5IHRoZSByZXN1bHRzXG4gIHByaXZhdGUgdHJpZ2dlclNlYXJjaCgpIHtcbiAgICB0aGlzLnF1ZXJ5LnJlc29sdmVSZWZlcmVuY2UgPSB0cnVlO1xuICAgIGNvbnN0IHVyaVBhcmFtID0gZW5jb2RlVVJJQ29tcG9uZW50KFV0aWxzLmZvcm1EYXRhU3RyaW5naWZ5KHRoaXMucXVlcnkuZ2V0UXVlcnlKc29uKCkpKTtcblxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHtxdWVyeTogdXJpUGFyYW19fTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3Jlc3VsdCddLCB1cmlQYXJhbVF1ZXJ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVUZXJtKCkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRUZXJtKCcnKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVUeXBlKHR5cGU6IE9iamVjdFR5cGUpIHtcbiAgICBpZiAodGhpcy5pZHhTZWFyY2gpIHtcbiAgICAgIHRoaXMuZXhpdEluZGV4ZGF0YVNlYXJjaCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UudG9nZ2xlUXVlcnlUeXBlKHR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVDb250ZXh0VHlwZSgpIHtcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsdGVyKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlbW92ZVF1ZXJ5RmlsdGVyKGZpbHRlcik7XG5cbiAgICAvLyBpZiB3ZSBhcmUgaW4gaW5kZXNkYXRhIHNlYXJjaCBtb2RlLCByZW1vdmluZyBhIGZpbHRlciB0aGF0IGlzIG5vIGJhc2VwYXJhbSBmaWx0ZXJcbiAgICAvLyByZXF1aXJlcyB0aGUgZnJvbSBtb2RlbCB0byBiZSB1cGRhdGVkXG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoICYmICF0aGlzLmFwcFNlYXJjaFNlcnZpY2UuaXNCYXNlUGFyYW1GaWx0ZXIoZmlsdGVyKSkge1xuICAgICAgLy8gdG9kbzogdXBkYXRlIGZvcm0gbW9kZWwvZGF0YVxuICAgICAgbGV0IGlkeEZpbHRlcnMgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoKTtcbiAgICAgIGlmIChpZHhGaWx0ZXJzICYmIGlkeEZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBzZXQgdXAgZm9ybSBkYXRhIGZyb20gaW5kZXhkYXRhIHF1ZXJ5IGZpbHRlcnNcbiAgICAgICAgdGhpcy5pZHhTZWFyY2guZm9ybU9wdGlvbnMuZGF0YSA9IGlkeEZpbHRlcnM7XG4gICAgICAgIHRoaXMuaW5kZXhkYXRhRm9ybS5zZXRGb3JtRGF0YShpZHhGaWx0ZXJzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGlmIG5vIGZpbHRlcnMgYXJlIHByZXNlbnQgcmVzZXQgdGhlIGZvcm1cbiAgICAgICAgdGhpcy5pZHhTZWFyY2guZm9ybU9wdGlvbnMuZGF0YSA9IHt9O1xuICAgICAgICB0aGlzLmluZGV4ZGF0YUZvcm0ucmVzZXRGb3JtKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkQ29udGV4dE1vZGVsKGZvcm1Nb2RlbHMpOiB2b2lkIHtcbiAgICBsZXQgbW9kZWxzID0gWy4uLmZvcm1Nb2RlbHNdO1xuICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRNb2RlbHMucHVzaCguLi5tb2RlbHMpO1xuICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRNb2RlbHMuc29ydChVdGlscy5zb3J0VmFsdWVzKCdsYWJlbCcpKTtcbiAgfVxuXG4gIHB1YmxpYyBleGl0SW5kZXhkYXRhU2VhcmNoKCkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5leGl0SW5kZXhkYXRhU2VhcmNoKCk7XG4gICAgdGhpcy5pZHhTZWFyY2ggPSBudWxsO1xuICB9XG5cbiAgc2V0Q29udGV4dChjb250ZXh0Rm9sZGVyTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGNvbnRleHRGb2xkZXJOYW1lICYmIHRoaXMuY3VycmVudENvbnRleHRGb2xkZXJOYW1lICE9PSBjb250ZXh0Rm9sZGVyTmFtZSkge1xuICAgICAgdGhpcy5jdXJyZW50Q29udGV4dEZvbGRlck5hbWUgPSBjb250ZXh0Rm9sZGVyTmFtZTtcbiAgICAgIGNvbnN0IGNvbnRleHRUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoY29udGV4dEZvbGRlck5hbWUpO1xuICAgICAgaWYgKGNvbnRleHRGb2xkZXJOYW1lID09PSBDb250ZXh0VHlwZS5zeXNyb290KSB7XG4gICAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZSh7bmFtZTogQ29udGV4dFR5cGUuc3lzcm9vdCwgbGFiZWw6IENvbnRleHRUeXBlLnN5c3Jvb3R9IGFzIE9iamVjdFR5cGUpO1xuICAgICAgfSBlbHNlIGlmIChjb250ZXh0VHlwZSkge1xuICAgICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUoY29udGV4dFR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYENvbnRleHQgdHlwZSAnJHtjb250ZXh0Rm9sZGVyTmFtZX0nIG5vdCBmb3VuZC5gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldENvbnRleHRUeXBlKG51bGwpO1xuICAgICAgdGhpcy5jdXJyZW50Q29udGV4dEZvbGRlck5hbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIGEgY29udGV4dCB0eXBlIGZvciB0aGUgY3VycmVudCBzZWFyY2hcbiAgICogQHBhcmFtIGN0eCBUaGUgY29udGV4dCBmb3JtIG1vZGVsXG4gICAqL1xuICBwcml2YXRlIHNlbGVjdENvbnRleHQoY3R4KSB7XG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9ucyAmJiB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9ybU9wdGlvbnMuZm9ybU1vZGVsLm5hbWUgPT09IGN0eC5uYW1lKSB7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjb250ZXh0O1xuICAgICAgaWYgKGN0eC5uYW1lID09PSBDb250ZXh0VHlwZS5zeXNyb290KSB7XG4gICAgICAgIGNvbnRleHQgPSBjdHg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250ZXh0ID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUoY3R4Lm5hbWUpO1xuICAgICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9sZGVyVHlwZSA9IGNvbnRleHQ7XG4gICAgICB9XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUoY29udGV4dCk7XG5cbiAgICAgIGxldCBmb3JtRGF0YSA9IHt9O1xuICAgICAgbGV0IGlkeEZpbHRlcnMgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoKTtcbiAgICAgIGlmIChpZHhGaWx0ZXJzICYmIGlkeEZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3JtRGF0YSA9IGlkeEZpbHRlcnM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9ucyA9IHtmb3JtTW9kZWw6IGN0eCwgZGF0YTogZm9ybURhdGF9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkluZGV4RGF0YUNoYW5nZWQoZXZlbnQ6IEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQpIHtcbiAgICAvLyBvbmx5IHRyaWdnZXIgd2hlbiB2YWx1ZXMgYXJlIGNoYW5nZWQgYXMgY2hhbmdlcyBtYXkgYWxzbyBhcHBlYXIgd2hlbiBzY3JpcHRzXG4gICAgLy8gY2hhbmdlIG90aGVyIGZvcm0gZWxlbWVudCBwcm9wZXJ0aWVzIChlZy4gcmVhZG9ubHksIHJlcXVpcmVkIGZsYWcpXG4gICAgaWYgKGV2ZW50LmluZGV4ZGF0YUNoYW5nZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VhcmNoRmlsdGVyRnJvbUZvcm1EYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWFyY2hGaWx0ZXJGcm9tRm9ybURhdGEoKSB7XG4gICAgaWYgKCF0aGlzLmluZGV4ZGF0YUZvcm0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBhZGQgbWV0YWRhdGEgZmlsdGVycyBmb3IgZWFjaCBmb3JtIGRhdGEgZW50cnlcbiAgICBsZXQgaWR4RmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSBbXTtcbiAgICBsZXQgZm9ybURhdGEgPSB0aGlzLmluZGV4ZGF0YUZvcm0uZ2V0Rm9ybURhdGEoKTtcbiAgICBpZiAodGhpcy5jb250ZXh0Rm9ybSkge1xuICAgICAgZm9ybURhdGEgPSBPYmplY3QuYXNzaWduKGZvcm1EYXRhLCB0aGlzLmNvbnRleHRGb3JtLmdldEZvcm1EYXRhKCkpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhmb3JtRGF0YSkpIHtcbiAgICAgIGNvbnN0IGZpbHRlcnM6IFNlYXJjaEZpbHRlcltdID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFNlYXJjaEZpbHRlcih0aGlzLnF1ZXJ5LnR5cGVzLCBrZXksIGZvcm1EYXRhW2tleV0pO1xuXG4gICAgICBmaWx0ZXJzLmZvckVhY2goZiA9PiBpZHhGaWx0ZXJzLnB1c2goZikpO1xuICAgIH1cbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoaWR4RmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgb2JqZWN0IHR5cGUgZWxlbWVudCBmb3IgYSBmaWx0ZXIsIHRvIGJlIGFibGUgdG8gc2hvdyB0aGVcbiAgICogbGFiZWwgZm9yIGEgZmlsdGVyIGluIHRoZSBzZWFyY2ggc3VtbWFyeS5cbiAgICpcbiAgICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gZmV0Y2ggb2JqZWN0IHR5cGUgZWxlbWVudCBmb3JcbiAgICovXG4gIHB1YmxpYyBnZXRPYmplY3RUeXBlRWxlbWVudExhYmVsKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XG4gICAgbGV0IG90ID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmdldFRhcmdldFR5cGVFbGVtZW50QnlOYW1lKGZpbHRlci5wcm9wZXJ0eSk7XG4gICAgcmV0dXJuIG90ID8gb3QubGFiZWwgOiBmaWx0ZXIucHJvcGVydHkgKyAnIC0gJyArIGZpbHRlci5maXJzdFZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNhdmVRdWVyeSgpIHtcbiAgICAvLyBjb25zdCBxdWVyeVBhcmFtczogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtc0hhbmRsaW5nIDogJ3ByZXNlcnZlJ307XG4gICAgdGhpcy5yb3V0ZXJcbiAgICAgIC5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogbnVsbH19XSwge3JlcGxhY2VVcmw6IHRydWV9KVxuICAgICAgLnRoZW4oKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvc3RvcmVkLXF1ZXJpZXMnXSwge3F1ZXJ5UGFyYW1zOiB7Y3JlYXRlOiB0cnVlfX0pKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdG9yZWRRdWVyeSgpIHtcbiAgICBpZiAodGhpcy5xdWVyeSBpbnN0YW5jZW9mIFN0b3JlZFF1ZXJ5KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogbnVsbH19XSwge3JlcGxhY2VVcmw6IHRydWV9KTtcbiAgICAgIHRoaXMuc3RvcmVkUXVlcmllc1NlcnZpY2Uuc2F2ZVN0b3JlZFF1ZXJ5KHRoaXMucXVlcnkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcnkuc2F2ZS5zdWNjZXNzJykpO1xuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLnN0b3JlZHF1ZXJ5LnNhdmUuZXJyb3InKSkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZXNldFF1ZXJ5KCkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5yZXNldCgpO1xuICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSAwO1xuXG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoKSB7XG4gICAgICB0aGlzLmV4aXRJbmRleGRhdGFTZWFyY2goKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZVNlYXJjaE1lbnUoZXZ0Pykge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdwcmVzZXJ2ZSd9O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dLCBxdWVyeVBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzU2VhcmNoSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuaW5wdXRFTC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVNlYXJjaElucHV0Rm9jdXMoKSB7XG4gICAgaWYgKHRoaXMucXVlcnkuZXhwZXJ0TW9kZSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudCgnLmV4cGVydC1zZWFyY2hfX2lucHV0JykuZm9jdXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYXBhYmlsaXRpZXMgPSB0aGlzLmNhcGFiaWxpdHlTZXJ2aWNlLmdldENhcGFiaWxpdGllcygpO1xuICAgIHRoaXMub2JqZWN0VHlwZUdyb3VwcyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5vYmplY3RUeXBlR3JvdXBzO1xuICAgIHRoaXMub2JqZWN0VHlwZUdyb3Vwc1swXS50eXBlcyA9IHRoaXMub2JqZWN0VHlwZUdyb3Vwc1swXS50eXBlcy5maWx0ZXIodHlwZSA9PiB0eXBlLnFuYW1lICE9PSAnc3lzZm9sZGVyJyAmJiB0eXBlLnFuYW1lICE9PSAnc3lzZG9jdW1lbnQnICYmIHR5cGUucW5hbWUgIT09ICdzeXNvYmplY3QnKTtcbiAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnF1ZXJ5JC5zdWJzY3JpYmUoXG4gICAgICAocXVlcnk6IFNlYXJjaFF1ZXJ5KSA9PiB0aGlzLnByb2Nlc3NRdWVyeShxdWVyeSkpO1xuICAgIC8vIHN1YnNjcmliZSB0byBxdWVyeSBzdGF0ZSBhcyB3ZWxsIHRvIGZldGNoIHJlc3VsdCBjb3VudCBhbmQgYWdncmVnYXRpb25zIGFzIHRoZXkgY2hhbmdlXG4gICAgdGhpcy5xdWVyeVN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnF1ZXJ5U3RhdGUkLnN1YnNjcmliZSgocXVlcnlTdGF0ZTogU2VhcmNoU3RhdGUpID0+IHRoaXMucHJvY2Vzc1F1ZXJ5U3RhdGUocXVlcnlTdGF0ZSkpO1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5yZXNldEFnZ3MoKTtcbiAgICB0aGlzLnF1ZXJ5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5xdWVyeVN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
734
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9hcHAtc2hlbGwvYXBwLWJhci9hcHAtc2VhcmNoL2FwcC1zZWFyY2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsSUFBSSxJQUFJLGNBQWMsRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE9BQU8sRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUN2SCxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEssT0FBTyxFQUFtQixNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3REFBd0QsQ0FBQztBQUt4RixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFDcEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDekYsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixNQUFNLEVBQ04sb0JBQW9CLEVBRXBCLGNBQWMsRUFFZCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxhQUFhLEVBRWIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxLQUFLLEVBQ04sTUFBTSxjQUFjLENBQUM7QUFXdEIsTUFBTSxDQUFOLElBQVksV0FFWDtBQUZELFdBQVksV0FBVztJQUNyQixrQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBRlcsV0FB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QUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzNJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQzs7O1lBdHpCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLHl1c0JBQTBDO2dCQUUxQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsbUZBQW1GO2dCQUNuRixrREFBa0Q7OzthQUNuRDs7O1lBMUNPLGdCQUFnQjtZQU5oQixnQkFBZ0I7WUFrQnRCLGFBQWE7WUFJYixhQUFhO1lBWGIsb0JBQW9CO1lBWXBCLGdCQUFnQjtZQXhCUSxNQUFNO1lBRDBFLFNBQVM7WUFBNUYsaUJBQWlCO1lBc0J0QyxvQkFBb0I7WUFYcEIsbUJBQW1CO1lBZW5CLFdBQVc7WUFYWCxjQUFjO1lBSGQsTUFBTTs7OzBCQTRDTCxTQUFTLFNBQUMsYUFBYTswQkFDdkIsU0FBUyxTQUFDLFNBQVM7NEJBQ25CLFNBQVMsU0FBQyxTQUFTOzBCQUNuQixTQUFTLFNBQUMsU0FBUzs4QkFpRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2ZvcmtKb2luIGFzIG9ic2VydmFibGVGb3JrSm9pbiwgZnJvbSBhcyBvYnNlcnZhYmxlRnJvbSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtwbHVjaywgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtQYWdlVGl0bGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS90aXRsZS9wYWdlLXRpdGxlLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50LCBPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi4vLi4vLi4vb2JqZWN0LWZvcm0vaW5kZXgnO1xuaW1wb3J0IHtBdXRvQ29tcGxldGV9IGZyb20gJ3ByaW1lbmcvcHJpbWVuZyc7XG5pbXBvcnQge05nRm9ybX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMb2NhbGVEYXRlUGlwZX0gZnJvbSAnLi4vLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGlwZXMvbG9jYWxlLWRhdGUucGlwZSc7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlYXJjaC9hcHAtc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQ2FwYWJpbGl0aWVzLFxuICBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICBMb2dnZXIsXG4gIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICBPYmplY3RUeXBlLFxuICBQcmVwYXJlU2VydmljZSxcbiAgUXVlcnlTY29wZSxcbiAgUmFuZ2VWYWx1ZSxcbiAgU2VhcmNoRmlsdGVyLFxuICBTZWFyY2hRdWVyeSxcbiAgU2VhcmNoU2VydmljZSxcbiAgU2VhcmNoU3RhdGUsXG4gIFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxuICBTdG9yZWRRdWVyeSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXNlclNlcnZpY2UsXG4gIFV0aWxzXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWR4U2VhcmNoIHtcbiAgdHlwZTogT2JqZWN0VHlwZTtcbiAgY29udGV4dEZvbGRlclR5cGU6IE9iamVjdFR5cGU7XG4gIGNvbnRleHRNb2RlbHM/OiBhbnlbXTtcbiAgY29udGV4dEFnZ3JlZ2F0aW9ucz86IHt9O1xuICBjb250ZXh0Rm9ybU9wdGlvbnM/OiBPYmplY3RGb3JtT3B0aW9ucztcbiAgZm9ybU9wdGlvbnM/OiBPYmplY3RGb3JtT3B0aW9ucztcbn1cblxuZXhwb3J0IGVudW0gQ29udGV4dFR5cGUge1xuICAnc3lzcm9vdCcgPSAnc3lzcm9vdCdcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tYXBwLXNlYXJjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXNlYXJjaC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG4gIC8vIHRvZG86IGFwcGx5IG9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIChhZ2cgc2VhcmNoIHJlc3VsdCByaWdodCBub3cgZG9lc24ndCB1cGRhdGUpXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcFNlYXJjaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgUEFSQU1TID0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVM7XG4gIE9QRVJBVE9SID0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SO1xuICBxdWVyeVNjb3BlOiBRdWVyeVNjb3BlO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQ6IEF1dG9Db21wbGV0ZTtcbiAgQFZpZXdDaGlsZCgneHBpbnB1dCcpIGV4cGVydElucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpZHhmb3JtJykgaW5kZXhkYXRhRm9ybTogT2JqZWN0Rm9ybUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY3R4Zm9ybScpIGNvbnRleHRGb3JtOiBPYmplY3RGb3JtQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgcXVlcnlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBxdWVyeVN0YXRlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHF1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgcXVlcnlTdGF0ZTogU2VhcmNoU3RhdGU7XG4gIGNhcGFiaWxpdGllczogQ2FwYWJpbGl0aWVzO1xuICBhY3RpdmVUYWJJbmRleDogbnVtYmVyID0gMDtcbiAgbG9hZGluZzogYm9vbGVhbjtcblxuICBpc1N0b3JlZFF1ZXJ5OiBib29sZWFuO1xuICBpc093blF1ZXJ5ID0gZmFsc2U7XG4gIG9iamVjdFR5cGVHcm91cHMgPSBbXTtcbiAgdHlwZUdyb3VwVHJlZSA9IFtdO1xuICBhdXRvY29tcGxldGVSZXN1bHRzOiBzdHJpbmdbXTtcblxuICBpZHhTZWFyY2g6IElkeFNlYXJjaDtcbiAgY3VycmVudENvbnRleHRGb2xkZXJOYW1lO1xuXG4gIGV4cGVydE1vZGVRdWVyeUVtcHR5ID0gZmFsc2U7XG4gIGV4cGVydE1vZGVTdXBwb3J0ID0ge1xuICAgIGJhc2VQYXJhbXM6IFtdLFxuICAgIHNlbGVjdGVkR3JvdXA6IG51bGwsXG4gICAgc2VsZWN0ZWRUeXBlOiBudWxsXG4gIH07XG5cbiAgZmlsdGVyc01vZGVsID0ge307XG4gIGFnZ3JlZ2F0aW9uc01vZGVsID0ge307XG4gIGRhdGVQaXBlOiBMb2NhbGVEYXRlUGlwZTtcbiAgc3lzUm9vdENvbnRleHQgPSB7XG4gICAgaWQ6IG51bGwsXG4gICAgbmFtZTogQ29udGV4dFR5cGUuc3lzcm9vdCxcbiAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYWRkLnRpdGxlLmxvY2F0aW9uLmNvbW1vbicpLFxuICAgIHNpdHVhdGlvbjogJ1NFQVJDSCcsXG4gICAgbW9kZTogJ0NPTlRFWFQnLFxuICAgIGNvbnRleHRGb3JtT3B0aW9uczoge1xuICAgICAgZm9ybU1vZGVsOiB7bmFtZTogQ29udGV4dFR5cGUuc3lzcm9vdH1cbiAgICB9XG4gIH07XG5cbiAgX3NlbGVjdGVkOiBudW1iZXIgPSBudWxsO1xuICBzZXQgc2VsZWN0ZWQoaW5kZXgpIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkID09PSBpbmRleCA/IG51bGwgOiBpbmRleDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uRXhlY3V0ZVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBnZXQgc3RvcmVkUXVlcnkoKTogU3RvcmVkUXVlcnkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5IGFzIFN0b3JlZFF1ZXJ5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc3RvcmVkUXVlcmllc1NlcnZpY2U6IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0eVNlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2VydmljZTogUHJlcGFyZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclxuICApIHtcblxuICAgIHRoaXMuZGF0ZVBpcGUgPSBuZXcgTG9jYWxlRGF0ZVBpcGUodHJhbnNsYXRlKTtcblxuICAgIHRoaXMuZXhwZXJ0TW9kZVN1cHBvcnQuYmFzZVBhcmFtcyA9IE9iamVjdC5rZXlzKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TKS5tYXAoayA9PiB7XG4gICAgICBsZXQgZGF0YSA9IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmdsb2JhbC5iYXNlcGFyYW0uJyArIGRhdGEpLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5DUkVBVEVEXSA9IE9iamVjdC5rZXlzKFxuICAgICAgU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1xuICAgICkubWFwKGsgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTW2tdLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdlby5zZWFyY2guYWdnLnRpbWUuJyArIFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNba11cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuYWdncmVnYXRpb25zTW9kZWxbU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRURdID0gT2JqZWN0LmtleXMoXG4gICAgICBTZWFyY2hRdWVyeS5USU1FX1BFUklPRF9CVUNLRVRTXG4gICAgKS5tYXAoayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IFNlYXJjaFF1ZXJ5LlRJTUVfUEVSSU9EX0JVQ0tFVFNba10sXG4gICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2VvLnNlYXJjaC5hZ2cudGltZS4nICsgU2VhcmNoUXVlcnkuVElNRV9QRVJJT0RfQlVDS0VUU1trXVxuICAgICAgICApXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQXSA9IE9iamVjdC5rZXlzKFxuICAgICAgU2VhcmNoUXVlcnkuTUlNRVRZUEVHUk9VUF9CVUNLRVRTXG4gICAgKS5tYXAoayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IFNlYXJjaFF1ZXJ5Lk1JTUVUWVBFR1JPVVBfQlVDS0VUU1trXSxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICBsYWJlbDogU2VhcmNoUXVlcnkuTUlNRVRZUEVHUk9VUF9CVUNLRVRTW2tdXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5GSUxFU0laRV0gPSBPYmplY3Qua2V5cyhcbiAgICAgIFNlYXJjaFF1ZXJ5LkZJTEVfU0laRV9CVUNLRVRTXG4gICAgKS5tYXAoayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IFNlYXJjaFF1ZXJ5LkZJTEVfU0laRV9CVUNLRVRTW2tdLFxuICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBTZWFyY2hRdWVyeS5GSUxFX1NJWkVfQlVDS0VUU1trXVxuICAgICAgICApXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgb25UYWJDaGFuZ2UodGFiSW5kZXgpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gdGFiSW5kZXg7XG4gICAgaWYgKHRhYkluZGV4ID09PSAwKSB7Ly8gdHlwZXNcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRBZ2dzKHtcbiAgICAgICAgdHlwZToge31cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGFiSW5kZXggPT09IDEpIHsvLyBjcmVhdGVkXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0QWdncyh7XG4gICAgICAgIHR5cGU6IHt9LFxuICAgICAgICBjcmVhdGVkOiB7fVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0YWJJbmRleCA9PT0gMikgey8vIG1vZGlmaWVkXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0QWdncyh7XG4gICAgICAgIHR5cGU6IHt9LFxuICAgICAgICBtb2RpZmllZDoge31cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGFiSW5kZXggPT09IDMpIHsvLyBmaWxlXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0QWdncyh7XG4gICAgICAgIHR5cGU6IHt9LFxuICAgICAgICBtaW1ldHlwZWdyb3VwOiB7fSxcbiAgICAgICAgZmlsZXNpemU6IHt9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUXVlcnkocXVlcnk6IFNlYXJjaFF1ZXJ5KSB7XG4gICAgLy8gSU1QT1JUQU5UOiBuZXZlciBjaGFuZ2UgdGhlIGxvY2FsIHF1ZXJ5IGRpcmVjdGx5XG4gICAgLy8gdXNlIHNlYXJjaFNlcnZpY2UsIHNvIGV2ZXJ5IGNvbXBvbmVudHMgc3Vic2NyaWJlZCB0byB0aGUgcXVlcnlcbiAgICAvLyB3aWxsIGdldCB0aGUgbmV3IHZhbHVlXG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMuY3VycmVudENvbnRleHRGb2xkZXJOYW1lID0gdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXMubGVuZ3RoXG4gICAgICA/IHRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzWzBdLm5hbWVcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLmlzU3RvcmVkUXVlcnkgPSBxdWVyeSBpbnN0YW5jZW9mIFN0b3JlZFF1ZXJ5O1xuXG4gICAgaWYgKHRoaXMuaXNTdG9yZWRRdWVyeSkge1xuICAgICAgY29uc3QgdXNlciA9IHRoaXMudXNlclNlcnZpY2UuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgIHRoaXMuaXNPd25RdWVyeSA9XG4gICAgICAgIHRoaXMuc3RvcmVkUXVlcnkudXNlci50b0xvd2VyQ2FzZSgpID09PSB1c2VyLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyhTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUykuZm9yRWFjaChrID0+IHRoaXMucHJvY2Vzc0ZpbHRlcnMoaykpO1xuICAgIC8vIGlmIHdlIGhhdmUgYW4gaW5kZXhkYXRhIHNlYXJjaCB1c2luZyBhIGNvbnRleHQgYnV0IHRoZSBjb250ZXh0IHdhcyByZW1vdmVkXG4gICAgaWYgKFxuICAgICAgIXRoaXMucXVlcnkuY29udGV4dEZvbGRlclR5cGVzLmxlbmd0aCAmJlxuICAgICAgdGhpcy5pZHhTZWFyY2ggJiZcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9uc1xuICAgICkge1xuICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEZvcm1PcHRpb25zID0gbnVsbDtcbiAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb2xkZXJUeXBlID0gbnVsbDtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaEZpbHRlckZyb21Gb3JtRGF0YSgpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgLy8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIHNldHVwIGFuIGluZGV4ZGF0YSBzZWFyY2hcbiAgICBjb25zdCB1cGRhdGVDYXVzZWRCeVR5cGVUb2dnbGUgPSB0aGlzLnF1ZXJ5Ll9fdXBkYXRlQ2F1c2UgPT09IFNlYXJjaFF1ZXJ5LlVQREFURV9DQVVTRS5UT0dHTEVEX1RZUEU7XG4gICAgaWYgKHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID09PSAxICYmICF1cGRhdGVDYXVzZWRCeVR5cGVUb2dnbGUpIHtcbiAgICAgIC8vIGhhdmluZyBqdXN0IG9uZSB0YXJnZXQgdHlwZSBhbmQgYSBjb250ZXh0IHR5cGUgc2V0dXAgbWVhbnMsIHRoYXQgd2UgYXJlIHVzaW5nIGluZGV4ZGF0YSBzZWFyY2hcbiAgICAgIHRoaXMuaW5kZXhkYXRhU2VhcmNoKFxuICAgICAgICB0aGlzLnF1ZXJ5LnR5cGVzWzBdLFxuICAgICAgICB0aGlzLnF1ZXJ5LmNvbnRleHRGb2xkZXJUeXBlcy5sZW5ndGggPiAwID8gdGhpcy5xdWVyeS5jb250ZXh0Rm9sZGVyVHlwZXNbMF0gOiBudWxsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmdldEluZGV4U2VhcmNoUXVlcnlGaWx0ZXJzKHRoaXMucXVlcnkpLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIC8vIGhhdmluZyBqdXN0IG9uZSB0YXJnZXQgdHlwZSBhbmQgaW5kZXhkYXRhIGZpbHRlcnMgYWxzbyBtZWFucywgdGhhdCB3ZSBhcmUgdXNpbmcgaW5kZXhkYXRhIHNlYXJjaFxuICAgICAgdGhpcy5pbmRleGRhdGFTZWFyY2godGhpcy5xdWVyeS50eXBlc1swXSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIHJlc2V0IGluZGV4ZGF0YSBzZWFyY2ggb3RoZXJ3aXNlLCBiZWNhdXNlIHRoZSBjdXJyZW50IHF1ZXJ5IG1heSBiZSByZXNldCBmcm9tIG91dCBzaWRlIChlLmcuIGJ5IGEgc3RvcmVkIHF1ZXJ5KVxuICAgICAgdGhpcy5pZHhTZWFyY2ggPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChxdWVyeS5leHBlcnRNb2RlKSB7XG4gICAgICB0aGlzLnR5cGVHcm91cFRyZWUgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYnVpbGRUeXBlR3JvdXBUcmVlKCk7XG4gICAgfVxuICAgIHRoaXMucXVlcnlTY29wZSA9IHF1ZXJ5LnNjb3BlO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE9iamVjdFR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xuICAgIC8qKiBzZXQgdXAgdGhlIHJpZ2h0IHR5cGUgZmlsdGVyIGlmIG5vdCBhbHJlYWR5IGRvbmUgKi9cbiAgICBjb25zdCBxdWVyeVR5cGVzTGVuZ3RoID1cbiAgICAgIHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID4gMSB8fCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMDtcbiAgICBjb25zdCBxdWVyeVR5cGVzTGVuZ3RoQW5kTmFtZSA9XG4gICAgICB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLnF1ZXJ5LnR5cGVzWzBdLm5hbWUgIT09IHR5cGUubmFtZTtcbiAgICBpZiAocXVlcnlUeXBlc0xlbmd0aCB8fCBxdWVyeVR5cGVzTGVuZ3RoQW5kTmFtZSkge1xuICAgICAgLy8gc2V0dGluZyBvYmplY3QgdHlwZXMgd2lsbCBlbWl0IGEgbmV3IHF1ZXJ5LiBUaGlzIHdpbGwgdGhlbiB0YWtlIGNhcmUgb2ZcbiAgICAgIC8vIHNldHRpbmcgdXAgdGhlIGluZGV4ZGF0YSBmb3JtXG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0UXVlcnlUeXBlcyhbdHlwZV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIGluZGV4ZGF0YSBzZWFyY2ggZm9yIGEgZ2l2ZW4gb2JqZWN0IHR5cGVcbiAgICogQHBhcmFtIHR5cGUgLSBhbiBvYmplY3QgdHlwZVxuICAgKiBAcGFyYW0gY29udGV4dEZvbGRlclR5cGUgLSBjb250ZXh0IGZvbGRlciB0eXBlXG4gICAqL1xuICBwdWJsaWMgaW5kZXhkYXRhU2VhcmNoKHR5cGU6IE9iamVjdFR5cGUsIGNvbnRleHRGb2xkZXJUeXBlPzogT2JqZWN0VHlwZSkge1xuICAgIGlmICghdHlwZSB8fCB0aGlzLnF1ZXJ5LnR5cGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucXVlcnkudHlwZXMubGVuZ3RoID09PSAxICYmIHRoaXMucXVlcnkudHlwZXNbMF0ubmFtZSA9PT0gdHlwZS5uYW1lKSB7XG4gICAgICAvKiogZXZlbiBpZiB3ZSBzZWxlY3QgYSB0eXBlIHRoYXQgaXMgYWxyZWFkeSBzZWxlY3RlZCwgd2UgbmVlZCB0byBjYWxsIGFnZ3JlZ2F0ZSBhcyB0aGVyZSBtYXkgYmUgY29udGV4dCB0eXBlcyBpbnZvbHZlZCAqL1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldEFnZ3Moe1xuICAgICAgICB0eXBlOiB7XG4gICAgICAgICAgc3ViOiB7XG4gICAgICAgICAgICBjb250ZXh0Zm9sZGVydHlwZToge31cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIHRydWUpO1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzUm9vdFR5cGUgPSAhIXRoaXMuYXBwU2VhcmNoU2VydmljZS50eXBlc0FsbG93ZWRVbmRlclN5c3Jvb3QuZmluZChyVCA9PiByVC5xbmFtZSA9PT0gdHlwZS5xbmFtZSk7XG5cbiAgICB0aGlzLmlkeFNlYXJjaCA9IHtcbiAgICAgIHR5cGUsXG4gICAgICBjb250ZXh0Rm9sZGVyVHlwZSxcbiAgICAgIGNvbnRleHRNb2RlbHM6IGlzUm9vdFR5cGUgPyBbdGhpcy5zeXNSb290Q29udGV4dF0gOiBbXSxcbiAgICAgIGZvcm1PcHRpb25zOiBudWxsXG4gICAgfTtcblxuICAgIC8qKiBmZXRjaCBjb250ZXh0IHR5cGUgbW9kZWxzICovXG4gICAgaWYgKHR5cGUuYWxsb3dlZGNvbnRleHR0eXBlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHRvRmV0Y2ggPSBbXTtcbiAgICAgIHR5cGUuYWxsb3dlZGNvbnRleHR0eXBlcy5mb3JFYWNoKGNvbnRleHRUeXBlID0+IHtcbiAgICAgICAgY29uc3Qgb2JqZWN0VHlwZSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlKGNvbnRleHRUeXBlLm5hbWUpO1xuICAgICAgICBpZiAob2JqZWN0VHlwZSkge1xuICAgICAgICAgIHRvRmV0Y2gucHVzaChcbiAgICAgICAgICAgIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlRm9ybShcbiAgICAgICAgICAgICAgY29udGV4dFR5cGUubmFtZSxcbiAgICAgICAgICAgICAgJ1NFQVJDSCcsXG4gICAgICAgICAgICAgICdDT05URVhUJ1xuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKHRvRmV0Y2gubGVuZ3RoKSB7XG4gICAgICAgIG9ic2VydmFibGVGb3JrSm9pbih0b0ZldGNoKS5zdWJzY3JpYmUoZm9ybU1vZGVscyA9PiB7XG4gICAgICAgICAgLyoqIGFic3RyYWN0IGNvbnRleHQgdHlwZXMgc2hvdWxkIG5vdCBiZSB1c2VkICovXG4gICAgICAgICAgdGhpcy5hZGRDb250ZXh0TW9kZWwoZm9ybU1vZGVscyk7XG4gICAgICAgICAgLyoqIGlmIHRoZXJlIHdhcyBhIGNvbnRleHQgdHlwZSBwcm92aWRlZCBieSB0aGUgcXVlcnksIHdlJ2xsIHNldHVwIHRoZSByaWdodCBtb2RlbCBhcyB3ZWxsICovXG4gICAgICAgICAgaWYgKGNvbnRleHRGb2xkZXJUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuaWR4U2VhcmNoLmNvbnRleHRNb2RlbHMuZmluZChcbiAgICAgICAgICAgICAgbSA9PiBtLm5hbWUgPT09IGNvbnRleHRGb2xkZXJUeXBlLm5hbWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChtb2RlbCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdENvbnRleHQobW9kZWwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Rm9sZGVyVHlwZS5uYW1lID09PSBDb250ZXh0VHlwZS5zeXNyb290KSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29udGV4dCh0aGlzLnN5c1Jvb3RDb250ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8qKiB0aGUgcHJvdmlkZWQgY29udGV4dCB0eXBlIGRvZXMgbm90IGV4aXN0IGFueSBtb3JlLCBzbyBqdXN0IHJlbW92ZSBpdCAqL1xuICAgICAgICAgICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0Rm9sZGVyVHlwZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZm9ybURhdGE7XG4gICAgbGV0IGlkeEZpbHRlcnMgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0SW5kZXhTZWFyY2hRdWVyeUZpbHRlcnMoKTtcbiAgICBpZiAoaWR4RmlsdGVycyAmJiBpZHhGaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIHNldCB1cCBmb3JtIGRhdGEgZnJvbSBpbmRleGRhdGEgcXVlcnkgZmlsdGVyc1xuICAgICAgZm9ybURhdGEgPSBpZHhGaWx0ZXJzO1xuICAgIH1cblxuICAgIGNvbnN0IG9iamVjdFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZSh0eXBlLm5hbWUpO1xuICAgIGlmIChvYmplY3RUeXBlKSB7XG4gICAgICB0aGlzLnN5c3RlbVNlcnZpY2VcbiAgICAgICAgLmdldE9iamVjdFR5cGVGb3JtKHR5cGUubmFtZSwgJ1NFQVJDSCcpXG4gICAgICAgIC5zdWJzY3JpYmUobW9kZWwgPT4ge1xuICAgICAgICAgIHRoaXMuaWR4U2VhcmNoLmZvcm1PcHRpb25zID0ge1xuICAgICAgICAgICAgZm9ybU1vZGVsOiBtb2RlbCxcbiAgICAgICAgICAgIGRhdGE6IGZvcm1EYXRhXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzUXVlcnlTdGF0ZShxdWVyeVN0YXRlOiBTZWFyY2hTdGF0ZSkge1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMucXVlcnlTdGF0ZSA9IHF1ZXJ5U3RhdGU7XG4gICAgaWYgKHRoaXMuaWR4U2VhcmNoKSB7XG4gICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0QWdncmVnYXRpb25zID0ge307XG4gICAgICBpZiAocXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMuY29udGV4dFR5cGUuc2l6ZSkge1xuICAgICAgICB0aGlzLmlkeFNlYXJjaC5jb250ZXh0QWdncmVnYXRpb25zID0gdGhpcy5idWlsZENvbnRleHRBZ2dyZWdhdGlvbnMocXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMuY29udGV4dFR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNhdmUgYWdncmVnYXRpb25zIHZhbHVlc1xuICAgIGlmICghdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFXSB8fCAhdGhpcy5xdWVyeS50eXBlcy5sZW5ndGggfHwgcXVlcnlTdGF0ZS5sYXN0Q2hhbmdlICE9PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5UWVBFKSB7XG4gICAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEVdID0gbmV3IE1hcChxdWVyeVN0YXRlLmFnZ3JlZ2F0aW9ucy50eXBlKTtcbiAgICB9XG5cbiAgICB0aGlzLnN5bmNBZ2dyZWdhdGlvbnMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRCwgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFKTtcbiAgICB0aGlzLnN5bmNBZ2dyZWdhdGlvbnMoU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuTU9ESUZJRUQsIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5SQU5HRSk7XG4gICAgdGhpcy5zeW5jQWdncmVnYXRpb25zKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1JTUVUWVBFR1JPVVAsIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTik7XG4gICAgdGhpcy5zeW5jQWdncmVnYXRpb25zKFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkZJTEVTSVpFLCBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0UpO1xuICB9XG5cbiAgYnVpbGRDb250ZXh0QWdncmVnYXRpb25zKGNvbnRleHRUeXBlKSB7XG4gICAgbGV0IGNvbnRleHRBZ2dyZWdhdGlvbnMgPSB7fTtcbiAgICBjb250ZXh0VHlwZS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiBjb250ZXh0QWdncmVnYXRpb25zW2tleV0gPSB2YWx1ZSk7XG4gICAgcmV0dXJuIGNvbnRleHRBZ2dyZWdhdGlvbnM7XG4gIH1cblxuICBwcm9jZXNzRmlsdGVycyhrOiBzdHJpbmcpIHtcbiAgICBsZXQgZjogU2VhcmNoRmlsdGVyID0gdGhpcy5xdWVyeS5maWx0ZXJzLmZpbmQoZmYgPT4gZmYucHJvcGVydHkgPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdKTtcbiAgICBpZiAoIWYpIHtcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TW2tdXSA9IHtcbiAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgIG11bHRpVmFsdWU6IFtdLFxuICAgICAgICBpbm5lclZhbHVlOiBbXVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIXRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldIHx8XG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5maWx0ZXIgIT09IGZcbiAgICApIHtcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldID0ge307XG4gICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5maWx0ZXIgPSBmO1xuICAgICAgbGV0IHZhbHVlOiBhbnkgPVxuICAgICAgICB0eXBlb2YgZi5maXJzdFZhbHVlID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgIGYub3BlcmF0b3IgPT09IFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlxuICAgICAgICAgID8gSlNPTi5wYXJzZShmLmZpcnN0VmFsdWUpXG4gICAgICAgICAgOiBmLmZpcnN0VmFsdWUuY29uY2F0KFtdKTtcbiAgICAgIGlmIChmLm9wZXJhdG9yID09PSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuUkFOR0UpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubXVsdGlWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS52YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZi5wcm9wZXJ0eSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuQ1JFQVRFRCB8fFxuICAgICAgICAgIGYucHJvcGVydHkgPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLk1PRElGSUVEXG4gICAgICAgICkge1xuICAgICAgICAgIHZhbHVlID0gbmV3IFJhbmdlVmFsdWUoZi5vcGVyYXRvciwgZi5maXJzdFZhbHVlLCBmLnNlY29uZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5tdWx0aVZhbHVlID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmlubmVyVmFsdWUgPVxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubGFiZWwgPSBbXTtcbiAgICAgIHRoaXMuZmlsdGVyc01vZGVsW2YucHJvcGVydHldLmlubmVyVmFsdWUuZm9yRWFjaCgodjogYW55LCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGYucHJvcGVydHkgPT09IFNlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLkNSRUFUT1IgfHxcbiAgICAgICAgICBmLnByb3BlcnR5ID09PSBTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NT0RJRklFUlxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZpbHRlcnNNb2RlbFtmLnByb3BlcnR5XS5sYWJlbFtpXSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5maWx0ZXJzTW9kZWxbZi5wcm9wZXJ0eV0ubGFiZWxbaV0gPSBvYnNlcnZhYmxlT2YoXG4gICAgICAgICAgICB0aGlzLnJlbmRlckZpbHRlcihmLCB2KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHN5bmNBZ2dyZWdhdGlvbnMobmFtZSwgb3BlcmF0b3IpIHtcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW25hbWVdLmZvckVhY2goYWdnID0+IHtcbiAgICAgIGxldCBhID0gdGhpcy5xdWVyeVN0YXRlLmFnZ3JlZ2F0aW9uc1tuYW1lXS5maW5kKGFhID0+IGFhLmtleSA9PT0gYWdnLmtleSk7XG4gICAgICBpZiAoYSAmJiBhLnZhbHVlICE9PSBhZ2cudmFsdWUpIHtcbiAgICAgICAgYWdnLnZhbHVlID0gYS52YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAoIWEgJiYgdGhpcy5xdWVyeVN0YXRlLmxhc3RDaGFuZ2UgIT09IG5hbWUpIHtcbiAgICAgICAgYWdnLnZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBhZ2cuc2VsZWN0ZWQgPSB0aGlzLmlzRmlsdGVyQWN0aXZlKG5hbWUsIG9wZXJhdG9yLCBhZ2cua2V5KTtcbiAgICAgIGFnZy5zYXZlZCA9ICFhICYmIHRoaXMucXVlcnlTdGF0ZS5sYXN0Q2hhbmdlID09PSBuYW1lO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtTZWFyY2hRdWVyeS5CQVNFX1BBUkFNUy5NSU1FVFlQRUdST1VQXS5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ3ZhbHVlJywgJ2Rlc2MnKSk7XG4gIH1cblxuICByZW5kZXJGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIsIHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVEYXRlUmVzdHJpY3Rpb24oZmlsdGVyKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtmaWx0ZXIucHJvcGVydHldKSB7XG4gICAgICBsZXQgYWdnID0gdGhpcy5hZ2dyZWdhdGlvbnNNb2RlbFtmaWx0ZXIucHJvcGVydHldLmZpbmQoYSA9PiBhLmtleSA9PT0gdmFsdWUpO1xuICAgICAgcmV0dXJuIGFnZy5sYWJlbDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgY3JlYXRlRGF0ZVJlc3RyaWN0aW9uKGZpbHRlcjogU2VhcmNoRmlsdGVyKSB7XG4gICAgc3dpdGNoIChmaWx0ZXIub3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFOlxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgZW8uc2VhcmNoLmFnZy50aW1lLiR7ZmlsdGVyLmZpcnN0VmFsdWV9YCk7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5FUVVBTDpcbiAgICAgICAgcmV0dXJuIGA9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0RGF0ZScpfWA7XG4gICAgICBjYXNlIFNlYXJjaEZpbHRlci5PUEVSQVRPUi5JTlRFUlZBTF9JTkNMVURFX0JPVEg6XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXIuZmlyc3RWYWx1ZSwgJ2VvU2hvcnQnKX0gLSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5zZWNvbmRWYWx1ZSwgJ2VvU2hvcnQnKX1gO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXIuT1BFUkFUT1IuR1JFQVRFUl9PUl9FUVVBTDpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS5zcGFuLnNpbmNlJyl9ICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0Jyl9YDtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVyLk9QRVJBVE9SLkxFU1NfT1JfRVFVQUw6XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLnRpbWUuc3Bhbi51bnRpbCcpfSAke3RoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGZpbHRlci5maXJzdFZhbHVlLCAnZW9TaG9ydCcpfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCgke2ZpbHRlci5vcGVyYXRvcn0pICR7dGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVyLmZpcnN0VmFsdWUsICdlb1Nob3J0Jyl9YDtcbiAgICB9XG4gIH1cblxuICByZXNvbHZlTGFiZWwobW9kZWw6IGFueSwgdmFsdWU6IGFueVtdKSB7XG4gICAgbW9kZWwubGFiZWwuZm9yRWFjaCgobCwgaSkgPT4gbC5uZXh0KHZhbHVlW2ldLnRpdGxlKSk7XG4gIH1cblxuICByZXNvbHZlU2VsZWN0aW9uKGFnZ3M6IGFueVtdLCBrZXk6IHN0cmluZywgc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gYWdnc1xuICAgICAgLmZpbHRlcihhID0+IHNlbGVjdGVkID8gYS5rZXkgIT09IGtleSAmJiBhLnNlbGVjdGVkIDogYS5rZXkgPT09IGtleSB8fCBhLnNlbGVjdGVkKVxuICAgICAgLm1hcChhID0+IGEua2V5KTtcbiAgfVxuXG4gIHJlc2V0RXhwZXJ0TW9kZUlucHV0KCkge1xuICAgIHRoaXMucXVlcnkudGVybSA9ICcnO1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5hZ2dyZWdhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVFeHBlcnRNb2RlKCkge1xuICAgIGlmICh0aGlzLnR5cGVHcm91cFRyZWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnR5cGVHcm91cFRyZWUgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYnVpbGRUeXBlR3JvdXBUcmVlKCk7XG4gICAgfVxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVFeHBlcnRNb2RlKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jaGFuZ2VTZWFyY2hJbnB1dEZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0UXVlcnlTY29wZShzY29wZTogUXVlcnlTY29wZSkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRRdWVyeVNjb3BlKHNjb3BlKTtcbiAgfVxuXG4gIHB1YmxpYyB4cFNlbGVjdEdyb3VwKGdyb3VwKSB7XG4gICAgdGhpcy5leHBlcnRNb2RlU3VwcG9ydC5zZWxlY3RlZEdyb3VwID0gZ3JvdXA7XG4gICAgdGhpcy5leHBlcnRNb2RlU3VwcG9ydC5zZWxlY3RlZFR5cGUgPSBudWxsO1xuICB9XG5cbiAgcHVibGljIHhwU2VsZWN0VHlwZSh0eXBlKSB7XG4gICAgdGhpcy5leHBlcnRNb2RlU3VwcG9ydC5zZWxlY3RlZFR5cGUgPSB0eXBlO1xuICB9XG5cbiAgcHVibGljIHhwQWRkVG9UZXJtKHN0cikge1xuICAgIGxldCB0ZXJtO1xuICAgIGlmICghdGhpcy5xdWVyeS50ZXJtKSB7XG4gICAgICB0ZXJtID0gc3RyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtID0gdGhpcy5xdWVyeS50ZXJtICsgJyAnICsgc3RyO1xuICAgIH1cbiAgICB0aGlzLnF1ZXJ5LnRlcm0gPSB0ZXJtICsgJzonO1xuICAgIHRoaXMuZXhwZXJ0SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVR5cGUoX3R5cGU6IE9iamVjdFR5cGUpIHtcbiAgICAvLyBkbyBub3QgZGlyZWN0bHkgdG9nZ2xlIF90eXBlIG9uIHRoZSBxdWVyeSwgaW5zdGVhZCB1c2UgdGhlXG4gICAgLy8gc2VhcmNoU2VydmljZSB0byB1cGRhdGUgdGhlIHF1ZXJ5IHN0b3JlXG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnRvZ2dsZVF1ZXJ5VHlwZShfdHlwZSk7XG4gIH1cblxuICBwdWJsaWMgaXNUeXBlQWN0aXZlKF90eXBlOiBPYmplY3RUeXBlKSB7XG4gICAgcmV0dXJuICEhdGhpcy5xdWVyeS50eXBlcy5maW5kKHQgPT4gdC5pZCA9PT0gX3R5cGUuaWQpO1xuICB9XG5cbiAgcHVibGljIGlzVHlwZVNhdmVkKF90eXBlOiBPYmplY3RUeXBlKSB7XG4gICAgcmV0dXJuICghdGhpcy5xdWVyeVN0YXRlLmFnZ3JlZ2F0aW9ucy50eXBlLmdldChfdHlwZS5uYW1lKSAmJiB0aGlzLnF1ZXJ5U3RhdGUubGFzdENoYW5nZSA9PT0gU2VhcmNoUXVlcnkuQkFTRV9QQVJBTVMuVFlQRSk7XG4gIH1cblxuICBnZXRBZ2dyZWdhdGlvbkNvdW50KF90eXBlOiBPYmplY3RUeXBlKSB7XG4gICAgcmV0dXJuICgodGhpcy5pc1R5cGVTYXZlZChfdHlwZSkgPyB0aGlzLmFnZ3JlZ2F0aW9uc01vZGVsW1NlYXJjaFF1ZXJ5LkJBU0VfUEFSQU1TLlRZUEVdLmdldChfdHlwZS5uYW1lKSA6IHRoaXMucXVlcnlTdGF0ZS5hZ2dyZWdhdGlvbnMudHlwZS5nZXQoX3R5cGUubmFtZSkpIHx8ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSkge1xuICAgIGlmIChrZXkgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XG4gICAgICByZXR1cm4gbmV3IFNlYXJjaEZpbHRlcihmaWx0ZXJUeXBlLCBrZXkub3BlcmF0b3IsIGtleS5maXJzdFZhbHVlLCBrZXkuc2Vjb25kVmFsdWUsIHt0aW1lOiBrZXkub3BlcmF0b3IgIT09IHRoaXMuT1BFUkFUT1IuRVFVQUwsIHRpbWV6b25lOiBmYWxzZX0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFNlYXJjaEZpbHRlcihmaWx0ZXJUeXBlLCBvcGVyYXRvciwga2V5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsdGVyKGZpbHRlclR5cGU6IHN0cmluZywgb3BlcmF0b3I6IHN0cmluZywga2V5OiBhbnksIGZvcm0/OiBOZ0Zvcm0pIHtcbiAgICBsZXQgZmlsdGVyID0gdGhpcy5idWlsZEZpbHRlcihmaWx0ZXJUeXBlLCBvcGVyYXRvciwga2V5KTtcbiAgICBsZXQgZW1wdHkgPSB0aGlzLmlzRW1wdHkoZmlsdGVyKTtcbiAgICBsZXQgYWN0aXZlRmlsdGVyID0gdGhpcy5xdWVyeS5maWx0ZXJzLmZpbmQoZmYgPT4gZmYucHJvcGVydHkgPT09IGZpbHRlci5wcm9wZXJ0eSk7XG4gICAgbGV0IGR1cGxpY2F0ZSA9IHRoaXMuaXNGaWx0ZXJBY3RpdmUoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XG5cbiAgICBpZiAoZW1wdHkgJiYgYWN0aXZlRmlsdGVyICYmIGFjdGl2ZUZpbHRlci5vcGVyYXRvciAhPT0gU2VhcmNoRmlsdGVyLk9QRVJBVE9SLlJBTkdFKSB7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucmVtb3ZlUXVlcnlGaWx0ZXIoZmlsdGVyKTtcbiAgICB9IGVsc2UgaWYgKCFlbXB0eSAmJiAhZHVwbGljYXRlKSB7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWRkUXVlcnlGaWx0ZXIoZmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRmlsdGVyKGZpbHRlclR5cGU6IHN0cmluZywgb3BlcmF0b3I6IHN0cmluZywga2V5OiBhbnksIHNlbGVjdGVkOiBib29sZWFuKSB7XG4gICAgbGV0IGZpbHRlciA9IHRoaXMuYnVpbGRGaWx0ZXIoZmlsdGVyVHlwZSwgb3BlcmF0b3IsIGtleSk7XG4gICAgaWYgKGZpbHRlclR5cGUgPT09IHRoaXMuUEFSQU1TLkZJTEVTSVpFKSB7XG4gICAgICBsZXQgZm9sZGVyRmlsdGVyID0gdGhpcy5idWlsZEZpbHRlcignZm9sZGVyJywgJ2VxJywgZmFsc2UpO1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnRvZ2dsZVF1ZXJ5RmlsdGVycyhbZmlsdGVyLCBmb2xkZXJGaWx0ZXJdLCAhc2VsZWN0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UudG9nZ2xlUXVlcnlGaWx0ZXIoZmlsdGVyLCAhc2VsZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0VtcHR5KHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKCh2YWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUgfHwgdmFsdWUgaW5zdGFuY2VvZiBTZWFyY2hGaWx0ZXIpICYmXG4gICAgICAgIHRoaXMuaXNFbXB0eSh2YWx1ZS5maXJzdFZhbHVlKSAmJlxuICAgICAgICB0aGlzLmlzRW1wdHkodmFsdWUuc2Vjb25kVmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09IG51bGwgfHwgdmFsdWUubGVuZ3RoID09PSAwKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgaXNGaWx0ZXJBY3RpdmUoZmlsdGVyVHlwZTogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nLCBrZXk6IGFueSkge1xuICAgIGxldCBmID0gdGhpcy5idWlsZEZpbHRlcihmaWx0ZXJUeXBlLCBvcGVyYXRvciwga2V5KTtcbiAgICByZXR1cm4gISF0aGlzLnF1ZXJ5LmZpbHRlcnMuZmluZChmZiA9PiBmZi5tYXRjaChmLnByb3BlcnR5LCBmLm9wZXJhdG9yLCBmLmZpcnN0VmFsdWUsIGYuc2Vjb25kVmFsdWUpKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldEZpbHRlcihtb2RlbDogYW55LCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKG1vZGVsLmlubmVyVmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJiBtb2RlbC5pbm5lclZhbHVlLmxlbmd0aCA+IDEpIHtcbiAgICAgIGxldCBmaWx0ZXIgPSB0aGlzLmJ1aWxkRmlsdGVyKG1vZGVsLmZpbHRlci5wcm9wZXJ0eSwgbW9kZWwuZmlsdGVyLm9wZXJhdG9yLCBtb2RlbC5pbm5lclZhbHVlLmZpbHRlcihmID0+IGYgIT09IHZhbHVlKSk7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWRkUXVlcnlGaWx0ZXIoZmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlbW92ZVF1ZXJ5RmlsdGVyKG1vZGVsLmZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZVN1Z2dlc3QoZXZ0Pykge1xuICAgIGxldCB2ID0gW107XG4gICAgLy8gYWxzbyB0cmlnZ2VyIGFnZ3JlZ2F0aW9ucyBzZWFyY2hcbiAgICB0aGlzLmF1dG9jb21wbGV0ZVNlbGVjdCgpO1xuICAgIGlmIChldnQgJiYgZXZ0LnF1ZXJ5KSB7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2VcbiAgICAgICAgLmF1dG9jb21wbGV0ZShldnQucXVlcnkpXG4gICAgICAgIC5waXBlKHN3aXRjaE1hcChyZXMgPT4gb2JzZXJ2YWJsZUZyb20ocmVzKS5waXBlKHBsdWNrKCd2YWx1ZScpKSkpXG4gICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHYucHVzaChyZXMpLCAoKSA9PiB7fSwgKCkgPT4gKHRoaXMuYXV0b2NvbXBsZXRlUmVzdWx0cyA9IHYpXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZXhwZXJ0VGVybUNoYW5nZWQoKSB7XG4gICAgdGhpcy5leHBlcnRNb2RlUXVlcnlFbXB0eSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZVNlbGVjdCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuYWdncmVnYXRlKCk7XG4gIH1cblxuICBhdXRvY29tcGxldGVQYXN0ZShlKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnF1ZXJ5LnRlcm0gPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlU2VsZWN0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZVNlYXJjaCgpIHtcbiAgICB0aGlzLmV4cGVydE1vZGVRdWVyeUVtcHR5ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMucXVlcnkuZXhwZXJ0TW9kZSkge1xuICAgICAgLy8gaW4gZXhwZXJ0IHNlYXJjaCBtb2RlIHdlIHByZS1mZXRjaCByZXN1bHRzIGJlZm9yZSBleGVjdXRpbmcgdGhlIGFjdHVhbCBzZWFyY2hcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRTZWFyY2hTdGF0ZSh7YWdnczoge3R5cGU6IHt9fSwgLi4udGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKX0pLnN1YnNjcmliZSgocXVlcnlTdGF0ZTogU2VhcmNoU3RhdGUpID0+IHtcbiAgICAgICAgLy8gb25seSBleGVjdXRlIHRoZSBhY3R1YWwgcXVlcnkgd2hlbiB3ZSd2ZSBmb3VuZCBzb21ldGhpbmdcbiAgICAgICAgaWYgKCFxdWVyeVN0YXRlLmlzRW1wdHkpIHtcbiAgICAgICAgICB0aGlzLnRyaWdnZXJTZWFyY2goKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmV4cGVydE1vZGVRdWVyeUVtcHR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXJyb3IgZmV0Y2hpbmcgc2VhcmNoIHJlc3VsdCcpO1xuICAgICAgICB0aGlzLmV4cGVydE1vZGVRdWVyeUVtcHR5ID0gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyaWdnZXJTZWFyY2goKTtcbiAgICB9XG4gIH1cblxuICAvLyBleGVjdXRlIHRoZSBhY3R1YWwgc2VhcmNoIGJ5IHJvdXRpbmcgdG8gdGhlIHJlc3VsdCBzdGF0ZSB3aGljaCB0aGVuIHdpbGwgZXhlY3V0ZSB0aGVcbiAgLy8gcXVlcnkgYW5kIGRpc3BsYXkgdGhlIHJlc3VsdHNcbiAgcHJpdmF0ZSB0cmlnZ2VyU2VhcmNoKCkge1xuICAgIHRoaXMucXVlcnkucmVzb2x2ZVJlZmVyZW5jZSA9IHRydWU7XG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoVXRpbHMuZm9ybURhdGFTdHJpbmdpZnkodGhpcy5xdWVyeS5nZXRRdWVyeUpzb24oKSkpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6IG51bGx9fV0pLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgdXJpUGFyYW1RdWVyeTogTmF2aWdhdGlvbkV4dHJhcyA9IHtxdWVyeVBhcmFtczoge3F1ZXJ5OiB1cmlQYXJhbX19O1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcmVzdWx0J10sIHVyaVBhcmFtUXVlcnkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVRlcm0oKSB7XG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldFRlcm0oJycpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVR5cGUodHlwZTogT2JqZWN0VHlwZSkge1xuICAgIGlmICh0aGlzLmlkeFNlYXJjaCkge1xuICAgICAgdGhpcy5leGl0SW5kZXhkYXRhU2VhcmNoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS50b2dnbGVRdWVyeVR5cGUodHlwZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZUNvbnRleHRUeXBlKCkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVGaWx0ZXIoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcbiAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucmVtb3ZlUXVlcnlGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIGlmIHdlIGFyZSBpbiBpbmRlc2RhdGEgc2VhcmNoIG1vZGUsIHJlbW92aW5nIGEgZmlsdGVyIHRoYXQgaXMgbm8gYmFzZXBhcmFtIGZpbHRlclxuICAgIC8vIHJlcXVpcmVzIHRoZSBmcm9tIG1vZGVsIHRvIGJlIHVwZGF0ZWRcbiAgICBpZiAodGhpcy5pZHhTZWFyY2ggJiYgIXRoaXMuYXBwU2VhcmNoU2VydmljZS5pc0Jhc2VQYXJhbUZpbHRlcihmaWx0ZXIpKSB7XG4gICAgICAvLyB0b2RvOiB1cGRhdGUgZm9ybSBtb2RlbC9kYXRhXG4gICAgICBsZXQgaWR4RmlsdGVycyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycygpO1xuICAgICAgaWYgKGlkeEZpbHRlcnMgJiYgaWR4RmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIHNldCB1cCBmb3JtIGRhdGEgZnJvbSBpbmRleGRhdGEgcXVlcnkgZmlsdGVyc1xuICAgICAgICB0aGlzLmlkeFNlYXJjaC5mb3JtT3B0aW9ucy5kYXRhID0gaWR4RmlsdGVycztcbiAgICAgICAgdGhpcy5pbmRleGRhdGFGb3JtLnNldEZvcm1EYXRhKGlkeEZpbHRlcnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gaWYgbm8gZmlsdGVycyBhcmUgcHJlc2VudCByZXNldCB0aGUgZm9ybVxuICAgICAgICB0aGlzLmlkeFNlYXJjaC5mb3JtT3B0aW9ucy5kYXRhID0ge307XG4gICAgICAgIHRoaXMuaW5kZXhkYXRhRm9ybS5yZXNldEZvcm0oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRDb250ZXh0TW9kZWwoZm9ybU1vZGVscyk6IHZvaWQge1xuICAgIGxldCBtb2RlbHMgPSBbLi4uZm9ybU1vZGVsc107XG4gICAgdGhpcy5pZHhTZWFyY2guY29udGV4dE1vZGVscy5wdXNoKC4uLm1vZGVscyk7XG4gICAgdGhpcy5pZHhTZWFyY2guY29udGV4dE1vZGVscy5zb3J0KFV0aWxzLnNvcnRWYWx1ZXMoJ2xhYmVsJykpO1xuICB9XG5cbiAgcHVibGljIGV4aXRJbmRleGRhdGFTZWFyY2goKSB7XG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmV4aXRJbmRleGRhdGFTZWFyY2goKTtcbiAgICB0aGlzLmlkeFNlYXJjaCA9IG51bGw7XG4gIH1cblxuICBzZXRDb250ZXh0KGNvbnRleHRGb2xkZXJOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoY29udGV4dEZvbGRlck5hbWUgJiYgdGhpcy5jdXJyZW50Q29udGV4dEZvbGRlck5hbWUgIT09IGNvbnRleHRGb2xkZXJOYW1lKSB7XG4gICAgICB0aGlzLmN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZSA9IGNvbnRleHRGb2xkZXJOYW1lO1xuICAgICAgY29uc3QgY29udGV4dFR5cGUgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShjb250ZXh0Rm9sZGVyTmFtZSk7XG4gICAgICBpZiAoY29udGV4dEZvbGRlck5hbWUgPT09IENvbnRleHRUeXBlLnN5c3Jvb3QpIHtcbiAgICAgICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnNldENvbnRleHRUeXBlKHtuYW1lOiBDb250ZXh0VHlwZS5zeXNyb290LCBsYWJlbDogQ29udGV4dFR5cGUuc3lzcm9vdH0gYXMgT2JqZWN0VHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKGNvbnRleHRUeXBlKSB7XG4gICAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShjb250ZXh0VHlwZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgQ29udGV4dCB0eXBlICcke2NvbnRleHRGb2xkZXJOYW1lfScgbm90IGZvdW5kLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcFNlYXJjaFNlcnZpY2Uuc2V0Q29udGV4dFR5cGUobnVsbCk7XG4gICAgICB0aGlzLmN1cnJlbnRDb250ZXh0Rm9sZGVyTmFtZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBjb250ZXh0IHR5cGUgZm9yIHRoZSBjdXJyZW50IHNlYXJjaFxuICAgKiBAcGFyYW0gY3R4IFRoZSBjb250ZXh0IGZvcm0gbW9kZWxcbiAgICovXG4gIHByaXZhdGUgc2VsZWN0Q29udGV4dChjdHgpIHtcbiAgICBpZiAodGhpcy5pZHhTZWFyY2guY29udGV4dEZvcm1PcHRpb25zICYmIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb3JtT3B0aW9ucy5mb3JtTW9kZWwubmFtZSA9PT0gY3R4Lm5hbWUpIHtcbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNvbnRleHQ7XG4gICAgICBpZiAoY3R4Lm5hbWUgPT09IENvbnRleHRUeXBlLnN5c3Jvb3QpIHtcbiAgICAgICAgY29udGV4dCA9IGN0eDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShjdHgubmFtZSk7XG4gICAgICAgIHRoaXMuaWR4U2VhcmNoLmNvbnRleHRGb2xkZXJUeXBlID0gY29udGV4dDtcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRDb250ZXh0VHlwZShjb250ZXh0KTtcblxuICAgICAgbGV0IGZvcm1EYXRhID0ge307XG4gICAgICBsZXQgaWR4RmlsdGVycyA9IHRoaXMuYXBwU2VhcmNoU2VydmljZS5nZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycygpO1xuICAgICAgaWYgKGlkeEZpbHRlcnMgJiYgaWR4RmlsdGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvcm1EYXRhID0gaWR4RmlsdGVycztcbiAgICAgIH1cblxuICAgICAgdGhpcy5pZHhTZWFyY2guY29udGV4dEZvcm1PcHRpb25zID0ge2Zvcm1Nb2RlbDogY3R4LCBkYXRhOiBmb3JtRGF0YX07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSW5kZXhEYXRhQ2hhbmdlZChldmVudDogRm9ybVN0YXR1c0NoYW5nZWRFdmVudCkge1xuICAgIC8vIG9ubHkgdHJpZ2dlciB3aGVuIHZhbHVlcyBhcmUgY2hhbmdlZCBhcyBjaGFuZ2VzIG1heSBhbHNvIGFwcGVhciB3aGVuIHNjcmlwdHNcbiAgICAvLyBjaGFuZ2Ugb3RoZXIgZm9ybSBlbGVtZW50IHByb3BlcnRpZXMgKGVnLiByZWFkb25seSwgcmVxdWlyZWQgZmxhZylcbiAgICBpZiAoZXZlbnQuaW5kZXhkYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy51cGRhdGVTZWFyY2hGaWx0ZXJGcm9tRm9ybURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlYXJjaEZpbHRlckZyb21Gb3JtRGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuaW5kZXhkYXRhRm9ybSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGFkZCBtZXRhZGF0YSBmaWx0ZXJzIGZvciBlYWNoIGZvcm0gZGF0YSBlbnRyeVxuICAgIGxldCBpZHhGaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSA9IFtdO1xuICAgIGxldCBmb3JtRGF0YSA9IHRoaXMuaW5kZXhkYXRhRm9ybS5nZXRGb3JtRGF0YSgpO1xuICAgIGlmICh0aGlzLmNvbnRleHRGb3JtKSB7XG4gICAgICBmb3JtRGF0YSA9IE9iamVjdC5hc3NpZ24oZm9ybURhdGEsIHRoaXMuY29udGV4dEZvcm0uZ2V0Rm9ybURhdGEoKSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGZvcm1EYXRhKSkge1xuICAgICAgY29uc3QgZmlsdGVyczogU2VhcmNoRmlsdGVyW10gPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0U2VhcmNoRmlsdGVyKHRoaXMucXVlcnkudHlwZXMsIGtleSwgZm9ybURhdGFba2V5XSk7XG5cbiAgICAgIGZpbHRlcnMuZm9yRWFjaChmID0+IGlkeEZpbHRlcnMucHVzaChmKSk7XG4gICAgfVxuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRJbmRleFNlYXJjaFF1ZXJ5RmlsdGVycyhpZHhGaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBvYmplY3QgdHlwZSBlbGVtZW50IGZvciBhIGZpbHRlciwgdG8gYmUgYWJsZSB0byBzaG93IHRoZVxuICAgKiBsYWJlbCBmb3IgYSBmaWx0ZXIgaW4gdGhlIHNlYXJjaCBzdW1tYXJ5LlxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gdGhlIGZpbHRlciB0byBmZXRjaCBvYmplY3QgdHlwZSBlbGVtZW50IGZvclxuICAgKi9cbiAgcHVibGljIGdldE9iamVjdFR5cGVFbGVtZW50TGFiZWwoZmlsdGVyOiBTZWFyY2hGaWx0ZXIpIHtcbiAgICBsZXQgb3QgPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UuZ2V0VGFyZ2V0VHlwZUVsZW1lbnRCeU5hbWUoZmlsdGVyLnByb3BlcnR5KTtcbiAgICByZXR1cm4gb3QgPyBvdC5sYWJlbCA6IGZpbHRlci5wcm9wZXJ0eSArICcgLSAnICsgZmlsdGVyLmZpcnN0VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVF1ZXJ5KCkge1xuICAgIC8vIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zSGFuZGxpbmcgOiAncHJlc2VydmUnfTtcbiAgICB0aGlzLnJvdXRlclxuICAgICAgLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dLCB7cmVwbGFjZVVybDogdHJ1ZX0pXG4gICAgICAudGhlbigoKSA9PiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zdG9yZWQtcXVlcmllcyddLCB7cXVlcnlQYXJhbXM6IHtjcmVhdGU6IHRydWV9fSkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0b3JlZFF1ZXJ5KCkge1xuICAgIGlmICh0aGlzLnF1ZXJ5IGluc3RhbmNlb2YgU3RvcmVkUXVlcnkpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7b3V0bGV0czoge21vZGFsOiBudWxsfX1dLCB7cmVwbGFjZVVybDogdHJ1ZX0pO1xuICAgICAgdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5zYXZlU3RvcmVkUXVlcnkodGhpcy5xdWVyeSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5zdG9yZWRxdWVyeS5zYXZlLnN1Y2Nlc3MnKSk7XG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guc3RvcmVkcXVlcnkuc2F2ZS5lcnJvcicpKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlc2V0UXVlcnkoKSB7XG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IDA7XG5cbiAgICBpZiAodGhpcy5pZHhTZWFyY2gpIHtcbiAgICAgIHRoaXMuZXhpdEluZGV4ZGF0YVNlYXJjaCgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlU2VhcmNoTWVudShldnQ/KSB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXNIYW5kbGluZzogJ3ByZXNlcnZlJ307XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6IG51bGx9fV0sIHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNTZWFyY2hJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5pbnB1dEVMLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlU2VhcmNoSW5wdXRGb2N1cygpIHtcbiAgICBpZiAodGhpcy5xdWVyeS5leHBlcnRNb2RlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KCcuZXhwZXJ0LXNlYXJjaF9faW5wdXQnKS5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0eVNlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgdGhpcy5vYmplY3RUeXBlR3JvdXBzID0gdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLm9iamVjdFR5cGVHcm91cHM7XG4gICAgdGhpcy5vYmplY3RUeXBlR3JvdXBzWzBdLnR5cGVzID0gdGhpcy5vYmplY3RUeXBlR3JvdXBzWzBdLnR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUucW5hbWUgIT09ICdzeXNmb2xkZXInICYmIHR5cGUucW5hbWUgIT09ICdzeXNkb2N1bWVudCcgJiYgdHlwZS5xbmFtZSAhPT0gJ3N5c29iamVjdCcpO1xuICAgIHRoaXMucXVlcnlTdWJzY3JpcHRpb24gPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnkkLnN1YnNjcmliZShcbiAgICAgIChxdWVyeTogU2VhcmNoUXVlcnkpID0+IHRoaXMucHJvY2Vzc1F1ZXJ5KHF1ZXJ5KSk7XG4gICAgLy8gc3Vic2NyaWJlIHRvIHF1ZXJ5IHN0YXRlIGFzIHdlbGwgdG8gZmV0Y2ggcmVzdWx0IGNvdW50IGFuZCBhZ2dyZWdhdGlvbnMgYXMgdGhleSBjaGFuZ2VcbiAgICB0aGlzLnF1ZXJ5U3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLmFwcFNlYXJjaFNlcnZpY2UucXVlcnlTdGF0ZSQuc3Vic2NyaWJlKChxdWVyeVN0YXRlOiBTZWFyY2hTdGF0ZSkgPT4gdGhpcy5wcm9jZXNzUXVlcnlTdGF0ZShxdWVyeVN0YXRlKSk7XG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLmFnZ3JlZ2F0ZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5hcHBTZWFyY2hTZXJ2aWNlLnJlc2V0QWdncygpO1xuICAgIHRoaXMucXVlcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnF1ZXJ5U3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -22,8 +22,8 @@ export class SignatureTabComponent {
|
|
|
22
22
|
SignatureTabComponent.decorators = [
|
|
23
23
|
{ type: Component, args: [{
|
|
24
24
|
selector: 'eo-signature-tab',
|
|
25
|
-
template: "<ng-container *ngIf=\"dmsObject.data.yuvsigrequester_meta\">\n
|
|
26
|
-
styles: [":host{display:block;height:100%;overflow-y:auto;padding:var(--app-pane-padding)}:host .row{
|
|
25
|
+
template: "<ng-container *ngIf=\"dmsObject.data.yuvsigrequester_meta\">\n\n <section class=\"info\">\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.date'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigreqdate\">{{dmsObject.data.yuvsigreqdate | localeDate:\n 'eoShortDate'}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.requester'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigrequester_meta.title\">\n {{dmsObject.data.yuvsigrequester_meta.title}} </div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.subject'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigemailsubject\">{{dmsObject.data.yuvsigemailsubject}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.body'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigemailbody\">{{dmsObject.data.yuvsigemailbody}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.status'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigstatus_meta.label\">\n {{dmsObject.data.yuvsigstatus_meta.label}}</div>\n </div>\n <div class=\"row\" *ngIf=\"dmsObject.data.yuvsigerror\">\n <div class=\"label\">{{'eo.object.signature-tab.label.error'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigerror.length\">{{dmsObject.data.yuvsigerror}}</div>\n </div>\n <div class=\"row\" *ngIf=\"isUserAdmin()\">\n <div class=\"label\">{{'eo.object.signature-tab.label.signingPlatform'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigplatform\">{{dmsObject.data.yuvsigplatform}}</div>\n </div>\n <div class=\"row\" *ngIf=\"isUserAdmin()\">\n <div class=\"label\">{{'eo.object.signature-tab.label.signingPlatformId'|translate}}</div>\n <div class=\"value\" *ngIf=\"dmsObject.data.yuvsigplatformid\">{{dmsObject.data.yuvsigplatformid}}</div>\n </div>\n <div class=\"row\">\n <div class=\"label\">{{'eo.object.signature-tab.label.signers'|translate}}</div>\n <div class=\"value\">\n <div class=\"signer-container\" *ngFor=\"let s of dmsObject.data.yuvsigners\">\n <span class=\"circle\" [title]=\"'eo.object.signature-tab.order.tooltip' | translate\">{{s.yuvsignerorder}}</span>\n <div class=\"signer\">\n <div class=\"date\" *ngIf=\"s.yuvsignerdate\">{{s.yuvsignerdate | localeDate: 'eoShort'}}</div>\n <div class=\"name\" *ngIf=\"s.yuvsignername\">{{s.yuvsignername}}</div>\n <div class=\"email\" *ngIf=\"s.yuvsigneremail\">{{s.yuvsigneremail}}</div>\n <div class=\"state {{s.yuvsignerstatus}}\"><span *ngIf=\"s.yuvsignerstatus_meta?.label\">{{s.yuvsignerstatus_meta.label}}</span></div>\n <div class=\"reason\" *ngIf=\"s.yuvsignercomment\">{{s.yuvsignercomment}}</div>\n </div>\n\n </div>\n </div>\n </div>\n </section>\n</ng-container>",
|
|
26
|
+
styles: [":host{display:block;height:100%;overflow-y:auto;padding:var(--app-pane-padding)}:host .row{display:flex;line-height:1.5em;margin:0 calc(var(--app-pane-padding)/-4) 2px}:host .row .label,:host .row .value{margin:calc(var(--app-pane-padding)/4)}:host .row .label{border-radius:2px;color:var(--color-white);flex-basis:30%;flex-shrink:0;margin:0 calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/4);white-space:normal}:host .row .circle,:host .row .label{background-color:var(--color-primary-3);display:inline-block}:host .row .circle{align-self:center;border-radius:50%;color:#fff;height:2em;line-height:1.8em;text-align:center;width:2em}:host .row .signer-container{--signer-border-radius:4px;--signer-icon-color:var(--text-color-hint);--signer-row-gap:calc(var(--app-pane-padding)/2);background-color:var(--panel-background);border-radius:0 var(--signer-border-radius) var(--signer-border-radius) 0;display:flex;margin-bottom:calc(var(--app-pane-padding)/4);padding:calc(var(--app-pane-padding)/2)}:host .row .signer-container .signer{-moz-column-gap:var(--app-pane-padding);column-gap:var(--app-pane-padding);display:grid;grid-template-areas:\"name name\" \"email email\" \"state date\" \"reason reason\";grid-template-columns:1fr auto;grid-template-rows:auto auto auto auto;margin-left:5px}:host .row .signer-container .signed{--signer-icon-color:var(--color-success)}:host .row .signer-container .cancelled,:host .row .signer-container .expired,:host .row .signer-container .revised{--signer-icon-color:var(--color-warning)}:host .row .signer-container .error{--signer-icon-color:var(--color-error)}:host .row .signer-container .date{-ms-grid-column:3;-ms-grid-row:3;align-self:center;color:var(--text-color-caption);grid-area:date;margin-top:var(--signer-row-gap)}:host .row .signer-container .name{-ms-grid-column:1;-ms-grid-column-span:3;-ms-grid-row:1;font-weight:var(--font-weight-bold);grid-area:name}:host .row .signer-container .email{-ms-grid-column:1;-ms-grid-column-span:3;-ms-grid-row:2;grid-area:email}:host .row .signer-container .state{-ms-grid-column:1;-ms-grid-row:3;grid-area:state;margin-top:var(--signer-row-gap)}:host .row .signer-container .state span{background-color:var(--signer-icon-color);border-radius:4px;color:#fff;display:inline-block;padding:2px 4px 1px}:host .row .signer-container .reason{-ms-grid-column:1;-ms-grid-column-span:3;-ms-grid-row:4;grid-area:reason;margin-top:var(--signer-row-gap)}"]
|
|
27
27
|
},] }
|
|
28
28
|
];
|
|
29
29
|
SignatureTabComponent.ctorParameters = () => [
|
|
@@ -32,4 +32,4 @@ SignatureTabComponent.ctorParameters = () => [
|
|
|
32
32
|
SignatureTabComponent.propDecorators = {
|
|
33
33
|
dmsObject: [{ type: Input }]
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay91aS9zaWduYXR1cmUtdGFiL3NpZ25hdHVyZS10YWIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBb0IsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBTzVELE1BQU0sT0FBTyxxQkFBcUI7SUFnQmhDLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQWZELElBQ0ksU0FBUyxDQUFDLElBQWU7UUFDM0IsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQVFELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsQ0FBQztJQUN6RSxDQUFDOzs7WUE3QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDZtR0FBNkM7O2FBRTlDOzs7WUFOMEIsV0FBVzs7O3dCQVluQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RG1zT2JqZWN0LCBFb1VzZXIsIFVzZXJTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1zaWduYXR1cmUtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZ25hdHVyZS10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWduYXR1cmUtdGFiLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlVGFiQ29tcG9uZW50IHtcblxuICBwcml2YXRlIF9kbXNPYmplY3Q6IERtc09iamVjdDtcbiAgdXNlcjogRW9Vc2VyO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkbXNPYmplY3QoaXRlbTogRG1zT2JqZWN0KSB7XG4gICAgaWYgKHRoaXMuX2Rtc09iamVjdCAhPT0gaXRlbSkge1xuICAgICAgdGhpcy5fZG1zT2JqZWN0ID0gaXRlbTtcbiAgICB9XG4gIH1cblxuICBnZXQgZG1zT2JqZWN0KCk6IERtc09iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX2Rtc09iamVjdDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS51c2VyJC5zdWJzY3JpYmUoKHVzZXIpID0+IHtcbiAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgfSk7XG4gIH1cblxuICBpc1VzZXJBZG1pbigpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyLnJvbGVzLmZpbmQocm9sZSA9PiByb2xlLm5hbWUgPT09ICdTeXN0ZW0tQWRtaW4tUm9sZScpO1xuICB9XG59XG4iXX0=
|