@firestitch/list 18.0.49 → 18.0.50
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/classes/list-controller.d.ts +1 -1
- package/app/components/list/list.component.d.ts +8 -8
- package/esm2022/app/classes/list-controller.mjs +3 -2
- package/esm2022/app/components/list/list.component.mjs +9 -9
- package/fesm2022/firestitch-list.mjs +10 -9
- package/fesm2022/firestitch-list.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -10,14 +10,6 @@ import { FsBodyComponent } from '../body/body.component';
|
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export declare class FsListComponent implements OnInit, OnDestroy, AfterContentInit {
|
|
12
12
|
reorderController: ReorderController;
|
|
13
|
-
private _config;
|
|
14
|
-
private _el;
|
|
15
|
-
private _selectionDialog;
|
|
16
|
-
private _dialog;
|
|
17
|
-
private _cdRef;
|
|
18
|
-
private _groupExpandNotifier;
|
|
19
|
-
private _route;
|
|
20
|
-
private _persistance;
|
|
21
13
|
classFsList: boolean;
|
|
22
14
|
rowHoverHighlight: boolean;
|
|
23
15
|
set config(config: FsListConfig);
|
|
@@ -33,6 +25,14 @@ export declare class FsListComponent implements OnInit, OnDestroy, AfterContentI
|
|
|
33
25
|
private _filterParamsReady;
|
|
34
26
|
private _destroy;
|
|
35
27
|
private _injector;
|
|
28
|
+
private _config;
|
|
29
|
+
private _el;
|
|
30
|
+
private _selectionDialog;
|
|
31
|
+
private _dialog;
|
|
32
|
+
private _cdRef;
|
|
33
|
+
private _groupExpandNotifier;
|
|
34
|
+
private _route;
|
|
35
|
+
private _persistance;
|
|
36
36
|
set filterReference(component: any);
|
|
37
37
|
/**
|
|
38
38
|
* Set columns to config
|
|
@@ -169,8 +169,9 @@ export class List {
|
|
|
169
169
|
}
|
|
170
170
|
this._initFilters();
|
|
171
171
|
}
|
|
172
|
-
reload() {
|
|
172
|
+
reload(query) {
|
|
173
173
|
this._loading$.next(true);
|
|
174
|
+
this._filtersQuery.next(query);
|
|
174
175
|
this.dataController.setOperation(FsListState.Reload);
|
|
175
176
|
this._fetch$.next(null);
|
|
176
177
|
return this._fetchComplete$
|
|
@@ -740,4 +741,4 @@ export class List {
|
|
|
740
741
|
});
|
|
741
742
|
}
|
|
742
743
|
}
|
|
743
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2xpc3QtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQ2tFLFFBQVEsR0FDaEYsTUFBTSxvQkFBb0IsQ0FBQztBQUc1QixPQUFPLEVBQ0wsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUNyRSxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxVQUFVLEVBQUUsWUFBWSxFQUN4QixLQUFLLEVBQ0wsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUN6RCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXVCbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENB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O2FBQzFCLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87YUFDakIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDckQsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7XG4gIENoYW5nZUZuLCBGaWx0ZXJDb25maWcsIEZzRmlsdGVyQXV0b1JlbG9hZCwgSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZywgSXRlbVR5cGUsXG59IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2cgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsXG4gIGRlbGF5LFxuICBtYXAsIG1hcFRvLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBQYWdlQ2hhbmdlVHlwZSB9IGZyb20gJy4uL2VudW1zL3BhZ2UtY2hhbmdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGc0xpc3RTdGF0ZSB9IGZyb20gJy4uL2VudW1zL3N0YXRlLmVudW0nO1xuaW1wb3J0IHtcbiAgRnNMaXN0QWZ0ZXJDb250ZW50SW5pdEZuLFxuICBGc0xpc3RBZnRlckZldGNoRm4sXG4gIEZzTGlzdEFmdGVySW5pdEZuLFxuICBGc0xpc3RCZWZvcmVGZXRjaEZuLFxuICBGc0xpc3RDb25maWcsXG4gIEZzTGlzdEVtcHR5U3RhdGVDb25maWcsXG4gIEZzTGlzdEZldGNoRm4sXG4gIEZzTGlzdEZldGNoT3B0aW9ucyxcbiAgRnNMaXN0RmV0Y2hTdWJzY3JpcHRpb24sXG4gIEZzTGlzdEdyb3VwQ29uZmlnLFxuICBGc0xpc3RMb2FkTW9yZUNvbmZpZyxcbiAgRnNMaXN0Tm9SZXN1bHRzQ29uZmlnLFxuICBGc0xpc3RQZXJzaXRhbmNlLFxuICBGc0xpc3RSZXN0b3JlQ29uZmlnLFxuICBGc0xpc3RSb3dBY3Rpb24sXG4gIEZzTGlzdFJvd0FjdGlvbkdyb3VwLFxuICBGc0xpc3RTZWxlY3Rpb25Db25maWcsXG4gIEZzTGlzdFRyYWNrQnlGbixcbiAgRnNQYWdpbmcsXG4gIFBhZ2VDaGFuZ2UsXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgU3R5bGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvc3R5bGVDb25maWcubW9kZWwnO1xuXG5pbXBvcnQgeyBDb2x1bW5zQ29udHJvbGxlciB9IGZyb20gJy4vY29sdW1ucy1jb250cm9sbGVyJztcbmltcG9ydCB7IERhdGFDb250cm9sbGVyIH0gZnJvbSAnLi9kYXRhLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi9leHRlcm5hbC1wYXJhbXMtY29udHJvbGxlcic7XG5pbXBvcnQgeyBBY3Rpb25zQ29udHJvbGxlciB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuL3BhZ2luYXRpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgfSBmcm9tICcuL3BlcnNpc3RhbmNlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJy4vc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU29ydGluZ0NvbnRyb2xsZXIgfSBmcm9tICcuL3NvcnRpbmctY29udHJvbGxlcic7XG5cbmNvbnN0IHNob3dEZWxldGVkRmlsdGVyS2V5ID0gJ3Nob3dEZWxldGVkJztcblxuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG5cbiAgcHVibGljIGhlYWRpbmc6IHN0cmluZztcbiAgcHVibGljIHRyYWNrQnk6IHN0cmluZztcbiAgcHVibGljIHN1YmhlYWRpbmc6IHN0cmluZztcbiAgcHVibGljIGF1dG9Gb2N1czogYm9vbGVhbjtcbiAgcHVibGljIHJvd0hvdmVySGlnaGxpZ2h0OiBib29sZWFuO1xuICBwdWJsaWMgcm93QWN0aW9uc1JhdzogKEZzTGlzdFJvd0FjdGlvbkdyb3VwIHwgRnNMaXN0Um93QWN0aW9uKVtdO1xuICBwdWJsaWMgZ3JvdXBBY3Rpb25zUmF3OiBhbnlbXTtcbiAgcHVibGljIHJvd0NsYXNzO1xuICBwdWJsaWMgcm93RXZlbnRzOiBhbnk7XG4gIHB1YmxpYyByZXN0b3JlOiBGc0xpc3RSZXN0b3JlQ29uZmlnO1xuICBwdWJsaWMgcGVyc2lzdDogRnNMaXN0UGVyc2l0YW5jZTtcbiAgcHVibGljIGZpbHRlcnMgPSBbXTtcbiAgcHVibGljIGZpbHRlckluaXRDYjogQ2hhbmdlRm47XG4gIHB1YmxpYyBmaWx0ZXJDaGFuZ2VDYjogQ2hhbmdlRm47XG4gIHB1YmxpYyBzYXZlZEZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWc7XG4gIHB1YmxpYyBub1Jlc3VsdHM6IEZzTGlzdE5vUmVzdWx0c0NvbmZpZztcbiAgcHVibGljIGVtcHR5U3RhdGU6IEZzTGlzdEVtcHR5U3RhdGVDb25maWc7XG4gIHB1YmxpYyBmZXRjaEZuOiBGc0xpc3RGZXRjaEZuO1xuICBwdWJsaWMgYmVmb3JlRmV0Y2hGbjogRnNMaXN0QmVmb3JlRmV0Y2hGbjtcbiAgcHVibGljIGFmdGVyRmV0Y2hGbjogRnNMaXN0QWZ0ZXJGZXRjaEZuO1xuICBwdWJsaWMgYWZ0ZXJDb250ZW50SW5pdDogRnNMaXN0QWZ0ZXJDb250ZW50SW5pdEZuO1xuICBwdWJsaWMgYWZ0ZXJJbml0OiBGc0xpc3RBZnRlckluaXRGbjtcbiAgcHVibGljIHN0eWxlO1xuICBwdWJsaWMgaGFzUm93QWN0aW9ucztcbiAgcHVibGljIHJvd0FjdGlvbnNIb3ZlciA9IGZhbHNlO1xuICBwdWJsaWMgcGFnaW5nOiBQYWdpbmF0aW9uQ29udHJvbGxlcjtcbiAgcHVibGljIGNvbHVtbnM6IENvbHVtbnNDb250cm9sbGVyO1xuICBwdWJsaWMgYWN0aW9uczogQWN0aW9uc0NvbnRyb2xsZXI7XG4gIHB1YmxpYyBkYXRhQ29udHJvbGxlcjogRGF0YUNvbnRyb2xsZXI7XG4gIHB1YmxpYyBzb3J0aW5nOiBTb3J0aW5nQ29udHJvbGxlcjtcbiAgcHVibGljIGV4dGVybmFsUGFyYW1zOiBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXI7XG4gIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIHB1YmxpYyBmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZyA9IG51bGw7XG4gIHB1YmxpYyBzdGF0dXMgPSB0cnVlO1xuICBwdWJsaWMgY2hpcHMgPSBmYWxzZTtcbiAgcHVibGljIHF1ZXJ5UGFyYW0gPSBmYWxzZTtcbiAgcHVibGljIHJlc3RvcmVNb2RlID0gZmFsc2U7XG4gIHB1YmxpYyBhdXRvUmVsb2FkOiBGc0ZpbHRlckF1dG9SZWxvYWQ7XG4gIHB1YmxpYyBpbml0aWFsRmV0Y2ggPSB0cnVlO1xuICBwdWJsaWMgZW1wdHlTdGF0ZUVuYWJsZWQgPSBmYWxzZTtcbiAgcHVibGljIGVtcHR5U3RhdGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIF9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9mZXRjaENvbXBsZXRlJCA9IG5ldyBTdWJqZWN0PHsgc2Nyb2xsSW50b1ZpZXc/OiBib29sZWFuIH0+KCk7XG4gIHByaXZhdGUgX2ZpbHRlcnNSZWFkeSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2luaXRpYWxpemVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9mZXRjaCQgPSBuZXcgU3ViamVjdDxGc0xpc3RGZXRjaFN1YnNjcmlwdGlvbiB8IHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNRdWVyeSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjb3JkPHN0cmluZywgYW55Pj4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlckNvbmZpZzogU3R5bGVDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dyb3VwQ2VsbENvbmZpZzogU3R5bGVDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NlbGxDb25maWc6IFN0eWxlQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb290ZXJDb25maWc6IFN0eWxlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2NvbmZpZzogRnNMaXN0Q29uZmlnID0ge30sXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2csXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlOiBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfaW5EaWFsb2c6IGJvb2xlYW4sXG4gICkge1xuICAgIHRoaXMuY29sdW1ucyA9IG5ldyBDb2x1bW5zQ29udHJvbGxlcih0aGlzLl9wZXJzaXN0YW5jZSk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IEFjdGlvbnNDb250cm9sbGVyKCk7XG4gICAgdGhpcy5wYWdpbmcgPSBuZXcgUGFnaW5hdGlvbkNvbnRyb2xsZXIoKTtcbiAgICB0aGlzLmRhdGFDb250cm9sbGVyID0gbmV3IERhdGFDb250cm9sbGVyKCk7XG4gICAgdGhpcy5zb3J0aW5nID0gbmV3IFNvcnRpbmdDb250cm9sbGVyKCk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplKF9jb25maWcpO1xuICAgIHRoaXMuX2hlYWRlckNvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZyhfY29uZmlnLmhlYWRlcik7XG4gICAgdGhpcy5fZ3JvdXBDZWxsQ29uZmlnID0gbmV3IFN0eWxlQ29uZmlnKF9jb25maWcuY2VsbCk7XG4gICAgdGhpcy5fY2VsbENvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZyhfY29uZmlnLmNlbGwpO1xuICAgIHRoaXMuX2Zvb3RlckNvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZyhfY29uZmlnLmZvb3Rlcik7XG4gICAgdGhpcy5faW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5zdWJzY3JpYmUoKTtcblxuICAgIGlmICh0aGlzLmluaXRpYWxGZXRjaCkge1xuICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRPcGVyYXRpb24oRnNMaXN0U3RhdGUuTG9hZCk7XG4gICAgICB0aGlzLl9mZXRjaCQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJzUmVhZHkoKSB7XG4gICAgdGhpcy5fZmlsdGVyc1JlYWR5JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUmVhZHkkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzUmVhZHkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmZXRjaCQoKTogT2JzZXJ2YWJsZTxGc0xpc3RGZXRjaFN1YnNjcmlwdGlvbiB8IHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZmV0Y2gkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTYXZlZEZpbHRlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWx0ZXJDb25maWcuc2F2ZWRGaWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUXVlcnkoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnNRdWVyeS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUXVlcnkkKCk6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzUXVlcnkuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHYpID0+IHYgfHwge30pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyc0NvdW50JCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnNRdWVyeSRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHYpID0+IE9iamVjdC5rZXlzKHYpLmxlbmd0aCksXG4gICAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXN0cm95JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9kZXN0cm95JDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsaXplZCQ7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hSZW1vdGUocXVlcnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IEZzTGlzdEZldGNoT3B0aW9ucyA9IHtcbiAgICAgIHN0YXRlOiB0aGlzLmRhdGFDb250cm9sbGVyLm9wZXJhdGlvbixcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSB0aGlzLmZldGNoRm4ocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgPyBmcm9tKHJlc3VsdCkgOiByZXN1bHQ7XG4gIH1cblxuICAvLyBwdWJsaWMgbG9hZExvY2FsKCkge1xuICAvLyAgIHRoaXMucGFnaW5nLnVwZGF0ZVBhZ2luZ01hbnVhbCh0aGlzLl9yb3dzKTtcbiAgLy8gICBjb25zdCBmcm9tID0gKHRoaXMucGFnaW5nLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5nLmxpbWl0O1xuICAvLyAgIGNvbnN0IHRvID0gKHRoaXMucGFnaW5nLnBhZ2UgPT09IDEpID8gdGhpcy5wYWdpbmcubGltaXQgOiB0aGlzLnBhZ2luZy5saW1pdCAqIHRoaXMucGFnaW5nLnBhZ2U7XG4gIC8vICAgY29uc3Qgc2xpY2VPZlJvd3MgPSB0aGlzLl9yb3dzLnNsaWNlKGZyb20sIHRvKTtcbiAgLy8gICB0aGlzLmRhdGEkLm5leHQoc2xpY2VPZlJvd3MpO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0ZW1wbGF0ZXMgZm9yIHVzaW5nXG4gICAqXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZXNcbiAgICovXG4gIHB1YmxpYyB0cmFuZm9ybVRlbXBsYXRlc1RvQ29sdW1ucyh0ZW1wbGF0ZXMpIHtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlncyA9IHtcbiAgICAgIGhlYWRlcjogdGhpcy5faGVhZGVyQ29uZmlnLFxuICAgICAgZ3JvdXBDZWxsOiB0aGlzLl9ncm91cENlbGxDb25maWcsXG4gICAgICBjZWxsOiB0aGlzLl9jZWxsQ29uZmlnLFxuICAgICAgZm9vdGVyOiB0aGlzLl9mb290ZXJDb25maWcsXG4gICAgfTtcblxuICAgIHRoaXMuY29sdW1ucy5zZXREZWZhdWx0cyhkZWZhdWx0Q29uZmlncyk7XG4gICAgdGhpcy5jb2x1bW5zLmluaXRpYWxpemVDb2x1bW5zKHRlbXBsYXRlcyk7XG5cbiAgICAvLyBTZXQgc29ydEJ5IGRlZmF1bHQgY29sdW1uXG4gICAgdGhpcy5fdXBkYXRlU29ydGluZ0NvbHVtbnMoKTtcblxuICAgIC8vIERlZmF1bHQgc29ydCBieVxuICAgIGNvbnN0IGV4dGVybmFsU29ydGluZyA9IHRoaXMuZXh0ZXJuYWxQYXJhbXMuZXh0ZXJuYWxTb3J0aW5nO1xuICAgIGNvbnN0IGluaXRpYWxTb3J0Q29uZmlnID0gZXh0ZXJuYWxTb3J0aW5nIHx8IHRoaXMuX2NvbmZpZy5zb3J0O1xuICAgIHRoaXMuc29ydGluZy5pbml0aWFsU29ydEJ5KGluaXRpYWxTb3J0Q29uZmlnKTtcblxuICAgIGlmIChleHRlcm5hbFNvcnRpbmcgJiYgIXRoaXMuc29ydGluZy5pc0RlZmluZWQpIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxQYXJhbXMuY2xlYXJTb3J0aW5nUGFyYW1zKCk7XG5cbiAgICAgIGNvbnNvbGUud2FybignTm90IGFibGUgdG8gcmVzdG9yZSBwZXJzaXN0ZWQgc29ydGluZyBwYXJhbXMuJywgZXh0ZXJuYWxTb3J0aW5nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbml0RmlsdGVycygpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRPcGVyYXRpb24oRnNMaXN0U3RhdGUuUmVsb2FkKTtcbiAgICB0aGlzLl9mZXRjaCQubmV4dChudWxsKTtcblxuICAgIHJldHVybiB0aGlzLl9mZXRjaENvbXBsZXRlJFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZSggICAgICBcbiAgICAgICAgdGFrZSgxKSwgIFxuICAgICAgICBkZWxheSgwKSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2F0Y2ggcGFnZSBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3Vic2NyaWJlKCkge1xuICAgIHRoaXMucGFnaW5nLnBhZ2VDaGFuZ2VkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZXZlbnQ6IFBhZ2VDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmRhdGFDb250cm9sbGVyLnNldE9wZXJhdGlvbihGc0xpc3RTdGF0ZS5QYWdlQ2hhbmdlKTtcbiAgXG4gICAgICAgICAgLy8gUmVtb3ZlIGFsbCByb3dzIGlmIGxpbWl0cyB3YXMgY2hhbmdlZFxuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBQYWdlQ2hhbmdlVHlwZS5MaW1pdENoYW5nZWQgJiYgdGhpcy5wYWdpbmcuaGFzUGFnZVN0cmF0ZWd5KSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFDb250cm9sbGVyLmNsZWFyUm93cygpO1xuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgaWYgKHRoaXMucGFnaW5nLmhhc09mZnNldFN0cmF0ZWd5KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luZy51cGRhdGVQYWdpbmF0aW9uKCk7XG4gIFxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVZpc2libGVSZWNvcmRzQ291bnQodGhpcy5wYWdpbmcuZ2V0UGFnZVJlY29yZHMoKSk7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVRvdGFsUmVjb3Jkc0NvdW50KHRoaXMucGFnaW5nLnJlY29yZHMpO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5wYWdlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2ZldGNoJC5uZXh0KG51bGwpO1xuICAgICAgICAgIGlmICghdGhpcy5wYWdpbmcubG9hZE1vcmVFbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWlucyA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNkay1vdmVybGF5LWNvbnRhaW5lcicpKVxuICAgICAgICAgICAgICAuc29tZSgob3ZlcmxheSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKG92ZXJsYXkpO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGV0IGVsID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKCFjb250YWlucykge1xuICAgICAgICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgaWYgKChOdW1iZXIocmVjdC50b3AgfHwgMCkgKyB3aW5kb3cucGFnZVlPZmZzZXQpIDwgd2luZG93LmlubmVySGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZWwgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9mZXRjaENvbXBsZXRlJFxuICAgICAgICAgICAgICAuYXNPYnNlcnZhYmxlKClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYoZXZlbnQ/LnNjcm9sbEludG9WaWV3ID8/IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuc29ydGluZy5zb3J0aW5nQ2hhbmdlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YUNvbnRyb2xsZXIuc2V0T3BlcmF0aW9uKEZzTGlzdFN0YXRlLlNvcnQpO1xuICAgICAgICB0aGlzLnBhZ2luZy5wYWdlID0gMTtcbiAgICAgICAgdGhpcy5fZmV0Y2gkLm5leHQobnVsbCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2xpc3RlblZpc2libGVDb2x1bW5DaGFuZ2VzKCk7XG4gICAgdGhpcy5fbGlzdGVuUm93c1JlbW92ZSgpO1xuICAgIHRoaXMuX2xpc3RlbkZldGNoKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSh0cmFja0J5PzogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgbGV0IHJvd3NEYXRhID0gdGhpcy5kYXRhQ29udHJvbGxlclxuICAgICAgLnZpc2libGVSb3dzRGF0YTtcblxuICAgIGlmICh0cmFja0J5KSB7XG4gICAgICByb3dzRGF0YSA9IHJvd3NEYXRhXG4gICAgICAgIC5maWx0ZXIodHJhY2tCeSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3NEYXRhXG4gICAgICAubWFwKChkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBjbG9uZURlZXAoZGF0YSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNEYXRhKHRyYWNrQnk6IEZzTGlzdFRyYWNrQnlGbikge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzRGF0YS5zb21lKHRyYWNrQnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBncm91cCBtb2RlIHN0YXR1c1xuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIHB1YmxpYyBncm91cEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5kYXRhQ29udHJvbGxlci5ncm91cEVuYWJsZWQgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmRhdGFDb250cm9sbGVyLmdyb3VwRW5hYmxlZCA9IHZhbHVlO1xuXG4gICAgICAvLyBDb21tZW50ZWQgb3V0IGJlY2F1c2UgUmF5IHdhbnRzIHRvIGNoYW5nZSBncm91cCBzdGF0dXMgaW4gZmV0Y2ggbWFwIHBpcGVcbiAgICAgIC8vIGFuZCBpdCB0cmlnZ2VycyBleHRyYSByZXF1ZXN0c1xuICAgICAgLy8gdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5wYWdpbmcpIHtcbiAgICAgIHRoaXMucGFnaW5nLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zb3J0aW5nKSB7XG4gICAgICB0aGlzLnNvcnRpbmcuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbHRlckNvbmZpZykge1xuICAgICAgdGhpcy5maWx0ZXJDb25maWcgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4dGVybmFsUGFyYW1zKSB7XG4gICAgICB0aGlzLmV4dGVybmFsUGFyYW1zLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtbnMuZGVzdHJveSgpO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5kYXRhQ29udHJvbGxlci5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogRG8gaW5pdGlhbGl6YXRpb24gb2YgdGFibGVcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZShjb25maWc6IEZzTGlzdENvbmZpZykge1xuICAgIHRoaXMuX2luaXRWYXJpYWJsZXMoY29uZmlnKTtcbiAgICB0aGlzLl9pbml0RGVmYXVsdE9wdGlvbnMoY29uZmlnKTtcbiAgICB0aGlzLl9pbml0UmVzdG9yZSgpO1xuICAgIHRoaXMuX2luaXRBY3Rpb25zKGNvbmZpZyk7XG4gICAgdGhpcy5faW5pdFBhZ2luZyhjb25maWcucGFnaW5nLCBjb25maWcubG9hZE1vcmUpO1xuICAgIHRoaXMuX2luaXRTZWxlY3Rpb24oY29uZmlnLnNlbGVjdGlvbiwgdGhpcy5fc2VsZWN0aW9uRGlhbG9nKTtcbiAgICB0aGlzLl9pbml0R3JvdXBzKGNvbmZpZy5ncm91cCk7XG4gICAgdGhpcy5faW5pdEV4dGVybmFsUGFyYW1zQ29udHJvbGxlcigpO1xuICAgIHRoaXMuX2luaXRpYWxpemVEYXRhKCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHNcbiAgcHJpdmF0ZSBfaW5pdFZhcmlhYmxlcyhjb25maWc6IEZzTGlzdENvbmZpZykge1xuICAgIHRoaXMuYXV0b0ZvY3VzID0gY29uZmlnLmF1dG9Gb2N1cztcbiAgICB0aGlzLnJvd0hvdmVySGlnaGxpZ2h0ID0gY29uZmlnLnJvd0hvdmVySGlnaGxpZ2h0ID8/IHRydWU7XG4gICAgdGhpcy5oZWFkaW5nID0gY29uZmlnLmhlYWRpbmc7XG4gICAgdGhpcy50cmFja0J5ID0gY29uZmlnLnRyYWNrQnk7XG4gICAgdGhpcy5zdWJoZWFkaW5nID0gY29uZmlnLnN1YmhlYWRpbmc7XG4gICAgdGhpcy5yb3dBY3Rpb25zUmF3ID0gY29uZmlnLnJvd0FjdGlvbnM7XG4gICAgdGhpcy5yb3dDbGFzcyA9IGNvbmZpZy5yb3dDbGFzcztcbiAgICB0aGlzLnJvd0V2ZW50cyA9IGNvbmZpZy5yb3dFdmVudHM7XG4gICAgdGhpcy5yZXN0b3JlID0gY29uZmlnLnJlc3RvcmU7XG4gICAgdGhpcy5wZXJzaXN0ID0gY29uZmlnLnBlcnNpc3Q7XG4gICAgdGhpcy5maWx0ZXJzID0gY29uZmlnLmZpbHRlcnMgPz8gW107XG4gICAgdGhpcy5maWx0ZXJJbml0Q2IgPSBjb25maWcuZmlsdGVySW5pdDtcbiAgICB0aGlzLmZpbHRlckNoYW5nZUNiID0gY29uZmlnLmZpbHRlckNoYW5nZTtcbiAgICB0aGlzLnNhdmVkRmlsdGVycyA9IGNvbmZpZy5zYXZlZEZpbHRlcnM7XG4gICAgdGhpcy5ub1Jlc3VsdHMgPSBjb25maWcubm9SZXN1bHRzO1xuICAgIHRoaXMuZW1wdHlTdGF0ZSA9IGNvbmZpZy5lbXB0eVN0YXRlO1xuICAgIHRoaXMuZmV0Y2hGbiA9IGNvbmZpZy5mZXRjaDtcbiAgICB0aGlzLmFmdGVyRmV0Y2hGbiA9IGNvbmZpZy5hZnRlckZldGNoO1xuICAgIHRoaXMuYmVmb3JlRmV0Y2hGbiA9IGNvbmZpZy5iZWZvcmVGZXRjaDtcbiAgICB0aGlzLmFmdGVySW5pdCA9IGNvbmZpZy5hZnRlckluaXQ7XG4gICAgdGhpcy5zdHlsZSA9IGNvbmZpZy5zdHlsZTtcbiAgICB0aGlzLmF1dG9SZWxvYWQgPSBjb25maWcuYXV0b1JlbG9hZDtcbiAgICB0aGlzLmNvbHVtbnMuaW5pdENvbmZpZyhjb25maWcuY29sdW1uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBKdXN0IGluaXQgb3B0aW9ucyBieSBkZWZhdWx0IGl0IGl0IHdhc24ndCBzcGVjaWZpZWRcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdERlZmF1bHRPcHRpb25zKGNvbmZpZykge1xuICAgIC8vIFdlIHNob3VsZCBwcmV2ZW50IGluaXRpYWwgZmV0Y2ggaW4gY2FzZXMgd2hlbiBpdCB3aWxsIGJlIGZldGNoZWQgaW4gYW55IGNhc2VcbiAgICAvLyBBcyBleC4gc2Nyb2xsYWJsZSBvciBmaWx0ZXIgd2lsbCBkbyBmZXRjaCBpbiBhbnkgY2FzZXNcbiAgICBpZiAoY29uZmlnLmluaXRpYWxGZXRjaCA9PT0gZmFsc2UgfHwgY29uZmlnLnNjcm9sbGFibGUpIHsgLy8gVE9ETyBmaXhtZSBhZnRlciB0c21vZGVsIHZlcnNpb24gdXBkYXRlXG4gICAgICB0aGlzLmluaXRpYWxGZXRjaCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnN0YXR1cyA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RhdHVzID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjb25maWcuY2hpcHMpIHtcbiAgICAgIHRoaXMuY2hpcHMgPSBjb25maWcuY2hpcHM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2luRGlhbG9nKSB7XG4gICAgICB0aGlzLnF1ZXJ5UGFyYW0gPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5xdWVyeVBhcmFtID0gKGNvbmZpZy5xdWVyeVBhcmFtID09PSB1bmRlZmluZWQpXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGNvbmZpZy5xdWVyeVBhcmFtO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuc29ydHMpIHtcbiAgICAgIHRoaXMuc29ydGluZy5pbml0RmFrZUNvbHVtbnMoY29uZmlnLnNvcnRzKTtcbiAgICB9XG4gICAgaWYgKCFjb25maWcudHJhY2tCeSkge1xuICAgICAgdGhpcy50cmFja0J5ID0gJ2lkJztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmFmdGVyQ29udGVudEluaXQpIHtcbiAgICAgIHRoaXMuYWZ0ZXJDb250ZW50SW5pdCA9ICgpID0+IHtcbiAgICAgICAgY29uZmlnLmFmdGVyQ29udGVudEluaXQodGhpcy5wYWdpbmcucXVlcnksIHRoaXMuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3MpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdCByZXN0b3JlIHJvdyBhY3Rpb24gYW5kIGFwcGVuZCBTaG93IERlbGV0ZWQgb3B0aW9uIGludG8gZmlsdGVyc1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFJlc3RvcmUoKSB7XG4gICAgaWYgKHRoaXMucmVzdG9yZSkge1xuICAgICAgY29uc3QgcmVzdG9yZUFjdGlvbiA9IHtcbiAgICAgICAgbGFiZWw6IHRoaXMucmVzdG9yZS5tZW51TGFiZWwgfHwgJ1Jlc3RvcmUnLFxuICAgICAgICBtZW51OiB0cnVlLFxuICAgICAgICBjbGljazogKHJvdykgPT4ge1xuICAgICAgICAgIHRoaXMuX3Jlc3RvcmVDbGljayh0aGlzLnJlc3RvcmUuY2xpY2ssIHJvdyk7XG4gICAgICAgIH0sIC8vIFRPRE8gZml4IG1lLCBtb3ZlIHRvIHNwZWNpYWwgZmlsZVxuICAgICAgICByZXN0b3JlOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgaWYgKCF0aGlzLnJvd0FjdGlvbnNSYXcpIHtcbiAgICAgICAgdGhpcy5yb3dBY3Rpb25zUmF3ID0gW107XG4gICAgICB9XG5cbiAgICAgIHRoaXMucm93QWN0aW9uc1Jhdy5wdXNoKHJlc3RvcmVBY3Rpb24pO1xuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJzIHx8IFtdO1xuXG4gICAgICBpZiAodGhpcy5yZXN0b3JlLmZpbHRlciAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHNob3dEZWxldGVkRmlsdGVyS2V5LFxuICAgICAgICAgIHR5cGU6IEl0ZW1UeXBlLkNoZWNrYm94LFxuICAgICAgICAgIGxhYmVsOiB0aGlzLnJlc3RvcmUuZmlsdGVyTGFiZWwgfHwgJ1Nob3cgRGVsZXRlZCcsXG4gICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogSW5pdCBwYWdpbmdcbiAgICpcbiAgICogQHBhcmFtIHBhZ2luZ0NvbmZpZ1xuICAgKiBAcGFyYW0gbG9hZE1vcmVcbiAgICovXG4gIHByaXZhdGUgX2luaXRQYWdpbmcocGFnaW5nQ29uZmlnOiBGc1BhZ2luZyB8IGZhbHNlLCBsb2FkTW9yZTogRnNMaXN0TG9hZE1vcmVDb25maWcgfCBib29sZWFuKSB7XG4gICAgdGhpcy5wYWdpbmcuaW5pdFdpdGhDb25maWcocGFnaW5nQ29uZmlnLCBsb2FkTW9yZSk7XG4gIH1cblxuICAvKipcbiAgICogU3BsaXQgYWN0aW9ucyBieSBjYXRlZ29yaWVzXG4gICAqL1xuICBwcml2YXRlIF9pbml0QWN0aW9ucyhjb25maWcpIHtcbiAgICBpZiAoY29uZmlnLmFjdGlvbnMpIHtcbiAgICAgIHRoaXMuYWN0aW9ucy5zZXRBY3Rpb25zKGNvbmZpZy5hY3Rpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvd0FjdGlvbnNIb3ZlciA9IGNvbmZpZy5yb3dBY3Rpb25zSG92ZXIgPz8gZmFsc2U7XG5cbiAgICB0aGlzLmhhc1Jvd0FjdGlvbnMgPVxuICAgICAgKHRoaXMucm93QWN0aW9uc1JhdyAmJiB0aGlzLnJvd0FjdGlvbnNSYXcubGVuZ3RoID4gMClcbiAgICAgIHx8ICh0aGlzLmdyb3VwQWN0aW9uc1JhdyAmJiB0aGlzLmdyb3VwQWN0aW9uc1Jhdy5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTZWxlY3Rpb24oXG4gICAgc2VsZWN0aW9uQ29uZmlnOiBGc0xpc3RTZWxlY3Rpb25Db25maWcsXG4gICAgc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2csXG4gICkge1xuICAgIGlmIChzZWxlY3Rpb25Db25maWcpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbkNvbnRyb2xsZXIoc2VsZWN0aW9uQ29uZmlnLCB0aGlzLnRyYWNrQnksIHNlbGVjdGlvbkRpYWxvZyk7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZXRSb3dzQ2FsbGJhY2soKCkgPT4gdGhpcy5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZURhdGEoKSB7XG4gICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRBZGRpdGlvbmFsQ29uZmlncyh7XG4gICAgICBsb2FkTW9yZUVuYWJsZWQ6IHRoaXMucGFnaW5nLmxvYWRNb3JlRW5hYmxlZCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRHcm91cHMoZ3JvdXBDb25maWc6IEZzTGlzdEdyb3VwQ29uZmlnKSB7XG4gICAgaWYgKGdyb3VwQ29uZmlnKSB7XG4gICAgICB0aGlzLmRhdGFDb250cm9sbGVyLnNldEdyb3VwQ29uZmlnKGdyb3VwQ29uZmlnKTtcbiAgICAgIHRoaXMuZ3JvdXBBY3Rpb25zUmF3ID0gZ3JvdXBDb25maWcuYWN0aW9ucztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0RXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyKCkge1xuICAgIHRoaXMuZXh0ZXJuYWxQYXJhbXMgPSBuZXcgRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyKFxuICAgICAgdGhpcy5fcm91dGUsXG4gICAgICB0aGlzLl9wZXJzaXN0YW5jZSxcbiAgICAgIHRoaXMucGFnaW5nLFxuICAgICAgdGhpcy5zb3J0aW5nLFxuICAgICAgdGhpcy5xdWVyeVBhcmFtLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIGZldGNoJCBldmVudCB3aXRoIGRlYm91bmNlXG4gICAqL1xuICBwcml2YXRlIF9saXN0ZW5GZXRjaCgpIHtcbiAgICBsZXQgZmV0Y2gkID0gdGhpcy5mZXRjaCQ7XG5cbiAgICAvLyBTaG91bGQgd2FpdCB1bnRpbCBzYXZlZCBmaWx0ZXJzIG5vdCBsb2FkZWRcbiAgICBpZiAodGhpcy5maWx0ZXJzKSB7XG4gICAgICBmZXRjaCQgPSBjb21iaW5lTGF0ZXN0KFtmZXRjaCQsIHRoaXMuX2ZpbHRlcnNSZWFkeSRdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKFtwYXJhbXNdKSA9PiBwYXJhbXMpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZldGNoJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24/LmNsb3NlU2VsZWN0aW9uRGlhbG9nKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHBhcmFtczogRnNMaXN0RmV0Y2hTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICBsZXQgcXVlcnkgPSB7IC4uLnRoaXMuZmlsdGVyc1F1ZXJ5IH07XG5cbiAgICAgICAgICBpZiAodGhpcy5wYWdpbmcuaGFzT2Zmc2V0U3RyYXRlZ3kgJiYgcGFyYW1zPy5sb2FkT2Zmc2V0KSB7XG4gICAgICAgICAgICBxdWVyeSA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHRoaXMucGFnaW5nLmxvYWREZWxldGVkT2Zmc2V0UXVlcnkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhbGxSZWNvcmRzUmFuZ2VOZWVkZWQgPSAodGhpcy5pbml0aWFsRmV0Y2hcbiAgICAgICAgICAgICAgfHwgdGhpcy5kYXRhQ29udHJvbGxlci5vcGVyYXRpb24gPT09IEZzTGlzdFN0YXRlLlJlbG9hZFxuICAgICAgICAgICAgKSAmJiB0aGlzLnBhZ2luZy5sb2FkTW9yZUVuYWJsZWQ7XG5cbiAgICAgICAgICAgIHF1ZXJ5ID0gYWxsUmVjb3Jkc1JhbmdlTmVlZGVkID8gXG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnksIHRoaXMucGFnaW5nLmxvYWRNb3JlUXVlcnkpIDogXG4gICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocXVlcnksIHRoaXMucGFnaW5nLnF1ZXJ5KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4pIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgb3JkZXI6IGAke3RoaXMuc29ydGluZy5zb3J0aW5nQ29sdW1uLm5hbWV9LCR7dGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4uZGlyZWN0aW9ufWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmNvbHVtbnMuY29uZmlndXJlZCkge1xuICAgICAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgICAgIC4uLnF1ZXJ5LFxuICAgICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMudmlzaWJsZUNvbHVtbnNOYW1lcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHsgcGFyYW1zLCBxdWVyeSB9O1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IHBhcmFtcywgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5jb2x1bW5zLmNvbHVtbnNGZXRjaGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmxvYWRSZW1vdGVDb2x1bW5Db25maWdzKClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwVG8oeyBwYXJhbXMsIHF1ZXJ5IH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvZih7IHBhcmFtcywgcXVlcnkgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHsgcGFyYW1zLCBxdWVyeSB9KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYmVmb3JlRmV0Y2hGbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmVmb3JlRmV0Y2hGbihxdWVyeSlcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChiZWZvcmVGZXRjaFF1ZXJ5KSA9PiAoeyBwYXJhbXMsIHF1ZXJ5OiBiZWZvcmVGZXRjaFF1ZXJ5IH0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb2YoeyBwYXJhbXMsIHF1ZXJ5IH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IHBhcmFtcywgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlbW90ZUZldGNoID0gdGhpcy5mZXRjaFJlbW90ZShxdWVyeSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdDxhbnk+KFtvZih7IHBhcmFtcywgcXVlcnkgfSksIHJlbW90ZUZldGNoXSk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xuXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtwYXJhbXNRdWVyeSwgcmVzcG9uc2VdKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbEZldGNoID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NvbXBsZXRlRmV0Y2gocGFyYW1zUXVlcnkucGFyYW1zLCBwYXJhbXNRdWVyeS5xdWVyeSwgcmVzcG9uc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Sb3dzUmVtb3ZlKCkge1xuICAgIHRoaXMuZGF0YUNvbnRyb2xsZXIucm93c1JlbW92ZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHJvd3M6IGFueVtdKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2luZy5lbmFibGVkKSB7XG5cbiAgICAgICAgICBjb25zdCByZW1vdmVkQ291bnQgPSByb3dzLmxlbmd0aDtcblxuICAgICAgICAgIGlmICh0aGlzLnBhZ2luZy5oYXNQYWdlU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIHRoaXMuX25vRGF0YVBhZ2luYXRpb25VcGRhdGUocmVtb3ZlZENvdW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmV0Y2ggbW9yZSBpZiBoYXMgc29tZXRoaW5nIGZvciBmZXRjaFxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUNvbnRyb2xsZXIuaGFzRGF0YSB8fCB0aGlzLnBhZ2luZy5oYXNOZXh0UGFnZSkge1xuICAgICAgICAgICAgICB0aGlzLmRhdGFDb250cm9sbGVyLnNldE9wZXJhdGlvbihGc0xpc3RTdGF0ZS5Mb2FkTW9yZSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5wYWdpbmcucmVtb3ZlUm93cyhyZW1vdmVkQ291bnQpO1xuICAgICAgICAgICAgICB0aGlzLl9mZXRjaCQubmV4dCh7IGxvYWRPZmZzZXQ6IHRydWUgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl9ub0RhdGFQYWdpbmF0aW9uVXBkYXRlKHJlbW92ZWRDb3VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gc2VsZWN0aW9uXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5yZW1vdmVSb3cocm93LmRhdGEpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZXIgbWF5IGhhdmUgb3JpZ2luYWxseSBoaWRkZW4gY29sdW1ucywgYnV0IHZpc2liaWxpdHkgb2YgdGhvc2UgY29sdW1uc1xuICAgKiBjYW4gYmUgY2hhbmdlZCBwcm9ncmFtbWF0aWNhbHkgaW4gYW55IHRpbWVcbiAgICovXG4gIHByaXZhdGUgX2xpc3RlblZpc2libGVDb2x1bW5DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1ucy52aXNpYmxlQ29sdW1ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNvcnRpbmdDb2x1bW5zKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW5kIHdhdGNoIGZpbHRlciBjaGFuZ2VzXG4gICAqL1xuICBwcml2YXRlIF9pbml0RmlsdGVycygpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJDb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0Q29uZmlnID0gdGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW5cbiAgICAgID8geyB2YWx1ZTogdGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4ubmFtZSwgZGlyZWN0aW9uOiB0aGlzLnNvcnRpbmcuc29ydGluZ0NvbHVtbi5kaXJlY3Rpb24gfVxuICAgICAgOiBudWxsO1xuXG4gICAgLy8gQ29uZmlnXG4gICAgdGhpcy5maWx0ZXJDb25maWcgPSB7XG4gICAgICBpdGVtczogdGhpcy5maWx0ZXJzIHx8IFtdLFxuICAgICAgc2F2ZWRGaWx0ZXJzOiB0aGlzLnNhdmVkRmlsdGVycyxcbiAgICAgIGFjdGlvbnM6IHRoaXMuYWN0aW9ucy5hY3Rpb25zLFxuICAgICAgcXVlcnlQYXJhbTogdGhpcy5xdWVyeVBhcmFtLFxuICAgICAgYXV0b2ZvY3VzOiB0aGlzLmF1dG9Gb2N1cyxcbiAgICAgIHNvcnQ6IHNvcnRDb25maWcsXG4gICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgIGF1dG9SZWxvYWQ6IHRoaXMuYXV0b1JlbG9hZCxcbiAgICAgIGluaXQ6IHRoaXMuX2ZpbHRlckluaXQuYmluZCh0aGlzKSxcbiAgICAgIGNoYW5nZTogdGhpcy5fZmlsdGVyQ2hhbmdlLmJpbmQodGhpcyksXG4gICAgICByZWxvYWQ6ICh0aGlzLl9jb25maWcucmVsb2FkID8/IHRydWUpID8gdGhpcy5yZWxvYWQuYmluZCh0aGlzKSA6IG51bGwsXG4gICAgICBzb3J0Q2hhbmdlOiB0aGlzLl9maWx0ZXJTb3J0LmJpbmQodGhpcyksXG4gICAgICBoZWFkaW5nOiB0aGlzLmhlYWRpbmcsXG4gICAgICBzdWJoZWFkaW5nOiB0aGlzLnN1YmhlYWRpbmcsXG4gICAgfTtcblxuICAgIGlmKHRoaXMuX3BlcnNpc3RhbmNlLnF1ZXJ5RW5hYmxlZCkge1xuICAgICAgdGhpcy5maWx0ZXJDb25maWcucGVyc2lzdCA9ICB7XG4gICAgICAgIG5hbWU6IHRoaXMuX3BlcnNpc3RhbmNlLm5hbWUsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIEZpbHRlciBoYXMgYmVlbiBpbml0aWFsaXplZFxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyc1xuICAgKi9cbiAgcHJpdmF0ZSBfZmlsdGVySW5pdChxdWVyeSkge1xuICAgIGlmICh0aGlzLmZpbHRlckluaXRDYikge1xuICAgICAgdGhpcy5maWx0ZXJJbml0Q2IocXVlcnkpO1xuICAgIH1cblxuICAgIHF1ZXJ5ID0gdGhpcy5fcHJvY2Vzc1Jlc3RvcmVRdWVyeShxdWVyeSk7XG5cbiAgICB0aGlzLl9maWx0ZXJzUXVlcnkubmV4dChxdWVyeSk7XG5cbiAgICB0aGlzLmZpbHRlcnNSZWFkeSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoZW4gRmlsdGVyIGhhcyBiZWVuIGNoYW5nZWRcbiAgICpcbiAgICogQHBhcmFtIHF1ZXJ5XG4gICAqIEBwYXJhbSBzb3J0XG4gICAqL1xuICBwcml2YXRlIF9maWx0ZXJDaGFuZ2UocXVlcnksIHNvcnQpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJDaGFuZ2VDYikge1xuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2VDYihxdWVyeSwgc29ydCk7XG4gICAgfVxuXG4gICAgcXVlcnkgPSB0aGlzLl9wcm9jZXNzUmVzdG9yZVF1ZXJ5KHF1ZXJ5KTtcblxuICAgIHRoaXMuX2ZpbHRlcnNRdWVyeS5uZXh0KHF1ZXJ5KTtcblxuICAgIGlmICh0aGlzLnJlc3RvcmUgJiYgdGhpcy5yZXN0b3JlLnJlbG9hZCkge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFDb250cm9sbGVyLnNldE9wZXJhdGlvbihGc0xpc3RTdGF0ZS5GaWx0ZXIpO1xuXG4gICAgLy8gUmVzZXQgcGFnaW5nIGZvciByZXF1ZXN0IHdpdGggY29ycmVjdCBvZmZzZXRcbiAgICB0aGlzLnBhZ2luZy5yZXNldFBhZ2luZygpO1xuICAgIHRoaXMuX2ZldGNoJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc1Jlc3RvcmVRdWVyeShxdWVyeSkge1xuICAgIHRoaXMucmVzdG9yZU1vZGUgPSBmYWxzZTtcbiAgICAvLyBSZXN0b3JlIG9wdGlvblxuICAgIGlmICh0aGlzLnJlc3RvcmUgJiYgcXVlcnlbc2hvd0RlbGV0ZWRGaWx0ZXJLZXldKSB7XG4gICAgICBxdWVyeSA9IE9iamVjdC5rZXlzKHF1ZXJ5KVxuICAgICAgICAuZmlsdGVyKChrZXkpID0+IGtleSAhPT0gc2hvd0RlbGV0ZWRGaWx0ZXJLZXkpXG4gICAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgIFtrZXldOiBxdWVyeVtrZXldLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgcXVlcnkgPSB7XG4gICAgICAgIC4uLnF1ZXJ5LFxuICAgICAgICAuLi50aGlzLnJlc3RvcmUucXVlcnksXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnJlc3RvcmVNb2RlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnk7XG4gIH1cblxuICAvLyBDYWxsYmFjayB3aGVuIEZpbHRlciBzb3J0IGhhcyBiZWVuIGNoYW5nZWRcbiAgcHJpdmF0ZSBfZmlsdGVyU29ydChmaWx0ZXJRdWVyeSwgZmlsdGVyU29ydCkge1xuICAgIGlmIChmaWx0ZXJTb3J0KSB7XG4gICAgICB0aGlzLnNvcnRpbmcuc29ydEJ5Q29sdW1uV2l0aE5hbWUoZmlsdGVyU29ydC52YWx1ZSk7XG5cbiAgICAgIGNvbnN0IHNvcnREaXJlY3Rpb24gPSBmaWx0ZXJTb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYycgPyBTb3J0aW5nRGlyZWN0aW9uLmFzYyA6IFNvcnRpbmdEaXJlY3Rpb24uZGVzYztcbiAgICAgIHRoaXMuc29ydGluZy5zb3J0RGlyZWN0aW9uKHNvcnREaXJlY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGSVhNRSBuZWVkIHRvIGJlIHJlZmFjdG9yZWQuLi5cbiAgICAgIHRoaXMuc29ydGluZy5zb3J0aW5nQ29sdW1uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb21wbGV0ZUZldGNoKHBhcmFtcywgcXVlcnksIHJlc3BvbnNlKSB7XG4gICAgaWYgKCF0aGlzLnBhZ2luZy5wYWdlKSB7XG4gICAgICB0aGlzLnBhZ2luZy5wYWdlID0gMTtcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UucGFnaW5nKSB7XG4gICAgICBjb25zdCBwYWdlUmVjb3JkcyA9IChBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEpICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoKSB8fCAwO1xuICAgICAgdGhpcy5wYWdpbmcudXBkYXRlUGFnaW5nKFxuICAgICAgICByZXNwb25zZS5wYWdpbmcsXG4gICAgICAgIHBhZ2VSZWNvcmRzLFxuICAgICAgICB0aGlzLmRhdGFDb250cm9sbGVyLm9wZXJhdGlvbiA9PT0gRnNMaXN0U3RhdGUuTG9hZE1vcmUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wYWdpbmcuZW5hYmxlZCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICclYyBGc0xpc3QgV2FybmluZyAnLFxuICAgICAgICAnY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYzBiJyxcbiAgICAgICAgJ1BhZ2luYXRpb24gZG9lcyBub3QgY29uZmlndXJlZCBwcm9wZXJseS4gJyArXG4gICAgICAgICdQYWdpbmF0aW9uIGlzIGVuYWJsZWQsIGJ1dCBodHRwIHJlc3BvbnNlIGRvZXMgbm90IGNvbnRhaW4gXCJwYWdpbmdcIiBmaWVsZC4gJyArXG4gICAgICAgICdZb3UgaGF2ZSB0byBzZXQgXCJwYWdpbmc6IGZhbHNlXCIgaW4gY29uZmlnIG9yIGFkZCBcInBhZ2luZ1wiIGZpZWxkIHRvIHJlc3BvbnNlLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vLyBtdXN0IGJlIGJlZm9yZSBzZWxlY3Rpb24sIGJlY2F1c2Ugc2VsZXRpb24gdXNlIHJlY29yZHNcbiAgICB0aGlzLmRhdGFDb250cm9sbGVyLnNldFJvd3NGcm9tUmVzcG9uc2UocmVzcG9uc2UuZGF0YSk7XG4gICAgLy8vXG5cbiAgICB0aGlzLl9jb21wbGV0ZUZldGNoVXBkYXRlU2VsZWN0b24ocmVzcG9uc2UpO1xuXG4gICAgaWYgKHRoaXMuZW1wdHlTdGF0ZT8udmFsaWRhdGUgJiYgdGhpcy5lbXB0eVN0YXRlVGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZUVuYWJsZWQgPSB0aGlzLmVtcHR5U3RhdGUudmFsaWRhdGUocXVlcnksIGNsb25lRGVlcCh0aGlzLmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzRGF0YSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFmdGVyRmV0Y2hGbikge1xuICAgICAgdGhpcy5hZnRlckZldGNoRm4ocXVlcnksIHRoaXMuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3NEYXRhKTtcbiAgICB9XG5cbiAgICAvLyBjYXNlIHdoZW4gaGF2ZSByZW1vdmVkIGFsbCByZXN1bHRzIGZyb20gbGFzdCBwYWdlXG4gICAgaWYgKHRoaXMuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3MubGVuZ3RoID09PSAwXG4gICAgICAmJiB0aGlzLnBhZ2luZy5wYWdlID4gMVxuICAgICAgJiYgdGhpcy5wYWdpbmcucGFnZSA+IHRoaXMucGFnaW5nLnBhZ2VzXG4gICAgKSB7XG4gICAgICB0aGlzLnBhZ2luZy5nb0xhc3QoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mZXRjaENvbXBsZXRlJC5uZXh0KHsgc2Nyb2xsSW50b1ZpZXc6IHBhcmFtcz8uc2Nyb2xsSW50b1ZpZXcgfSk7XG4gICAgdGhpcy5fbG9hZGluZyQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIF9jb21wbGV0ZUZldGNoVXBkYXRlU2VsZWN0b24ocmVzcG9uc2UpIHtcbiAgICAvLyBVcGRhdGUgc2VsZWN0aW9uIHBhcmFtc1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMucGFnaW5nLmVuYWJsZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24ucGFnZUNoYW5nZWQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlVmlzaWJsZVJlY29yZHNDb3VudCh0aGlzLnBhZ2luZy5nZXRQYWdlUmVjb3JkcygpKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlVG90YWxSZWNvcmRzQ291bnQodGhpcy5wYWdpbmcucmVjb3Jkcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb3VudCA9IHJlc3BvbnNlLnBhZ2luZyAmJiByZXNwb25zZS5wYWdpbmcucmVjb3Jkc1xuICAgICAgICAgIHx8IEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGF0YSkgJiYgcmVzcG9uc2UuZGF0YS5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlVmlzaWJsZVJlY29yZHNDb3VudChjb3VudCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVRvdGFsUmVjb3Jkc0NvdW50KGNvdW50KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRSb3dzSW50ZXJzZWN0aW9uKHRoaXMuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3NEYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2lsbCBkbyBzb21lIGFjdGlvbnMgaWYgeW91IHJlbW92ZWQgaXRlbSBhbmQgaXRlbSB3YXMgbGFzdCBvbiBoaXMgb3duIHBhZ2VcbiAgICpcbiAgICogRXg6IGlmIGxpc3QgaGFzIDMgcGFnZXMgYW5kIG9uIHRoaXJkIHBhZ2UgeW91IGhhdmUgb25seSBvbmUgaXRlbS4gQW5kIHlvdSBqdXN0IGRlbGV0ZWQgdGhpcyBpdGVtLlxuICAgKiBZb3UgbXVzdCBnbyB0byBzZWNvbmQgcGFnZSwgYnV0IGlmIGl0IHdhcyBsYXN0IHBhZ2UgYW5kIHlvdSBjYW4ndCBnbyBiYWNrIC0+IGp1c3QgcmVsb2FkXG4gICAqXG4gICAqIEBwYXJhbSBkZWxldGVkQ291bnRcbiAgICovXG4gIHByaXZhdGUgX25vRGF0YVBhZ2luYXRpb25VcGRhdGUoZGVsZXRlZENvdW50KSB7XG4gICAgaWYgKCF0aGlzLmRhdGFDb250cm9sbGVyLmhhc0RhdGEpIHtcbiAgICAgIGlmICh0aGlzLnBhZ2luZy5wYWdlID4gMSkge1xuICAgICAgICB0aGlzLnBhZ2luZy5nb1RvUGFnZSh0aGlzLnBhZ2luZy5wYWdlIC0gMSB8fCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wYWdpbmcucmVjb3JkcyAtPSBkZWxldGVkQ291bnQ7XG4gICAgdGhpcy5wYWdpbmcudXBkYXRlUGFnaW5hdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuZGF0YUNvbnRyb2xsZXIuaGFzRGF0YSAmJiB0aGlzLnNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlVmlzaWJsZVJlY29yZHNDb3VudCh0aGlzLmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzQ291bnQpO1xuICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlVG90YWxSZWNvcmRzQ291bnQodGhpcy5wYWdpbmcucmVjb3Jkcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBvcmFyeSBzb2x1dGlvbiwgd2lsbCBkbyBhdXRvIHN1YnNjcmliZSBpZiB3YXMgcmV0dXJuZWQgT2JzZXJ2YWJsZS5cbiAgICpcbiAgICogVE9ETzogTU9WRSBUSElTIFBFQUNFIE9GIENPREUgVE8gU1BFQ0lBTCBQTEFDRVxuICAgKlxuICAgKiBAcGFyYW0gcmVzdG9yZUNsaWNrQ2FsbGJhY2tcbiAgICogQHBhcmFtIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBfcmVzdG9yZUNsaWNrKHJlc3RvcmVDbGlja0NhbGxiYWNrLCByb3cpIHtcbiAgICBjb25zdCByZXN0b3JlQ2xpY2tSZXN1bHQgPSByZXN0b3JlQ2xpY2tDYWxsYmFjayhyb3cpO1xuXG4gICAgaWYgKHJlc3RvcmVDbGlja1Jlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHJlc3RvcmVDbGlja1Jlc3VsdFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5yZWxvYWQoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU29ydGluZ0NvbHVtbnMoKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0aW5nLmNsZWFyU29ydGFibGVDb2x1bW5zKCk7XG4gICAgdGhpcy5jb2x1bW5zLmNvbHVtbnNcbiAgICAgIC5maWx0ZXIoKGNvbHVtbikgPT4gY29sdW1uLnNvcnRhYmxlICYmIGNvbHVtbi52aXNpYmxlKVxuICAgICAgLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICB0aGlzLnNvcnRpbmcuYWRkU29ydGFibGVDb2x1bW4oY29sdW1uKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
744
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2xpc3QtY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQ2tFLFFBQVEsR0FDaEYsTUFBTSxvQkFBb0IsQ0FBQztBQUc1QixPQUFPLEVBQ0wsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUNyRSxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxVQUFVLEVBQUUsWUFBWSxFQUN4QixLQUFLLEVBQ0wsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUN6RCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXVCbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENB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Q0EsU0FBUyxDQUFDO2dCQUNULElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2FBQzFCLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87YUFDakIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDckQsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7XG4gIENoYW5nZUZuLCBGaWx0ZXJDb25maWcsIEZzRmlsdGVyQXV0b1JlbG9hZCwgSUZpbHRlclNhdmVkRmlsdGVyc0NvbmZpZywgSXRlbVR5cGUsXG59IGZyb20gJ0BmaXJlc3RpdGNoL2ZpbHRlcic7XG5pbXBvcnQgeyBTZWxlY3Rpb25EaWFsb2cgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3Rpb24nO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIEVNUFRZLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsXG4gIGRlbGF5LFxuICBtYXAsIG1hcFRvLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBQYWdlQ2hhbmdlVHlwZSB9IGZyb20gJy4uL2VudW1zL3BhZ2UtY2hhbmdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGc0xpc3RTdGF0ZSB9IGZyb20gJy4uL2VudW1zL3N0YXRlLmVudW0nO1xuaW1wb3J0IHtcbiAgRnNMaXN0QWZ0ZXJDb250ZW50SW5pdEZuLFxuICBGc0xpc3RBZnRlckZldGNoRm4sXG4gIEZzTGlzdEFmdGVySW5pdEZuLFxuICBGc0xpc3RCZWZvcmVGZXRjaEZuLFxuICBGc0xpc3RDb25maWcsXG4gIEZzTGlzdEVtcHR5U3RhdGVDb25maWcsXG4gIEZzTGlzdEZldGNoRm4sXG4gIEZzTGlzdEZldGNoT3B0aW9ucyxcbiAgRnNMaXN0RmV0Y2hTdWJzY3JpcHRpb24sXG4gIEZzTGlzdEdyb3VwQ29uZmlnLFxuICBGc0xpc3RMb2FkTW9yZUNvbmZpZyxcbiAgRnNMaXN0Tm9SZXN1bHRzQ29uZmlnLFxuICBGc0xpc3RQZXJzaXRhbmNlLFxuICBGc0xpc3RSZXN0b3JlQ29uZmlnLFxuICBGc0xpc3RSb3dBY3Rpb24sXG4gIEZzTGlzdFJvd0FjdGlvbkdyb3VwLFxuICBGc0xpc3RTZWxlY3Rpb25Db25maWcsXG4gIEZzTGlzdFRyYWNrQnlGbixcbiAgRnNQYWdpbmcsXG4gIFBhZ2VDaGFuZ2UsXG59IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgU3R5bGVDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvc3R5bGVDb25maWcubW9kZWwnO1xuXG5pbXBvcnQgeyBDb2x1bW5zQ29udHJvbGxlciB9IGZyb20gJy4vY29sdW1ucy1jb250cm9sbGVyJztcbmltcG9ydCB7IERhdGFDb250cm9sbGVyIH0gZnJvbSAnLi9kYXRhLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyIH0gZnJvbSAnLi9leHRlcm5hbC1wYXJhbXMtY29udHJvbGxlcic7XG5pbXBvcnQgeyBBY3Rpb25zQ29udHJvbGxlciB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuL3BhZ2luYXRpb24tY29udHJvbGxlcic7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgfSBmcm9tICcuL3BlcnNpc3RhbmNlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJy4vc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU29ydGluZ0NvbnRyb2xsZXIgfSBmcm9tICcuL3NvcnRpbmctY29udHJvbGxlcic7XG5cbmNvbnN0IHNob3dEZWxldGVkRmlsdGVyS2V5ID0gJ3Nob3dEZWxldGVkJztcblxuXG5leHBvcnQgY2xhc3MgTGlzdCB7XG5cbiAgcHVibGljIGhlYWRpbmc6IHN0cmluZztcbiAgcHVibGljIHRyYWNrQnk6IHN0cmluZztcbiAgcHVibGljIHN1YmhlYWRpbmc6IHN0cmluZztcbiAgcHVibGljIGF1dG9Gb2N1czogYm9vbGVhbjtcbiAgcHVibGljIHJvd0hvdmVySGlnaGxpZ2h0OiBib29sZWFuO1xuICBwdWJsaWMgcm93QWN0aW9uc1JhdzogKEZzTGlzdFJvd0FjdGlvbkdyb3VwIHwgRnNMaXN0Um93QWN0aW9uKVtdO1xuICBwdWJsaWMgZ3JvdXBBY3Rpb25zUmF3OiBhbnlbXTtcbiAgcHVibGljIHJvd0NsYXNzO1xuICBwdWJsaWMgcm93RXZlbnRzOiBhbnk7XG4gIHB1YmxpYyByZXN0b3JlOiBGc0xpc3RSZXN0b3JlQ29uZmlnO1xuICBwdWJsaWMgcGVyc2lzdDogRnNMaXN0UGVyc2l0YW5jZTtcbiAgcHVibGljIGZpbHRlcnMgPSBbXTtcbiAgcHVibGljIGZpbHRlckluaXRDYjogQ2hhbmdlRm47XG4gIHB1YmxpYyBmaWx0ZXJDaGFuZ2VDYjogQ2hhbmdlRm47XG4gIHB1YmxpYyBzYXZlZEZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcnNDb25maWc7XG4gIHB1YmxpYyBub1Jlc3VsdHM6IEZzTGlzdE5vUmVzdWx0c0NvbmZpZztcbiAgcHVibGljIGVtcHR5U3RhdGU6IEZzTGlzdEVtcHR5U3RhdGVDb25maWc7XG4gIHB1YmxpYyBmZXRjaEZuOiBGc0xpc3RGZXRjaEZuO1xuICBwdWJsaWMgYmVmb3JlRmV0Y2hGbjogRnNMaXN0QmVmb3JlRmV0Y2hGbjtcbiAgcHVibGljIGFmdGVyRmV0Y2hGbjogRnNMaXN0QWZ0ZXJGZXRjaEZuO1xuICBwdWJsaWMgYWZ0ZXJDb250ZW50SW5pdDogRnNMaXN0QWZ0ZXJDb250ZW50SW5pdEZuO1xuICBwdWJsaWMgYWZ0ZXJJbml0OiBGc0xpc3RBZnRlckluaXRGbjtcbiAgcHVibGljIHN0eWxlO1xuICBwdWJsaWMgaGFzUm93QWN0aW9ucztcbiAgcHVibGljIHJvd0FjdGlvbnNIb3ZlciA9IGZhbHNlO1xuICBwdWJsaWMgcGFnaW5nOiBQYWdpbmF0aW9uQ29udHJvbGxlcjtcbiAgcHVibGljIGNvbHVtbnM6IENvbHVtbnNDb250cm9sbGVyO1xuICBwdWJsaWMgYWN0aW9uczogQWN0aW9uc0NvbnRyb2xsZXI7XG4gIHB1YmxpYyBkYXRhQ29udHJvbGxlcjogRGF0YUNvbnRyb2xsZXI7XG4gIHB1YmxpYyBzb3J0aW5nOiBTb3J0aW5nQ29udHJvbGxlcjtcbiAgcHVibGljIGV4dGVybmFsUGFyYW1zOiBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXI7XG4gIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIHB1YmxpYyBmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZyA9IG51bGw7XG4gIHB1YmxpYyBzdGF0dXMgPSB0cnVlO1xuICBwdWJsaWMgY2hpcHMgPSBmYWxzZTtcbiAgcHVibGljIHF1ZXJ5UGFyYW0gPSBmYWxzZTtcbiAgcHVibGljIHJlc3RvcmVNb2RlID0gZmFsc2U7XG4gIHB1YmxpYyBhdXRvUmVsb2FkOiBGc0ZpbHRlckF1dG9SZWxvYWQ7XG4gIHB1YmxpYyBpbml0aWFsRmV0Y2ggPSB0cnVlO1xuICBwdWJsaWMgZW1wdHlTdGF0ZUVuYWJsZWQgPSBmYWxzZTtcbiAgcHVibGljIGVtcHR5U3RhdGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIF9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9mZXRjaENvbXBsZXRlJCA9IG5ldyBTdWJqZWN0PHsgc2Nyb2xsSW50b1ZpZXc/OiBib29sZWFuIH0+KCk7XG4gIHByaXZhdGUgX2ZpbHRlcnNSZWFkeSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2luaXRpYWxpemVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9mZXRjaCQgPSBuZXcgU3ViamVjdDxGc0xpc3RGZXRjaFN1YnNjcmlwdGlvbiB8IHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlcnNRdWVyeSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjb3JkPHN0cmluZywgYW55Pj4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlckNvbmZpZzogU3R5bGVDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2dyb3VwQ2VsbENvbmZpZzogU3R5bGVDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NlbGxDb25maWc6IFN0eWxlQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb290ZXJDb25maWc6IFN0eWxlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2NvbmZpZzogRnNMaXN0Q29uZmlnID0ge30sXG4gICAgcHJpdmF0ZSBfc2VsZWN0aW9uRGlhbG9nOiBTZWxlY3Rpb25EaWFsb2csXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlOiBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfaW5EaWFsb2c6IGJvb2xlYW4sXG4gICkge1xuICAgIHRoaXMuY29sdW1ucyA9IG5ldyBDb2x1bW5zQ29udHJvbGxlcih0aGlzLl9wZXJzaXN0YW5jZSk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IEFjdGlvbnNDb250cm9sbGVyKCk7XG4gICAgdGhpcy5wYWdpbmcgPSBuZXcgUGFnaW5hdGlvbkNvbnRyb2xsZXIoKTtcbiAgICB0aGlzLmRhdGFDb250cm9sbGVyID0gbmV3IERhdGFDb250cm9sbGVyKCk7XG4gICAgdGhpcy5zb3J0aW5nID0gbmV3IFNvcnRpbmdDb250cm9sbGVyKCk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplKF9jb25maWcpO1xuICAgIHRoaXMuX2hlYWRlckNvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZyhfY29uZmlnLmhlYWRlcik7XG4gICAgdGhpcy5fZ3JvdXBDZWxsQ29uZmlnID0gbmV3IFN0eWxlQ29uZmlnKF9jb25maWcuY2VsbCk7XG4gICAgdGhpcy5fY2VsbENvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZyhfY29uZmlnLmNlbGwpO1xuICAgIHRoaXMuX2Zvb3RlckNvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZyhfY29uZmlnLmZvb3Rlcik7XG4gICAgdGhpcy5faW5pdGlhbGl6ZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5zdWJzY3JpYmUoKTtcblxuICAgIGlmICh0aGlzLmluaXRpYWxGZXRjaCkge1xuICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRPcGVyYXRpb24oRnNMaXN0U3RhdGUuTG9hZCk7XG4gICAgICB0aGlzLl9mZXRjaCQubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJzUmVhZHkoKSB7XG4gICAgdGhpcy5fZmlsdGVyc1JlYWR5JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUmVhZHkkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzUmVhZHkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmZXRjaCQoKTogT2JzZXJ2YWJsZTxGc0xpc3RGZXRjaFN1YnNjcmlwdGlvbiB8IHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZmV0Y2gkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTYXZlZEZpbHRlcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maWx0ZXJDb25maWcuc2F2ZWRGaWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUXVlcnkoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnNRdWVyeS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUXVlcnkkKCk6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgYW55Pj4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzUXVlcnkuYXNPYnNlcnZhYmxlKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHYpID0+IHYgfHwge30pLFxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlRmlsdGVyc0NvdW50JCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnNRdWVyeSRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHYpID0+IE9iamVjdC5rZXlzKHYpLmxlbmd0aCksXG4gICAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXN0cm95JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9kZXN0cm95JDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsaXplZCQ7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hSZW1vdGUocXVlcnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IEZzTGlzdEZldGNoT3B0aW9ucyA9IHtcbiAgICAgIHN0YXRlOiB0aGlzLmRhdGFDb250cm9sbGVyLm9wZXJhdGlvbixcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSB0aGlzLmZldGNoRm4ocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgPyBmcm9tKHJlc3VsdCkgOiByZXN1bHQ7XG4gIH1cblxuICAvLyBwdWJsaWMgbG9hZExvY2FsKCkge1xuICAvLyAgIHRoaXMucGFnaW5nLnVwZGF0ZVBhZ2luZ01hbnVhbCh0aGlzLl9yb3dzKTtcbiAgLy8gICBjb25zdCBmcm9tID0gKHRoaXMucGFnaW5nLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5nLmxpbWl0O1xuICAvLyAgIGNvbnN0IHRvID0gKHRoaXMucGFnaW5nLnBhZ2UgPT09IDEpID8gdGhpcy5wYWdpbmcubGltaXQgOiB0aGlzLnBhZ2luZy5saW1pdCAqIHRoaXMucGFnaW5nLnBhZ2U7XG4gIC8vICAgY29uc3Qgc2xpY2VPZlJvd3MgPSB0aGlzLl9yb3dzLnNsaWNlKGZyb20sIHRvKTtcbiAgLy8gICB0aGlzLmRhdGEkLm5leHQoc2xpY2VPZlJvd3MpO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0ZW1wbGF0ZXMgZm9yIHVzaW5nXG4gICAqXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZXNcbiAgICovXG4gIHB1YmxpYyB0cmFuZm9ybVRlbXBsYXRlc1RvQ29sdW1ucyh0ZW1wbGF0ZXMpIHtcbiAgICBjb25zdCBkZWZhdWx0Q29uZmlncyA9IHtcbiAgICAgIGhlYWRlcjogdGhpcy5faGVhZGVyQ29uZmlnLFxuICAgICAgZ3JvdXBDZWxsOiB0aGlzLl9ncm91cENlbGxDb25maWcsXG4gICAgICBjZWxsOiB0aGlzLl9jZWxsQ29uZmlnLFxuICAgICAgZm9vdGVyOiB0aGlzLl9mb290ZXJDb25maWcsXG4gICAgfTtcblxuICAgIHRoaXMuY29sdW1ucy5zZXREZWZhdWx0cyhkZWZhdWx0Q29uZmlncyk7XG4gICAgdGhpcy5jb2x1bW5zLmluaXRpYWxpemVDb2x1bW5zKHRlbXBsYXRlcyk7XG5cbiAgICAvLyBTZXQgc29ydEJ5IGRlZmF1bHQgY29sdW1uXG4gICAgdGhpcy5fdXBkYXRlU29ydGluZ0NvbHVtbnMoKTtcblxuICAgIC8vIERlZmF1bHQgc29ydCBieVxuICAgIGNvbnN0IGV4dGVybmFsU29ydGluZyA9IHRoaXMuZXh0ZXJuYWxQYXJhbXMuZXh0ZXJuYWxTb3J0aW5nO1xuICAgIGNvbnN0IGluaXRpYWxTb3J0Q29uZmlnID0gZXh0ZXJuYWxTb3J0aW5nIHx8IHRoaXMuX2NvbmZpZy5zb3J0O1xuICAgIHRoaXMuc29ydGluZy5pbml0aWFsU29ydEJ5KGluaXRpYWxTb3J0Q29uZmlnKTtcblxuICAgIGlmIChleHRlcm5hbFNvcnRpbmcgJiYgIXRoaXMuc29ydGluZy5pc0RlZmluZWQpIHtcbiAgICAgIHRoaXMuZXh0ZXJuYWxQYXJhbXMuY2xlYXJTb3J0aW5nUGFyYW1zKCk7XG5cbiAgICAgIGNvbnNvbGUud2FybignTm90IGFibGUgdG8gcmVzdG9yZSBwZXJzaXN0ZWQgc29ydGluZyBwYXJhbXMuJywgZXh0ZXJuYWxTb3J0aW5nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbml0RmlsdGVycygpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZChxdWVyeT86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5fZmlsdGVyc1F1ZXJ5Lm5leHQocXVlcnkpO1xuICAgIHRoaXMuZGF0YUNvbnRyb2xsZXIuc2V0T3BlcmF0aW9uKEZzTGlzdFN0YXRlLlJlbG9hZCk7XG4gICAgdGhpcy5fZmV0Y2gkLm5leHQobnVsbCk7XG5cbiAgICByZXR1cm4gdGhpcy5fZmV0Y2hDb21wbGV0ZSRcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoICAgICAgXG4gICAgICAgIHRha2UoMSksICBcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoIHBhZ2UgY2hhbmdlc1xuICAgKi9cbiAgcHVibGljIHN1YnNjcmliZSgpIHtcbiAgICB0aGlzLnBhZ2luZy5wYWdlQ2hhbmdlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGV2ZW50OiBQYWdlQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRPcGVyYXRpb24oRnNMaXN0U3RhdGUuUGFnZUNoYW5nZSk7XG4gIFxuICAgICAgICAgIC8vIFJlbW92ZSBhbGwgcm93cyBpZiBsaW1pdHMgd2FzIGNoYW5nZWRcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gUGFnZUNoYW5nZVR5cGUuTGltaXRDaGFuZ2VkICYmIHRoaXMucGFnaW5nLmhhc1BhZ2VTdHJhdGVneSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5jbGVhclJvd3MoKTtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIGlmICh0aGlzLnBhZ2luZy5oYXNPZmZzZXRTdHJhdGVneSkge1xuICAgICAgICAgICAgdGhpcy5wYWdpbmcudXBkYXRlUGFnaW5hdGlvbigpO1xuICBcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi51cGRhdGVWaXNpYmxlUmVjb3Jkc0NvdW50KHRoaXMucGFnaW5nLmdldFBhZ2VSZWNvcmRzKCkpO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi51cGRhdGVUb3RhbFJlY29yZHNDb3VudCh0aGlzLnBhZ2luZy5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24ucGFnZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLl9mZXRjaCQubmV4dChudWxsKTtcbiAgICAgICAgICBpZiAoIXRoaXMucGFnaW5nLmxvYWRNb3JlRW5hYmxlZCkge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbnMgPSBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jZGstb3ZlcmxheS1jb250YWluZXInKSlcbiAgICAgICAgICAgICAgLnNvbWUoKG92ZXJsYXkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5jb250YWlucyhvdmVybGF5KTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBlbCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghY29udGFpbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVjdCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgIGlmICgoTnVtYmVyKHJlY3QudG9wIHx8IDApICsgd2luZG93LnBhZ2VZT2Zmc2V0KSA8IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgICAgICAgICAgIGVsID0gZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hDb21wbGV0ZSRcbiAgICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmKGV2ZW50Py5zY3JvbGxJbnRvVmlldyA/PyB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnNvcnRpbmcuc29ydGluZ0NoYW5nZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRhdGFDb250cm9sbGVyLnNldE9wZXJhdGlvbihGc0xpc3RTdGF0ZS5Tb3J0KTtcbiAgICAgICAgdGhpcy5wYWdpbmcucGFnZSA9IDE7XG4gICAgICAgIHRoaXMuX2ZldGNoJC5uZXh0KG51bGwpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9saXN0ZW5WaXNpYmxlQ29sdW1uQ2hhbmdlcygpO1xuICAgIHRoaXMuX2xpc3RlblJvd3NSZW1vdmUoKTtcbiAgICB0aGlzLl9saXN0ZW5GZXRjaCgpO1xuICB9XG5cbiAgcHVibGljIGdldERhdGEodHJhY2tCeT86IEZzTGlzdFRyYWNrQnlGbikge1xuICAgIGxldCByb3dzRGF0YSA9IHRoaXMuZGF0YUNvbnRyb2xsZXJcbiAgICAgIC52aXNpYmxlUm93c0RhdGE7XG5cbiAgICBpZiAodHJhY2tCeSkge1xuICAgICAgcm93c0RhdGEgPSByb3dzRGF0YVxuICAgICAgICAuZmlsdGVyKHRyYWNrQnkpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzRGF0YVxuICAgICAgLm1hcCgoZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gY2xvbmVEZWVwKGRhdGEpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGFzRGF0YSh0cmFja0J5OiBGc0xpc3RUcmFja0J5Rm4pIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93c0RhdGEuc29tZSh0cmFja0J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgZ3JvdXAgbW9kZSBzdGF0dXNcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgZ3JvdXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuZGF0YUNvbnRyb2xsZXIuZ3JvdXBFbmFibGVkICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5ncm91cEVuYWJsZWQgPSB2YWx1ZTtcblxuICAgICAgLy8gQ29tbWVudGVkIG91dCBiZWNhdXNlIFJheSB3YW50cyB0byBjaGFuZ2UgZ3JvdXAgc3RhdHVzIGluIGZldGNoIG1hcCBwaXBlXG4gICAgICAvLyBhbmQgaXQgdHJpZ2dlcnMgZXh0cmEgcmVxdWVzdHNcbiAgICAgIC8vIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucGFnaW5nKSB7XG4gICAgICB0aGlzLnBhZ2luZy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc29ydGluZykge1xuICAgICAgdGhpcy5zb3J0aW5nLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWx0ZXJDb25maWcpIHtcbiAgICAgIHRoaXMuZmlsdGVyQ29uZmlnID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlcm5hbFBhcmFtcykge1xuICAgICAgdGhpcy5leHRlcm5hbFBhcmFtcy5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb2x1bW5zLmRlc3Ryb3koKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQobnVsbCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcblxuICAgIHRoaXMuZGF0YUNvbnRyb2xsZXIuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERvIGluaXRpYWxpemF0aW9uIG9mIHRhYmxlXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHByaXZhdGUgX2luaXRpYWxpemUoY29uZmlnOiBGc0xpc3RDb25maWcpIHtcbiAgICB0aGlzLl9pbml0VmFyaWFibGVzKGNvbmZpZyk7XG4gICAgdGhpcy5faW5pdERlZmF1bHRPcHRpb25zKGNvbmZpZyk7XG4gICAgdGhpcy5faW5pdFJlc3RvcmUoKTtcbiAgICB0aGlzLl9pbml0QWN0aW9ucyhjb25maWcpO1xuICAgIHRoaXMuX2luaXRQYWdpbmcoY29uZmlnLnBhZ2luZywgY29uZmlnLmxvYWRNb3JlKTtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKGNvbmZpZy5zZWxlY3Rpb24sIHRoaXMuX3NlbGVjdGlvbkRpYWxvZyk7XG4gICAgdGhpcy5faW5pdEdyb3Vwcyhjb25maWcuZ3JvdXApO1xuICAgIHRoaXMuX2luaXRFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9pbml0aWFsaXplRGF0YSgpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzXG4gIHByaXZhdGUgX2luaXRWYXJpYWJsZXMoY29uZmlnOiBGc0xpc3RDb25maWcpIHtcbiAgICB0aGlzLmF1dG9Gb2N1cyA9IGNvbmZpZy5hdXRvRm9jdXM7XG4gICAgdGhpcy5yb3dIb3ZlckhpZ2hsaWdodCA9IGNvbmZpZy5yb3dIb3ZlckhpZ2hsaWdodCA/PyB0cnVlO1xuICAgIHRoaXMuaGVhZGluZyA9IGNvbmZpZy5oZWFkaW5nO1xuICAgIHRoaXMudHJhY2tCeSA9IGNvbmZpZy50cmFja0J5O1xuICAgIHRoaXMuc3ViaGVhZGluZyA9IGNvbmZpZy5zdWJoZWFkaW5nO1xuICAgIHRoaXMucm93QWN0aW9uc1JhdyA9IGNvbmZpZy5yb3dBY3Rpb25zO1xuICAgIHRoaXMucm93Q2xhc3MgPSBjb25maWcucm93Q2xhc3M7XG4gICAgdGhpcy5yb3dFdmVudHMgPSBjb25maWcucm93RXZlbnRzO1xuICAgIHRoaXMucmVzdG9yZSA9IGNvbmZpZy5yZXN0b3JlO1xuICAgIHRoaXMucGVyc2lzdCA9IGNvbmZpZy5wZXJzaXN0O1xuICAgIHRoaXMuZmlsdGVycyA9IGNvbmZpZy5maWx0ZXJzID8/IFtdO1xuICAgIHRoaXMuZmlsdGVySW5pdENiID0gY29uZmlnLmZpbHRlckluaXQ7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VDYiA9IGNvbmZpZy5maWx0ZXJDaGFuZ2U7XG4gICAgdGhpcy5zYXZlZEZpbHRlcnMgPSBjb25maWcuc2F2ZWRGaWx0ZXJzO1xuICAgIHRoaXMubm9SZXN1bHRzID0gY29uZmlnLm5vUmVzdWx0cztcbiAgICB0aGlzLmVtcHR5U3RhdGUgPSBjb25maWcuZW1wdHlTdGF0ZTtcbiAgICB0aGlzLmZldGNoRm4gPSBjb25maWcuZmV0Y2g7XG4gICAgdGhpcy5hZnRlckZldGNoRm4gPSBjb25maWcuYWZ0ZXJGZXRjaDtcbiAgICB0aGlzLmJlZm9yZUZldGNoRm4gPSBjb25maWcuYmVmb3JlRmV0Y2g7XG4gICAgdGhpcy5hZnRlckluaXQgPSBjb25maWcuYWZ0ZXJJbml0O1xuICAgIHRoaXMuc3R5bGUgPSBjb25maWcuc3R5bGU7XG4gICAgdGhpcy5hdXRvUmVsb2FkID0gY29uZmlnLmF1dG9SZWxvYWQ7XG4gICAgdGhpcy5jb2x1bW5zLmluaXRDb25maWcoY29uZmlnLmNvbHVtbik7XG4gIH1cblxuICAvKipcbiAgICogSnVzdCBpbml0IG9wdGlvbnMgYnkgZGVmYXVsdCBpdCBpdCB3YXNuJ3Qgc3BlY2lmaWVkXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHByaXZhdGUgX2luaXREZWZhdWx0T3B0aW9ucyhjb25maWcpIHtcbiAgICAvLyBXZSBzaG91bGQgcHJldmVudCBpbml0aWFsIGZldGNoIGluIGNhc2VzIHdoZW4gaXQgd2lsbCBiZSBmZXRjaGVkIGluIGFueSBjYXNlXG4gICAgLy8gQXMgZXguIHNjcm9sbGFibGUgb3IgZmlsdGVyIHdpbGwgZG8gZmV0Y2ggaW4gYW55IGNhc2VzXG4gICAgaWYgKGNvbmZpZy5pbml0aWFsRmV0Y2ggPT09IGZhbHNlIHx8IGNvbmZpZy5zY3JvbGxhYmxlKSB7IC8vIFRPRE8gZml4bWUgYWZ0ZXIgdHNtb2RlbCB2ZXJzaW9uIHVwZGF0ZVxuICAgICAgdGhpcy5pbml0aWFsRmV0Y2ggPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5zdGF0dXMgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnN0YXR1cyA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmNoaXBzKSB7XG4gICAgICB0aGlzLmNoaXBzID0gY29uZmlnLmNoaXBzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbkRpYWxvZykge1xuICAgICAgdGhpcy5xdWVyeVBhcmFtID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcnlQYXJhbSA9IChjb25maWcucXVlcnlQYXJhbSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICA/IHRydWVcbiAgICAgICAgOiBjb25maWcucXVlcnlQYXJhbTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnNvcnRzKSB7XG4gICAgICB0aGlzLnNvcnRpbmcuaW5pdEZha2VDb2x1bW5zKGNvbmZpZy5zb3J0cyk7XG4gICAgfVxuICAgIGlmICghY29uZmlnLnRyYWNrQnkpIHtcbiAgICAgIHRoaXMudHJhY2tCeSA9ICdpZCc7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5hZnRlckNvbnRlbnRJbml0KSB7XG4gICAgICB0aGlzLmFmdGVyQ29udGVudEluaXQgPSAoKSA9PiB7XG4gICAgICAgIGNvbmZpZy5hZnRlckNvbnRlbnRJbml0KHRoaXMucGFnaW5nLnF1ZXJ5LCB0aGlzLmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgcmVzdG9yZSByb3cgYWN0aW9uIGFuZCBhcHBlbmQgU2hvdyBEZWxldGVkIG9wdGlvbiBpbnRvIGZpbHRlcnNcbiAgICovXG4gIHByaXZhdGUgX2luaXRSZXN0b3JlKCkge1xuICAgIGlmICh0aGlzLnJlc3RvcmUpIHtcbiAgICAgIGNvbnN0IHJlc3RvcmVBY3Rpb24gPSB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnJlc3RvcmUubWVudUxhYmVsIHx8ICdSZXN0b3JlJyxcbiAgICAgICAgbWVudTogdHJ1ZSxcbiAgICAgICAgY2xpY2s6IChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLl9yZXN0b3JlQ2xpY2sodGhpcy5yZXN0b3JlLmNsaWNrLCByb3cpO1xuICAgICAgICB9LCAvLyBUT0RPIGZpeCBtZSwgbW92ZSB0byBzcGVjaWFsIGZpbGVcbiAgICAgICAgcmVzdG9yZTogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGlmICghdGhpcy5yb3dBY3Rpb25zUmF3KSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9uc1JhdyA9IFtdO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJvd0FjdGlvbnNSYXcucHVzaChyZXN0b3JlQWN0aW9uKTtcbiAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZmlsdGVycyB8fCBbXTtcblxuICAgICAgaWYgKHRoaXMucmVzdG9yZS5maWx0ZXIgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBzaG93RGVsZXRlZEZpbHRlcktleSxcbiAgICAgICAgICB0eXBlOiBJdGVtVHlwZS5DaGVja2JveCxcbiAgICAgICAgICBsYWJlbDogdGhpcy5yZXN0b3JlLmZpbHRlckxhYmVsIHx8ICdTaG93IERlbGV0ZWQnLFxuICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgcGFnaW5nXG4gICAqXG4gICAqIEBwYXJhbSBwYWdpbmdDb25maWdcbiAgICogQHBhcmFtIGxvYWRNb3JlXG4gICAqL1xuICBwcml2YXRlIF9pbml0UGFnaW5nKHBhZ2luZ0NvbmZpZzogRnNQYWdpbmcgfCBmYWxzZSwgbG9hZE1vcmU6IEZzTGlzdExvYWRNb3JlQ29uZmlnIHwgYm9vbGVhbikge1xuICAgIHRoaXMucGFnaW5nLmluaXRXaXRoQ29uZmlnKHBhZ2luZ0NvbmZpZywgbG9hZE1vcmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0IGFjdGlvbnMgYnkgY2F0ZWdvcmllc1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdEFjdGlvbnMoY29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZy5hY3Rpb25zKSB7XG4gICAgICB0aGlzLmFjdGlvbnMuc2V0QWN0aW9ucyhjb25maWcuYWN0aW9ucyk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dBY3Rpb25zSG92ZXIgPSBjb25maWcucm93QWN0aW9uc0hvdmVyID8/IGZhbHNlO1xuXG4gICAgdGhpcy5oYXNSb3dBY3Rpb25zID1cbiAgICAgICh0aGlzLnJvd0FjdGlvbnNSYXcgJiYgdGhpcy5yb3dBY3Rpb25zUmF3Lmxlbmd0aCA+IDApXG4gICAgICB8fCAodGhpcy5ncm91cEFjdGlvbnNSYXcgJiYgdGhpcy5ncm91cEFjdGlvbnNSYXcubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2VsZWN0aW9uKFxuICAgIHNlbGVjdGlvbkNvbmZpZzogRnNMaXN0U2VsZWN0aW9uQ29uZmlnLFxuICAgIHNlbGVjdGlvbkRpYWxvZzogU2VsZWN0aW9uRGlhbG9nLFxuICApIHtcbiAgICBpZiAoc2VsZWN0aW9uQ29uZmlnKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Db250cm9sbGVyKHNlbGVjdGlvbkNvbmZpZywgdGhpcy50cmFja0J5LCBzZWxlY3Rpb25EaWFsb2cpO1xuICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0Um93c0NhbGxiYWNrKCgpID0+IHRoaXMuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3MpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVEYXRhKCkge1xuICAgIHRoaXMuZGF0YUNvbnRyb2xsZXIuc2V0QWRkaXRpb25hbENvbmZpZ3Moe1xuICAgICAgbG9hZE1vcmVFbmFibGVkOiB0aGlzLnBhZ2luZy5sb2FkTW9yZUVuYWJsZWQsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0R3JvdXBzKGdyb3VwQ29uZmlnOiBGc0xpc3RHcm91cENvbmZpZykge1xuICAgIGlmIChncm91cENvbmZpZykge1xuICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRHcm91cENvbmZpZyhncm91cENvbmZpZyk7XG4gICAgICB0aGlzLmdyb3VwQWN0aW9uc1JhdyA9IGdyb3VwQ29uZmlnLmFjdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEV4dGVybmFsUGFyYW1zQ29udHJvbGxlcigpIHtcbiAgICB0aGlzLmV4dGVybmFsUGFyYW1zID0gbmV3IEV4dGVybmFsUGFyYW1zQ29udHJvbGxlcihcbiAgICAgIHRoaXMuX3JvdXRlLFxuICAgICAgdGhpcy5fcGVyc2lzdGFuY2UsXG4gICAgICB0aGlzLnBhZ2luZyxcbiAgICAgIHRoaXMuc29ydGluZyxcbiAgICAgIHRoaXMucXVlcnlQYXJhbSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBmZXRjaCQgZXZlbnQgd2l0aCBkZWJvdW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBfbGlzdGVuRmV0Y2goKSB7XG4gICAgbGV0IGZldGNoJCA9IHRoaXMuZmV0Y2gkO1xuXG4gICAgLy8gU2hvdWxkIHdhaXQgdW50aWwgc2F2ZWQgZmlsdGVycyBub3QgbG9hZGVkXG4gICAgaWYgKHRoaXMuZmlsdGVycykge1xuICAgICAgZmV0Y2gkID0gY29tYmluZUxhdGVzdChbZmV0Y2gkLCB0aGlzLl9maWx0ZXJzUmVhZHkkXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChbcGFyYW1zXSkgPT4gcGFyYW1zKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmZXRjaCRcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5jbG9zZVNlbGVjdGlvbkRpYWxvZygpO1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKChwYXJhbXM6IEZzTGlzdEZldGNoU3Vic2NyaXB0aW9uKSA9PiB7XG4gICAgICAgICAgbGV0IHF1ZXJ5ID0geyAuLi50aGlzLmZpbHRlcnNRdWVyeSB9O1xuXG4gICAgICAgICAgaWYgKHRoaXMucGFnaW5nLmhhc09mZnNldFN0cmF0ZWd5ICYmIHBhcmFtcz8ubG9hZE9mZnNldCkge1xuICAgICAgICAgICAgcXVlcnkgPSBPYmplY3QuYXNzaWduKHF1ZXJ5LCB0aGlzLnBhZ2luZy5sb2FkRGVsZXRlZE9mZnNldFF1ZXJ5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWxsUmVjb3Jkc1JhbmdlTmVlZGVkID0gKHRoaXMuaW5pdGlhbEZldGNoXG4gICAgICAgICAgICAgIHx8IHRoaXMuZGF0YUNvbnRyb2xsZXIub3BlcmF0aW9uID09PSBGc0xpc3RTdGF0ZS5SZWxvYWRcbiAgICAgICAgICAgICkgJiYgdGhpcy5wYWdpbmcubG9hZE1vcmVFbmFibGVkO1xuXG4gICAgICAgICAgICBxdWVyeSA9IGFsbFJlY29yZHNSYW5nZU5lZWRlZCA/IFxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCB0aGlzLnBhZ2luZy5sb2FkTW9yZVF1ZXJ5KSA6IFxuICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHF1ZXJ5LCB0aGlzLnBhZ2luZy5xdWVyeSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc29ydGluZy5zb3J0aW5nQ29sdW1uKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yZGVyOiBgJHt0aGlzLnNvcnRpbmcuc29ydGluZ0NvbHVtbi5uYW1lfSwke3RoaXMuc29ydGluZy5zb3J0aW5nQ29sdW1uLmRpcmVjdGlvbn1gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5jb2x1bW5zLmNvbmZpZ3VyZWQpIHtcbiAgICAgICAgICAgIHF1ZXJ5ID0ge1xuICAgICAgICAgICAgICAuLi5xdWVyeSxcbiAgICAgICAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLnZpc2libGVDb2x1bW5zTmFtZXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7IHBhcmFtcywgcXVlcnkgfTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoeyBwYXJhbXMsIHF1ZXJ5IH0pID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuY29sdW1ucy5jb2x1bW5zRmV0Y2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucy5sb2FkUmVtb3RlQ29sdW1uQ29uZmlncygpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcFRvKHsgcGFyYW1zLCBxdWVyeSB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb2YoeyBwYXJhbXMsIHF1ZXJ5IH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IHBhcmFtcywgcXVlcnkgfSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmJlZm9yZUZldGNoRm4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZm9yZUZldGNoRm4ocXVlcnkpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoYmVmb3JlRmV0Y2hRdWVyeSkgPT4gKHsgcGFyYW1zLCBxdWVyeTogYmVmb3JlRmV0Y2hRdWVyeSB9KSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9mKHsgcGFyYW1zLCBxdWVyeSB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoeyBwYXJhbXMsIHF1ZXJ5IH0pID0+IHtcbiAgICAgICAgICBjb25zdCByZW1vdGVGZXRjaCA9IHRoaXMuZmV0Y2hSZW1vdGUocXVlcnkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Q8YW55Pihbb2YoeyBwYXJhbXMsIHF1ZXJ5IH0pLCByZW1vdGVGZXRjaF0pO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcblxuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChbcGFyYW1zUXVlcnksIHJlc3BvbnNlXSkgPT4ge1xuICAgICAgICB0aGlzLmluaXRpYWxGZXRjaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jb21wbGV0ZUZldGNoKHBhcmFtc1F1ZXJ5LnBhcmFtcywgcGFyYW1zUXVlcnkucXVlcnksIHJlc3BvbnNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuUm93c1JlbW92ZSgpIHtcbiAgICB0aGlzLmRhdGFDb250cm9sbGVyLnJvd3NSZW1vdmVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyb3dzOiBhbnlbXSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wYWdpbmcuZW5hYmxlZCkge1xuXG4gICAgICAgICAgY29uc3QgcmVtb3ZlZENvdW50ID0gcm93cy5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAodGhpcy5wYWdpbmcuaGFzUGFnZVN0cmF0ZWd5KSB7XG4gICAgICAgICAgICB0aGlzLl9ub0RhdGFQYWdpbmF0aW9uVXBkYXRlKHJlbW92ZWRDb3VudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZldGNoIG1vcmUgaWYgaGFzIHNvbWV0aGluZyBmb3IgZmV0Y2hcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFDb250cm9sbGVyLmhhc0RhdGEgfHwgdGhpcy5wYWdpbmcuaGFzTmV4dFBhZ2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRPcGVyYXRpb24oRnNMaXN0U3RhdGUuTG9hZE1vcmUpO1xuXG4gICAgICAgICAgICAgIHRoaXMucGFnaW5nLnJlbW92ZVJvd3MocmVtb3ZlZENvdW50KTtcbiAgICAgICAgICAgICAgdGhpcy5fZmV0Y2gkLm5leHQoeyBsb2FkT2Zmc2V0OiB0cnVlIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5fbm9EYXRhUGFnaW5hdGlvblVwZGF0ZShyZW1vdmVkQ291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBmcm9tIHNlbGVjdGlvblxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24ucmVtb3ZlUm93KHJvdy5kYXRhKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVyIG1heSBoYXZlIG9yaWdpbmFsbHkgaGlkZGVuIGNvbHVtbnMsIGJ1dCB2aXNpYmlsaXR5IG9mIHRob3NlIGNvbHVtbnNcbiAgICogY2FuIGJlIGNoYW5nZWQgcHJvZ3JhbW1hdGljYWx5IGluIGFueSB0aW1lXG4gICAqL1xuICBwcml2YXRlIF9saXN0ZW5WaXNpYmxlQ29sdW1uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl91cGRhdGVTb3J0aW5nQ29sdW1ucygpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuZCB3YXRjaCBmaWx0ZXIgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdEZpbHRlcnMoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyQ29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc29ydENvbmZpZyA9IHRoaXMuc29ydGluZy5zb3J0aW5nQ29sdW1uXG4gICAgICA/IHsgdmFsdWU6IHRoaXMuc29ydGluZy5zb3J0aW5nQ29sdW1uLm5hbWUsIGRpcmVjdGlvbjogdGhpcy5zb3J0aW5nLnNvcnRpbmdDb2x1bW4uZGlyZWN0aW9uIH1cbiAgICAgIDogbnVsbDtcblxuICAgIC8vIENvbmZpZ1xuICAgIHRoaXMuZmlsdGVyQ29uZmlnID0ge1xuICAgICAgaXRlbXM6IHRoaXMuZmlsdGVycyB8fCBbXSxcbiAgICAgIHNhdmVkRmlsdGVyczogdGhpcy5zYXZlZEZpbHRlcnMsXG4gICAgICBhY3Rpb25zOiB0aGlzLmFjdGlvbnMuYWN0aW9ucyxcbiAgICAgIHF1ZXJ5UGFyYW06IHRoaXMucXVlcnlQYXJhbSxcbiAgICAgIGF1dG9mb2N1czogdGhpcy5hdXRvRm9jdXMsXG4gICAgICBzb3J0OiBzb3J0Q29uZmlnLFxuICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICBhdXRvUmVsb2FkOiB0aGlzLmF1dG9SZWxvYWQsXG4gICAgICBpbml0OiB0aGlzLl9maWx0ZXJJbml0LmJpbmQodGhpcyksXG4gICAgICBjaGFuZ2U6IHRoaXMuX2ZpbHRlckNoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgcmVsb2FkOiAodGhpcy5fY29uZmlnLnJlbG9hZCA/PyB0cnVlKSA/IHRoaXMucmVsb2FkLmJpbmQodGhpcykgOiBudWxsLFxuICAgICAgc29ydENoYW5nZTogdGhpcy5fZmlsdGVyU29ydC5iaW5kKHRoaXMpLFxuICAgICAgaGVhZGluZzogdGhpcy5oZWFkaW5nLFxuICAgICAgc3ViaGVhZGluZzogdGhpcy5zdWJoZWFkaW5nLFxuICAgIH07XG5cbiAgICBpZih0aGlzLl9wZXJzaXN0YW5jZS5xdWVyeUVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZmlsdGVyQ29uZmlnLnBlcnNpc3QgPSAge1xuICAgICAgICBuYW1lOiB0aGlzLl9wZXJzaXN0YW5jZS5uYW1lLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hlbiBGaWx0ZXIgaGFzIGJlZW4gaW5pdGlhbGl6ZWRcbiAgICpcbiAgICogQHBhcmFtIGZpbHRlcnNcbiAgICovXG4gIHByaXZhdGUgX2ZpbHRlckluaXQocXVlcnkpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJJbml0Q2IpIHtcbiAgICAgIHRoaXMuZmlsdGVySW5pdENiKHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBxdWVyeSA9IHRoaXMuX3Byb2Nlc3NSZXN0b3JlUXVlcnkocXVlcnkpO1xuXG4gICAgdGhpcy5fZmlsdGVyc1F1ZXJ5Lm5leHQocXVlcnkpO1xuXG4gICAgdGhpcy5maWx0ZXJzUmVhZHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGVuIEZpbHRlciBoYXMgYmVlbiBjaGFuZ2VkXG4gICAqXG4gICAqIEBwYXJhbSBxdWVyeVxuICAgKiBAcGFyYW0gc29ydFxuICAgKi9cbiAgcHJpdmF0ZSBfZmlsdGVyQ2hhbmdlKHF1ZXJ5LCBzb3J0KSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyQ2hhbmdlQ2IpIHtcbiAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlQ2IocXVlcnksIHNvcnQpO1xuICAgIH1cblxuICAgIHF1ZXJ5ID0gdGhpcy5fcHJvY2Vzc1Jlc3RvcmVRdWVyeShxdWVyeSk7XG5cbiAgICB0aGlzLl9maWx0ZXJzUXVlcnkubmV4dChxdWVyeSk7XG5cbiAgICBpZiAodGhpcy5yZXN0b3JlICYmIHRoaXMucmVzdG9yZS5yZWxvYWQpIHtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRPcGVyYXRpb24oRnNMaXN0U3RhdGUuRmlsdGVyKTtcblxuICAgIC8vIFJlc2V0IHBhZ2luZyBmb3IgcmVxdWVzdCB3aXRoIGNvcnJlY3Qgb2Zmc2V0XG4gICAgdGhpcy5wYWdpbmcucmVzZXRQYWdpbmcoKTtcbiAgICB0aGlzLl9mZXRjaCQubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb2Nlc3NSZXN0b3JlUXVlcnkocXVlcnkpIHtcbiAgICB0aGlzLnJlc3RvcmVNb2RlID0gZmFsc2U7XG4gICAgLy8gUmVzdG9yZSBvcHRpb25cbiAgICBpZiAodGhpcy5yZXN0b3JlICYmIHF1ZXJ5W3Nob3dEZWxldGVkRmlsdGVyS2V5XSkge1xuICAgICAgcXVlcnkgPSBPYmplY3Qua2V5cyhxdWVyeSlcbiAgICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkgIT09IHNob3dEZWxldGVkRmlsdGVyS2V5KVxuICAgICAgICAucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICBba2V5XTogcXVlcnlba2V5XSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSk7XG5cbiAgICAgIHF1ZXJ5ID0ge1xuICAgICAgICAuLi5xdWVyeSxcbiAgICAgICAgLi4udGhpcy5yZXN0b3JlLnF1ZXJ5LFxuICAgICAgfTtcblxuICAgICAgdGhpcy5yZXN0b3JlTW9kZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgd2hlbiBGaWx0ZXIgc29ydCBoYXMgYmVlbiBjaGFuZ2VkXG4gIHByaXZhdGUgX2ZpbHRlclNvcnQoZmlsdGVyUXVlcnksIGZpbHRlclNvcnQpIHtcbiAgICBpZiAoZmlsdGVyU29ydCkge1xuICAgICAgdGhpcy5zb3J0aW5nLnNvcnRCeUNvbHVtbldpdGhOYW1lKGZpbHRlclNvcnQudmFsdWUpO1xuXG4gICAgICBjb25zdCBzb3J0RGlyZWN0aW9uID0gZmlsdGVyU29ydC5kaXJlY3Rpb24gPT09ICdhc2MnID8gU29ydGluZ0RpcmVjdGlvbi5hc2MgOiBTb3J0aW5nRGlyZWN0aW9uLmRlc2M7XG4gICAgICB0aGlzLnNvcnRpbmcuc29ydERpcmVjdGlvbihzb3J0RGlyZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRklYTUUgbmVlZCB0byBiZSByZWZhY3RvcmVkLi4uXG4gICAgICB0aGlzLnNvcnRpbmcuc29ydGluZ0NvbHVtbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29tcGxldGVGZXRjaChwYXJhbXMsIHF1ZXJ5LCByZXNwb25zZSkge1xuICAgIGlmICghdGhpcy5wYWdpbmcucGFnZSkge1xuICAgICAgdGhpcy5wYWdpbmcucGFnZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLnBhZ2luZykge1xuICAgICAgY29uc3QgcGFnZVJlY29yZHMgPSAoQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhKSAmJiByZXNwb25zZS5kYXRhLmxlbmd0aCkgfHwgMDtcbiAgICAgIHRoaXMucGFnaW5nLnVwZGF0ZVBhZ2luZyhcbiAgICAgICAgcmVzcG9uc2UucGFnaW5nLFxuICAgICAgICBwYWdlUmVjb3JkcyxcbiAgICAgICAgdGhpcy5kYXRhQ29udHJvbGxlci5vcGVyYXRpb24gPT09IEZzTGlzdFN0YXRlLkxvYWRNb3JlLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFnaW5nLmVuYWJsZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnJWMgRnNMaXN0IFdhcm5pbmcgJyxcbiAgICAgICAgJ2NvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmY2MwYicsXG4gICAgICAgICdQYWdpbmF0aW9uIGRvZXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkuICcgK1xuICAgICAgICAnUGFnaW5hdGlvbiBpcyBlbmFibGVkLCBidXQgaHR0cCByZXNwb25zZSBkb2VzIG5vdCBjb250YWluIFwicGFnaW5nXCIgZmllbGQuICcgK1xuICAgICAgICAnWW91IGhhdmUgdG8gc2V0IFwicGFnaW5nOiBmYWxzZVwiIGluIGNvbmZpZyBvciBhZGQgXCJwYWdpbmdcIiBmaWVsZCB0byByZXNwb25zZS4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLy8gbXVzdCBiZSBiZWZvcmUgc2VsZWN0aW9uLCBiZWNhdXNlIHNlbGV0aW9uIHVzZSByZWNvcmRzXG4gICAgdGhpcy5kYXRhQ29udHJvbGxlci5zZXRSb3dzRnJvbVJlc3BvbnNlKHJlc3BvbnNlLmRhdGEpO1xuICAgIC8vL1xuXG4gICAgdGhpcy5fY29tcGxldGVGZXRjaFVwZGF0ZVNlbGVjdG9uKHJlc3BvbnNlKTtcblxuICAgIGlmICh0aGlzLmVtcHR5U3RhdGU/LnZhbGlkYXRlICYmIHRoaXMuZW1wdHlTdGF0ZVRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmVtcHR5U3RhdGVFbmFibGVkID0gdGhpcy5lbXB0eVN0YXRlLnZhbGlkYXRlKHF1ZXJ5LCBjbG9uZURlZXAodGhpcy5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93c0RhdGEpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZnRlckZldGNoRm4pIHtcbiAgICAgIHRoaXMuYWZ0ZXJGZXRjaEZuKHF1ZXJ5LCB0aGlzLmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzRGF0YSk7XG4gICAgfVxuXG4gICAgLy8gY2FzZSB3aGVuIGhhdmUgcmVtb3ZlZCBhbGwgcmVzdWx0cyBmcm9tIGxhc3QgcGFnZVxuICAgIGlmICh0aGlzLmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzLmxlbmd0aCA9PT0gMFxuICAgICAgJiYgdGhpcy5wYWdpbmcucGFnZSA+IDFcbiAgICAgICYmIHRoaXMucGFnaW5nLnBhZ2UgPiB0aGlzLnBhZ2luZy5wYWdlc1xuICAgICkge1xuICAgICAgdGhpcy5wYWdpbmcuZ29MYXN0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5fZmV0Y2hDb21wbGV0ZSQubmV4dCh7IHNjcm9sbEludG9WaWV3OiBwYXJhbXM/LnNjcm9sbEludG9WaWV3IH0pO1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcGxldGVGZXRjaFVwZGF0ZVNlbGVjdG9uKHJlc3BvbnNlKSB7XG4gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBwYXJhbXNcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgIGlmICh0aGlzLnBhZ2luZy5lbmFibGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnBhZ2VDaGFuZ2VkKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVZpc2libGVSZWNvcmRzQ291bnQodGhpcy5wYWdpbmcuZ2V0UGFnZVJlY29yZHMoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVRvdGFsUmVjb3Jkc0NvdW50KHRoaXMucGFnaW5nLnJlY29yZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY291bnQgPSByZXNwb25zZS5wYWdpbmcgJiYgcmVzcG9uc2UucGFnaW5nLnJlY29yZHNcbiAgICAgICAgICB8fCBBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEpICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVZpc2libGVSZWNvcmRzQ291bnQoY291bnQpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi51cGRhdGVUb3RhbFJlY29yZHNDb3VudChjb3VudCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkUm93c0ludGVyc2VjdGlvbih0aGlzLmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgZG8gc29tZSBhY3Rpb25zIGlmIHlvdSByZW1vdmVkIGl0ZW0gYW5kIGl0ZW0gd2FzIGxhc3Qgb24gaGlzIG93biBwYWdlXG4gICAqXG4gICAqIEV4OiBpZiBsaXN0IGhhcyAzIHBhZ2VzIGFuZCBvbiB0aGlyZCBwYWdlIHlvdSBoYXZlIG9ubHkgb25lIGl0ZW0uIEFuZCB5b3UganVzdCBkZWxldGVkIHRoaXMgaXRlbS5cbiAgICogWW91IG11c3QgZ28gdG8gc2Vjb25kIHBhZ2UsIGJ1dCBpZiBpdCB3YXMgbGFzdCBwYWdlIGFuZCB5b3UgY2FuJ3QgZ28gYmFjayAtPiBqdXN0IHJlbG9hZFxuICAgKlxuICAgKiBAcGFyYW0gZGVsZXRlZENvdW50XG4gICAqL1xuICBwcml2YXRlIF9ub0RhdGFQYWdpbmF0aW9uVXBkYXRlKGRlbGV0ZWRDb3VudCkge1xuICAgIGlmICghdGhpcy5kYXRhQ29udHJvbGxlci5oYXNEYXRhKSB7XG4gICAgICBpZiAodGhpcy5wYWdpbmcucGFnZSA+IDEpIHtcbiAgICAgICAgdGhpcy5wYWdpbmcuZ29Ub1BhZ2UodGhpcy5wYWdpbmcucGFnZSAtIDEgfHwgMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucGFnaW5nLnJlY29yZHMgLT0gZGVsZXRlZENvdW50O1xuICAgIHRoaXMucGFnaW5nLnVwZGF0ZVBhZ2luYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmRhdGFDb250cm9sbGVyLmhhc0RhdGEgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVZpc2libGVSZWNvcmRzQ291bnQodGhpcy5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93c0NvdW50KTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZVRvdGFsUmVjb3Jkc0NvdW50KHRoaXMucGFnaW5nLnJlY29yZHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3Jhcnkgc29sdXRpb24sIHdpbGwgZG8gYXV0byBzdWJzY3JpYmUgaWYgd2FzIHJldHVybmVkIE9ic2VydmFibGUuXG4gICAqXG4gICAqIFRPRE86IE1PVkUgVEhJUyBQRUFDRSBPRiBDT0RFIFRPIFNQRUNJQUwgUExBQ0VcbiAgICpcbiAgICogQHBhcmFtIHJlc3RvcmVDbGlja0NhbGxiYWNrXG4gICAqIEBwYXJhbSByb3dcbiAgICovXG4gIHByaXZhdGUgX3Jlc3RvcmVDbGljayhyZXN0b3JlQ2xpY2tDYWxsYmFjaywgcm93KSB7XG4gICAgY29uc3QgcmVzdG9yZUNsaWNrUmVzdWx0ID0gcmVzdG9yZUNsaWNrQ2FsbGJhY2socm93KTtcblxuICAgIGlmIChyZXN0b3JlQ2xpY2tSZXN1bHQgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSB7XG4gICAgICByZXN0b3JlQ2xpY2tSZXN1bHRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICgpID0+IHRoaXMucmVsb2FkKCksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNvcnRpbmdDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMuc29ydGluZy5jbGVhclNvcnRhYmxlQ29sdW1ucygpO1xuICAgIHRoaXMuY29sdW1ucy5jb2x1bW5zXG4gICAgICAuZmlsdGVyKChjb2x1bW4pID0+IGNvbHVtbi5zb3J0YWJsZSAmJiBjb2x1bW4udmlzaWJsZSlcbiAgICAgIC5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgdGhpcy5zb3J0aW5nLmFkZFNvcnRhYmxlQ29sdW1uKGNvbHVtbik7XG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -30,14 +30,6 @@ import { FsStatusComponent } from '../status/status.component';
|
|
|
30
30
|
import * as i0 from "@angular/core";
|
|
31
31
|
export class FsListComponent {
|
|
32
32
|
reorderController = inject(ReorderController);
|
|
33
|
-
_config = inject(FS_LIST_CONFIG, { optional: true });
|
|
34
|
-
_el = inject(ElementRef);
|
|
35
|
-
_selectionDialog = inject(SelectionDialog);
|
|
36
|
-
_dialog = inject(MatDialog);
|
|
37
|
-
_cdRef = inject(ChangeDetectorRef);
|
|
38
|
-
_groupExpandNotifier = inject(GroupExpandNotifierService);
|
|
39
|
-
_route = inject(ActivatedRoute);
|
|
40
|
-
_persistance = inject(PersistanceController);
|
|
41
33
|
classFsList = true;
|
|
42
34
|
rowHoverHighlight;
|
|
43
35
|
set config(config) {
|
|
@@ -56,6 +48,14 @@ export class FsListComponent {
|
|
|
56
48
|
_filterParamsReady = false;
|
|
57
49
|
_destroy = new Subject();
|
|
58
50
|
_injector = inject(Injector);
|
|
51
|
+
_config = inject(FS_LIST_CONFIG, { optional: true });
|
|
52
|
+
_el = inject(ElementRef);
|
|
53
|
+
_selectionDialog = inject(SelectionDialog);
|
|
54
|
+
_dialog = inject(MatDialog);
|
|
55
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
56
|
+
_groupExpandNotifier = inject(GroupExpandNotifierService);
|
|
57
|
+
_route = inject(ActivatedRoute);
|
|
58
|
+
_persistance = inject(PersistanceController);
|
|
59
59
|
set filterReference(component) {
|
|
60
60
|
this._filterRef = component;
|
|
61
61
|
this.list.actions.setFilterRef(component);
|
|
@@ -383,4 +383,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
383
383
|
type: ContentChild,
|
|
384
384
|
args: [FsListEmptyStateDirective, { read: TemplateRef }]
|
|
385
385
|
}] } });
|
|
386
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDclEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUFFLElBQUksRUFB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QiwrRkFDckIscUJBQXFCLDBGQUNyQixTQUFTOzsyRkFHQSxlQUFlO2tCQTdCM0IsU0FBUzsrQkFDRSxTQUFTLG1CQUdGLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLGlCQUFpQjtxQkFDbEIsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLGlCQUFpQjt3QkFDakIsMEJBQTBCO3dCQUMxQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLFNBQVM7cUJBQ1Y7OEJBY29DLFdBQVc7c0JBQS9DLFdBQVc7dUJBQUMsZUFBZTtnQkFHckIsaUJBQWlCO3NCQUR2QixXQUFXO3VCQUFDLDZCQUE2QjtnQkFJL0IsTUFBTTtzQkFEaEIsS0FBSzt1QkFBQyxRQUFRO2dCQU1SLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsTUFBTTtnQkFJQSxlQUFlO3NCQURyQixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFJcEQsSUFBSTtzQkFEVixTQUFTO3VCQUFDLGVBQWU7Z0JBZ0JmLGVBQWU7c0JBRHpCLFNBQVM7dUJBQUMsZUFBZTtnQkFZZixlQUFlO3NCQUR6QixlQUFlO3VCQUFDLHFCQUFxQjtnQkFTMUIsbUJBQW1CO3NCQUQ5QixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBEcmF3ZXJSZWYgfSBmcm9tICdAZmlyZXN0aXRjaC9kcmF3ZXInO1xuaW1wb3J0IHsgRmlsdGVyQ29tcG9uZW50LCBGaWx0ZXJIZWFkaW5nRGlyZWN0aXZlLCBGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uRGlhbG9nIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0aW9uJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBza2lwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgTGlzdCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvbGlzdC1jb250cm9sbGVyJztcbmltcG9ydCB7IFBlcnNpc3RhbmNlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcGVyc2lzdGFuY2UtY29udHJvbGxlcic7XG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIEZzTGlzdEhlYWRpbmdEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRnNMaXN0Q29sdW1uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb2x1bW4vY29sdW1uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0xpc3RDb250ZW50SW5pdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29udGVudC1pbml0L2NvbnRlbnQtaW5pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLWxpc3QvZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0xpc3RGb290ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Zvb3Rlci9mb290ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBhZ2luYXRpb25TdHJhdGVneSB9IGZyb20gJy4uLy4uL2VudW1zL3BhZ2luYXRpb24tc3RyYXRlZ3kuZW51bSc7XG5pbXBvcnQgeyBGU19MSVNUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2ZzLWxpc3QucHJvdmlkZXJzJztcbmltcG9ydCB7XG4gIEZzTGlzdEFic3RyYWN0Um93LFxuICBGc0xpc3RBY3Rpb24sXG4gIEZzTGlzdENvbmZpZywgRnNMaXN0UGVyc2l0YW5jZSwgRnNMaXN0U2VsZWN0aW9uQ29uZmlnLFxuICBGc0xpc3RUcmFja0J5Rm4sXG4gIEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbixcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBJUGFnaW5hdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wYWdpbmF0aW9uLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ncm91cC1leHBhbmQtbm90aWZpZXIuc2VydmljZSc7XG5pbXBvcnQgeyBGc0JvZHlDb21wb25lbnQgfSBmcm9tICcuLi9ib2R5L2JvZHkuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbWl6ZUNvbHNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b21pemUtY29scy9jdXN0b21pemUtY29scy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnNGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9mb290ZXIvZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc0hlYWRDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkL2hlYWQuY29tcG9uZW50JztcbmltcG9ydCB7IEZzTGlzdExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZzUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnNTdGF0dXNDb21wb25lbnQgfSBmcm9tICcuLi9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgUGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIFJlb3JkZXJDb250cm9sbGVyLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEZpbHRlckNvbXBvbmVudCxcbiAgICBGaWx0ZXJTdGF0dXNCYXJEaXJlY3RpdmUsXG4gICAgRmlsdGVySGVhZGluZ0RpcmVjdGl2ZSxcbiAgICBGc1N0YXR1c0NvbXBvbmVudCxcbiAgICBGc0xpc3RDb250ZW50SW5pdERpcmVjdGl2ZSxcbiAgICBGc0hlYWRDb21wb25lbnQsXG4gICAgRnNCb2R5Q29tcG9uZW50LFxuICAgIEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUsXG4gICAgRnNGb290ZXJDb21wb25lbnQsXG4gICAgRnNMaXN0Rm9vdGVyRGlyZWN0aXZlLFxuICAgIEZzTGlzdExvYWRlckNvbXBvbmVudCxcbiAgICBGc1BhZ2luYXRpb25Db21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHJlb3JkZXJDb250cm9sbGVyID0gaW5qZWN0KFJlb3JkZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfY29uZmlnID0gaW5qZWN0PEZzTGlzdENvbmZpZz4oRlNfTElTVF9DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9zZWxlY3Rpb25EaWFsb2cgPSBpbmplY3QoU2VsZWN0aW9uRGlhbG9nKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfZ3JvdXBFeHBhbmROb3RpZmllciA9IGluamVjdChHcm91cEV4cGFuZE5vdGlmaWVyU2VydmljZSk7XG4gIHByaXZhdGUgX3JvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSBfcGVyc2lzdGFuY2UgPSBpbmplY3QoUGVyc2lzdGFuY2VDb250cm9sbGVyKTtcblxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtbGlzdCcpIHB1YmxpYyBjbGFzc0ZzTGlzdCA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1saXN0LXJvdy1oaWdobGlnaHQnKVxuICBwdWJsaWMgcm93SG92ZXJIaWdobGlnaHQ6IGJvb2xlYW47XG5cbiAgQElucHV0KCdjb25maWcnKVxuICBwdWJsaWMgc2V0IGNvbmZpZyhjb25maWc6IEZzTGlzdENvbmZpZykge1xuICAgIHRoaXMuX2luaXRXaXRoQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGVyTGluZXMgPSAzO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmlsdGVyc1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoRnNMaXN0SGVhZGluZ0RpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwdWJsaWMgaGVhZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoRnNCb2R5Q29tcG9uZW50KVxuICBwdWJsaWMgYm9keTogRnNCb2R5Q29tcG9uZW50O1xuXG4gIHB1YmxpYyBsaXN0OiBMaXN0O1xuXG4gIC8vIEV2ZW50IHdpbGwgZmlyZWQgaWYgYWN0aW9uIHJlbW92ZTogdHJ1ZSB3aWxsIGNsaWNrZWRcbiAgcHVibGljIHJvd1JlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBmaXJzdExvYWQgPSB0cnVlO1xuXG4gIHByaXZhdGUgX2xpc3RDb2x1bW5EaXJlY3RpdmVzOiBRdWVyeUxpc3Q8RnNMaXN0Q29sdW1uRGlyZWN0aXZlPjtcbiAgcHJpdmF0ZSBfZmlsdGVyUmVmOiBGaWx0ZXJDb21wb25lbnQ7XG4gIHByaXZhdGUgX2ZpbHRlclBhcmFtc1JlYWR5ID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rlc3Ryb3kgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgQFZpZXdDaGlsZChGaWx0ZXJDb21wb25lbnQpXG4gIHB1YmxpYyBzZXQgZmlsdGVyUmVmZXJlbmNlKGNvbXBvbmVudCkge1xuICAgIHRoaXMuX2ZpbHRlclJlZiA9IGNvbXBvbmVudDtcbiAgICB0aGlzLmxpc3QuYWN0aW9ucy5zZXRGaWx0ZXJSZWYoY29tcG9uZW50KTtcbiAgICB0aGlzLl9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY29sdW1ucyB0byBjb25maWdcbiAgICogQ3JlYXRlIENvbHVtbiBNb2RlbCBpbnN0YW5jZXNcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRnNMaXN0Q29sdW1uRGlyZWN0aXZlKVxuICBwdWJsaWMgc2V0IGNvbHVtblRlbXBsYXRlcyhsaXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT4pIHtcbiAgICB0aGlzLl9saXN0Q29sdW1uRGlyZWN0aXZlcyA9IGxpc3RDb2x1bW5EaXJlY3RpdmVzO1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC50cmFuZm9ybVRlbXBsYXRlc1RvQ29sdW1ucyhsaXN0Q29sdW1uRGlyZWN0aXZlcyk7XG4gICAgfVxuICB9XG5cbiAgQENvbnRlbnRDaGlsZChGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2V0IF9lbXB0eVN0YXRlVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QuZW1wdHlTdGF0ZVRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZHJhd2VyUmVmID0gaW5qZWN0KERyYXdlclJlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogUmV0dXJuIHJlZmVyZW5jZSBmb3IgZmlsdGVyXG4gICAqL1xuICBwdWJsaWMgZ2V0IGZpbHRlclJlZigpOiBGaWx0ZXJDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJSZWY7XG4gIH1cblxuICBwdWJsaWMgc2V0IGdyb3VwRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubGlzdC5ncm91cEVuYWJsZWQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBncm91cEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5ncm91cEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1N0YXR1cygpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnN0YXR1cyAmJlxuICAgICAgKHRoaXMubGlzdC5zb3J0aW5nLmlzRGVmaW5lZCB8fCB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWQpICYmXG4gICAgICAoXG4gICAgICAgICF0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQgfHxcbiAgICAgICAgKHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCAmJiB0aGlzLnJlb3JkZXJDb250cm9sbGVyLnN0YXR1cylcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2luYXRvclZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5wYWdpbmcuZW5hYmxlZFxuICAgICAgJiYgIXRoaXMuZmlyc3RMb2FkXG4gICAgICAmJiAhdGhpcy5saXN0LmVtcHR5U3RhdGVFbmFibGVkXG4gICAgICAmJiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3NDb3VudCA+IDBcbiAgICAgICYmIHRoaXMubGlzdC5wYWdpbmcucGFnZXMgPiAxO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUXVlcnkoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZmlsdGVyc1F1ZXJ5O1xuICB9XG5cbiAgcHVibGljIGdldCBwYWdpbmdTdGF0ZSgpOiBJUGFnaW5hdGlvblN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnBhZ2luZy5zdGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdC5hZnRlckluaXQpIHtcbiAgICAgIHRoaXMubGlzdC5hZnRlckluaXQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvUmVtb3ZlUm93KCk7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9Hcm91cEV4cGFuZFN0YXR1c0NoYW5nZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KG51bGwpO1xuICAgIHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTmV4dCgpO1xuICB9XG5cbiAgcHVibGljIHByZXZQYWdlKCkge1xuICAgIHRoaXMubGlzdC5wYWdpbmcuZ29QcmV2KCk7XG4gIH1cblxuICBwdWJsaWMgZmlyc3RQYWdlKCkge1xuICAgIHRoaXMubGlzdC5wYWdpbmcuZ29GaXJzdCgpO1xuICB9XG5cbiAgcHVibGljIGxhc3RQYWdlKCkge1xuICAgIHRoaXMubGlzdC5wYWdpbmcuZ29MYXN0KCk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREYXRhKHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5Rm4pIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmdldERhdGEodHJhY2tCeSk7XG4gIH1cblxuICBwdWJsaWMgaGFzRGF0YSh0cmFja0J5OiBGc0xpc3RUcmFja0J5Rm4pIHtcbiAgICByZXR1cm4gdGhpcy5saXN0Lmhhc0RhdGEodHJhY2tCeSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGF0YShcbiAgICByb3dzOiBGc0xpc3RBYnN0cmFjdFJvdyB8IEZzTGlzdEFic3RyYWN0Um93W10sXG4gICAgdHJhY2tCeT86IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbixcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci51cGRhdGVEYXRhKHJvd3MsIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VSb3coXG4gICAgcm93OiBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgICB0cmFja0J5PzogRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnJlcGxhY2VEYXRhKHJvdywgdHJhY2tCeSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlU2VsZWN0aW9uQ29uZmlnKGNvbmZpZzogRnNMaXN0U2VsZWN0aW9uQ29uZmlnKSB7XG4gICAgdGhpcy5saXN0LnNlbGVjdGlvbi51cGRhdGVDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldFNlbGVjdGlvbkFjdGlvbnMoKSB7XG4gICAgdGhpcy5saXN0LnNlbGVjdGlvbi5yZXNldEFjdGlvbnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBlbmFibGVTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5saXN0LnNlbGVjdGlvbi5lbmFibGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24uZGlzYWJsZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZURhdGEoZGF0YTogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdIHwgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKGRhdGEpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYWRpbmcoaGVhZGluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5saXN0LmhlYWRpbmcgPSBoZWFkaW5nO1xuICB9XG5cbiAgcHVibGljIHNldFN1YmhlYWRpbmcoc3ViaGVhZGluZzogc3RyaW5nKSB7XG4gICAgdGhpcy5saXN0LnN1YmhlYWRpbmcgPSBzdWJoZWFkaW5nO1xuICB9XG5cbiAgcHVibGljIHJlb3JkZXJTdGFydCgpIHtcbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZVJlb3JkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVyRmluaXNoKCkge1xuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZGlzYWJsZVJlb3JkZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb25zKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgaWYgKGFjdGlvbnMpIHtcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLmNsZWFyQWN0aW9ucygpO1xuICAgICAgdGhpcy5saXN0LmFjdGlvbnMuc2V0QWN0aW9ucyhhY3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsdGVyUmVhZHkoKSB7XG4gICAgdGhpcy5saXN0LmZpbHRlcnNSZWFkeSgpO1xuICAgIHRoaXMuX2ZpbHRlclBhcmFtc1JlYWR5ID0gdHJ1ZTtcbiAgICB0aGlzLl9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJpbGl0eSBmb3Igc3BlY2lmaWMgY29sdW1uXG4gICAqL1xuICBwdWJsaWMgY29sdW1uVmlzaWJpbGl0eShuYW1lOiBzdHJpbmcsIHNob3c6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbHVtbnNWaXNpYmlsaXR5KFt7IG5hbWUsIHNob3cgfV0pO1xuICAgIC8vIHRoaXMuZmlsdGVyUmVmLnVwZGF0ZVNvcnRpbmdzKHRoaXMubGlzdC5zb3J0aW5nLm1ha2VTb3J0aW5nTGlzdCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJpbGl0eSBmb3IgbGlzdCBvZiBzcGVjaWZpYyBjb2x1bW5zXG4gICAqL1xuICBwdWJsaWMgY29sdW1uc1Zpc2liaWxpdHkoY29sdW1uczogeyBuYW1lOiBzdHJpbmc7IHNob3c6IGJvb2xlYW4gfVtdKSB7XG4gICAgdGhpcy5saXN0LmNvbHVtbnMudXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoY29sdW1ucyk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5maWx0ZXJSZWYgJiYgdGhpcy5fZmlsdGVyUGFyYW1zUmVhZHkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1JlYWR5LmVtaXQoKTtcbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5EaWFsb2coKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fZGlhbG9nUmVmIHx8ICEhdGhpcy5fZHJhd2VyUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgY29uZmlnIGZvciBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIHByaXZhdGUgX2luaXRXaXRoQ29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0Q29uZmlnOiBGc0xpc3RDb25maWcgPSB7XG4gICAgICBxdWVyeVBhcmFtOiB0cnVlLFxuICAgICAgY2hpcHM6IHRydWUsXG4gICAgICBwYWdpbmc6IHtcbiAgICAgICAgc3RyYXRlZ3k6IFBhZ2luYXRpb25TdHJhdGVneS5PZmZzZXQsXG4gICAgICAgIGxpbWl0OiAyNSxcbiAgICAgIH0sXG4gICAgICBub1Jlc3VsdHM6IHtcbiAgICAgICAgbWVzc2FnZTogJ05vIFJlc3VsdHMgRm91bmQnLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gY2xvbmVEZWVwKHRoaXMuX2NvbmZpZyB8fCB7fSk7XG4gICAgY29uc3QgbGlzdENvbmZpZyA9IG1lcmdlV2l0aChkZWZhdWx0Q29uZmlnLCBnbG9iYWxDb25maWcsIGNvbmZpZywgdGhpcy5fY29uZmlnTWVyZ2VDdXN0b21pemVyKTtcblxuICAgIGlmIChsaXN0Q29uZmlnLnBlcnNpc3QgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9yZXN0b3JlUGVyc2lzdGFuY2UobGlzdENvbmZpZy5wZXJzaXN0KTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVDdXN0b21pemVBY3Rpb24obGlzdENvbmZpZy5hY3Rpb25zKTtcblxuICAgIHRoaXMubGlzdCA9IG5ldyBMaXN0KFxuICAgICAgdGhpcy5fZWwsXG4gICAgICBsaXN0Q29uZmlnLFxuICAgICAgdGhpcy5fc2VsZWN0aW9uRGlhbG9nLFxuICAgICAgdGhpcy5fcm91dGUsXG4gICAgICB0aGlzLl9wZXJzaXN0YW5jZSxcbiAgICAgIHRoaXMuaW5EaWFsb2csXG4gICAgKTtcblxuICAgIHRoaXMucm93SG92ZXJIaWdobGlnaHQgPSB0aGlzLmxpc3Qucm93SG92ZXJIaWdobGlnaHQ7XG5cbiAgICB0aGlzLl93YWl0Rmlyc3RMb2FkKCk7XG5cbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmluaXRXaXRoQ29uZmlnKFxuICAgICAgY29uZmlnLnJlb3JkZXIsXG4gICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIsXG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucyxcbiAgICAgIHRoaXMubGlzdC5zZWxlY3Rpb24sXG4gICAgKTtcblxuICAgIGlmICh0aGlzLl9saXN0Q29sdW1uRGlyZWN0aXZlcykge1xuICAgICAgdGhpcy5saXN0LnRyYW5mb3JtVGVtcGxhdGVzVG9Db2x1bW5zKHRoaXMuX2xpc3RDb2x1bW5EaXJlY3RpdmVzKTtcbiAgICB9XG4gICAgdGhpcy5fbGlzdGVuU29ydGluZ0NoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYWN0aW9uIHdpdGggY3VzdG9taXplIGZsYWcgYW5kIHJlLWRlY2xhcmUgY2xpY2sgZnVuY3Rpb24gZm9yIEN1c3RvbWl6ZUNvbHNEaWFsb2dcbiAgICpcbiAgICogQHBhcmFtIGFjdGlvbnNcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZUN1c3RvbWl6ZUFjdGlvbihhY3Rpb25zOiBGc0xpc3RBY3Rpb25bXSkge1xuICAgIGNvbnN0IGN1c3RvbWl6ZUFjdGlvbiA9IGFjdGlvbnM/LmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uLmN1c3RvbWl6ZSk7XG5cbiAgICBpZiAoY3VzdG9taXplQWN0aW9uKSB7XG4gICAgICBjb25zdCBhY3Rpb25DbGlja0ZuID0gY3VzdG9taXplQWN0aW9uLmNsaWNrO1xuXG4gICAgICBjdXN0b21pemVBY3Rpb24uY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb25DbGlja0ZuKSB7XG4gICAgICAgICAgYWN0aW9uQ2xpY2tGbihudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKEN1c3RvbWl6ZUNvbHNEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgIGluamVjdG9yOiB0aGlzLl9pbmplY3RvcixcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb2x1bW5zOiB0aGlzLmxpc3QuY29sdW1ucy5jb2x1bW5zRm9yRGlhbG9nLFxuICAgICAgICAgICAgY2hhbmdlRm46IHRoaXMubGlzdC5jb2x1bW5zLmNoYW5nZUZuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3QuZGVzdHJveSQpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICB0aGlzLmxpc3QuY29sdW1ucy51cGRhdGVWaXNpYmlsaXR5Rm9yQ29scyhkYXRhKTtcblxuICAgICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzb3J0aW5nIGluIGZpbHRlclxuICAgKi9cbiAgcHJpdmF0ZSBfbGlzdGVuU29ydGluZ0NoYW5nZSgpIHtcbiAgICB0aGlzLmxpc3Quc29ydGluZ1xuICAgICAgLnNvcnRpbmdDaGFuZ2VkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3QuZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzb3J0KSA9PiB7XG4gICAgICAgIHRoaXMuX2ZpbHRlclJlZi51cGRhdGVTb3J0KHNvcnQsIGZhbHNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9SZW1vdmVSb3coKSB7XG4gICAgdGhpcy5yb3dSZW1vdmVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKChyb3cpID0+IHtcbiAgICAgICAgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnJlbW92ZURhdGEocm93KTtcbiAgICAgICAgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzXG4gICAgICAgICAgLmZvckVhY2goKGl0ZW06IFJvdykgPT4gaXRlbS51cGRhdGVBY3Rpb25zKCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIuaGFzR3JvdXBzKSB7XG4gICAgICB0aGlzLl9ncm91cEV4cGFuZE5vdGlmaWVyLmV4cGFuZFN0YXR1c0NoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJvdykgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci50b2dnbGVSb3dHcm91cChyb3cpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF93YWl0Rmlyc3RMb2FkKCkge1xuICAgIHRoaXMubGlzdC5sb2FkaW5nJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+ICF2YWx1ZSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3QuZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maXJzdExvYWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ01lcmdlQ3VzdG9taXplcihvYmpWYWx1ZTogYW55KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzdG9yZVBlcnNpc3RhbmNlKHBlcnNpc3RDb25maWc6IEZzTGlzdFBlcnNpdGFuY2UpIHtcbiAgICB0aGlzLl9wZXJzaXN0YW5jZS5pbml0KHBlcnNpc3RDb25maWcsIHRoaXMuaW5EaWFsb2cpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiZnMtbGlzdC1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdoYXMtZmlsdGVycyc6IGxpc3QuZmlsdGVyQ29uZmlnPy5pdGVtcy5sZW5ndGgsXG4gICAgICAnaGFzLXN0YXR1cyc6IGhhc1N0YXR1cyxcbiAgICAgICdoYXMtY2hpcHMnOiBsaXN0LmNoaXBzLFxuICAgICAgJ2hhcy1hY3Rpb25zJzogbGlzdC5hY3Rpb25zLmhhc0FjdGlvbnMsXG4gICAgICAnaGFzLXJvdy1hY3Rpb25zLWhvdmVyJzogbGlzdC5yb3dBY3Rpb25zSG92ZXIsXG4gICAgICAnZmlyc3QtbG9hZCc6IGZpcnN0TG9hZCxcbiAgICAgICdsb2FkaW5nJzogbGlzdC5sb2FkaW5nJCB8IGFzeW5jXG4gICAgfVwiPlxuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdENvbnRhaW5lckNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2xpc3RDb250YWluZXJDb250ZW50PlxuICBAaWYgKGxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3MkIHwgYXN5bmM7IGFzIGxpc3REYXRhKSB7XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZzLWxpc3QtaGVhZGVyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnbm8td3JhcCc6IHJlb3JkZXJDb250cm9sbGVyLm1hbnVhbFJlb3JkZXJBY3RpdmF0ZWQgfHwgIWxpc3QuZmlsdGVyQ29uZmlnPy5pdGVtcy5sZW5ndGggfVwiPlxuICAgICAgICBAaWYgKGxpc3QuZmlsdGVyQ29uZmlnKSB7XG4gICAgICAgICAgPGZzLWZpbHRlclxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWZpbHRlclwiXG4gICAgICAgICAgICBbY29uZmlnXT1cImxpc3QuZmlsdGVyQ29uZmlnXCI+XG4gICAgICAgICAgICBAaWYgKGhhc1N0YXR1cykge1xuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgZnNGaWx0ZXJTdGF0dXNCYXI+XG4gICAgICAgICAgICAgICAgPGZzLWxpc3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2hpZGRlbi1tb2JpbGUnOiAhbGlzdC5zdGF0dXMgfVwiXG4gICAgICAgICAgICAgICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICAgICAgICAgICAgICBbbGlzdF09XCJsaXN0XCJcbiAgICAgICAgICAgICAgICAgIFtmaXJzdExvYWRdPVwiZmlyc3RMb2FkXCI+XG4gICAgICAgICAgICAgICAgPC9mcy1saXN0LXN0YXR1cz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoaGVhZGluZ1RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmc0ZpbHRlckhlYWRpbmc+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9mcy1maWx0ZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmcy1saXN0LWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuICAgIDwhLS0gVGFibGUgaW1wbGVtZW50YXRpb24gLS0+XG4gICAgPGRpdiBjbGFzcz1cImZzLWxpc3QtdGFibGUtY29udGFpbmVyXCI+XG4gICAgICBAaWYgKCFmaXJzdExvYWQgJiYgbGlzdERhdGEubGVuZ3RoID4gMCAmJiAhbGlzdC5lbXB0eVN0YXRlRW5hYmxlZCkge1xuICAgICAgICA8dGFibGVcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtdGFibGVcIlxuICAgICAgICAgIHJvbGU9XCJncmlkXCJcbiAgICAgICAgICBbZnNMaXN0Q29udGVudEluaXRdPVwibGlzdC5hZnRlckNvbnRlbnRJbml0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3N0eWxlLWNhcmQnOiBsaXN0LnN0eWxlID09PSAnY2FyZCcsXG4gICAgICAgICAgICAgICdzdHlsZS1iYXNpYyc6IGxpc3Quc3R5bGUgPT09ICdiYXNpYycsXG4gICAgICAgICAgICAgICdzdHlsZS1saW5lJzogKGxpc3Quc3R5bGUgfHwgJ2xpbmUnKSA9PT0gJ2xpbmUnXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgQGlmIChsaXN0LmNvbHVtbnMuaGFzSGVhZGVyKSB7XG4gICAgICAgICAgICA8dGhlYWRcbiAgICAgICAgICAgICAgZnMtbGlzdC1oZWFkXG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1oZWFkXCJcbiAgICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwibGlzdC5jb2x1bW5zLnRoZWFkQ2xhc3NcIlxuICAgICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbc29ydGluZ109XCJsaXN0LnNvcnRpbmdcIlxuICAgICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgICAgW2FjdGl2ZUZpbHRlcnNDb3VudF09XCJsaXN0LmFjdGl2ZUZpbHRlcnNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtyZW9yZGVyRW5hYmxlZF09XCJyZW9yZGVyQ29udHJvbGxlci5lbmFibGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3Jlb3JkZXJQb3NpdGlvbl09XCJyZW9yZGVyQ29udHJvbGxlci5wb3NpdGlvbiQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtyZW9yZGVyU3RyYXRlZ3ldPVwicmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgfVxuICAgICAgICAgIDx0Ym9keVxuICAgICAgICAgICAgZnMtbGlzdC1ib2R5XG4gICAgICAgICAgICBmc0xpc3REcmFnZ2FibGVMaXN0XG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtYm9keVwiXG4gICAgICAgICAgICByb2xlPVwicm93Z3JvdXBcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiEhKHJlb3JkZXJDb250cm9sbGVyLnJlb3JkZXJEaXNhYmxlZCQgfCBhc3luYylcIlxuICAgICAgICAgICAgW3Jvd3NdPVwibGlzdERhdGFcIlxuICAgICAgICAgICAgW3Jvd0FjdGlvbnNSYXddPVwibGlzdC5yb3dBY3Rpb25zUmF3XCJcbiAgICAgICAgICAgIFtncm91cEFjdGlvbnNSYXddPVwibGlzdC5ncm91cEFjdGlvbnNSYXdcIlxuICAgICAgICAgICAgW2hhc1Jvd0FjdGlvbnNdPVwibGlzdC5oYXNSb3dBY3Rpb25zXCJcbiAgICAgICAgICAgIFtyb3dFdmVudHNdPVwibGlzdC5yb3dFdmVudHNcIlxuICAgICAgICAgICAgW3Jvd0NsYXNzXT1cImxpc3Qucm93Q2xhc3NcIlxuICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZXN0b3JlTW9kZV09XCJsaXN0LnJlc3RvcmVNb2RlXCJcbiAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgW3Jvd1JlbW92ZWRdPVwicm93UmVtb3ZlZFwiXG4gICAgICAgICAgICBbYWN0aXZlRmlsdGVyc0NvdW50XT1cImxpc3QuYWN0aXZlRmlsdGVyc0NvdW50JCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyRW5hYmxlZF09XCJyZW9yZGVyQ29udHJvbGxlci5lbmFibGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyUG9zaXRpb25dPVwicmVvcmRlckNvbnRyb2xsZXIucG9zaXRpb24kIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJTdHJhdGVneV09XCJyZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlck11bHRpcGxlXT1cInJlb3JkZXJDb250cm9sbGVyLm11bHRpcGxlXCI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICBAaWYgKGxpc3QuY29sdW1ucy5oYXNGb290ZXIpIHtcbiAgICAgICAgICAgIDx0Zm9vdFxuICAgICAgICAgICAgICBmcy1saXN0LWZvb3RlclxuICAgICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtZm9vdGVyXCJcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwibGlzdC5hY3RpdmVGaWx0ZXJzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtyZW9yZGVyUG9zaXRpb25dPVwicmVvcmRlckNvbnRyb2xsZXIucG9zaXRpb24kIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJDb250cm9sbGVyLnN0cmF0ZWd5JCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8L3Rmb290PlxuICAgICAgICAgIH1cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIH1cbiAgICAgIEBpZiAoZmlyc3RMb2FkKSB7XG4gICAgICAgIDxmcy1saXN0LWxvYWRlclxuICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy5jb2x1bW5zXCJcbiAgICAgICAgICBbbG9hZGVyTGluZXNdPVwibG9hZGVyTGluZXNcIj5cbiAgICAgICAgPC9mcy1saXN0LWxvYWRlcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZnMtbGlzdC1wYWdpbmF0aW9uXG4gICAgICBjbGFzcz1cImZzLWxpc3QtcGFnaW5hdGlvblwiXG4gICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICBbcGFnaW5hdGlvbl09XCJsaXN0LnBhZ2luZ1wiPlxuICAgIDwvZnMtbGlzdC1wYWdpbmF0aW9uPlxuICAgIEBpZiAoIWZpcnN0TG9hZCkge1xuICAgICAgQGlmIChsaXN0RGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1uby1yZXN1bHRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIEBpZiAobGlzdC5ub1Jlc3VsdHM/Lm1lc3NhZ2UgJiYgIWxpc3QuZW1wdHlTdGF0ZUVuYWJsZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAge3sgbGlzdC5ub1Jlc3VsdHM/Lm1lc3NhZ2UgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGxpc3QuZW1wdHlTdGF0ZUVuYWJsZWQpIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0LmVtcHR5U3RhdGVUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICB9XG4gIH1cbjwvbmctdGVtcGxhdGU+Il19
|
|
386
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDclEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUFFLElBQUksRUFB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cUIsK0ZBQ3JCLHFCQUFxQiwwRkFDckIsU0FBUzs7MkZBR0EsZUFBZTtrQkE3QjNCLFNBQVM7K0JBQ0UsU0FBUyxtQkFHRix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNULDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixpQkFBaUI7cUJBQ2xCLGNBQ1csSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLDBCQUEwQjt3QkFDMUIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLDRCQUE0Qjt3QkFDNUIsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixTQUFTO3FCQUNWOzhCQU1vQyxXQUFXO3NCQUEvQyxXQUFXO3VCQUFDLGVBQWU7Z0JBR3JCLGlCQUFpQjtzQkFEdkIsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBSS9CLE1BQU07c0JBRGhCLEtBQUs7dUJBQUMsUUFBUTtnQkFNUixXQUFXO3NCQURqQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSXBELElBQUk7c0JBRFYsU0FBUzt1QkFBQyxlQUFlO2dCQXdCZixlQUFlO3NCQUR6QixTQUFTO3VCQUFDLGVBQWU7Z0JBWWYsZUFBZTtzQkFEekIsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBUzFCLG1CQUFtQjtzQkFEOUIsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRHJhd2VyUmVmIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZHJhd2VyJztcbmltcG9ydCB7IEZpbHRlckNvbXBvbmVudCwgRmlsdGVySGVhZGluZ0RpcmVjdGl2ZSwgRmlsdGVyU3RhdHVzQmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZmlsdGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkRpYWxvZyB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc2tpcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBjbG9uZURlZXAsIG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IExpc3QgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2xpc3QtY29udHJvbGxlcic7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3BlcnNpc3RhbmNlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUmVvcmRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQge1xuICBGc0xpc3RIZWFkaW5nRGlyZWN0aXZlLFxufSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZzTGlzdENvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29sdW1uL2NvbHVtbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNMaXN0Q29udGVudEluaXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbnRlbnQtaW5pdC9jb250ZW50LWluaXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGc0xpc3RFbXB0eVN0YXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNMaXN0Rm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9mb290ZXIvZm9vdGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9lbnVtcy9wYWdpbmF0aW9uLXN0cmF0ZWd5LmVudW0nO1xuaW1wb3J0IHsgRlNfTElTVF9DT05GSUcgfSBmcm9tICcuLi8uLi9mcy1saXN0LnByb3ZpZGVycyc7XG5pbXBvcnQge1xuICBGc0xpc3RBYnN0cmFjdFJvdyxcbiAgRnNMaXN0QWN0aW9uLFxuICBGc0xpc3RDb25maWcsIEZzTGlzdFBlcnNpdGFuY2UsIEZzTGlzdFNlbGVjdGlvbkNvbmZpZyxcbiAgRnNMaXN0VHJhY2tCeUZuLFxuICBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSVBhZ2luYXRpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFnaW5hdGlvbi1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXAtZXhwYW5kLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnNCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vYm9keS9ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9taXplLWNvbHMvY3VzdG9taXplLWNvbHMuY29tcG9uZW50JztcbmltcG9ydCB7IEZzRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9vdGVyL2Zvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnNIZWFkQ29tcG9uZW50IH0gZnJvbSAnLi4vaGVhZC9oZWFkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc0xpc3RMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc1BhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZzU3RhdHVzQ29tcG9uZW50IH0gZnJvbSAnLi4vc3RhdHVzL3N0YXR1cy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlLFxuICAgIFBlcnNpc3RhbmNlQ29udHJvbGxlcixcbiAgICBSZW9yZGVyQ29udHJvbGxlcixcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBGaWx0ZXJDb21wb25lbnQsXG4gICAgRmlsdGVyU3RhdHVzQmFyRGlyZWN0aXZlLFxuICAgIEZpbHRlckhlYWRpbmdEaXJlY3RpdmUsXG4gICAgRnNTdGF0dXNDb21wb25lbnQsXG4gICAgRnNMaXN0Q29udGVudEluaXREaXJlY3RpdmUsXG4gICAgRnNIZWFkQ29tcG9uZW50LFxuICAgIEZzQm9keUNvbXBvbmVudCxcbiAgICBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlLFxuICAgIEZzRm9vdGVyQ29tcG9uZW50LFxuICAgIEZzTGlzdEZvb3RlckRpcmVjdGl2ZSxcbiAgICBGc0xpc3RMb2FkZXJDb21wb25lbnQsXG4gICAgRnNQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBcbiAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyID0gaW5qZWN0KFJlb3JkZXJDb250cm9sbGVyKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWxpc3QnKSBwdWJsaWMgY2xhc3NGc0xpc3QgPSB0cnVlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZnMtbGlzdC1yb3ctaGlnaGxpZ2h0JylcbiAgcHVibGljIHJvd0hvdmVySGlnaGxpZ2h0OiBib29sZWFuO1xuXG4gIEBJbnB1dCgnY29uZmlnJylcbiAgcHVibGljIHNldCBjb25maWcoY29uZmlnOiBGc0xpc3RDb25maWcpIHtcbiAgICB0aGlzLl9pbml0V2l0aENvbmZpZyhjb25maWcpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRlckxpbmVzID0gMztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZpbHRlcnNSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAQ29udGVudENoaWxkKEZzTGlzdEhlYWRpbmdEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHVibGljIGhlYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKEZzQm9keUNvbXBvbmVudClcbiAgcHVibGljIGJvZHk6IEZzQm9keUNvbXBvbmVudDtcblxuICBwdWJsaWMgbGlzdDogTGlzdDtcblxuICAvLyBFdmVudCB3aWxsIGZpcmVkIGlmIGFjdGlvbiByZW1vdmU6IHRydWUgd2lsbCBjbGlja2VkXG4gIHB1YmxpYyByb3dSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwdWJsaWMgZmlyc3RMb2FkID0gdHJ1ZTtcblxuICBwcml2YXRlIF9saXN0Q29sdW1uRGlyZWN0aXZlczogUXVlcnlMaXN0PEZzTGlzdENvbHVtbkRpcmVjdGl2ZT47XG4gIHByaXZhdGUgX2ZpbHRlclJlZjogRmlsdGVyQ29tcG9uZW50O1xuICBwcml2YXRlIF9maWx0ZXJQYXJhbXNSZWFkeSA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9jb25maWcgPSBpbmplY3Q8RnNMaXN0Q29uZmlnPihGU19MSVNUX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX3NlbGVjdGlvbkRpYWxvZyA9IGluamVjdChTZWxlY3Rpb25EaWFsb2cpO1xuICBwcml2YXRlIF9kaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgcHJpdmF0ZSBfY2RSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9ncm91cEV4cGFuZE5vdGlmaWVyID0gaW5qZWN0KEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9wZXJzaXN0YW5jZSA9IGluamVjdChQZXJzaXN0YW5jZUNvbnRyb2xsZXIpO1xuXG4gIEBWaWV3Q2hpbGQoRmlsdGVyQ29tcG9uZW50KVxuICBwdWJsaWMgc2V0IGZpbHRlclJlZmVyZW5jZShjb21wb25lbnQpIHtcbiAgICB0aGlzLl9maWx0ZXJSZWYgPSBjb21wb25lbnQ7XG4gICAgdGhpcy5saXN0LmFjdGlvbnMuc2V0RmlsdGVyUmVmKGNvbXBvbmVudCk7XG4gICAgdGhpcy5fZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvbHVtbnMgdG8gY29uZmlnXG4gICAqIENyZWF0ZSBDb2x1bW4gTW9kZWwgaW5zdGFuY2VzXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEZzTGlzdENvbHVtbkRpcmVjdGl2ZSlcbiAgcHVibGljIHNldCBjb2x1bW5UZW1wbGF0ZXMobGlzdENvbHVtbkRpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxGc0xpc3RDb2x1bW5EaXJlY3RpdmU+KSB7XG4gICAgdGhpcy5fbGlzdENvbHVtbkRpcmVjdGl2ZXMgPSBsaXN0Q29sdW1uRGlyZWN0aXZlcztcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QudHJhbmZvcm1UZW1wbGF0ZXNUb0NvbHVtbnMobGlzdENvbHVtbkRpcmVjdGl2ZXMpO1xuICAgIH1cbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRnNMaXN0RW1wdHlTdGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHNldCBfZW1wdHlTdGF0ZVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmVtcHR5U3RhdGVUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2RpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2RyYXdlclJlZiA9IGluamVjdChEcmF3ZXJSZWYsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiByZWZlcmVuY2UgZm9yIGZpbHRlclxuICAgKi9cbiAgcHVibGljIGdldCBmaWx0ZXJSZWYoKTogRmlsdGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVmO1xuICB9XG5cbiAgcHVibGljIHNldCBncm91cEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxpc3QuZ3JvdXBFbmFibGVkKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JvdXBFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIuZ3JvdXBFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5zdGF0dXMgJiZcbiAgICAgICh0aGlzLmxpc3Quc29ydGluZy5pc0RlZmluZWQgfHwgdGhpcy5saXN0LnBhZ2luZy5lbmFibGVkKSAmJlxuICAgICAgKFxuICAgICAgICAhdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkIHx8XG4gICAgICAgICh0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQgJiYgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5zdGF0dXMpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGdldCBwYWdpbmF0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWRcbiAgICAgICYmICF0aGlzLmZpcnN0TG9hZFxuICAgICAgJiYgIXRoaXMubGlzdC5lbXB0eVN0YXRlRW5hYmxlZFxuICAgICAgJiYgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzQ291bnQgPiAwXG4gICAgICAmJiB0aGlzLmxpc3QucGFnaW5nLnBhZ2VzID4gMTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlsdGVyc1F1ZXJ5KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmZpbHRlcnNRdWVyeTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFnaW5nU3RhdGUoKTogSVBhZ2luYXRpb25TdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5wYWdpbmcuc3RhdGU7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3QuYWZ0ZXJJbml0KSB7XG4gICAgICB0aGlzLmxpc3QuYWZ0ZXJJbml0KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb1JlbW92ZVJvdygpO1xuICAgIHRoaXMuX3N1YnNjcmliZVRvR3JvdXBFeHBhbmRTdGF0dXNDaGFuZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX2Rlc3Ryb3kubmV4dChudWxsKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb05leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvUHJldigpO1xuICB9XG5cbiAgcHVibGljIGZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvRmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTGFzdCgpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucmVsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSh0cmFja0J5PzogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5nZXREYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIGhhc0RhdGEodHJhY2tCeTogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5oYXNEYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudXBkYXRlRGF0YShyb3dzLCB0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlUm93KFxuICAgIHJvdzogRnNMaXN0QWJzdHJhY3RSb3csXG4gICAgdHJhY2tCeT86IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbixcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZXBsYWNlRGF0YShyb3csIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGlvbkNvbmZpZyhjb25maWc6IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24udXBkYXRlQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWxlY3Rpb25BY3Rpb25zKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24uZW5hYmxlU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLmRpc2FibGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVEYXRhKGRhdGE6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSB8IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVtb3ZlRGF0YShkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIZWFkaW5nKGhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5oZWFkaW5nID0gaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdWJoZWFkaW5nKHN1YmhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5zdWJoZWFkaW5nID0gc3ViaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVyU3RhcnQoKSB7XG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVvcmRlckZpbmlzaCgpIHtcbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmRpc2FibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aW9ucyhhY3Rpb25zOiBGc0xpc3RBY3Rpb25bXSkge1xuICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucy5jbGVhckFjdGlvbnMoKTtcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLnNldEFjdGlvbnMoYWN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbHRlclJlYWR5KCkge1xuICAgIHRoaXMubGlzdC5maWx0ZXJzUmVhZHkoKTtcbiAgICB0aGlzLl9maWx0ZXJQYXJhbXNSZWFkeSA9IHRydWU7XG4gICAgdGhpcy5fZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgZm9yIHNwZWNpZmljIGNvbHVtblxuICAgKi9cbiAgcHVibGljIGNvbHVtblZpc2liaWxpdHkobmFtZTogc3RyaW5nLCBzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eShbeyBuYW1lLCBzaG93IH1dKTtcbiAgICAvLyB0aGlzLmZpbHRlclJlZi51cGRhdGVTb3J0aW5ncyh0aGlzLmxpc3Quc29ydGluZy5tYWtlU29ydGluZ0xpc3QoKSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgZm9yIGxpc3Qgb2Ygc3BlY2lmaWMgY29sdW1uc1xuICAgKi9cbiAgcHVibGljIGNvbHVtbnNWaXNpYmlsaXR5KGNvbHVtbnM6IHsgbmFtZTogc3RyaW5nOyBzaG93OiBib29sZWFuIH1bXSkge1xuICAgIHRoaXMubGlzdC5jb2x1bW5zLnVwZGF0ZVZpc2liaWxpdHlGb3JDb2xzKGNvbHVtbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuZmlsdGVyUmVmICYmIHRoaXMuX2ZpbHRlclBhcmFtc1JlYWR5KSB7XG4gICAgICB0aGlzLmZpbHRlcnNSZWFkeS5lbWl0KCk7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluRGlhbG9nKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGNvbmZpZyBmb3IgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBwcml2YXRlIF9pbml0V2l0aENvbmZpZyhjb25maWc6IEZzTGlzdENvbmZpZykge1xuICAgIGlmICh0aGlzLmxpc3QpIHtcbiAgICAgIHRoaXMubGlzdC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdENvbmZpZzogRnNMaXN0Q29uZmlnID0ge1xuICAgICAgcXVlcnlQYXJhbTogdHJ1ZSxcbiAgICAgIGNoaXBzOiB0cnVlLFxuICAgICAgcGFnaW5nOiB7XG4gICAgICAgIHN0cmF0ZWd5OiBQYWdpbmF0aW9uU3RyYXRlZ3kuT2Zmc2V0LFxuICAgICAgICBsaW1pdDogMjUsXG4gICAgICB9LFxuICAgICAgbm9SZXN1bHRzOiB7XG4gICAgICAgIG1lc3NhZ2U6ICdObyBSZXN1bHRzIEZvdW5kJyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IGNsb25lRGVlcCh0aGlzLl9jb25maWcgfHwge30pO1xuICAgIGNvbnN0IGxpc3RDb25maWcgPSBtZXJnZVdpdGgoZGVmYXVsdENvbmZpZywgZ2xvYmFsQ29uZmlnLCBjb25maWcsIHRoaXMuX2NvbmZpZ01lcmdlQ3VzdG9taXplcik7XG5cbiAgICBpZiAobGlzdENvbmZpZy5wZXJzaXN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fcmVzdG9yZVBlcnNpc3RhbmNlKGxpc3RDb25maWcucGVyc2lzdCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ3VzdG9taXplQWN0aW9uKGxpc3RDb25maWcuYWN0aW9ucyk7XG5cbiAgICB0aGlzLmxpc3QgPSBuZXcgTGlzdChcbiAgICAgIHRoaXMuX2VsLFxuICAgICAgbGlzdENvbmZpZyxcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZyxcbiAgICAgIHRoaXMuX3JvdXRlLFxuICAgICAgdGhpcy5fcGVyc2lzdGFuY2UsXG4gICAgICB0aGlzLmluRGlhbG9nLFxuICAgICk7XG5cbiAgICB0aGlzLnJvd0hvdmVySGlnaGxpZ2h0ID0gdGhpcy5saXN0LnJvd0hvdmVySGlnaGxpZ2h0O1xuXG4gICAgdGhpcy5fd2FpdEZpcnN0TG9hZCgpO1xuXG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5pbml0V2l0aENvbmZpZyhcbiAgICAgIGNvbmZpZy5yZW9yZGVyLFxuICAgICAgdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLFxuICAgICAgdGhpcy5saXN0LmFjdGlvbnMsXG4gICAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5fbGlzdENvbHVtbkRpcmVjdGl2ZXMpIHtcbiAgICAgIHRoaXMubGlzdC50cmFuZm9ybVRlbXBsYXRlc1RvQ29sdW1ucyh0aGlzLl9saXN0Q29sdW1uRGlyZWN0aXZlcyk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3RlblNvcnRpbmdDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGFjdGlvbiB3aXRoIGN1c3RvbWl6ZSBmbGFnIGFuZCByZS1kZWNsYXJlIGNsaWNrIGZ1bmN0aW9uIGZvciBDdXN0b21pemVDb2xzRGlhbG9nXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb25zXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVDdXN0b21pemVBY3Rpb24oYWN0aW9uczogRnNMaXN0QWN0aW9uW10pIHtcbiAgICBjb25zdCBjdXN0b21pemVBY3Rpb24gPSBhY3Rpb25zPy5maW5kKChhY3Rpb24pID0+IGFjdGlvbi5jdXN0b21pemUpO1xuXG4gICAgaWYgKGN1c3RvbWl6ZUFjdGlvbikge1xuICAgICAgY29uc3QgYWN0aW9uQ2xpY2tGbiA9IGN1c3RvbWl6ZUFjdGlvbi5jbGljaztcblxuICAgICAgY3VzdG9taXplQWN0aW9uLmNsaWNrID0gKCkgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uQ2xpY2tGbikge1xuICAgICAgICAgIGFjdGlvbkNsaWNrRm4obnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kaWFsb2cub3BlbihDdXN0b21pemVDb2xzRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICBpbmplY3RvcjogdGhpcy5faW5qZWN0b3IsXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29sdW1uczogdGhpcy5saXN0LmNvbHVtbnMuY29sdW1uc0ZvckRpYWxvZyxcbiAgICAgICAgICAgIGNoYW5nZUZuOiB0aGlzLmxpc3QuY29sdW1ucy5jaGFuZ2VGbixcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0LmRlc3Ryb3kkKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgdGhpcy5saXN0LmNvbHVtbnMudXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoZGF0YSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc29ydGluZyBpbiBmaWx0ZXJcbiAgICovXG4gIHByaXZhdGUgX2xpc3RlblNvcnRpbmdDaGFuZ2UoKSB7XG4gICAgdGhpcy5saXN0LnNvcnRpbmdcbiAgICAgIC5zb3J0aW5nQ2hhbmdlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0LmRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc29ydCkgPT4ge1xuICAgICAgICB0aGlzLl9maWx0ZXJSZWYudXBkYXRlU29ydChzb3J0LCBmYWxzZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvUmVtb3ZlUm93KCkge1xuICAgIHRoaXMucm93UmVtb3ZlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZSgocm93KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZW1vdmVEYXRhKHJvdyk7XG4gICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci52aXNpYmxlUm93c1xuICAgICAgICAgIC5mb3JFYWNoKChpdGVtOiBSb3cpID0+IGl0ZW0udXBkYXRlQWN0aW9ucygpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9Hcm91cEV4cGFuZFN0YXR1c0NoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5saXN0LmRhdGFDb250cm9sbGVyLmhhc0dyb3Vwcykge1xuICAgICAgdGhpcy5fZ3JvdXBFeHBhbmROb3RpZmllci5leHBhbmRTdGF0dXNDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyb3cpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudG9nZ2xlUm93R3JvdXAocm93KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdEZpcnN0TG9hZCgpIHtcbiAgICB0aGlzLmxpc3QubG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiAhdmFsdWUpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0LmRlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlyc3RMb2FkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWdNZXJnZUN1c3RvbWl6ZXIob2JqVmFsdWU6IGFueSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgcmV0dXJuIG9ialZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Jlc3RvcmVQZXJzaXN0YW5jZShwZXJzaXN0Q29uZmlnOiBGc0xpc3RQZXJzaXRhbmNlKSB7XG4gICAgdGhpcy5fcGVyc2lzdGFuY2UuaW5pdChwZXJzaXN0Q29uZmlnLCB0aGlzLmluRGlhbG9nKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImZzLWxpc3QtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnaGFzLWZpbHRlcnMnOiBsaXN0LmZpbHRlckNvbmZpZz8uaXRlbXMubGVuZ3RoLFxuICAgICAgJ2hhcy1zdGF0dXMnOiBoYXNTdGF0dXMsXG4gICAgICAnaGFzLWNoaXBzJzogbGlzdC5jaGlwcyxcbiAgICAgICdoYXMtYWN0aW9ucyc6IGxpc3QuYWN0aW9ucy5oYXNBY3Rpb25zLFxuICAgICAgJ2hhcy1yb3ctYWN0aW9ucy1ob3Zlcic6IGxpc3Qucm93QWN0aW9uc0hvdmVyLFxuICAgICAgJ2ZpcnN0LWxvYWQnOiBmaXJzdExvYWQsXG4gICAgICAnbG9hZGluZyc6IGxpc3QubG9hZGluZyQgfCBhc3luY1xuICAgIH1cIj5cbiAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RDb250YWluZXJDb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNsaXN0Q29udGFpbmVyQ29udGVudD5cbiAgQGlmIChsaXN0LmRhdGFDb250cm9sbGVyLnZpc2libGVSb3dzJCB8IGFzeW5jOyBhcyBsaXN0RGF0YSkge1xuICAgIDxkaXYgY2xhc3M9XCJmcy1saXN0LWhlYWRlci1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmcy1saXN0LWhlYWRlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLXdyYXAnOiByZW9yZGVyQ29udHJvbGxlci5tYW51YWxSZW9yZGVyQWN0aXZhdGVkIHx8ICFsaXN0LmZpbHRlckNvbmZpZz8uaXRlbXMubGVuZ3RoIH1cIj5cbiAgICAgICAgQGlmIChsaXN0LmZpbHRlckNvbmZpZykge1xuICAgICAgICAgIDxmcy1maWx0ZXJcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1maWx0ZXJcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJsaXN0LmZpbHRlckNvbmZpZ1wiPlxuICAgICAgICAgICAgQGlmIChoYXNTdGF0dXMpIHtcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGZzRmlsdGVyU3RhdHVzQmFyPlxuICAgICAgICAgICAgICAgIDxmcy1saXN0LXN0YXR1c1xuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LXN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdoaWRkZW4tbW9iaWxlJzogIWxpc3Quc3RhdHVzIH1cIlxuICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwibGlzdERhdGFcIlxuICAgICAgICAgICAgICAgICAgW2xpc3RdPVwibGlzdFwiXG4gICAgICAgICAgICAgICAgICBbZmlyc3RMb2FkXT1cImZpcnN0TG9hZFwiPlxuICAgICAgICAgICAgICAgIDwvZnMtbGlzdC1zdGF0dXM+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhlYWRpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgZnNGaWx0ZXJIZWFkaW5nPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZnMtZmlsdGVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZnMtbGlzdC1jb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8IS0tIFRhYmxlIGltcGxlbWVudGF0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1saXN0LXRhYmxlLWNvbnRhaW5lclwiPlxuICAgICAgQGlmICghZmlyc3RMb2FkICYmIGxpc3REYXRhLmxlbmd0aCA+IDAgJiYgIWxpc3QuZW1wdHlTdGF0ZUVuYWJsZWQpIHtcbiAgICAgICAgPHRhYmxlXG4gICAgICAgICAgY2xhc3M9XCJmcy1saXN0LXRhYmxlXCJcbiAgICAgICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAgICAgW2ZzTGlzdENvbnRlbnRJbml0XT1cImxpc3QuYWZ0ZXJDb250ZW50SW5pdFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzdHlsZS1jYXJkJzogbGlzdC5zdHlsZSA9PT0gJ2NhcmQnLFxuICAgICAgICAgICAgICAnc3R5bGUtYmFzaWMnOiBsaXN0LnN0eWxlID09PSAnYmFzaWMnLFxuICAgICAgICAgICAgICAnc3R5bGUtbGluZSc6IChsaXN0LnN0eWxlIHx8ICdsaW5lJykgPT09ICdsaW5lJ1xuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIEBpZiAobGlzdC5jb2x1bW5zLmhhc0hlYWRlcikge1xuICAgICAgICAgICAgPHRoZWFkXG4gICAgICAgICAgICAgIGZzLWxpc3QtaGVhZFxuICAgICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtaGVhZFwiXG4gICAgICAgICAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImxpc3QuY29sdW1ucy50aGVhZENsYXNzXCJcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3NvcnRpbmddPVwibGlzdC5zb3J0aW5nXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICAgIFthY3RpdmVGaWx0ZXJzQ291bnRdPVwibGlzdC5hY3RpdmVGaWx0ZXJzQ291bnQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtyZW9yZGVyUG9zaXRpb25dPVwicmVvcmRlckNvbnRyb2xsZXIucG9zaXRpb24kIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbcmVvcmRlclN0cmF0ZWd5XT1cInJlb3JkZXJDb250cm9sbGVyLnN0cmF0ZWd5JCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dGJvZHlcbiAgICAgICAgICAgIGZzLWxpc3QtYm9keVxuICAgICAgICAgICAgZnNMaXN0RHJhZ2dhYmxlTGlzdFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWJvZHlcIlxuICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhIShyZW9yZGVyQ29udHJvbGxlci5yZW9yZGVyRGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgIFtyb3dBY3Rpb25zUmF3XT1cImxpc3Qucm93QWN0aW9uc1Jhd1wiXG4gICAgICAgICAgICBbZ3JvdXBBY3Rpb25zUmF3XT1cImxpc3QuZ3JvdXBBY3Rpb25zUmF3XCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICBbcm93RXZlbnRzXT1cImxpc3Qucm93RXZlbnRzXCJcbiAgICAgICAgICAgIFtyb3dDbGFzc109XCJsaXN0LnJvd0NsYXNzXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVzdG9yZU1vZGVdPVwibGlzdC5yZXN0b3JlTW9kZVwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtyb3dSZW1vdmVkXT1cInJvd1JlbW92ZWRcIlxuICAgICAgICAgICAgW2FjdGl2ZUZpbHRlcnNDb3VudF09XCJsaXN0LmFjdGl2ZUZpbHRlcnNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclBvc2l0aW9uXT1cInJlb3JkZXJDb250cm9sbGVyLnBvc2l0aW9uJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyU3RyYXRlZ3ldPVwicmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJNdWx0aXBsZV09XCJyZW9yZGVyQ29udHJvbGxlci5tdWx0aXBsZVwiPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgQGlmIChsaXN0LmNvbHVtbnMuaGFzRm9vdGVyKSB7XG4gICAgICAgICAgICA8dGZvb3RcbiAgICAgICAgICAgICAgZnMtbGlzdC1mb290ZXJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWZvb3RlclwiXG4gICAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwibGlzdC5zZWxlY3Rpb25cIlxuICAgICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIlxuICAgICAgICAgICAgICBbYWN0aXZlRmlsdGVyc0NvdW50XT1cImxpc3QuYWN0aXZlRmlsdGVyc0NvdW50JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3Jlb3JkZXJFbmFibGVkXT1cInJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbcmVvcmRlclBvc2l0aW9uXT1cInJlb3JkZXJDb250cm9sbGVyLnBvc2l0aW9uJCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgW3Jlb3JkZXJTdHJhdGVneV09XCJyZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPC90Zm9vdD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGFibGU+XG4gICAgICB9XG4gICAgICBAaWYgKGZpcnN0TG9hZCkge1xuICAgICAgICA8ZnMtbGlzdC1sb2FkZXJcbiAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMuY29sdW1uc1wiXG4gICAgICAgICAgW2xvYWRlckxpbmVzXT1cImxvYWRlckxpbmVzXCI+XG4gICAgICAgIDwvZnMtbGlzdC1sb2FkZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGZzLWxpc3QtcGFnaW5hdGlvblxuICAgICAgY2xhc3M9XCJmcy1saXN0LXBhZ2luYXRpb25cIlxuICAgICAgW3Jvd3NdPVwibGlzdERhdGFcIlxuICAgICAgW3BhZ2luYXRpb25dPVwibGlzdC5wYWdpbmdcIj5cbiAgICA8L2ZzLWxpc3QtcGFnaW5hdGlvbj5cbiAgICBAaWYgKCFmaXJzdExvYWQpIHtcbiAgICAgIEBpZiAobGlzdERhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZzLWxpc3Qtbm8tcmVzdWx0cy1jb250YWluZXJcIj5cbiAgICAgICAgICBAaWYgKGxpc3Qubm9SZXN1bHRzPy5tZXNzYWdlICYmICFsaXN0LmVtcHR5U3RhdGVFbmFibGVkKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1uby1yZXN1bHRzXCI+XG4gICAgICAgICAgICAgIHt7IGxpc3Qubm9SZXN1bHRzPy5tZXNzYWdlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChsaXN0LmVtcHR5U3RhdGVFbmFibGVkKSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdC5lbXB0eVN0YXRlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgfVxuICB9XG48L25nLXRlbXBsYXRlPiJdfQ==
|