ng-virtual-list 14.12.3 → 14.12.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/esm2020/lib/components/ng-list-item/const/index.mjs +2 -1
- package/esm2020/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.mjs +1 -4
- package/esm2020/lib/components/ng-prerender-container/core/prerender-track-box.mjs +3 -1
- package/esm2020/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +5 -15
- package/esm2020/lib/components/ng-scroll-view/base/base-scroll-view.component.mjs +16 -2
- package/esm2020/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +19 -9
- package/esm2020/lib/components/ng-scroller/ng-scroller.component.mjs +7 -11
- package/esm2020/lib/core/interfaces/metrics.mjs +1 -1
- package/esm2020/lib/core/interfaces/recalculate-metrics-options.mjs +1 -1
- package/esm2020/lib/core/track-box.mjs +16 -8
- package/esm2020/lib/directives/locale-sensitive/locale-sensitive.directive.mjs +6 -6
- package/esm2020/lib/models/render-item-config.model.mjs +1 -1
- package/esm2020/lib/models/render-item-measures.model.mjs +1 -1
- package/esm2020/lib/ng-virtual-list.component.mjs +89 -85
- package/esm2020/lib/utils/animator/animator.mjs +23 -15
- package/esm2020/lib/utils/animator/interfaces/animator-params.mjs +1 -1
- package/esm2020/lib/utils/animator/interfaces/animator-update-data.mjs +1 -1
- package/esm2020/lib/utils/animator/types/easing.mjs +1 -1
- package/esm2020/lib/utils/event-emitter/event-emitter.mjs +2 -2
- package/esm2020/lib/utils/event-emitter/interfaces/event-emitter.mjs +1 -1
- package/fesm2015/ng-virtual-list.mjs +181 -151
- package/fesm2015/ng-virtual-list.mjs.map +1 -1
- package/fesm2020/ng-virtual-list.mjs +178 -146
- package/fesm2020/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-prerender-container/components/ng-prerender-scroller/ng-prerender-scroller.component.d.ts +0 -3
- package/lib/components/ng-scroll-bar/ng-scroll-bar.component.d.ts +1 -6
- package/lib/components/ng-scroll-view/base/base-scroll-view.component.d.ts +7 -1
- package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +4 -0
- package/lib/components/ng-scroller/ng-scroller.component.d.ts +1 -3
- package/lib/core/interfaces/metrics.d.ts +2 -0
- package/lib/core/interfaces/recalculate-metrics-options.d.ts +1 -0
- package/lib/directives/locale-sensitive/locale-sensitive.directive.d.ts +2 -2
- package/lib/models/render-item-config.model.d.ts +4 -0
- package/lib/models/render-item-measures.model.d.ts +4 -0
- package/lib/ng-virtual-list.component.d.ts +0 -1
- package/lib/utils/animator/animator.d.ts +3 -2
- package/lib/utils/animator/interfaces/animator-params.d.ts +1 -1
- package/lib/utils/animator/interfaces/animator-update-data.d.ts +1 -1
- package/lib/utils/animator/types/easing.d.ts +1 -1
- package/lib/utils/event-emitter/event-emitter.d.ts +1 -1
- package/lib/utils/event-emitter/interfaces/event-emitter.d.ts +1 -1
- package/package.json +1 -1
|
@@ -34,9 +34,10 @@ export const DEFAULT_TEMPLATE_CONTEXT = {
|
|
|
34
34
|
fullSize: false,
|
|
35
35
|
totalItems: 0,
|
|
36
36
|
grabbing: false,
|
|
37
|
+
inverted: false,
|
|
37
38
|
},
|
|
38
39
|
reseted: false,
|
|
39
40
|
index: -1,
|
|
40
41
|
api: null,
|
|
41
42
|
};
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLWxpc3QtaXRlbS9jb25zdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3BDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQ2xCLGVBQWUsR0FBRyxpQkFBaUIsRUFDbkMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM5RCxrQkFBa0IsR0FBRyxlQUFlLEVBQ3BDLFFBQVEsR0FBRyxVQUFVLEVBQ3JCLGFBQWEsR0FBRyxHQUFHLEVBQ25CLE9BQU8sR0FBRyxTQUFTLEVBQ25CLFNBQVMsR0FBRyxHQUFHLEVBQ2YsWUFBWSxHQUFHLFdBQVcsRUFDMUIsVUFBVSxHQUFHLFNBQVMsRUFDdEIsYUFBYSxHQUFHLFlBQVksRUFDNUIsWUFBWSxHQUFHLFdBQVcsRUFDMUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsZUFBZSxHQUFHLFVBQVUsRUFDNUIsY0FBYyxHQUFHLFNBQVMsRUFDMUIsa0JBQWtCLEdBQUcsU0FBUyxFQUM5QixzQkFBc0IsR0FBRyxhQUFhLEVBQ3RDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBcUI7SUFDdEQsSUFBSSxFQUFFLFNBQVM7SUFDZixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsU0FBUztJQUNuQixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRTtRQUNKLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLEtBQUs7UUFDZixTQUFTLEVBQUUsS0FBSztRQUNoQixHQUFHLEVBQUUsS0FBSztRQUNWLEdBQUcsRUFBRSxLQUFLO1FBQ1YsSUFBSSxFQUFFLEtBQUs7UUFDWCxXQUFXLEVBQUUsS0FBSztRQUNsQixNQUFNLEVBQUUsQ0FBQztRQUNULFVBQVUsRUFBRSxLQUFLO1FBQ2pCLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsS0FBSztRQUNqQixVQUFVLEVBQUUsS0FBSztRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLHdCQUF3QixFQUFFLEtBQUs7UUFDL0IsUUFBUSxFQUFFLENBQUM7UUFDWCxNQUFNLEVBQUUsR0FBRztRQUNYLFlBQVksRUFBRSxDQUFDO1FBQ2YsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixPQUFPLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO1FBQ1YsVUFBVSxFQUFFLEtBQUs7UUFDakIsZUFBZSxFQUFFLFFBQVE7UUFDekIsT0FBTyxFQUFFLEtBQUs7UUFDZCxNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxLQUFLO1FBQ2YsVUFBVSxFQUFFLENBQUM7UUFDYixRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO0tBQ2xCO0lBQ0QsT0FBTyxFQUFFLEtBQUs7SUFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsR0FBRyxFQUFFLElBQUk7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0cml4M2QgfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgSVRlbXBsYXRlQ29udGV4dCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgSUQgPSAnaWQnLFxyXG4gICAgTkdWTF9WSVNJQklMSVRZID0gJ25ndmwtdmlzaWJpbGl0eScsXHJcbiAgICBNQVRSSVhfM0RfSElEREVOID0gbWF0cml4M2QoLTEwMDAsIC0xMDAwLCAwLCAxLCAxLCAxLCAwLCAwLCAwKSxcclxuICAgIEFUVFJfQVJFQV9TRUxFQ1RFRCA9ICdhcmVhLXNlbGVjdGVkJyxcclxuICAgIFBPU0lUSU9OID0gJ3Bvc2l0aW9uJyxcclxuICAgIFBPU0lUSU9OX1pFUk8gPSAnMCcsXHJcbiAgICBJVEVNX0lEID0gJ2l0ZW0taWQnLFxyXG4gICAgS0VZX1NQQUNFID0gJyAnLFxyXG4gICAgS0VZX0FSUl9MRUZUID0gJ0Fycm93TGVmdCcsXHJcbiAgICBLRVlfQVJSX1VQID0gJ0Fycm93VXAnLFxyXG4gICAgS0VZX0FSUl9SSUdIVCA9ICdBcnJvd1JpZ2h0JyxcclxuICAgIEtFWV9BUlJfRE9XTiA9ICdBcnJvd0Rvd24nLFxyXG4gICAgRVZFTlRfRk9DVVNfSU4gPSAnZm9jdXNpbicsXHJcbiAgICBFVkVOVF9GT0NVU19PVVQgPSAnZm9jdXNvdXQnLFxyXG4gICAgRVZFTlRfS0VZX0RPV04gPSAna2V5ZG93bicsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRUQgPSAnc25hcHBlZCcsXHJcbiAgICBDTEFTU19OQU1FX1NOQVBQRURfT1VUID0gJ3NuYXBwZWQtb3V0JyxcclxuICAgIENMQVNTX05BTUVfRk9DVVMgPSAnZm9jdXMnO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBERUZBVUxUX1RFTVBMQVRFX0NPTlRFWFQ6IElUZW1wbGF0ZUNvbnRleHQgPSB7XHJcbiAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxyXG4gICAgICAgIHByZXZEYXRhOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbmV4dERhdGE6IHVuZGVmaW5lZCxcclxuICAgICAgICBtZWFzdXJlczogbnVsbCxcclxuICAgICAgICBjb25maWc6IHtcclxuICAgICAgICAgICAgZm9jdXNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgbmV3OiBmYWxzZSxcclxuICAgICAgICAgICAgb2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgZXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbGxhcHNhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3RpY2t5OiAwLFxyXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBwZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkT3V0OiBmYWxzZSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbDogZmFsc2UsXHJcbiAgICAgICAgICAgIGR5bmFtaWM6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1NuYXBwaW5nTWV0aG9kQWR2YW5jZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICB0YWJJbmRleDogMCxcclxuICAgICAgICAgICAgekluZGV4OiAnMCcsXHJcbiAgICAgICAgICAgIGxheW91dE9mZnNldDogMCxcclxuICAgICAgICAgICAgbGF5b3V0SW5kZXhPZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgICAgICAgIGRpdmlkZXM6IDAsXHJcbiAgICAgICAgICAgIHNuYXBUb0l0ZW06IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwVG9JdGVtQWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIGlzRmlyc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc0xhc3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBmdWxsU2l6ZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IDAsXHJcbiAgICAgICAgICAgIGdyYWJiaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgaW52ZXJ0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzZXRlZDogZmFsc2UsXHJcbiAgICAgICAgaW5kZXg6IC0xLFxyXG4gICAgICAgIGFwaTogbnVsbCxcclxuICAgIH07XHJcbiJdfQ==
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, combineLatest, from, takeUntil, tap } from 'rxjs';
|
|
3
|
-
import { TextDirections } from '../../../../enums';
|
|
4
3
|
import { BaseScrollView } from '../../../ng-scroll-view/base/base-scroll-view.component';
|
|
5
4
|
import { SCROLL_VIEW_INVERSION } from '../../../ng-scroll-view';
|
|
6
5
|
import { BEHAVIOR_INSTANT, DEFAULT_SCROLLBAR_ENABLED, LEFT_PROP_NAME, TOP_PROP_NAME } from '../../../../const';
|
|
@@ -21,8 +20,6 @@ import * as i2 from "../../../../directives/locale-sensitive/locale-sensitive.di
|
|
|
21
20
|
export class NgPrerenderScrollerComponent extends BaseScrollView {
|
|
22
21
|
constructor() {
|
|
23
22
|
super();
|
|
24
|
-
this._$langTextDir = new BehaviorSubject(TextDirections.LTR);
|
|
25
|
-
this.$langTextDir = this._$langTextDir.asObservable();
|
|
26
23
|
this._$scrollbarEnabled = new BehaviorSubject(DEFAULT_SCROLLBAR_ENABLED);
|
|
27
24
|
this.$scrollbarEnabled = this._$scrollbarEnabled.asObservable();
|
|
28
25
|
this._$classes = new BehaviorSubject({});
|
|
@@ -138,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
138
135
|
}], classes: [{
|
|
139
136
|
type: Input
|
|
140
137
|
}] } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLXNjcm9sbGVyL25nLXByZXJlbmRlci1zY3JvbGxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUNB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LFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGdCQUFnQjtnQkFDM0csVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTthQUNwQyxDQUFDLENBQUM7U0FDTjtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRVMsZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7eUhBMUpRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHNIQVIxQjtRQUNQLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7UUFDbkQsRUFBRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUNsRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0tBQy9ELDZHQUsrQixvQkFBb0Isb0RDaEN4RCxxYkFPTTsyRkR3Qk8sNEJBQTRCO2tCQVp4QyxTQUFTOytCQUNJLHVCQUF1QixhQUd0Qjt3QkFDUCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO3dCQUNuRCxFQUFFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO3dCQUNsRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO3FCQUMvRCxjQUNXLEtBQUssbUJBQ0EsdUJBQXVCLENBQUMsTUFBTTswRUFJL0MsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRTtnQkFTbEQsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVNjcm9sbFZpZXcgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9iYXNlL2Jhc2Utc2Nyb2xsLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsLXZpZXcnO1xyXG5pbXBvcnQgeyBCRUhBVklPUl9JTlNUQU5ULCBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELCBMRUZUX1BST1BfTkFNRSwgVE9QX1BST1BfTkFNRSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Nyb2xsQm94IH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsZXIvdXRpbHMnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcblxyXG4vKipcclxuICogTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci1zY3JvbGxlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgdXNlVmFsdWU6IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCwgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2Nyb2xsVmlldyB7XHJcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxCYXInLCB7IHJlYWQ6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IH0pXHJcbiAgICBzY3JvbGxCYXI6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJGxhbmdUZXh0RGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZXh0RGlyZWN0aW9uPihUZXh0RGlyZWN0aW9ucy5MVFIpO1xyXG4gICAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJHNjcm9sbGJhckVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQpO1xyXG4gICAgcmVhZG9ubHkgJHNjcm9sbGJhckVuYWJsZWQgPSB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc2Nyb2xsYmFyRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgc2Nyb2xsYmFyRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XHJcbiAgICByZWFkb25seSAkY2xhc3NlcyA9IHRoaXMuXyRjbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBjbGFzc2VzKHY6IHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kY2xhc3Nlcy5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBjbGFzc2VzKCkgeyByZXR1cm4gdGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGFjdHVhbENsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICAgIHJlYWRvbmx5ICRhY3R1YWxDbGFzc2VzID0gdGhpcy5fJGFjdHVhbENsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY29udGFpbmVyQ2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gICAgcmVhZG9ubHkgJGNvbnRhaW5lckNsYXNzZXMgPSB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyR0aHVtYlNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkdGh1bWJTaXplID0gdGhpcy5fJHRodW1iU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRzY3JvbGxiYXJTaG93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICByZWFkb25seSAkc2Nyb2xsYmFyU2hvdyA9IHRoaXMuXyRzY3JvbGxiYXJTaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIG92ZXJyaWRlIHNldCB4KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl94ID0gdGhpcy5fYWN0dWFsWCA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB4KCkgeyByZXR1cm4gdGhpcy5feDsgfVxyXG5cclxuICAgIG92ZXJyaWRlIHNldCB5KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl95ID0gdGhpcy5fYWN0dWFsWSA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB5KCkgeyByZXR1cm4gdGhpcy5feTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAodmlld3BvcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHZpZXdwb3J0Qm91bmRzLm5leHQoeyB3aWR0aDogdmlld3BvcnQub2Zmc2V0V2lkdGgsIGhlaWdodDogdmlld3BvcnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25SZXNpemVDb250ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGNvbnRlbnRCb3VuZHMubmV4dCh7IHdpZHRoOiBjb250ZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGNvbnRlbnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zY3JvbGxCb3ggPSBuZXcgU2Nyb2xsQm94KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNsYXNzZXMgPSB0aGlzLiRjbGFzc2VzLFxyXG4gICAgICAgICAgICAkZGlyZWN0aW9uID0gdGhpcy4kZGlyZWN0aW9uO1xyXG5cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KChbJGNsYXNzZXMsICRkaXJlY3Rpb25dKSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoW2NsYXNzZXMsIGRpcmVjdGlvbl0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuXyRhY3R1YWxDbGFzc2VzLm5leHQoeyAuLi5jbGFzc2VzLCBbZGlyZWN0aW9uXTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNvbnRlbnRCb3VuZHMgPSB0aGlzLiRjb250ZW50Qm91bmRzLFxyXG4gICAgICAgICAgICAkdmlld3BvcnRCb3VuZHMgPSB0aGlzLiR2aWV3cG9ydEJvdW5kcyxcclxuICAgICAgICAgICAgJGlzVmVydGljYWwgPSB0aGlzLiRpc1ZlcnRpY2FsLFxyXG4gICAgICAgICAgICAkc2Nyb2xsYmFyRW5hYmxlZCA9IHRoaXMuJHNjcm9sbGJhckVuYWJsZWQ7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoWyRkaXJlY3Rpb24sICRzY3JvbGxiYXJFbmFibGVkLCAkaXNWZXJ0aWNhbCwgJGNvbnRlbnRCb3VuZHMsICR2aWV3cG9ydEJvdW5kc10pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKFtkaXJlY3Rpb24sIHNjcm9sbGJhckVuYWJsZWRdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5uZXh0KHsgW2RpcmVjdGlvbl06IHRydWUsIGVuYWJsZWQ6IHNjcm9sbGJhckVuYWJsZWQsIHNjcm9sbGFibGU6IHNjcm9sbGJhckVuYWJsZWQgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0ICRzdGFydE9mZnNldCA9IHRoaXMuJHN0YXJ0T2Zmc2V0LFxyXG4gICAgICAgICAgICAkZW5kT2Zmc2V0ID0gdGhpcy4kZW5kT2Zmc2V0LFxyXG4gICAgICAgICAgICAkdGh1bWJTaXplID0gdGhpcy4kdGh1bWJTaXplO1xyXG5cclxuICAgICAgICBmcm9tKFskZW5kT2Zmc2V0LCAkc3RhcnRPZmZzZXQsICR0aHVtYlNpemUsICRpc1ZlcnRpY2FsXSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICBjb25zdCAkdXBkYXRlU2Nyb2xsQmFyID0gdGhpcy4kdXBkYXRlU2Nyb2xsQmFyO1xyXG5cclxuICAgICAgICAkdXBkYXRlU2Nyb2xsQmFyLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU2Nyb2xsQmFySGFuZGxlcih1cGRhdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuXyRkaXJlY3Rpb24uZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYlNpemUsXHJcbiAgICAgICAgICAgICAgICB0aHVtYlBvc2l0aW9uLFxyXG4gICAgICAgICAgICB9ID0gdGhpcy5fc2Nyb2xsQm94LmNhbGN1bGF0ZVNjcm9sbCh7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB2aWV3cG9ydFdpZHRoOiBzY3JvbGxWaWV3cG9ydC5vZmZzZXRXaWR0aCwgdmlld3BvcnRIZWlnaHQ6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCwgY29udGVudEhlaWdodDogc2Nyb2xsQ29udGVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBzdGFydE9mZnNldCxcclxuICAgICAgICAgICAgICAgIGVuZE9mZnNldCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWDogdGhpcy5feCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWTogdGhpcy5feSxcclxuICAgICAgICAgICAgICAgIG1pblNpemU6IDEsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl8kdGh1bWJTaXplLm5leHQodGh1bWJTaXplKTtcclxuICAgICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQmFyPy5zY3JvbGwoe1xyXG4gICAgICAgICAgICAgICAgW2lzVmVydGljYWwgPyBUT1BfUFJPUF9OQU1FIDogTEVGVF9QUk9QX05BTUVdOiB0aHVtYlBvc2l0aW9uLCBmaXJlVXBkYXRlOiBmYWxzZSwgYmVoYXZpb3I6IEJFSEFWSU9SX0lOU1RBTlQsXHJcbiAgICAgICAgICAgICAgICB1c2VyQWN0aW9uOiBmYWxzZSwgYmxlbmRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl8kc2Nyb2xsYmFyU2hvdy5uZXh0KHRoaXMuc2Nyb2xsYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNjcm9sbEJhcigpIHtcclxuICAgICAgICB0aGlzLl8kdXBkYXRlU2Nyb2xsQmFyLm5leHQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGxvY2FsZVNlbnNpdGl2ZSBbbGFuZ1RleHREaXJdPVwiKCRsYW5nVGV4dERpciB8IGFzeW5jKSFcIiBbbGlzdERpcl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKVwiIGNsYXNzPVwibmd2bF9fY29udGFpbmVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIigkY29udGFpbmVyQ2xhc3NlcyB8IGFzeW5jKSFcIj5cclxuICAgIDxkaXYgI3Njcm9sbFZpZXdwb3J0IHBhcnQ9XCJzY3JvbGxlclwiIGNsYXNzPVwibmd2bF9fc2Nyb2xsZXJcIj5cclxuICAgICAgICA8ZGl2ICNzY3JvbGxDb250ZW50IHBhcnQ9XCJsaXN0XCIgY2xhc3M9XCJuZ3ZsX19saXN0XCIgW25nQ2xhc3NdPVwiKCRhY3R1YWxDbGFzc2VzIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItY29udGFpbmVyL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLXNjcm9sbGVyL25nLXByZXJlbmRlci1zY3JvbGxlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FB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QUMsQ0FBQztJQUMvQyxDQUFDO0lBRVMsZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7eUhBdkpRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHNIQVIxQjtRQUNQLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7UUFDbkQsRUFBRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtRQUNsRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO0tBQy9ELDZHQUsrQixvQkFBb0Isb0RDaEN4RCxxYkFPTTsyRkR3Qk8sNEJBQTRCO2tCQVp4QyxTQUFTOytCQUNJLHVCQUF1QixhQUd0Qjt3QkFDUCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO3dCQUNuRCxFQUFFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO3dCQUNsRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO3FCQUMvRCxjQUNXLEtBQUssbUJBQ0EsdUJBQXVCLENBQUMsTUFBTTswRUFJL0MsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRTtnQkFNbEQsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVdGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUZXh0RGlyZWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVNjcm9sbFZpZXcgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9iYXNlL2Jhc2Utc2Nyb2xsLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU0NST0xMX1ZJRVdfSU5WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsLXZpZXcnO1xyXG5pbXBvcnQgeyBCRUhBVklPUl9JTlNUQU5ULCBERUZBVUxUX1NDUk9MTEJBUl9FTkFCTEVELCBMRUZUX1BST1BfTkFNRSwgVE9QX1BST1BfTkFNRSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2Nyb2xsQm94IH0gZnJvbSAnLi4vLi4vLi4vbmctc2Nyb2xsZXIvdXRpbHMnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi8uLi8uLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcblxyXG4vKipcclxuICogTmdQcmVyZW5kZXJTY3JvbGxlckNvbXBvbmVudFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1zY3JvbGxlci9uZy1wcmVyZW5kZXItc2Nyb2xsZXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci1zY3JvbGxlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmctcHJlcmVuZGVyLXNjcm9sbGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi9uZy1zY3JvbGxlci9uZy1zY3JvbGxlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfTk9STUFMSVpFX1ZBTFVFX0ZST01fWkVSTywgdXNlVmFsdWU6IHRydWUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCwgdXNlVmFsdWU6IGZhbHNlIH0sXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyU2Nyb2xsZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2Nyb2xsVmlldyB7XHJcbiAgICBAVmlld0NoaWxkKCdzY3JvbGxCYXInLCB7IHJlYWQ6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IH0pXHJcbiAgICBzY3JvbGxCYXI6IE5nU2Nyb2xsQmFyQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIHByb3RlY3RlZCBfJHNjcm9sbGJhckVuYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfU0NST0xMQkFSX0VOQUJMRUQpO1xyXG4gICAgcmVhZG9ubHkgJHNjcm9sbGJhckVuYWJsZWQgPSB0aGlzLl8kc2Nyb2xsYmFyRW5hYmxlZC5hc09ic2VydmFibGUoKTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgc2Nyb2xsYmFyRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHNjcm9sbGJhckVuYWJsZWQubmV4dCh2KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXQgc2Nyb2xsYmFyRW5hYmxlZCgpIHsgcmV0dXJuIHRoaXMuXyRzY3JvbGxiYXJFbmFibGVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRjbGFzc2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtjTmFtZTogc3RyaW5nXTogYm9vbGVhbiB9Pih7fSk7XHJcbiAgICByZWFkb25seSAkY2xhc3NlcyA9IHRoaXMuXyRjbGFzc2VzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBjbGFzc2VzKHY6IHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0pIHtcclxuICAgICAgICBpZiAodGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICAgICAgICB0aGlzLl8kY2xhc3Nlcy5uZXh0KHYpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldCBjbGFzc2VzKCkgeyByZXR1cm4gdGhpcy5fJGNsYXNzZXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfJGFjdHVhbENsYXNzZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW2NOYW1lOiBzdHJpbmddOiBib29sZWFuIH0+KHt9KTtcclxuICAgIHJlYWRvbmx5ICRhY3R1YWxDbGFzc2VzID0gdGhpcy5fJGFjdHVhbENsYXNzZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF8kY29udGFpbmVyQ2xhc3NlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbY05hbWU6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pO1xyXG4gICAgcmVhZG9ubHkgJGNvbnRhaW5lckNsYXNzZXMgPSB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyR0aHVtYlNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgICByZWFkb25seSAkdGh1bWJTaXplID0gdGhpcy5fJHRodW1iU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgXyRzY3JvbGxiYXJTaG93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICByZWFkb25seSAkc2Nyb2xsYmFyU2hvdyA9IHRoaXMuXyRzY3JvbGxiYXJTaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICAgIG92ZXJyaWRlIHNldCB4KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl94ID0gdGhpcy5fYWN0dWFsWCA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB4KCkgeyByZXR1cm4gdGhpcy5feDsgfVxyXG5cclxuICAgIG92ZXJyaWRlIHNldCB5KHY6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQgJiYgIU51bWJlci5pc05hTih2KSkge1xyXG4gICAgICAgICAgICB0aGlzLl95ID0gdGhpcy5fYWN0dWFsWSA9IHY7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG92ZXJyaWRlIGdldCB5KCkgeyByZXR1cm4gdGhpcy5feTsgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBvblJlc2l6ZVZpZXdwb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAodmlld3BvcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJHZpZXdwb3J0Qm91bmRzLm5leHQoeyB3aWR0aDogdmlld3BvcnQub2Zmc2V0V2lkdGgsIGhlaWdodDogdmlld3BvcnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25SZXNpemVDb250ZW50KCkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5fJGNvbnRlbnRCb3VuZHMubmV4dCh7IHdpZHRoOiBjb250ZW50Lm9mZnNldFdpZHRoLCBoZWlnaHQ6IGNvbnRlbnQub2Zmc2V0SGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zY3JvbGxCb3ggPSBuZXcgU2Nyb2xsQm94KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNsYXNzZXMgPSB0aGlzLiRjbGFzc2VzLFxyXG4gICAgICAgICAgICAkZGlyZWN0aW9uID0gdGhpcy4kZGlyZWN0aW9uO1xyXG5cclxuICAgICAgICBjb21iaW5lTGF0ZXN0KChbJGNsYXNzZXMsICRkaXJlY3Rpb25dKSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoW2NsYXNzZXMsIGRpcmVjdGlvbl0pID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuXyRhY3R1YWxDbGFzc2VzLm5leHQoeyAuLi5jbGFzc2VzLCBbZGlyZWN0aW9uXTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgY29uc3QgJGNvbnRlbnRCb3VuZHMgPSB0aGlzLiRjb250ZW50Qm91bmRzLFxyXG4gICAgICAgICAgICAkdmlld3BvcnRCb3VuZHMgPSB0aGlzLiR2aWV3cG9ydEJvdW5kcyxcclxuICAgICAgICAgICAgJGlzVmVydGljYWwgPSB0aGlzLiRpc1ZlcnRpY2FsLFxyXG4gICAgICAgICAgICAkc2Nyb2xsYmFyRW5hYmxlZCA9IHRoaXMuJHNjcm9sbGJhckVuYWJsZWQ7XHJcblxyXG4gICAgICAgIGNvbWJpbmVMYXRlc3QoWyRkaXJlY3Rpb24sICRzY3JvbGxiYXJFbmFibGVkLCAkaXNWZXJ0aWNhbCwgJGNvbnRlbnRCb3VuZHMsICR2aWV3cG9ydEJvdW5kc10pLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKFtkaXJlY3Rpb24sIHNjcm9sbGJhckVuYWJsZWRdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl8kY29udGFpbmVyQ2xhc3Nlcy5uZXh0KHsgW2RpcmVjdGlvbl06IHRydWUsIGVuYWJsZWQ6IHNjcm9sbGJhckVuYWJsZWQsIHNjcm9sbGFibGU6IHNjcm9sbGJhckVuYWJsZWQgfSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGNvbnN0ICRzdGFydE9mZnNldCA9IHRoaXMuJHN0YXJ0T2Zmc2V0LFxyXG4gICAgICAgICAgICAkZW5kT2Zmc2V0ID0gdGhpcy4kZW5kT2Zmc2V0LFxyXG4gICAgICAgICAgICAkdGh1bWJTaXplID0gdGhpcy4kdGh1bWJTaXplO1xyXG5cclxuICAgICAgICBmcm9tKFskZW5kT2Zmc2V0LCAkc3RhcnRPZmZzZXQsICR0aHVtYlNpemUsICRpc1ZlcnRpY2FsXSkucGlwZShcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJhcigpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICBjb25zdCAkdXBkYXRlU2Nyb2xsQmFyID0gdGhpcy4kdXBkYXRlU2Nyb2xsQmFyO1xyXG5cclxuICAgICAgICAkdXBkYXRlU2Nyb2xsQmFyLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCYXJIYW5kbGVyKHRydWUpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU2Nyb2xsQmFySGFuZGxlcih1cGRhdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHRoaXMuXyRkaXJlY3Rpb24uZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5fJHN0YXJ0T2Zmc2V0LmdldFZhbHVlKCksXHJcbiAgICAgICAgICAgIGVuZE9mZnNldCA9IHRoaXMuXyRlbmRPZmZzZXQuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aHVtYlNpemUsXHJcbiAgICAgICAgICAgICAgICB0aHVtYlBvc2l0aW9uLFxyXG4gICAgICAgICAgICB9ID0gdGhpcy5fc2Nyb2xsQm94LmNhbGN1bGF0ZVNjcm9sbCh7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB2aWV3cG9ydFdpZHRoOiBzY3JvbGxWaWV3cG9ydC5vZmZzZXRXaWR0aCwgdmlld3BvcnRIZWlnaHQ6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCwgY29udGVudEhlaWdodDogc2Nyb2xsQ29udGVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBzdGFydE9mZnNldCxcclxuICAgICAgICAgICAgICAgIGVuZE9mZnNldCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWDogdGhpcy5feCxcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uWTogdGhpcy5feSxcclxuICAgICAgICAgICAgICAgIG1pblNpemU6IDEsXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl8kdGh1bWJTaXplLm5leHQodGh1bWJTaXplKTtcclxuICAgICAgICBpZiAodXBkYXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsQmFyPy5zY3JvbGwoe1xyXG4gICAgICAgICAgICAgICAgW2lzVmVydGljYWwgPyBUT1BfUFJPUF9OQU1FIDogTEVGVF9QUk9QX05BTUVdOiB0aHVtYlBvc2l0aW9uLCBmaXJlVXBkYXRlOiBmYWxzZSwgYmVoYXZpb3I6IEJFSEFWSU9SX0lOU1RBTlQsXHJcbiAgICAgICAgICAgICAgICB1c2VyQWN0aW9uOiBmYWxzZSwgYmxlbmRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl8kc2Nyb2xsYmFyU2hvdy5uZXh0KHRoaXMuc2Nyb2xsYWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVNjcm9sbEJhcigpIHtcclxuICAgICAgICB0aGlzLl8kdXBkYXRlU2Nyb2xsQmFyLm5leHQoKTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGxvY2FsZVNlbnNpdGl2ZSBbbGFuZ1RleHREaXJdPVwiKCRsYW5nVGV4dERpciB8IGFzeW5jKSFcIiBbbGlzdERpcl09XCIoJGRpcmVjdGlvbiB8IGFzeW5jKVwiIGNsYXNzPVwibmd2bF9fY29udGFpbmVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIigkY29udGFpbmVyQ2xhc3NlcyB8IGFzeW5jKSFcIj5cclxuICAgIDxkaXYgI3Njcm9sbFZpZXdwb3J0IHBhcnQ9XCJzY3JvbGxlclwiIGNsYXNzPVwibmd2bF9fc2Nyb2xsZXJcIj5cclxuICAgICAgICA8ZGl2ICNzY3JvbGxDb250ZW50IHBhcnQ9XCJsaXN0XCIgY2xhc3M9XCJuZ3ZsX19saXN0XCIgW25nQ2xhc3NdPVwiKCRhY3R1YWxDbGFzc2VzIHwgYXN5bmMpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -10,6 +10,7 @@ const createItemData = (data, isVertical, bounds, boundsSize, dynamic, divides,
|
|
|
10
10
|
measures: {
|
|
11
11
|
position: 0,
|
|
12
12
|
scrollSize: 0,
|
|
13
|
+
maxScrollSize: 0,
|
|
13
14
|
size: itemSize,
|
|
14
15
|
row: {
|
|
15
16
|
size: itemSize,
|
|
@@ -69,6 +70,7 @@ const createItemData = (data, isVertical, bounds, boundsSize, dynamic, divides,
|
|
|
69
70
|
fullSize: false,
|
|
70
71
|
layoutIndexOffset: 0,
|
|
71
72
|
totalItems: 0,
|
|
73
|
+
inverted: false,
|
|
72
74
|
},
|
|
73
75
|
};
|
|
74
76
|
};
|
|
@@ -198,4 +200,4 @@ export class PrerenderTrackBox extends EventEmitter {
|
|
|
198
200
|
}
|
|
199
201
|
}
|
|
200
202
|
}
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLXRyYWNrLWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUE2QixNQUFNLFdBQVcsQ0FBQztBQUUvRSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsVUFBbUIsRUFBRSxNQUFhLEVBQUUsVUFBa0IsRUFDbEcsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxFQUFNLEVBQUUsS0FBYSxFQUEwQixFQUFFO0lBQ3RHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBUSxFQUMvRCxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFRLENBQUM7SUFDbkUsT0FBTztRQUNILEtBQUs7UUFDTCxFQUFFO1FBQ0YsUUFBUSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsR0FBRyxFQUFFO2dCQUNE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QjtRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUNsQyxJQUFJLENBQUMseUJBQXlCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztTQUN6QztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0sIElWaXJ0dWFsTGlzdENvbGxlY3Rpb24sIElWaXJ0dWFsTGlzdEl0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IElkIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVzXCI7XHJcbmltcG9ydCB7IElTaXplIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENNYXAgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY21hcFwiO1xyXG5pbXBvcnQgeyBQcmVyZW5kZXJDYWNoZSB9IGZyb20gXCIuLi90eXBlcy9jYWNoZVwiO1xyXG5pbXBvcnQgeyBCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL25nLWxpc3QtaXRlbS9iYXNlXCI7XHJcbmltcG9ydCB7IElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBERUZBVUxUX0RJVklERVMsIERFRkFVTFRfRFlOQU1JQ19TSVpFLCBERUZBVUxUX0lURU1fU0laRSwgREVGQVVMVF9TTkFQX1RPX0lURU1fQUxJR04sIFRSQUNLX0JZX1BST1BFUlRZX05BTUUgfSBmcm9tIFwiLi4vLi4vLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50JDEgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2NvbXBvbmVudC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZXZlbnQtZW1pdHRlci9ldmVudC1lbWl0dGVyXCI7XHJcbmltcG9ydCB7IFByZXJlbmRlclRyYWNrQm94RXZlbnRzLCBQcmVyZW5kZXJUcmFja0JveEhhbmRsZXJzIH0gZnJvbSBcIi4uL2V2ZW50c1wiO1xyXG5cclxuY29uc3QgY3JlYXRlSXRlbURhdGEgPSAoZGF0YTogSVZpcnR1YWxMaXN0SXRlbSwgaXNWZXJ0aWNhbDogYm9vbGVhbiwgYm91bmRzOiBJU2l6ZSwgYm91bmRzU2l6ZTogbnVtYmVyLFxyXG4gICAgZHluYW1pYzogYm9vbGVhbiwgZGl2aWRlczogbnVtYmVyLCBpdGVtU2l6ZTogbnVtYmVyLCBpZDogSWQsIGluZGV4OiBudW1iZXIpOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtID0+IHtcclxuICAgIGNvbnN0IHcgPSAoaXNWZXJ0aWNhbCA/IChib3VuZHMud2lkdGggLyBkaXZpZGVzKSA6IGl0ZW1TaXplKSBhcyBhbnksXHJcbiAgICAgICAgaCA9IChpc1ZlcnRpY2FsID8gaXRlbVNpemUgOiAoYm91bmRzLmhlaWdodCAvIGRpdmlkZXMpKSBhcyBhbnk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGluZGV4LFxyXG4gICAgICAgIGlkLFxyXG4gICAgICAgIG1lYXN1cmVzOiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiAwLFxyXG4gICAgICAgICAgICBzY3JvbGxTaXplOiAwLFxyXG4gICAgICAgICAgICBzaXplOiBpdGVtU2l6ZSxcclxuICAgICAgICAgICAgcm93OiB7XHJcbiAgICAgICAgICAgICAgICBzaXplOiBpdGVtU2l6ZSxcclxuICAgICAgICAgICAgICAgIG9kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBldmVuOiBmYWxzZVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib3VuZHNTaXplLFxyXG4gICAgICAgICAgICBhYnNvbHV0ZVN0YXJ0UG9zaXRpb246IDAsXHJcbiAgICAgICAgICAgIGFic29sdXRlU3RhcnRQb3NpdGlvblBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIGFic29sdXRlRW5kUG9zaXRpb246IDAsXHJcbiAgICAgICAgICAgIGFic29sdXRlRW5kUG9zaXRpb25QZXJjZW50OiAwLFxyXG4gICAgICAgICAgICBkZWx0YTogMCxcclxuICAgICAgICAgICAgeDogMCxcclxuICAgICAgICAgICAgeTogMCxcclxuICAgICAgICAgICAgdHJhbnNmb3JtZWRYOiAwLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFk6IDAsXHJcbiAgICAgICAgICAgIHo6IDAsXHJcbiAgICAgICAgICAgIHJvdGF0aW9uWDogMCxcclxuICAgICAgICAgICAgcm90YXRpb25ZOiAwLFxyXG4gICAgICAgICAgICByb3RhdGlvblo6IDAsXHJcbiAgICAgICAgICAgIHNjYWxlWDogMCxcclxuICAgICAgICAgICAgc2NhbGVZOiAwLFxyXG4gICAgICAgICAgICBzY2FsZVo6IDAsXHJcbiAgICAgICAgICAgIHdpZHRoOiB3LFxyXG4gICAgICAgICAgICBoZWlnaHQ6IGgsXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxyXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IDAsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcclxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixcclxuICAgICAgICAgICAgc2Nyb2xsRGlyZWN0aW9uOiAwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBwcmV2aW91c2VEYXRhOiBkYXRhLFxyXG4gICAgICAgIG5leHREYXRhOiBkYXRhLFxyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgICBuZXc6IGZhbHNlLFxyXG4gICAgICAgICAgICBvZGQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBldmVuOiBmYWxzZSxcclxuICAgICAgICAgICAgY29sbGFwc2FibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzdGlja3k6IDAsXHJcbiAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBwZWRPdXQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBpc1ZlcnRpY2FsLFxyXG4gICAgICAgICAgICBkeW5hbWljLFxyXG4gICAgICAgICAgICBpc1NuYXBwaW5nTWV0aG9kQWR2YW5jZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXZpZGVzOiAxLFxyXG4gICAgICAgICAgICB0YWJJbmRleDogMCxcclxuICAgICAgICAgICAgb3BhY2l0eTogMSxcclxuICAgICAgICAgICAgekluZGV4OiBcIjBcIixcclxuICAgICAgICAgICAgc25hcFRvSXRlbTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXBUb0l0ZW1BbGlnbjogREVGQVVMVF9TTkFQX1RPX0lURU1fQUxJR04sXHJcbiAgICAgICAgICAgIGxheW91dE9mZnNldDogMCxcclxuICAgICAgICAgICAgaXNGaXJzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzTGFzdDogZmFsc2UsXHJcbiAgICAgICAgICAgIGZ1bGxTaXplOiBmYWxzZSxcclxuICAgICAgICAgICAgbGF5b3V0SW5kZXhPZmZzZXQ6IDAsXHJcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IDAsXHJcbiAgICAgICAgfSxcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFByZXJlbmRlclRyYWNrQm94XHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUHJlcmVuZGVyVHJhY2tCb3ggZXh0ZW5kcyBFdmVudEVtaXR0ZXI8UHJlcmVuZGVyVHJhY2tCb3hFdmVudHMsIFByZXJlbmRlclRyYWNrQm94SGFuZGxlcnM+IHtcclxuICAgIHByaXZhdGUgX21hcDogQ01hcDxJZCwgSVNpemU+IHwgbnVsbCA9IG5ldyBDTWFwPElkLCBJU2l6ZT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9pdGVtczogSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiB8IG51bGwgPSBuZXcgQXJyYXk8SVZpcnR1YWxMaXN0SXRlbT4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9jb250YWluZXI6IFZpZXdDb250YWluZXJSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRDbGFzczogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRzOiBBcnJheTxDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4+IHwgbnVsbCA9IG5ldyBBcnJheTxDb21wb25lbnRSZWY8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlciB8IG51bGwgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLl9jb21wb25lbnRzO1xyXG4gICAgICAgIGlmICghIWNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wIG9mIGNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29tcC5pbnN0YW5jZS5nZXRCb3VuZHMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21hcD8uc2V0KGNvbXAuaW5zdGFuY2UuaXRlbUlkISwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2goUHJlcmVuZGVyVHJhY2tCb3hFdmVudHMuUkVTSVpFLCAodGhpcy5fbWFwPy50b09iamVjdCgpIHx8IHt9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIF9hY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgZ2V0IGFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuX2FjdGl2ZTsgfVxyXG5cclxuICAgIHByaXZhdGUgcmVmcmVzaChjb21wb25lbnRDbGFzczogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4sIGJvdW5kczogSVNpemUsIHBhcmFtczogSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IGlzVmVydGljYWwgPSBwYXJhbXMuaXNWZXJ0aWNhbCA/PyB0cnVlLFxyXG4gICAgICAgICAgICBkeW5hbWljID0gcGFyYW1zLmR5bmFtaWMgPz8gREVGQVVMVF9EWU5BTUlDX1NJWkUsXHJcbiAgICAgICAgICAgIGRpdmlkZXMgPSBwYXJhbXMuZGl2aWRlcyA/PyBERUZBVUxUX0RJVklERVMsXHJcbiAgICAgICAgICAgIGl0ZW1zU2l6ZSA9IHBhcmFtcy5pdGVtU2l6ZSA/PyBERUZBVUxUX0lURU1fU0laRSxcclxuICAgICAgICAgICAgdHJhY2tCeSA9IHBhcmFtcy50cmFja0J5ID8/IFRSQUNLX0JZX1BST1BFUlRZX05BTUUsXHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXJlciA9IHBhcmFtcy5pdGVtUmVuZGVyZXIsXHJcbiAgICAgICAgICAgIGJvdW5kc1NpemUgPSBpc1ZlcnRpY2FsID8gYm91bmRzLmhlaWdodCA6IGJvdW5kcy53aWR0aCxcclxuICAgICAgICAgICAgaXRlbXMgPSB0aGlzLl9pdGVtcywgY29tcG9uZW50cyA9IHRoaXMuX2NvbXBvbmVudHMsXHJcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyID0gdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW1zIHx8ICFjb21wb25lbnRzIHx8ICF0aGlzLl9jb250YWluZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG90YWxTaXplID0gMCwgaiA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSAwOyBpID49IGw7IGktLSkge1xyXG4gICAgICAgICAgICBpZiAodG90YWxTaXplID4gYm91bmRzU2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBpZiAoISFpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGl0ZW1bdHJhY2tCeV0sIGluZGV4ID0gaXRlbXMubGVuZ3RoIC0gaSAtIDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgY29tcDogQ29tcG9uZW50UmVmPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+O1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoIDw9IGopIHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wID0gdGhpcy5fY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5yZW5kZXJlciA9IGl0ZW1SZW5kZXJlcjtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISFyZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbXAuaW5zdGFuY2UuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaChjb21wKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcCA9IGNvbXBvbmVudHNbal07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLml0ZW0gPSBjcmVhdGVJdGVtRGF0YShpdGVtLCBpc1ZlcnRpY2FsLCBib3VuZHMsIGJvdW5kc1NpemUsIGR5bmFtaWMsIGRpdmlkZXMsIGl0ZW1zU2l6ZSwgaWQsIGluZGV4KTtcclxuICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb21wLmluc3RhbmNlLmdldEJvdW5kcygpLFxyXG4gICAgICAgICAgICAgICAgICAgIHcgPSBpc1ZlcnRpY2FsID8gd2lkdGggOiB3aWR0aCA8IGl0ZW1zU2l6ZSA/IGl0ZW1zU2l6ZSA6IHdpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGggPSBpc1ZlcnRpY2FsID8gaGVpZ2h0IDwgaXRlbXNTaXplID8gaXRlbXNTaXplIDogaGVpZ2h0IDogaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgdG90YWxTaXplICs9IGlzVmVydGljYWwgPyBoIDogdztcclxuICAgICAgICAgICAgICAgIGorKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGUoY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gY29udGFpbmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KGNvbXBvbmVudENsYXNzOiBDb21wb25lbnQkMTxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PiwgaXRlbXM6IElWaXJ0dWFsTGlzdENvbGxlY3Rpb24sXHJcbiAgICAgICAgYm91bmRzOiBJU2l6ZSwgcGFyYW1zOiBJUHJlcmVuZGVyVHJhY2tCb3hSZWZyZXNoUGFyYW1zKSB7XHJcbiAgICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcztcclxuICAgICAgICB0aGlzLl9jb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaChjb21wb25lbnRDbGFzcywgYm91bmRzLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENhY2hlKCk6IFByZXJlbmRlckNhY2hlIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLl9tYXAgPyB0aGlzLl9tYXAudG9PYmplY3QoKSA6IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyKCkge1xyXG4gICAgICAgIGlmICghIXRoaXMuX21hcCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0aGlzLl9jb21wb25lbnRzO1xyXG4gICAgICAgIGlmICghIWNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcCBvZiBjb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISFjb21wICYmICEhb2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbXAuaW5zdGFuY2UuZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb2ZmKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgZGlzcG9zZSgpIHtcclxuICAgICAgICBzdXBlci5kaXNwb3NlKCk7XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX21hcCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGhpcy5fbWFwID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2l0ZW1zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudENsYXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudENsYXNzID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbnRhaW5lcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCEhdGhpcy5fY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLXRyYWNrLWJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb3JlL3ByZXJlbmRlci10cmFjay1ib3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUE2QixNQUFNLFdBQVcsQ0FBQztBQUUvRSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXNCLEVBQUUsVUFBbUIsRUFBRSxNQUFhLEVBQUUsVUFBa0IsRUFDbEcsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxFQUFNLEVBQUUsS0FBYSxFQUEwQixFQUFFO0lBQ3RHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBUSxFQUMvRCxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFRLENBQUM7SUFDbkUsT0FBTztRQUNILEtBQUs7UUFDTCxFQUFFO1FBQ0YsUUFBUSxFQUFFO1lBQ04sUUFBUSxFQUFFLENBQUM7WUFDWCxVQUFVLEVBQUUsQ0FBQztZQUNiLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksRUFBRSxRQUFR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O1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFO1lBQ2xDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSVJlbmRlclZpcnR1YWxMaXN0SXRlbSwgSVZpcnR1YWxMaXN0Q29sbGVjdGlvbiwgSVZpcnR1YWxMaXN0SXRlbSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSWQgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ01hcCB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9jbWFwXCI7XHJcbmltcG9ydCB7IFByZXJlbmRlckNhY2hlIH0gZnJvbSBcIi4uL3R5cGVzL2NhY2hlXCI7XHJcbmltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbmctbGlzdC1pdGVtL2Jhc2VcIjtcclxuaW1wb3J0IHsgSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IERFRkFVTFRfRElWSURFUywgREVGQVVMVF9EWU5BTUlDX1NJWkUsIERFRkFVTFRfSVRFTV9TSVpFLCBERUZBVUxUX1NOQVBfVE9fSVRFTV9BTElHTiwgVFJBQ0tfQllfUFJPUEVSVFlfTkFNRSB9IGZyb20gXCIuLi8uLi8uLi9jb25zdFwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQkMSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvY29tcG9uZW50Lm1vZGVsXCI7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9ldmVudC1lbWl0dGVyL2V2ZW50LWVtaXR0ZXJcIjtcclxuaW1wb3J0IHsgUHJlcmVuZGVyVHJhY2tCb3hFdmVudHMsIFByZXJlbmRlclRyYWNrQm94SGFuZGxlcnMgfSBmcm9tIFwiLi4vZXZlbnRzXCI7XHJcblxyXG5jb25zdCBjcmVhdGVJdGVtRGF0YSA9IChkYXRhOiBJVmlydHVhbExpc3RJdGVtLCBpc1ZlcnRpY2FsOiBib29sZWFuLCBib3VuZHM6IElTaXplLCBib3VuZHNTaXplOiBudW1iZXIsXHJcbiAgICBkeW5hbWljOiBib29sZWFuLCBkaXZpZGVzOiBudW1iZXIsIGl0ZW1TaXplOiBudW1iZXIsIGlkOiBJZCwgaW5kZXg6IG51bWJlcik6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gPT4ge1xyXG4gICAgY29uc3QgdyA9IChpc1ZlcnRpY2FsID8gKGJvdW5kcy53aWR0aCAvIGRpdmlkZXMpIDogaXRlbVNpemUpIGFzIGFueSxcclxuICAgICAgICBoID0gKGlzVmVydGljYWwgPyBpdGVtU2l6ZSA6IChib3VuZHMuaGVpZ2h0IC8gZGl2aWRlcykpIGFzIGFueTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgaWQsXHJcbiAgICAgICAgbWVhc3VyZXM6IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IDAsXHJcbiAgICAgICAgICAgIHNjcm9sbFNpemU6IDAsXHJcbiAgICAgICAgICAgIG1heFNjcm9sbFNpemU6IDAsXHJcbiAgICAgICAgICAgIHNpemU6IGl0ZW1TaXplLFxyXG4gICAgICAgICAgICByb3c6IHtcclxuICAgICAgICAgICAgICAgIHNpemU6IGl0ZW1TaXplLFxyXG4gICAgICAgICAgICAgICAgb2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGV2ZW46IGZhbHNlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJvdW5kc1NpemUsXHJcbiAgICAgICAgICAgIGFic29sdXRlU3RhcnRQb3NpdGlvbjogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVTdGFydFBvc2l0aW9uUGVyY2VudDogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVFbmRQb3NpdGlvbjogMCxcclxuICAgICAgICAgICAgYWJzb2x1dGVFbmRQb3NpdGlvblBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIGRlbHRhOiAwLFxyXG4gICAgICAgICAgICB4OiAwLFxyXG4gICAgICAgICAgICB5OiAwLFxyXG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFg6IDAsXHJcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkWTogMCxcclxuICAgICAgICAgICAgejogMCxcclxuICAgICAgICAgICAgcm90YXRpb25YOiAwLFxyXG4gICAgICAgICAgICByb3RhdGlvblk6IDAsXHJcbiAgICAgICAgICAgIHJvdGF0aW9uWjogMCxcclxuICAgICAgICAgICAgc2NhbGVYOiAwLFxyXG4gICAgICAgICAgICBzY2FsZVk6IDAsXHJcbiAgICAgICAgICAgIHNjYWxlWjogMCxcclxuICAgICAgICAgICAgd2lkdGg6IHcsXHJcbiAgICAgICAgICAgIGhlaWdodDogaCxcclxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXHJcbiAgICAgICAgICAgIG1pbkhlaWdodDogMCxcclxuICAgICAgICAgICAgbWF4V2lkdGg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxyXG4gICAgICAgICAgICBtYXhIZWlnaHQ6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxyXG4gICAgICAgICAgICBzY3JvbGxEaXJlY3Rpb246IDAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIHByZXZpb3VzZURhdGE6IGRhdGEsXHJcbiAgICAgICAgbmV4dERhdGE6IGRhdGEsXHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICAgIG5ldzogZmFsc2UsXHJcbiAgICAgICAgICAgIG9kZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGV2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICBjb2xsYXBzYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN0aWNreTogMCxcclxuICAgICAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHNuYXA6IGZhbHNlLFxyXG4gICAgICAgICAgICBzbmFwcGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcHBlZE91dDogZmFsc2UsXHJcbiAgICAgICAgICAgIGlzVmVydGljYWwsXHJcbiAgICAgICAgICAgIGR5bmFtaWMsXHJcbiAgICAgICAgICAgIGlzU25hcHBpbmdNZXRob2RBZHZhbmNlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIGRpdmlkZXM6IDEsXHJcbiAgICAgICAgICAgIHRhYkluZGV4OiAwLFxyXG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgICAgICB6SW5kZXg6IFwiMFwiLFxyXG4gICAgICAgICAgICBzbmFwVG9JdGVtOiBmYWxzZSxcclxuICAgICAgICAgICAgc25hcFRvSXRlbUFsaWduOiBERUZBVUxUX1NOQVBfVE9fSVRFTV9BTElHTixcclxuICAgICAgICAgICAgbGF5b3V0T2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICBpc0ZpcnN0OiBmYWxzZSxcclxuICAgICAgICAgICAgaXNMYXN0OiBmYWxzZSxcclxuICAgICAgICAgICAgZnVsbFNpemU6IGZhbHNlLFxyXG4gICAgICAgICAgICBsYXlvdXRJbmRleE9mZnNldDogMCxcclxuICAgICAgICAgICAgdG90YWxJdGVtczogMCxcclxuICAgICAgICAgICAgaW52ZXJ0ZWQ6IGZhbHNlLFxyXG4gICAgICAgIH0sXHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQcmVyZW5kZXJUcmFja0JveFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3ByZXJlbmRlci1jb250YWluZXIvY29yZS9wcmVyZW5kZXItdHJhY2stYm94LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFByZXJlbmRlclRyYWNrQm94IGV4dGVuZHMgRXZlbnRFbWl0dGVyPFByZXJlbmRlclRyYWNrQm94RXZlbnRzLCBQcmVyZW5kZXJUcmFja0JveEhhbmRsZXJzPiB7XHJcbiAgICBwcml2YXRlIF9tYXA6IENNYXA8SWQsIElTaXplPiB8IG51bGwgPSBuZXcgQ01hcDxJZCwgSVNpemU+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfaXRlbXM6IElWaXJ0dWFsTGlzdENvbGxlY3Rpb24gfCBudWxsID0gbmV3IEFycmF5PElWaXJ0dWFsTGlzdEl0ZW0+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50Q2xhc3M6IENvbXBvbmVudCQxPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50czogQXJyYXk8Q29tcG9uZW50UmVmPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+PiB8IG51bGwgPSBuZXcgQXJyYXk8Q29tcG9uZW50UmVmPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+PigpO1xyXG5cclxuICAgIHByaXZhdGUgX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgfCBudWxsID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gdGhpcy5fY29tcG9uZW50cztcclxuICAgICAgICBpZiAoISFjb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcCBvZiBjb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGNvbXAuaW5zdGFuY2UuZ2V0Qm91bmRzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tYXA/LnNldChjb21wLmluc3RhbmNlLml0ZW1JZCEsIHsgd2lkdGgsIGhlaWdodCB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc3BhdGNoKFByZXJlbmRlclRyYWNrQm94RXZlbnRzLlJFU0laRSwgKHRoaXMuX21hcD8udG9PYmplY3QoKSB8fCB7fSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcHJpdmF0ZSBfYWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGdldCBhY3RpdmUoKSB7IHJldHVybiB0aGlzLl9hY3RpdmU7IH1cclxuXHJcbiAgICBwcml2YXRlIHJlZnJlc2goY29tcG9uZW50Q2xhc3M6IENvbXBvbmVudCQxPEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQ+LCBib3VuZHM6IElTaXplLCBwYXJhbXM6IElQcmVyZW5kZXJUcmFja0JveFJlZnJlc2hQYXJhbXMpIHtcclxuICAgICAgICBjb25zdCBpc1ZlcnRpY2FsID0gcGFyYW1zLmlzVmVydGljYWwgPz8gdHJ1ZSxcclxuICAgICAgICAgICAgZHluYW1pYyA9IHBhcmFtcy5keW5hbWljID8/IERFRkFVTFRfRFlOQU1JQ19TSVpFLFxyXG4gICAgICAgICAgICBkaXZpZGVzID0gcGFyYW1zLmRpdmlkZXMgPz8gREVGQVVMVF9ESVZJREVTLFxyXG4gICAgICAgICAgICBpdGVtc1NpemUgPSBwYXJhbXMuaXRlbVNpemUgPz8gREVGQVVMVF9JVEVNX1NJWkUsXHJcbiAgICAgICAgICAgIHRyYWNrQnkgPSBwYXJhbXMudHJhY2tCeSA/PyBUUkFDS19CWV9QUk9QRVJUWV9OQU1FLFxyXG4gICAgICAgICAgICBpdGVtUmVuZGVyZXIgPSBwYXJhbXMuaXRlbVJlbmRlcmVyLFxyXG4gICAgICAgICAgICBib3VuZHNTaXplID0gaXNWZXJ0aWNhbCA/IGJvdW5kcy5oZWlnaHQgOiBib3VuZHMud2lkdGgsXHJcbiAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5faXRlbXMsIGNvbXBvbmVudHMgPSB0aGlzLl9jb21wb25lbnRzLFxyXG4gICAgICAgICAgICByZXNpemVPYnNlcnZlciA9IHRoaXMuX2NvbXBvbmVudHNSZXNpemVPYnNlcnZlcjtcclxuXHJcbiAgICAgICAgaWYgKCFpdGVtcyB8fCAhY29tcG9uZW50cyB8fCAhdGhpcy5fY29udGFpbmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRvdGFsU2l6ZSA9IDAsIGogPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSBpdGVtcy5sZW5ndGggLSAxLCBsID0gMDsgaSA+PSBsOyBpLS0pIHtcclxuICAgICAgICAgICAgaWYgKHRvdGFsU2l6ZSA+IGJvdW5kc1NpemUpIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgaWYgKCEhaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBpdGVtW3RyYWNrQnldLCBpbmRleCA9IGl0ZW1zLmxlbmd0aCAtIGkgLSAxO1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbXA6IENvbXBvbmVudFJlZjxCYXNlVmlydHVhbExpc3RJdGVtQ29tcG9uZW50PjtcclxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA8PSBqKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcCA9IHRoaXMuX2NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50Q2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UucmVuZGVyZXIgPSBpdGVtUmVuZGVyZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEhcmVzaXplT2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShjb21wLmluc3RhbmNlLmVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goY29tcCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXAgPSBjb21wb25lbnRzW2pdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gY3JlYXRlSXRlbURhdGEoaXRlbSwgaXNWZXJ0aWNhbCwgYm91bmRzLCBib3VuZHNTaXplLCBkeW5hbWljLCBkaXZpZGVzLCBpdGVtc1NpemUsIGlkLCBpbmRleCk7XHJcbiAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29tcC5pbnN0YW5jZS5nZXRCb3VuZHMoKSxcclxuICAgICAgICAgICAgICAgICAgICB3ID0gaXNWZXJ0aWNhbCA/IHdpZHRoIDogd2lkdGggPCBpdGVtc1NpemUgPyBpdGVtc1NpemUgOiB3aWR0aCxcclxuICAgICAgICAgICAgICAgICAgICBoID0gaXNWZXJ0aWNhbCA/IGhlaWdodCA8IGl0ZW1zU2l6ZSA/IGl0ZW1zU2l6ZSA6IGhlaWdodCA6IGhlaWdodDtcclxuICAgICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBpc1ZlcnRpY2FsID8gaCA6IHc7XHJcbiAgICAgICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlKGNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lciA9IGNvbnRhaW5lcjtcclxuICAgIH1cclxuXHJcbiAgICByZXNldChjb21wb25lbnRDbGFzczogQ29tcG9uZW50JDE8QmFzZVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudD4sIGl0ZW1zOiBJVmlydHVhbExpc3RDb2xsZWN0aW9uLFxyXG4gICAgICAgIGJvdW5kczogSVNpemUsIHBhcmFtczogSVByZXJlbmRlclRyYWNrQm94UmVmcmVzaFBhcmFtcykge1xyXG4gICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XHJcbiAgICAgICAgdGhpcy5fY29tcG9uZW50Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcclxuICAgICAgICB0aGlzLnJlZnJlc2goY29tcG9uZW50Q2xhc3MsIGJvdW5kcywgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDYWNoZSgpOiBQcmVyZW5kZXJDYWNoZSB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fbWFwID8gdGhpcy5fbWFwLnRvT2JqZWN0KCkgOiB7fTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhcigpIHtcclxuICAgICAgICBpZiAoISF0aGlzLl9tYXApIHtcclxuICAgICAgICAgICAgdGhpcy5fbWFwLmNsZWFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gdGhpcy5fY29tcG9uZW50cztcclxuICAgICAgICBpZiAoISFjb21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9ic2VydmVyID0gdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXAgb2YgY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEhY29tcCAmJiAhIW9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb21wLmluc3RhbmNlLmVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9mZigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBpZiAoISF0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIGRpc3Bvc2UoKSB7XHJcbiAgICAgICAgc3VwZXIuZGlzcG9zZSgpO1xyXG5cclxuICAgICAgICBpZiAoISF0aGlzLl9tYXApIHtcclxuICAgICAgICAgICAgdGhpcy5fbWFwLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX21hcCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISF0aGlzLl9pdGVtcykge1xyXG4gICAgICAgICAgICB0aGlzLl9pdGVtcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISF0aGlzLl9jb21wb25lbnRDbGFzcykge1xyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRDbGFzcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISF0aGlzLl9jb250YWluZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMuX2NvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50cyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoISF0aGlzLl9jb21wb25lbnRzUmVzaXplT2JzZXJ2ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50c1Jlc2l6ZU9ic2VydmVyID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, ElementRef, EventEmitter, inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, filter, fromEvent, of, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';
|
|
3
3
|
import { NgScrollView, SCROLL_VIEW_INVERSION } from '../ng-scroll-view';
|
|
4
|
-
import {
|
|
4
|
+
import { DEFAULT_OVERLAPPING_SCROLLBAR, DEFAULT_SCROLLBAR_INTERACTIVE, LEFT, POSITION, POSITION_ABSOLUTE, POSITION_RELATIVE, RIGHT, SIZE_100_PERSENT, SIZE_AUTO, UNSET, } from '../../const';
|
|
5
5
|
import { DEFAULT_SCROLLBAR_TEMPLATE_CONTEXT, DEFAULT_SIZE, DEFAULT_THICKNESS, HEIGHT, NONE, OPACITY, OPACITY_0, OPACITY_1, PX, TRANSITION, TRANSITION_FADE_IN, WIDTH, } from './const';
|
|
6
6
|
import { SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, SCROLL_VIEW_OVERSCROLL_ENABLED } from '../ng-scroll-view/const';
|
|
7
7
|
import { NgScrollBarService } from './ng-scroll-bar.service';
|
|
@@ -38,8 +38,6 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
38
38
|
this.$scrollbarMinSize = this._$scrollbarMinSize.asObservable();
|
|
39
39
|
this._$prepared = new BehaviorSubject(false);
|
|
40
40
|
this.$prepared = this._$prepared.asObservable();
|
|
41
|
-
this._$langTextDir = new BehaviorSubject(DEFAULT_LANG_TEXT_DIR);
|
|
42
|
-
this.$langTextDir = this._$langTextDir.asObservable();
|
|
43
41
|
this._$interactive = new BehaviorSubject(DEFAULT_SCROLLBAR_INTERACTIVE);
|
|
44
42
|
this.$interactive = this._$interactive.asObservable();
|
|
45
43
|
this._$overlapping = new BehaviorSubject(DEFAULT_OVERLAPPING_SCROLLBAR);
|
|
@@ -122,19 +120,13 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
122
120
|
this._$scrollbarMinSize.next(v);
|
|
123
121
|
}
|
|
124
122
|
}
|
|
125
|
-
get scrollbarMinSize() { return this._$
|
|
123
|
+
get scrollbarMinSize() { return this._$scrollbarMinSize.getValue(); }
|
|
126
124
|
set prepared(v) {
|
|
127
125
|
if (this._$prepared.getValue() !== v) {
|
|
128
126
|
this._$prepared.next(v);
|
|
129
127
|
}
|
|
130
128
|
}
|
|
131
129
|
get prepared() { return this._$prepared.getValue(); }
|
|
132
|
-
set langTextDir(v) {
|
|
133
|
-
if (this._$langTextDir.getValue() !== v) {
|
|
134
|
-
this._$langTextDir.next(v);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
get langTextDir() { return this._$langTextDir.getValue(); }
|
|
138
130
|
set interactive(v) {
|
|
139
131
|
if (this._$interactive.getValue() !== v) {
|
|
140
132
|
this._$interactive.next(v);
|
|
@@ -244,7 +236,7 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
244
236
|
})).subscribe();
|
|
245
237
|
}
|
|
246
238
|
createDragEvent(userAction) {
|
|
247
|
-
const isVertical = this._$isVertical.getValue(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, scrollPosition = isVertical ? this.
|
|
239
|
+
const isVertical = this._$isVertical.getValue(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, scrollPosition = isVertical ? this.y : this.x, startOffset = this.startOffset, endOffset = this.endOffset, scrollContent = this.scrollContent?.nativeElement, scrollViewport = this.scrollViewport?.nativeElement;
|
|
248
240
|
if (!!scrollViewport && !!scrollContent) {
|
|
249
241
|
const contentSize = isVertical ? scrollContent.offsetHeight : scrollContent.offsetWidth, viewportSize = isVertical ? scrollViewport.offsetHeight : scrollViewport.offsetWidth, offsetSize = (scrollSize !== 0 ? (startOffset / scrollSize) : 0), positionSize = (scrollSize !== 0 ? (scrollPosition / scrollSize) : 0), maxSize = 1 - offsetSize, pos = (positionSize - offsetSize);
|
|
250
242
|
const event = {
|
|
@@ -273,7 +265,7 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
273
265
|
}
|
|
274
266
|
}
|
|
275
267
|
NgScrollBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgScrollBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
276
|
-
NgScrollBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NgScrollBarComponent, selector: "ng-scroll-bar", inputs: { loading: "loading", thumbGradientPositions: "thumbGradientPositions", size: "size", thickness: "thickness", scrollbarMinSize: "scrollbarMinSize", prepared: "prepared",
|
|
268
|
+
NgScrollBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NgScrollBarComponent, selector: "ng-scroll-bar", inputs: { loading: "loading", thumbGradientPositions: "thumbGradientPositions", size: "size", thickness: "thickness", scrollbarMinSize: "scrollbarMinSize", prepared: "prepared", interactive: "interactive", overlapping: "overlapping", show: "show", params: "params", renderer: "renderer" }, outputs: { onDrag: "onDrag", onDragEnd: "onDragEnd" }, providers: [
|
|
277
269
|
{ provide: SCROLL_VIEW_INVERSION, useValue: true },
|
|
278
270
|
{ provide: SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO, useValue: false },
|
|
279
271
|
{ provide: SCROLL_VIEW_OVERSCROLL_ENABLED, useValue: false },
|
|
@@ -308,8 +300,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
308
300
|
type: Input
|
|
309
301
|
}], prepared: [{
|
|
310
302
|
type: Input
|
|
311
|
-
}], langTextDir: [{
|
|
312
|
-
type: Input
|
|
313
303
|
}], interactive: [{
|
|
314
304
|
type: Input
|
|
315
305
|
}], overlapping: [{
|
|
@@ -321,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
321
311
|
}], renderer: [{
|
|
322
312
|
type: Input
|
|
323
313
|
}] } });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoSyxPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEUsT0FBTyxFQUNMLHFCQUFxQixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQ3RILGlCQUFpQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUM3RCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFV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QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7d0JBQ2xELEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQ25FLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQzVELGtCQUFrQjt3QkFDbEIsd0JBQXdCO3FCQUN6QixjQUNXLEtBQUs7MEVBTVAsZ0JBQWdCO3NCQUR6QixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUEsV0FBZ0IsQ0FBQSxFQUFFO2dCQVdwRCxPQUFPO3NCQURWLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFPSCxzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBWUYsSUFBSTtzQkFEUCxLQUFLO2dCQVlGLFNBQVM7c0JBRFosS0FBSztnQkFZRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFdBQVc7c0JBRGQsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVlGLElBQUk7c0JBRFAsS0FBSztnQkFZRixNQUFNO3NCQURULEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBvZiwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyYWRpZW50Q29sb3JQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9ncmFkaWVudC1jb2xvci1wb3NpdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbFZpZXcsIFNDUk9MTF9WSUVXX0lOVkVSU0lPTiB9IGZyb20gJy4uL25nLXNjcm9sbC12aWV3JztcclxuaW1wb3J0IHsgSVNjcm9sbEJhckRyYWdFdmVudCwgSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgREVGQVVMVF9MQU5HX1RFWFRfRElSLCBERUZBVUxUX09WRVJMQVBQSU5HX1NDUk9MTEJBUiwgREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUsIExFRlQsIFBPU0lUSU9OLCBQT1NJVElPTl9BQlNPTFVURSxcclxuICBQT1NJVElPTl9SRUxBVElWRSwgUklHSFQsIFNJWkVfMTAwX1BFUlNFTlQsIFNJWkVfQVVUTywgVU5TRVQsXHJcbn0gZnJvbSAnLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfU0NST0xMQkFSX1RFTVBMQVRFX0NPTlRFWFQsXHJcbiAgREVGQVVMVF9TSVpFLCBERUZBVUxUX1RISUNLTkVTUywgSEVJR0hULCBOT05FLCBPUEFDSVRZLCBPUEFDSVRZXzAsIE9QQUNJVFlfMSwgUFgsIFRSQU5TSVRJT04sIFRSQU5TSVRJT05fRkFERV9JTiwgV0lEVEgsXHJcbn0gZnJvbSAnLi9jb25zdCc7XHJcbmltcG9ydCB7IFNDUk9MTF9WSUVXX05PUk1BTElaRV9WQUxVRV9GUk9NX1pFUk8sIFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCB9IGZyb20gJy4uL25nLXNjcm9sbC12aWV3L2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJTZXJ2aWNlIH0gZnJvbSAnLi9uZy1zY3JvbGwtYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbEJhclB1YmxpY1NlcnZpY2UgfSBmcm9tICcuL25nLXNjcm9sbC1iYXItcHVibGljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY3JvbGxiYXJTdGF0ZXMgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbnMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcblxyXG4vKipcclxuICogU2Nyb2xsQmFyIGNvbXBvbmVudC5cclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTQueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLXNjcm9sbC1iYXInLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiB0cnVlIH0sXHJcbiAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX05PUk1BTElaRV9WQUxVRV9GUk9NX1pFUk8sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQsIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgTmdTY3JvbGxCYXJTZXJ2aWNlLFxyXG4gICAgTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlLFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXNjcm9sbC1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25nLXNjcm9sbC1iYXIuY29tcG9uZW50LnNjc3MnLF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5nU2Nyb2xsQmFyQ29tcG9uZW50IGV4dGVuZHMgTmdTY3JvbGxWaWV3IHtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0UmVuZGVyZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmPGFueT4gfSlcclxuICBwcm90ZWN0ZWQgX2RlZmF1bHRSZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJvdGVjdGVkIF9zY3JvbGxCYXJTZXJ2aWNlID0gaW5qZWN0KE5nU2Nyb2xsQmFyU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgX2FwaVNlcnZpY2UgPSBpbmplY3QoTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkbG9hZGluZyA9IHRoaXMuXyRsb2FkaW5nLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsb2FkaW5nKHY6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuXyRsb2FkaW5nLm5leHQodik7XHJcbiAgfVxyXG4gIGdldCBsb2FkaW5nKCkgeyByZXR1cm4gdGhpcy5fJGxvYWRpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkRyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPElTY3JvbGxCYXJEcmFnRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8SVNjcm9sbEJhckRyYWdFdmVudD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHRodW1iR3JhZGllbnRQb3NpdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEdyYWRpZW50Q29sb3JQb3NpdGlvbnM+KFswLCAwXSk7XHJcbiAgcmVhZG9ubHkgJHRodW1iR3JhZGllbnRQb3NpdGlvbnMgPSB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdGh1bWJHcmFkaWVudFBvc2l0aW9ucyh2OiBHcmFkaWVudENvbG9yUG9zaXRpb25zKSB7XHJcbiAgICBpZiAodGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdGh1bWJHcmFkaWVudFBvc2l0aW9ucygpIHsgcmV0dXJuIHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oREVGQVVMVF9TSVpFKTtcclxuICByZWFkb25seSAkc2l6ZSA9IHRoaXMuXyRzaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzaXplKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzaXplLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNpemUubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNpemUoKSB7IHJldHVybiB0aGlzLl8kc2l6ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyR0aGlja25lc3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oREVGQVVMVF9USElDS05FU1MpO1xyXG4gIHJlYWRvbmx5ICR0aGlja25lc3MgPSB0aGlzLl8kdGhpY2tuZXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB0aGlja25lc3ModjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fJHRoaWNrbmVzcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyR0aGlja25lc3MubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHRoaWNrbmVzcygpIHsgcmV0dXJuIHRoaXMuXyR0aGlja25lc3MuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsYmFyTWluU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkc2Nyb2xsYmFyTWluU2l6ZSA9IHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzY3JvbGxiYXJNaW5TaXplKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhck1pblNpemUubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNjcm9sbGJhck1pblNpemUoKSB7IHJldHVybiB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHByZXBhcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXBhcmVkID0gdGhpcy5fJHByZXBhcmVkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBwcmVwYXJlZCh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJHByZXBhcmVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHByZXBhcmVkLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBwcmVwYXJlZCgpIHsgcmV0dXJuIHRoaXMuXyRwcmVwYXJlZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRsYW5nVGV4dERpciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGV4dERpcmVjdGlvbj4oREVGQVVMVF9MQU5HX1RFWFRfRElSKTtcclxuICByZWFkb25seSAkbGFuZ1RleHREaXIgPSB0aGlzLl8kbGFuZ1RleHREaXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxhbmdUZXh0RGlyKHY6IFRleHREaXJlY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLl8kbGFuZ1RleHREaXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kbGFuZ1RleHREaXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhbmdUZXh0RGlyKCkgeyByZXR1cm4gdGhpcy5fJGxhbmdUZXh0RGlyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGludGVyYWN0aXZlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihERUZBVUxUX1NDUk9MTEJBUl9JTlRFUkFDVElWRSk7XHJcbiAgcmVhZG9ubHkgJGludGVyYWN0aXZlID0gdGhpcy5fJGludGVyYWN0aXZlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbnRlcmFjdGl2ZSh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJGludGVyYWN0aXZlLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJGludGVyYWN0aXZlLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBpbnRlcmFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuXyRpbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRvdmVybGFwcGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9PVkVSTEFQUElOR19TQ1JPTExCQVIpO1xyXG4gIHJlYWRvbmx5ICRvdmVybGFwcGluZyA9IHRoaXMuXyRvdmVybGFwcGluZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgb3ZlcmxhcHBpbmcodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRvdmVybGFwcGluZy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRvdmVybGFwcGluZy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgb3ZlcmxhcHBpbmcoKSB7IHJldHVybiB0aGlzLl8kb3ZlcmxhcHBpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2hvdyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRzaG93ID0gdGhpcy5fJHNob3cuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNob3codjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRzaG93LmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNob3cubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNob3coKSB7IHJldHVybiB0aGlzLl8kc2hvdy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRwYXJhbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGw+KHt9KTtcclxuICByZWFkb25seSAkcGFyYW1zID0gdGhpcy5fJHBhcmFtcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcGFyYW1zKHY6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcGFyYW1zLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHBhcmFtcy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fJHBhcmFtcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRyZW5kZXJlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+KG51bGwpO1xyXG4gIHJlYWRvbmx5ICRyZW5kZXJlciA9IHRoaXMuXyRyZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcmVuZGVyZXIodjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcmVuZGVyZXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kcmVuZGVyZXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHJlbmRlcmVyKCkgeyByZXR1cm4gdGhpcy5fJHJlbmRlcmVyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHRodW1iUmVuZGVyZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPih0aGlzLl9kZWZhdWx0UmVuZGVyZXIgPz8gbnVsbCk7XHJcbiAgcmVhZG9ubHkgJHRodW1iUmVuZGVyZXIgPSB0aGlzLl8kdGh1bWJSZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGhvdmVyU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkaG92ZXJTdGF0ZSA9IHRoaXMuXyRob3ZlclN0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kcHJlc3NlZFN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXNzZWRTdGF0ZSA9IHRoaXMuXyRwcmVzc2VkU3RhdGUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0ZW1wbGF0ZUNvbnRleHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQ+KERFRkFVTFRfU0NST0xMQkFSX1RFTVBMQVRFX0NPTlRFWFQpO1xyXG4gIHJlYWRvbmx5ICR0ZW1wbGF0ZUNvbnRleHQgPSB0aGlzLl8kdGVtcGxhdGVDb250ZXh0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc3R5bGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtzdHlsZU5hbWU6IHN0cmluZ106IGFueSB9Pih7fSk7XHJcbiAgcmVhZG9ubHkgJHN0eWxlcyA9IHRoaXMuXyRzdHlsZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYldpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHJlYWRvbmx5ICR0aHVtYldpZHRoID0gdGhpcy5fJHRodW1iV2lkdGguYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkhlaWdodCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkdGh1bWJIZWlnaHQgPSB0aGlzLl8kdGh1bWJIZWlnaHQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxpbmdDYW5jZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSAkc2Nyb2xsaW5nQ2FuY2VsID0gdGhpcy5fJHNjcm9sbGluZ0NhbmNlbC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGNvbnN0ICR0aHVtYldpZHRoID0gdGhpcy4kdGh1bWJXaWR0aCxcclxuICAgICAgJHRodW1iSGVpZ2h0ID0gdGhpcy4kdGh1bWJIZWlnaHQsXHJcbiAgICAgICR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gdGhpcy4kdGh1bWJHcmFkaWVudFBvc2l0aW9ucyxcclxuICAgICAgJHBhcmFtcyA9IHRoaXMuJHBhcmFtcztcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskdGh1bWJXaWR0aCwgJHRodW1iSGVpZ2h0LCAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucywgJHBhcmFtc10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW3RodW1iV2lkdGgsIHRodW1iSGVpZ2h0LCB0aHVtYkdyYWRpZW50UG9zaXRpb25zLCBwYXJhbXNdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dDogSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCA9IHtcclxuICAgICAgICAgIGFwaTogdGhpcy5fYXBpU2VydmljZSxcclxuICAgICAgICAgIHdpZHRoOiB0aHVtYldpZHRoLFxyXG4gICAgICAgICAgaGVpZ2h0OiB0aHVtYkhlaWdodCxcclxuICAgICAgICAgIGZpbGxQb3NpdGlvbnM6IHRodW1iR3JhZGllbnRQb3NpdGlvbnMsXHJcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtcyA/PyB7fSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuXyR0ZW1wbGF0ZUNvbnRleHQubmV4dChjb250ZXh0KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRyZW5kZXJlciA9IHRoaXMuJHJlbmRlcmVyLnBpcGUoXHJcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcclxuICAgICksXHJcbiAgICAgICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRyZW5kZXJlciwgJGRlZmF1bHRSZW5kZXJlcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFtyZW5kZXJlciwgZGVmYXVsdFJlbmRlcmVyXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZigocmVuZGVyZXIgPz8gZGVmYXVsdFJlbmRlcmVyKSA/PyBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyR0aHVtYlJlbmRlcmVyLm5leHQodik7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlcGFyZWQgPSB0aGlzLiRwcmVwYXJlZDtcclxuICAgICRwcmVwYXJlZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbExpbWl0cygpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaENvb3JkaW5hdGUodGhpcy5feCwgdGhpcy5feSk7XHJcbiAgICAgICAgdGhpcy5maXJlU2Nyb2xsRXZlbnQoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzLCB0aGlzLiRzaXplXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW2lzVmVydGljYWwsIHRoaWNrbmVzcywgc2l6ZV0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJXaWR0aC5uZXh0KGlzVmVydGljYWwgPyB0aGlja25lc3MgOiBzaXplKTtcclxuICAgICAgICB0aGlzLl8kdGh1bWJIZWlnaHQubmV4dChpc1ZlcnRpY2FsID8gc2l6ZSA6IHRoaWNrbmVzcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuICAgIGNvbnN0ICR3aGVlbCA9IHRoaXMuJHdoZWVsO1xyXG4gICAgJHdoZWVsLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuY3JlYXRlRHJhZ0V2ZW50KHRydWUpO1xyXG4gICAgICAgIGlmICghIWV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm9uRHJhZ0VuZC5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcG9pbnRlckRvd24gPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVyZG93bicpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGRvY1BvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcnVwJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckVudGVyID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmVudGVyJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckxlYXZlID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmxlYXZlJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApO1xyXG5cclxuICAgICRwb2ludGVyRG93bi5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRwcmVzc2VkU3RhdGUubmV4dCh0aGlzLnRodW1iSGl0KGUuY2xpZW50WCwgZS5jbGllbnRZKSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZG9jUG9pbnRlclVwLCAkcG9pbnRlclVwXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHByZXNzZWRTdGF0ZS5uZXh0KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyRW50ZXIucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dCh0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyTGVhdmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlc3NlZFN0YXRlID0gdGhpcy4kcHJlc3NlZFN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGhvdmVyU3RhdGUgPSB0aGlzLiRob3ZlclN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgJHByZXNzZWRTdGF0ZSwgJGhvdmVyU3RhdGUsXHJcbiAgICBdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtwcmVzc2VkLCBob3Zlcl0pID0+IHtcclxuICAgICAgICBpZiAocHJlc3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5fc2Nyb2xsQmFyU2VydmljZS5zdGF0ZSA9IFNjcm9sbGJhclN0YXRlcy5QUkVTU0VEO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaG92ZXIpIHtcclxuICAgICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuSE9WRVI7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuTk9STUFMO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNpemUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHY7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRpbnRlcmFjdGl2ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuaW50ZXJhY3RpdmUgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kc2hvdywgdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW3Nob3csIGlzVmVydGljYWwsIHRoaWNrbmVzc10pID0+IHtcclxuICAgICAgICBjb25zdCBzaXplUHJvcE5hbWUgPSBpc1ZlcnRpY2FsID8gV0lEVEggOiBIRUlHSFQ7XHJcbiAgICAgICAgdGhpcy5fJHN0eWxlcy5uZXh0KHtcclxuICAgICAgICAgIFtzaXplUHJvcE5hbWVdOiBgJHtzaG93ID8gdGhpY2tuZXNzIDogMH0ke1BYfWAsXHJcbiAgICAgICAgICBbT1BBQ0lUWV06IHNob3cgPyBPUEFDSVRZXzEgOiBPUEFDSVRZXzAsIFtUUkFOU0lUSU9OXTogc2hvdyA/IFRSQU5TSVRJT05fRkFERV9JTiA6IE5PTkUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkb3ZlcmxhcHBpbmcgPSB0aGlzLiRvdmVybGFwcGluZywgJGxhbmdUZXh0RGlyID0gdGhpcy4kbGFuZ1RleHREaXI7XHJcbiAgICBjb21iaW5lTGF0ZXN0KFskb3ZlcmxhcHBpbmcsICRsYW5nVGV4dERpcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtvdmVybGFwcGluZywgbGFuZ1RleHREaXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKCEhZWwpIHtcclxuICAgICAgICAgIGVsLnN0eWxlW1BPU0lUSU9OXSA9IG92ZXJsYXBwaW5nID8gUE9TSVRJT05fQUJTT0xVVEUgOiBQT1NJVElPTl9SRUxBVElWRTtcclxuICAgICAgICAgIGVsLnN0eWxlW0xFRlRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLlJUTCA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbUklHSFRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLkxUUiA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbV0lEVEhdID0gb3ZlcmxhcHBpbmcgPyBTSVpFX0FVVE8gOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNjcm9sbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5jcmVhdGVEcmFnRXZlbnQodik7XHJcbiAgICAgICAgaWYgKCEhZXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMub25EcmFnLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRzY3JvbGxFbmQgPSB0aGlzLiRzY3JvbGxFbmQ7XHJcbiAgICAkc2Nyb2xsRW5kLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodXNlckFjdGlvbiA9PiB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmNyZWF0ZURyYWdFdmVudCh1c2VyQWN0aW9uKTtcclxuICAgICAgICBpZiAoISFldmVudCkge1xyXG4gICAgICAgICAgdGhpcy5vbkRyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHJlbmRlcmVyID0gdGhpcy4kcmVuZGVyZXIsICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG4gICAgY29tYmluZUxhdGVzdChbJHJlbmRlcmVyLCAkZGVmYXVsdFJlbmRlcmVyXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKChbcmVuZGVyZXIsIGRlZmF1bHRSZW5kZXJlcl0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJSZW5kZXJlci5uZXh0KHJlbmRlcmVyIHx8IGRlZmF1bHRSZW5kZXJlciB8fCBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEcmFnRXZlbnQodXNlckFjdGlvbjogYm9vbGVhbikge1xyXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksIHNjcm9sbFNpemUgPSBpc1ZlcnRpY2FsID8gdGhpcy5zY3JvbGxIZWlnaHQgOiB0aGlzLnNjcm9sbFdpZHRoLFxyXG4gICAgICBzY3JvbGxQb3NpdGlvbiA9IGlzVmVydGljYWwgPyB0aGlzLnNjcm9sbFRvcCA6IHRoaXMuc2Nyb2xsTGVmdCxcclxuICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLnN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgPSB0aGlzLmVuZE9mZnNldCxcclxuICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKCEhc2Nyb2xsVmlld3BvcnQgJiYgISFzY3JvbGxDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRTaXplID0gaXNWZXJ0aWNhbCA/IHNjcm9sbENvbnRlbnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICB2aWV3cG9ydFNpemUgPSBpc1ZlcnRpY2FsID8gc2Nyb2xsVmlld3BvcnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsVmlld3BvcnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgb2Zmc2V0U2l6ZSA9IChzY3JvbGxTaXplICE9PSAwID8gKHN0YXJ0T2Zmc2V0IC8gc2Nyb2xsU2l6ZSkgOiAwKSxcclxuICAgICAgICBwb3NpdGlvblNpemUgPSAoc2Nyb2xsU2l6ZSAhPT0gMCA/IChzY3JvbGxQb3NpdGlvbiAvIHNjcm9sbFNpemUpIDogMCksXHJcbiAgICAgICAgbWF4U2l6ZSA9IDEgLSBvZmZzZXRTaXplLFxyXG4gICAgICAgIHBvcyA9IChwb3NpdGlvblNpemUgLSBvZmZzZXRTaXplKTtcclxuICAgICAgY29uc3QgZXZlbnQ6IElTY3JvbGxCYXJEcmFnRXZlbnQgPSB7XHJcbiAgICAgICAgcG9zaXRpb246IHBvcyAvIG1heFNpemUsXHJcbiAgICAgICAgbWluOiBzY3JvbGxTaXplICE9PSAwID8gKHN0YXJ0T2Zmc2V0IC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIG1heDogc2Nyb2xsU2l6ZSAhPT0gMCA/ICgodmlld3BvcnRTaXplIC0gZW5kT2Zmc2V0IC0gY29udGVudFNpemUpIC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIGFuaW1hdGlvbjogIXRoaXMuX2lzTW92aW5nLFxyXG4gICAgICAgIHVzZXJBY3Rpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBldmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0aHVtYkhpdCh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdGh1bWIgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoISF0aHVtYikge1xyXG4gICAgICBjb25zdCB7IHg6IHRYLCB5OiB0WSwgd2lkdGg6IHRXaWR0aCwgaGVpZ2h0OiB0SGVpZ2h0IH0gPSB0aHVtYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgaWYgKCh4ID49IHRYICYmIHggPD0gdFggKyB0V2lkdGgpICYmICh5ID49IHRZICYmIHkgPD0gdFkgKyB0SGVpZ2h0KSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbGljayhldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5fc2Nyb2xsQmFyU2VydmljZS5jbGljayhldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3Njcm9sbFZpZXdwb3J0IGNsYXNzPVwidHJhY2tcIiBwYXJ0PVwic2Nyb2xsYmFyLXRyYWNrXCIgW25nU3R5bGVdPVwiJHN0eWxlcyB8IGFzeW5jXCJcclxuICAgIFtuZ0NsYXNzXT1cIntncmFiYmluZzogJGdyYWJiaW5nIHwgYXN5bmN9XCI+XHJcbiAgICA8ZGl2ICNzY3JvbGxDb250ZW50IGNsYXNzPVwidGh1bWJcIiBwYXJ0PVwic2Nyb2xsYmFyLXRodW1iXCIgW2NsYXNzLmhvcml6b250YWxdPVwiKCRpc1ZlcnRpY2FsIHwgYXN5bmMpISA9PSBmYWxzZVwiXHJcbiAgICAgICAgKHBvaW50ZXJkb3duKT1cImNsaWNrKCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIigkdGh1bWJSZW5kZXJlciB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiKCR0ZW1wbGF0ZUNvbnRleHQgfCBhc3luYykhXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRSZW5kZXJlciBsZXQtYXBpPVwiYXBpXCIgbGV0LXdpZHRoPVwid2lkdGhcIiBsZXQtaGVpZ2h0PVwiaGVpZ2h0XCIgbGV0LWZpbGxQb3NpdGlvbnM9XCJmaWxsUG9zaXRpb25zXCJcclxuICAgIGxldC1wYXJhbXM9XCJwYXJhbXNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGFwZVwiIHBhcnQ9XCJzY3JvbGxiYXItdGh1bWJfX3NoYXBlXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIj48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoSyxPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEUsT0FBTyxFQUNMLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQy9GLGlCQUFpQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUM3RCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsa0JBQWtC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c0JBQXNCO3NCQUR6QixLQUFLO2dCQVlGLElBQUk7c0JBRFAsS0FBSztnQkFZRixTQUFTO3NCQURaLEtBQUs7Z0JBWUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVlGLElBQUk7c0JBRFAsS0FBSztnQkFZRixNQUFNO3NCQURULEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBvZiwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyYWRpZW50Q29sb3JQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9ncmFkaWVudC1jb2xvci1wb3NpdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbFZpZXcsIFNDUk9MTF9WSUVXX0lOVkVSU0lPTiB9IGZyb20gJy4uL25nLXNjcm9sbC12aWV3JztcclxuaW1wb3J0IHsgSVNjcm9sbEJhckRyYWdFdmVudCwgSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgREVGQVVMVF9PVkVSTEFQUElOR19TQ1JPTExCQVIsIERFRkFVTFRfU0NST0xMQkFSX0lOVEVSQUNUSVZFLCBMRUZULCBQT1NJVElPTiwgUE9TSVRJT05fQUJTT0xVVEUsXHJcbiAgUE9TSVRJT05fUkVMQVRJVkUsIFJJR0hULCBTSVpFXzEwMF9QRVJTRU5ULCBTSVpFX0FVVE8sIFVOU0VULFxyXG59IGZyb20gJy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX1NDUk9MTEJBUl9URU1QTEFURV9DT05URVhULFxyXG4gIERFRkFVTFRfU0laRSwgREVGQVVMVF9USElDS05FU1MsIEhFSUdIVCwgTk9ORSwgT1BBQ0lUWSwgT1BBQ0lUWV8wLCBPUEFDSVRZXzEsIFBYLCBUUkFOU0lUSU9OLCBUUkFOU0lUSU9OX0ZBREVfSU4sIFdJRFRILFxyXG59IGZyb20gJy4vY29uc3QnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcbmltcG9ydCB7IE5nU2Nyb2xsQmFyU2VydmljZSB9IGZyb20gJy4vbmctc2Nyb2xsLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlIH0gZnJvbSAnLi9uZy1zY3JvbGwtYmFyLXB1YmxpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Nyb2xsYmFyU3RhdGVzIH0gZnJvbSAnLi9lbnVtcyc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5cclxuLyoqXHJcbiAqIFNjcm9sbEJhciBjb21wb25lbnQuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE0LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1zY3JvbGwtYmFyJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfSU5WRVJTSU9OLCB1c2VWYWx1ZTogdHJ1ZSB9LFxyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCB1c2VWYWx1ZTogZmFsc2UgfSxcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVELCB1c2VWYWx1ZTogZmFsc2UgfSxcclxuICAgIE5nU2Nyb2xsQmFyU2VydmljZSxcclxuICAgIE5nU2Nyb2xsQmFyUHVibGljU2VydmljZSxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC5zY3NzJyxdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1Njcm9sbEJhckNvbXBvbmVudCBleHRlbmRzIE5nU2Nyb2xsVmlldyB7XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdFJlbmRlcmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZjxhbnk+IH0pXHJcbiAgcHJvdGVjdGVkIF9kZWZhdWx0UmVuZGVyZXI6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByb3RlY3RlZCBfc2Nyb2xsQmFyU2VydmljZSA9IGluamVjdChOZ1Njcm9sbEJhclNlcnZpY2UpO1xyXG5cclxuICBwcml2YXRlIF9hcGlTZXJ2aWNlID0gaW5qZWN0KE5nU2Nyb2xsQmFyUHVibGljU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgXyRsb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJGxvYWRpbmcgPSB0aGlzLl8kbG9hZGluZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbG9hZGluZyh2OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl8kbG9hZGluZy5uZXh0KHYpO1xyXG4gIH1cclxuICBnZXQgbG9hZGluZygpIHsgcmV0dXJuIHRoaXMuXyRsb2FkaW5nLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25EcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxJU2Nyb2xsQmFyRHJhZ0V2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkRyYWdFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPElTY3JvbGxCYXJEcmFnRXZlbnQ+KCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcmFkaWVudENvbG9yUG9zaXRpb25zPihbMCwgMF0pO1xyXG4gIHJlYWRvbmx5ICR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gdGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHRodW1iR3JhZGllbnRQb3NpdGlvbnModjogR3JhZGllbnRDb2xvclBvc2l0aW9ucykge1xyXG4gICAgaWYgKHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHRodW1iR3JhZGllbnRQb3NpdGlvbnMoKSB7IHJldHVybiB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERFRkFVTFRfU0laRSk7XHJcbiAgcmVhZG9ubHkgJHNpemUgPSB0aGlzLl8kc2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2l6ZSh2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kc2l6ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzaXplLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5fJHNpemUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kdGhpY2tuZXNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERFRkFVTFRfVEhJQ0tORVNTKTtcclxuICByZWFkb25seSAkdGhpY2tuZXNzID0gdGhpcy5fJHRoaWNrbmVzcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdGhpY2tuZXNzKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyR0aGlja25lc3MuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kdGhpY2tuZXNzLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCB0aGlja25lc3MoKSB7IHJldHVybiB0aGlzLl8kdGhpY2tuZXNzLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNjcm9sbGJhck1pblNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhck1pblNpemUgPSB0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYmFyTWluU2l6ZSh2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzY3JvbGxiYXJNaW5TaXplKCkgeyByZXR1cm4gdGhpcy5fJHNjcm9sbGJhck1pblNpemUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kcHJlcGFyZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkcHJlcGFyZWQgPSB0aGlzLl8kcHJlcGFyZWQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHByZXBhcmVkKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kcHJlcGFyZWQuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kcHJlcGFyZWQubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHByZXBhcmVkKCkgeyByZXR1cm4gdGhpcy5fJHByZXBhcmVkLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGludGVyYWN0aXZlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihERUZBVUxUX1NDUk9MTEJBUl9JTlRFUkFDVElWRSk7XHJcbiAgcmVhZG9ubHkgJGludGVyYWN0aXZlID0gdGhpcy5fJGludGVyYWN0aXZlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbnRlcmFjdGl2ZSh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJGludGVyYWN0aXZlLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJGludGVyYWN0aXZlLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBpbnRlcmFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuXyRpbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRvdmVybGFwcGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9PVkVSTEFQUElOR19TQ1JPTExCQVIpO1xyXG4gIHJlYWRvbmx5ICRvdmVybGFwcGluZyA9IHRoaXMuXyRvdmVybGFwcGluZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgb3ZlcmxhcHBpbmcodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRvdmVybGFwcGluZy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRvdmVybGFwcGluZy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgb3ZlcmxhcHBpbmcoKSB7IHJldHVybiB0aGlzLl8kb3ZlcmxhcHBpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2hvdyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRzaG93ID0gdGhpcy5fJHNob3cuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNob3codjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRzaG93LmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNob3cubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNob3coKSB7IHJldHVybiB0aGlzLl8kc2hvdy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRwYXJhbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGw+KHt9KTtcclxuICByZWFkb25seSAkcGFyYW1zID0gdGhpcy5fJHBhcmFtcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcGFyYW1zKHY6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcGFyYW1zLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHBhcmFtcy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fJHBhcmFtcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRyZW5kZXJlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+KG51bGwpO1xyXG4gIHJlYWRvbmx5ICRyZW5kZXJlciA9IHRoaXMuXyRyZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcmVuZGVyZXIodjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcmVuZGVyZXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kcmVuZGVyZXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHJlbmRlcmVyKCkgeyByZXR1cm4gdGhpcy5fJHJlbmRlcmVyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHRodW1iUmVuZGVyZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPih0aGlzLl9kZWZhdWx0UmVuZGVyZXIgPz8gbnVsbCk7XHJcbiAgcmVhZG9ubHkgJHRodW1iUmVuZGVyZXIgPSB0aGlzLl8kdGh1bWJSZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGhvdmVyU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkaG92ZXJTdGF0ZSA9IHRoaXMuXyRob3ZlclN0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kcHJlc3NlZFN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXNzZWRTdGF0ZSA9IHRoaXMuXyRwcmVzc2VkU3RhdGUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0ZW1wbGF0ZUNvbnRleHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQ+KERFRkFVTFRfU0NST0xMQkFSX1RFTVBMQVRFX0NPTlRFWFQpO1xyXG4gIHJlYWRvbmx5ICR0ZW1wbGF0ZUNvbnRleHQgPSB0aGlzLl8kdGVtcGxhdGVDb250ZXh0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc3R5bGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtzdHlsZU5hbWU6IHN0cmluZ106IGFueSB9Pih7fSk7XHJcbiAgcmVhZG9ubHkgJHN0eWxlcyA9IHRoaXMuXyRzdHlsZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYldpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHJlYWRvbmx5ICR0aHVtYldpZHRoID0gdGhpcy5fJHRodW1iV2lkdGguYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkhlaWdodCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkdGh1bWJIZWlnaHQgPSB0aGlzLl8kdGh1bWJIZWlnaHQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxpbmdDYW5jZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSAkc2Nyb2xsaW5nQ2FuY2VsID0gdGhpcy5fJHNjcm9sbGluZ0NhbmNlbC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGNvbnN0ICR0aHVtYldpZHRoID0gdGhpcy4kdGh1bWJXaWR0aCxcclxuICAgICAgJHRodW1iSGVpZ2h0ID0gdGhpcy4kdGh1bWJIZWlnaHQsXHJcbiAgICAgICR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gdGhpcy4kdGh1bWJHcmFkaWVudFBvc2l0aW9ucyxcclxuICAgICAgJHBhcmFtcyA9IHRoaXMuJHBhcmFtcztcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskdGh1bWJXaWR0aCwgJHRodW1iSGVpZ2h0LCAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucywgJHBhcmFtc10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW3RodW1iV2lkdGgsIHRodW1iSGVpZ2h0LCB0aHVtYkdyYWRpZW50UG9zaXRpb25zLCBwYXJhbXNdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dDogSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCA9IHtcclxuICAgICAgICAgIGFwaTogdGhpcy5fYXBpU2VydmljZSxcclxuICAgICAgICAgIHdpZHRoOiB0aHVtYldpZHRoLFxyXG4gICAgICAgICAgaGVpZ2h0OiB0aHVtYkhlaWdodCxcclxuICAgICAgICAgIGZpbGxQb3NpdGlvbnM6IHRodW1iR3JhZGllbnRQb3NpdGlvbnMsXHJcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtcyA/PyB7fSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuXyR0ZW1wbGF0ZUNvbnRleHQubmV4dChjb250ZXh0KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRyZW5kZXJlciA9IHRoaXMuJHJlbmRlcmVyLnBpcGUoXHJcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcclxuICAgICksXHJcbiAgICAgICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRyZW5kZXJlciwgJGRlZmF1bHRSZW5kZXJlcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFtyZW5kZXJlciwgZGVmYXVsdFJlbmRlcmVyXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZigocmVuZGVyZXIgPz8gZGVmYXVsdFJlbmRlcmVyKSA/PyBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyR0aHVtYlJlbmRlcmVyLm5leHQodik7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlcGFyZWQgPSB0aGlzLiRwcmVwYXJlZDtcclxuICAgICRwcmVwYXJlZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbExpbWl0cygpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaENvb3JkaW5hdGUodGhpcy5feCwgdGhpcy5feSk7XHJcbiAgICAgICAgdGhpcy5maXJlU2Nyb2xsRXZlbnQoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzLCB0aGlzLiRzaXplXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW2lzVmVydGljYWwsIHRoaWNrbmVzcywgc2l6ZV0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJXaWR0aC5uZXh0KGlzVmVydGljYWwgPyB0aGlja25lc3MgOiBzaXplKTtcclxuICAgICAgICB0aGlzLl8kdGh1bWJIZWlnaHQubmV4dChpc1ZlcnRpY2FsID8gc2l6ZSA6IHRoaWNrbmVzcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuICAgIGNvbnN0ICR3aGVlbCA9IHRoaXMuJHdoZWVsO1xyXG4gICAgJHdoZWVsLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuY3JlYXRlRHJhZ0V2ZW50KHRydWUpO1xyXG4gICAgICAgIGlmICghIWV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm9uRHJhZ0VuZC5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcG9pbnRlckRvd24gPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVyZG93bicpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGRvY1BvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcnVwJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckVudGVyID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmVudGVyJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckxlYXZlID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmxlYXZlJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApO1xyXG5cclxuICAgICRwb2ludGVyRG93bi5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRwcmVzc2VkU3RhdGUubmV4dCh0aGlzLnRodW1iSGl0KGUuY2xpZW50WCwgZS5jbGllbnRZKSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZG9jUG9pbnRlclVwLCAkcG9pbnRlclVwXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHByZXNzZWRTdGF0ZS5uZXh0KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyRW50ZXIucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dCh0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyTGVhdmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlc3NlZFN0YXRlID0gdGhpcy4kcHJlc3NlZFN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGhvdmVyU3RhdGUgPSB0aGlzLiRob3ZlclN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgJHByZXNzZWRTdGF0ZSwgJGhvdmVyU3RhdGUsXHJcbiAgICBdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtwcmVzc2VkLCBob3Zlcl0pID0+IHtcclxuICAgICAgICBpZiAocHJlc3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5fc2Nyb2xsQmFyU2VydmljZS5zdGF0ZSA9IFNjcm9sbGJhclN0YXRlcy5QUkVTU0VEO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaG92ZXIpIHtcclxuICAgICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuSE9WRVI7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuTk9STUFMO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNpemUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHY7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRpbnRlcmFjdGl2ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuaW50ZXJhY3RpdmUgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kc2hvdywgdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW3Nob3csIGlzVmVydGljYWwsIHRoaWNrbmVzc10pID0+IHtcclxuICAgICAgICBjb25zdCBzaXplUHJvcE5hbWUgPSBpc1ZlcnRpY2FsID8gV0lEVEggOiBIRUlHSFQ7XHJcbiAgICAgICAgdGhpcy5fJHN0eWxlcy5uZXh0KHtcclxuICAgICAgICAgIFtzaXplUHJvcE5hbWVdOiBgJHtzaG93ID8gdGhpY2tuZXNzIDogMH0ke1BYfWAsXHJcbiAgICAgICAgICBbT1BBQ0lUWV06IHNob3cgPyBPUEFDSVRZXzEgOiBPUEFDSVRZXzAsIFtUUkFOU0lUSU9OXTogc2hvdyA/IFRSQU5TSVRJT05fRkFERV9JTiA6IE5PTkUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkb3ZlcmxhcHBpbmcgPSB0aGlzLiRvdmVybGFwcGluZywgJGxhbmdUZXh0RGlyID0gdGhpcy4kbGFuZ1RleHREaXI7XHJcbiAgICBjb21iaW5lTGF0ZXN0KFskb3ZlcmxhcHBpbmcsICRsYW5nVGV4dERpcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtvdmVybGFwcGluZywgbGFuZ1RleHREaXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKCEhZWwpIHtcclxuICAgICAgICAgIGVsLnN0eWxlW1BPU0lUSU9OXSA9IG92ZXJsYXBwaW5nID8gUE9TSVRJT05fQUJTT0xVVEUgOiBQT1NJVElPTl9SRUxBVElWRTtcclxuICAgICAgICAgIGVsLnN0eWxlW0xFRlRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLlJUTCA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbUklHSFRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLkxUUiA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbV0lEVEhdID0gb3ZlcmxhcHBpbmcgPyBTSVpFX0FVVE8gOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNjcm9sbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5jcmVhdGVEcmFnRXZlbnQodik7XHJcbiAgICAgICAgaWYgKCEhZXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMub25EcmFnLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRzY3JvbGxFbmQgPSB0aGlzLiRzY3JvbGxFbmQ7XHJcbiAgICAkc2Nyb2xsRW5kLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodXNlckFjdGlvbiA9PiB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmNyZWF0ZURyYWdFdmVudCh1c2VyQWN0aW9uKTtcclxuICAgICAgICBpZiAoISFldmVudCkge1xyXG4gICAgICAgICAgdGhpcy5vbkRyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHJlbmRlcmVyID0gdGhpcy4kcmVuZGVyZXIsICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG4gICAgY29tYmluZUxhdGVzdChbJHJlbmRlcmVyLCAkZGVmYXVsdFJlbmRlcmVyXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKChbcmVuZGVyZXIsIGRlZmF1bHRSZW5kZXJlcl0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJSZW5kZXJlci5uZXh0KHJlbmRlcmVyIHx8IGRlZmF1bHRSZW5kZXJlciB8fCBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEcmFnRXZlbnQodXNlckFjdGlvbjogYm9vbGVhbikge1xyXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksIHNjcm9sbFNpemUgPSBpc1ZlcnRpY2FsID8gdGhpcy5zY3JvbGxIZWlnaHQgOiB0aGlzLnNjcm9sbFdpZHRoLFxyXG4gICAgICBzY3JvbGxQb3NpdGlvbiA9IGlzVmVydGljYWwgPyB0aGlzLnkgOiB0aGlzLngsXHJcbiAgICAgIHN0YXJ0T2Zmc2V0ID0gdGhpcy5zdGFydE9mZnNldCwgZW5kT2Zmc2V0ID0gdGhpcy5lbmRPZmZzZXQsXHJcbiAgICAgIHNjcm9sbENvbnRlbnQgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQsXHJcbiAgICAgIHNjcm9sbFZpZXdwb3J0ID0gdGhpcy5zY3JvbGxWaWV3cG9ydD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmICghIXNjcm9sbFZpZXdwb3J0ICYmICEhc2Nyb2xsQ29udGVudCkge1xyXG4gICAgICBjb25zdCBjb250ZW50U2l6ZSA9IGlzVmVydGljYWwgPyBzY3JvbGxDb250ZW50Lm9mZnNldEhlaWdodCA6IHNjcm9sbENvbnRlbnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgdmlld3BvcnRTaXplID0gaXNWZXJ0aWNhbCA/IHNjcm9sbFZpZXdwb3J0Lm9mZnNldEhlaWdodCA6IHNjcm9sbFZpZXdwb3J0Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgIG9mZnNldFNpemUgPSAoc2Nyb2xsU2l6ZSAhPT0gMCA/IChzdGFydE9mZnNldCAvIHNjcm9sbFNpemUpIDogMCksXHJcbiAgICAgICAgcG9zaXRpb25TaXplID0gKHNjcm9sbFNpemUgIT09IDAgPyAoc2Nyb2xsUG9zaXRpb24gLyBzY3JvbGxTaXplKSA6IDApLFxyXG4gICAgICAgIG1heFNpemUgPSAxIC0gb2Zmc2V0U2l6ZSxcclxuICAgICAgICBwb3MgPSAocG9zaXRpb25TaXplIC0gb2Zmc2V0U2l6ZSk7XHJcbiAgICAgIGNvbnN0IGV2ZW50OiBJU2Nyb2xsQmFyRHJhZ0V2ZW50ID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBwb3MgLyBtYXhTaXplLFxyXG4gICAgICAgIG1pbjogc2Nyb2xsU2l6ZSAhPT0gMCA/IChzdGFydE9mZnNldCAvIHNjcm9sbFNpemUpIDogMCxcclxuICAgICAgICBtYXg6IHNjcm9sbFNpemUgIT09IDAgPyAoKHZpZXdwb3J0U2l6ZSAtIGVuZE9mZnNldCAtIGNvbnRlbnRTaXplKSAvIHNjcm9sbFNpemUpIDogMCxcclxuICAgICAgICBhbmltYXRpb246ICF0aGlzLl9pc01vdmluZyxcclxuICAgICAgICB1c2VyQWN0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gZXZlbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdGh1bWJIaXQoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHRodW1iID0gdGhpcy5zY3JvbGxDb250ZW50Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgaWYgKCEhdGh1bWIpIHtcclxuICAgICAgY29uc3QgeyB4OiB0WCwgeTogdFksIHdpZHRoOiB0V2lkdGgsIGhlaWdodDogdEhlaWdodCB9ID0gdGh1bWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGlmICgoeCA+PSB0WCAmJiB4IDw9IHRYICsgdFdpZHRoKSAmJiAoeSA+PSB0WSAmJiB5IDw9IHRZICsgdEhlaWdodCkpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2UuY2xpY2soZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICNzY3JvbGxWaWV3cG9ydCBjbGFzcz1cInRyYWNrXCIgcGFydD1cInNjcm9sbGJhci10cmFja1wiIFtuZ1N0eWxlXT1cIiRzdHlsZXMgfCBhc3luY1wiXHJcbiAgICBbbmdDbGFzc109XCJ7Z3JhYmJpbmc6ICRncmFiYmluZyB8IGFzeW5jfVwiPlxyXG4gICAgPGRpdiAjc2Nyb2xsQ29udGVudCBjbGFzcz1cInRodW1iXCIgcGFydD1cInNjcm9sbGJhci10aHVtYlwiIFtjbGFzcy5ob3Jpem9udGFsXT1cIigkaXNWZXJ0aWNhbCB8IGFzeW5jKSEgPT0gZmFsc2VcIlxyXG4gICAgICAgIChwb2ludGVyZG93bik9XCJjbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCIoJHRodW1iUmVuZGVyZXIgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIigkdGVtcGxhdGVDb250ZXh0IHwgYXN5bmMpIVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UmVuZGVyZXIgbGV0LWFwaT1cImFwaVwiIGxldC13aWR0aD1cIndpZHRoXCIgbGV0LWhlaWdodD1cImhlaWdodFwiIGxldC1maWxsUG9zaXRpb25zPVwiZmlsbFBvc2l0aW9uc1wiXHJcbiAgICBsZXQtcGFyYW1zPVwicGFyYW1zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2hhcGVcIiBwYXJ0PVwic2Nyb2xsYmFyLXRodW1iX19zaGFwZVwiIFtzdHlsZS53aWR0aC5weF09XCJ3aWR0aFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0XCI+PC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
|