ngx-scandoc 15.1.7 → 15.1.9
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/README.md +3 -20
- package/esm2020/core/components/webcam/webcam/webcam.component.mjs +11 -1
- package/esm2020/providers/camera.provider.mjs +12 -7
- package/esm2020/providers/translation.provider.mjs +8 -2
- package/fesm2015/ngx-scandoc.mjs +26 -6
- package/fesm2015/ngx-scandoc.mjs.map +1 -1
- package/fesm2020/ngx-scandoc.mjs +26 -6
- package/fesm2020/ngx-scandoc.mjs.map +1 -1
- package/package.json +1 -1
- package/providers/camera.provider.d.ts +3 -1
- package/providers/translation.provider.d.ts +1 -0
package/README.md
CHANGED
|
@@ -1,24 +1,7 @@
|
|
|
1
1
|
# NgxScandoc
|
|
2
|
+
Run `npm install ngx-scandoc` to install component.
|
|
2
3
|
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.0.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Configuration
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
> Note: Don't forget to add `--project ngx-scandoc` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build ngx-scandoc` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
-
|
|
14
|
-
## Publishing
|
|
15
|
-
|
|
16
|
-
After building your library with `ng build ngx-scandoc`, go to the dist folder `cd dist/ngx-scandoc` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test ngx-scandoc` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
-
|
|
22
|
-
## Further help
|
|
23
|
-
|
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
7
|
+
|
|
@@ -136,6 +136,10 @@ export class WebcamComponent extends BaseComponent {
|
|
|
136
136
|
//console.warn(t.getConstraints());
|
|
137
137
|
if (!this.isMobile) {
|
|
138
138
|
try {
|
|
139
|
+
if (!t.getCapabilities) {
|
|
140
|
+
this.setDeviceId(stream);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
139
143
|
const settings = t.getSettings();
|
|
140
144
|
const cap = t.getCapabilities();
|
|
141
145
|
const con = t.getConstraints();
|
|
@@ -381,13 +385,19 @@ export class WebcamComponent extends BaseComponent {
|
|
|
381
385
|
if (this.mediaStream && this.mediaStream.getTracks) {
|
|
382
386
|
// getTracks() returns all media tracks (video+audio)
|
|
383
387
|
this.mediaStream.getTracks().forEach((track) => {
|
|
388
|
+
// console.log(track);
|
|
389
|
+
track.enabled = false;
|
|
390
|
+
this.cd.detectChanges();
|
|
384
391
|
track.stop();
|
|
385
392
|
this.video.srcObject.removeTrack(track);
|
|
386
393
|
this.mediaStream.removeTrack(track);
|
|
394
|
+
this.cd.detectChanges();
|
|
387
395
|
});
|
|
388
396
|
this.video.srcObject = null;
|
|
397
|
+
// this.video.src = null;
|
|
389
398
|
this.video.load();
|
|
390
399
|
}
|
|
400
|
+
// this.__subs(this.stopVideoTracks()).subscribe()
|
|
391
401
|
}
|
|
392
402
|
drawRectangle() {
|
|
393
403
|
this.zone.run(() => {
|
|
@@ -513,4 +523,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
513
523
|
}], initError: [{
|
|
514
524
|
type: Output
|
|
515
525
|
}] } });
|
|
516
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL3dlYmNhbS93ZWJjYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vd2ViY2FtL3dlYmNhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUF5QyxNQUFNLE1BQU0sQ0FBQztBQVluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVVyRCxNQUFNLE9BQU8sZUFDWCxTQUFRLGFBQWE7SUE4QnJCLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLCtCQUErQjtRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQWdCRCxZQUNTLGtCQUFzQyxFQUN0QyxRQUFrQixFQUNqQixFQUFxQixFQUNyQixJQUFZLEVBRVosY0FBd0M7UUFFaEQsS0FBSyxFQUFFLENBQUM7UUFQRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDakIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUVaLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQXpEbEQsZUFBVSxHQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDMUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixlQUFVLEdBQVE7WUFDaEIsR0FBRyxFQUFFLElBQUk7WUFDVCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUM7UUErQk0sV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUtSLG1CQUFjLEdBQzdCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDWixlQUFVLEdBQ3pCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDYixpQkFBWSxHQUMzQixJQUFJLFlBQVksRUFBZSxDQUFDO1FBRWpCLGNBQVMsR0FDeEIsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFVdEMsQ0FBQztJQUNELGVBQWU7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlCLGVBQWU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILGdCQUFnQjtRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyRSxNQUFNLHFCQUFxQixHQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixxQkFBcUIsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ3BELENBQUM7SUFDTyxjQUFjO1FBQ3BCLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7UUFDdkMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQjtnQkFDRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2hFLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztpQkFDdEM7cUJBQU07b0JBQ0wsR0FBRyxDQUFDLEtBQUssR0FBRzt3QkFDVixLQUFLLEVBQUU7NEJBQ0wsR0FBRyxFQUFFLElBQUk7NEJBQ1QsS0FBSyxFQUFFLElBQUk7NEJBQ1gsR0FBRyxFQUFFLElBQUk7eUJBQ1Y7d0JBQ0QsTUFBTSxFQUFFOzRCQUNOLEdBQUcsRUFBRSxHQUFHOzRCQUNSLEtBQUssRUFBRSxJQUFJOzRCQUNYLEdBQUcsRUFBRSxJQUFJO3lCQUNWO3FCQUNGLENBQUM7aUJBQ0g7Z0JBRUQsTUFBTTtZQUVSLEtBQUssUUFBUTtnQkFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2pCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ2hFLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztpQkFDL0I7cUJBQU07b0JBQ0wsR0FBRyxDQUFDLEtBQUssR0FBRzt3QkFDVixTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO3dCQUN0QixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUN2QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUN2QixDQUFDO2lCQUNIO2dCQUVELE1BQU07U0FDVDtRQUVELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBWSxtQkFBbUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRCxJQUFZLHVCQUF1QjtRQUNqQyxJQUFJO1lBQ0YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQy9EO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvRCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QixNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQW1CO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7UUFDakUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDTyxLQUFLLENBQUMscUJBQTBCO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUM3RCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQ1QsSUFBSSxDQUNGLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUF5QjtZQUMxRCxLQUFLLEVBQUUscUJBQXFCO1NBQzdCLENBQUMsQ0FDSCxDQUNGLENBQUMsU0FBUyxDQUNULENBQUMsTUFBbUIsRUFBRSxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMvQixtQ0FBbUM7Z0JBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNsQixJQUFJO3dCQUNGLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDakMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBRS9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUN2QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQzt3QkFDM0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7d0JBQzNCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7d0JBQ3BDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7d0JBRXRDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7d0JBQzNCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7d0JBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsTUFBTSxFQUNOLEdBQUcsRUFDSCxHQUFHLEVBQ0gsUUFBUSxFQUNSLFlBQVksRUFDWixhQUFhLENBQ2QsQ0FBQzt3QkFFRixJQUNFLEdBQUc7NEJBQ0gsWUFBWTs0QkFDWixHQUFHLEdBQUcsWUFBWTs0QkFDbEIsUUFBUSxJQUFJLEdBQUcsRUFDZjs0QkFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7NEJBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRTtnQ0FDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDOzZCQUNuQzt5QkFDRjs2QkFBTTs0QkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUMxQjtxQkFDRjtvQkFBQyxPQUFPLEtBQUssRUFBRTt3QkFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNyQjtpQkFDRjtxQkFBTTtvQkFDTCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLEVBQ0QsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNMLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUUxQixJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLEVBQUUsWUFBWSxvQkFBb0IsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztxQkFDbkM7b0JBQ0QsZUFBZTtvQkFDZixpQkFBaUI7b0JBQ2pCLGlCQUFpQjtvQkFDakIsTUFBTTtvQkFDTixHQUFHO2lCQUNKO3FCQUFNO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztpQkFDbkM7YUFDRjtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXhDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxTQUFTO1FBQ1AsSUFBSSxPQUFPLEdBQXNCLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7UUFFdkcsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRS9DLE1BQU0sTUFBTSxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUM7UUFFeEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO1FBQzNCLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7U0FDTCxDQUFDO1FBRUYsSUFBSSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQzdCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDO1lBQzdCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFHLE1BQU0sQ0FBQztTQUN2QzthQUFNO1lBQ0wsU0FBUyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUM7WUFDN0IsU0FBUyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsTUFBTSxDQUFDO1NBQ3ZDO1FBRUQsK0JBQStCO1FBRS9CLE9BQU8sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQzdCLE1BQU0sR0FBRyxHQUFRLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQ3hDLGdCQUFnQjtRQUNoQix1Q0FBdUM7UUFDdkMsb0JBQW9CO1FBQ3BCLGdCQUFnQjtRQUNoQix3QkFBd0I7UUFDeEIsNEJBQTRCO1NBQzdCLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7UUFDekUsTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUUzQixNQUFNLElBQUksR0FBUSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRTtRQUN4QyxnQkFBZ0I7UUFDaEIsdUNBQXVDO1FBQ3ZDLG9CQUFvQjtRQUNwQixnQkFBZ0I7UUFDaEIsd0JBQXdCO1FBQ3hCLDRCQUE0QjtTQUM3QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1FBRWpDLDhDQUE4QztRQUU5QyxtREFBbUQ7UUFFbkQseUJBQXlCO1FBRXpCLCtDQUErQztRQUMvQyxtQkFBbUI7UUFDbkIsOEJBQThCO1FBRTlCLGtEQUFrRDtRQUNsRCw4Q0FBOEM7UUFDOUMscUNBQXFDO1FBQ3JDLHVCQUF1QjtRQUN2QixvQkFBb0I7UUFDcEIsS0FBSztJQUNQLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE1BQU0sUUFBUSxHQUFXLFlBQVksQ0FBQztRQUN0QyxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTVELElBQUksT0FBTyxHQUFzQixRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0NBQW9DO1FBRXZHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFFbEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUV4QyxvREFBb0Q7UUFFcEQsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUU1QixNQUFNLEVBQUUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNuQyxNQUFNLEVBQUUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNwQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFakIsTUFBTSxHQUFHLEdBQVEsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDeEMsS0FBSyxFQUFFLEtBQUs7WUFDWixlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1lBQ1osY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxHQUFHLEVBQUU7WUFDUCxHQUFHLENBQUMsU0FBUyxDQUNYLElBQUksQ0FBQyxLQUFLLEVBQ1YsQ0FBQyxFQUNELENBQUMsRUFDRCxDQUFDLEdBQUcsTUFBTSxFQUNWLENBQUMsR0FBRyxNQUFNLEVBQ1YsQ0FBQyxFQUNELENBQUMsRUFDRCxDQUFDLEdBQUcsTUFBTSxFQUNWLENBQUMsR0FBRyxNQUFNLENBQ1gsQ0FBQztZQUVGLE1BQU0sUUFBUSxHQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXJELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FDL0QsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhLEVBQUUsRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRWhDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUU7WUFDNUIsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ3JCO1FBRUQsTUFBTSxLQUFLLEdBQUcsRUFBRTtZQUNkLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ1gsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUVuQixHQUFHO1lBQ0QsS0FBSyxJQUFJLE1BQU0sQ0FBQztZQUNoQixFQUFFLENBQUMsQ0FBQztTQUNMLFFBQ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNO1lBQzdDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDcEI7UUFFRixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDdkIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtZQUM1QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsT0FBTztTQUNSO1FBQ0QsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQy9CLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztZQUUzQixNQUFNLFFBQVEsR0FBVyxZQUFZLENBQUM7WUFFdEMsMEdBQTBHO1lBRTFHLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUUvQyw4QkFBOEI7WUFDOUIsZ0NBQWdDO1lBQ2hDLHdDQUF3QztZQUV4Qyw4Q0FBOEM7WUFDOUMsa0JBQWtCO1lBQ2xCLHlDQUF5QztZQUN6QyxzQkFBc0I7WUFDdEIsa0JBQWtCO1lBQ2xCLDBCQUEwQjtZQUMxQixNQUFNO1lBRU4sNEVBQTRFO1lBQzVFLGtDQUFrQztZQUNsQyxpQ0FBaUM7WUFFakMsOENBQThDO1lBQzlDLGtCQUFrQjtZQUNsQix5Q0FBeUM7WUFDekMsc0JBQXNCO1lBQ3RCLGtCQUFrQjtZQUNsQiwwQkFBMEI7WUFDMUIsTUFBTTtZQUVOLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUU3RCxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7Z0JBQ2YsR0FBRyxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztnQkFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUM3QixHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXJDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLDRCQUE0QjtnQkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUMsK0JBQStCO2dCQUMvQix1QkFBdUI7Z0JBRXZCLHdFQUF3RTtnQkFFeEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekMsMEJBQTBCO2dCQUUxQixzQkFBc0I7Z0JBRXRCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRTlDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVsRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLHlCQUF5QjtnQkFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxJQUFJLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFFaEMsZ0NBQWdDO2dCQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUV4QyxzQ0FBc0M7Z0JBQ3RDLE1BQU0sUUFBUSxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUUzQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBRXBELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwQixJQUFJLFdBQVcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FDbEQsQ0FBQztvQkFDRixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUU7WUFDbEQscURBQXFEO1lBRXJELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBdUIsRUFBRSxFQUFFO2dCQUMvRCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUU1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzFDLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RELE9BQU8sR0FBRyxFQUFFLENBQUM7YUFDZDtZQUNELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFckMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRW5ELE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBRWxDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVyQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFFN0MsNENBQTRDO1lBQzVDLE1BQU0sTUFBTSxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUM7WUFFeEMsOEJBQThCO1lBQzlCLDBCQUEwQjtZQUMxQixnQ0FBZ0M7WUFDaEMsSUFBSTtZQUVKLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUU5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBRXJELElBQUksT0FBTyxDQUFDO1lBQ1osSUFBSSxNQUFNLENBQUM7WUFFWCxJQUFJLFVBQVUsSUFBSSxXQUFXLEVBQUU7Z0JBQzdCLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBRWYsT0FBTyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBRTFCLElBQUksT0FBTyxHQUFHLE1BQU0sRUFBRTtvQkFDcEIsT0FBTyxHQUFHLE1BQU0sQ0FBQztvQkFDakIsTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUM7aUJBQzNCO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDakIsTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0JBQzFCLElBQUksTUFBTSxHQUFHLEtBQUssRUFBRTtvQkFDbEIsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDZixPQUFPLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQztpQkFDM0I7YUFDRjtZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFVCxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQ3JCLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztnQkFDekIsQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDakI7aUJBQU07Z0JBQ0wsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUMxQixDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQzthQUNqQjtZQUNELElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRTtnQkFDZCxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7Z0JBQ3pCLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO2FBQ2pCO1lBRUQsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXpDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1lBRTFCLDhDQUE4QztZQUM5QyxHQUFHLENBQUMsU0FBUyxHQUFHLDBCQUEwQixDQUFDO1lBQzNDLDZCQUE2QjtZQUM3QixHQUFHLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFaEIsZ0RBQWdEO1lBQ2hELHdCQUF3QjtZQUN4QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUV2QyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2QyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDYixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFWCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksR0FBRztnQkFDakMsQ0FBQyxFQUFFLElBQUk7Z0JBQ1AsQ0FBQyxFQUFFLEdBQUc7Z0JBQ04sQ0FBQztnQkFDRCxDQUFDO2dCQUNELEVBQUUsRUFBRSxNQUFNO2dCQUNWLEVBQUUsRUFBRSxPQUFPO2FBQ1osQ0FBQztZQUVGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixnQkFBZ0I7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbkIsbURBQW1EO1FBQ25ELGtCQUFrQjtRQUNsQiw2Q0FBNkM7UUFDN0MsTUFBTTtRQUVOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFakIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzRHQXRuQlUsZUFBZTtnR0FBZixlQUFlLDRpQkNyQzVCLCtWQVlBOzJGRHlCYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzROQWdCdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFhTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWFNLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFUyxRQUFRO3NCQUFyRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5CLGNBQWM7c0JBQTlCLE1BQU07Z0JBRVUsVUFBVTtzQkFBMUIsTUFBTTtnQkFFVSxZQUFZO3NCQUE1QixNQUFNO2dCQUdVLFNBQVM7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2ViY2FtSW5pdEVycm9yIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbml0LWVycm9yJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbWFnZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXZWJjYW1VdGlsIH0gZnJvbSAnLi4vdXRpbC93ZWJjYW0udXRpbCc7XG5pbXBvcnQgeyBXZWJjYW1NaXJyb3JQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1taXJyb3ItcHJvcGVydGllcyc7XG5pbXBvcnQge1xuICBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gIEJyZWFrcG9pbnRzLFxuICBCcmVha3BvaW50U3RhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgd29ya2VydGV4dCB9IGZyb20gJy4uLy4uLy4uL2FwcC53b3JrZXInO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIHZhciBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuZG9jLXdlYmNhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWJjYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93ZWJjYW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFdlYmNhbUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSB0cmlnZ2VyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBjYW52YXNTaXplOiBhbnkgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbiAgc2hvd1ZpZGVvID0gZmFsc2U7XG4gIHNldHVwQXR0ZW1wdCA9IDA7XG4gIGNhbnZhc0RhdGE6IGFueSA9IHtcbiAgICBjdHg6IG51bGwsXG4gICAgY3R4TzogbnVsbCxcbiAgfTtcblxuICBtZWRpYVN0cmVhbSE6IE1lZGlhU3RyZWFtO1xuICBASW5wdXQoKSBpbWFnZUhhbmRsZXIhOiBTdWJqZWN0PGFueT47XG5cbiAgQElucHV0KCkgcHVibGljIHR5cGU/OiAnZG9jdW1lbnQnIHwgJ3NlbGZpZScgfCAnbWFudWFsJztcblxuICBASW5wdXQoKSB0cmlnZ2VyITogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAvLyBwdWJsaWMgc2V0IHRyaWdnZXIodHJpZ2dlcjogT2JzZXJ2YWJsZTxudW1iZXI+KSB7XG4gIC8vICAgaWYgKHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbikge1xuICAvLyAgICAgdGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIC8vICAgfVxuXG4gIC8vICAgLy8gU3Vic2NyaWJlIHRvIGV2ZW50cyBmcm9tIHRoaXMgT2JzZXJ2YWJsZSB0byB0YWtlIHNuYXBzaG90c1xuICAvLyAgIHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbiA9IHRyaWdnZXIuc3Vic2NyaWJlKCh0aW1lKSA9PiB7XG4gIC8vICAgICB0aGlzLnRha2VTbmFwc2hvdCh0aW1lKTtcbiAgLy8gICB9KTtcbiAgLy8gfVxuICByZXNpemVUaW1lb3V0OiBhbnk7XG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbi50ID0gMDtcbiAgICAvLyB0aGlzLnZpZGVvUmVhZHkubmV4dChmYWxzZSk7XG4gICAgaWYgKHRoaXMucmVzaXplVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzaXplVGltZW91dCk7XG4gICAgfVxuICAgIHRoaXMucmVzaXplVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kcmF3UmVjdGFuZ2xlKCk7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaHVua3M6IGFueSA9IFtdO1xuICBAVmlld0NoaWxkKCdjYW52YXMnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGNhbnZhczogYW55O1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZGVvJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSB2aWRlb1JlZjogYW55O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2FtZXJhU3dpdGNoZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyB2aWRlb1JlYWR5OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBpbWFnZUNhcHR1cmU6IEV2ZW50RW1pdHRlcjxXZWJjYW1JbWFnZT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8V2ViY2FtSW1hZ2U+KCk7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBpbml0RXJyb3I6IEV2ZW50RW1pdHRlcjxXZWJjYW1Jbml0RXJyb3I+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFdlYmNhbUluaXRFcnJvcj4oKTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIHB1YmxpYyBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG5cbiAgICBwcml2YXRlIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS53YXJuKCdbdmlkZW9dIHN0YXJ0Jyk7XG4gICAgLy8gaW5pdGlhbCBsb2FkXG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci5nZXREZXZpY2VzKCkpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgfSk7XG5cbiAgICAvLyBjYW1lcmEgc3dpdGNoXG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci53ZWJjYW1PYnNlcnZhYmxlKS5zdWJzY3JpYmUoKGRldmljZSkgPT4ge1xuICAgICAgY29uc3QgdmlkZW9UcmFja0NvbnN0cmFpbnRzOiBhbnkgPSB0aGlzLnNldENvbnN0cmFpbnRzKCk7XG4gICAgICB0aGlzLnN0b3BBbGxUcmFja3MoKTtcbiAgICAgIHRoaXMuc2hvd1ZpZGVvID0gZmFsc2U7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHZpZGVvVHJhY2tDb25zdHJhaW50cy5kZXZpY2VJZCA9IGRldmljZTtcbiAgICAgIHRoaXMuc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX19zdWJzKHRoaXMudHJpZ2dlcikuc3Vic2NyaWJlKCh0aW1lKSA9PiB0aGlzLnRha2VTbmFwc2hvdCh0aW1lKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZGVvKCkge1xuICAgIHJldHVybiB0aGlzLnZpZGVvUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbiAgZ2V0IGlzTW9iaWxlKCkge1xuICAgIHJldHVybiB0aGlzLnBsYXRmb3JtLkFORFJPSUQgfHwgdGhpcy5wbGF0Zm9ybS5JT1M7XG4gIH1cbiAgcHJpdmF0ZSBzZXRDb25zdHJhaW50cygpIHtcbiAgICBjb25zdCBvdXQ6IE1lZGlhU3RyZWFtQ29uc3RyYWludHMgPSB7fTtcbiAgICBjb25zb2xlLndhcm4oJ01PQklMRScsIHRoaXMuaXNNb2JpbGUpO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxNjAwIH0sIHdpZHRoOiB7IGlkZWFsOiAxNjAwIH0gfTtcbiAgICAgICAgICBvdXQudmlkZW8uZmFjaW5nTW9kZSA9ICdlbnZpcm9ubWVudCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0LnZpZGVvID0ge1xuICAgICAgICAgICAgd2lkdGg6IHtcbiAgICAgICAgICAgICAgbWluOiAxMjgwLFxuICAgICAgICAgICAgICBpZGVhbDogMTkyMCxcbiAgICAgICAgICAgICAgbWF4OiAyOTAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhlaWdodDoge1xuICAgICAgICAgICAgICBtaW46IDcyMCxcbiAgICAgICAgICAgICAgaWRlYWw6IDEwODAsXG4gICAgICAgICAgICAgIG1heDogMjkwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZWxmaWUnOlxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxNjAwIH0sIHdpZHRoOiB7IGlkZWFsOiAxNjAwIH0gfTtcbiAgICAgICAgICBvdXQudmlkZW8uZmFjaW5nTW9kZSA9ICd1c2VyJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQudmlkZW8gPSB7XG4gICAgICAgICAgICBmcmFtZVJhdGU6IHsgbWluOiAxMCB9LFxuICAgICAgICAgICAgaGVpZ2h0OiB7IGlkZWFsOiAxMDgwIH0sXG4gICAgICAgICAgICB3aWR0aDogeyBpZGVhbDogMTkyMCB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYWN0aXZlVHJhY2tTZXR0aW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5tZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldFNldHRpbmdzKCk7XG4gIH1cbiAgcHJpdmF0ZSBnZXQgYWN0aXZlVHJhY2tDYXBhYmlsaXRpZXMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLm1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLmNhbWVyYVByb3ZpZGVyLmdldERldmljZXMoKSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICBjb25zb2xlLndhcm4oJ0RFVklDRVMnLHJlc3ApXG4gICAgICBjb25zdCB2aWRlb1RyYWNrQ29uc3RyYWludHMgPSB0aGlzLnNldENvbnN0cmFpbnRzKCk7XG4gICAgICB0aGlzLnNldHVwQXR0ZW1wdCA9IDA7XG4gICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERldmljZUlkKHN0cmVhbTogTWVkaWFTdHJlYW0pIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gc3RyZWFtO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuZGV2aWNlSWQgPSB0aGlzLmFjdGl2ZVRyYWNrU2V0dGluZ3MuZGV2aWNlSWQ7XG4gICAgdGhpcy5zdGFydFZpZGVvKCk7XG4gIH1cbiAgcHJpdmF0ZSBzZXR1cCh2aWRlb1RyYWNrQ29uc3RyYWludHM6IGFueSkge1xuICAgIGNvbnNvbGUud2FybigndmlkZW9UcmFja0NvbnN0cmFpbnRzJywgdmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgICBjb25zb2xlLnRpbWUoJ2RldmljZScpXG4gICAgdGhpcy5fX3N1YnMoXG4gICAgICBmcm9tKFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSg8TWVkaWFTdHJlYW1Db25zdHJhaW50cz57XG4gICAgICAgICAgdmlkZW86IHZpZGVvVHJhY2tDb25zdHJhaW50cyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLnN1YnNjcmliZShcbiAgICAgIChzdHJlYW06IE1lZGlhU3RyZWFtKSA9PiB7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgnZGV2aWNlJyk7XG4gICAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgICAgLy9jb25zb2xlLndhcm4odC5nZXRDb25zdHJhaW50cygpKTtcblxuICAgICAgICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0LmdldFNldHRpbmdzKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcCA9IHQuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbiA9IHQuZ2V0Q29uc3RyYWludHMoKTtcblxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oY2FwLCBjb24pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oc2V0dGluZ3MpO1xuICAgICAgICAgICAgICBjb25zdCBtYXggPSBjYXAud2lkdGg/Lm1heDtcbiAgICAgICAgICAgICAgY29uc3QgbWluID0gY2FwLndpZHRoPy5taW47XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHNldHRpbmdzLndpZHRoO1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgIGNvbnN0IGNvbldpZHRoID0gY29uLndpZHRoO1xuICAgICAgICAgICAgICBjb25zdCBjb25IZWlnaHQgPSBjb24ud2lkdGg7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnQ0FQUycsXG4gICAgICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgICAgIG1heCxcbiAgICAgICAgICAgICAgICAnQ1VSRU5UJyxcbiAgICAgICAgICAgICAgICBjdXJyZW50V2lkdGgsXG4gICAgICAgICAgICAgICAgY3VycmVudEhlaWdodFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXggJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50V2lkdGggJiZcbiAgICAgICAgICAgICAgICBtYXggPiBjdXJyZW50V2lkdGggJiZcbiAgICAgICAgICAgICAgICBjb25XaWR0aCAhPSBtYXhcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tTRVQgTkVXIFJFU09MVVRJT05dJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cEF0dGVtcHQrKztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXR1cEF0dGVtcHQgPCA0KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGV2aWNlSWQoc3RyZWFtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdNT0JJTEUgVklERU8gU1RBUlQnKTtcbiAgICAgICAgICAgIHRoaXMuc2V0RGV2aWNlSWQoc3RyZWFtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIChlcikgPT4ge1xuICAgICAgICB0aGlzLnNldHVwQXR0ZW1wdCsrO1xuICAgICAgICBjb25zb2xlLndhcm4oJ0VSUk9SJywgZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLnNldHVwQXR0ZW1wdCA8IDQpIHtcbiAgICAgICAgICBpZiAoZXIgaW5zdGFuY2VvZiBPdmVyY29uc3RyYWluZWRFcnJvcikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRoaXMuc2V0dXAoe1xuICAgICAgICAgICAgLy8gICBoZWlnaHQ6IDcyMCxcbiAgICAgICAgICAgIC8vICAgd2lkdGg6IDEyODAsXG4gICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgIC8vfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRWaWRlbygpIHtcbiAgICBjb25zb2xlLmxvZygnU1RBUlQgVklERU8nKTtcbiAgICB0aGlzLnZpZGVvLnNyY09iamVjdCA9IHRoaXMubWVkaWFTdHJlYW07XG5cbiAgICB0aGlzLnZpZGVvLm9ubG9hZGVkbWV0YWRhdGEgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIHRoaXMudmlkZW8ucGxheSgpO1xuICAgICAgdGhpcy5zaG93VmlkZW8gPSB0cnVlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBjb25zb2xlLmxvZygnVklERU8gUExBWScpO1xuICAgIH07XG4gICAgdGhpcy52aWRlby5vbnBsYXkgPSAoKSA9PiB7XG4gICAgICB0aGlzLnZpZGVvUmVhZHkubmV4dCh0cnVlKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudmlkZW8udmlkZW9XaWR0aCwgdGhpcy52aWRlby52aWRlb0hlaWdodCk7XG4gICAgICB0aGlzLmRyYXdSZWN0YW5nbGUoKTtcbiAgICB9O1xuICB9XG4gIHNldENhbnZhcygpIHtcbiAgICBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB7IHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuXG4gICAgY29uc3QgY2FudmFzU21hbFNpemUgPSAzODQ7XG4gICAgY29uc3Qgc21hbGxTaXplID0ge1xuICAgICAgdzogMCxcbiAgICAgIGg6IDAsXG4gICAgfTtcblxuICAgIGlmICh2aWRlb1dpZHRoID49IHZpZGVvSGVpZ2h0KSB7XG4gICAgICBzbWFsbFNpemUudyA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZSAvIGFzcGVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIHNtYWxsU2l6ZS5oID0gY2FudmFzU21hbFNpemUgKiBhc3BlY3Q7XG4gICAgfVxuXG4gICAgLy9jb25zb2xlLmxvZygnU1onLCBzbWFsbFNpemUpO1xuXG4gICAgX2NhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG4gICAgX2NhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyBhbHBoYTogZmFsc2UsXG4gICAgICAvLyBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIC8vIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyBkZXB0aDogZmFsc2UsXG4gICAgICAvLyBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICAgIC8vIHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBuZWVkcyBhbiBpbml0aWFsIHNpemVcbiAgICBjYW52YXMuaGVpZ2h0ID0gc21hbGxTaXplLmg7XG4gICAgY2FudmFzLndpZHRoID0gc21hbGxTaXplLnc7XG5cbiAgICBjb25zdCBjdHhPOiBhbnkgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyBhbHBoYTogZmFsc2UsXG4gICAgICAvLyBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIC8vIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyBkZXB0aDogZmFsc2UsXG4gICAgICAvLyBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICAgIC8vIHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FudmFzRGF0YS5jdHggPSBjdHg7XG4gICAgdGhpcy5jYW52YXNEYXRhLmN0eE8gPSBjdHhPO1xuICAgIHRoaXMuY2FudmFzRGF0YS5jYW52YXMgPSBjYW52YXM7XG4gICAgdGhpcy5jYW52YXNEYXRhLl9jYW52YXMgPSBfY2FudmFzO1xuICAgIHRoaXMuY2FudmFzRGF0YS5zaXplID0gc21hbGxTaXplO1xuXG4gICAgLy8gY29uc3Qgc3RyZWFtID0gdGhpcy52aWRlby5jYXB0dXJlU3RyZWFtKDUpO1xuXG4gICAgLy8gY29uc3QgbWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSk7XG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLnN0YXJ0KCk7XG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChlOmFueSkgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2coZSlcbiAgICAvLyAgIHRoaXMuY2h1bmtzLnB1c2goZS5kYXRhKTtcblxuICAgIC8vICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGUuZGF0YSk7XG4gICAgLy8gICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIC8vICAgYW5jaG9yLmRvd25sb2FkID0gJ215ZmlsZS53ZWJtJztcbiAgICAvLyAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIC8vICAgYW5jaG9yLmNsaWNrKCk7XG4gICAgLy8gfTtcbiAgfVxuXG4gIHByaXZhdGUgdGFrZVNlbGZpZSgpIHtcbiAgICBjb25zdCBtaW1lVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnO1xuICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgb2Zmc2V0V2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgbGV0IF9jYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vdGhpcy5jYW52YXNTbmFwc2hvdC5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgeyB3LCBoIH0gPSB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbjtcblxuICAgIGNvbnN0IGFzcGVjdCA9IHZpZGVvV2lkdGggLyBvZmZzZXRXaWR0aDtcblxuICAgIC8vIGNvbnNvbGUubG9nKHZpZGVvV2lkdGgsIG9mZnNldFdpZHRoLCBsLCB0LCB3LCBoKTtcblxuICAgIF9jYW52YXMud2lkdGggPSB3ICogYXNwZWN0O1xuICAgIF9jYW52YXMuaGVpZ2h0ID0gaCAqIGFzcGVjdDtcblxuICAgIGNvbnN0IGR4ID0gdmlkZW9XaWR0aCAtIHcgKiBhc3BlY3Q7XG4gICAgY29uc3QgZHkgPSB2aWRlb0hlaWdodCAtIGggKiBhc3BlY3Q7XG4gICAgY29uc3QgeCA9IGR4IC8gMjtcbiAgICBjb25zdCB5ID0gZHkgLyAyO1xuXG4gICAgY29uc3QgY3R4OiBhbnkgPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgYWxwaGE6IGZhbHNlLFxuICAgICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICBhbnRpYWxpYXM6IGZhbHNlLFxuICAgICAgZGVwdGg6IGZhbHNlLFxuICAgICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICB0aGlzLnZpZGVvLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0LFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0XG4gICAgICApO1xuXG4gICAgICBjb25zdCBpbWdBc1VybDogYW55ID0gX2NhbnZhcy50b0RhdGFVUkwobWltZVR5cGUsIDEpO1xuXG4gICAgICB0aGlzLmltYWdlQ2FwdHVyZS5lbWl0KFxuICAgICAgICBuZXcgV2ViY2FtSW1hZ2UoaW1nQXNVcmwsIG1pbWVUeXBlLCBuZXcgSW1hZ2VEYXRhKDEsIDEpLCBudWxsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBodW1hbkZpbGVTaXplKGJ5dGVzOiBudW1iZXIsIHNpID0gZmFsc2UsIGRwID0gMSkge1xuICAgIGNvbnN0IHRocmVzaCA9IHNpID8gMTAwMCA6IDEwMjQ7XG5cbiAgICBpZiAoTWF0aC5hYnMoYnl0ZXMpIDwgdGhyZXNoKSB7XG4gICAgICByZXR1cm4gYnl0ZXMgKyAnIEInO1xuICAgIH1cblxuICAgIGNvbnN0IHVuaXRzID0gc2lcbiAgICAgID8gWydrQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddXG4gICAgICA6IFsnS2lCJywgJ01pQicsICdHaUInLCAnVGlCJywgJ1BpQicsICdFaUInLCAnWmlCJywgJ1lpQiddO1xuICAgIGxldCB1ID0gLTE7XG4gICAgY29uc3QgciA9IDEwICoqIGRwO1xuXG4gICAgZG8ge1xuICAgICAgYnl0ZXMgLz0gdGhyZXNoO1xuICAgICAgKyt1O1xuICAgIH0gd2hpbGUgKFxuICAgICAgTWF0aC5yb3VuZChNYXRoLmFicyhieXRlcykgKiByKSAvIHIgPj0gdGhyZXNoICYmXG4gICAgICB1IDwgdW5pdHMubGVuZ3RoIC0gMVxuICAgICk7XG5cbiAgICByZXR1cm4gYnl0ZXMudG9GaXhlZChkcCkgKyAnICcgKyB1bml0c1t1XTtcbiAgfVxuXG4gIHRha2VTbmFwc2hvdCh0aW1lOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSAnZG9jdW1lbnQnKSB7XG4gICAgICB0aGlzLnRha2VTZWxmaWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gY29uc29sZS53YXJuKCdTTkFQJywgdGltZSk7XG4gICAgaWYgKCF0aGlzLnNob3dWaWRlbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgY2FudmFzU21hbFNpemUgPSAzODQ7XG5cbiAgICAgIGNvbnN0IG1pbWVUeXBlOiBzdHJpbmcgPSAnaW1hZ2UvanBlZyc7XG5cbiAgICAgIC8vIGxldCBfY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvL3RoaXMuY2FudmFzU25hcHNob3QubmF0aXZlRWxlbWVudDtcblxuICAgICAgY29uc3QgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgICAgLy8gX2NhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG4gICAgICAvLyBfY2FudmFzLmhlaWdodCA9IHZpZGVvSGVpZ2h0O1xuICAgICAgLy8gY29uc29sZS5sb2codmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuXG4gICAgICAvLyBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyAgIGFscGhhOiBmYWxzZSxcbiAgICAgIC8vICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICAvLyAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIC8vICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgICAvLyB9KTtcblxuICAgICAgLy8gY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIG5lZWRzIGFuIGluaXRpYWwgc2l6ZVxuICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgLy8gY2FudmFzLndpZHRoID0gY2FudmFzU21hbFNpemU7XG5cbiAgICAgIC8vIGNvbnN0IGN0eE86IGFueSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIC8vICAgYWxwaGE6IGZhbHNlLFxuICAgICAgLy8gICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIC8vICAgYW50aWFsaWFzOiBmYWxzZSxcbiAgICAgIC8vICAgZGVwdGg6IGZhbHNlLFxuICAgICAgLy8gICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICAgIC8vIH0pO1xuXG4gICAgICBjb25zdCB7IGN0eCwgY3R4TywgY2FudmFzLCBfY2FudmFzLCBzaXplIH0gPSB0aGlzLmNhbnZhc0RhdGE7XG5cbiAgICAgIGlmIChjdHggJiYgY3R4Tykge1xuICAgICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRyYXdTdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuICAgICAgICBjdHhPLmNsZWFyUmVjdCgwLCAwLCBzaXplLncsIHNpemUuaCk7XG5cbiAgICAgICAgY3R4LmRyYXdJbWFnZSh0aGlzLnZpZGVvLCAwLCAwKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWUoJ2RyYXdWaWRlbycpO1xuICAgICAgICBjdHhPLmRyYXdJbWFnZShfY2FudmFzLCAwLCAwLCBzaXplLncsIHNpemUuaCk7XG4gICAgICAgIC8vY29uc29sZS50aW1lRW5kKCdkcmF3VmlkZW8nKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWUoJ0RSQVcnKTtcblxuICAgICAgICAvLyAgY29uc3QgaW1EYXRhOiBhbnkgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgICBjb25zb2xlLmxvZyhjYW52YXMud2lkdGgsIF9jYW52YXMud2lkdGgpO1xuICAgICAgICAvL2NvbnNvbGUudGltZUVuZCgnRFJBVycpO1xuXG4gICAgICAgIC8vY29uc29sZS50aW1lKCdDVFgnKTtcblxuICAgICAgICBjb25zdCByZXNpemUgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG5cbiAgICAgICAgY29uc3QgY2FudmFzRGF0YSA9IF9jYW52YXMudG9EYXRhVVJMKG1pbWVUeXBlLCAxKTtcblxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmh1bWFuRmlsZVNpemUoY2FudmFzRGF0YS5sZW5ndGgpKTtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5odW1hbkZpbGVTaXplKHJlc2l6ZS5sZW5ndGgpKTtcbiAgICAgICAgY29uc29sZS5sb2cobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWVFbmQoJ0NUWCcpO1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkaWZmID0gY3VycmVudFRpbWUgLSB0aW1lO1xuXG4gICAgICAgIC8vIHRvdGFsIHRpbWUgZm9yIHBhY2sgb25lIGltYWdlXG4gICAgICAgIGNvbnN0IGRyYXdUaW1lID0gRGF0ZS5ub3coKSAtIGRyYXdTdGFydDtcblxuICAgICAgICAvL2NvbnNvbGUud2FybignRFJBVyBUSU1FJywgZHJhd1RpbWUpO1xuICAgICAgICBjb25zdCBkZWxheU1heCA9IGRyYXdUaW1lIDwgNjAgPyAxMDAgOiAyMDA7XG5cbiAgICAgICAgY29uc3QgZGVsYXkgPSBkaWZmID4gZGVsYXlNYXggPyAwIDogZGVsYXlNYXggLSBkaWZmO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmltYWdlQ2FwdHVyZS5lbWl0KFxuICAgICAgICAgICAgbmV3IFdlYmNhbUltYWdlKGNhbnZhc0RhdGEsIG1pbWVUeXBlLCAnJywgcmVzaXplKVxuICAgICAgICAgICk7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB9LCBkZWxheSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BBbGxUcmFja3MoKSB7XG4gICAgdGhpcy5zaG93VmlkZW8gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5tZWRpYVN0cmVhbSAmJiB0aGlzLm1lZGlhU3RyZWFtLmdldFRyYWNrcykge1xuICAgICAgLy8gZ2V0VHJhY2tzKCkgcmV0dXJucyBhbGwgbWVkaWEgdHJhY2tzICh2aWRlbythdWRpbylcblxuICAgICAgdGhpcy5tZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjazogTWVkaWFTdHJlYW1UcmFjaykgPT4ge1xuICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICAgIHRoaXMudmlkZW8uc3JjT2JqZWN0LnJlbW92ZVRyYWNrKHRyYWNrKTtcbiAgICAgICAgdGhpcy5tZWRpYVN0cmVhbS5yZW1vdmVUcmFjayh0cmFjayk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcblxuICAgICAgdGhpcy52aWRlby5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkcmF3UmVjdGFuZ2xlKCkge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3QgX2NhbnZhcyA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBsZXQgcGFkZGluZyA9IDEwO1xuICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlICYmIF9jYW52YXMud2lkdGggIT09IF9jYW52YXMuaGVpZ2h0KSB7XG4gICAgICAgIHBhZGRpbmcgPSA0MDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN0eCA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBfY2FudmFzLndpZHRoLCBfY2FudmFzLmhlaWdodCk7XG5cbiAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gX2NhbnZhcztcblxuICAgICAgY29uc29sZS5sb2coJ0NBTlZBUycsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICBsZXQgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgICAgLy8gdmlkZW8gd2lsbCBiZSBzY2FsZWQgdG8gbWF4IGNhbnZhcyBoZWlnaHRcbiAgICAgIGNvbnN0IGFzcGVjdCA9IHZpZGVvV2lkdGggLyB2aWRlb0hlaWdodDtcblxuICAgICAgLy8gaWYgKHZpZGVvSGVpZ2h0IDwgaGVpZ2h0KSB7XG4gICAgICAvLyAgIHZpZGVvSGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgLy8gICB2aWRlb1dpZHRoID0gaGVpZ2h0KmFzcGVjdDtcbiAgICAgIC8vIH1cblxuICAgICAgY29uc29sZS5sb2coJ1ZJREVPJywgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuXG4gICAgICBjb25zdCBkb2NTaXplID0gdGhpcy50eXBlID09PSAnc2VsZmllJyA/IDEgOiA4NiAvIDU1O1xuXG4gICAgICBsZXQgX2hlaWdodDtcbiAgICAgIGxldCBfd2lkdGg7XG5cbiAgICAgIGlmICh2aWRlb1dpZHRoID49IHZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIF93aWR0aCA9IHdpZHRoO1xuXG4gICAgICAgIF9oZWlnaHQgPSBfd2lkdGggLyBhc3BlY3Q7XG5cbiAgICAgICAgaWYgKF9oZWlnaHQgPiBoZWlnaHQpIHtcbiAgICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAgIF93aWR0aCA9IGFzcGVjdCAqIF9oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIF93aWR0aCA9IGFzcGVjdCAqIF9oZWlnaHQ7XG4gICAgICAgIGlmIChfd2lkdGggPiB3aWR0aCkge1xuICAgICAgICAgIF93aWR0aCA9IHdpZHRoO1xuICAgICAgICAgIF9oZWlnaHQgPSBfd2lkdGggLyBhc3BlY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coJ0NBTEMnLCBfd2lkdGgsIF9oZWlnaHQpO1xuICAgICAgbGV0IHcsIGg7XG5cbiAgICAgIGlmIChfd2lkdGggPD0gX2hlaWdodCkge1xuICAgICAgICB3ID0gX3dpZHRoIC0gMiAqIHBhZGRpbmc7XG4gICAgICAgIGggPSB3IC8gZG9jU2l6ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGggPSBfaGVpZ2h0IC0gMiAqIHBhZGRpbmc7XG4gICAgICAgIHcgPSBkb2NTaXplICogaDtcbiAgICAgIH1cbiAgICAgIGlmICh3ID4gX3dpZHRoKSB7XG4gICAgICAgIHcgPSBfd2lkdGggLSAyICogcGFkZGluZztcbiAgICAgICAgaCA9IHcgLyBkb2NTaXplO1xuICAgICAgfVxuXG4gICAgICBoID0gTWF0aC5mbG9vcihoKTtcbiAgICAgIHcgPSBNYXRoLmZsb29yKHcpO1xuICAgICAgY29uc29sZS5sb2codywgaCk7XG5cbiAgICAgIGNvbnN0IGxlZnQgPSBNYXRoLmZsb29yKCh3aWR0aCAtIHcpIC8gMik7XG4gICAgICBjb25zdCB0b3AgPSBNYXRoLmZsb29yKChoZWlnaHQgLSBoKSAvIDIpO1xuXG4gICAgICBjdHguc3Ryb2tlU3R5bGUgPSAnd2hpdGUnO1xuXG4gICAgICAvLyBjdHguc3Ryb2tlUmVjdChsZWZ0LCB0b3AsIF93aWR0aCwgX2hlaWdodCk7XG4gICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSc7XG4gICAgICAvLyBjdHguc2hhZG93Q29sb3IgPSAnd2hpdGUnO1xuICAgICAgY3R4LnNoYWRvd0JsdXIgPSAxNTtcbiAgICAgIGN0eC5iZWdpblBhdGgoKTtcblxuICAgICAgLy8gRHJhdyB1c2luZyA1cHggZm9yIGJvcmRlciByYWRpdXMgb24gYWxsIHNpZGVzXG4gICAgICAvLyBzdHJva2UgaXQgYnV0IG5vIGZpbGxcbiAgICAgIGNvbnN0IHJhZGl1cyA9IHRoaXMuaXNNb2JpbGUgPyAxMCA6IDMwO1xuXG4gICAgICBjdHgucm91bmRSZWN0KGxlZnQsIHRvcCwgdywgaCwgcmFkaXVzKTtcbiAgICAgIGN0eC5zdHJva2UoKTtcbiAgICAgIGN0eC5maWxsKCk7XG5cbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uID0ge1xuICAgICAgICBsOiBsZWZ0LFxuICAgICAgICB0OiB0b3AsXG4gICAgICAgIHcsXG4gICAgICAgIGgsXG4gICAgICAgIF93OiBfd2lkdGgsXG4gICAgICAgIF9oOiBfaGVpZ2h0LFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXRDYW52YXMoKTtcbiAgICAgIC8vIGN0eC5zdHJva2UoKTtcbiAgICB9KTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZGVvLnBhdXNlKCk7XG5cbiAgICAvLyB0aGlzLnZpZGVvLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrOiBhbnkpID0+IHtcbiAgICAvLyAgIHRyYWNrLnN0b3AoKTtcbiAgICAvLyAgIHRoaXMudmlkZW8uc3JjT2JqZWN0LnJlbW92ZVRyYWNrKHRyYWNrKTtcbiAgICAvLyB9KTtcblxuICAgIHRoaXMuc3RvcEFsbFRyYWNrcygpO1xuXG4gICAgaWYgKHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuX19kZXN0cm95KCk7XG5cbiAgICBjb25zb2xlLndhcm4oJ1tWSURFT10gZGVzdHJveWVkJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3ZWJjYW0td3JhcHBlclwiPlxuICA8dmlkZW8gI3ZpZGVvIGF1dG9wbGF5IG11dGVkIHN0eWxlPVwiZGlzcGxheTogYmxvY2tcIiBwbGF5c2lubGluZT48L3ZpZGVvPlxuXG4gIDxkaXYgY2xhc3M9XCJyZWN0YW5nbGVcIj5cbiAgICA8Y2FudmFzXG4gICAgICAjY2FudmFzXG4gICAgICBbbmdTdHlsZV09XCJ7IHZpc2liaWxpdHk6IHNob3dWaWRlbyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH1cIlxuICAgICAgW3dpZHRoXT1cInZpZGVvLm9mZnNldFdpZHRoXCJcbiAgICAgIFtoZWlnaHRdPVwidmlkZW8ub2Zmc2V0SGVpZ2h0XCJcbiAgICA+PC9jYW52YXM+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
526
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL3dlYmNhbS93ZWJjYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vd2ViY2FtL3dlYmNhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUF5QyxNQUFNLE1BQU0sQ0FBQztBQVluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVVyRCxNQUFNLE9BQU8sZUFDWCxTQUFRLGFBQWE7SUE4QnJCLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLCtCQUErQjtRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQWdCRCxZQUNTLGtCQUFzQyxFQUN0QyxRQUFrQixFQUNqQixFQUFxQixFQUNyQixJQUFZLEVBRVosY0FBd0M7UUFF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Z0JBYU0sTUFBTTtzQkFBcEQsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVTLFFBQVE7c0JBQXJELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFbkIsY0FBYztzQkFBOUIsTUFBTTtnQkFFVSxVQUFVO3NCQUExQixNQUFNO2dCQUVVLFlBQVk7c0JBQTVCLE1BQU07Z0JBR1UsU0FBUztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXZWJjYW1Jbml0RXJyb3IgfSBmcm9tICcuLi9kb21haW4vd2ViY2FtLWluaXQtZXJyb3InO1xuaW1wb3J0IHsgV2ViY2FtSW1hZ2UgfSBmcm9tICcuLi9kb21haW4vd2ViY2FtLWltYWdlJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdlYmNhbVV0aWwgfSBmcm9tICcuLi91dGlsL3dlYmNhbS51dGlsJztcbmltcG9ydCB7IFdlYmNhbU1pcnJvclByb3BlcnRpZXMgfSBmcm9tICcuLi9kb21haW4vd2ViY2FtLW1pcnJvci1wcm9wZXJ0aWVzJztcbmltcG9ydCB7XG4gIEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgQnJlYWtwb2ludHMsXG4gIEJyZWFrcG9pbnRTdGF0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHdvcmtlcnRleHQgfSBmcm9tICcuLi8uLi8uLi9hcHAud29ya2VyJztcbmltcG9ydCB7IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uLy4uL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXInO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2UuY29tcG9uZW50JztcblxuZGVjbGFyZSB2YXIgTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvcjogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtc2NhbmRvYy13ZWJjYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vd2ViY2FtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2ViY2FtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJjYW1Db21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIHByaXZhdGUgdHJpZ2dlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgY2FudmFzU2l6ZTogYW55ID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG4gIHNob3dWaWRlbyA9IGZhbHNlO1xuICBzZXR1cEF0dGVtcHQgPSAwO1xuICBjYW52YXNEYXRhOiBhbnkgPSB7XG4gICAgY3R4OiBudWxsLFxuICAgIGN0eE86IG51bGwsXG4gIH07XG5cbiAgbWVkaWFTdHJlYW0hOiBNZWRpYVN0cmVhbTtcbiAgQElucHV0KCkgaW1hZ2VIYW5kbGVyITogU3ViamVjdDxhbnk+O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlPzogJ2RvY3VtZW50JyB8ICdzZWxmaWUnIHwgJ21hbnVhbCc7XG5cbiAgQElucHV0KCkgdHJpZ2dlciE6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgLy8gcHVibGljIHNldCB0cmlnZ2VyKHRyaWdnZXI6IE9ic2VydmFibGU8bnVtYmVyPikge1xuICAvLyAgIGlmICh0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24pIHtcbiAgLy8gICAgIHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAvLyAgIH1cblxuICAvLyAgIC8vIFN1YnNjcmliZSB0byBldmVudHMgZnJvbSB0aGlzIE9ic2VydmFibGUgdG8gdGFrZSBzbmFwc2hvdHNcbiAgLy8gICB0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24gPSB0cmlnZ2VyLnN1YnNjcmliZSgodGltZSkgPT4ge1xuICAvLyAgICAgdGhpcy50YWtlU25hcHNob3QodGltZSk7XG4gIC8vICAgfSk7XG4gIC8vIH1cbiAgcmVzaXplVGltZW91dDogYW55O1xuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoKSB7XG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci5yZWN0UG9zaXRpb24udCA9IDA7XG4gICAgLy8gdGhpcy52aWRlb1JlYWR5Lm5leHQoZmFsc2UpO1xuICAgIGlmICh0aGlzLnJlc2l6ZVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlc2l6ZVRpbWVvdXQpO1xuICAgIH1cbiAgICB0aGlzLnJlc2l6ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZHJhd1JlY3RhbmdsZSgpO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgY2h1bmtzOiBhbnkgPSBbXTtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjYW52YXM6IGFueTtcblxuICBAVmlld0NoaWxkKCd2aWRlbycsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdmlkZW9SZWY6IGFueTtcblxuICBAT3V0cHV0KCkgcHVibGljIGNhbWVyYVN3aXRjaGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdmlkZW9SZWFkeTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1hZ2VDYXB0dXJlOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW1hZ2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFdlYmNhbUltYWdlPigpO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgaW5pdEVycm9yOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW5pdEVycm9yPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxXZWJjYW1Jbml0RXJyb3I+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuXG4gICAgcHJpdmF0ZSBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUud2FybignW3ZpZGVvXSBzdGFydCcpO1xuICAgIC8vIGluaXRpYWwgbG9hZFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIuZ2V0RGV2aWNlcygpKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0pO1xuXG4gICAgLy8gY2FtZXJhIHN3aXRjaFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIud2ViY2FtT2JzZXJ2YWJsZSkuc3Vic2NyaWJlKChkZXZpY2UpID0+IHtcbiAgICAgIGNvbnN0IHZpZGVvVHJhY2tDb25zdHJhaW50czogYW55ID0gdGhpcy5zZXRDb25zdHJhaW50cygpO1xuICAgICAgdGhpcy5zdG9wQWxsVHJhY2tzKCk7XG4gICAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB2aWRlb1RyYWNrQ29uc3RyYWludHMuZGV2aWNlSWQgPSBkZXZpY2U7XG4gICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLnRyaWdnZXIpLnN1YnNjcmliZSgodGltZSkgPT4gdGhpcy50YWtlU25hcHNob3QodGltZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCB2aWRlbygpIHtcbiAgICByZXR1cm4gdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50O1xuICB9XG4gIGdldCBpc01vYmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5BTkRST0lEIHx8IHRoaXMucGxhdGZvcm0uSU9TO1xuICB9XG4gIHByaXZhdGUgc2V0Q29uc3RyYWludHMoKSB7XG4gICAgY29uc3Qgb3V0OiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0ge307XG4gICAgY29uc29sZS53YXJuKCdNT0JJTEUnLCB0aGlzLmlzTW9iaWxlKTtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICBvdXQudmlkZW8gPSB7IGhlaWdodDogeyBpZGVhbDogMTYwMCB9LCB3aWR0aDogeyBpZGVhbDogMTYwMCB9IH07XG4gICAgICAgICAgb3V0LnZpZGVvLmZhY2luZ01vZGUgPSAnZW52aXJvbm1lbnQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dC52aWRlbyA9IHtcbiAgICAgICAgICAgIHdpZHRoOiB7XG4gICAgICAgICAgICAgIG1pbjogMTI4MCxcbiAgICAgICAgICAgICAgaWRlYWw6IDE5MjAsXG4gICAgICAgICAgICAgIG1heDogMjkwMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoZWlnaHQ6IHtcbiAgICAgICAgICAgICAgbWluOiA3MjAsXG4gICAgICAgICAgICAgIGlkZWFsOiAxMDgwLFxuICAgICAgICAgICAgICBtYXg6IDI5MDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2VsZmllJzpcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICBvdXQudmlkZW8gPSB7IGhlaWdodDogeyBpZGVhbDogMTYwMCB9LCB3aWR0aDogeyBpZGVhbDogMTYwMCB9IH07XG4gICAgICAgICAgb3V0LnZpZGVvLmZhY2luZ01vZGUgPSAndXNlcic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0LnZpZGVvID0ge1xuICAgICAgICAgICAgZnJhbWVSYXRlOiB7IG1pbjogMTAgfSxcbiAgICAgICAgICAgIGhlaWdodDogeyBpZGVhbDogMTA4MCB9LFxuICAgICAgICAgICAgd2lkdGg6IHsgaWRlYWw6IDE5MjAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGFjdGl2ZVRyYWNrU2V0dGluZ3MoKSB7XG4gICAgcmV0dXJuIHRoaXMubWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRTZXR0aW5ncygpO1xuICB9XG4gIHByaXZhdGUgZ2V0IGFjdGl2ZVRyYWNrQ2FwYWJpbGl0aWVzKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5tZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmdldENhcGFiaWxpdGllcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXQoKSB7XG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci5nZXREZXZpY2VzKCkpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgY29uc29sZS53YXJuKCdERVZJQ0VTJywgcmVzcCk7XG4gICAgICBjb25zdCB2aWRlb1RyYWNrQ29uc3RyYWludHMgPSB0aGlzLnNldENvbnN0cmFpbnRzKCk7XG4gICAgICB0aGlzLnNldHVwQXR0ZW1wdCA9IDA7XG4gICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERldmljZUlkKHN0cmVhbTogTWVkaWFTdHJlYW0pIHtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gc3RyZWFtO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuZGV2aWNlSWQgPSB0aGlzLmFjdGl2ZVRyYWNrU2V0dGluZ3MuZGV2aWNlSWQ7XG4gICAgdGhpcy5zdGFydFZpZGVvKCk7XG4gIH1cbiAgcHJpdmF0ZSBzZXR1cCh2aWRlb1RyYWNrQ29uc3RyYWludHM6IGFueSkge1xuICAgIGNvbnNvbGUud2FybigndmlkZW9UcmFja0NvbnN0cmFpbnRzJywgdmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgICBjb25zb2xlLnRpbWUoJ2RldmljZScpO1xuICAgIHRoaXMuX19zdWJzKFxuICAgICAgZnJvbShcbiAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoPE1lZGlhU3RyZWFtQ29uc3RyYWludHM+e1xuICAgICAgICAgIHZpZGVvOiB2aWRlb1RyYWNrQ29uc3RyYWludHMsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICAoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2RldmljZScpO1xuICAgICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICAgIC8vY29uc29sZS53YXJuKHQuZ2V0Q29uc3RyYWludHMoKSk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmICghdC5nZXRDYXBhYmlsaXRpZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERldmljZUlkKHN0cmVhbSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0LmdldFNldHRpbmdzKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcCA9IHQuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbiA9IHQuZ2V0Q29uc3RyYWludHMoKTtcblxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oY2FwLCBjb24pO1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oc2V0dGluZ3MpO1xuICAgICAgICAgICAgICBjb25zdCBtYXggPSBjYXAud2lkdGg/Lm1heDtcbiAgICAgICAgICAgICAgY29uc3QgbWluID0gY2FwLndpZHRoPy5taW47XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aCA9IHNldHRpbmdzLndpZHRoO1xuICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgIGNvbnN0IGNvbldpZHRoID0gY29uLndpZHRoO1xuICAgICAgICAgICAgICBjb25zdCBjb25IZWlnaHQgPSBjb24ud2lkdGg7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnQ0FQUycsXG4gICAgICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgICAgIG1heCxcbiAgICAgICAgICAgICAgICAnQ1VSRU5UJyxcbiAgICAgICAgICAgICAgICBjdXJyZW50V2lkdGgsXG4gICAgICAgICAgICAgICAgY3VycmVudEhlaWdodFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXggJiZcbiAgICAgICAgICAgICAgICBjdXJyZW50V2lkdGggJiZcbiAgICAgICAgICAgICAgICBtYXggPiBjdXJyZW50V2lkdGggJiZcbiAgICAgICAgICAgICAgICBjb25XaWR0aCAhPSBtYXhcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tTRVQgTkVXIFJFU09MVVRJT05dJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cEF0dGVtcHQrKztcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXR1cEF0dGVtcHQgPCA0KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGV2aWNlSWQoc3RyZWFtKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdNT0JJTEUgVklERU8gU1RBUlQnKTtcbiAgICAgICAgICAgIHRoaXMuc2V0RGV2aWNlSWQoc3RyZWFtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIChlcikgPT4ge1xuICAgICAgICB0aGlzLnNldHVwQXR0ZW1wdCsrO1xuICAgICAgICBjb25zb2xlLndhcm4oJ0VSUk9SJywgZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLnNldHVwQXR0ZW1wdCA8IDQpIHtcbiAgICAgICAgICBpZiAoZXIgaW5zdGFuY2VvZiBPdmVyY29uc3RyYWluZWRFcnJvcikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRoaXMuc2V0dXAoe1xuICAgICAgICAgICAgLy8gICBoZWlnaHQ6IDcyMCxcbiAgICAgICAgICAgIC8vICAgd2lkdGg6IDEyODAsXG4gICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAgIC8vfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRWaWRlbygpIHtcbiAgICBjb25zb2xlLmxvZygnU1RBUlQgVklERU8nKTtcbiAgICB0aGlzLnZpZGVvLnNyY09iamVjdCA9IHRoaXMubWVkaWFTdHJlYW07XG5cbiAgICB0aGlzLnZpZGVvLm9ubG9hZGVkbWV0YWRhdGEgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgIHRoaXMudmlkZW8ucGxheSgpO1xuICAgICAgdGhpcy5zaG93VmlkZW8gPSB0cnVlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBjb25zb2xlLmxvZygnVklERU8gUExBWScpO1xuICAgIH07XG4gICAgdGhpcy52aWRlby5vbnBsYXkgPSAoKSA9PiB7XG4gICAgICB0aGlzLnZpZGVvUmVhZHkubmV4dCh0cnVlKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudmlkZW8udmlkZW9XaWR0aCwgdGhpcy52aWRlby52aWRlb0hlaWdodCk7XG4gICAgICB0aGlzLmRyYXdSZWN0YW5nbGUoKTtcbiAgICB9O1xuICB9XG4gIHNldENhbnZhcygpIHtcbiAgICBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB7IHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuXG4gICAgY29uc3QgY2FudmFzU21hbFNpemUgPSAzODQ7XG4gICAgY29uc3Qgc21hbGxTaXplID0ge1xuICAgICAgdzogMCxcbiAgICAgIGg6IDAsXG4gICAgfTtcblxuICAgIGlmICh2aWRlb1dpZHRoID49IHZpZGVvSGVpZ2h0KSB7XG4gICAgICBzbWFsbFNpemUudyA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZSAvIGFzcGVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIHNtYWxsU2l6ZS5oID0gY2FudmFzU21hbFNpemUgKiBhc3BlY3Q7XG4gICAgfVxuXG4gICAgLy9jb25zb2xlLmxvZygnU1onLCBzbWFsbFNpemUpO1xuXG4gICAgX2NhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG4gICAgX2NhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyBhbHBoYTogZmFsc2UsXG4gICAgICAvLyBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIC8vIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyBkZXB0aDogZmFsc2UsXG4gICAgICAvLyBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICAgIC8vIHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBuZWVkcyBhbiBpbml0aWFsIHNpemVcbiAgICBjYW52YXMuaGVpZ2h0ID0gc21hbGxTaXplLmg7XG4gICAgY2FudmFzLndpZHRoID0gc21hbGxTaXplLnc7XG5cbiAgICBjb25zdCBjdHhPOiBhbnkgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyBhbHBoYTogZmFsc2UsXG4gICAgICAvLyBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIC8vIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyBkZXB0aDogZmFsc2UsXG4gICAgICAvLyBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICAgIC8vIHdpbGxSZWFkRnJlcXVlbnRseTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FudmFzRGF0YS5jdHggPSBjdHg7XG4gICAgdGhpcy5jYW52YXNEYXRhLmN0eE8gPSBjdHhPO1xuICAgIHRoaXMuY2FudmFzRGF0YS5jYW52YXMgPSBjYW52YXM7XG4gICAgdGhpcy5jYW52YXNEYXRhLl9jYW52YXMgPSBfY2FudmFzO1xuICAgIHRoaXMuY2FudmFzRGF0YS5zaXplID0gc21hbGxTaXplO1xuXG4gICAgLy8gY29uc3Qgc3RyZWFtID0gdGhpcy52aWRlby5jYXB0dXJlU3RyZWFtKDUpO1xuXG4gICAgLy8gY29uc3QgbWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSk7XG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLnN0YXJ0KCk7XG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChlOmFueSkgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2coZSlcbiAgICAvLyAgIHRoaXMuY2h1bmtzLnB1c2goZS5kYXRhKTtcblxuICAgIC8vICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGUuZGF0YSk7XG4gICAgLy8gICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIC8vICAgYW5jaG9yLmRvd25sb2FkID0gJ215ZmlsZS53ZWJtJztcbiAgICAvLyAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIC8vICAgYW5jaG9yLmNsaWNrKCk7XG4gICAgLy8gfTtcbiAgfVxuXG4gIHByaXZhdGUgdGFrZVNlbGZpZSgpIHtcbiAgICBjb25zdCBtaW1lVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnO1xuICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgb2Zmc2V0V2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgbGV0IF9jYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vdGhpcy5jYW52YXNTbmFwc2hvdC5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgeyB3LCBoIH0gPSB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbjtcblxuICAgIGNvbnN0IGFzcGVjdCA9IHZpZGVvV2lkdGggLyBvZmZzZXRXaWR0aDtcblxuICAgIC8vIGNvbnNvbGUubG9nKHZpZGVvV2lkdGgsIG9mZnNldFdpZHRoLCBsLCB0LCB3LCBoKTtcblxuICAgIF9jYW52YXMud2lkdGggPSB3ICogYXNwZWN0O1xuICAgIF9jYW52YXMuaGVpZ2h0ID0gaCAqIGFzcGVjdDtcblxuICAgIGNvbnN0IGR4ID0gdmlkZW9XaWR0aCAtIHcgKiBhc3BlY3Q7XG4gICAgY29uc3QgZHkgPSB2aWRlb0hlaWdodCAtIGggKiBhc3BlY3Q7XG4gICAgY29uc3QgeCA9IGR4IC8gMjtcbiAgICBjb25zdCB5ID0gZHkgLyAyO1xuXG4gICAgY29uc3QgY3R4OiBhbnkgPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgYWxwaGE6IGZhbHNlLFxuICAgICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICBhbnRpYWxpYXM6IGZhbHNlLFxuICAgICAgZGVwdGg6IGZhbHNlLFxuICAgICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICB0aGlzLnZpZGVvLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0LFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0XG4gICAgICApO1xuXG4gICAgICBjb25zdCBpbWdBc1VybDogYW55ID0gX2NhbnZhcy50b0RhdGFVUkwobWltZVR5cGUsIDEpO1xuXG4gICAgICB0aGlzLmltYWdlQ2FwdHVyZS5lbWl0KFxuICAgICAgICBuZXcgV2ViY2FtSW1hZ2UoaW1nQXNVcmwsIG1pbWVUeXBlLCBuZXcgSW1hZ2VEYXRhKDEsIDEpLCBudWxsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBodW1hbkZpbGVTaXplKGJ5dGVzOiBudW1iZXIsIHNpID0gZmFsc2UsIGRwID0gMSkge1xuICAgIGNvbnN0IHRocmVzaCA9IHNpID8gMTAwMCA6IDEwMjQ7XG5cbiAgICBpZiAoTWF0aC5hYnMoYnl0ZXMpIDwgdGhyZXNoKSB7XG4gICAgICByZXR1cm4gYnl0ZXMgKyAnIEInO1xuICAgIH1cblxuICAgIGNvbnN0IHVuaXRzID0gc2lcbiAgICAgID8gWydrQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddXG4gICAgICA6IFsnS2lCJywgJ01pQicsICdHaUInLCAnVGlCJywgJ1BpQicsICdFaUInLCAnWmlCJywgJ1lpQiddO1xuICAgIGxldCB1ID0gLTE7XG4gICAgY29uc3QgciA9IDEwICoqIGRwO1xuXG4gICAgZG8ge1xuICAgICAgYnl0ZXMgLz0gdGhyZXNoO1xuICAgICAgKyt1O1xuICAgIH0gd2hpbGUgKFxuICAgICAgTWF0aC5yb3VuZChNYXRoLmFicyhieXRlcykgKiByKSAvIHIgPj0gdGhyZXNoICYmXG4gICAgICB1IDwgdW5pdHMubGVuZ3RoIC0gMVxuICAgICk7XG5cbiAgICByZXR1cm4gYnl0ZXMudG9GaXhlZChkcCkgKyAnICcgKyB1bml0c1t1XTtcbiAgfVxuXG4gIHRha2VTbmFwc2hvdCh0aW1lOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSAnZG9jdW1lbnQnKSB7XG4gICAgICB0aGlzLnRha2VTZWxmaWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gY29uc29sZS53YXJuKCdTTkFQJywgdGltZSk7XG4gICAgaWYgKCF0aGlzLnNob3dWaWRlbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgY2FudmFzU21hbFNpemUgPSAzODQ7XG5cbiAgICAgIGNvbnN0IG1pbWVUeXBlOiBzdHJpbmcgPSAnaW1hZ2UvanBlZyc7XG5cbiAgICAgIC8vIGxldCBfY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvL3RoaXMuY2FudmFzU25hcHNob3QubmF0aXZlRWxlbWVudDtcblxuICAgICAgY29uc3QgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgICAgLy8gX2NhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG4gICAgICAvLyBfY2FudmFzLmhlaWdodCA9IHZpZGVvSGVpZ2h0O1xuICAgICAgLy8gY29uc29sZS5sb2codmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuXG4gICAgICAvLyBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyAgIGFscGhhOiBmYWxzZSxcbiAgICAgIC8vICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICAvLyAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIC8vICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgICAvLyB9KTtcblxuICAgICAgLy8gY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIG5lZWRzIGFuIGluaXRpYWwgc2l6ZVxuICAgICAgLy8gY2FudmFzLmhlaWdodCA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgLy8gY2FudmFzLndpZHRoID0gY2FudmFzU21hbFNpemU7XG5cbiAgICAgIC8vIGNvbnN0IGN0eE86IGFueSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIC8vICAgYWxwaGE6IGZhbHNlLFxuICAgICAgLy8gICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIC8vICAgYW50aWFsaWFzOiBmYWxzZSxcbiAgICAgIC8vICAgZGVwdGg6IGZhbHNlLFxuICAgICAgLy8gICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICAgIC8vIH0pO1xuXG4gICAgICBjb25zdCB7IGN0eCwgY3R4TywgY2FudmFzLCBfY2FudmFzLCBzaXplIH0gPSB0aGlzLmNhbnZhc0RhdGE7XG5cbiAgICAgIGlmIChjdHggJiYgY3R4Tykge1xuICAgICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGRyYXdTdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuICAgICAgICBjdHhPLmNsZWFyUmVjdCgwLCAwLCBzaXplLncsIHNpemUuaCk7XG5cbiAgICAgICAgY3R4LmRyYXdJbWFnZSh0aGlzLnZpZGVvLCAwLCAwKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWUoJ2RyYXdWaWRlbycpO1xuICAgICAgICBjdHhPLmRyYXdJbWFnZShfY2FudmFzLCAwLCAwLCBzaXplLncsIHNpemUuaCk7XG4gICAgICAgIC8vY29uc29sZS50aW1lRW5kKCdkcmF3VmlkZW8nKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWUoJ0RSQVcnKTtcblxuICAgICAgICAvLyAgY29uc3QgaW1EYXRhOiBhbnkgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgICBjb25zb2xlLmxvZyhjYW52YXMud2lkdGgsIF9jYW52YXMud2lkdGgpO1xuICAgICAgICAvL2NvbnNvbGUudGltZUVuZCgnRFJBVycpO1xuXG4gICAgICAgIC8vY29uc29sZS50aW1lKCdDVFgnKTtcblxuICAgICAgICBjb25zdCByZXNpemUgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG5cbiAgICAgICAgY29uc3QgY2FudmFzRGF0YSA9IF9jYW52YXMudG9EYXRhVVJMKG1pbWVUeXBlLCAxKTtcblxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmh1bWFuRmlsZVNpemUoY2FudmFzRGF0YS5sZW5ndGgpKTtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5odW1hbkZpbGVTaXplKHJlc2l6ZS5sZW5ndGgpKTtcbiAgICAgICAgY29uc29sZS5sb2cobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWVFbmQoJ0NUWCcpO1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkaWZmID0gY3VycmVudFRpbWUgLSB0aW1lO1xuXG4gICAgICAgIC8vIHRvdGFsIHRpbWUgZm9yIHBhY2sgb25lIGltYWdlXG4gICAgICAgIGNvbnN0IGRyYXdUaW1lID0gRGF0ZS5ub3coKSAtIGRyYXdTdGFydDtcblxuICAgICAgICAvL2NvbnNvbGUud2FybignRFJBVyBUSU1FJywgZHJhd1RpbWUpO1xuICAgICAgICBjb25zdCBkZWxheU1heCA9IGRyYXdUaW1lIDwgNjAgPyAxMDAgOiAyMDA7XG5cbiAgICAgICAgY29uc3QgZGVsYXkgPSBkaWZmID4gZGVsYXlNYXggPyAwIDogZGVsYXlNYXggLSBkaWZmO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmltYWdlQ2FwdHVyZS5lbWl0KFxuICAgICAgICAgICAgbmV3IFdlYmNhbUltYWdlKGNhbnZhc0RhdGEsIG1pbWVUeXBlLCAnJywgcmVzaXplKVxuICAgICAgICAgICk7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB9LCBkZWxheSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BBbGxUcmFja3MoKSB7XG4gICAgdGhpcy5zaG93VmlkZW8gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5tZWRpYVN0cmVhbSAmJiB0aGlzLm1lZGlhU3RyZWFtLmdldFRyYWNrcykge1xuICAgICAgLy8gZ2V0VHJhY2tzKCkgcmV0dXJucyBhbGwgbWVkaWEgdHJhY2tzICh2aWRlbythdWRpbylcblxuICAgICAgdGhpcy5tZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjazogTWVkaWFTdHJlYW1UcmFjaykgPT4ge1xuICAgICAgLy8gIGNvbnNvbGUubG9nKHRyYWNrKTtcbiAgICAgICAgdHJhY2suZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdHJhY2suc3RvcCgpO1xuXG4gICAgICAgIHRoaXMudmlkZW8uc3JjT2JqZWN0LnJlbW92ZVRyYWNrKHRyYWNrKTtcbiAgICAgICAgdGhpcy5tZWRpYVN0cmVhbS5yZW1vdmVUcmFjayh0cmFjayk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgLy8gdGhpcy52aWRlby5zcmMgPSBudWxsO1xuXG4gICAgICAgdGhpcy52aWRlby5sb2FkKCk7XG4gICAgfVxuICAgIC8vIHRoaXMuX19zdWJzKHRoaXMuc3RvcFZpZGVvVHJhY2tzKCkpLnN1YnNjcmliZSgpXG4gIH1cblxuICBwcml2YXRlIGRyYXdSZWN0YW5nbGUoKSB7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBfY2FudmFzID0gdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudDtcbiAgICAgIGxldCBwYWRkaW5nID0gMTA7XG4gICAgICBpZiAoIXRoaXMuaXNNb2JpbGUgJiYgX2NhbnZhcy53aWR0aCAhPT0gX2NhbnZhcy5oZWlnaHQpIHtcbiAgICAgICAgcGFkZGluZyA9IDQwO1xuICAgICAgfVxuICAgICAgY29uc3QgY3R4ID0gX2NhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIF9jYW52YXMud2lkdGgsIF9jYW52YXMuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBfY2FudmFzO1xuXG4gICAgICBjb25zb2xlLmxvZygnQ0FOVkFTJywgd2lkdGgsIGhlaWdodCk7XG5cbiAgICAgIGxldCB7IHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgICAvLyB2aWRlbyB3aWxsIGJlIHNjYWxlZCB0byBtYXggY2FudmFzIGhlaWdodFxuICAgICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuXG4gICAgICAvLyBpZiAodmlkZW9IZWlnaHQgPCBoZWlnaHQpIHtcbiAgICAgIC8vICAgdmlkZW9IZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAvLyAgIHZpZGVvV2lkdGggPSBoZWlnaHQqYXNwZWN0O1xuICAgICAgLy8gfVxuXG4gICAgICBjb25zb2xlLmxvZygnVklERU8nLCB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCk7XG5cbiAgICAgIGNvbnN0IGRvY1NpemUgPSB0aGlzLnR5cGUgPT09ICdzZWxmaWUnID8gMSA6IDg2IC8gNTU7XG5cbiAgICAgIGxldCBfaGVpZ2h0O1xuICAgICAgbGV0IF93aWR0aDtcblxuICAgICAgaWYgKHZpZGVvV2lkdGggPj0gdmlkZW9IZWlnaHQpIHtcbiAgICAgICAgX3dpZHRoID0gd2lkdGg7XG5cbiAgICAgICAgX2hlaWdodCA9IF93aWR0aCAvIGFzcGVjdDtcblxuICAgICAgICBpZiAoX2hlaWdodCA+IGhlaWdodCkge1xuICAgICAgICAgIF9oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgX3dpZHRoID0gYXNwZWN0ICogX2hlaWdodDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX2hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgX3dpZHRoID0gYXNwZWN0ICogX2hlaWdodDtcbiAgICAgICAgaWYgKF93aWR0aCA+IHdpZHRoKSB7XG4gICAgICAgICAgX3dpZHRoID0gd2lkdGg7XG4gICAgICAgICAgX2hlaWdodCA9IF93aWR0aCAvIGFzcGVjdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZygnQ0FMQycsIF93aWR0aCwgX2hlaWdodCk7XG4gICAgICBsZXQgdywgaDtcblxuICAgICAgaWYgKF93aWR0aCA8PSBfaGVpZ2h0KSB7XG4gICAgICAgIHcgPSBfd2lkdGggLSAyICogcGFkZGluZztcbiAgICAgICAgaCA9IHcgLyBkb2NTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaCA9IF9oZWlnaHQgLSAyICogcGFkZGluZztcbiAgICAgICAgdyA9IGRvY1NpemUgKiBoO1xuICAgICAgfVxuICAgICAgaWYgKHcgPiBfd2lkdGgpIHtcbiAgICAgICAgdyA9IF93aWR0aCAtIDIgKiBwYWRkaW5nO1xuICAgICAgICBoID0gdyAvIGRvY1NpemU7XG4gICAgICB9XG5cbiAgICAgIGggPSBNYXRoLmZsb29yKGgpO1xuICAgICAgdyA9IE1hdGguZmxvb3Iodyk7XG4gICAgICBjb25zb2xlLmxvZyh3LCBoKTtcblxuICAgICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoKHdpZHRoIC0gdykgLyAyKTtcbiAgICAgIGNvbnN0IHRvcCA9IE1hdGguZmxvb3IoKGhlaWdodCAtIGgpIC8gMik7XG5cbiAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICd3aGl0ZSc7XG5cbiAgICAgIC8vIGN0eC5zdHJva2VSZWN0KGxlZnQsIHRvcCwgX3dpZHRoLCBfaGVpZ2h0KTtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpJztcbiAgICAgIC8vIGN0eC5zaGFkb3dDb2xvciA9ICd3aGl0ZSc7XG4gICAgICBjdHguc2hhZG93Qmx1ciA9IDE1O1xuICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuXG4gICAgICAvLyBEcmF3IHVzaW5nIDVweCBmb3IgYm9yZGVyIHJhZGl1cyBvbiBhbGwgc2lkZXNcbiAgICAgIC8vIHN0cm9rZSBpdCBidXQgbm8gZmlsbFxuICAgICAgY29uc3QgcmFkaXVzID0gdGhpcy5pc01vYmlsZSA/IDEwIDogMzA7XG5cbiAgICAgIGN0eC5yb3VuZFJlY3QobGVmdCwgdG9wLCB3LCBoLCByYWRpdXMpO1xuICAgICAgY3R4LnN0cm9rZSgpO1xuICAgICAgY3R4LmZpbGwoKTtcblxuICAgICAgdGhpcy5jYW1lcmFQcm92aWRlci5yZWN0UG9zaXRpb24gPSB7XG4gICAgICAgIGw6IGxlZnQsXG4gICAgICAgIHQ6IHRvcCxcbiAgICAgICAgdyxcbiAgICAgICAgaCxcbiAgICAgICAgX3c6IF93aWR0aCxcbiAgICAgICAgX2g6IF9oZWlnaHQsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldENhbnZhcygpO1xuICAgICAgLy8gY3R4LnN0cm9rZSgpO1xuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmlkZW8ucGF1c2UoKTtcblxuICAgIC8vIHRoaXMudmlkZW8uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodHJhY2s6IGFueSkgPT4ge1xuICAgIC8vICAgdHJhY2suc3RvcCgpO1xuICAgIC8vICAgdGhpcy52aWRlby5zcmNPYmplY3QucmVtb3ZlVHJhY2sodHJhY2spO1xuICAgIC8vIH0pO1xuXG4gICAgdGhpcy5zdG9wQWxsVHJhY2tzKCk7XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5fX2Rlc3Ryb3koKTtcblxuICAgIGNvbnNvbGUud2FybignW1ZJREVPXSBkZXN0cm95ZWQnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndlYmNhbS13cmFwcGVyXCI+XG4gIDx2aWRlbyAjdmlkZW8gYXV0b3BsYXkgbXV0ZWQgc3R5bGU9XCJkaXNwbGF5OiBibG9ja1wiIHBsYXlzaW5saW5lPjwvdmlkZW8+XG5cbiAgPGRpdiBjbGFzcz1cInJlY3RhbmdsZVwiPlxuICAgIDxjYW52YXNcbiAgICAgICNjYW52YXNcbiAgICAgIFtuZ1N0eWxlXT1cInsgdmlzaWJpbGl0eTogc2hvd1ZpZGVvID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfVwiXG4gICAgICBbd2lkdGhdPVwidmlkZW8ub2Zmc2V0V2lkdGhcIlxuICAgICAgW2hlaWdodF09XCJ2aWRlby5vZmZzZXRIZWlnaHRcIlxuICAgID48L2NhbnZhcz5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -2,8 +2,10 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { Subject, from, of } from 'rxjs';
|
|
3
3
|
import { map, switchMap } from 'rxjs/operators';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/platform";
|
|
5
6
|
export class NgxScandocCameraProvider {
|
|
6
|
-
constructor() {
|
|
7
|
+
constructor(platform) {
|
|
8
|
+
this.platform = platform;
|
|
7
9
|
this.selfie$ = new Subject();
|
|
8
10
|
this.rectPosition = {
|
|
9
11
|
l: 0,
|
|
@@ -35,9 +37,12 @@ export class NgxScandocCameraProvider {
|
|
|
35
37
|
}
|
|
36
38
|
preloadVideo() {
|
|
37
39
|
return from(navigator.mediaDevices.getUserMedia({ video: true })).pipe(map((mediaStream) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
console.warn(mediaStream);
|
|
41
|
+
if (!this.platform.FIREFOX) {
|
|
42
|
+
mediaStream.getTracks().forEach((track) => {
|
|
43
|
+
track.stop();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
41
46
|
}));
|
|
42
47
|
}
|
|
43
48
|
setup() {
|
|
@@ -71,12 +76,12 @@ export class NgxScandocCameraProvider {
|
|
|
71
76
|
return this.switchCamera.asObservable();
|
|
72
77
|
}
|
|
73
78
|
}
|
|
74
|
-
NgxScandocCameraProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
+
NgxScandocCameraProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
75
80
|
NgxScandocCameraProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, providedIn: 'root' });
|
|
76
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, decorators: [{
|
|
77
82
|
type: Injectable,
|
|
78
83
|
args: [{
|
|
79
84
|
providedIn: 'root',
|
|
80
85
|
}]
|
|
81
|
-
}], ctorParameters: function () { return []; } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
}], ctorParameters: function () { return [{ type: i1.Platform }]; } });
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQW1CLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU14RCxNQUFNLE9BQU8sd0JBQXdCO0lBNEJuQyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBdkJ0QyxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUV4QixpQkFBWSxHQUFHO1lBQ2IsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLENBQUMsRUFBRSxDQUFDO1lBQ0osQ0FBQyxFQUFFLENBQUM7WUFDSixFQUFFLEVBQUUsQ0FBQztZQUNMLEVBQUUsRUFBRSxDQUFDO1NBQ04sQ0FBQztRQUNGLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWxDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUU1QixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFL0IsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEIsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLE9BQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFakIsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEVBQUUs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LENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7O3FIQXRHVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB3ZWJTb2NrZXQgfSBmcm9tICdyeGpzL3dlYlNvY2tldCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgV2ViY2FtVXRpbCB9IGZyb20gJy4uL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vdXRpbC93ZWJjYW0udXRpbCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIHtcbiAgbWVkaWFEZXZpY2VzOiBhbnk7XG5cbiAgZGV2aWNlSWQ6IGFueTtcblxuICBzZWxmaWUkID0gbmV3IFN1YmplY3QoKTtcblxuICByZWN0UG9zaXRpb24gPSB7XG4gICAgbDogMCxcbiAgICB0OiAwLFxuICAgIGg6IDAsXG4gICAgdzogMCxcbiAgICBfdzogMCxcbiAgICBfaDogMCxcbiAgfTtcbiAgc3dpdGNoQ2FtZXJhID0gbmV3IFN1YmplY3QoKTtcbiAgJHNob3dTd2l0Y2hTZWxmaWUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNhbWVyYVJlYWR5ID0gZmFsc2U7XG5cbiAgJHNob3dTd2l0Y2ggPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNhbWVyYVN3aXRjaGVkID0gbmV3IFN1YmplY3QoKTtcblxuICBkZXZpY2VzID0gbmV3IFN1YmplY3QoKTtcblxuICBtdWx0aXBsZVdlYmNhbXNBdmFpbGFibGUgPSBmYWxzZTtcbiAgaWQgPSBNYXRoLnJhbmRvbSgpO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSkge1xuICAgIGNvbnNvbGUud2FybignUFJPVklERVIgSU5JVCcsIHRoaXMuaWQpO1xuICAgIHRoaXMuc2V0dXAoKTtcbiAgfVxuXG4gIGdldCBoaW50UG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucmVjdFBvc2l0aW9uLnQgKyB0aGlzLnJlY3RQb3NpdGlvbi5oICsgNTtcbiAgfVxuXG4gIGdldERldmljZXMoKSB7XG4gICAgaWYgKHRoaXMubWVkaWFEZXZpY2VzKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5tZWRpYURldmljZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRldmljZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIHByZWxvYWRWaWRlbygpIHtcbiAgICByZXR1cm4gZnJvbShuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVlIH0pKS5waXBlKFxuICAgICAgbWFwKChtZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4obWVkaWFTdHJlYW0pO1xuICAgICAgICBpZiAoIXRoaXMucGxhdGZvcm0uRklSRUZPWCkge1xuICAgICAgICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrKSA9PiB7XG4gICAgICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICBzZXR1cCgpIHtcbiAgICBjb25zb2xlLndhcm4oJ1NFVFVQJyk7XG4gICAgdGhpcy4kc2hvd1N3aXRjaC5zdWJzY3JpYmUoKHMpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHMpO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUudGltZSgnZGV2aWNlJyk7XG5cbiAgICBjb25zdCBkZXZpY2VzJCA9IHRoaXMucHJlbG9hZFZpZGVvKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICBmcm9tKG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpKS5waXBlKFxuICAgICAgICAgIG1hcCgoaW5wdXREZXZpY2VzOiBNZWRpYURldmljZUluZm9bXSkgPT5cbiAgICAgICAgICAgIGlucHV0RGV2aWNlcy5maWx0ZXIoKG0pID0+IG0ua2luZCA9PSAndmlkZW9pbnB1dCcpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICAgIGRldmljZXMkLnN1YnNjcmliZSgobWVkaWFEZXZpY2VzOiBNZWRpYURldmljZUluZm9bXSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICdbREVWSUNFU10nLFxuICAgICAgICBtZWRpYURldmljZXMsXG4gICAgICAgIG1lZGlhRGV2aWNlcy5tYXAoKGQpID0+IGQubGFiZWwpXG4gICAgICApO1xuICAgICAgdGhpcy5tZWRpYURldmljZXMgPSBtZWRpYURldmljZXM7XG4gICAgICB0aGlzLm11bHRpcGxlV2ViY2Ftc0F2YWlsYWJsZSA9IG1lZGlhRGV2aWNlcyAmJiBtZWRpYURldmljZXMubGVuZ3RoID4gMTtcbiAgICAgIHRoaXMuZGV2aWNlcy5uZXh0KG1lZGlhRGV2aWNlcyk7XG4gICAgfSk7XG4gIH1cbiAgc2V0RGVmYXVsdCgpIHtcbiAgICBpZiAodGhpcy5kZXZpY2VJZCkge1xuICAgICAgdGhpcy5zd2l0Y2hDYW1lcmEubmV4dCh0aGlzLmRldmljZUlkKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDYW1lcmEoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc3dpdGNoQ2FtZXJhLm5leHQoZXZlbnQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNhbWVyYVdhc1N3aXRjaGVkKGRldmljZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW2FjdGl2ZSBkZXZpY2VdJywgZGV2aWNlSWQpO1xuICAgIHRoaXMuZGV2aWNlSWQgPSBkZXZpY2VJZDtcbiAgICB0aGlzLmNhbWVyYVJlYWR5ID0gdHJ1ZTtcbiAgfVxuICBnZXQgd2ViY2FtT2JzZXJ2YWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zd2l0Y2hDYW1lcmEuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable, InjectionToken, Optional, } from '@angular/core';
|
|
2
2
|
import { switchMap, catchError } from 'rxjs/operators';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@ngx-translate/core";
|
|
@@ -33,6 +33,12 @@ export class NgxScanDocTranslationProvider {
|
|
|
33
33
|
this.defaultLang = lang;
|
|
34
34
|
this.translate.setDefaultLang(this.defaultLang);
|
|
35
35
|
}
|
|
36
|
+
registerTranslationFolder(name = '', path = '') {
|
|
37
|
+
console.log(name, path, this.userLang, this.defaultLang);
|
|
38
|
+
if (!this.customLoader.providerRegistered(name)) {
|
|
39
|
+
this.customLoader.registerProvider(name, this.path(path));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
36
42
|
addTranslationFolder(name = '', path = '') {
|
|
37
43
|
console.log(name, path, this.userLang, this.defaultLang);
|
|
38
44
|
if (!this.customLoader.providerRegistered(name)) {
|
|
@@ -124,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
124
130
|
type: Inject,
|
|
125
131
|
args: [TRANSLATION_PROVIDER]
|
|
126
132
|
}] }, { type: i2.PlatformLocation }]; } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvcHJvdmlkZXJzL3RyYW5zbGF0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBWSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLdkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUd2RCxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUM3Qyw0Q0FBNEMsQ0FDN0MsQ0FBQztBQVNGLE1BQU0sT0FBTyw2QkFBNkI7SUFNeEMsWUFDUyxTQUEyQixFQUMxQixRQUFrQjtJQUMxQiw0REFBNEQ7SUFDbEIsU0FBZ0MsRUFDbEUsZ0JBQWtDO1FBSm5DLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFHbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUcxQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBd0MsQ0FBQztRQUM1RSw4QkFBOEI7UUFFOUIsOEJBQThCO1FBRzlCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDM0Q7U0FDRjtJQUNILENBQUM7SUFDTyxJQUFJLENBQUMsSUFBUztRQUNwQixPQUFPLElBQUksQ0FBQztRQUNaLHlDQUF5QztRQUN6QywwQkFBMEI7UUFDMUIsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFFZix3REFBd0Q7SUFDMUQsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUFXO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsT0FBZSxFQUFFLEVBQUUsT0FBZSxFQUFFO1FBQzlELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFMUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFFbkUsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsV0FBVyxFQUNoQixDQUFDLGdCQUFnQixDQUNsQixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDeEM7U0FDRjtJQUNILENBQUM7SUFFTSxlQUFlLENBQUMsSUFBWSxFQUFFLFFBQWlCLEVBQUUsT0FBTyxHQUFHLElBQUk7UUFDcEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUMzQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1AsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWhDLElBQUksT0FBTyxFQUFFO2dCQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNSO1lBQ0Qsa0NBQWtDO1FBQ3BDLENBQUMsRUFDRCxHQUFHLEVBQUU7WUFDSCxJQUFJLFFBQVEsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hDO1FBQ0gsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBWSxFQUFFLFFBQWlCO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM3QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxRQUFRLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtnQkFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDekM7WUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVk7UUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDdEMsSUFBSTtZQUNKLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQztTQUM3RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sR0FBRyxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELEtBQUssQ0FBQyxJQUFTLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDL0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUVELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWhELElBQ0UsSUFBSSxDQUFDLEtBQUs7WUFDVixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQ2xFO1lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2FBQ3ZCO1lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDckQsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUMxQixDQUFDO2FBQ0g7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQzNELE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FDaEMsQ0FBQzthQUNIO1lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7b0JBQ3BFLGtCQUFrQjtvQkFDbEIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO3dCQUNYLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDcEQ7b0JBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzswSEFuSlUsNkJBQTZCLDBFQVVsQixvQkFBb0I7OEhBVi9CLDZCQUE2QixjQUY1QixNQUFNOzJGQUVQLDZCQUE2QjtrQkFIekMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVdJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBJbmplY3RvciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxvYWRlclByb3ZpZGVyIH0gZnJvbSAnLi90cmFuc2xhdGUtbG9hZGVyLnByb3ZpZGVyJztcblxuaW1wb3J0IHsgc3dpdGNoTWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2NhbkNvbmZpZyB9IGZyb20gJy4uL2NvcmUvaW50ZXJmYWNlcy9jb25maWcnO1xuaW1wb3J0IHsgU0NBTl9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi9jb3JlL3Rva2Vucy9jb25maWcudG9rZW5zJztcbmNvbnN0IFRSQU5TTEFUSU9OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuKFxuICAnSW5qZWN0aW9uIHRva2VuIGZvciB0cmFuc2xhdGlvbiBwcm92aWRlcnMuJ1xuKTtcblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uUHJvdmlkZXIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5neFNjYW5Eb2NUcmFuc2xhdGlvblByb3ZpZGVyIHtcbiAgcHVibGljIGRlZmF1bHRMYW5nITogc3RyaW5nO1xuICBwdWJsaWMgdXNlckxhbmchOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VzdG9tTG9hZGVyITogVHJhbnNsYXRlTG9hZGVyUHJvdmlkZXI7XG5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIC8vQE9wdGlvbmFsKCkgQEluamVjdChTQ0FOX0NPTkZJR19UT0tFTikgY29uZmlnOiBTY2FuQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVFJBTlNMQVRJT05fUFJPVklERVIpIHByb3ZpZGVyczogVHJhbnNsYXRpb25Qcm92aWRlcltdLFxuICAgIHByaXZhdGUgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvblxuICApIHtcblxuICAgIGNvbnNvbGUubG9nKCdNTScsTWF0aC5yYW5kb20oKSlcbiAgICB0aGlzLmN1c3RvbUxvYWRlciA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMb2FkZXIgYXMgVHJhbnNsYXRlTG9hZGVyUHJvdmlkZXI7XG4gICAgLy9jb25zb2xlLmxvZygnY29uZmlnJyxjb25maWcpXG5cbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnRyYW5zbGF0ZSlcblxuXG4gICAgaWYgKHByb3ZpZGVycyAmJiBwcm92aWRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiBwcm92aWRlcnMpIHtcbiAgICAgICAgdGhpcy5hZGRUcmFuc2xhdGlvbkZvbGRlcihwcm92aWRlci5uYW1lLCBwcm92aWRlci5zb3VyY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIHBhdGgocGF0aDogYW55KSB7XG4gICAgcmV0dXJuIHBhdGg7XG4gICAgLy8gY29uc3QgYmFzZUhyZWYgPSB0aGlzLnBsYXRmb3JtTG9jYXRpb25cbiAgICAvLyAgIC5nZXRCYXNlSHJlZkZyb21ET00oKVxuICAgIC8vICAgLnNwbGl0KCcvJylcbiAgICAvLyAgIC5qb2luKCcnKTtcblxuICAgIC8vIHJldHVybiBiYXNlSHJlZiAhPSAnJyA/IGAvJHtiYXNlSHJlZn0ke3BhdGh9YCA6IHBhdGg7XG4gIH1cblxuICBwdWJsaWMgc2V0RGVmYXVsdExhbmcobGFuZzpzdHJpbmcpe1xuIHRoaXMuZGVmYXVsdExhbmcgPSBsYW5nO1xuICAgIHRoaXMudHJhbnNsYXRlLnNldERlZmF1bHRMYW5nKHRoaXMuZGVmYXVsdExhbmcpO1xuICB9XG5cbiAgcHVibGljIGFkZFRyYW5zbGF0aW9uRm9sZGVyKG5hbWU6IHN0cmluZyA9ICcnLCBwYXRoOiBzdHJpbmcgPSAnJykge1xuICAgIGNvbnNvbGUubG9nKG5hbWUsIHBhdGgsIHRoaXMudXNlckxhbmcsIHRoaXMuZGVmYXVsdExhbmcpO1xuXG4gICAgaWYgKCF0aGlzLmN1c3RvbUxvYWRlci5wcm92aWRlclJlZ2lzdGVyZWQobmFtZSkpIHtcbiAgICAgIHRoaXMuY3VzdG9tTG9hZGVyLnJlZ2lzdGVyUHJvdmlkZXIobmFtZSwgdGhpcy5wYXRoKHBhdGgpKTtcblxuICAgICAgaWYgKHRoaXMudXNlckxhbmcpIHtcbiAgICAgICAgY29uc3QgZXhpc3RDdXJyZW50TGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKFxuICAgICAgICAgIHRoaXMudXNlckxhbmcsXG4gICAgICAgICAgdGhpcy5kZWZhdWx0TGFuZyxcbiAgICAgICAgICAhZXhpc3RDdXJyZW50TGFuZ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24odGhpcy5kZWZhdWx0TGFuZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvYWRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nLCB1c2VMYW5nID0gdHJ1ZSkge1xuICAgIHRoaXMudHJhbnNsYXRlLmdldFRyYW5zbGF0aW9uKGxhbmcpLnN1YnNjcmliZShcbiAgICAgIChyZXNwKSA9PiB7XG4gICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkNoYW5nZWQobGFuZyk7XG5cbiAgICAgICAgaWYgKHVzZUxhbmcpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKTtcbiAgICAgICAgICB9LCAyMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy50cmFuc2xhdGUucmVsb2FkTGFuZyhsYW5nKVxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKGZhbGxiYWNrICYmIGZhbGxiYWNrICE9PSBsYW5nKSB7XG4gICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oZmFsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVHJhbnNsYXRpb24obGFuZzogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmdldFRyYW5zbGF0aW9uKGxhbmcpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgaWYgKGZhbGxiYWNrICYmIGZhbGxiYWNrICE9PSBsYW5nKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlVHJhbnNsYXRpb24oZmFsbGJhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblRyYW5zbGF0aW9uQ2hhbmdlZChsYW5nKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUudXNlKGxhbmcpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblRyYW5zbGF0aW9uQ2hhbmdlZChsYW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5vblRyYW5zbGF0aW9uQ2hhbmdlLm5leHQoe1xuICAgICAgbGFuZyxcbiAgICAgIHRyYW5zbGF0aW9uczogdGhpcy5jdXN0b21Mb2FkZXIuZ2V0RnVsbFRyYW5zbGF0aW9uSlNPTihsYW5nKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1c2UobGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLmN1c3RvbUxvYWRlci5pbml0KGxhbmcpO1xuXG4gICAgcmV0dXJuIHRoaXMudXBkYXRlVHJhbnNsYXRpb24obGFuZyk7XG4gIH1cbiAgZm9ybXMoaXRlbTogYW55LCBuYW1lc3BhY2UgPSBudWxsKSB7XG4gICAgaWYgKGl0ZW0uZmllbGRHcm91cCkge1xuICAgICAgaXRlbS5maWVsZEdyb3VwID0gaXRlbS5maWVsZEdyb3VwLm1hcCgoZmllbGQ6IGFueSkgPT4gdGhpcy5mb3JtcyhmaWVsZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeCA9IG5hbWVzcGFjZSA/IG5hbWVzcGFjZSArICcuJyA6ICcnO1xuXG4gICAgaWYgKFxuICAgICAgaXRlbS5wcm9wcyAmJlxuICAgICAgKGl0ZW0ucHJvcHMubGFiZWwgfHwgaXRlbS5wcm9wcy5wbGFjZWhvbGRlciB8fCBpdGVtLnByb3BzLm9wdGlvbnMpXG4gICAgKSB7XG4gICAgICBpZiAoIWl0ZW0uZXhwcmVzc2lvbnMpIHtcbiAgICAgICAgaXRlbS5leHByZXNzaW9ucyA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0ucHJvcHMubGFiZWwpIHtcbiAgICAgICAgaXRlbS5leHByZXNzaW9uc1sncHJvcHMubGFiZWwnXSA9IHRoaXMudHJhbnNsYXRlLnN0cmVhbShcbiAgICAgICAgICBwcmVmaXggKyBpdGVtLnByb3BzLmxhYmVsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5wcm9wcy5wbGFjZWhvbGRlcikge1xuICAgICAgICBpdGVtLmV4cHJlc3Npb25zWydwcm9wcy5wbGFjZWhvbGRlciddID0gdGhpcy50cmFuc2xhdGUuc3RyZWFtKFxuICAgICAgICAgIHByZWZpeCArIGl0ZW0ucHJvcHMucGxhY2Vob2xkZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0ucHJvcHMub3B0aW9ucykpIHtcbiAgICAgICAgaXRlbS5leHByZXNzaW9uc1sncHJvcHMub3B0aW9ucyddID0gaXRlbS5wcm9wcy5vcHRpb25zLm1hcCgobTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2cobSk7XG4gICAgICAgICAgaWYgKG0ubGFiZWwpIHtcbiAgICAgICAgICAgIG0ubGFiZWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHByZWZpeCArIG0ubGFiZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbn1cbiJdfQ==
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvcHJvdmlkZXJzL3RyYW5zbGF0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLGNBQWMsRUFFZCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUd2RCxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUM3Qyw0Q0FBNEMsQ0FDN0MsQ0FBQztBQVNGLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsWUFDUyxTQUEyQixFQUMxQixRQUFrQjtJQUMxQiw0REFBNEQ7SUFDbEIsU0FBZ0MsRUFDbEUsZ0JBQWtDO1FBSm5DLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFHbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUUxQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBd0MsQ0FBQztRQUM1RSw4QkFBOEI7UUFFOUIsOEJBQThCO1FBRTlCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDM0Q7U0FDRjtJQUNILENBQUM7SUFDTyxJQUFJLENBQUMsSUFBUztRQUNwQixPQUFPLElBQUksQ0FBQztR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TUFBTTtpQkFDbkI7OzBCQVVJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTG9hZGVyUHJvdmlkZXIgfSBmcm9tICcuL3RyYW5zbGF0ZS1sb2FkZXIucHJvdmlkZXInO1xuXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTY2FuQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzL2NvbmZpZyc7XG5pbXBvcnQgeyBTQ0FOX0NPTkZJR19UT0tFTiB9IGZyb20gJy4uL2NvcmUvdG9rZW5zL2NvbmZpZy50b2tlbnMnO1xuY29uc3QgVFJBTlNMQVRJT05fUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXG4gICdJbmplY3Rpb24gdG9rZW4gZm9yIHRyYW5zbGF0aW9uIHByb3ZpZGVycy4nXG4pO1xuXG5pbnRlcmZhY2UgVHJhbnNsYXRpb25Qcm92aWRlciB7XG4gIG5hbWU6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4U2NhbkRvY1RyYW5zbGF0aW9uUHJvdmlkZXIge1xuICBwdWJsaWMgZGVmYXVsdExhbmchOiBzdHJpbmc7XG4gIHB1YmxpYyB1c2VyTGFuZyE6IHN0cmluZztcbiAgcHJpdmF0ZSBjdXN0b21Mb2FkZXIhOiBUcmFuc2xhdGVMb2FkZXJQcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIC8vQE9wdGlvbmFsKCkgQEluamVjdChTQ0FOX0NPTkZJR19UT0tFTikgY29uZmlnOiBTY2FuQ29uZmlnLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVFJBTlNMQVRJT05fUFJPVklERVIpIHByb3ZpZGVyczogVHJhbnNsYXRpb25Qcm92aWRlcltdLFxuICAgIHByaXZhdGUgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvblxuICApIHtcbiAgICBjb25zb2xlLmxvZygnTU0nLCBNYXRoLnJhbmRvbSgpKTtcbiAgICB0aGlzLmN1c3RvbUxvYWRlciA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMb2FkZXIgYXMgVHJhbnNsYXRlTG9hZGVyUHJvdmlkZXI7XG4gICAgLy9jb25zb2xlLmxvZygnY29uZmlnJyxjb25maWcpXG5cbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnRyYW5zbGF0ZSlcblxuICAgIGlmIChwcm92aWRlcnMgJiYgcHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgcHJvdmlkZXJzKSB7XG4gICAgICAgIHRoaXMuYWRkVHJhbnNsYXRpb25Gb2xkZXIocHJvdmlkZXIubmFtZSwgcHJvdmlkZXIuc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBwYXRoKHBhdGg6IGFueSkge1xuICAgIHJldHVybiBwYXRoO1xuICAgIC8vIGNvbnN0IGJhc2VIcmVmID0gdGhpcy5wbGF0Zm9ybUxvY2F0aW9uXG4gICAgLy8gICAuZ2V0QmFzZUhyZWZGcm9tRE9NKClcbiAgICAvLyAgIC5zcGxpdCgnLycpXG4gICAgLy8gICAuam9pbignJyk7XG5cbiAgICAvLyByZXR1cm4gYmFzZUhyZWYgIT0gJycgPyBgLyR7YmFzZUhyZWZ9JHtwYXRofWAgOiBwYXRoO1xuICB9XG5cbiAgcHVibGljIHNldERlZmF1bHRMYW5nKGxhbmc6IHN0cmluZykge1xuICAgIHRoaXMuZGVmYXVsdExhbmcgPSBsYW5nO1xuICAgIHRoaXMudHJhbnNsYXRlLnNldERlZmF1bHRMYW5nKHRoaXMuZGVmYXVsdExhbmcpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyVHJhbnNsYXRpb25Gb2xkZXIobmFtZTogc3RyaW5nID0gJycsIHBhdGg6IHN0cmluZyA9ICcnKSB7XG4gICAgY29uc29sZS5sb2cobmFtZSwgcGF0aCwgdGhpcy51c2VyTGFuZywgdGhpcy5kZWZhdWx0TGFuZyk7XG5cbiAgICBpZiAoIXRoaXMuY3VzdG9tTG9hZGVyLnByb3ZpZGVyUmVnaXN0ZXJlZChuYW1lKSkge1xuICAgICAgdGhpcy5jdXN0b21Mb2FkZXIucmVnaXN0ZXJQcm92aWRlcihuYW1lLCB0aGlzLnBhdGgocGF0aCkpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRUcmFuc2xhdGlvbkZvbGRlcihuYW1lOiBzdHJpbmcgPSAnJywgcGF0aDogc3RyaW5nID0gJycpIHtcbiAgICBjb25zb2xlLmxvZyhuYW1lLCBwYXRoLCB0aGlzLnVzZXJMYW5nLCB0aGlzLmRlZmF1bHRMYW5nKTtcblxuICAgIGlmICghdGhpcy5jdXN0b21Mb2FkZXIucHJvdmlkZXJSZWdpc3RlcmVkKG5hbWUpKSB7XG4gICAgICB0aGlzLmN1c3RvbUxvYWRlci5yZWdpc3RlclByb3ZpZGVyKG5hbWUsIHRoaXMucGF0aChwYXRoKSk7XG5cbiAgICAgIGlmICh0aGlzLnVzZXJMYW5nKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0Q3VycmVudExhbmcgPSB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZyA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLmxvYWRUcmFuc2xhdGlvbihcbiAgICAgICAgICB0aGlzLnVzZXJMYW5nLFxuICAgICAgICAgIHRoaXMuZGVmYXVsdExhbmcsXG4gICAgICAgICAgIWV4aXN0Q3VycmVudExhbmdcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKHRoaXMuZGVmYXVsdExhbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkVHJhbnNsYXRpb24obGFuZzogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZywgdXNlTGFuZyA9IHRydWUpIHtcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRUcmFuc2xhdGlvbihsYW5nKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcCkgPT4ge1xuICAgICAgICB0aGlzLm9uVHJhbnNsYXRpb25DaGFuZ2VkKGxhbmcpO1xuXG4gICAgICAgIGlmICh1c2VMYW5nKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZyk7XG4gICAgICAgICAgfSwgMjApO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoaXMudHJhbnNsYXRlLnJlbG9hZExhbmcobGFuZylcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmIChmYWxsYmFjayAmJiBmYWxsYmFjayAhPT0gbGFuZykge1xuICAgICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKGZhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXRUcmFuc2xhdGlvbihsYW5nKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIGlmIChmYWxsYmFjayAmJiBmYWxsYmFjayAhPT0gbGFuZykge1xuICAgICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVRyYW5zbGF0aW9uKGZhbGxiYWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZyk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgIHRoaXMub25UcmFuc2xhdGlvbkNoYW5nZWQobGFuZyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25UcmFuc2xhdGlvbkNoYW5nZWQobGFuZzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2xhdGUub25UcmFuc2xhdGlvbkNoYW5nZS5uZXh0KHtcbiAgICAgIGxhbmcsXG4gICAgICB0cmFuc2xhdGlvbnM6IHRoaXMuY3VzdG9tTG9hZGVyLmdldEZ1bGxUcmFuc2xhdGlvbkpTT04obGFuZyksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXNlKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5jdXN0b21Mb2FkZXIuaW5pdChsYW5nKTtcblxuICAgIHJldHVybiB0aGlzLnVwZGF0ZVRyYW5zbGF0aW9uKGxhbmcpO1xuICB9XG4gIGZvcm1zKGl0ZW06IGFueSwgbmFtZXNwYWNlID0gbnVsbCkge1xuICAgIGlmIChpdGVtLmZpZWxkR3JvdXApIHtcbiAgICAgIGl0ZW0uZmllbGRHcm91cCA9IGl0ZW0uZmllbGRHcm91cC5tYXAoKGZpZWxkOiBhbnkpID0+IHRoaXMuZm9ybXMoZmllbGQpKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXggPSBuYW1lc3BhY2UgPyBuYW1lc3BhY2UgKyAnLicgOiAnJztcblxuICAgIGlmIChcbiAgICAgIGl0ZW0ucHJvcHMgJiZcbiAgICAgIChpdGVtLnByb3BzLmxhYmVsIHx8IGl0ZW0ucHJvcHMucGxhY2Vob2xkZXIgfHwgaXRlbS5wcm9wcy5vcHRpb25zKVxuICAgICkge1xuICAgICAgaWYgKCFpdGVtLmV4cHJlc3Npb25zKSB7XG4gICAgICAgIGl0ZW0uZXhwcmVzc2lvbnMgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnByb3BzLmxhYmVsKSB7XG4gICAgICAgIGl0ZW0uZXhwcmVzc2lvbnNbJ3Byb3BzLmxhYmVsJ10gPSB0aGlzLnRyYW5zbGF0ZS5zdHJlYW0oXG4gICAgICAgICAgcHJlZml4ICsgaXRlbS5wcm9wcy5sYWJlbFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0ucHJvcHMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgaXRlbS5leHByZXNzaW9uc1sncHJvcHMucGxhY2Vob2xkZXInXSA9IHRoaXMudHJhbnNsYXRlLnN0cmVhbShcbiAgICAgICAgICBwcmVmaXggKyBpdGVtLnByb3BzLnBsYWNlaG9sZGVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLnByb3BzLm9wdGlvbnMpKSB7XG4gICAgICAgIGl0ZW0uZXhwcmVzc2lvbnNbJ3Byb3BzLm9wdGlvbnMnXSA9IGl0ZW0ucHJvcHMub3B0aW9ucy5tYXAoKG06IGFueSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKG0pO1xuICAgICAgICAgIGlmIChtLmxhYmVsKSB7XG4gICAgICAgICAgICBtLmxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyBtLmxhYmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xuICB9XG59XG4iXX0=
|
package/fesm2015/ngx-scandoc.mjs
CHANGED
|
@@ -128,7 +128,8 @@ class BaseComponent {
|
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
class NgxScandocCameraProvider {
|
|
131
|
-
constructor() {
|
|
131
|
+
constructor(platform) {
|
|
132
|
+
this.platform = platform;
|
|
132
133
|
this.selfie$ = new Subject();
|
|
133
134
|
this.rectPosition = {
|
|
134
135
|
l: 0,
|
|
@@ -160,9 +161,12 @@ class NgxScandocCameraProvider {
|
|
|
160
161
|
}
|
|
161
162
|
preloadVideo() {
|
|
162
163
|
return from(navigator.mediaDevices.getUserMedia({ video: true })).pipe(map((mediaStream) => {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
console.warn(mediaStream);
|
|
165
|
+
if (!this.platform.FIREFOX) {
|
|
166
|
+
mediaStream.getTracks().forEach((track) => {
|
|
167
|
+
track.stop();
|
|
168
|
+
});
|
|
169
|
+
}
|
|
166
170
|
}));
|
|
167
171
|
}
|
|
168
172
|
setup() {
|
|
@@ -196,14 +200,14 @@ class NgxScandocCameraProvider {
|
|
|
196
200
|
return this.switchCamera.asObservable();
|
|
197
201
|
}
|
|
198
202
|
}
|
|
199
|
-
NgxScandocCameraProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
203
|
+
NgxScandocCameraProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, deps: [{ token: i2.Platform }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
200
204
|
NgxScandocCameraProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, providedIn: 'root' });
|
|
201
205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxScandocCameraProvider, decorators: [{
|
|
202
206
|
type: Injectable,
|
|
203
207
|
args: [{
|
|
204
208
|
providedIn: 'root',
|
|
205
209
|
}]
|
|
206
|
-
}], ctorParameters: function () { return []; } });
|
|
210
|
+
}], ctorParameters: function () { return [{ type: i2.Platform }]; } });
|
|
207
211
|
|
|
208
212
|
class WebcamComponent extends BaseComponent {
|
|
209
213
|
onResize() {
|
|
@@ -335,6 +339,10 @@ class WebcamComponent extends BaseComponent {
|
|
|
335
339
|
//console.warn(t.getConstraints());
|
|
336
340
|
if (!this.isMobile) {
|
|
337
341
|
try {
|
|
342
|
+
if (!t.getCapabilities) {
|
|
343
|
+
this.setDeviceId(stream);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
338
346
|
const settings = t.getSettings();
|
|
339
347
|
const cap = t.getCapabilities();
|
|
340
348
|
const con = t.getConstraints();
|
|
@@ -580,13 +588,19 @@ class WebcamComponent extends BaseComponent {
|
|
|
580
588
|
if (this.mediaStream && this.mediaStream.getTracks) {
|
|
581
589
|
// getTracks() returns all media tracks (video+audio)
|
|
582
590
|
this.mediaStream.getTracks().forEach((track) => {
|
|
591
|
+
// console.log(track);
|
|
592
|
+
track.enabled = false;
|
|
593
|
+
this.cd.detectChanges();
|
|
583
594
|
track.stop();
|
|
584
595
|
this.video.srcObject.removeTrack(track);
|
|
585
596
|
this.mediaStream.removeTrack(track);
|
|
597
|
+
this.cd.detectChanges();
|
|
586
598
|
});
|
|
587
599
|
this.video.srcObject = null;
|
|
600
|
+
// this.video.src = null;
|
|
588
601
|
this.video.load();
|
|
589
602
|
}
|
|
603
|
+
// this.__subs(this.stopVideoTracks()).subscribe()
|
|
590
604
|
}
|
|
591
605
|
drawRectangle() {
|
|
592
606
|
this.zone.run(() => {
|
|
@@ -1645,6 +1659,12 @@ class NgxScanDocTranslationProvider {
|
|
|
1645
1659
|
this.defaultLang = lang;
|
|
1646
1660
|
this.translate.setDefaultLang(this.defaultLang);
|
|
1647
1661
|
}
|
|
1662
|
+
registerTranslationFolder(name = '', path = '') {
|
|
1663
|
+
console.log(name, path, this.userLang, this.defaultLang);
|
|
1664
|
+
if (!this.customLoader.providerRegistered(name)) {
|
|
1665
|
+
this.customLoader.registerProvider(name, this.path(path));
|
|
1666
|
+
}
|
|
1667
|
+
}
|
|
1648
1668
|
addTranslationFolder(name = '', path = '') {
|
|
1649
1669
|
console.log(name, path, this.userLang, this.defaultLang);
|
|
1650
1670
|
if (!this.customLoader.providerRegistered(name)) {
|