@datorama/core 22.9.8-rc.1 → 22.9.8
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/bundles/datorama-core.umd.js +90 -88
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +3 -10
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.metadata.json +1 -1
- package/esm2015/lib/grid-v2/grid-pagination/grid-pagination.component.js +8 -3
- package/esm2015/lib/select/select.component.js +2 -7
- package/esm2015/lib/select/trigger-single/trigger-single.component.js +1 -1
- package/esm2015/lib/version.js +1 -1
- package/esm5/lib/grid-v2/grid-pagination/grid-pagination.component.js +10 -3
- package/esm5/lib/select/select.component.js +2 -7
- package/esm5/lib/select/trigger-single/trigger-single.component.js +1 -1
- package/esm5/lib/version.js +1 -1
- package/fesm2015/datorama-core.js +71 -71
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +90 -88
- package/fesm5/datorama-core.js.map +1 -1
- package/lib/select/select.component.d.ts +0 -2
- package/lib/select/trigger-single/trigger-single.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -9,13 +9,14 @@ import { __decorate, __metadata } from "tslib";
|
|
|
9
9
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';
|
|
10
10
|
import { untilDestroyed } from 'ngx-take-until-destroy';
|
|
11
11
|
import { DatoTranslateService } from '../../services/translate.service';
|
|
12
|
-
import { switchMap, tap, throttleTime } from 'rxjs/operators';
|
|
12
|
+
import { startWith, switchMap, tap, throttleTime } from 'rxjs/operators';
|
|
13
13
|
import { GridQuery } from '../grid-store/grid.query';
|
|
14
14
|
import { DatoGridControllerComponent } from '../grid-controller/grid-controller.component';
|
|
15
15
|
import { isNil } from '../../utils/validators';
|
|
16
16
|
import { DecimalPipe } from '@angular/common';
|
|
17
17
|
import { GridService } from '../grid-store/grid.service';
|
|
18
18
|
import { tapOnce } from '../../rx/tap';
|
|
19
|
+
import { combineLatest } from 'rxjs';
|
|
19
20
|
var DatoGridPaginationV2Component = /** @class */ (function () {
|
|
20
21
|
function DatoGridPaginationV2Component(cdr, translate, gridQuery, gridService, controller, decimalPipe) {
|
|
21
22
|
this.cdr = cdr;
|
|
@@ -79,7 +80,13 @@ var DatoGridPaginationV2Component = /** @class */ (function () {
|
|
|
79
80
|
DatoGridPaginationV2Component.prototype.ngOnInit = function () {
|
|
80
81
|
var _this = this;
|
|
81
82
|
this.gridQuery
|
|
82
|
-
.waitForGrid(function () {
|
|
83
|
+
.waitForGrid(function () {
|
|
84
|
+
return combineLatest([
|
|
85
|
+
_this.gridQuery.gridRef.filterChanged,
|
|
86
|
+
_this.gridQuery.gridRef.rowGroupOpened.pipe(startWith(true)),
|
|
87
|
+
_this.gridQuery.gridRef.expandOrCollapseAll.pipe(startWith(true))
|
|
88
|
+
]);
|
|
89
|
+
})
|
|
83
90
|
.pipe(untilDestroyed(this))
|
|
84
91
|
.subscribe(function () {
|
|
85
92
|
_this.gridApi.paginationGoToPage(0);
|
|
@@ -322,4 +329,4 @@ var DatoGridPaginationV2Component = /** @class */ (function () {
|
|
|
322
329
|
return DatoGridPaginationV2Component;
|
|
323
330
|
}());
|
|
324
331
|
export { DatoGridPaginationV2Component };
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBU3ZDO0lBdURFLHVDQUNVLEdBQXNCLEVBQ3RCLFNBQStCLEVBQy9CLFNBQW9CLEVBQ3BCLFdBQXdCLEVBQ3hCLFVBQXVDLEVBQ3ZDLFdBQXdCO1FBTHhCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFB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SUFBRCxvQ0FBQztDQUFBLEFBalRELElBaVRDO1NBalRZLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBEYXRvcmFtYS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBBcGFjaGUgTGljZW5zZSAyLjAgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vZGF0b3JhbWEvY2xpZW50LWNvcmUvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZEFwaSwgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IHRhcE9uY2UgfSBmcm9tICcuLi8uLi9yeC90YXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtcGFnaW5hdGlvbi12MicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZFBhZ2luYXRpb25WMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGlzIHNldHRlciBpcyB1c2VkIHRvIGFzc2lnbiB0aGUgbmF2aWdhdGlvbiBlbGVtZW50IHJlZiBhbmQgdG8gc2V0XG4gICAqIHRoZSBwYWdpbmF0aW9uIHNpemUgd2hlbiB0aGUgY29tcG9uZW50IHN0YXJ0c1xuICAgKiBAcGFyYW0ge0VsZW1lbnRSZWZ9IGNvbnRlbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ25hdmlnYXRpb24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzZXQgY29udGVudChjb250ZW50OiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uRWxlbWVudCA9IGNvbnRlbnQ7XG4gICAgaWYgKGNvbnRlbnQgJiYgdGhpcy5zbWFsbFZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlTmF2aWdhdGlvblNpemUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdGFibGVcbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgcm93c1BlclBhZ2U6IG51bWJlcjtcbiAgLy8gd2hlbiB0aGUgd2lkZ2V0J3Mgd2lkdGggaXMgc21hbGxlciB0aGFuIFhTX0RJU1BMQVlfU0laRSBkaXNhYmxlIGdvIHRvIGZpcnN0L2xhc3QgYnV0dG9uc1xuICBkaXNhYmxlQnV0dG9uczogYm9vbGVhbiA9IG51bGw7XG4gIC8vIHdoZW4gdGhlIHdpZGdldCdzIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiBTTUFMTF9ESVNQTEFZX1NJWkUgY2hhbmdlIHRvIHNtYWxsIHBhZ2luYXRpb24gdmlld1xuICBzbWFsbFZlcnNpb246IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgLy8gbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSB0YWJsZVxuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIC8vIFRoZSBkaXNwbGF5IHJvd3MgcmFuZ2VcbiAgcm93c1JhbmdlOiBzdHJpbmc7XG4gIC8vIG1hbmFnaW5nIG9iamVjdCBmb3IgdGhlIG5hdmlnYXRpb25cbiAgcGFnZU51bWJlcnNEaXNwbGF5ID0ge1xuICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgIHBhZ2VzOiBbXSxcbiAgICBzaG93Rmlyc3RFbGxpcHNpczogZmFsc2UsXG4gICAgc2hvd0xhc3RQYWdlOiBmYWxzZVxuICB9O1xuXG4gIC8vIFNob3cgZml0IGNlbGwgY29udGVudCBhbmQgY29sbGFwc2UvZXhwYW5kIHJvdyBncm91cHMgY29udHJvbHNcbiAgc2hvd0JvdHRvbUNvbnRyb2xzID0gZmFsc2U7XG4gIGlzRXhwYW5kZWQgPSB0cnVlO1xuICBoYXNSb3dHcm91cENvbHVtbnMgPSBmYWxzZTtcblxuICAvLyBob3cgbWFueSBudW1iZXJzIGFyZSBzaG93aW5nIG9uIHRoZSBzYW1lIHRpbWUgYmVzaWRlcyB0aGUgbGFzdCBwYWdlIG51bWJlclxuICBwcml2YXRlIF9wYWdlc0luVmlldzogbnVtYmVyO1xuICAvLyBUaGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBvbiBlYWNoIHNpZGUgb2YgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gIHByaXZhdGUgcGFnZXNPblNpZGVzOiBudW1iZXI7XG4gIC8vIGlmIHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIHRhYmxlIGZpdHMgdGhlIG51bWJlciBvZiBkaXNwbGF5aW5nIHBhZ2VzXG4gIHByaXZhdGUgcGFnZXNGaXRWaWV3OiBib29sZWFuO1xuICAvLyBob3cgbWFueSBudW1iZXJzIHRvIHNob3cgb24gZWFjaCBzaWRlIGJlc2lkZXMgdGhlIHNlbGVjdGVkIG51bWJlclxuICBwcml2YXRlIG5hdmlnYXRpb25FbGVtZW50OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGlzU2VydmVyU2lkZVBhZ2luYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSBncmlkQXBpOiBHcmlkQXBpO1xuICAvLyBUaGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lbCBmb3IgZWFjaCB2aWV3IGFzIGRlZmluZWQgYnkgcHJvZHVjdC5cbiAgcHJpdmF0ZSByZWFkb25seSBNSU5JX0RJU1BMQVlfTEVOR1RIOiBudW1iZXIgPSAyO1xuICBwcml2YXRlIHJlYWRvbmx5IERJU1BMQVlfTEVOR1RIOiBudW1iZXIgPSA1O1xuICAvLyBXaWRnZXQncyB3aWR0aCB0aGUgZGV0ZXJtaW5lcyB0aGUgcGFnaW5hdGlvbiB2aWV3IHR5cGUgWyBzbWFsbCwgeHNdIGFzIGRlZmluZWQgYnkgcHJvZHVjdC5cbiAgcHJpdmF0ZSByZWFkb25seSBYU19ESVNQTEFZX1NJWkU6IG51bWJlciA9IDE2MDtcbiAgcHJpdmF0ZSByZWFkb25seSBTTUFMTF9ESVNQTEFZX1NJWkU6IG51bWJlciA9IDM5MDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JpZFF1ZXJ5OiBHcmlkUXVlcnksXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250cm9sbGVyOiBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGVcbiAgKSB7fVxuXG4gIGdldCBwcmV2UGFnZURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9PT0gMTtcbiAgfVxuXG4gIGdldCBuZXh0UGFnZURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PiB0aGlzLmdyaWRRdWVyeS5ncmlkUmVmLmZpbHRlckNoYW5nZWQpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9QYWdlKDApO1xuICAgICAgICB0aGlzLmluaXRQYWdpbmF0aW9uKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuZ3JpZFF1ZXJ5LmdyaWRSZWFkeSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd0dyb3VwQ29sdW1ucyA9IHRoaXMuZ3JpZFF1ZXJ5LmFwaS5jb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuXG4gICAgICAgICAgdGhpcy5ncmlkQXBpID0gdGhpcy5ncmlkUXVlcnkuYXBpLmdyaWQ7XG4gICAgICAgICAgdGhpcy5zaG93Qm90dG9tQ29udHJvbHMgPSB0aGlzLmdyaWRRdWVyeS5nZXRHcmlkT3B0aW9ucygpLnNob3dCb3R0b21Db250cm9scztcbiAgICAgICAgICB0aGlzLmhhc1Jvd0dyb3VwQ29sdW1ucyA9IHJvd0dyb3VwQ29sdW1ucyAmJiByb3dHcm91cENvbHVtbnMubGVuZ3RoID4gMDtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1NlcnZlclNpZGVQYWdpbmF0aW9uID0gdGhpcy5ncmlkUXVlcnkuaXNTZXJ2ZXJTaWRlO1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzU2VydmVyU2lkZVBhZ2luYXRpb24gPyB0aGlzLmdyaWRRdWVyeS5zZXJ2ZXJEYXRhTG9hZGVkJCA6IHRoaXMuZ3JpZFF1ZXJ5LnJvd0RhdGFDaGFuZ2VkJDtcbiAgICAgICAgfSksXG4gICAgICAgIHRocm90dGxlVGltZSgxMDApLFxuICAgICAgICB0YXBPbmNlKCgpID0+IHRoaXMuaW5pdFBhZ2luYXRpb24oKSksXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IHBhZ2luYXRpb25QYWdlID0gMSB9OiBEYXRvR3JpZERhdGFDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgICAgLyoqICBBZyBncmlkIGluZGV4IGlzIGZyb20gMCwgYnV0IHRoZSBpbmRleCBmaXJlZCBmcm9tIHRoZSBldmVudCBzdGFydCBmcm9tIDEqL1xuICAgICAgICB0aGlzLmluaXRQYWdpbmF0aW9uKHBhZ2luYXRpb25QYWdlIC0gMSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNhbGN1bGF0ZSB0aGUgcm93IGNvdW50IGFuZCBwYWdlIGxlbmd0aHNcbiAgICovXG4gIGNhbGN1bGF0ZVJvd3NDb3VudCh0b3RhbFJvd3M6IG51bWJlcikge1xuICAgIHRoaXMudG90YWxQYWdlcyA9IHRvdGFsUm93cyA/IE1hdGguY2VpbCh0b3RhbFJvd3MgLyB0aGlzLnJvd3NQZXJQYWdlKSA6IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0VG90YWxQYWdlcygpO1xuICAgIHRoaXMucm93Q291bnQgPSB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldFJvd0NvdW50KCk7XG4gICAgdGhpcy5zZXRSb3dzRGlzcGxheVJhbmdlKHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpbml0UGFnaW5hdGlvbihwYWdlTnVtYmVyID0gMCkge1xuICAgIGNvbnN0IHsgdG90YWxSb3dzLCBlbmFibGVkIH0gPSB0aGlzLmdyaWRRdWVyeS5zZXJ2ZXJTaWRlQ29uZmlnO1xuICAgIGlmIChlbmFibGVkICYmIGlzTmlsKHRvdGFsUm93cykpIHJldHVybjtcbiAgICAvKiogcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBwYWdlcyBzdGFydGluZyBmcm9tIDEgKi9cbiAgICB0aGlzLnJvd3NQZXJQYWdlID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlUm93c0NvdW50KHRvdGFsUm93cyk7XG4gICAgLyoqIHNldCB0aGUgaW5pdCB2YWx1ZSBvZiB0aGUgcGFnaW5hdGlvbiB2aWV3IHRvIG5vcm1hbCBzaXplICovXG4gICAgdGhpcy5wYWdlc0luVmlldyA9IHRoaXMuRElTUExBWV9MRU5HVEg7XG4gICAgLyoqIGN1cnJlbnQgcGFnZSBpbmRleCBzdGFydHMgZnJvbSAwICovXG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UocGFnZU51bWJlcik7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBudW1iZXIgb2YgcGFnZSBudW1iZXJzIHNob3dpbmcgYXQgdGhlIHNhbWUgdGltZSBpbiB0aGUgbmF2aWdhdGlvblxuICAgKiBwYW5lbCAmIHVwZGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBvbiBlYWNoIHNpZGUgb2YgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuZXdOdW1iZXJzTGVuZ3RoIC0gVGhlIG5ldyBsZW5ndGggb2YgdGhlIGRpc3BsYXlpbmcgbnVtYmVyc1xuICAgKi9cbiAgc2V0IHBhZ2VzSW5WaWV3KG5ld051bWJlcnNMZW5ndGg6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VzSW5WaWV3ID0gbmV3TnVtYmVyc0xlbmd0aDtcbiAgICB0aGlzLnBhZ2VzT25TaWRlcyA9IE1hdGguZmxvb3IodGhpcy5fcGFnZXNJblZpZXcgLyAyKTtcbiAgICB0aGlzLnBhZ2VzRml0VmlldyA9IHRoaXMuX3BhZ2VzSW5WaWV3ICsgMSA+PSB0aGlzLnRvdGFsUGFnZXM7XG4gICAgLy8gaW52YWxpZGF0ZSBkaXNwbGF5aW5nIHBhZ2VzIHVwb24gcmVzaXplXG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSBbXTtcbiAgfVxuXG4gIC8qKiBUT0RPIFRoaXMgaXMgbm90IGxpc3RlbmluZyB0byBzaXplIGNoYW5nZXMgKi9cbiAgY2FsY3VsYXRlTmF2aWdhdGlvblNpemUoKSB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRXaWR0aCA9IHRoaXMubmF2aWdhdGlvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucyA9IGVsZW1lbnRXaWR0aCA8IHRoaXMuWFNfRElTUExBWV9TSVpFO1xuICAgICAgaWYgKGVsZW1lbnRXaWR0aCA8IHRoaXMuU01BTExfRElTUExBWV9TSVpFKSB7XG4gICAgICAgIGlmICh0aGlzLl9wYWdlc0luVmlldyAhPT0gdGhpcy5NSU5JX0RJU1BMQVlfTEVOR1RIKSB7XG4gICAgICAgICAgdGhpcy5zbWFsbFZlcnNpb24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMucGFnZXNJblZpZXcgPSB0aGlzLk1JTklfRElTUExBWV9MRU5HVEg7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9wYWdlc0luVmlldyAhPT0gdGhpcy5ESVNQTEFZX0xFTkdUSCkge1xuICAgICAgICAgIHRoaXMuc21hbGxWZXJzaW9uID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wYWdlc0luVmlldyA9IHRoaXMuRElTUExBWV9MRU5HVEg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGVzIHRvIGEgZ2l2ZW4gcGFnZS5cbiAgICogdXBkYXRlcyB0aGUgZGlzcGxheWluZyBwYWdlIG51bWJlcnMgYW5kIHRoZSBjdXJyZW50IG51bWJlci5cbiAgICogQHBhcmFtIHBhZ2VOdW1iZXIgLSBUaGUgcGFnZSBudW1iZXIgdG8gbmF2aWdhdGUgdG9cbiAgICovXG4gIG5hdmlnYXRlUGFnZShwYWdlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBpZiAocGFnZU51bWJlciA+PSAwICYmIHBhZ2VOdW1iZXIgPD0gdGhpcy50b3RhbFBhZ2VzIC0gMSkge1xuICAgICAgdGhpcy5zaG91bGRTaG93TG9hZGVyKHBhZ2VOdW1iZXIpICYmIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UocGFnZU51bWJlcik7XG4gICAgICAvLyBBZGQgMSBiZWNhdXNlIGFnLWdyaWQgQVBJIHdvcmtzIHdpdGggZmlyc3QgaW5kZXggMFxuICAgICAgY29uc3QgZGlzcGxheU51bWJlciA9IHBhZ2VOdW1iZXIgKyAxO1xuICAgICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgPSBkaXNwbGF5TnVtYmVyO1xuXG4gICAgICBpZiAodGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMubGVuZ3RoID09PSAwIHx8ICF0aGlzLnBhZ2VzRml0Vmlldykge1xuICAgICAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IHRoaXMuZ2V0UGFnZXMoZGlzcGxheU51bWJlcik7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCB0aGUgZGlzcGxheWluZyByb3dzIHJhbmdlXG4gICAgICB0aGlzLnNldFJvd3NEaXNwbGF5UmFuZ2UoZGlzcGxheU51bWJlcik7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVGaXJzdFBhZ2UoKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UoMCk7XG4gIH1cblxuICBuYXZpZ2F0ZU5leHRQYWdlKCkge1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlKTtcbiAgfVxuXG4gIG5hdmlnYXRlUHJldlBhZ2UoKSB7XG4gICAgLyoqIGFnLWdyaWQgQVBJIHdvcmtzIHdpdGggZmlyc3QgaW5kZXggMCBzbyB3ZSBuZWVkIHRvIHJlZHVjZSAyIGluc3RlYWQgb2Ygb25lICovXG4gICAgY29uc3QgcHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSAtIDI7XG4gICAgdGhpcy5uYXZpZ2F0ZVBhZ2UocHJldmlvdXNQYWdlSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZXMgdGhlIGRpc3BsYXlpbmcgcGFnZSBudW1iZXJzIHRvIHNob3cgdGhlIG5leHQgbnVtYmVycyBzZXRcbiAgICovXG4gIHNob3dOZXh0QmF0Y2goKSB7XG4gICAgY29uc3QgYW5jaG9yID0gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXNbMF0gKyB0aGlzLl9wYWdlc0luVmlldyArIHRoaXMucGFnZXNPblNpZGVzO1xuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gdGhpcy5nZXRQYWdlcyhhbmNob3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZXMgdGhlIGRpc3BsYXlpbmcgcGFnZSBudW1iZXJzIHRvIHNob3cgdGhlIHByZXZpb3VzIG51bWJlcnMgc2V0XG4gICAqL1xuICBzaG93UHJldmlvdXNCYXRjaCgpIHtcbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlc1swXSAtIHRoaXMuX3BhZ2VzSW5WaWV3ICsgdGhpcy5wYWdlc09uU2lkZXM7XG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSB0aGlzLmdldFBhZ2VzKGFuY2hvcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRyYWNrQnkgZnVuY3Rpb24gZm9yIHRoZSBuZ0ZvclxuICAgKiBAcGFyYW0gaW5kZXggLSBjdXJyZW50IGl0ZW0gaW5kZXhcbiAgICogQHBhcmFtIHBhZ2UgLSB0aGUgY3VycmVudCBpdGVtJ3MgcGFnZSBudW1iZXJcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgdHJhY2tCeVBhZ2UoaW5kZXg6IG51bWJlciwgcGFnZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICB0b2dnbGVHcm91cHNTdGF0ZSgpIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPyB0aGlzLmdyaWRBcGkuY29sbGFwc2VBbGwoKSA6IHRoaXMuZ3JpZEFwaS5leHBhbmRBbGwoKTtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xuICB9XG5cbiAgYXV0b0ZpdEdyaWQodHlwZTogJ2NvbnRhaW5lcicgfCAnY29udGVudCcpIHtcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmZpdEdyaWQodHlwZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJvd3MgZGlzcGxheSBzdHJpbmdcbiAgICogQHBhcmFtIGRpc3BsYXlOdW1iZXIgLSBUaGUgY3VycmVudCBwYWdlIG51bWJlciAoc3RhcnRpbmcgaW5kZXggMSlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2V0Um93c0Rpc3BsYXlSYW5nZShkaXNwbGF5TnVtYmVyKTogdm9pZCB7XG4gICAgLyoqIERlY3JlYXNlIGJ5IDEgYmVjYXVzZSBhZy1ncmlkIEFQSSB3b3JrcyB3aXRoIGZpcnN0IGluZGV4IDAgKi9cbiAgICBjb25zdCBwYWdlTnVtYmVyID0gZGlzcGxheU51bWJlciAtIDE7XG4gICAgY29uc3QgZmlyc3RSb3dJbmRleCA9IDEgKyBwYWdlTnVtYmVyICogdGhpcy5yb3dzUGVyUGFnZTtcbiAgICBjb25zdCBsYXN0Um93ID0gKHBhZ2VOdW1iZXIgKyAxKSAqIHRoaXMucm93c1BlclBhZ2U7XG4gICAgY29uc3QgbGFzdFJvd0luZGV4ID0gdGhpcy5yb3dDb3VudCA+IGxhc3RSb3cgPyBsYXN0Um93IDogdGhpcy5yb3dDb3VudDtcbiAgICB0aGlzLnJvd3NSYW5nZSA9XG4gICAgICB0aGlzLnJvd0NvdW50ID4gMFxuICAgICAgICA/IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5pdGVtc1JhbmdlJywge1xuICAgICAgICAgICAgcmFuZ2U6IGAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGZpcnN0Um93SW5kZXgpfSAtICR7dGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0obGFzdFJvd0luZGV4KX1gLFxuICAgICAgICAgICAgbnVtYmVyOiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh0aGlzLnJvd0NvdW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIDogdGhpcy50cmFuc2xhdGUudHJhbnNmb3JtKCdjb3JlLm51bWJlck9mSXRlbXMnLCB7IG51bWJlcjogMCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgbnVtYmVyIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBkaXNwbGF5aW5nIG51bWJlcnMuXG4gICAqIEBwYXJhbSBhbmNob3IgLSBUaGUgbnVtYmVyIHRvIHVzZSBhcyBhbiBhbmNob3IgZm9yIHRoZSBjYWxjdWxhdGlvbnMuXG4gICAqIEByZXR1cm4ge251bWJlcltdfSAtIEFuIGFycmF5IG9mIHRoZSBuZXcgbnVtYmVycyB0byBkaXNwbGF5XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGdldFBhZ2VzKGFuY2hvcjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHBhZ2VzVG9EaXNwbGF5ID0gW107XG4gICAgLy8gaW5kaWNhdGVzIHJhdGhlciB0aGUgdGFibGUgaGFzIG1vcmUgcGFnZXMgdGhhbiB0aGUgZGlzcGxheSBsZW5ndGgsIHdlIGFkZCAxIGJlY2F1c2Ugb2ZcbiAgICAvLyBhIGxvZ2ljIHRoYXQgc2F5cyB0aGF0IGlmIHlvdXIgY3VycmVudCB2aWV3IGlzIDEgbnVtYmVyIGF3YXkgZnJvbSB0aGUgbGFzdCBwYWdlXG4gICAgLy8gZGlzcGxheSBoaW0gYXMgd2VsbC5cbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93TGFzdFBhZ2UgPSAhdGhpcy5wYWdlc0ZpdFZpZXcgJiYgYW5jaG9yICsgdGhpcy5wYWdlc09uU2lkZXMgPCB0aGlzLnRvdGFsUGFnZXM7XG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0ZpcnN0RWxsaXBzaXMgPSAhdGhpcy5wYWdlc0ZpdFZpZXcgJiYgYW5jaG9yIC0gdGhpcy5wYWdlc09uU2lkZXMgPiAxO1xuXG4gICAgLy8gc2V0IHRoZSBmaXJzdCBudW1iZXIgdG8gYmUgZGlzcGxheWVkXG4gICAgY29uc3QgZmlyc3ROdW1iZXIgPSB0aGlzLmdldEZpcnN0UGFnZU51bWJlcihhbmNob3IpO1xuICAgIGNvbnN0IGxvb3BMZW5ndGggPSB0aGlzLnBhZ2VzRml0VmlldyA/IHRoaXMudG90YWxQYWdlcyA6IHRoaXMuX3BhZ2VzSW5WaWV3O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbG9vcExlbmd0aDsgaSsrKSB7XG4gICAgICBwYWdlc1RvRGlzcGxheS5wdXNoKGZpcnN0TnVtYmVyICsgaSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBsYXN0IGRpc3BsYXllZCBudW1iZXIgaXMgMSBudW1iZXIgYmVmb3JlIHRoZSBsYXN0IHBhZ2UgZGlzcGxheSBoaW0gYXMgd2VsbFxuICAgIGlmICghdGhpcy5zbWFsbFZlcnNpb24gJiYgcGFnZXNUb0Rpc3BsYXlbbG9vcExlbmd0aCAtIDFdICsgMSA9PT0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICBwYWdlc1RvRGlzcGxheS5wdXNoKHRoaXMudG90YWxQYWdlcyk7XG4gICAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93TGFzdFBhZ2UgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhZ2VzVG9EaXNwbGF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGZpcnN0IG51bWJlciB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHBhZ2luYXRpb24gbmF2aWdhdGlvbiB2aWV3XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhbmNob3IgLSBUaGUgYW5jaG9yIGZvciB0aGUgY2FsY3VsYXRpb25zXG4gICAqIEByZXR1cm4ge251bWJlcn0gLSBUaGUgZmlyc3QgbnVtYmVyIHRvIGJlIGRpc3BsYXllZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaXJzdFBhZ2VOdW1iZXIoYW5jaG9yOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBmaXJzdE51bWJlciA9IGFuY2hvciAtIHRoaXMucGFnZXNPblNpZGVzO1xuICAgIC8vIElmIGluIHNtYWxsIHZlcnNpb24gc2hvdyBvbmx5IG5leHQgcGFnZSBzbyBzZXQgZmlyc3QgcGFnZSB0byBhbmNob3JcbiAgICBpZiAodGhpcy5zbWFsbFZlcnNpb24gJiYgYW5jaG9yID4gMSkge1xuICAgICAgaWYgKGFuY2hvciAhPT0gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICAgIGZpcnN0TnVtYmVyID0gYW5jaG9yO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dGaXJzdEVsbGlwc2lzKSB7XG4gICAgICBmaXJzdE51bWJlciA9IDE7XG4gICAgfSBlbHNlIGlmICghdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0xhc3RQYWdlKSB7XG4gICAgICBmaXJzdE51bWJlciA9IHRoaXMudG90YWxQYWdlcyAtICh0aGlzLl9wYWdlc0luVmlldyAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gZmlyc3ROdW1iZXI7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFNob3dMb2FkZXIocGFnZU51bWJlcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZXJ2ZXJTaWRlUGFnaW5hdGlvbiAmJiBpc05pbCh0aGlzLmdyaWRBcGkuZ2V0Q2FjaGVCbG9ja1N0YXRlKClbcGFnZU51bWJlcl0pO1xuICB9XG59XG4iXX0=
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1wYWdpbmF0aW9uL2dyaWQtcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBU3JDO0lBdURFLHVDQUNVLEdBQXNCLEVBQ3RCLFNBQStCLEVBQy9CLFNBQW9CLEVBQ3BCLFdBQXdCLEVBQ3hCLFVBQXVDLEVBQ3ZDLFdBQXdCO1FBTHhCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLGNBQVMs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QVU7Z0VBSzlCO0lBWlUsNkJBQTZCO1FBUHpDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSx5QkFBeUI7WUFDbkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07WUFDL0MsMjVJQUErQztZQUUvQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7O1NBQ3pCLENBQUM7eUNBeURlLGlCQUFpQjtZQUNYLG9CQUFvQjtZQUNwQixTQUFTO1lBQ1AsV0FBVztZQUNaLDJCQUEyQjtZQUMxQixXQUFXO09BN0R2Qiw2QkFBNkIsQ0F1VHpDO0lBQUQsb0NBQUM7Q0FBQSxBQXZURCxJQXVUQztTQXZUWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRBcGkgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBHcmlkUXVlcnkgfSBmcm9tICcuLi9ncmlkLXN0b3JlL2dyaWQucXVlcnknO1xuaW1wb3J0IHsgRGF0b0dyaWRDb250cm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzJztcbmltcG9ydCB7IERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdG9yZS9ncmlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IHRhcE9uY2UgfSBmcm9tICcuLi8uLi9yeC90YXAnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLWdyaWQtcGFnaW5hdGlvbi12MicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvR3JpZFBhZ2luYXRpb25WMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGlzIHNldHRlciBpcyB1c2VkIHRvIGFzc2lnbiB0aGUgbmF2aWdhdGlvbiBlbGVtZW50IHJlZiBhbmQgdG8gc2V0XG4gICAqIHRoZSBwYWdpbmF0aW9uIHNpemUgd2hlbiB0aGUgY29tcG9uZW50IHN0YXJ0c1xuICAgKiBAcGFyYW0ge0VsZW1lbnRSZWZ9IGNvbnRlbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ25hdmlnYXRpb24nLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzZXQgY29udGVudChjb250ZW50OiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uRWxlbWVudCA9IGNvbnRlbnQ7XG4gICAgaWYgKGNvbnRlbnQgJiYgdGhpcy5zbWFsbFZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlTmF2aWdhdGlvblNpemUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdGFibGVcbiAgcm93Q291bnQ6IG51bWJlcjtcbiAgcm93c1BlclBhZ2U6IG51bWJlcjtcbiAgLy8gd2hlbiB0aGUgd2lkZ2V0J3Mgd2lkdGggaXMgc21hbGxlciB0aGFuIFhTX0RJU1BMQVlfU0laRSBkaXNhYmxlIGdvIHRvIGZpcnN0L2xhc3QgYnV0dG9uc1xuICBkaXNhYmxlQnV0dG9uczogYm9vbGVhbiA9IG51bGw7XG4gIC8vIHdoZW4gdGhlIHdpZGdldCdzIHdpZHRoIGlzIHNtYWxsZXIgdGhhbiBTTUFMTF9ESVNQTEFZX1NJWkUgY2hhbmdlIHRvIHNtYWxsIHBhZ2luYXRpb24gdmlld1xuICBzbWFsbFZlcnNpb246IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgLy8gbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSB0YWJsZVxuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIC8vIFRoZSBkaXNwbGF5IHJvd3MgcmFuZ2VcbiAgcm93c1JhbmdlOiBzdHJpbmc7XG4gIC8vIG1hbmFnaW5nIG9iamVjdCBmb3IgdGhlIG5hdmlnYXRpb25cbiAgcGFnZU51bWJlcnNEaXNwbGF5ID0ge1xuICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgIHBhZ2VzOiBbXSxcbiAgICBzaG93Rmlyc3RFbGxpcHNpczogZmFsc2UsXG4gICAgc2hvd0xhc3RQYWdlOiBmYWxzZVxuICB9O1xuXG4gIC8vIFNob3cgZml0IGNlbGwgY29udGVudCBhbmQgY29sbGFwc2UvZXhwYW5kIHJvdyBncm91cHMgY29udHJvbHNcbiAgc2hvd0JvdHRvbUNvbnRyb2xzID0gZmFsc2U7XG4gIGlzRXhwYW5kZWQgPSB0cnVlO1xuICBoYXNSb3dHcm91cENvbHVtbnMgPSBmYWxzZTtcblxuICAvLyBob3cgbWFueSBudW1iZXJzIGFyZSBzaG93aW5nIG9uIHRoZSBzYW1lIHRpbWUgYmVzaWRlcyB0aGUgbGFzdCBwYWdlIG51bWJlclxuICBwcml2YXRlIF9wYWdlc0luVmlldzogbnVtYmVyO1xuICAvLyBUaGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBvbiBlYWNoIHNpZGUgb2YgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gIHByaXZhdGUgcGFnZXNPblNpZGVzOiBudW1iZXI7XG4gIC8vIGlmIHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIHRhYmxlIGZpdHMgdGhlIG51bWJlciBvZiBkaXNwbGF5aW5nIHBhZ2VzXG4gIHByaXZhdGUgcGFnZXNGaXRWaWV3OiBib29sZWFuO1xuICAvLyBob3cgbWFueSBudW1iZXJzIHRvIHNob3cgb24gZWFjaCBzaWRlIGJlc2lkZXMgdGhlIHNlbGVjdGVkIG51bWJlclxuICBwcml2YXRlIG5hdmlnYXRpb25FbGVtZW50OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGlzU2VydmVyU2lkZVBhZ2luYXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSBncmlkQXBpOiBHcmlkQXBpO1xuICAvLyBUaGUgbnVtYmVyIG9mIHBhZ2VzIGRpc3BsYXllZCBpbiB0aGUgbmF2aWdhdGlvbiBwYW5lbCBmb3IgZWFjaCB2aWV3IGFzIGRlZmluZWQgYnkgcHJvZHVjdC5cbiAgcHJpdmF0ZSByZWFkb25seSBNSU5JX0RJU1BMQVlfTEVOR1RIOiBudW1iZXIgPSAyO1xuICBwcml2YXRlIHJlYWRvbmx5IERJU1BMQVlfTEVOR1RIOiBudW1iZXIgPSA1O1xuICAvLyBXaWRnZXQncyB3aWR0aCB0aGUgZGV0ZXJtaW5lcyB0aGUgcGFnaW5hdGlvbiB2aWV3IHR5cGUgWyBzbWFsbCwgeHNdIGFzIGRlZmluZWQgYnkgcHJvZHVjdC5cbiAgcHJpdmF0ZSByZWFkb25seSBYU19ESVNQTEFZX1NJWkU6IG51bWJlciA9IDE2MDtcbiAgcHJpdmF0ZSByZWFkb25seSBTTUFMTF9ESVNQTEFZX1NJWkU6IG51bWJlciA9IDM5MDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JpZFF1ZXJ5OiBHcmlkUXVlcnksXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250cm9sbGVyOiBEYXRvR3JpZENvbnRyb2xsZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGVcbiAgKSB7fVxuXG4gIGdldCBwcmV2UGFnZURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9PT0gMTtcbiAgfVxuXG4gIGdldCBuZXh0UGFnZURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSA9PT0gdGhpcy50b3RhbFBhZ2VzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ncmlkUXVlcnlcbiAgICAgIC53YWl0Rm9yR3JpZCgoKSA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0aGlzLmdyaWRRdWVyeS5ncmlkUmVmLmZpbHRlckNoYW5nZWQsXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5yb3dHcm91cE9wZW5lZC5waXBlKHN0YXJ0V2l0aCh0cnVlKSksXG4gICAgICAgICAgdGhpcy5ncmlkUXVlcnkuZ3JpZFJlZi5leHBhbmRPckNvbGxhcHNlQWxsLnBpcGUoc3RhcnRXaXRoKHRydWUpKVxuICAgICAgICBdKVxuICAgICAgKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25Hb1RvUGFnZSgwKTtcbiAgICAgICAgdGhpcy5pbml0UGFnaW5hdGlvbigpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmdyaWRRdWVyeS5ncmlkUmVhZHkkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCByb3dHcm91cENvbHVtbnMgPSB0aGlzLmdyaWRRdWVyeS5hcGkuY29sdW1ucy5nZXRSb3dHcm91cENvbHVtbnMoKTtcblxuICAgICAgICAgIHRoaXMuZ3JpZEFwaSA9IHRoaXMuZ3JpZFF1ZXJ5LmFwaS5ncmlkO1xuICAgICAgICAgIHRoaXMuc2hvd0JvdHRvbUNvbnRyb2xzID0gdGhpcy5ncmlkUXVlcnkuZ2V0R3JpZE9wdGlvbnMoKS5zaG93Qm90dG9tQ29udHJvbHM7XG4gICAgICAgICAgdGhpcy5oYXNSb3dHcm91cENvbHVtbnMgPSByb3dHcm91cENvbHVtbnMgJiYgcm93R3JvdXBDb2x1bW5zLmxlbmd0aCA+IDA7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTZXJ2ZXJTaWRlUGFnaW5hdGlvbiA9IHRoaXMuZ3JpZFF1ZXJ5LmlzU2VydmVyU2lkZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc1NlcnZlclNpZGVQYWdpbmF0aW9uID8gdGhpcy5ncmlkUXVlcnkuc2VydmVyRGF0YUxvYWRlZCQgOiB0aGlzLmdyaWRRdWVyeS5yb3dEYXRhQ2hhbmdlZCQ7XG4gICAgICAgIH0pLFxuICAgICAgICB0aHJvdHRsZVRpbWUoMTAwKSxcbiAgICAgICAgdGFwT25jZSgoKSA9PiB0aGlzLmluaXRQYWdpbmF0aW9uKCkpLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBwYWdpbmF0aW9uUGFnZSA9IDEgfTogRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50KSA9PiB7XG4gICAgICAgIC8qKiAgQWcgZ3JpZCBpbmRleCBpcyBmcm9tIDAsIGJ1dCB0aGUgaW5kZXggZmlyZWQgZnJvbSB0aGUgZXZlbnQgc3RhcnQgZnJvbSAxKi9cbiAgICAgICAgdGhpcy5pbml0UGFnaW5hdGlvbihwYWdpbmF0aW9uUGFnZSAtIDEpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjYWxjdWxhdGUgdGhlIHJvdyBjb3VudCBhbmQgcGFnZSBsZW5ndGhzXG4gICAqL1xuICBjYWxjdWxhdGVSb3dzQ291bnQodG90YWxSb3dzOiBudW1iZXIpIHtcbiAgICB0aGlzLnRvdGFsUGFnZXMgPSB0b3RhbFJvd3MgPyBNYXRoLmNlaWwodG90YWxSb3dzIC8gdGhpcy5yb3dzUGVyUGFnZSkgOiB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldFRvdGFsUGFnZXMoKTtcbiAgICB0aGlzLnJvd0NvdW50ID0gdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRSb3dDb3VudCgpO1xuICAgIHRoaXMuc2V0Um93c0Rpc3BsYXlSYW5nZSh0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgaW5pdFBhZ2luYXRpb24ocGFnZU51bWJlciA9IDApIHtcbiAgICBjb25zdCB7IHRvdGFsUm93cywgZW5hYmxlZCB9ID0gdGhpcy5ncmlkUXVlcnkuc2VydmVyU2lkZUNvbmZpZztcbiAgICBpZiAoZW5hYmxlZCAmJiBpc05pbCh0b3RhbFJvd3MpKSByZXR1cm47XG4gICAgLyoqIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcGFnZXMgc3RhcnRpbmcgZnJvbSAxICovXG4gICAgdGhpcy5yb3dzUGVyUGFnZSA9IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0UGFnZVNpemUoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVJvd3NDb3VudCh0b3RhbFJvd3MpO1xuICAgIC8qKiBzZXQgdGhlIGluaXQgdmFsdWUgb2YgdGhlIHBhZ2luYXRpb24gdmlldyB0byBub3JtYWwgc2l6ZSAqL1xuICAgIHRoaXMucGFnZXNJblZpZXcgPSB0aGlzLkRJU1BMQVlfTEVOR1RIO1xuICAgIC8qKiBjdXJyZW50IHBhZ2UgaW5kZXggc3RhcnRzIGZyb20gMCAqL1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKHBhZ2VOdW1iZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbnVtYmVyIG9mIHBhZ2UgbnVtYmVycyBzaG93aW5nIGF0IHRoZSBzYW1lIHRpbWUgaW4gdGhlIG5hdmlnYXRpb25cbiAgICogcGFuZWwgJiB1cGRhdGUgdGhlIG51bWJlciBvZiBwYWdlcyBkaXNwbGF5ZWQgb24gZWFjaCBzaWRlIG9mIHRoZSBzZWxlY3RlZCBwYWdlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbmV3TnVtYmVyc0xlbmd0aCAtIFRoZSBuZXcgbGVuZ3RoIG9mIHRoZSBkaXNwbGF5aW5nIG51bWJlcnNcbiAgICovXG4gIHNldCBwYWdlc0luVmlldyhuZXdOdW1iZXJzTGVuZ3RoOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlc0luVmlldyA9IG5ld051bWJlcnNMZW5ndGg7XG4gICAgdGhpcy5wYWdlc09uU2lkZXMgPSBNYXRoLmZsb29yKHRoaXMuX3BhZ2VzSW5WaWV3IC8gMik7XG4gICAgdGhpcy5wYWdlc0ZpdFZpZXcgPSB0aGlzLl9wYWdlc0luVmlldyArIDEgPj0gdGhpcy50b3RhbFBhZ2VzO1xuICAgIC8vIGludmFsaWRhdGUgZGlzcGxheWluZyBwYWdlcyB1cG9uIHJlc2l6ZVxuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gW107XG4gIH1cblxuICAvKiogVE9ETyBUaGlzIGlzIG5vdCBsaXN0ZW5pbmcgdG8gc2l6ZSBjaGFuZ2VzICovXG4gIGNhbGN1bGF0ZU5hdmlnYXRpb25TaXplKCkge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25FbGVtZW50KSB7XG4gICAgICBjb25zdCBlbGVtZW50V2lkdGggPSB0aGlzLm5hdmlnYXRpb25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMgPSBlbGVtZW50V2lkdGggPCB0aGlzLlhTX0RJU1BMQVlfU0laRTtcbiAgICAgIGlmIChlbGVtZW50V2lkdGggPCB0aGlzLlNNQUxMX0RJU1BMQVlfU0laRSkge1xuICAgICAgICBpZiAodGhpcy5fcGFnZXNJblZpZXcgIT09IHRoaXMuTUlOSV9ESVNQTEFZX0xFTkdUSCkge1xuICAgICAgICAgIHRoaXMuc21hbGxWZXJzaW9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBhZ2VzSW5WaWV3ID0gdGhpcy5NSU5JX0RJU1BMQVlfTEVOR1RIO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5fcGFnZXNJblZpZXcgIT09IHRoaXMuRElTUExBWV9MRU5HVEgpIHtcbiAgICAgICAgICB0aGlzLnNtYWxsVmVyc2lvbiA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucGFnZXNJblZpZXcgPSB0aGlzLkRJU1BMQVlfTEVOR1RIO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byBhIGdpdmVuIHBhZ2UuXG4gICAqIHVwZGF0ZXMgdGhlIGRpc3BsYXlpbmcgcGFnZSBudW1iZXJzIGFuZCB0aGUgY3VycmVudCBudW1iZXIuXG4gICAqIEBwYXJhbSBwYWdlTnVtYmVyIC0gVGhlIHBhZ2UgbnVtYmVyIHRvIG5hdmlnYXRlIHRvXG4gICAqL1xuICBuYXZpZ2F0ZVBhZ2UocGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgaWYgKHBhZ2VOdW1iZXIgPj0gMCAmJiBwYWdlTnVtYmVyIDw9IHRoaXMudG90YWxQYWdlcyAtIDEpIHtcbiAgICAgIHRoaXMuc2hvdWxkU2hvd0xvYWRlcihwYWdlTnVtYmVyKSAmJiB0aGlzLmdyaWRTZXJ2aWNlLnNldExvYWRpbmcodHJ1ZSk7XG4gICAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9QYWdlKHBhZ2VOdW1iZXIpO1xuICAgICAgLy8gQWRkIDEgYmVjYXVzZSBhZy1ncmlkIEFQSSB3b3JrcyB3aXRoIGZpcnN0IGluZGV4IDBcbiAgICAgIGNvbnN0IGRpc3BsYXlOdW1iZXIgPSBwYWdlTnVtYmVyICsgMTtcbiAgICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LmN1cnJlbnRQYWdlID0gZGlzcGxheU51bWJlcjtcblxuICAgICAgaWYgKHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5wYWdlc0ZpdFZpZXcpIHtcbiAgICAgICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXMgPSB0aGlzLmdldFBhZ2VzKGRpc3BsYXlOdW1iZXIpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgdGhlIGRpc3BsYXlpbmcgcm93cyByYW5nZVxuICAgICAgdGhpcy5zZXRSb3dzRGlzcGxheVJhbmdlKGRpc3BsYXlOdW1iZXIpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIG5hdmlnYXRlRmlyc3RQYWdlKCkge1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKDApO1xuICB9XG5cbiAgbmF2aWdhdGVOZXh0UGFnZSgpIHtcbiAgICB0aGlzLm5hdmlnYXRlUGFnZSh0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5jdXJyZW50UGFnZSk7XG4gIH1cblxuICBuYXZpZ2F0ZVByZXZQYWdlKCkge1xuICAgIC8qKiBhZy1ncmlkIEFQSSB3b3JrcyB3aXRoIGZpcnN0IGluZGV4IDAgc28gd2UgbmVlZCB0byByZWR1Y2UgMiBpbnN0ZWFkIG9mIG9uZSAqL1xuICAgIGNvbnN0IHByZXZpb3VzUGFnZUluZGV4ID0gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuY3VycmVudFBhZ2UgLSAyO1xuICAgIHRoaXMubmF2aWdhdGVQYWdlKHByZXZpb3VzUGFnZUluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVzIHRoZSBkaXNwbGF5aW5nIHBhZ2UgbnVtYmVycyB0byBzaG93IHRoZSBuZXh0IG51bWJlcnMgc2V0XG4gICAqL1xuICBzaG93TmV4dEJhdGNoKCkge1xuICAgIGNvbnN0IGFuY2hvciA9IHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzWzBdICsgdGhpcy5fcGFnZXNJblZpZXcgKyB0aGlzLnBhZ2VzT25TaWRlcztcbiAgICB0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5wYWdlcyA9IHRoaXMuZ2V0UGFnZXMoYW5jaG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVzIHRoZSBkaXNwbGF5aW5nIHBhZ2UgbnVtYmVycyB0byBzaG93IHRoZSBwcmV2aW91cyBudW1iZXJzIHNldFxuICAgKi9cbiAgc2hvd1ByZXZpb3VzQmF0Y2goKSB7XG4gICAgY29uc3QgYW5jaG9yID0gdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkucGFnZXNbMF0gLSB0aGlzLl9wYWdlc0luVmlldyArIHRoaXMucGFnZXNPblNpZGVzO1xuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnBhZ2VzID0gdGhpcy5nZXRQYWdlcyhhbmNob3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFja0J5IGZ1bmN0aW9uIGZvciB0aGUgbmdGb3JcbiAgICogQHBhcmFtIGluZGV4IC0gY3VycmVudCBpdGVtIGluZGV4XG4gICAqIEBwYXJhbSBwYWdlIC0gdGhlIGN1cnJlbnQgaXRlbSdzIHBhZ2UgbnVtYmVyXG4gICAqIEByZXR1cm4ge251bWJlcn1cbiAgICovXG4gIHRyYWNrQnlQYWdlKGluZGV4OiBudW1iZXIsIHBhZ2U6IG51bWJlcikge1xuICAgIHJldHVybiBwYWdlO1xuICB9XG5cbiAgdG9nZ2xlR3JvdXBzU3RhdGUoKSB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID8gdGhpcy5ncmlkQXBpLmNvbGxhcHNlQWxsKCkgOiB0aGlzLmdyaWRBcGkuZXhwYW5kQWxsKCk7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZDtcbiAgfVxuXG4gIGF1dG9GaXRHcmlkKHR5cGU6ICdjb250YWluZXInIHwgJ2NvbnRlbnQnKSB7XG4gICAgdGhpcy5ncmlkU2VydmljZS5maXRHcmlkKHR5cGUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByb3dzIGRpc3BsYXkgc3RyaW5nXG4gICAqIEBwYXJhbSBkaXNwbGF5TnVtYmVyIC0gVGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgKHN0YXJ0aW5nIGluZGV4IDEpXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFJvd3NEaXNwbGF5UmFuZ2UoZGlzcGxheU51bWJlcik6IHZvaWQge1xuICAgIC8qKiBEZWNyZWFzZSBieSAxIGJlY2F1c2UgYWctZ3JpZCBBUEkgd29ya3Mgd2l0aCBmaXJzdCBpbmRleCAwICovXG4gICAgY29uc3QgcGFnZU51bWJlciA9IGRpc3BsYXlOdW1iZXIgLSAxO1xuICAgIGNvbnN0IGZpcnN0Um93SW5kZXggPSAxICsgcGFnZU51bWJlciAqIHRoaXMucm93c1BlclBhZ2U7XG4gICAgY29uc3QgbGFzdFJvdyA9IChwYWdlTnVtYmVyICsgMSkgKiB0aGlzLnJvd3NQZXJQYWdlO1xuICAgIGNvbnN0IGxhc3RSb3dJbmRleCA9IHRoaXMucm93Q291bnQgPiBsYXN0Um93ID8gbGFzdFJvdyA6IHRoaXMucm93Q291bnQ7XG4gICAgdGhpcy5yb3dzUmFuZ2UgPVxuICAgICAgdGhpcy5yb3dDb3VudCA+IDBcbiAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oJ2NvcmUuaXRlbXNSYW5nZScsIHtcbiAgICAgICAgICAgIHJhbmdlOiBgJHt0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShmaXJzdFJvd0luZGV4KX0gLSAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGxhc3RSb3dJbmRleCl9YCxcbiAgICAgICAgICAgIG51bWJlcjogdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odGhpcy5yb3dDb3VudClcbiAgICAgICAgICB9KVxuICAgICAgICA6IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5udW1iZXJPZkl0ZW1zJywgeyBudW1iZXI6IDAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIG51bWJlciBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgZGlzcGxheWluZyBudW1iZXJzLlxuICAgKiBAcGFyYW0gYW5jaG9yIC0gVGhlIG51bWJlciB0byB1c2UgYXMgYW4gYW5jaG9yIGZvciB0aGUgY2FsY3VsYXRpb25zLlxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gLSBBbiBhcnJheSBvZiB0aGUgbmV3IG51bWJlcnMgdG8gZGlzcGxheVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYWdlcyhhbmNob3I6IG51bWJlcik6IG51bWJlcltdIHtcbiAgICBjb25zdCBwYWdlc1RvRGlzcGxheSA9IFtdO1xuICAgIC8vIGluZGljYXRlcyByYXRoZXIgdGhlIHRhYmxlIGhhcyBtb3JlIHBhZ2VzIHRoYW4gdGhlIGRpc3BsYXkgbGVuZ3RoLCB3ZSBhZGQgMSBiZWNhdXNlIG9mXG4gICAgLy8gYSBsb2dpYyB0aGF0IHNheXMgdGhhdCBpZiB5b3VyIGN1cnJlbnQgdmlldyBpcyAxIG51bWJlciBhd2F5IGZyb20gdGhlIGxhc3QgcGFnZVxuICAgIC8vIGRpc3BsYXkgaGltIGFzIHdlbGwuXG4gICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0xhc3RQYWdlID0gIXRoaXMucGFnZXNGaXRWaWV3ICYmIGFuY2hvciArIHRoaXMucGFnZXNPblNpZGVzIDwgdGhpcy50b3RhbFBhZ2VzO1xuICAgIHRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dGaXJzdEVsbGlwc2lzID0gIXRoaXMucGFnZXNGaXRWaWV3ICYmIGFuY2hvciAtIHRoaXMucGFnZXNPblNpZGVzID4gMTtcblxuICAgIC8vIHNldCB0aGUgZmlyc3QgbnVtYmVyIHRvIGJlIGRpc3BsYXllZFxuICAgIGNvbnN0IGZpcnN0TnVtYmVyID0gdGhpcy5nZXRGaXJzdFBhZ2VOdW1iZXIoYW5jaG9yKTtcbiAgICBjb25zdCBsb29wTGVuZ3RoID0gdGhpcy5wYWdlc0ZpdFZpZXcgPyB0aGlzLnRvdGFsUGFnZXMgOiB0aGlzLl9wYWdlc0luVmlldztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvb3BMZW5ndGg7IGkrKykge1xuICAgICAgcGFnZXNUb0Rpc3BsYXkucHVzaChmaXJzdE51bWJlciArIGkpO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgbGFzdCBkaXNwbGF5ZWQgbnVtYmVyIGlzIDEgbnVtYmVyIGJlZm9yZSB0aGUgbGFzdCBwYWdlIGRpc3BsYXkgaGltIGFzIHdlbGxcbiAgICBpZiAoIXRoaXMuc21hbGxWZXJzaW9uICYmIHBhZ2VzVG9EaXNwbGF5W2xvb3BMZW5ndGggLSAxXSArIDEgPT09IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgcGFnZXNUb0Rpc3BsYXkucHVzaCh0aGlzLnRvdGFsUGFnZXMpO1xuICAgICAgdGhpcy5wYWdlTnVtYmVyc0Rpc3BsYXkuc2hvd0xhc3RQYWdlID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBwYWdlc1RvRGlzcGxheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBudW1iZXIgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwYWdpbmF0aW9uIG5hdmlnYXRpb24gdmlld1xuICAgKiBAcGFyYW0ge251bWJlcn0gYW5jaG9yIC0gVGhlIGFuY2hvciBmb3IgdGhlIGNhbGN1bGF0aW9uc1xuICAgKiBAcmV0dXJuIHtudW1iZXJ9IC0gVGhlIGZpcnN0IG51bWJlciB0byBiZSBkaXNwbGF5ZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0Rmlyc3RQYWdlTnVtYmVyKGFuY2hvcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgZmlyc3ROdW1iZXIgPSBhbmNob3IgLSB0aGlzLnBhZ2VzT25TaWRlcztcbiAgICAvLyBJZiBpbiBzbWFsbCB2ZXJzaW9uIHNob3cgb25seSBuZXh0IHBhZ2Ugc28gc2V0IGZpcnN0IHBhZ2UgdG8gYW5jaG9yXG4gICAgaWYgKHRoaXMuc21hbGxWZXJzaW9uICYmIGFuY2hvciA+IDEpIHtcbiAgICAgIGlmIChhbmNob3IgIT09IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgICBmaXJzdE51bWJlciA9IGFuY2hvcjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBhZ2VOdW1iZXJzRGlzcGxheS5zaG93Rmlyc3RFbGxpcHNpcykge1xuICAgICAgZmlyc3ROdW1iZXIgPSAxO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMucGFnZU51bWJlcnNEaXNwbGF5LnNob3dMYXN0UGFnZSkge1xuICAgICAgZmlyc3ROdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXMgLSAodGhpcy5fcGFnZXNJblZpZXcgLSAxKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpcnN0TnVtYmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRTaG93TG9hZGVyKHBhZ2VOdW1iZXI6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU2VydmVyU2lkZVBhZ2luYXRpb24gJiYgaXNOaWwodGhpcy5ncmlkQXBpLmdldENhY2hlQmxvY2tTdGF0ZSgpW3BhZ2VOdW1iZXJdKTtcbiAgfVxufVxuIl19
|
|
@@ -31,7 +31,6 @@ import { zIndexPlease } from '../internal/z-index';
|
|
|
31
31
|
import { isTestEnv } from '../istest-env';
|
|
32
32
|
import { isMobile } from '../utils/user-agent';
|
|
33
33
|
import { setDimensions } from '../internal/custom-dimensions';
|
|
34
|
-
import { DatoTriggerSingle } from './trigger-single/trigger-single.component';
|
|
35
34
|
var valueAccessor = {
|
|
36
35
|
provide: NG_VALUE_ACCESSOR,
|
|
37
36
|
useExisting: forwardRef(function () { return DatoSelectComponent; }),
|
|
@@ -915,10 +914,6 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
915
914
|
{ type: undefined, decorators: [{ type: Attribute, args: ['datoSize',] }] },
|
|
916
915
|
{ type: String, decorators: [{ type: Attribute, args: ['width',] }] }
|
|
917
916
|
]; };
|
|
918
|
-
__decorate([
|
|
919
|
-
ViewChild('datoTriggerSingle'),
|
|
920
|
-
__metadata("design:type", DatoTriggerSingle)
|
|
921
|
-
], DatoSelectComponent.prototype, "datoTriggerSingle", void 0);
|
|
922
917
|
__decorate([
|
|
923
918
|
ViewChild('dropdown'),
|
|
924
919
|
__metadata("design:type", TemplateRef)
|
|
@@ -1085,7 +1080,7 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
1085
1080
|
DatoSelectComponent = __decorate([
|
|
1086
1081
|
Component({
|
|
1087
1082
|
selector: 'dato-select',
|
|
1088
|
-
template: "<section class=\"dato-select__trigger\" [class.dato-select--naked]=\"_naked\" [class.dato-select--disabled]=\"_disabled\">\n\n <div class=\"dato-select__single\" *ngIf=\"isSingle\" [ngClass]=\"_dropdownClass\">\n <dato-input [class.force-hide]=\"(!open && isCombo) || !isCombo\" [placeholder]=\"searchPlaceholder | translate\"\n (keyup)=\"keyup($event)\" [isFocused]=\"_focus\" [isLoading]=\"isLoading\" [formControl]=\"searchControl\" type=\"search\">\n </dato-input>\n\n <dato-trigger-single
|
|
1083
|
+
template: "<section class=\"dato-select__trigger\" [class.dato-select--naked]=\"_naked\" [class.dato-select--disabled]=\"_disabled\">\n\n <div class=\"dato-select__single\" *ngIf=\"isSingle\" [ngClass]=\"_dropdownClass\">\n <dato-input [class.force-hide]=\"(!open && isCombo) || !isCombo\" [placeholder]=\"searchPlaceholder | translate\"\n (keyup)=\"keyup($event)\" [isFocused]=\"_focus\" [isLoading]=\"isLoading\" [formControl]=\"searchControl\" type=\"search\">\n </dato-input>\n\n <dato-trigger-single [loadingTemplate]=\"loadingTemplate\" [active]=\"active\" datoErrorValidationBorderAnchor tabindex=\"0\" [labelKey]=\"labelKey\"\n [context]=\"_model[0]\" [class.force-hide]=\"open && isCombo\" [placeholder]=\"placeholder | translate\"\n class=\"ontop-overlay\" (keydown)=\"preventBodyScroll($event)\" (keyup)=\"keyup($event)\" (click)=\"openDropdown()\">\n </dato-trigger-single>\n </div>\n\n <dato-trigger-multi [loadingTemplate]=\"loadingTemplate\" [options]=\"_model\" datoErrorValidationBorderAnchor [control]=\"searchControl\"\n [placeholder]=\"placeholder | translate\" [labelKey]=\"labelKey\" [idKey]=\"idKey\" (keyup)=\"keyup($event)\"\n [isLoading]=\"isLoading\" [keepFocus]=\"keepFocus\" [limitTo]=\"limitTo\" [clickOutside]=\"_clickOutside\" [isSortable]=\"isSortable\"\n [selectAllChipTxt]=\"selectAllChipTxt\"\n [showSelectAllChip]=\"selectAllChipTxt && showSelectAllChip\"\n (unselectAll)=\"checkAll(false)\"\n (removeOption)=\"removeOption($event)\" (reorderOptions)=\"reorderOptions($event)\" *ngIf=\"isMulti\"\n (click)=\"openDropdown($event)\"></dato-trigger-multi>\n\n</section>\n\n<ng-template #dropdown>\n <section class=\"dato-select__dropdown-container\" tabindex=\"0\" (keyup)=\"keyup($event)\">\n\n <!-- HEADER -->\n\n <header class=\"dato-select__header dato-select__option dato-select__option--simple\" data-is-floating\n *ngIf=\"isMulti && allowSelectAll\" [class.force-hide]=\"_showEmptyResults\" [class.ml-10]=\"containsGroups\">\n <dato-checkbox [checked]=\"_isAllChecked\" (check)=\"checkAll($event)\"\n [indeterminatelyChecked]=\"_isIndeterminatelyChecked\">\n {{'core.select-all' | translate}}<span class=\"primary-300-color note-italic ml-5\">{{_count}}</span>\n </dato-checkbox>\n </header>\n\n <!-- END HEADER -->\n\n <!-- DROPDOWN -->\n\n <div class=\"dato-select__dropdown\">\n\n <ng-content></ng-content>\n\n <dato-select-empty [show]=\"_showEmptyResults\">{{_noItemsLabel}}</dato-select-empty>\n <div class=\"dato-select__option dato-select-infinite-spinner\" data-is-floating *ngIf=\"infiniteScrollLoading\">\n <span class=\"dato-input__spinner\"></span>\n </div>\n\n </div>\n\n <!-- END DROPDOWN -->\n\n\n <!-- FOOTER -->\n\n <footer class=\"dato-select__footer d-flex\" [class.with-actions]=\"_withActions\">\n\n <ng-content select=\"[datoSelectFooter]\"></ng-content>\n\n <ng-container *ngIf=\"_withActions\">\n <dato-link class=\"mr-20\" datoType=\"secondary\" (click)=\"close()\">Cancel</dato-link>\n <dato-button datoSize=\"sm\" (click)=\"save.emit(); close();\">Save</dato-button>\n </ng-container>\n\n </footer>\n\n <!-- END FOOTER -->\n\n </section>\n\n</ng-template>\n",
|
|
1089
1084
|
preserveWhitespaces: false,
|
|
1090
1085
|
providers: [valueAccessor, DatoOverlay],
|
|
1091
1086
|
encapsulation: ViewEncapsulation.None,
|
|
@@ -1103,4 +1098,4 @@ var DatoSelectComponent = /** @class */ (function (_super) {
|
|
|
1103
1098
|
return DatoSelectComponent;
|
|
1104
1099
|
}(BaseCustomControl));
|
|
1105
1100
|
export { DatoSelectComponent };
|
|
1106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBNEIsMkJBQTJCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxP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ZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlQ3VzdG9tQ29udHJvbCB9IGZyb20gJy4uL2N1c3RvbS1jb250cm9sL2Jhc2UtY3VzdG9tLWNvbnRyb2wnO1xuaW1wb3J0IHsgZGVmYXVsdE9wdGlvbnNEaXNwbGF5TGltaXQsIFNlbGVjdFR5cGUgfSBmcm9tICcuL3NlbGVjdC50eXBlcyc7XG5pbXBvcnQgeyBEYXRvT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vb3B0aW9ucy9vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFrZSwgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRGF0b1NlbGVjdEFjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4vc2VsZWN0LWFjdGl2ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0b1NlbGVjdFNlYXJjaFN0cmF0ZWd5LCBkZWZhdWx0Q2xpZW50U2VhcmNoU3RyYXRlZ3kgfSBmcm9tICcuL3NlYXJjaC5zdHJhdGVneSc7XG5pbXBvcnQgeyBjbG9zZXN0LCBxdWVyeSwgc2V0U3R5bGUgfSBmcm9tICcuLi9pbnRlcm5hbC9oZWxwZXJzJztcbmltcG9ydCB7IERhdG9PdmVybGF5LCBEYXRvVGVtcGxhdGVQb3J0YWwgfSBmcm9tICcuLi9hbmd1bGFyL292ZXJsYXknO1xuaW1wb3J0IHsgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBfc2Nyb2xsVG9PcHRpb24gfSBmcm9tICcuLi9vcHRpb25zL29wdGlvbnMtdXRpbHMnO1xuaW1wb3J0IHsgRGF0b1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBub3JtYWxpemVEYXRhIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGF0YS1ub3JtYWxpemF0aW9uJztcbmltcG9ydCB7IERhdG9BY2NvcmRpb25Db21wb25lbnQsIERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2FjY29yZGlvbi9wdWJsaWNfYXBpJztcbmltcG9ydCB7IERhdG9Hcm91cENvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbnMvZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RHcm91cENvbXBvbmVudCB9IGZyb20gJy4uL2xpc3QvbGlzdC50eXBlcyc7XG5pbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ25neC10YWtlLXVudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgaXNBcnJvd1VwRG93biwgaXNFbnRlciwgaXNFc2NhcGUgfSBmcm9tICcuLi9yeC9ldmVudHMnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIHNpemUgfSBmcm9tICcuLi91dGlscy9wdWJsaWNfYXBpJztcbmltcG9ydCB7IHpJbmRleFBsZWFzZSB9IGZyb20gJy4uL2ludGVybmFsL3otaW5kZXgnO1xuaW1wb3J0IHsgaXNUZXN0RW52IH0gZnJvbSAnLi4vaXN0ZXN0LWVudic7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uL3V0aWxzL3VzZXItYWdlbnQnO1xuaW1wb3J0IHsgUG9wcGVyT3B0aW9ucyB9IGZyb20gJy4uL3NlcnZpY2VzL3BvcHBlcic7XG5pbXBvcnQgeyBzZXREaW1lbnNpb25zIH0gZnJvbSAnLi4vaW50ZXJuYWwvY3VzdG9tLWRpbWVuc2lvbnMnO1xuaW1wb3J0IHsgRGF0b1RyaWdnZXJTaW5nbGUgfSBmcm9tICcuL3RyaWdnZXItc2luZ2xlL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudCc7XG5cbmNvbnN0IHZhbHVlQWNjZXNzb3IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRvU2VsZWN0Q29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBwcm92aWRlcnM6IFt2YWx1ZUFjY2Vzc29yLCBEYXRvT3ZlcmxheV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBleHBvcnRBczogJ2RhdG9TZWxlY3QnXG59KVxuZXhwb3J0IGNsYXNzIERhdG9TZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3VzdG9tQ29udHJvbFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2RhdG9UcmlnZ2VyU2luZ2xlJylcbiAgcHVibGljIGRhdG9UcmlnZ2VyU2luZ2xlOiBEYXRvVHJpZ2dlclNpbmdsZTtcblxuICAvKiogVGhlIGRyb3Bkb3duIGNvbnRhaW5lciBlbGVtZW50IHdoaWNoIGlzIHRoZSBwb3J0YWwgICoqL1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicpXG4gIGRyb3Bkb3duOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBUaGUgb3ZlcmxheSBvcmlnaW4gd2hpY2ggaXMgb25lIG9mIGRhdG8tdHJpZ2dlcnMgKiovXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlPcmlnaW4nKVxuICBvcmlnaW46IEVsZW1lbnRSZWY7XG5cbiAgLyoqIFF1ZXJ5TGlzdCBvZiBkYXRvT3B0aW9ucyBjaGlsZHJlbiAqL1xuICBAQ29udGVudENoaWxkcmVuKERhdG9PcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgb3B0aW9uczogUXVlcnlMaXN0PERhdG9PcHRpb25Db21wb25lbnQ+O1xuXG4gIC8qKiBRdWVyeUxpc3Qgb2YgZGF0b0FjY29yZGlvbkdyb3VwcyBjaGlsZHJlbiAqL1xuICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRGF0b0FjY29yZGlvbkNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgYWNjb3JkaW9uOiBRdWVyeUxpc3Q8RGF0b0FjY29yZGlvbkNvbXBvbmVudD47XG5cbiAgLyoqIFF1ZXJ5TGlzdCBvZiBkYXRvR3JvdXBzIGNoaWxkcmVuICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0b0dyb3VwQ29tcG9uZW50KVxuICBncm91cHM6IFF1ZXJ5TGlzdDxEYXRvR3JvdXBDb21wb25lbnQ+O1xuXG4gIC8qKiBBbGxvd2luZyBjdXN0b20gdGVtcGxhdGUgYnkgcGFzc2luZyAqZGF0b0FjdGl2ZSBkaXJlY3RpdmUgd2hpY2ggZ2V0cyB0aGUgYWN0aXZlIGFzIGNvbnRleHQgKi9cbiAgQENvbnRlbnRDaGlsZChEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlKVxuICBhY3RpdmU6IERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmU7XG5cbiAgLyoqIFRoZSBrZXkgdGhhdCBzdG9yZXMgdGhlIG9wdGlvbiBpZCAqL1xuICBASW5wdXQoKVxuICBpZEtleSA9ICdpZCc7XG5cbiAgLyoqIFRoZSBsb29rdXAga2V5IGZvciB0aGUgbGFiZWwgKi9cbiAgQElucHV0KClcbiAgbGFiZWxLZXkgPSAnbGFiZWwnO1xuXG4gIC8qKiBBIHBsYWNlaG9sZGVyIGZvciB0aGUgdHJpZ2dlciAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdjb3JlLnNlbGVjdCc7XG5cbiAgLyoqIEEgcGxhY2Vob2xkZXIgZm9yIHRoZSBzZWFyY2ggKi9cbiAgQElucHV0KCkgc2VhcmNoUGxhY2Vob2xkZXIgPSAnY29yZS5zZWFyY2gnO1xuXG4gIC8qKiBDdXN0b20gdGV4dCB3aGVuIHdlIGRvbid0IGhhdmUgcmVzdWx0cyAqL1xuICBASW5wdXQoKVxuICBzZXQgbm9JdGVtc0xhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ub0l0ZW1zTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0odmFsdWUpO1xuICB9XG5cbiAgLyoqIElmIGRlZmluZWQsIGluZGljYXRlcyBieSB3aGljaCBrZXkgdGhlIGRhdGEgc2hvdWxkIGJlIG5vcm1hbGl6ZWQgKi9cbiAgQElucHV0KClcbiAgZ3JvdXBCeTogc3RyaW5nO1xuXG4gIC8qKiBBZGQvcmVtb3ZlcyBzZWFyY2ggaW5wdXQgKi9cbiAgQElucHV0KClcbiAgaXNDb21ibyA9IHRydWU7XG5cbiAgLyoqIFdoZXRoZXIgaXQncyBhIGdyb3VwICovXG4gIEBJbnB1dCgpXG4gIGlzR3JvdXAgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGVjaWRlIHdoZXRoZXIgdG8gZmlsdGVyIHRoZSByZXN1bHRzIGludGVybmFsbHkgYmFzZWQgb24gc2VhcmNoIHF1ZXJ5LlxuICAgKiBVc2VmdWwgZm9yIGFzeW5jIGZpbHRlcmluZywgd2hlcmUgd2Ugc2VhcmNoIHRocm91Z2ggbW9yZSBjb21wbGV4IGRhdGEuXG4gICAqL1xuICBASW5wdXQoKVxuICBpbnRlcm5hbFNlYXJjaCA9IHRydWU7XG5cbiAgLyoqIERlYm91bmNlIHRpbWUgdG8gZW1pdCBzZWFyY2ggcXVlcmllcyAqL1xuICBASW5wdXQoKVxuICBkZWJvdW5jZVRpbWUgPSAzMDA7XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyBsb2FkaW5nIGluZGljYXRvciAqL1xuICBASW5wdXQoKVxuICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBhbGxvdyBzZWxlY3QgYWxsIGNoZWNrYm94ICovXG4gIEBJbnB1dCgpXG4gIGFsbG93U2VsZWN0QWxsID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgc2VsZWN0IGFsbCBjaGlwLiBlbXB0eSBtZWFucyBpdCdzIGRpc2FibGVkICovXG4gIEBJbnB1dCgpXG4gIHNlbGVjdEFsbENoaXBUeHQgPSAnJztcblxuICAvKiogVGhlIHR5cGUgb2YgdGhlIHNlbGVjdCAqL1xuICBASW5wdXQoKVxuICB0eXBlOiBTZWxlY3RUeXBlID0gU2VsZWN0VHlwZS5TSU5HTEU7XG5cbiAgLyoqIENsaWVudCBzZWFyY2ggc3RyYXRlZ3kgKi9cbiAgQElucHV0KClcbiAgc2VhcmNoU3RyYXRlZ3k6IERhdG9TZWxlY3RTZWFyY2hTdHJhdGVneSA9IGRlZmF1bHRDbGllbnRTZWFyY2hTdHJhdGVneTtcblxuICAvKiogVGhlIGRlZmF1bHQgcG9zaXRpb24gb2YgdGhlIGRyb3Bkb3duICovXG4gIEBJbnB1dCgpXG4gIHBsYWNlbWVudDogUG9wcGVyT3B0aW9uc1sncGxhY2VtZW50J10gPSAnYm90dG9tLXN0YXJ0JztcblxuICBASW5wdXQoKVxuICBpbmZpbml0ZVNjcm9sbExvYWRpbmcgPSBmYWxzZTtcblxuICAvKiogTGltaXQgdGhlIG51bWJlciBvZiByZXN1bHRzIHNob3duICovXG4gIEBJbnB1dCgpXG4gIGxpbWl0VG8gPSBkZWZhdWx0T3B0aW9uc0Rpc3BsYXlMaW1pdDtcblxuICBASW5wdXQoJ2xpbWl0U2VsZWN0ZWRUbycpXG4gIHNldCBsaW1pdFNlbGVjdGVkKGxpbWl0U2VsZWN0ZWRUbzogbnVtYmVyKSB7XG4gICAgdGhpcy5saW1pdFNlbGVjdGVkVG8gPSBsaW1pdFNlbGVjdGVkVG87XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEFsbG93IHNvcnRpbmcgb2Ygc2VsZWN0ZWQgb3B0aW9ucyBpbiBtdWx0aSBtb2RlICovXG4gIEBJbnB1dCgpXG4gIGlzU29ydGFibGUgPSBmYWxzZTtcblxuICAvKiogRWxlbWVudCB0byBhcHBlbmQgdGhlIG9wdGlvbnMgb3ZlcmxheSB0byAqL1xuICBASW5wdXQoKVxuICBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCBzdHJpbmc7XG5cbiAgLyoqIFRoZSBvcHRpb25zIHRvIGRpc3BsYXkgaW4gdGhlIGRyb3Bkb3duICovXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhU2V0KGRhdGE6IGFueVtdKSB7XG4gICAgaWYgKCF0aGlzLmluaXRpYWxSdW4pIHtcbiAgICAgIHRoaXMuX2RhdGEgPSBub3JtYWxpemVEYXRhKGRhdGEsIHRoaXMubGFiZWxLZXksIHRoaXMuZ3JvdXBCeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qKiBkYXRhIG5vcm1hbGl6YXRpb24sIGlmIHJlcXVpcmVkLCB3aWxsIGJlIGhhbmRsZWQgYnkgbmdPbkluaXQgaW4gdGhlIGluaXRpYWwgcnVuICovXG4gICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICB9XG5cbiAgICAvKiogSWYgaXQncyBhc3luYyB1cGRhdGVzLCBjcmVhdGUgbWljcm8gdGFzayBpbiBvcmRlciB0byByZS1zdWJzY3JpYmUgdG8gY2xpY2tzICovXG4gICAgaWYgKHRoaXMuX2RhdGFJc0RpcnR5KSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb09wdGlvbkNsaWNrKHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMubWFya0FzQWN0aXZlKHRoaXMuX21vZGVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGFJc0RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBTZWFyY2ggZ3JvdXBzIGFzIHdlbGwgYXMgb3B0aW9ucyAqL1xuICBASW5wdXQoKVxuICBzZWFyY2hHcm91cExhYmVscyA9IHRydWU7XG5cbiAgLyoqIEFkZCBjdXN0b20gY2xhc3MgdG8gdGhlIHNlbGVjdCBkcm9wRG93biAqL1xuICBASW5wdXQoKVxuICBkYXRvU2VsZWN0Q2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBsb2FkaW5nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIHNob3cgZW1wdHkgcmVzdWx0IHRleHQgKi9cbiAgQElucHV0KClcbiAgc2hvd0VtcHR5UmVzdWx0c1RleHQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBrZWVwIGZvY3VzIGluIGlucHV0IGFmdGVyIHNlbGVjdGluZyBvcHRpb25cbiAgICovXG4gIEBJbnB1dCgpXG4gIGtlZXBGb2N1cyA9IGZhbHNlO1xuXG4gIC8qKiBFbWl0IHNlYXJjaCB2YWx1ZSB3aGVuIGludGVybmFsIHNlYXJjaCBpcyBmYWxzZSAqL1xuICBAT3V0cHV0KClcbiAgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIEVtaXQgd2hlbiBbd2l0aEFjdGlvbnNdIGlzIHRydWUgYW5kIHRoZSB1c2VyIGNsaWNrcyBzYXZlICovXG4gIEBPdXRwdXQoKVxuICBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBmZXRjaCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KClcbiAgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBsaW1pdFNlbGVjdGVkVG86IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0dGVycyBhbmQgU2V0dGVyc1xuICAgKi9cblxuICBnZXQgY29udGFpbnNHcm91cHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIGdldCBvcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICB9XG5cbiAgc2V0IG9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9vcGVuID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaGFzUmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5faGFzUmVzdWx0cztcbiAgfVxuXG4gIHNldCBoYXNSZXN1bHRzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGFzUmVzdWx0cyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbC5sZW5ndGg7XG4gIH1cblxuICBnZXQgaXNTaW5nbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gU2VsZWN0VHlwZS5TSU5HTEU7XG4gIH1cblxuICBnZXQgaXNNdWx0aSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTZWxlY3RUeXBlLk1VTFRJO1xuICB9XG5cbiAgZ2V0IF9zaG93RW1wdHlSZXN1bHRzKCkge1xuICAgIHJldHVybiB0aGlzLnNob3dFbXB0eVJlc3VsdHNUZXh0ICYmIHRoaXMuX2RhdGEgJiYgKCF0aGlzLmhhc1Jlc3VsdHMgfHwgIXRoaXMuX2RhdGEubGVuZ3RoKSAmJiAhdGhpcy5pc0dyb3VwO1xuICB9XG5cbiAgZ2V0IF9jb3VudCgpIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMuZ2V0VmlzaWJsZU9wdGlvbnMoZmFsc2UpLmxlbmd0aDtcbiAgICBjb25zdCBhY3RpdmVzID0gdGhpcy5fbW9kZWwubGVuZ3RoO1xuICAgIHJldHVybiBgKCR7YWN0aXZlc30vJHt0b3RhbH0pYDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGFsbCB0aGUgb3B0aW9ucyBhcmUgY2hlY2tlZCAqL1xuICBnZXQgX2lzQWxsQ2hlY2tlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpLmV2ZXJ5KG9wdGlvbiA9PiB0aGlzLl9tb2RlbC5pbmRleE9mKG9wdGlvbikgPiAtMSk7XG4gIH1cblxuICBnZXQgc2hvd1NlbGVjdEFsbENoaXAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sZW5ndGggJiYgdGhpcy5fbW9kZWwubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgc29tZSB0aGUgb3B0aW9ucyBhcmUgY2hlY2tlZCAqL1xuICBnZXQgX2lzSW5kZXRlcm1pbmF0ZWx5Q2hlY2tlZCgpIHtcbiAgICBsZXQgc29tZUNoZWNrZWQsXG4gICAgICBzb21lTm90Q2hlY2tlZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgdmlzaWJsZU9wdGlvbiBvZiB0aGlzLmdldFZpc2libGVPcHRpb25zKCkpIHtcbiAgICAgIGlmICh0aGlzLl9tb2RlbC5pbmRleE9mKHZpc2libGVPcHRpb24pID4gLTEpIHtcbiAgICAgICAgc29tZUNoZWNrZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc29tZU5vdENoZWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHNvbWVDaGVja2VkICYmIHNvbWVOb3RDaGVja2VkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogRm9ybUNvbnRyb2wgd2hpY2ggbGlzdGVucyBmb3Igc2VhcmNoIHZhbHVlIGNoYW5nZXMgKi9cbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIC8qKiBFeHBvc2UgdGhlIHNlYXJjaCB0ZXJtIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGhpZ2hsaWdodCBkaXJlY3RpdmUgKi9cbiAgc2VhcmNoVGVybSA9ICcnO1xuXG4gIC8qKlxuICAgKiBQcml2YXRlIFByb3BlcnRpZXNcbiAgICovXG4gIF9ub0l0ZW1zTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS50cmFuc2Zvcm0oJ2NvcmUubm8taXRlbXMnKTtcblxuICAvKiogU3RvcmUgdGhlIGluaXRpYWwgZGF0YSAqL1xuICBfZGF0YSA9IFtdO1xuXG4gIC8qKiBJbmRpY2F0ZXMgd2hldGhlciB3ZSBhbHJlYWR5IGluaXRpYWxpemVkIHRoZSBkYXRhLFxuICAgKiAgVGhpcyBpcyBvcHRpbWl6YXRpb24gZm9yIG5vbiBhc3luYyBjYWxscy5cbiAgICogKi9cbiAgX2RhdGFJc0RpcnR5ID0gZmFsc2U7XG5cbiAgLyoqIFRyaWdnZXJzIHRoZSBmb2N1cyBvbiB0aGUgaW5wdXQgKi9cbiAgX2ZvY3VzID0gZmFsc2U7XG5cbiAgLyoqIFN0b3JlIHRoZSBhY3RpdmUgb3B0aW9ucyAqL1xuICBfbW9kZWwgPSBbXTtcblxuICAvKiogRW5hYmxlL2Rpc2FibGUgdGhlIHNlbGVjdC10cmlnZ2VyICovXG4gIF9kaXNhYmxlZDtcblxuICAvKiogV2hldGVyIHRoZSBkcm9wZG93biBpcyBvcGVuICovXG4gIF9vcGVuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgd2UgaGF2ZSBzZWFyY2ggcmVzdWx0cyAqL1xuICBfaGFzUmVzdWx0cyA9IHRydWU7XG5cbiAgLyoqIEluZGljYXRpb24gaWYgd2UgbmVlZCB0byBzZXQgdGhlIGluaXRpYWwgY29udHJvbCB2YWx1ZSBhcyBhY3RpdmVzICovXG4gIF9pbml0aWFsT3BlbiA9IHRydWU7XG5cbiAgLyoqIFdoZXRoZXIgZ2VuZXJhdGUgY2FuY2VsL3NhdmUgZm9vdGVyICovXG4gIF93aXRoQWN0aW9ucyA9IGZhbHNlO1xuXG4gIF93aXRoSW5maW5pdGVTY3JvbGwgPSBmYWxzZTtcblxuICAvKiogTm90aWZ5IHRoZSBtdWx0aSB0cmlnZ2VyIHdoZW4gY2xpY2sgb3V0c2lkZSB0byByZW1vdmUgdGhlIGZvY3VzICAqL1xuICBfY2xpY2tPdXRzaWRlID0gZmFsc2U7XG5cbiAgLyoqIERyb3Bkb3duIHNpemUgY2xhc3MgKi9cbiAgX2Ryb3Bkb3duQ2xhc3M6IHN0cmluZ1tdO1xuXG4gIC8qKiB0cnVlIHVudGlsIG5nT25Jbml0ICovXG4gIHByaXZhdGUgaW5pdGlhbFJ1biA9IHRydWU7XG5cbiAgLyoqIFNlYXJjaCBjb250cm9sIHN1YnNjcmlwdGlvbiAqL1xuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjtcblxuICAvKiogQ2xpY2tzIG9wdGlvbnMgc3Vic2NyaXB0aW9uICovXG4gIHByaXZhdGUgY2xpY2tzU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUga2V5TWFuYWdlcjogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8RGF0b09wdGlvbkNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBpbmZpbml0ZVN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBEYXRvVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgZGF0b092ZXJsYXk6IERhdG9PdmVybGF5LFxuICAgIEBBdHRyaWJ1dGUoJ25ha2VkJykgcHVibGljIF9uYWtlZCxcbiAgICBAQXR0cmlidXRlKCdkYXRvU2l6ZScpIHB1YmxpYyBzaXplLFxuICAgIEBBdHRyaWJ1dGUoJ3dpZHRoJykgcHVibGljIHdpZHRoOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNpemUgPSBzaXplIHx8ICdtZCc7XG4gICAgdGhpcy5fZHJvcGRvd25DbGFzcyA9IFtgZGF0by1zZWxlY3QtJHt0aGlzLnNpemV9YF07XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5kYXRvU2VsZWN0Q2xhc3MpIHtcbiAgICAgIHRoaXMuX2Ryb3Bkb3duQ2xhc3MucHVzaCh0aGlzLmRhdG9TZWxlY3RDbGFzcyk7XG4gICAgfVxuXG4gICAgdGhpcy5fd2l0aEFjdGlvbnMgPSB0aGlzLnNhdmUub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMTtcbiAgICB0aGlzLl93aXRoSW5maW5pdGVTY3JvbGwgPSB0aGlzLmZldGNoLm9ic2VydmVycy5sZW5ndGggPT09IDE7XG4gICAgdGhpcy5saXN0ZW5Ub1NlYXJjaCgpO1xuICAgIHRoaXMuX2RhdGEgPSBub3JtYWxpemVEYXRhKHRoaXMuX2RhdGEsIHRoaXMubGFiZWxLZXksIHRoaXMuZ3JvdXBCeSk7XG4gICAgdGhpcy5pbml0aWFsUnVuID0gZmFsc2U7XG4gICAgLy8gaGVpZ2h0IGlzIGJlaW5nIGNvbnRyb2xsZWQgYnkgc2l6ZSBwcm9wZXJ0eVxuICAgIHNldERpbWVuc2lvbnModGhpcy53aWR0aCwgbnVsbCwgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICBtYXJrVG91Y2hlZCgpIHtcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMub25Ub3VjaGVkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIHRoZSBkcm9wZG93blxuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKCcnKTtcbiAgICB0aGlzLmRhdG9PdmVybGF5LmRldGFjaCgpO1xuICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgdGhpcy5fZm9jdXMgPSBmYWxzZTtcbiAgICB0aGlzLl9jbGlja091dHNpZGUgPSB0cnVlO1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gJiYgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24gJiYgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuYmx1ci5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBkcm9wZG93biB2aXNpYmlsaXR5XG4gICAqL1xuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICBpZiAodGhpcy5vcGVuICYmICh0aGlzLmlzTXVsdGkgfHwgdGhpcy5pc0NvbWJvKSkge1xuICAgICAgdGhpcy5fZm9jdXMgPSB0cnVlO1xuICAgICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKGFjdGl2ZU9wdGlvbnM6IGFueSB8IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kZWwgPSBhY3RpdmVPcHRpb25zID8gY29lcmNlQXJyYXkoYWN0aXZlT3B0aW9ucykgOiBbXTtcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICBjb25zdCBvdmVyVGhlTGltaXQgPSB0aGlzLmxpbWl0U2VsZWN0ZWRUbyAmJiB0aGlzLmlzTXVsdGkgJiYgdGhpcy5fbW9kZWwubGVuZ3RoID49IHRoaXMubGltaXRTZWxlY3RlZFRvO1xuICAgICAgdGhpcy5tYXJrQXNBY3RpdmUodGhpcy5fbW9kZWwsIHsgZGVzZWxlY3RBbGw6IHRydWUgfSk7XG4gICAgICBvdmVyVGhlTGltaXQgJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG4gICAgfVxuICAgIC8qKiBGb3IgbGF0ZXIgdXBkYXRlcyAqL1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIG92ZXJsYXlcbiAgICovXG4gIG9wZW5Ecm9wZG93bihldmVudD8pIHtcbiAgICAvKiogQ2xvc2UgdGhlIGRyb3Bkb3duIHdoZW4gd2UgY2xpY2sgb24gdGhlIHRyaWdnZXIgYW5kIHdlIGRvbid0IGhhdmUgc2VhcmNoIG9yIG11bHRpcGxlICovXG4gICAgaWYgKHRoaXMub3BlbiAmJiAhdGhpcy5pc0NvbWJvICYmIHRoaXMuaXNTaW5nbGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKiogRG9uJ3QgY2xvc2UgdGhlIGRyb3Bkb3duIGlmIHdlIGNsaWNrIG9uIHRoZSBpbnB1dCBhbmQgaXQncyBvcGVuICovXG4gICAgaWYgKHRoaXMub3BlbiAmJiAodGhpcy5pc011bHRpIHx8IHRoaXMuaXNDb21ibykpIHtcbiAgICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQubm9kZU5hbWUgIT09ICdJTlBVVCcpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRhdG9PdmVybGF5LmNyZWF0ZWQpIHtcbiAgICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIH1cblxuICAgIHRoaXMuZGF0b092ZXJsYXkuYmFja0Ryb3BDbGljayQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gdHJ1ZTtcbiAgICAgIHRoaXMub3BlbiAmJiB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdG9PdmVybGF5LmF0dGFjaCh7IHBsYWNlbWVudDogdGhpcy5wbGFjZW1lbnQgfSwgdGhpcy5fZHJvcGRvd25DbGFzcyk7XG5cbiAgICB0aGlzLnRvZ2dsZSgpO1xuXG4gICAgaWYgKHRoaXMuaGFzVmFsdWUpIHtcbiAgICAgIC8qKlxuICAgICAgICogV2hlbiB3ZSBmaXJzdCBvcGVuIHRoZSBkcm9wZG93biB3ZSBuZWVkIHRvIG1hcmsgdGhlXG4gICAgICAgKiBGb3JtQ29udHJvbCB2YWx1ZXMgYXMgYWN0aXZlc1xuICAgICAgICovXG4gICAgICBpZiAodGhpcy5faW5pdGlhbE9wZW4pIHtcbiAgICAgICAgdGhpcy5tYXJrQXNBY3RpdmUodGhpcy5fbW9kZWwpO1xuICAgICAgICB0aGlzLl9pbml0aWFsT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy5fbW9kZWwubGVuZ3RoID09PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbykge1xuICAgICAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fd2l0aEluZmluaXRlU2Nyb2xsKSB7XG4gICAgICB0aGlzLmFjdGl2YXRlSW5maW5pdGVTY3JvbGwoKTtcbiAgICB9XG5cbiAgICBzZXRTdHlsZShxdWVyeSgnLmRhdG8tb3ZlcmxheScpLCAnekluZGV4JywgekluZGV4UGxlYXNlKCkpO1xuICAgIGNvbnN0IGRyb3Bkb3duQ29udGFpbmVyID0gcXVlcnkoJy5kYXRvLXNlbGVjdF9fZHJvcGRvd24tY29udGFpbmVyJyk7XG4gICAgc2V0U3R5bGUoZHJvcGRvd25Db250YWluZXIsICd3aWR0aCcsIGAke3RoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofXB4YCk7XG5cbiAgICAvKiogUHJldmVudCBzY3JvbGwgd2hpbGUgdGhlIGRyb3Bkb3duIGlzIG9wZW4gKi9cbiAgICBpZiAoaXNUZXN0RW52KCkpIHtcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGlzTW9iaWxlKCkgPyAndG91Y2htb3ZlJyA6ICdzY3JvbGwnO1xuICAgICAgbGV0IHNjcm9sbEV2ZW50ID0gZnJvbUV2ZW50KHdpbmRvdywgZXZlbnROYW1lKTtcbiAgICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICAgIHNjcm9sbEV2ZW50ID0gc2Nyb2xsRXZlbnQucGlwZShmaWx0ZXIoZXZlbnQgPT4gIWRyb3Bkb3duQ29udGFpbmVyLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IHNjcm9sbEV2ZW50LnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZShlID0+IHRoaXMuY2xvc2UoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5oYW5kbGVQZXJmZWN0U2Nyb2xsQmFyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVUb09wdGlvbkNsaWNrKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyKHRoaXMub3B0aW9ucykud2l0aFdyYXAoKTtcbiAgfVxuXG4gIGNoZWNrQWxsKGNoZWNrOiBib29sZWFuKSB7XG4gICAgbGV0IGNoZWNrZWQgPSBjaGVjaztcbiAgICBpZiAodGhpcy5faXNJbmRldGVybWluYXRlbHlDaGVja2VkKSB7XG4gICAgICBjaGVja2VkID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgZGF0b09wdGlvbi5hY3RpdmUgPSBjaGVja2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHZpc2libGVPcHRpb25zID0gdGhpcy5nZXRWaXNpYmxlT3B0aW9ucygpO1xuICAgIGNvbnN0IGlzQWxsVmlzaWJsZSA9IHZpc2libGVPcHRpb25zLmxlbmd0aCA9PT0gdGhpcy5vcHRpb25zLmxlbmd0aDtcblxuICAgIGlmIChpc0FsbFZpc2libGUpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gY2hlY2tlZCA/IHZpc2libGVPcHRpb25zIDogW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5fbW9kZWwuaW5kZXhPZihvcHRpb24pID09PSAtMSkge1xuICAgICAgICAgICAgdGVtcC5wdXNoKG9wdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX21vZGVsID0gWy4uLnRoaXMuX21vZGVsLCAuLi50ZW1wXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5fbW9kZWwuZmlsdGVyKG9wdGlvbiA9PiB2aXNpYmxlT3B0aW9ucy5pbmRleE9mKG9wdGlvbikgPT09IC0xKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICB9XG5cbiAgcmVvcmRlck9wdGlvbnMobmV3T3JkZXI6IGFueVtdKSB7XG4gICAgdGhpcy5fbW9kZWwgPSBuZXdPcmRlcjtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgfVxuXG4gIHJlbW92ZU9wdGlvbihvcHRpb24pIHtcbiAgICBjb25zdCB1cGRhdGVEaXNhYmxlZCA9IHRoaXMubGltaXRTZWxlY3RlZFRvICYmIHRoaXMuX21vZGVsLmxlbmd0aCA9PT0gdGhpcy5saW1pdFNlbGVjdGVkVG87XG4gICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50W3RoaXMuaWRLZXldICE9PSBvcHRpb25bdGhpcy5pZEtleV0pO1xuICAgIGNvbnN0IG9wdGlvblRvUmVtb3ZlID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICBkYXRvT3B0aW9uID0+IGRhdG9PcHRpb24ub3B0aW9uICYmIGRhdG9PcHRpb24ub3B0aW9uW3RoaXMuaWRLZXldID09PSBvcHRpb25bdGhpcy5pZEtleV1cbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogVG8gcHJldmVudCBjYXNlcyB3aGVuIHRoZSBvcHRpb25zIGFyZSBsaW1pdGVkIGFuZCBkb2VzbnQgaW5jbHVkZSB0aGUgYWN0aXZlIG9wdGlvbixcbiAgICAgKiB0aGF0IGNhbiBiZSByZWFjaGVkIG9ubHkgYnkgc2VydmVyIHNlYXJjaC5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9uVG9SZW1vdmUpIHtcbiAgICAgIG9wdGlvblRvUmVtb3ZlLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHVwZGF0ZURpc2FibGVkICYmIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9tb2RlbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5hc3luY1VwZGF0ZURyb3Bkb3duUG9zaXRpb24oKTtcbiAgfVxuXG4gIHByZXZlbnRCb2R5U2Nyb2xsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzQXJyb3dVcERvd24oZXZlbnQpKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgb3ZlcmxheSB0byBkaXNwbGF5IHRoZSBzZWxlY3Qgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVPdmVybGF5KCkge1xuICAgIGNvbnN0IHRlbXBsYXRlUG9ydGFsID0gbmV3IERhdG9UZW1wbGF0ZVBvcnRhbCh0aGlzLmRyb3Bkb3duKTtcbiAgICBsZXQgYXBwZW5kVG9FbGVtZW50O1xuICAgIGlmIChpc1N0cmluZyh0aGlzLmFwcGVuZFRvKSkge1xuICAgICAgYXBwZW5kVG9FbGVtZW50ID0gY2xvc2VzdCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgdGhpcy5hcHBlbmRUbyBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBlbmRUb0VsZW1lbnQgPSB0aGlzLmFwcGVuZFRvO1xuICAgIH1cblxuICAgIHRoaXMuZGF0b092ZXJsYXkuY3JlYXRlKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB0ZW1wbGF0ZVBvcnRhbCwgYXBwZW5kVG9FbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3BwZXIgZG9lc24ndCBzdXBwb3J0IHBlcmZlY3Qtc2Nyb2xsLWJhciwgc28gd2UgbmVlZCB0byBkbyBpdCBtYW51YWxseVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVQZXJmZWN0U2Nyb2xsQmFyKCkge1xuICAgIGNvbnN0IHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQgPSBjbG9zZXN0KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCAnLnBzJyk7XG4gICAgaWYgKHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQpIHtcbiAgICAgIGZyb21FdmVudChwZXJmZWN0U2Nyb2xsQmFyUGFyZW50LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGhyb3R0bGVUaW1lKDEwKSxcbiAgICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGF0b092ZXJsYXkuc2NoZWR1bGVVcGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaXNpYmxlT3B0aW9ucyhnZXRSYXdPcHRpb25zID0gdHJ1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKGRhdG9PcHRpb24gPT4gIWRhdG9PcHRpb24uZGlzYWJsZWQpO1xuICAgIGlmIChnZXRSYXdPcHRpb25zKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5tYXAoZGF0b09wdGlvbiA9PiBkYXRvT3B0aW9uLm9wdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIGluaXRpYWwgY29udHJvbCB2YWx1ZSBhcyBhY3RpdmVcbiAgICovXG4gIHByaXZhdGUgbWFya0FzQWN0aXZlKG1vZGVsOiBhbnlbXSwgb3B0aW9uczogeyBkZXNlbGVjdEFsbDogYm9vbGVhbiB9ID0geyBkZXNlbGVjdEFsbDogZmFsc2UgfSkge1xuICAgIGNvbnN0IGFzQXJyYXkgPSB0aGlzLm9wdGlvbnMudG9BcnJheSgpO1xuICAgIGlmIChvcHRpb25zLmRlc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG1vZGVsKSB7XG4gICAgICBpZiAoIW9wdGlvbikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hdGNoID0gYXNBcnJheS5maW5kKGN1cnJlbnQgPT4gY3VycmVudC5vcHRpb24gJiYgY3VycmVudC5vcHRpb25bdGhpcy5pZEtleV0gPT09IG9wdGlvblt0aGlzLmlkS2V5XSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgbWF0Y2guYWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBhbGwgb3B0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG93QWxsKCkge1xuICAgIGNvbnN0IGlzQWNjb3JkaW9uID0gdGhpcy5pc0FjY29yZGlvbkdyb3VwKCk7XG4gICAgY29uc3QgZ3JvdXBDb21wb25lbnRzOiBMaXN0R3JvdXBDb21wb25lbnRbXSA9IHRoaXMuZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTtcblxuICAgIGZvciAoY29uc3QgZ3JvdXBDb21wb25lbnQgb2YgZ3JvdXBDb21wb25lbnRzKSB7XG4gICAgICBncm91cENvbXBvbmVudC5faGlkZGVuID0gZmFsc2U7XG5cbiAgICAgIC8qIElmIHRoaXMgYWNjb3JkaW9uIGdyb3VwIGhhcyBiZWVuIGV4cGVuZGVkIGJ5IHRoZSBzZWFyY2ggZnVuY3Rpb24sXG4gICAgICAgICB0aGVuIGNvbGxhcHNlIGl0IHRvIHRoZSBvcmlnaW5hbCBzdGF0ZVxuICAgICAgKi9cbiAgICAgIGlmIChpc0FjY29yZGlvbikge1xuICAgICAgICBjb25zdCBhbnlHcm91cCA9IGdyb3VwQ29tcG9uZW50IGFzIGFueTtcblxuICAgICAgICBpZiAoYW55R3JvdXAuX19leHBlbmRlZCkge1xuICAgICAgICAgIGFueUdyb3VwLl9fZXhwZW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBhY2NvcmRpb25Hcm91cCA9IGFueUdyb3VwIGFzIERhdG9BY2NvcmRpb25Hcm91cENvbXBvbmVudDtcbiAgICAgICAgICBhY2NvcmRpb25Hcm91cC5jb250ZW50LmRpc2FibGVBbmltYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICBhY2NvcmRpb25Hcm91cC5leHBhbmQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGRhdG9PcHRpb24uaGlkZUFuZERpc2FibGVkKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZvciBvcHRpb25zIGFuZCByZXR1cm5zIGlmIHdlIGhhdmUgcmVzdWx0XG4gICAqL1xuICBwcml2YXRlIHNlYXJjaE9wdGlvbnModmFsdWU6IHN0cmluZykge1xuICAgIGxldCBoYXNSZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBncm91cENvbXBvbmVudHNBcnJheTogTGlzdEdyb3VwQ29tcG9uZW50W10gPSB0aGlzLmdldEdyb3VwQ29tcG9uZW50c0FycmF5KCk7XG4gICAgY29uc3QgaGFzR3JvdXBzID0gZ3JvdXBDb21wb25lbnRzQXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGhhc0dyb3Vwcykge1xuICAgICAgaGFzUmVzdWx0ID0gdGhpcy5zZWFyY2hJbkdyb3Vwcyhncm91cENvbXBvbmVudHNBcnJheSwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYXNSZXN1bHQgPSB0aGlzLnNlYXJjaEluT3B0aW9ucyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIG1hdGNoaW5nIGdyb3VwcyBhbmQgY2hpbGRyZW4uXG4gICAqL1xuICBwcml2YXRlIHNlYXJjaEluR3JvdXBzKGdyb3VwQ29tcG9uZW50c0FycmF5OiBMaXN0R3JvdXBDb21wb25lbnRbXSwgdmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQWNjb3JkaW9uID0gdGhpcy5pc0FjY29yZGlvbkdyb3VwKCk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IHRoaXMuX2RhdGEubGVuZ3RoO1xuICAgIGxldCBoYXNSZXN1bHRzID0gZmFsc2U7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFMZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLl9kYXRhW2ldO1xuICAgICAgY29uc3QgZ3JvdXBLZXkgPSB0aGlzLmdldEdyb3VwS2V5KGdyb3VwKTtcbiAgICAgIGNvbnN0IGdyb3VwTWF0Y2ggPSB0aGlzLnNlYXJjaEdyb3VwTGFiZWxzICYmIHRoaXMuc2VhcmNoU3RyYXRlZ3koZ3JvdXAsIHZhbHVlLCB0aGlzLmxhYmVsS2V5KTtcbiAgICAgIGNvbnN0IGdyb3VwT3B0aW9ucyA9IGdyb3VwLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBjaGlsZFt0aGlzLmlkS2V5XSk7XG4gICAgICAvKiBzaG93L2hpZGUgdGhlIG9wdGlvbnMgKi9cbiAgICAgIGNvbnN0IHNob3dHcm91cCA9IHRoaXMuc2VhcmNoSW5PcHRpb25zKHZhbHVlLCBncm91cE9wdGlvbnMsIGdyb3VwTWF0Y2gpO1xuXG4gICAgICBpZiAoc2hvd0dyb3VwICYmICFoYXNSZXN1bHRzKSB7XG4gICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvKiBGaW5kIHRoZSByaWdodCBjb21wb25lbnQsIGFjY29yZGluZyB0byB0aGUgaW50ZXJuYWwga2V5IGFzc2lnbmVkIGluIHRoZSBwcmV2aW91cyBzZWFyY2guXG4gICAgICAgICBXaGVuIG5vIG1hdGNoIGlzIGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gdGhlIHNhbWUgaW5kZXggYXMgdGhlIGdyb3VwIG9wdGlvbi5cbiAgICAgICogIFRoZSBpbmRleCBpcyBjb25zaWRlcmVkIGxlc3Mgc2FmZSwgYmVjYXVzZSBpdCBjYW4gY2hhbmdlIGFmdGVyIHNvcnRpbmcuICovXG4gICAgICBjb25zdCBncm91cENvbXBvbmVudCA9IGdyb3VwQ29tcG9uZW50c0FycmF5LmZpbmQoKGc6IGFueSkgPT4gZy5fX2tleSA9PT0gZ3JvdXBLZXkpIHx8IGdyb3VwQ29tcG9uZW50c0FycmF5W2ldO1xuICAgICAgLyogU2hvdy9oaWRlIHRoZSBncm91cCAqL1xuICAgICAgaWYgKGdyb3VwQ29tcG9uZW50KSB7XG4gICAgICAgIGdyb3VwQ29tcG9uZW50Ll9oaWRkZW4gPSAhc2hvd0dyb3VwO1xuICAgICAgICAvKiBhc3NpZ24gYW4gaW50ZXJuYWwga2V5IHRvIHRoZSBjb21wb25lbnQgaW5zdGFuY2UsIHNvIHdlIGNhbiBmaW5kIGl0IGxhdGVyIChhYm92ZSkuICovXG4gICAgICAgIChncm91cENvbXBvbmVudCBhcyBhbnkpLl9fa2V5ID0gZ3JvdXBLZXk7XG4gICAgICAgIC8qIEV4cGFuZCB0aGUgYWNjb3JkaW9uIG9uIG1hdGNoaW5nIHJlc3VsdHMgKi9cbiAgICAgICAgaWYgKGlzQWNjb3JkaW9uICYmIHNob3dHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGFjY29yZGlvbkdyb3VwID0gZ3JvdXBDb21wb25lbnQgYXMgRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50O1xuXG4gICAgICAgICAgaWYgKCFhY2NvcmRpb25Hcm91cC5leHBhbmRlZCkge1xuICAgICAgICAgICAgYWNjb3JkaW9uR3JvdXAuY29udGVudC5kaXNhYmxlQW5pbWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIC8qIEV4cGFuZCB0aGUgYWNjb3JkaW9uICovXG4gICAgICAgICAgICBhY2NvcmRpb25Hcm91cC5leHBhbmQodHJ1ZSk7XG4gICAgICAgICAgICAvKiBNYXJrIHRoZSBhY2NvcmRpb24gYXMgZXhwYW5kZWQsIHNvIHdlIGNhbiByZXR1cm4gdG8gdGhlIGRlZmF1bHQgc3RhdGUgbGF0ZXIgKi9cbiAgICAgICAgICAgIChncm91cENvbXBvbmVudCBhcyBhbnkpLl9fZXhwZW5kZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXNSZXN1bHRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCB0aGUgb3B0aW9ucyB0byBzaG93IG9yIGhpZGUgZWFjaCBhbmQgcmV0dXJuIGlmIHJlc3VsdCBoYXMgYmVlbiBmb3VuZC5cbiAgICogQ29uc2lkZXIgd2UgaGF2ZSBhIGdyb3VwIHRoYXQgbWF0Y2ggd2Ugc2hvdyBhbGwgb2YgaXRzIG9wdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIHNlYXJjaEluT3B0aW9ucyh2YWx1ZTogc3RyaW5nLCBncm91cE9wdGlvbnMgPSBbXSwgZ3JvdXBNYXRjaCA9IGZhbHNlKSB7XG4gICAgbGV0IGhhc1Jlc3VsdHMgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBjb25zdCBvcHRpb25Jbkdyb3VwID0gZ3JvdXBPcHRpb25zLmluZGV4T2YoZGF0b09wdGlvbi5vcHRpb24gJiYgZGF0b09wdGlvbi5vcHRpb25bdGhpcy5pZEtleV0pICE9PSAtMTtcblxuICAgICAgaWYgKGdyb3VwTWF0Y2ggJiYgb3B0aW9uSW5Hcm91cCkge1xuICAgICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZChmYWxzZSk7XG4gICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICghc2l6ZShncm91cE9wdGlvbnMpIHx8IG9wdGlvbkluR3JvdXApIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLnNlYXJjaFN0cmF0ZWd5KGRhdG9PcHRpb24sIHZhbHVlLCB0aGlzLmxhYmVsS2V5KTtcblxuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQoZmFsc2UpO1xuICAgICAgICAgIGhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBrZXkgb2YgdGhlIG9wdGlvbiBncm91cC4gSXQgY2FuIGJlIHRoZSBncm91cCBJZCBpZiBleGlzdHMsIG9yIHRoZSBsYWJlbC5cbiAgICovXG4gIHByaXZhdGUgZ2V0R3JvdXBLZXkob3B0aW9uKSB7XG4gICAgcmV0dXJuIG9wdGlvbiAmJiAob3B0aW9uW3RoaXMuaWRLZXldIHx8IG9wdGlvblt0aGlzLmxhYmVsS2V5XSk7XG4gIH1cblxuICBwcml2YXRlIGlzRW1wdHkodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gJyc7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlYXJjaCBjaGFuZ2VzIGFuZCBmaWx0ZXIgdGhlIGxpc3RcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9TZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPVxuICAgICAgdGhpcy5pc0NvbWJvICYmXG4gICAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxTZWFyY2gpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5zaG93QWxsKCk7XG4gICAgICAgICAgICB0aGlzLmhhc1Jlc3VsdHMgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc1Jlc3VsdHMgPSB0aGlzLnNlYXJjaE9wdGlvbnModmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlYXJjaC5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIG9wdGlvbiBjbGljayBhbmQgY2hhbmdlIHRoZSBzdGF0ZSBhY2NvcmRpbmdseVxuICAgKi9cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb09wdGlvbkNsaWNrKG9wdGlvbnM6IFF1ZXJ5TGlzdDxEYXRvT3B0aW9uQ29tcG9uZW50Pikge1xuICAgIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uICYmIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAvKiogR2F0aGVyIGFsbCB0aGUgY2xpY2tzICovXG4gICAgY29uc3QgY2xpY2tzJCA9IG9wdGlvbnMubWFwKG9wdGlvbiA9PlxuICAgICAgb3B0aW9uLmNsaWNrJC5waXBlKFxuICAgICAgICBtYXAoKGV2ZW50OiBFdmVudCkgPT4gKHtcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICBvcHRpb25cbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIC8qKiBDb25zaWRlciBjaGFuZ2UgaXQgdG8gdXNlIGV2ZW50IGRlbGVnYXRpb24gKi9cbiAgICB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbiA9IG1lcmdlKC4uLmNsaWNrcyQpLnN1YnNjcmliZSgoeyBvcHRpb24sIGV2ZW50IH0pID0+IHtcbiAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmlzU2luZ2xlID8gdGhpcy5oYW5kbGVTaW5nbGVDbGljayhvcHRpb24pIDogdGhpcy5oYW5kbGVNdWx0aUNsaWNrKG9wdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25Eb2N1bWVudEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoaXNFc2NhcGUoZXZlbnQpICYmIHRoaXMub3Blbikge1xuICAgICAgdGhpcy5fY2xpY2tPdXRzaWRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBrZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChpc0VudGVyKGV2ZW50KSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4O1xuICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5vcHRpb25zLnRvQXJyYXkoKVtpbmRleF07XG4gICAgICB0aGlzLmlzU2luZ2xlID8gdGhpcy5oYW5kbGVTaW5nbGVDbGljayhhY3RpdmUpIDogdGhpcy5oYW5kbGVNdWx0aUNsaWNrKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dVcERvd24oZXZlbnQpKSB7XG4gICAgICB0aGlzLmtleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdG8tc2VsZWN0X19kcm9wZG93bicpO1xuICAgICAgX3Njcm9sbFRvT3B0aW9uKHtcbiAgICAgICAgc2l6ZTogdGhpcy5zaXplLFxuICAgICAgICBwYW5lbCxcbiAgICAgICAgYWN0aXZlSXRlbUluZGV4OiB0aGlzLmtleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4LFxuICAgICAgICBncm91cHM6IHRoaXMuZ3JvdXBzLFxuICAgICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChpc0VzY2FwZShldmVudCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0QWxsKCkge1xuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2luZ2xlQ2xpY2soZGF0b09wdGlvbjogRGF0b09wdGlvbkNvbXBvbmVudCkge1xuICAgIGlmICghZGF0b09wdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZGF0b09wdGlvbi5hY3RpdmUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgZGF0b09wdGlvbi5hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJhd09wdGlvbiA9IGRhdG9PcHRpb24ub3B0aW9uO1xuICAgIHRoaXMuX21vZGVsID0gW3Jhd09wdGlvbl07XG4gICAgdGhpcy5vbkNoYW5nZShyYXdPcHRpb24pO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTXVsdGlDbGljayhkYXRvT3B0aW9uOiBEYXRvT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgaWYgKCFkYXRvT3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1vZGVsTGVuZ3RoID0gdGhpcy5fbW9kZWwubGVuZ3RoO1xuICAgIGNvbnN0IHVwZGF0ZURpc2FibGVkID1cbiAgICAgIHRoaXMubGltaXRTZWxlY3RlZFRvICYmXG4gICAgICAobW9kZWxMZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvIHx8IChtb2RlbExlbmd0aCA9PT0gdGhpcy5saW1pdFNlbGVjdGVkVG8gLSAxICYmICFkYXRvT3B0aW9uLmFjdGl2ZSkpO1xuICAgIGRhdG9PcHRpb24uYWN0aXZlID0gIWRhdG9PcHRpb24uYWN0aXZlO1xuICAgIGNvbnN0IHJhd09wdGlvbiA9IGRhdG9PcHRpb24ub3B0aW9uO1xuICAgIGlmIChkYXRvT3B0aW9uLmFjdGl2ZSkge1xuICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5jb25jYXQocmF3T3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5maWx0ZXIoY3VycmVudCA9PiBjdXJyZW50W3RoaXMuaWRLZXldICE9PSByYXdPcHRpb25bdGhpcy5pZEtleV0pO1xuICAgIH1cbiAgICB1cGRhdGVEaXNhYmxlZCAmJiB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmF0ZUluZmluaXRlU2Nyb2xsKCkge1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmRhdG8tc2VsZWN0X19kcm9wZG93bicpLCAnc2Nyb2xsJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCkpXG4gICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFkgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0IC0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gY29udGFpbmVyLm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaGVpZ2h0IC0gc2Nyb2xsWTtcbiAgICAgICAgaWYgKG9mZnNldCA9PT0gMCB8fCBvZmZzZXQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLmZldGNoLmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gJiYgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbiAmJiB0aGlzLmNsaWNrc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuaW5maW5pdGVTdWJzY3JpcHRpb24gJiYgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoZWQgJiYgdGhpcy5kYXRvT3ZlcmxheS5kZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ3JvdXAgY29tcG9uZW50IGlzIEFjY29yZGlvblxuICAgKi9cbiAgcHJpdmF0ZSBpc0FjY29yZGlvbkdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmFjY29yZGlvbiAmJiB0aGlzLmFjY29yZGlvbi5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYW4gYXJyYXkgb2YgdGhlIGdyb3VwIGNvbXBvbmVudHNcbiAgICovXG4gIHByaXZhdGUgZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTogTGlzdEdyb3VwQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKSA/IHRoaXMuYWNjb3JkaW9uLmZpcnN0Lmdyb3Vwcy50b0FycmF5KCkgOiB0aGlzLmdyb3VwcyAmJiB0aGlzLmdyb3Vwcy50b0FycmF5KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURpc2FibGVkU3RhdGUoKSB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvO1xuICAgIGZvciAoY29uc3QgZGF0b09wdGlvbiBvZiB0aGlzLm9wdGlvbnMudG9BcnJheSgpKSB7XG4gICAgICBpZiAoIWRhdG9PcHRpb24uYWN0aXZlKSB7XG4gICAgICAgIGRhdG9PcHRpb24uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgdGhlIG92ZXJsYXkgd2lsbCBiZSB1cGRhdGUgQUZURVIgQ2hhbmdlIERldGVjdGlvbiB3YXMgZG9uZVxuICAvLyBTbyB0aGUgaXRlbXMgaW4gdGhlIGlucHV0IChhbmQgaXRzIGhlaWdodCkgaXMgdXBkYXRlXG4gIHByaXZhdGUgYXN5bmNVcGRhdGVEcm9wZG93blBvc2l0aW9uKCkge1xuICAgIGlmICh0aGlzLmRhdG9PdmVybGF5ICYmIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kYXRvT3ZlcmxheS5zY2hlZHVsZVVwZGF0ZSgpLCAwKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
1101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFFSCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBNEIsMkJBQTJCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxP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RUFBRTtrQ0FDUyxXQUFXO2dFQUFNO0lBSWxDO1FBREMsS0FBSyxFQUFFOztxRUFDb0I7SUFNNUI7UUFEQyxLQUFLLEVBQUU7OzBEQUNVO0lBSWxCO1FBREMsTUFBTSxFQUFFOzt1REFDMkI7SUFJcEM7UUFEQyxNQUFNLEVBQUU7O3FEQUN1QjtJQUdoQztRQURDLE1BQU0sRUFBRTs7c0RBQzJCO0lBR3BDO1FBREMsTUFBTSxFQUFFOztxREFDdUI7SUE0S2hDO1FBREMsWUFBWSxDQUFDLFVBQVUsQ0FBQzs7OzswREFHeEI7SUFnYkQ7UUFEQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7eUNBQ3BCLGFBQWE7O2dFQUtyQztJQTd3QlUsbUJBQW1CO1FBVC9CLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLDJ4R0FBc0M7WUFDdEMsbUJBQW1CLEVBQUUsS0FBSztZQUMxQixTQUFTLEVBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1lBQ3ZDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1lBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1lBQy9DLFFBQVEsRUFBRSxZQUFZO1NBQ3ZCLENBQUM7UUErVEcsV0FBQSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEIsV0FBQSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDckIsV0FBQSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7eUNBTk4saUJBQWlCO1lBQ1gsb0JBQW9CO1lBQ3pCLFVBQVU7WUFDSCxXQUFXO09BN1R2QixtQkFBbUIsQ0F1NEIvQjtJQUFELDBCQUFDO0NBQUEsQUF2NEJELENBQXlDLGlCQUFpQixHQXU0QnpEO1NBdjRCWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJhc2VDdXN0b21Db250cm9sIH0gZnJvbSAnLi4vY3VzdG9tLWNvbnRyb2wvYmFzZS1jdXN0b20tY29udHJvbCc7XG5pbXBvcnQgeyBkZWZhdWx0T3B0aW9uc0Rpc3BsYXlMaW1pdCwgU2VsZWN0VHlwZSB9IGZyb20gJy4vc2VsZWN0LnR5cGVzJztcbmltcG9ydCB7IERhdG9PcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb25zL29wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi9zZWxlY3QtYWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRvU2VsZWN0U2VhcmNoU3RyYXRlZ3ksIGRlZmF1bHRDbGllbnRTZWFyY2hTdHJhdGVneSB9IGZyb20gJy4vc2VhcmNoLnN0cmF0ZWd5JztcbmltcG9ydCB7IGNsb3Nlc3QsIHF1ZXJ5LCBzZXRTdHlsZSB9IGZyb20gJy4uL2ludGVybmFsL2hlbHBlcnMnO1xuaW1wb3J0IHsgRGF0b092ZXJsYXksIERhdG9UZW1wbGF0ZVBvcnRhbCB9IGZyb20gJy4uL2FuZ3VsYXIvb3ZlcmxheSc7XG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IF9zY3JvbGxUb09wdGlvbiB9IGZyb20gJy4uL29wdGlvbnMvb3B0aW9ucy11dGlscyc7XG5pbXBvcnQgeyBEYXRvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IG5vcm1hbGl6ZURhdGEgfSBmcm9tICcuLi9pbnRlcm5hbC9kYXRhLW5vcm1hbGl6YXRpb24nO1xuaW1wb3J0IHsgRGF0b0FjY29yZGlvbkNvbXBvbmVudCwgRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjb3JkaW9uL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgRGF0b0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vb3B0aW9ucy9ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vbGlzdC9saXN0LnR5cGVzJztcbmltcG9ydCB7IHVudGlsRGVzdHJveWVkIH0gZnJvbSAnbmd4LXRha2UtdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBpc0Fycm93VXBEb3duLCBpc0VudGVyLCBpc0VzY2FwZSB9IGZyb20gJy4uL3J4L2V2ZW50cyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBpc1N0cmluZywgc2l6ZSB9IGZyb20gJy4uL3V0aWxzL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgekluZGV4UGxlYXNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvei1pbmRleCc7XG5pbXBvcnQgeyBpc1Rlc3RFbnYgfSBmcm9tICcuLi9pc3Rlc3QtZW52JztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vdXRpbHMvdXNlci1hZ2VudCc7XG5pbXBvcnQgeyBQb3BwZXJPcHRpb25zIH0gZnJvbSAnLi4vc2VydmljZXMvcG9wcGVyJztcbmltcG9ydCB7IHNldERpbWVuc2lvbnMgfSBmcm9tICcuLi9pbnRlcm5hbC9jdXN0b20tZGltZW5zaW9ucyc7XG5cbmNvbnN0IHZhbHVlQWNjZXNzb3IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRvU2VsZWN0Q29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBwcm92aWRlcnM6IFt2YWx1ZUFjY2Vzc29yLCBEYXRvT3ZlcmxheV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBleHBvcnRBczogJ2RhdG9TZWxlY3QnXG59KVxuZXhwb3J0IGNsYXNzIERhdG9TZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ3VzdG9tQ29udHJvbFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIC8qKiBUaGUgZHJvcGRvd24gY29udGFpbmVyIGVsZW1lbnQgd2hpY2ggaXMgdGhlIHBvcnRhbCAgKiovXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJylcbiAgZHJvcGRvd246IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIFRoZSBvdmVybGF5IG9yaWdpbiB3aGljaCBpcyBvbmUgb2YgZGF0by10cmlnZ2VycyAqKi9cbiAgQFZpZXdDaGlsZCgnb3ZlcmxheU9yaWdpbicpXG4gIG9yaWdpbjogRWxlbWVudFJlZjtcblxuICAvKiogUXVlcnlMaXN0IG9mIGRhdG9PcHRpb25zIGNoaWxkcmVuICovXG4gIEBDb250ZW50Q2hpbGRyZW4oRGF0b09wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBvcHRpb25zOiBRdWVyeUxpc3Q8RGF0b09wdGlvbkNvbXBvbmVudD47XG5cbiAgLyoqIFF1ZXJ5TGlzdCBvZiBkYXRvQWNjb3JkaW9uR3JvdXBzIGNoaWxkcmVuICovXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEYXRvQWNjb3JkaW9uQ29tcG9uZW50KSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBhY2NvcmRpb246IFF1ZXJ5TGlzdDxEYXRvQWNjb3JkaW9uQ29tcG9uZW50PjtcblxuICAvKiogUXVlcnlMaXN0IG9mIGRhdG9Hcm91cHMgY2hpbGRyZW4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihEYXRvR3JvdXBDb21wb25lbnQpXG4gIGdyb3VwczogUXVlcnlMaXN0PERhdG9Hcm91cENvbXBvbmVudD47XG5cbiAgLyoqIEFsbG93aW5nIGN1c3RvbSB0ZW1wbGF0ZSBieSBwYXNzaW5nICpkYXRvQWN0aXZlIGRpcmVjdGl2ZSB3aGljaCBnZXRzIHRoZSBhY3RpdmUgYXMgY29udGV4dCAqL1xuICBAQ29udGVudENoaWxkKERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmUpXG4gIGFjdGl2ZTogRGF0b1NlbGVjdEFjdGl2ZURpcmVjdGl2ZTtcblxuICAvKiogVGhlIGtleSB0aGF0IHN0b3JlcyB0aGUgb3B0aW9uIGlkICovXG4gIEBJbnB1dCgpXG4gIGlkS2V5ID0gJ2lkJztcblxuICAvKiogVGhlIGxvb2t1cCBrZXkgZm9yIHRoZSBsYWJlbCAqL1xuICBASW5wdXQoKVxuICBsYWJlbEtleSA9ICdsYWJlbCc7XG5cbiAgLyoqIEEgcGxhY2Vob2xkZXIgZm9yIHRoZSB0cmlnZ2VyICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ2NvcmUuc2VsZWN0JztcblxuICAvKiogQSBwbGFjZWhvbGRlciBmb3IgdGhlIHNlYXJjaCAqL1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlciA9ICdjb3JlLnNlYXJjaCc7XG5cbiAgLyoqIEN1c3RvbSB0ZXh0IHdoZW4gd2UgZG9uJ3QgaGF2ZSByZXN1bHRzICovXG4gIEBJbnB1dCgpXG4gIHNldCBub0l0ZW1zTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX25vSXRlbXNMYWJlbCA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSh2YWx1ZSk7XG4gIH1cblxuICAvKiogSWYgZGVmaW5lZCwgaW5kaWNhdGVzIGJ5IHdoaWNoIGtleSB0aGUgZGF0YSBzaG91bGQgYmUgbm9ybWFsaXplZCAqL1xuICBASW5wdXQoKVxuICBncm91cEJ5OiBzdHJpbmc7XG5cbiAgLyoqIEFkZC9yZW1vdmVzIHNlYXJjaCBpbnB1dCAqL1xuICBASW5wdXQoKVxuICBpc0NvbWJvID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciBpdCdzIGEgZ3JvdXAgKi9cbiAgQElucHV0KClcbiAgaXNHcm91cCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZWNpZGUgd2hldGhlciB0byBmaWx0ZXIgdGhlIHJlc3VsdHMgaW50ZXJuYWxseSBiYXNlZCBvbiBzZWFyY2ggcXVlcnkuXG4gICAqIFVzZWZ1bCBmb3IgYXN5bmMgZmlsdGVyaW5nLCB3aGVyZSB3ZSBzZWFyY2ggdGhyb3VnaCBtb3JlIGNvbXBsZXggZGF0YS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGludGVybmFsU2VhcmNoID0gdHJ1ZTtcblxuICAvKiogRGVib3VuY2UgdGltZSB0byBlbWl0IHNlYXJjaCBxdWVyaWVzICovXG4gIEBJbnB1dCgpXG4gIGRlYm91bmNlVGltZSA9IDMwMDtcblxuICAvKiogV2hldGhlciB0byBzaG93IGxvYWRpbmcgaW5kaWNhdG9yICovXG4gIEBJbnB1dCgpXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IHNlbGVjdCBhbGwgY2hlY2tib3ggKi9cbiAgQElucHV0KClcbiAgYWxsb3dTZWxlY3RBbGwgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBhbGxvdyBzZWxlY3QgYWxsIGNoaXAuIGVtcHR5IG1lYW5zIGl0J3MgZGlzYWJsZWQgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0QWxsQ2hpcFR4dCA9ICcnO1xuXG4gIC8qKiBUaGUgdHlwZSBvZiB0aGUgc2VsZWN0ICovXG4gIEBJbnB1dCgpXG4gIHR5cGU6IFNlbGVjdFR5cGUgPSBTZWxlY3RUeXBlLlNJTkdMRTtcblxuICAvKiogQ2xpZW50IHNlYXJjaCBzdHJhdGVneSAqL1xuICBASW5wdXQoKVxuICBzZWFyY2hTdHJhdGVneTogRGF0b1NlbGVjdFNlYXJjaFN0cmF0ZWd5ID0gZGVmYXVsdENsaWVudFNlYXJjaFN0cmF0ZWd5O1xuXG4gIC8qKiBUaGUgZGVmYXVsdCBwb3NpdGlvbiBvZiB0aGUgZHJvcGRvd24gKi9cbiAgQElucHV0KClcbiAgcGxhY2VtZW50OiBQb3BwZXJPcHRpb25zWydwbGFjZW1lbnQnXSA9ICdib3R0b20tc3RhcnQnO1xuXG4gIEBJbnB1dCgpXG4gIGluZmluaXRlU2Nyb2xsTG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKiBMaW1pdCB0aGUgbnVtYmVyIG9mIHJlc3VsdHMgc2hvd24gKi9cbiAgQElucHV0KClcbiAgbGltaXRUbyA9IGRlZmF1bHRPcHRpb25zRGlzcGxheUxpbWl0O1xuXG4gIEBJbnB1dCgnbGltaXRTZWxlY3RlZFRvJylcbiAgc2V0IGxpbWl0U2VsZWN0ZWQobGltaXRTZWxlY3RlZFRvOiBudW1iZXIpIHtcbiAgICB0aGlzLmxpbWl0U2VsZWN0ZWRUbyA9IGxpbWl0U2VsZWN0ZWRUbztcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQWxsb3cgc29ydGluZyBvZiBzZWxlY3RlZCBvcHRpb25zIGluIG11bHRpIG1vZGUgKi9cbiAgQElucHV0KClcbiAgaXNTb3J0YWJsZSA9IGZhbHNlO1xuXG4gIC8qKiBFbGVtZW50IHRvIGFwcGVuZCB0aGUgb3B0aW9ucyBvdmVybGF5IHRvICovXG4gIEBJbnB1dCgpXG4gIGFwcGVuZFRvOiBIVE1MRWxlbWVudCB8IHN0cmluZztcblxuICAvKiogVGhlIG9wdGlvbnMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gKi9cbiAgQElucHV0KClcbiAgc2V0IGRhdGFTZXQoZGF0YTogYW55W10pIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFJ1bikge1xuICAgICAgdGhpcy5fZGF0YSA9IG5vcm1hbGl6ZURhdGEoZGF0YSwgdGhpcy5sYWJlbEtleSwgdGhpcy5ncm91cEJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqIGRhdGEgbm9ybWFsaXphdGlvbiwgaWYgcmVxdWlyZWQsIHdpbGwgYmUgaGFuZGxlZCBieSBuZ09uSW5pdCBpbiB0aGUgaW5pdGlhbCBydW4gKi9cbiAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgIH1cblxuICAgIC8qKiBJZiBpdCdzIGFzeW5jIHVwZGF0ZXMsIGNyZWF0ZSBtaWNybyB0YXNrIGluIG9yZGVyIHRvIHJlLXN1YnNjcmliZSB0byBjbGlja3MgKi9cbiAgICBpZiAodGhpcy5fZGF0YUlzRGlydHkpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvT3B0aW9uQ2xpY2sodGhpcy5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5tYXJrQXNBY3RpdmUodGhpcy5fbW9kZWwpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGF0YUlzRGlydHkgPSB0cnVlO1xuICB9XG5cbiAgLyoqIFNlYXJjaCBncm91cHMgYXMgd2VsbCBhcyBvcHRpb25zICovXG4gIEBJbnB1dCgpXG4gIHNlYXJjaEdyb3VwTGFiZWxzID0gdHJ1ZTtcblxuICAvKiogQWRkIGN1c3RvbSBjbGFzcyB0byB0aGUgc2VsZWN0IGRyb3BEb3duICovXG4gIEBJbnB1dCgpXG4gIGRhdG9TZWxlY3RDbGFzczogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogc2hvdyBlbXB0eSByZXN1bHQgdGV4dCAqL1xuICBASW5wdXQoKVxuICBzaG93RW1wdHlSZXN1bHRzVGV4dCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIGtlZXAgZm9jdXMgaW4gaW5wdXQgYWZ0ZXIgc2VsZWN0aW5nIG9wdGlvblxuICAgKi9cbiAgQElucHV0KClcbiAga2VlcEZvY3VzID0gZmFsc2U7XG5cbiAgLyoqIEVtaXQgc2VhcmNoIHZhbHVlIHdoZW4gaW50ZXJuYWwgc2VhcmNoIGlzIGZhbHNlICovXG4gIEBPdXRwdXQoKVxuICBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogRW1pdCB3aGVuIFt3aXRoQWN0aW9uc10gaXMgdHJ1ZSBhbmQgdGhlIHVzZXIgY2xpY2tzIHNhdmUgKi9cbiAgQE91dHB1dCgpXG4gIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGZldGNoID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBPdXRwdXQoKVxuICBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGxpbWl0U2VsZWN0ZWRUbzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXR0ZXJzIGFuZCBTZXR0ZXJzXG4gICAqL1xuXG4gIGdldCBjb250YWluc0dyb3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cHMgJiYgdGhpcy5ncm91cHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgZ2V0IG9wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW47XG4gIH1cblxuICBzZXQgb3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX29wZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBoYXNSZXN1bHRzKCkge1xuICAgIHJldHVybiB0aGlzLl9oYXNSZXN1bHRzO1xuICB9XG5cbiAgc2V0IGhhc1Jlc3VsdHModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oYXNSZXN1bHRzID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaGFzVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBpc1NpbmdsZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBTZWxlY3RUeXBlLlNJTkdMRTtcbiAgfVxuXG4gIGdldCBpc011bHRpKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IFNlbGVjdFR5cGUuTVVMVEk7XG4gIH1cblxuICBnZXQgX3Nob3dFbXB0eVJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0VtcHR5UmVzdWx0c1RleHQgJiYgdGhpcy5fZGF0YSAmJiAoIXRoaXMuaGFzUmVzdWx0cyB8fCAhdGhpcy5fZGF0YS5sZW5ndGgpICYmICF0aGlzLmlzR3JvdXA7XG4gIH1cblxuICBnZXQgX2NvdW50KCkge1xuICAgIGNvbnN0IHRvdGFsID0gdGhpcy5nZXRWaXNpYmxlT3B0aW9ucyhmYWxzZSkubGVuZ3RoO1xuICAgIGNvbnN0IGFjdGl2ZXMgPSB0aGlzLl9tb2RlbC5sZW5ndGg7XG4gICAgcmV0dXJuIGAoJHthY3RpdmVzfS8ke3RvdGFsfSlgO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgYWxsIHRoZSBvcHRpb25zIGFyZSBjaGVja2VkICovXG4gIGdldCBfaXNBbGxDaGVja2VkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFZpc2libGVPcHRpb25zKCkuZXZlcnkob3B0aW9uID0+IHRoaXMuX21vZGVsLmluZGV4T2Yob3B0aW9uKSA+IC0xKTtcbiAgfVxuXG4gIGdldCBzaG93U2VsZWN0QWxsQ2hpcCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmxlbmd0aCAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGg7XG4gIH1cblxuICAvKiogV2hldGhlciBzb21lIHRoZSBvcHRpb25zIGFyZSBjaGVja2VkICovXG4gIGdldCBfaXNJbmRldGVybWluYXRlbHlDaGVja2VkKCkge1xuICAgIGxldCBzb21lQ2hlY2tlZCxcbiAgICAgIHNvbWVOb3RDaGVja2VkID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCB2aXNpYmxlT3B0aW9uIG9mIHRoaXMuZ2V0VmlzaWJsZU9wdGlvbnMoKSkge1xuICAgICAgaWYgKHRoaXMuX21vZGVsLmluZGV4T2YodmlzaWJsZU9wdGlvbikgPiAtMSkge1xuICAgICAgICBzb21lQ2hlY2tlZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzb21lTm90Q2hlY2tlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoc29tZUNoZWNrZWQgJiYgc29tZU5vdENoZWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBGb3JtQ29udHJvbCB3aGljaCBsaXN0ZW5zIGZvciBzZWFyY2ggdmFsdWUgY2hhbmdlcyAqL1xuICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgLyoqIEV4cG9zZSB0aGUgc2VhcmNoIHRlcm0gc28gaXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgaGlnaGxpZ2h0IGRpcmVjdGl2ZSAqL1xuICBzZWFyY2hUZXJtID0gJyc7XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgUHJvcGVydGllc1xuICAgKi9cbiAgX25vSXRlbXNMYWJlbCA9IHRoaXMudHJhbnNsYXRlLnRyYW5zZm9ybSgnY29yZS5uby1pdGVtcycpO1xuXG4gIC8qKiBTdG9yZSB0aGUgaW5pdGlhbCBkYXRhICovXG4gIF9kYXRhID0gW107XG5cbiAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHdlIGFscmVhZHkgaW5pdGlhbGl6ZWQgdGhlIGRhdGEsXG4gICAqICBUaGlzIGlzIG9wdGltaXphdGlvbiBmb3Igbm9uIGFzeW5jIGNhbGxzLlxuICAgKiAqL1xuICBfZGF0YUlzRGlydHkgPSBmYWxzZTtcblxuICAvKiogVHJpZ2dlcnMgdGhlIGZvY3VzIG9uIHRoZSBpbnB1dCAqL1xuICBfZm9jdXMgPSBmYWxzZTtcblxuICAvKiogU3RvcmUgdGhlIGFjdGl2ZSBvcHRpb25zICovXG4gIF9tb2RlbCA9IFtdO1xuXG4gIC8qKiBFbmFibGUvZGlzYWJsZSB0aGUgc2VsZWN0LXRyaWdnZXIgKi9cbiAgX2Rpc2FibGVkO1xuXG4gIC8qKiBXaGV0ZXIgdGhlIGRyb3Bkb3duIGlzIG9wZW4gKi9cbiAgX29wZW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB3ZSBoYXZlIHNlYXJjaCByZXN1bHRzICovXG4gIF9oYXNSZXN1bHRzID0gdHJ1ZTtcblxuICAvKiogSW5kaWNhdGlvbiBpZiB3ZSBuZWVkIHRvIHNldCB0aGUgaW5pdGlhbCBjb250cm9sIHZhbHVlIGFzIGFjdGl2ZXMgKi9cbiAgX2luaXRpYWxPcGVuID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciBnZW5lcmF0ZSBjYW5jZWwvc2F2ZSBmb290ZXIgKi9cbiAgX3dpdGhBY3Rpb25zID0gZmFsc2U7XG5cbiAgX3dpdGhJbmZpbml0ZVNjcm9sbCA9IGZhbHNlO1xuXG4gIC8qKiBOb3RpZnkgdGhlIG11bHRpIHRyaWdnZXIgd2hlbiBjbGljayBvdXRzaWRlIHRvIHJlbW92ZSB0aGUgZm9jdXMgICovXG4gIF9jbGlja091dHNpZGUgPSBmYWxzZTtcblxuICAvKiogRHJvcGRvd24gc2l6ZSBjbGFzcyAqL1xuICBfZHJvcGRvd25DbGFzczogc3RyaW5nW107XG5cbiAgLyoqIHRydWUgdW50aWwgbmdPbkluaXQgKi9cbiAgcHJpdmF0ZSBpbml0aWFsUnVuID0gdHJ1ZTtcblxuICAvKiogU2VhcmNoIGNvbnRyb2wgc3Vic2NyaXB0aW9uICovXG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uO1xuXG4gIC8qKiBDbGlja3Mgb3B0aW9ucyBzdWJzY3JpcHRpb24gKi9cbiAgcHJpdmF0ZSBjbGlja3NTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBrZXlNYW5hZ2VyOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxEYXRvT3B0aW9uQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGluZmluaXRlU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgc2Nyb2xsRXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IERhdG9UcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBkYXRvT3ZlcmxheTogRGF0b092ZXJsYXksXG4gICAgQEF0dHJpYnV0ZSgnbmFrZWQnKSBwdWJsaWMgX25ha2VkLFxuICAgIEBBdHRyaWJ1dGUoJ2RhdG9TaXplJykgcHVibGljIHNpemUsXG4gICAgQEF0dHJpYnV0ZSgnd2lkdGgnKSBwdWJsaWMgd2lkdGg6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2l6ZSA9IHNpemUgfHwgJ21kJztcbiAgICB0aGlzLl9kcm9wZG93bkNsYXNzID0gW2BkYXRvLXNlbGVjdC0ke3RoaXMuc2l6ZX1gXTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhdG9TZWxlY3RDbGFzcykge1xuICAgICAgdGhpcy5fZHJvcGRvd25DbGFzcy5wdXNoKHRoaXMuZGF0b1NlbGVjdENsYXNzKTtcbiAgICB9XG5cbiAgICB0aGlzLl93aXRoQWN0aW9ucyA9IHRoaXMuc2F2ZS5vYnNlcnZlcnMubGVuZ3RoID09PSAxO1xuICAgIHRoaXMuX3dpdGhJbmZpbml0ZVNjcm9sbCA9IHRoaXMuZmV0Y2gub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMTtcbiAgICB0aGlzLmxpc3RlblRvU2VhcmNoKCk7XG4gICAgdGhpcy5fZGF0YSA9IG5vcm1hbGl6ZURhdGEodGhpcy5fZGF0YSwgdGhpcy5sYWJlbEtleSwgdGhpcy5ncm91cEJ5KTtcbiAgICB0aGlzLmluaXRpYWxSdW4gPSBmYWxzZTtcbiAgICAvLyBoZWlnaHQgaXMgYmVpbmcgY29udHJvbGxlZCBieSBzaXplIHByb3BlcnR5XG4gICAgc2V0RGltZW5zaW9ucyh0aGlzLndpZHRoLCBudWxsLCB0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpXG4gIG1hcmtUb3VjaGVkKCkge1xuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy5vblRvdWNoZWQoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgdGhlIGRyb3Bkb3duXG4gICAqL1xuICBjbG9zZSgpIHtcbiAgICB0aGlzLmtleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUoJycpO1xuICAgIHRoaXMuZGF0b092ZXJsYXkuZGV0YWNoKCk7XG4gICAgdGhpcy50b2dnbGUoKTtcbiAgICB0aGlzLl9mb2N1cyA9IGZhbHNlO1xuICAgIHRoaXMuX2NsaWNrT3V0c2lkZSA9IHRydWU7XG4gICAgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbiAmJiB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiAmJiB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5ibHVyLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGRyb3Bkb3duIHZpc2liaWxpdHlcbiAgICovXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIGlmICh0aGlzLm9wZW4gJiYgKHRoaXMuaXNNdWx0aSB8fCB0aGlzLmlzQ29tYm8pKSB7XG4gICAgICB0aGlzLl9mb2N1cyA9IHRydWU7XG4gICAgICB0aGlzLl9jbGlja091dHNpZGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoYWN0aXZlT3B0aW9uczogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RlbCA9IGFjdGl2ZU9wdGlvbnMgPyBjb2VyY2VBcnJheShhY3RpdmVPcHRpb25zKSA6IFtdO1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IG92ZXJUaGVMaW1pdCA9IHRoaXMubGltaXRTZWxlY3RlZFRvICYmIHRoaXMuaXNNdWx0aSAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPj0gdGhpcy5saW1pdFNlbGVjdGVkVG87XG4gICAgICB0aGlzLm1hcmtBc0FjdGl2ZSh0aGlzLl9tb2RlbCwgeyBkZXNlbGVjdEFsbDogdHJ1ZSB9KTtcbiAgICAgIG92ZXJUaGVMaW1pdCAmJiB0aGlzLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICB9XG4gICAgLyoqIEZvciBsYXRlciB1cGRhdGVzICovXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiB0aGUgb3ZlcmxheVxuICAgKi9cbiAgb3BlbkRyb3Bkb3duKGV2ZW50Pykge1xuICAgIC8qKiBDbG9zZSB0aGUgZHJvcGRvd24gd2hlbiB3ZSBjbGljayBvbiB0aGUgdHJpZ2dlciBhbmQgd2UgZG9uJ3QgaGF2ZSBzZWFyY2ggb3IgbXVsdGlwbGUgKi9cbiAgICBpZiAodGhpcy5vcGVuICYmICF0aGlzLmlzQ29tYm8gJiYgdGhpcy5pc1NpbmdsZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKiBEb24ndCBjbG9zZSB0aGUgZHJvcGRvd24gaWYgd2UgY2xpY2sgb24gdGhlIGlucHV0IGFuZCBpdCdzIG9wZW4gKi9cbiAgICBpZiAodGhpcy5vcGVuICYmICh0aGlzLmlzTXVsdGkgfHwgdGhpcy5pc0NvbWJvKSkge1xuICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldC5ub2RlTmFtZSAhPT0gJ0lOUFVUJykge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGF0b092ZXJsYXkuY3JlYXRlZCkge1xuICAgICAgdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRvT3ZlcmxheS5iYWNrRHJvcENsaWNrJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9jbGlja091dHNpZGUgPSB0cnVlO1xuICAgICAgdGhpcy5vcGVuICYmIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0b092ZXJsYXkuYXR0YWNoKHsgcGxhY2VtZW50OiB0aGlzLnBsYWNlbWVudCB9LCB0aGlzLl9kcm9wZG93bkNsYXNzKTtcblxuICAgIHRoaXMudG9nZ2xlKCk7XG5cbiAgICBpZiAodGhpcy5oYXNWYWx1ZSkge1xuICAgICAgLyoqXG4gICAgICAgKiBXaGVuIHdlIGZpcnN0IG9wZW4gdGhlIGRyb3Bkb3duIHdlIG5lZWQgdG8gbWFyayB0aGVcbiAgICAgICAqIEZvcm1Db250cm9sIHZhbHVlcyBhcyBhY3RpdmVzXG4gICAgICAgKi9cbiAgICAgIGlmICh0aGlzLl9pbml0aWFsT3Blbikge1xuICAgICAgICB0aGlzLm1hcmtBc0FjdGl2ZSh0aGlzLl9tb2RlbCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxPcGVuID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmxpbWl0U2VsZWN0ZWRUbyAmJiB0aGlzLl9tb2RlbC5sZW5ndGggPT09IHRoaXMubGltaXRTZWxlY3RlZFRvKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl93aXRoSW5maW5pdGVTY3JvbGwpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVJbmZpbml0ZVNjcm9sbCgpO1xuICAgIH1cblxuICAgIHNldFN0eWxlKHF1ZXJ5KCcuZGF0by1vdmVybGF5JyksICd6SW5kZXgnLCB6SW5kZXhQbGVhc2UoKSk7XG4gICAgY29uc3QgZHJvcGRvd25Db250YWluZXIgPSBxdWVyeSgnLmRhdG8tc2VsZWN0X19kcm9wZG93bi1jb250YWluZXInKTtcbiAgICBzZXRTdHlsZShkcm9wZG93bkNvbnRhaW5lciwgJ3dpZHRoJywgYCR7dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgKTtcblxuICAgIC8qKiBQcmV2ZW50IHNjcm9sbCB3aGlsZSB0aGUgZHJvcGRvd24gaXMgb3BlbiAqL1xuICAgIGlmIChpc1Rlc3RFbnYoKSkge1xuICAgICAgdGhpcy5zY3JvbGxFdmVudFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZlbnROYW1lID0gaXNNb2JpbGUoKSA/ICd0b3VjaG1vdmUnIDogJ3Njcm9sbCc7XG4gICAgICBsZXQgc2Nyb2xsRXZlbnQgPSBmcm9tRXZlbnQod2luZG93LCBldmVudE5hbWUpO1xuICAgICAgaWYgKGlzTW9iaWxlKCkpIHtcbiAgICAgICAgc2Nyb2xsRXZlbnQgPSBzY3JvbGxFdmVudC5waXBlKGZpbHRlcihldmVudCA9PiAhZHJvcGRvd25Db250YWluZXIuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gc2Nyb2xsRXZlbnQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKGUgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZVBlcmZlY3RTY3JvbGxCYXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZVRvT3B0aW9uQ2xpY2sodGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIodGhpcy5vcHRpb25zKS53aXRoV3JhcCgpO1xuICB9XG5cbiAgY2hlY2tBbGwoY2hlY2s6IGJvb2xlYW4pIHtcbiAgICBsZXQgY2hlY2tlZCA9IGNoZWNrO1xuICAgIGlmICh0aGlzLl9pc0luZGV0ZXJtaW5hdGVseUNoZWNrZWQpIHtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGlmICghZGF0b09wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9IGNoZWNrZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbnMgPSB0aGlzLmdldFZpc2libGVPcHRpb25zKCk7XG4gICAgY29uc3QgaXNBbGxWaXNpYmxlID0gdmlzaWJsZU9wdGlvbnMubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKGlzQWxsVmlzaWJsZSkge1xuICAgICAgdGhpcy5fbW9kZWwgPSBjaGVja2VkID8gdmlzaWJsZU9wdGlvbnMgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiB2aXNpYmxlT3B0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLl9tb2RlbC5pbmRleE9mKG9wdGlvbikgPT09IC0xKSB7XG4gICAgICAgICAgICB0ZW1wLnB1c2gob3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9kZWwgPSBbLi4udGhpcy5fbW9kZWwsIC4uLnRlbXBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSB0aGlzLl9tb2RlbC5maWx0ZXIob3B0aW9uID0+IHZpc2libGVPcHRpb25zLmluZGV4T2Yob3B0aW9uKSA9PT0gLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fbW9kZWwpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuYXN5bmNVcGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gIH1cblxuICByZW9yZGVyT3B0aW9ucyhuZXdPcmRlcjogYW55W10pIHtcbiAgICB0aGlzLl9tb2RlbCA9IG5ld09yZGVyO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fbW9kZWwpO1xuICB9XG5cbiAgcmVtb3ZlT3B0aW9uKG9wdGlvbikge1xuICAgIGNvbnN0IHVwZGF0ZURpc2FibGVkID0gdGhpcy5saW1pdFNlbGVjdGVkVG8gJiYgdGhpcy5fbW9kZWwubGVuZ3RoID09PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbztcbiAgICB0aGlzLl9tb2RlbCA9IHRoaXMuX21vZGVsLmZpbHRlcihjdXJyZW50ID0+IGN1cnJlbnRbdGhpcy5pZEtleV0gIT09IG9wdGlvblt0aGlzLmlkS2V5XSk7XG4gICAgY29uc3Qgb3B0aW9uVG9SZW1vdmUgPSB0aGlzLm9wdGlvbnMuZmluZChcbiAgICAgIGRhdG9PcHRpb24gPT4gZGF0b09wdGlvbi5vcHRpb24gJiYgZGF0b09wdGlvbi5vcHRpb25bdGhpcy5pZEtleV0gPT09IG9wdGlvblt0aGlzLmlkS2V5XVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBUbyBwcmV2ZW50IGNhc2VzIHdoZW4gdGhlIG9wdGlvbnMgYXJlIGxpbWl0ZWQgYW5kIGRvZXNudCBpbmNsdWRlIHRoZSBhY3RpdmUgb3B0aW9uLFxuICAgICAqIHRoYXQgY2FuIGJlIHJlYWNoZWQgb25seSBieSBzZXJ2ZXIgc2VhcmNoLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25Ub1JlbW92ZSkge1xuICAgICAgb3B0aW9uVG9SZW1vdmUuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdXBkYXRlRGlzYWJsZWQgJiYgdGhpcy51cGRhdGVEaXNhYmxlZFN0YXRlKCk7XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX21vZGVsKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFzeW5jVXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xuICB9XG5cbiAgcHJldmVudEJvZHlTY3JvbGwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoaXNBcnJvd1VwRG93bihldmVudCkpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBvdmVybGF5IHRvIGRpc3BsYXkgdGhlIHNlbGVjdCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKSB7XG4gICAgY29uc3QgdGVtcGxhdGVQb3J0YWwgPSBuZXcgRGF0b1RlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd24pO1xuICAgIGxldCBhcHBlbmRUb0VsZW1lbnQ7XG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuYXBwZW5kVG8pKSB7XG4gICAgICBhcHBlbmRUb0VsZW1lbnQgPSBjbG9zZXN0KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB0aGlzLmFwcGVuZFRvIGFzIHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwcGVuZFRvRWxlbWVudCA9IHRoaXMuYXBwZW5kVG87XG4gICAgfVxuXG4gICAgdGhpcy5kYXRvT3ZlcmxheS5jcmVhdGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHRlbXBsYXRlUG9ydGFsLCBhcHBlbmRUb0VsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBvcHBlciBkb2Vzbid0IHN1cHBvcnQgcGVyZmVjdC1zY3JvbGwtYmFyLCBzbyB3ZSBuZWVkIHRvIGRvIGl0IG1hbnVhbGx5XG4gICAqL1xuICBwcml2YXRlIGhhbmRsZVBlcmZlY3RTY3JvbGxCYXIoKSB7XG4gICAgY29uc3QgcGVyZmVjdFNjcm9sbEJhclBhcmVudCA9IGNsb3Nlc3QodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsICcucHMnKTtcbiAgICBpZiAocGVyZmVjdFNjcm9sbEJhclBhcmVudCkge1xuICAgICAgZnJvbUV2ZW50KHBlcmZlY3RTY3JvbGxCYXJQYXJlbnQsICdzY3JvbGwnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0aHJvdHRsZVRpbWUoMTApLFxuICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kYXRvT3ZlcmxheS5zY2hlZHVsZVVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFZpc2libGVPcHRpb25zKGdldFJhd09wdGlvbnMgPSB0cnVlKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoZGF0b09wdGlvbiA9PiAhZGF0b09wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKGdldFJhd09wdGlvbnMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm1hcChkYXRvT3B0aW9uID0+IGRhdG9PcHRpb24ub3B0aW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogTWFyayB0aGUgaW5pdGlhbCBjb250cm9sIHZhbHVlIGFzIGFjdGl2ZVxuICAgKi9cbiAgcHJpdmF0ZSBtYXJrQXNBY3RpdmUobW9kZWw6IGFueVtdLCBvcHRpb25zOiB7IGRlc2VsZWN0QWxsOiBib29sZWFuIH0gPSB7IGRlc2VsZWN0QWxsOiBmYWxzZSB9KSB7XG4gICAgY29uc3QgYXNBcnJheSA9IHRoaXMub3B0aW9ucy50b0FycmF5KCk7XG4gICAgaWYgKG9wdGlvbnMuZGVzZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgbW9kZWwpIHtcbiAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgbWF0Y2ggPSBhc0FycmF5LmZpbmQoY3VycmVudCA9PiBjdXJyZW50Lm9wdGlvbiAmJiBjdXJyZW50Lm9wdGlvblt0aGlzLmlkS2V5XSA9PT0gb3B0aW9uW3RoaXMuaWRLZXldKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5hY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGFsbCBvcHRpb25zXG4gICAqL1xuICBwcml2YXRlIHNob3dBbGwoKSB7XG4gICAgY29uc3QgaXNBY2NvcmRpb24gPSB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKTtcbiAgICBjb25zdCBncm91cENvbXBvbmVudHM6IExpc3RHcm91cENvbXBvbmVudFtdID0gdGhpcy5nZXRHcm91cENvbXBvbmVudHNBcnJheSgpO1xuXG4gICAgZm9yIChjb25zdCBncm91cENvbXBvbmVudCBvZiBncm91cENvbXBvbmVudHMpIHtcbiAgICAgIGdyb3VwQ29tcG9uZW50Ll9oaWRkZW4gPSBmYWxzZTtcblxuICAgICAgLyogSWYgdGhpcyBhY2NvcmRpb24gZ3JvdXAgaGFzIGJlZW4gZXhwZW5kZWQgYnkgdGhlIHNlYXJjaCBmdW5jdGlvbixcbiAgICAgICAgIHRoZW4gY29sbGFwc2UgaXQgdG8gdGhlIG9yaWdpbmFsIHN0YXRlXG4gICAgICAqL1xuICAgICAgaWYgKGlzQWNjb3JkaW9uKSB7XG4gICAgICAgIGNvbnN0IGFueUdyb3VwID0gZ3JvdXBDb21wb25lbnQgYXMgYW55O1xuXG4gICAgICAgIGlmIChhbnlHcm91cC5fX2V4cGVuZGVkKSB7XG4gICAgICAgICAgYW55R3JvdXAuX19leHBlbmRlZCA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGFjY29yZGlvbkdyb3VwID0gYW55R3JvdXAgYXMgRGF0b0FjY29yZGlvbkdyb3VwQ29tcG9uZW50O1xuICAgICAgICAgIGFjY29yZGlvbkdyb3VwLmNvbnRlbnQuZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlO1xuICAgICAgICAgIGFjY29yZGlvbkdyb3VwLmV4cGFuZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRhdG9PcHRpb24gb2YgdGhpcy5vcHRpb25zLnRvQXJyYXkoKSkge1xuICAgICAgZGF0b09wdGlvbi5oaWRlQW5kRGlzYWJsZWQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIG9wdGlvbnMgYW5kIHJldHVybnMgaWYgd2UgaGF2ZSByZXN1bHRcbiAgICovXG4gIHByaXZhdGUgc2VhcmNoT3B0aW9ucyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgbGV0IGhhc1Jlc3VsdCA9IGZhbHNlO1xuICAgIGNvbnN0IGdyb3VwQ29tcG9uZW50c0FycmF5OiBMaXN0R3JvdXBDb21wb25lbnRbXSA9IHRoaXMuZ2V0R3JvdXBDb21wb25lbnRzQXJyYXkoKTtcbiAgICBjb25zdCBoYXNHcm91cHMgPSBncm91cENvbXBvbmVudHNBcnJheS5sZW5ndGg7XG5cbiAgICBpZiAoaGFzR3JvdXBzKSB7XG4gICAgICBoYXNSZXN1bHQgPSB0aGlzLnNlYXJjaEluR3JvdXBzKGdyb3VwQ29tcG9uZW50c0FycmF5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhc1Jlc3VsdCA9IHRoaXMuc2VhcmNoSW5PcHRpb25zKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFzUmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBmb3IgbWF0Y2hpbmcgZ3JvdXBzIGFuZCBjaGlsZHJlbi5cbiAgICovXG4gIHByaXZhdGUgc2VhcmNoSW5Hcm91cHMoZ3JvdXBDb21wb25lbnRzQXJyYXk6IExpc3RHcm91cENvbXBvbmVudFtdLCB2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNBY2NvcmRpb24gPSB0aGlzLmlzQWNjb3JkaW9uR3JvdXAoKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gdGhpcy5fZGF0YS5sZW5ndGg7XG4gICAgbGV0IGhhc1Jlc3VsdHMgPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuX2RhdGFbaV07XG4gICAgICBjb25zdCBncm91cEtleSA9IHRoaXMuZ2V0R3JvdXBLZXkoZ3JvdXApO1xuICAgICAgY29uc3QgZ3JvdXBNYXRjaCA9IHRoaXMuc2VhcmNoR3JvdXBMYWJlbHMgJiYgdGhpcy5zZWFyY2hTdHJhdGVneShncm91cCwgdmFsdWUsIHRoaXMubGFiZWxLZXkpO1xuICAgICAgY29uc3QgZ3JvdXBPcHRpb25zID0gZ3JvdXAuY2hpbGRyZW4ubWFwKGNoaWxkID0+IGNoaWxkW3RoaXMuaWRLZXldKTtcbiAgICAgIC8qIHNob3cvaGlkZSB0aGUgb3B0aW9ucyAqL1xuICAgICAgY29uc3Qgc2hvd0dyb3VwID0gdGhpcy5zZWFyY2hJbk9wdGlvbnModmFsdWUsIGdyb3VwT3B0aW9ucywgZ3JvdXBNYXRjaCk7XG5cbiAgICAgIGlmIChzaG93R3JvdXAgJiYgIWhhc1Jlc3VsdHMpIHtcbiAgICAgICAgaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8qIEZpbmQgdGhlIHJpZ2h0IGNvbXBvbmVudCwgYWNjb3JkaW5nIHRvIHRoZSBpbnRlcm5hbCBrZXkgYXNzaWduZWQgaW4gdGhlIHByZXZpb3VzIHNlYXJjaC5cbiAgICAgICAgIFdoZW4gbm8gbWF0Y2ggaXMgZm91bmQsIGZhbGxpbmcgYmFjayB0byB0aGUgc2FtZSBpbmRleCBhcyB0aGUgZ3JvdXAgb3B0aW9uLlxuICAgICAgKiAgVGhlIGluZGV4IGlzIGNvbnNpZGVyZWQgbGVzcyBzYWZlLCBiZWNhdXNlIGl0IGNhbiBjaGFuZ2UgYWZ0ZXIgc29ydGluZy4gKi9cbiAgICAgIGNvbnN0IGdyb3VwQ29tcG9uZW50ID0gZ3JvdXBDb21wb25lbnRzQXJyYXkuZmluZCgoZzogYW55KSA9PiBnLl9fa2V5ID09PSBncm91cEtleSkgfHwgZ3JvdXBDb21wb25lbnRzQXJyYXlbaV07XG4gICAgICAvKiBTaG93L2hpZGUgdGhlIGdyb3VwICovXG4gICAgICBpZiAoZ3JvdXBDb21wb25lbnQpIHtcbiAgICAgICAgZ3JvdXBDb21wb25lbnQuX2hpZGRlbiA9ICFzaG93R3JvdXA7XG4gICAgICAgIC8qIGFzc2lnbiBhbiBpbnRlcm5hbCBrZXkgdG8gdGhlIGNvbXBvbmVudCBpbnN0YW5jZSwgc28gd2UgY2FuIGZpbmQgaXQgbGF0ZXIgKGFib3ZlKS4gKi9cbiAgICAgICAgKGdyb3VwQ29tcG9uZW50IGFzIGFueSkuX19rZXkgPSBncm91cEtleTtcbiAgICAgICAgLyogRXhwYW5kIHRoZSBhY2NvcmRpb24gb24gbWF0Y2hpbmcgcmVzdWx0cyAqL1xuICAgICAgICBpZiAoaXNBY2NvcmRpb24gJiYgc2hvd0dyb3VwKSB7XG4gICAgICAgICAgY29uc3QgYWNjb3JkaW9uR3JvdXAgPSBncm91cENvbXBvbmVudCBhcyBEYXRvQWNjb3JkaW9uR3JvdXBDb21wb25lbnQ7XG5cbiAgICAgICAgICBpZiAoIWFjY29yZGlvbkdyb3VwLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICBhY2NvcmRpb25Hcm91cC5jb250ZW50LmRpc2FibGVBbmltYXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgLyogRXhwYW5kIHRoZSBhY2NvcmRpb24gKi9cbiAgICAgICAgICAgIGFjY29yZGlvbkdyb3VwLmV4cGFuZCh0cnVlKTtcbiAgICAgICAgICAgIC8qIE1hcmsgdGhlIGFjY29yZGlvbiBhcyBleHBhbmRlZCwgc28gd2UgY2FuIHJldHVybiB0byB0aGUgZGVmYXVsdCBzdGF0ZSBsYXRlciAqL1xuICAgICAgICAgICAgKGdyb3VwQ29tcG9uZW50IGFzIGFueSkuX19leHBlbmRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc1Jlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIHRoZSBvcHRpb25zIHRvIHNob3cgb3IgaGlkZSBlYWNoIGFuZCByZXR1cm4gaWYgcmVzdWx0IGhhcyBiZWVuIGZvdW5kLlxuICAgKiBDb25zaWRlciB3ZSBoYXZlIGEgZ3JvdXAgdGhhdCBtYXRjaCB3ZSBzaG93IGFsbCBvZiBpdHMgb3B0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgc2VhcmNoSW5PcHRpb25zKHZhbHVlOiBzdHJpbmcsIGdyb3VwT3B0aW9ucyA9IFtdLCBncm91cE1hdGNoID0gZmFsc2UpIHtcbiAgICBsZXQgaGFzUmVzdWx0cyA9IGZhbHNlO1xuXG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGNvbnN0IG9wdGlvbkluR3JvdXAgPSBncm91cE9wdGlvbnMuaW5kZXhPZihkYXRvT3B0aW9uLm9wdGlvbiAmJiBkYXRvT3B0aW9uLm9wdGlvblt0aGlzLmlkS2V5XSkgIT09IC0xO1xuXG4gICAgICBpZiAoZ3JvdXBNYXRjaCAmJiBvcHRpb25Jbkdyb3VwKSB7XG4gICAgICAgIGRhdG9PcHRpb24uaGlkZUFuZERpc2FibGVkKGZhbHNlKTtcbiAgICAgICAgaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKCFzaXplKGdyb3VwT3B0aW9ucykgfHwgb3B0aW9uSW5Hcm91cCkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuc2VhcmNoU3RyYXRlZ3koZGF0b09wdGlvbiwgdmFsdWUsIHRoaXMubGFiZWxLZXkpO1xuXG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRvT3B0aW9uLmhpZGVBbmREaXNhYmxlZChmYWxzZSk7XG4gICAgICAgICAgaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaGFzUmVzdWx0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGtleSBvZiB0aGUgb3B0aW9uIGdyb3VwLiBJdCBjYW4gYmUgdGhlIGdyb3VwIElkIGlmIGV4aXN0cywgb3IgdGhlIGxhYmVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRHcm91cEtleShvcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uICYmIChvcHRpb25bdGhpcy5pZEtleV0gfHwgb3B0aW9uW3RoaXMubGFiZWxLZXldKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbXB0eSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc2VhcmNoIGNoYW5nZXMgYW5kIGZpbHRlciB0aGUgbGlzdFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub1NlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9XG4gICAgICB0aGlzLmlzQ29tYm8gJiZcbiAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBpZiAodGhpcy5pbnRlcm5hbFNlYXJjaCkge1xuICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuaGFzUmVzdWx0cyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGFzUmVzdWx0cyA9IHRoaXMuc2VhcmNoT3B0aW9ucyh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VhcmNoLmVtaXQodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gdmFsdWU7XG4gICAgICAgIHRoaXMua2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuYXN5bmNVcGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gb3B0aW9uIGNsaWNrIGFuZCBjaGFuZ2UgdGhlIHN0YXRlIGFjY29yZGluZ2x5XG4gICAqL1xuICBwcml2YXRlIHN1YnNjcmliZVRvT3B0aW9uQ2xpY2sob3B0aW9uczogUXVlcnlMaXN0PERhdG9PcHRpb25Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24gJiYgdGhpcy5jbGlja3NTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIC8qKiBHYXRoZXIgYWxsIHRoZSBjbGlja3MgKi9cbiAgICBjb25zdCBjbGlja3MkID0gb3B0aW9ucy5tYXAob3B0aW9uID0+XG4gICAgICBvcHRpb24uY2xpY2skLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQ6IEV2ZW50KSA9PiAoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIG9wdGlvblxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgLyoqIENvbnNpZGVyIGNoYW5nZSBpdCB0byB1c2UgZXZlbnQgZGVsZWdhdGlvbiAqL1xuICAgIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uID0gbWVyZ2UoLi4uY2xpY2tzJCkuc3Vic2NyaWJlKCh7IG9wdGlvbiwgZXZlbnQgfSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuaXNTaW5nbGUgPyB0aGlzLmhhbmRsZVNpbmdsZUNsaWNrKG9wdGlvbikgOiB0aGlzLmhhbmRsZU11bHRpQ2xpY2sob3B0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBvbkRvY3VtZW50S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChpc0VzY2FwZShldmVudCkgJiYgdGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLl9jbGlja091dHNpZGUgPSB0cnVlO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGlzRW50ZXIoZXZlbnQpKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXg7XG4gICAgICBjb25zdCBhY3RpdmUgPSB0aGlzLm9wdGlvbnMudG9BcnJheSgpW2luZGV4XTtcbiAgICAgIHRoaXMuaXNTaW5nbGUgPyB0aGlzLmhhbmRsZVNpbmdsZUNsaWNrKGFjdGl2ZSkgOiB0aGlzLmhhbmRsZU11bHRpQ2xpY2soYWN0aXZlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJvd1VwRG93bihldmVudCkpIHtcbiAgICAgIHRoaXMua2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJyk7XG4gICAgICBfc2Nyb2xsVG9PcHRpb24oe1xuICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgIHBhbmVsLFxuICAgICAgICBhY3RpdmVJdGVtSW5kZXg6IHRoaXMua2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXgsXG4gICAgICAgIGdyb3VwczogdGhpcy5ncm91cHMsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMub3B0aW9uc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRXNjYXBlKGV2ZW50KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRBbGwoKSB7XG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGRhdG9PcHRpb24uYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTaW5nbGVDbGljayhkYXRvT3B0aW9uOiBEYXRvT3B0aW9uQ29tcG9uZW50KSB7XG4gICAgaWYgKCFkYXRvT3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXRvT3B0aW9uLmFjdGl2ZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICBkYXRvT3B0aW9uLmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmF3T3B0aW9uID0gZGF0b09wdGlvbi5vcHRpb247XG4gICAgdGhpcy5fbW9kZWwgPSBbcmF3T3B0aW9uXTtcbiAgICB0aGlzLm9uQ2hhbmdlKHJhd09wdGlvbik7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVNdWx0aUNsaWNrKGRhdG9PcHRpb246IERhdG9PcHRpb25Db21wb25lbnQpIHtcbiAgICBpZiAoIWRhdG9PcHRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbW9kZWxMZW5ndGggPSB0aGlzLl9tb2RlbC5sZW5ndGg7XG4gICAgY29uc3QgdXBkYXRlRGlzYWJsZWQgPVxuICAgICAgdGhpcy5saW1pdFNlbGVjdGVkVG8gJiZcbiAgICAgIChtb2RlbExlbmd0aCA9PT0gdGhpcy5saW1pdFNlbGVjdGVkVG8gfHwgKG1vZGVsTGVuZ3RoID09PSB0aGlzLmxpbWl0U2VsZWN0ZWRUbyAtIDEgJiYgIWRhdG9PcHRpb24uYWN0aXZlKSk7XG4gICAgZGF0b09wdGlvbi5hY3RpdmUgPSAhZGF0b09wdGlvbi5hY3RpdmU7XG4gICAgY29uc3QgcmF3T3B0aW9uID0gZGF0b09wdGlvbi5vcHRpb247XG4gICAgaWYgKGRhdG9PcHRpb24uYWN0aXZlKSB7XG4gICAgICB0aGlzLl9tb2RlbCA9IHRoaXMuX21vZGVsLmNvbmNhdChyYXdPcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9tb2RlbCA9IHRoaXMuX21vZGVsLmZpbHRlcihjdXJyZW50ID0+IGN1cnJlbnRbdGhpcy5pZEtleV0gIT09IHJhd09wdGlvblt0aGlzLmlkS2V5XSk7XG4gICAgfVxuICAgIHVwZGF0ZURpc2FibGVkICYmIHRoaXMudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fbW9kZWwpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuYXN5bmNVcGRhdGVEcm9wZG93blBvc2l0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGFjdGl2YXRlSW5maW5pdGVTY3JvbGwoKSB7XG4gICAgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0by1zZWxlY3RfX2Ryb3Bkb3duJyksICdzY3JvbGwnKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwKSlcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kYXRvLXNlbGVjdF9fZHJvcGRvd24nKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBjb250YWluZXIub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBoZWlnaHQgLSBzY3JvbGxZO1xuICAgICAgICBpZiAob2Zmc2V0ID09PSAwIHx8IG9mZnNldCA9PT0gMSkge1xuICAgICAgICAgIHRoaXMuZmV0Y2guZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiAmJiB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uICYmIHRoaXMuY2xpY2tzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pbmZpbml0ZVN1YnNjcmlwdGlvbiAmJiB0aGlzLmluZmluaXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kYXRvT3ZlcmxheS5hdHRhY2hlZCAmJiB0aGlzLmRhdG9PdmVybGF5LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBncm91cCBjb21wb25lbnQgaXMgQWNjb3JkaW9uXG4gICAqL1xuICBwcml2YXRlIGlzQWNjb3JkaW9uR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjb3JkaW9uICYmIHRoaXMuYWNjb3JkaW9uLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhbiBhcnJheSBvZiB0aGUgZ3JvdXAgY29tcG9uZW50c1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRHcm91cENvbXBvbmVudHNBcnJheSgpOiBMaXN0R3JvdXBDb21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuaXNBY2NvcmRpb25Hcm91cCgpID8gdGhpcy5hY2NvcmRpb24uZmlyc3QuZ3JvdXBzLnRvQXJyYXkoKSA6IHRoaXMuZ3JvdXBzICYmIHRoaXMuZ3JvdXBzLnRvQXJyYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGlzYWJsZWRTdGF0ZSgpIHtcbiAgICBjb25zdCBkaXNhYmxlZCA9IHRoaXMuX21vZGVsLmxlbmd0aCA9PT0gdGhpcy5saW1pdFNlbGVjdGVkVG87XG4gICAgZm9yIChjb25zdCBkYXRvT3B0aW9uIG9mIHRoaXMub3B0aW9ucy50b0FycmF5KCkpIHtcbiAgICAgIGlmICghZGF0b09wdGlvbi5hY3RpdmUpIHtcbiAgICAgICAgZGF0b09wdGlvbi5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB0aGUgb3ZlcmxheSB3aWxsIGJlIHVwZGF0ZSBBRlRFUiBDaGFuZ2UgRGV0ZWN0aW9uIHdhcyBkb25lXG4gIC8vIFNvIHRoZSBpdGVtcyBpbiB0aGUgaW5wdXQgKGFuZCBpdHMgaGVpZ2h0KSBpcyB1cGRhdGVcbiAgcHJpdmF0ZSBhc3luY1VwZGF0ZURyb3Bkb3duUG9zaXRpb24oKSB7XG4gICAgaWYgKHRoaXMuZGF0b092ZXJsYXkgJiYgdGhpcy5kYXRvT3ZlcmxheS5hdHRhY2hlZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRhdG9PdmVybGF5LnNjaGVkdWxlVXBkYXRlKCksIDApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -83,4 +83,4 @@ var DatoTriggerSingle = /** @class */ (function () {
|
|
|
83
83
|
return DatoTriggerSingle;
|
|
84
84
|
}());
|
|
85
85
|
export { DatoTriggerSingle };
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1zaW5nbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvc2VsZWN0L3RyaWdnZXItc2luZ2xlL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7O0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVF2RTtJQTJCRSwyQkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFIMUMsaUJBQVksR0FBRyxFQUFFLENBQUM7SUFHMkIsQ0FBQztJQXBCOUMsc0JBQUksMENBQVc7YUFBZixVQUFnQixLQUFLO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQzs7O09BQUE7SUFLRCxzQkFBSSxzQ0FBTzthQUFYLFVBQVksS0FBSztZQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDOzs7T0FBQTtJQUVELHNCQUFJLDhDQUFlO2FBQW5CO1lBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNoRCxDQUFDOzs7T0FBQTtJQU9ELG9DQUFRLEdBQVI7UUFDRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxzQkFBSSx1Q0FBUTthQUFaO1lBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RixDQUFDOzs7T0FBQTs7Z0JBUndCLGlCQUFpQjs7SUF6QjFDO1FBREMsS0FBSyxFQUFFO2tDQUNTLFdBQVc7OERBQU07SUFFekI7UUFBUixLQUFLLEVBQUU7a0NBQVMseUJBQXlCO3FEQUFDO0lBRzNDO1FBREMsS0FBSyxFQUFFOzs7d0RBSVA7SUFFUTtRQUFSLEtBQUssRUFBRTs7dURBQWtCO0lBRzFCO1FBREMsS0FBSyxFQUFFOzs7b0RBSVA7SUFsQlUsaUJBQWlCO1FBTjdCLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IsNmhCQUE4QztZQUM5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FFaEQsQ0FBQzt5Q0E0QnlCLGlCQUFpQjtPQTNCL0IsaUJBQWlCLENBb0M3QjtJQUFELHdCQUFDO0NBQUEsQUFwQ0QsSUFvQ0M7U0FwQ1ksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vc2VsZWN0LWFjdGl2ZS5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLXRyaWdnZXItc2luZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0eWxlVXJsczogW2AuL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudC5zY3NzYF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b1RyaWdnZXJTaW5nbGUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBsb2FkaW5nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KCkgYWN0aXZlOiBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZSkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQElucHV0KCkgbGFiZWxLZXk6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZXQgY29udGV4dCh2YWx1ZSkge1xuICAgIHRoaXMuX21vZGVsID0geyAkaW1wbGljaXQ6IHZhbHVlIH07XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGhpZGVQbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gIXRoaXMuX21vZGVsIHx8ICF0aGlzLl9tb2RlbC4kaW1wbGljaXQ7XG4gIH1cblxuICBfcGxhY2Vob2xkZXIgPSAnJztcbiAgX21vZGVsOiB7ICRpbXBsaWNpdD86IGFueSB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNkci5kZXRhY2goKTtcbiAgfVxuXG4gIGdldCBnZXRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwgJiYgdGhpcy5fbW9kZWwuJGltcGxpY2l0ICYmIHRoaXMuX21vZGVsLiRpbXBsaWNpdFt0aGlzLmxhYmVsS2V5XTtcbiAgfVxufVxuIl19
|
package/esm5/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
window.coreVersion = '22.9.8';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuOS44JztcbiJdfQ==
|