stream-chat-angular 5.3.2 → 5.4.1
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/assets/i18n/en.d.ts +4 -0
- package/assets/version.d.ts +1 -1
- package/esm2020/assets/i18n/en.mjs +5 -1
- package/esm2020/assets/version.mjs +2 -2
- package/esm2020/lib/attachment-list/attachment-list.component.mjs +4 -4
- package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +5 -5
- package/esm2020/lib/attachment.service.mjs +60 -10
- package/esm2020/lib/channel-list/channel-list.component.mjs +3 -3
- package/esm2020/lib/channel-preview/channel-preview.component.mjs +1 -1
- package/esm2020/lib/file-utils.mjs +35 -0
- package/esm2020/lib/format-duration.mjs +16 -0
- package/esm2020/lib/icon/icon-placeholder/icon-placeholder.component.mjs +28 -0
- package/esm2020/lib/icon/icon.component.mjs +1 -1
- package/esm2020/lib/icon/icon.module.mjs +37 -0
- package/esm2020/lib/{loading-indicator → icon/loading-indicator}/loading-indicator.component.mjs +1 -1
- package/esm2020/lib/{loading-indicator-placeholder → icon/loading-indicator-placeholder}/loading-indicator-placeholder.component.mjs +2 -2
- package/esm2020/lib/is-safari.mjs +2 -0
- package/esm2020/lib/message/message.component.mjs +6 -6
- package/esm2020/lib/message-input/message-input-config.service.mjs +6 -1
- package/esm2020/lib/message-input/message-input.component.mjs +57 -14
- package/esm2020/lib/message-input/voice-recorder.service.mjs +27 -0
- package/esm2020/lib/message-list/message-list.component.mjs +9 -9
- package/esm2020/lib/modal/modal.component.mjs +1 -1
- package/esm2020/lib/paginated-list/paginated-list.component.mjs +1 -1
- package/esm2020/lib/stream-chat.module.mjs +21 -35
- package/esm2020/lib/thread/thread.component.mjs +1 -1
- package/esm2020/lib/types.mjs +1 -1
- package/esm2020/lib/voice-recorder/amplitude-recorder.service.mjs +119 -0
- package/esm2020/lib/voice-recorder/audio-recorder.service.mjs +79 -0
- package/esm2020/lib/voice-recorder/media-recorder.mjs +190 -0
- package/esm2020/lib/voice-recorder/mp3-transcoder.mjs +61 -0
- package/esm2020/lib/voice-recorder/transcoder.service.mjs +121 -0
- package/esm2020/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +35 -0
- package/esm2020/lib/voice-recorder/voice-recorder.component.mjs +80 -0
- package/esm2020/lib/voice-recorder/voice-recorder.module.mjs +34 -0
- package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +4 -75
- package/esm2020/lib/voice-recording/voice-recording.component.mjs +4 -15
- package/esm2020/lib/voice-recording/voice-recording.module.mjs +21 -0
- package/esm2020/lib/wave-form-sampler.mjs +72 -0
- package/esm2020/public-api.mjs +18 -5
- package/fesm2015/stream-chat-angular.mjs +1055 -145
- package/fesm2015/stream-chat-angular.mjs.map +1 -1
- package/fesm2020/stream-chat-angular.mjs +1006 -140
- package/fesm2020/stream-chat-angular.mjs.map +1 -1
- package/lib/attachment.service.d.ts +7 -1
- package/lib/file-utils.d.ts +9 -0
- package/lib/format-duration.d.ts +1 -0
- package/lib/{icon-placeholder → icon/icon-placeholder}/icon-placeholder.component.d.ts +3 -3
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/icon/icon.module.d.ts +11 -0
- package/lib/{loading-indicator-placeholder → icon/loading-indicator-placeholder}/loading-indicator-placeholder.component.d.ts +1 -1
- package/lib/is-safari.d.ts +1 -0
- package/lib/message-input/message-input-config.service.d.ts +5 -0
- package/lib/message-input/message-input.component.d.ts +19 -5
- package/lib/message-input/voice-recorder.service.d.ts +19 -0
- package/lib/message-list/message-list.component.d.ts +0 -1
- package/lib/stream-chat.module.d.ts +20 -24
- package/lib/types.d.ts +11 -1
- package/lib/voice-recorder/amplitude-recorder.service.d.ts +71 -0
- package/lib/voice-recorder/audio-recorder.service.d.ts +46 -0
- package/lib/voice-recorder/media-recorder.d.ts +46 -0
- package/lib/voice-recorder/mp3-transcoder.d.ts +1 -0
- package/lib/voice-recorder/transcoder.service.d.ts +40 -0
- package/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.d.ts +21 -0
- package/lib/voice-recorder/voice-recorder.component.d.ts +30 -0
- package/lib/voice-recorder/voice-recorder.module.d.ts +12 -0
- package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +0 -7
- package/lib/voice-recording/voice-recording.component.d.ts +0 -1
- package/lib/voice-recording/voice-recording.module.d.ts +11 -0
- package/lib/wave-form-sampler.d.ts +1 -0
- package/package.json +8 -1
- package/public-api.d.ts +17 -4
- package/src/assets/assets/icons/stream-chat-icons.eot +0 -0
- package/src/assets/assets/icons/stream-chat-icons.svg +4 -0
- package/src/assets/assets/icons/stream-chat-icons.ttf +0 -0
- package/src/assets/assets/icons/stream-chat-icons.woff +0 -0
- package/src/assets/assets/icons/stream-chat-icons.woff2 +0 -0
- package/src/assets/i18n/en.ts +6 -0
- package/src/assets/styles/css/index.css +1 -1
- package/src/assets/styles/css/index.layout.css +1 -1
- package/src/assets/styles/scss/AudioRecorder/AudioRecorder-layout.scss +64 -14
- package/src/assets/styles/scss/AudioRecorder/AudioRecorder-theme.scss +11 -1
- package/src/assets/styles/scss/Icon/Icon-layout.scss +6 -1
- package/src/assets/styles/scss/MessageInput/MessageInput-layout.scss +1 -0
- package/src/assets/styles/scss/MessageInput/MessageInput-theme.scss +1 -0
- package/src/assets/version.ts +1 -1
- package/esm2020/lib/icon-placeholder/icon-placeholder.component.mjs +0 -28
- package/esm2020/lib/is-image-file.mjs +0 -5
- package/lib/is-image-file.d.ts +0 -1
- /package/lib/{loading-indicator → icon/loading-indicator}/loading-indicator.component.d.ts +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { VoiceRecorderComponent } from './voice-recorder.component';
|
|
4
|
+
import { VoiceRecordingModule } from '../voice-recording/voice-recording.module';
|
|
5
|
+
import { IconModule } from '../icon/icon.module';
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
+
import { AudioRecorderService } from './audio-recorder.service';
|
|
8
|
+
import { TranscoderService } from './transcoder.service';
|
|
9
|
+
import { AmplitudeRecorderService } from './amplitude-recorder.service';
|
|
10
|
+
import { VoiceRecorderWavebarComponent } from './voice-recorder-wavebar/voice-recorder-wavebar.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class VoiceRecorderModule {
|
|
13
|
+
}
|
|
14
|
+
VoiceRecorderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
VoiceRecorderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, declarations: [VoiceRecorderComponent, VoiceRecorderWavebarComponent], imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule], exports: [VoiceRecorderComponent, VoiceRecorderWavebarComponent] });
|
|
16
|
+
VoiceRecorderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, providers: [
|
|
17
|
+
AudioRecorderService,
|
|
18
|
+
TranscoderService,
|
|
19
|
+
AmplitudeRecorderService,
|
|
20
|
+
], imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule] });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, decorators: [{
|
|
22
|
+
type: NgModule,
|
|
23
|
+
args: [{
|
|
24
|
+
declarations: [VoiceRecorderComponent, VoiceRecorderWavebarComponent],
|
|
25
|
+
imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule],
|
|
26
|
+
exports: [VoiceRecorderComponent, VoiceRecorderWavebarComponent],
|
|
27
|
+
providers: [
|
|
28
|
+
AudioRecorderService,
|
|
29
|
+
TranscoderService,
|
|
30
|
+
AmplitudeRecorderService,
|
|
31
|
+
],
|
|
32
|
+
}]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLXJlY29yZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDOztBQVkxRyxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBVGYsc0JBQXNCLEVBQUUsNkJBQTZCLGFBQzFELFlBQVksRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxhQUMvRCxzQkFBc0IsRUFBRSw2QkFBNkI7aUhBT3BELG1CQUFtQixhQU5uQjtRQUNULG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsd0JBQXdCO0tBQ3pCLFlBTlMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxlQUFlOzJGQVE5RCxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7b0JBQ3JFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO29CQUMxRSxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQztvQkFDaEUsU0FBUyxFQUFFO3dCQUNULG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVm9pY2VSZWNvcmRpbmdNb2R1bGUgfSBmcm9tICcuLi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF1ZGlvUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdWRpby1yZWNvcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zY29kZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2NvZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW1wbGl0dWRlUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hbXBsaXR1ZGUtcmVjb3JkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdm9pY2UtcmVjb3JkZXItd2F2ZWJhci92b2ljZS1yZWNvcmRlci13YXZlYmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1ZvaWNlUmVjb3JkZXJDb21wb25lbnQsIFZvaWNlUmVjb3JkZXJXYXZlYmFyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVm9pY2VSZWNvcmRpbmdNb2R1bGUsIEljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIGV4cG9ydHM6IFtWb2ljZVJlY29yZGVyQ29tcG9uZW50LCBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIEF1ZGlvUmVjb3JkZXJTZXJ2aWNlLFxuICAgIFRyYW5zY29kZXJTZXJ2aWNlLFxuICAgIEFtcGxpdHVkZVJlY29yZGVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRlck1vZHVsZSB7fVxuIl19
|
package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import { resampleWaveForm } from '../../wave-form-sampler';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "@angular/common";
|
|
4
5
|
/**
|
|
@@ -17,36 +18,6 @@ export class VoiceRecordingWavebarComponent {
|
|
|
17
18
|
this.isDragging = false;
|
|
18
19
|
this.sampleSize = 40;
|
|
19
20
|
this.isViewInited = false;
|
|
20
|
-
this.upsample = () => {
|
|
21
|
-
if (this.sampleSize === this.waveFormData.length)
|
|
22
|
-
return this.waveFormData;
|
|
23
|
-
// eslint-disable-next-line prefer-const
|
|
24
|
-
let [bucketSize, remainder] = this.divMod(this.sampleSize, this.waveFormData.length);
|
|
25
|
-
const result = [];
|
|
26
|
-
for (let i = 0; i < this.waveFormData.length; i++) {
|
|
27
|
-
const extra = remainder && remainder-- ? 1 : 0;
|
|
28
|
-
result.push(...Array(bucketSize + extra).fill(this.waveFormData[i]));
|
|
29
|
-
}
|
|
30
|
-
return result;
|
|
31
|
-
};
|
|
32
|
-
this.getNextBucketMean = (data, currentBucketIndex, bucketSize) => {
|
|
33
|
-
const nextBucketStartIndex = Math.floor(currentBucketIndex * bucketSize) + 1;
|
|
34
|
-
let nextNextBucketStartIndex = Math.floor((currentBucketIndex + 1) * bucketSize) + 1;
|
|
35
|
-
nextNextBucketStartIndex =
|
|
36
|
-
nextNextBucketStartIndex < data.length
|
|
37
|
-
? nextNextBucketStartIndex
|
|
38
|
-
: data.length;
|
|
39
|
-
return this.mean(data.slice(nextBucketStartIndex, nextNextBucketStartIndex));
|
|
40
|
-
};
|
|
41
|
-
this.mean = (values) => values.reduce((acc, value) => acc + value, 0) / values.length;
|
|
42
|
-
this.triangleAreaHeron = (a, b, c) => {
|
|
43
|
-
const s = (a + b + c) / 2;
|
|
44
|
-
return Math.sqrt(s * (s - a) * (s - b) * (s - c));
|
|
45
|
-
};
|
|
46
|
-
this.triangleBase = (a, b) => Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
|
|
47
|
-
this.divMod = (num, divisor) => {
|
|
48
|
-
return [Math.floor(num / divisor), num % divisor];
|
|
49
|
-
};
|
|
50
21
|
}
|
|
51
22
|
ngOnInit() {
|
|
52
23
|
this.containerSizeChanged();
|
|
@@ -60,10 +31,7 @@ export class VoiceRecordingWavebarComponent {
|
|
|
60
31
|
}
|
|
61
32
|
ngOnChanges(changes) {
|
|
62
33
|
if (changes.waveFormData) {
|
|
63
|
-
this.resampledWaveFormData =
|
|
64
|
-
this.waveFormData.length > this.sampleSize
|
|
65
|
-
? this.downsample()
|
|
66
|
-
: this.upsample();
|
|
34
|
+
this.resampledWaveFormData = resampleWaveForm(this.waveFormData, this.sampleSize);
|
|
67
35
|
}
|
|
68
36
|
if (changes.audioElement) {
|
|
69
37
|
this.ngZone.runOutsideAngular(() => {
|
|
@@ -117,10 +85,7 @@ export class VoiceRecordingWavebarComponent {
|
|
|
117
85
|
sampleSize !== Infinity) {
|
|
118
86
|
this.ngZone.run(() => {
|
|
119
87
|
this.sampleSize = sampleSize;
|
|
120
|
-
this.resampledWaveFormData =
|
|
121
|
-
this.waveFormData.length > this.sampleSize
|
|
122
|
-
? this.downsample()
|
|
123
|
-
: this.upsample();
|
|
88
|
+
this.resampledWaveFormData = resampleWaveForm(this.waveFormData, this.sampleSize);
|
|
124
89
|
if (this.isViewInited) {
|
|
125
90
|
this.cdRef.detectChanges();
|
|
126
91
|
}
|
|
@@ -128,42 +93,6 @@ export class VoiceRecordingWavebarComponent {
|
|
|
128
93
|
}
|
|
129
94
|
}
|
|
130
95
|
}
|
|
131
|
-
downsample() {
|
|
132
|
-
if (this.waveFormData.length <= this.sampleSize) {
|
|
133
|
-
return this.waveFormData;
|
|
134
|
-
}
|
|
135
|
-
if (this.sampleSize === 1)
|
|
136
|
-
return [this.mean(this.waveFormData)];
|
|
137
|
-
const result = [];
|
|
138
|
-
// bucket size adjusted due to the fact that the first and the last item in the original data array is kept in target output
|
|
139
|
-
const bucketSize = (this.waveFormData.length - 2) / (this.sampleSize - 2);
|
|
140
|
-
let lastSelectedPointIndex = 0;
|
|
141
|
-
result.push(this.waveFormData[lastSelectedPointIndex]); // Always add the first point
|
|
142
|
-
let maxAreaPoint, maxArea, triangleArea;
|
|
143
|
-
for (let bucketIndex = 1; bucketIndex < this.sampleSize - 1; bucketIndex++) {
|
|
144
|
-
const previousBucketRefPoint = this.waveFormData[lastSelectedPointIndex];
|
|
145
|
-
const nextBucketMean = this.getNextBucketMean(this.waveFormData, bucketIndex, bucketSize);
|
|
146
|
-
const currentBucketStartIndex = Math.floor((bucketIndex - 1) * bucketSize) + 1;
|
|
147
|
-
const nextBucketStartIndex = Math.floor(bucketIndex * bucketSize) + 1;
|
|
148
|
-
const countUnitsBetweenAtoC = 1 + nextBucketStartIndex - currentBucketStartIndex;
|
|
149
|
-
maxArea = triangleArea = -1;
|
|
150
|
-
for (let currentPointIndex = currentBucketStartIndex; currentPointIndex < nextBucketStartIndex; currentPointIndex++) {
|
|
151
|
-
const countUnitsBetweenAtoB = Math.abs(currentPointIndex - currentBucketStartIndex) + 1;
|
|
152
|
-
const countUnitsBetweenBtoC = countUnitsBetweenAtoC - countUnitsBetweenAtoB;
|
|
153
|
-
const currentPointValue = this.waveFormData[currentPointIndex];
|
|
154
|
-
triangleArea = this.triangleAreaHeron(this.triangleBase(Math.abs(previousBucketRefPoint - currentPointValue), countUnitsBetweenAtoB), this.triangleBase(Math.abs(currentPointValue - nextBucketMean), countUnitsBetweenBtoC), this.triangleBase(Math.abs(previousBucketRefPoint - nextBucketMean), countUnitsBetweenAtoC));
|
|
155
|
-
if (triangleArea > maxArea) {
|
|
156
|
-
maxArea = triangleArea;
|
|
157
|
-
maxAreaPoint = this.waveFormData[currentPointIndex];
|
|
158
|
-
lastSelectedPointIndex = currentPointIndex;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (typeof maxAreaPoint !== 'undefined')
|
|
162
|
-
result.push(maxAreaPoint);
|
|
163
|
-
}
|
|
164
|
-
result.push(this.waveFormData[this.waveFormData.length - 1]); // Always add the last point
|
|
165
|
-
return result;
|
|
166
|
-
}
|
|
167
96
|
}
|
|
168
97
|
VoiceRecordingWavebarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingWavebarComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
169
98
|
VoiceRecordingWavebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: VoiceRecordingWavebarComponent, selector: "stream-voice-recording-wavebar", inputs: { audioElement: "audioElement", waveFormData: "waveFormData", duration: "duration" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--eslint-disable @angular-eslint/template/click-events-have-key-events-->\n<div\n #container\n class=\"str-chat__wave-progress-bar__track\"\n data-testid=\"wave-progress-bar-track\"\n role=\"progressbar\"\n (mousedown)=\"isDragging = true\"\n (mouseup)=\"isDragging = false\"\n (mouseleave)=\"isDragging = false\"\n (mousemove)=\"isDragging ? seek($event) : null\"\n (click)=\"seek($event)\"\n>\n <!--eslint-enable @angular-eslint/template/click-events-have-key-events-->\n <div\n *ngFor=\"\n let dataPoint of resampledWaveFormData;\n let i = index;\n trackBy: trackByIndex\n \"\n class=\"str-chat__wave-progress-bar__amplitude-bar\"\n [class.str-chat__wave-progress-bar__amplitude-bar--active]=\"\n progress > i / resampledWaveFormData.length\n \"\n [style.--str-chat__wave-progress-bar__amplitude-bar-height]=\"\n dataPoint ? dataPoint * 100 + '%' : '0%'\n \"\n ></div>\n <div\n class=\"str-chat__wave-progress-bar__progress-indicator\"\n data-testid=\"wave-progress-bar-progress-indicator\"\n [ngStyle]=\"{ 'inset-inline-start': progress * 100 + '%' }\"\n ></div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
@@ -180,4 +109,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
180
109
|
type: ViewChild,
|
|
181
110
|
args: ['container', { static: true }]
|
|
182
111
|
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGluZy92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdm9pY2UtcmVjb3JkaW5nL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7O0FBRXZCOztHQUVHO0FBTUgsTUFBTSxPQUFPLDhCQUE4QjtJQXVCekMsWUFBb0IsTUFBYyxFQUFVLEtBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWhCcEU7O1dBRUc7UUFDTSxpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQUtyQywwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFDckMsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ1gsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUd4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQTJLckIsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO2dCQUFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUUzRSx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxJQUFJ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LENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7UUFFMUYsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7MkhBOUxVLDhCQUE4QjsrR0FBOUIsOEJBQThCLCtTQ3JCM0MsNm5DQWlDQTsyRkRaYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsZ0NBQWdDOzZIQVVqQyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRSxTQUFTO3NCQURoQixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgdXNlZCB0byB2aXN1YWxpemUgdGhlIHdhdmUgYmFyIG9mIGEgdm9pY2UgcmVjb3JkaW5nXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS12b2ljZS1yZWNvcmRpbmctd2F2ZWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFZvaWNlUmVjb3JkaW5nV2F2ZWJhckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBUaGUgYXVkaW8gZWxlbWVudCB0aGF0IHBsYXlzIHRoZSB2b2ljZSByZWNvcmRpbmdcbiAgICovXG4gIEBJbnB1dCgpIGF1ZGlvRWxlbWVudD86IEhUTUxBdWRpb0VsZW1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgd2F2ZWZvcm0gZGF0YSB0byB2aXN1YWxpemVcbiAgICovXG4gIEBJbnB1dCgpIHdhdmVGb3JtRGF0YTogbnVtYmVyW10gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBvZiB0aGUgdm9pY2UgcmVjb3JkaW5nIGluIHNlY29uZHNcbiAgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyO1xuICByZXNhbXBsZWRXYXZlRm9ybURhdGE6IG51bWJlcltdID0gW107XG4gIHByb2dyZXNzOiBudW1iZXIgPSAwO1xuICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc2FtcGxlU2l6ZTogbnVtYmVyID0gNDA7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgY29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgaXNWaWV3SW5pdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJTaXplQ2hhbmdlZCgpO1xuICAgIGlmICh0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyU2l6ZUNoYW5nZWQoKTtcbiAgICAgICAgfSkub2JzZXJ2ZSh0aGlzLmNvbnRhaW5lciEubmF0aXZlRWxlbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMud2F2ZUZvcm1EYXRhKSB7XG4gICAgICB0aGlzLnJlc2FtcGxlZFdhdmVGb3JtRGF0YSA9XG4gICAgICAgIHRoaXMud2F2ZUZvcm1EYXRhLmxlbmd0aCA+IHRoaXMuc2FtcGxlU2l6ZVxuICAgICAgICAgID8gdGhpcy5kb3duc2FtcGxlKClcbiAgICAgICAgICA6IHRoaXMudXBzYW1wbGUoKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuYXVkaW9FbGVtZW50KSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuYXVkaW9FbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb2dyZXNzID1cbiAgICAgICAgICAgICh0aGlzLmF1ZGlvRWxlbWVudD8uY3VycmVudFRpbWUgfHwgMCkgLyAodGhpcy5kdXJhdGlvbiB8fCAwKSB8fCAwO1xuICAgICAgICAgIGlmIChNYXRoLmFicyhwcm9ncmVzcyAtIHRoaXMucHJvZ3Jlc3MpID49IDAuMDIpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaWV3SW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNlZWsoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9XG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggfHwgMDtcbiAgICBjb25zdCBjb250YWluZXJTdGFydCA9XG4gICAgICB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/LnggfHwgMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSAoZXZlbnQueCAtIGNvbnRhaW5lclN0YXJ0KSAvIGNvbnRhaW5lcldpZHRoO1xuXG4gICAgaWYgKCFpc05hTihwcm9ncmVzcykgJiYgdGhpcy5hdWRpb0VsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5kdXJhdGlvbiB8fCAwO1xuICAgICAgY29uc3QgdGltZSA9IGR1cmF0aW9uICogcHJvZ3Jlc3M7XG4gICAgICB0aGlzLmF1ZGlvRWxlbWVudC5jdXJyZW50VGltZSA9IHRpbWU7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwcml2YXRlIGNvbnRhaW5lclNpemVDaGFuZ2VkKCkge1xuICAgIGlmICghdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIGlmIChjb250YWluZXJXaWR0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBiYXJXaWR0aCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zdHItY2hhdF9fdm9pY2UtcmVjb3JkaW5nLWFtcGxpdHVkZS1iYXItd2lkdGgnKVxuICAgICAgLnJlcGxhY2UoJ3B4JywgJycpO1xuICAgIGNvbnN0IGJhckdhcCA9ICtnZXRDb21wdXRlZFN0eWxlKHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnLS1zdHItY2hhdF9fdm9pY2UtcmVjb3JkaW5nLWFtcGxpdHVkZS1iYXItZ2FwLXdpZHRoJylcbiAgICAgIC5yZXBsYWNlKCdweCcsICcnKTtcbiAgICBpZiAoIWlzTmFOKGJhcldpZHRoKSAmJiAhaXNOYU4oYmFyR2FwKSkge1xuICAgICAgY29uc3Qgc2FtcGxlU2l6ZSA9IE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyAoYmFyV2lkdGggKyBiYXJHYXApKTtcbiAgICAgIGlmIChcbiAgICAgICAgc2FtcGxlU2l6ZSAhPT0gdGhpcy5zYW1wbGVTaXplICYmXG4gICAgICAgICFpc05hTihzYW1wbGVTaXplKSAmJlxuICAgICAgICBzYW1wbGVTaXplICE9PSBJbmZpbml0eVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcbiAgICAgICAgICB0aGlzLnJlc2FtcGxlZFdhdmVGb3JtRGF0YSA9XG4gICAgICAgICAgICB0aGlzLndhdmVGb3JtRGF0YS5sZW5ndGggPiB0aGlzLnNhbXBsZVNpemVcbiAgICAgICAgICAgICAgPyB0aGlzLmRvd25zYW1wbGUoKVxuICAgICAgICAgICAgICA6IHRoaXMudXBzYW1wbGUoKTtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkb3duc2FtcGxlKCkge1xuICAgIGlmICh0aGlzLndhdmVGb3JtRGF0YS5sZW5ndGggPD0gdGhpcy5zYW1wbGVTaXplKSB7XG4gICAgICByZXR1cm4gdGhpcy53YXZlRm9ybURhdGE7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2FtcGxlU2l6ZSA9PT0gMSkgcmV0dXJuIFt0aGlzLm1lYW4odGhpcy53YXZlRm9ybURhdGEpXTtcblxuICAgIGNvbnN0IHJlc3VsdDogbnVtYmVyW10gPSBbXTtcbiAgICAvLyBidWNrZXQgc2l6ZSBhZGp1c3RlZCBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG9yaWdpbmFsIGRhdGEgYXJyYXkgaXMga2VwdCBpbiB0YXJnZXQgb3V0cHV0XG4gICAgY29uc3QgYnVja2V0U2l6ZSA9ICh0aGlzLndhdmVGb3JtRGF0YS5sZW5ndGggLSAyKSAvICh0aGlzLnNhbXBsZVNpemUgLSAyKTtcbiAgICBsZXQgbGFzdFNlbGVjdGVkUG9pbnRJbmRleCA9IDA7XG4gICAgcmVzdWx0LnB1c2godGhpcy53YXZlRm9ybURhdGFbbGFzdFNlbGVjdGVkUG9pbnRJbmRleF0pOyAvLyBBbHdheXMgYWRkIHRoZSBmaXJzdCBwb2ludFxuICAgIGxldCBtYXhBcmVhUG9pbnQsIG1heEFyZWEsIHRyaWFuZ2xlQXJlYTtcblxuICAgIGZvciAoXG4gICAgICBsZXQgYnVja2V0SW5kZXggPSAxO1xuICAgICAgYnVja2V0SW5kZXggPCB0aGlzLnNhbXBsZVNpemUgLSAxO1xuICAgICAgYnVja2V0SW5kZXgrK1xuICAgICkge1xuICAgICAgY29uc3QgcHJldmlvdXNCdWNrZXRSZWZQb2ludCA9IHRoaXMud2F2ZUZvcm1EYXRhW2xhc3RTZWxlY3RlZFBvaW50SW5kZXhdO1xuICAgICAgY29uc3QgbmV4dEJ1Y2tldE1lYW4gPSB0aGlzLmdldE5leHRCdWNrZXRNZWFuKFxuICAgICAgICB0aGlzLndhdmVGb3JtRGF0YSxcbiAgICAgICAgYnVja2V0SW5kZXgsXG4gICAgICAgIGJ1Y2tldFNpemVcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRCdWNrZXRTdGFydEluZGV4ID1cbiAgICAgICAgTWF0aC5mbG9vcigoYnVja2V0SW5kZXggLSAxKSAqIGJ1Y2tldFNpemUpICsgMTtcbiAgICAgIGNvbnN0IG5leHRCdWNrZXRTdGFydEluZGV4ID0gTWF0aC5mbG9vcihidWNrZXRJbmRleCAqIGJ1Y2tldFNpemUpICsgMTtcbiAgICAgIGNvbnN0IGNvdW50VW5pdHNCZXR3ZWVuQXRvQyA9XG4gICAgICAgIDEgKyBuZXh0QnVja2V0U3RhcnRJbmRleCAtIGN1cnJlbnRCdWNrZXRTdGFydEluZGV4O1xuXG4gICAgICBtYXhBcmVhID0gdHJpYW5nbGVBcmVhID0gLTE7XG5cbiAgICAgIGZvciAoXG4gICAgICAgIGxldCBjdXJyZW50UG9pbnRJbmRleCA9IGN1cnJlbnRCdWNrZXRTdGFydEluZGV4O1xuICAgICAgICBjdXJyZW50UG9pbnRJbmRleCA8IG5leHRCdWNrZXRTdGFydEluZGV4O1xuICAgICAgICBjdXJyZW50UG9pbnRJbmRleCsrXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgY291bnRVbml0c0JldHdlZW5BdG9CID1cbiAgICAgICAgICBNYXRoLmFicyhjdXJyZW50UG9pbnRJbmRleCAtIGN1cnJlbnRCdWNrZXRTdGFydEluZGV4KSArIDE7XG4gICAgICAgIGNvbnN0IGNvdW50VW5pdHNCZXR3ZWVuQnRvQyA9XG4gICAgICAgICAgY291bnRVbml0c0JldHdlZW5BdG9DIC0gY291bnRVbml0c0JldHdlZW5BdG9CO1xuICAgICAgICBjb25zdCBjdXJyZW50UG9pbnRWYWx1ZSA9IHRoaXMud2F2ZUZvcm1EYXRhW2N1cnJlbnRQb2ludEluZGV4XTtcblxuICAgICAgICB0cmlhbmdsZUFyZWEgPSB0aGlzLnRyaWFuZ2xlQXJlYUhlcm9uKFxuICAgICAgICAgIHRoaXMudHJpYW5nbGVCYXNlKFxuICAgICAgICAgICAgTWF0aC5hYnMocHJldmlvdXNCdWNrZXRSZWZQb2ludCAtIGN1cnJlbnRQb2ludFZhbHVlKSxcbiAgICAgICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQXRvQlxuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy50cmlhbmdsZUJhc2UoXG4gICAgICAgICAgICBNYXRoLmFicyhjdXJyZW50UG9pbnRWYWx1ZSAtIG5leHRCdWNrZXRNZWFuKSxcbiAgICAgICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQnRvQ1xuICAgICAgICAgICksXG4gICAgICAgICAgdGhpcy50cmlhbmdsZUJhc2UoXG4gICAgICAgICAgICBNYXRoLmFicyhwcmV2aW91c0J1Y2tldFJlZlBvaW50IC0gbmV4dEJ1Y2tldE1lYW4pLFxuICAgICAgICAgICAgY291bnRVbml0c0JldHdlZW5BdG9DXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0cmlhbmdsZUFyZWEgPiBtYXhBcmVhKSB7XG4gICAgICAgICAgbWF4QXJlYSA9IHRyaWFuZ2xlQXJlYTtcbiAgICAgICAgICBtYXhBcmVhUG9pbnQgPSB0aGlzLndhdmVGb3JtRGF0YVtjdXJyZW50UG9pbnRJbmRleF07XG4gICAgICAgICAgbGFzdFNlbGVjdGVkUG9pbnRJbmRleCA9IGN1cnJlbnRQb2ludEluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbWF4QXJlYVBvaW50ICE9PSAndW5kZWZpbmVkJykgcmVzdWx0LnB1c2gobWF4QXJlYVBvaW50KTtcbiAgICB9XG5cbiAgICByZXN1bHQucHVzaCh0aGlzLndhdmVGb3JtRGF0YVt0aGlzLndhdmVGb3JtRGF0YS5sZW5ndGggLSAxXSk7IC8vIEFsd2F5cyBhZGQgdGhlIGxhc3QgcG9pbnRcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHVwc2FtcGxlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnNhbXBsZVNpemUgPT09IHRoaXMud2F2ZUZvcm1EYXRhLmxlbmd0aCkgcmV0dXJuIHRoaXMud2F2ZUZvcm1EYXRhO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBwcmVmZXItY29uc3RcbiAgICBsZXQgW2J1Y2tldFNpemUsIHJlbWFpbmRlcl0gPSB0aGlzLmRpdk1vZChcbiAgICAgIHRoaXMuc2FtcGxlU2l6ZSxcbiAgICAgIHRoaXMud2F2ZUZvcm1EYXRhLmxlbmd0aFxuICAgICk7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndhdmVGb3JtRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZXh0cmEgPSByZW1haW5kZXIgJiYgcmVtYWluZGVyLS0gPyAxIDogMDtcbiAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAuLi5BcnJheTxudW1iZXI+KGJ1Y2tldFNpemUgKyBleHRyYSkuZmlsbCh0aGlzLndhdmVGb3JtRGF0YVtpXSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXROZXh0QnVja2V0TWVhbiA9IChcbiAgICBkYXRhOiBudW1iZXJbXSxcbiAgICBjdXJyZW50QnVja2V0SW5kZXg6IG51bWJlcixcbiAgICBidWNrZXRTaXplOiBudW1iZXJcbiAgKSA9PiB7XG4gICAgY29uc3QgbmV4dEJ1Y2tldFN0YXJ0SW5kZXggPVxuICAgICAgTWF0aC5mbG9vcihjdXJyZW50QnVja2V0SW5kZXggKiBidWNrZXRTaXplKSArIDE7XG4gICAgbGV0IG5leHROZXh0QnVja2V0U3RhcnRJbmRleCA9XG4gICAgICBNYXRoLmZsb29yKChjdXJyZW50QnVja2V0SW5kZXggKyAxKSAqIGJ1Y2tldFNpemUpICsgMTtcbiAgICBuZXh0TmV4dEJ1Y2tldFN0YXJ0SW5kZXggPVxuICAgICAgbmV4dE5leHRCdWNrZXRTdGFydEluZGV4IDwgZGF0YS5sZW5ndGhcbiAgICAgICAgPyBuZXh0TmV4dEJ1Y2tldFN0YXJ0SW5kZXhcbiAgICAgICAgOiBkYXRhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLm1lYW4oXG4gICAgICBkYXRhLnNsaWNlKG5leHRCdWNrZXRTdGFydEluZGV4LCBuZXh0TmV4dEJ1Y2tldFN0YXJ0SW5kZXgpXG4gICAgKTtcbiAgfTtcblxuICBwcml2YXRlIG1lYW4gPSAodmFsdWVzOiBudW1iZXJbXSkgPT5cbiAgICB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbHVlKSA9PiBhY2MgKyB2YWx1ZSwgMCkgLyB2YWx1ZXMubGVuZ3RoO1xuXG4gIHByaXZhdGUgdHJpYW5nbGVBcmVhSGVyb24gPSAoYTogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHMgPSAoYSArIGIgKyBjKSAvIDI7XG4gICAgcmV0dXJuIE1hdGguc3FydChzICogKHMgLSBhKSAqIChzIC0gYikgKiAocyAtIGMpKTtcbiAgfTtcblxuICBwcml2YXRlIHRyaWFuZ2xlQmFzZSA9IChhOiBudW1iZXIsIGI6IG51bWJlcikgPT5cbiAgICBNYXRoLnNxcnQoTWF0aC5wb3coYSwgMikgKyBNYXRoLnBvdyhiLCAyKSk7XG5cbiAgcHJpdmF0ZSBkaXZNb2QgPSAobnVtOiBudW1iZXIsIGRpdmlzb3I6IG51bWJlcikgPT4ge1xuICAgIHJldHVybiBbTWF0aC5mbG9vcihudW0gLyBkaXZpc29yKSwgbnVtICUgZGl2aXNvcl07XG4gIH07XG59XG4iLCI8IS0tZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMtLT5cbjxkaXZcbiAgI2NvbnRhaW5lclxuICBjbGFzcz1cInN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fdHJhY2tcIlxuICBkYXRhLXRlc3RpZD1cIndhdmUtcHJvZ3Jlc3MtYmFyLXRyYWNrXCJcbiAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgKG1vdXNlZG93bik9XCJpc0RyYWdnaW5nID0gdHJ1ZVwiXG4gIChtb3VzZXVwKT1cImlzRHJhZ2dpbmcgPSBmYWxzZVwiXG4gIChtb3VzZWxlYXZlKT1cImlzRHJhZ2dpbmcgPSBmYWxzZVwiXG4gIChtb3VzZW1vdmUpPVwiaXNEcmFnZ2luZyA/IHNlZWsoJGV2ZW50KSA6IG51bGxcIlxuICAoY2xpY2spPVwic2VlaygkZXZlbnQpXCJcbj5cbiAgPCEtLWVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMtLT5cbiAgPGRpdlxuICAgICpuZ0Zvcj1cIlxuICAgICAgbGV0IGRhdGFQb2ludCBvZiByZXNhbXBsZWRXYXZlRm9ybURhdGE7XG4gICAgICBsZXQgaSA9IGluZGV4O1xuICAgICAgdHJhY2tCeTogdHJhY2tCeUluZGV4XG4gICAgXCJcbiAgICBjbGFzcz1cInN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fYW1wbGl0dWRlLWJhclwiXG4gICAgW2NsYXNzLnN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fYW1wbGl0dWRlLWJhci0tYWN0aXZlXT1cIlxuICAgICAgcHJvZ3Jlc3MgPiBpIC8gcmVzYW1wbGVkV2F2ZUZvcm1EYXRhLmxlbmd0aFxuICAgIFwiXG4gICAgW3N0eWxlLi0tc3RyLWNoYXRfX3dhdmUtcHJvZ3Jlc3MtYmFyX19hbXBsaXR1ZGUtYmFyLWhlaWdodF09XCJcbiAgICAgIGRhdGFQb2ludCA/IGRhdGFQb2ludCAqIDEwMCArICclJyA6ICcwJSdcbiAgICBcIlxuICA+PC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fcHJvZ3Jlc3MtaW5kaWNhdG9yXCJcbiAgICBkYXRhLXRlc3RpZD1cIndhdmUtcHJvZ3Jlc3MtYmFyLXByb2dyZXNzLWluZGljYXRvclwiXG4gICAgW25nU3R5bGVdPVwieyAnaW5zZXQtaW5saW5lLXN0YXJ0JzogcHJvZ3Jlc3MgKiAxMDAgKyAnJScgfVwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGluZy92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdm9pY2UtcmVjb3JkaW5nL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRTNEOztHQUVHO0FBTUgsTUFBTSxPQUFPLDhCQUE4QjtJQXVCekMsWUFBb0IsTUFBYyxFQUFVLEtBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQWhCcEU7O1dBRUc7UUFDTSxpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQUtyQywwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFDckMsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ1gsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUd4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQUUwQyxDQUFDO0lBRXhFLFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlC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RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmVzYW1wbGVXYXZlRm9ybSB9IGZyb20gJy4uLy4uL3dhdmUtZm9ybS1zYW1wbGVyJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBjYW4gYmUgdXNlZCB0byB2aXN1YWxpemUgdGhlIHdhdmUgYmFyIG9mIGEgdm9pY2UgcmVjb3JkaW5nXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS12b2ljZS1yZWNvcmRpbmctd2F2ZWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFZvaWNlUmVjb3JkaW5nV2F2ZWJhckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0XG57XG4gIC8qKlxuICAgKiBUaGUgYXVkaW8gZWxlbWVudCB0aGF0IHBsYXlzIHRoZSB2b2ljZSByZWNvcmRpbmdcbiAgICovXG4gIEBJbnB1dCgpIGF1ZGlvRWxlbWVudD86IEhUTUxBdWRpb0VsZW1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgd2F2ZWZvcm0gZGF0YSB0byB2aXN1YWxpemVcbiAgICovXG4gIEBJbnB1dCgpIHdhdmVGb3JtRGF0YTogbnVtYmVyW10gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBvZiB0aGUgdm9pY2UgcmVjb3JkaW5nIGluIHNlY29uZHNcbiAgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyO1xuICByZXNhbXBsZWRXYXZlRm9ybURhdGE6IG51bWJlcltdID0gW107XG4gIHByb2dyZXNzOiBudW1iZXIgPSAwO1xuICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgc2FtcGxlU2l6ZTogbnVtYmVyID0gNDA7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgY29udGFpbmVyPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgaXNWaWV3SW5pdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJTaXplQ2hhbmdlZCgpO1xuICAgIGlmICh0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyU2l6ZUNoYW5nZWQoKTtcbiAgICAgICAgfSkub2JzZXJ2ZSh0aGlzLmNvbnRhaW5lciEubmF0aXZlRWxlbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMud2F2ZUZvcm1EYXRhKSB7XG4gICAgICB0aGlzLnJlc2FtcGxlZFdhdmVGb3JtRGF0YSA9IHJlc2FtcGxlV2F2ZUZvcm0oXG4gICAgICAgIHRoaXMud2F2ZUZvcm1EYXRhLFxuICAgICAgICB0aGlzLnNhbXBsZVNpemVcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmF1ZGlvRWxlbWVudCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmF1ZGlvRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBwcm9ncmVzcyA9XG4gICAgICAgICAgICAodGhpcy5hdWRpb0VsZW1lbnQ/LmN1cnJlbnRUaW1lIHx8IDApIC8gKHRoaXMuZHVyYXRpb24gfHwgMCkgfHwgMDtcbiAgICAgICAgICBpZiAoTWF0aC5hYnMocHJvZ3Jlc3MgLSB0aGlzLnByb2dyZXNzKSA+PSAwLjAyKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gIH1cblxuICBzZWVrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHx8IDA7XG4gICAgY29uc3QgY29udGFpbmVyU3RhcnQgPVxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy54IHx8IDA7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgIGNvbnN0IHByb2dyZXNzID0gKGV2ZW50LnggLSBjb250YWluZXJTdGFydCkgLyBjb250YWluZXJXaWR0aDtcblxuICAgIGlmICghaXNOYU4ocHJvZ3Jlc3MpICYmIHRoaXMuYXVkaW9FbGVtZW50KSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IHRpbWUgPSBkdXJhdGlvbiAqIHByb2dyZXNzO1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQuY3VycmVudFRpbWUgPSB0aW1lO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluZXJTaXplQ2hhbmdlZCgpIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBpZiAoY29udGFpbmVyV2lkdGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYmFyV2lkdGggPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc3RyLWNoYXRfX3ZvaWNlLXJlY29yZGluZy1hbXBsaXR1ZGUtYmFyLXdpZHRoJylcbiAgICAgIC5yZXBsYWNlKCdweCcsICcnKTtcbiAgICBjb25zdCBiYXJHYXAgPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc3RyLWNoYXRfX3ZvaWNlLXJlY29yZGluZy1hbXBsaXR1ZGUtYmFyLWdhcC13aWR0aCcpXG4gICAgICAucmVwbGFjZSgncHgnLCAnJyk7XG4gICAgaWYgKCFpc05hTihiYXJXaWR0aCkgJiYgIWlzTmFOKGJhckdhcCkpIHtcbiAgICAgIGNvbnN0IHNhbXBsZVNpemUgPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gKGJhcldpZHRoICsgYmFyR2FwKSk7XG4gICAgICBpZiAoXG4gICAgICAgIHNhbXBsZVNpemUgIT09IHRoaXMuc2FtcGxlU2l6ZSAmJlxuICAgICAgICAhaXNOYU4oc2FtcGxlU2l6ZSkgJiZcbiAgICAgICAgc2FtcGxlU2l6ZSAhPT0gSW5maW5pdHlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgICAgICAgdGhpcy5yZXNhbXBsZWRXYXZlRm9ybURhdGEgPSByZXNhbXBsZVdhdmVGb3JtKFxuICAgICAgICAgICAgdGhpcy53YXZlRm9ybURhdGEsXG4gICAgICAgICAgICB0aGlzLnNhbXBsZVNpemVcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1lc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cy0tPlxuPGRpdlxuICAjY29udGFpbmVyXG4gIGNsYXNzPVwic3RyLWNoYXRfX3dhdmUtcHJvZ3Jlc3MtYmFyX190cmFja1wiXG4gIGRhdGEtdGVzdGlkPVwid2F2ZS1wcm9ncmVzcy1iYXItdHJhY2tcIlxuICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAobW91c2Vkb3duKT1cImlzRHJhZ2dpbmcgPSB0cnVlXCJcbiAgKG1vdXNldXApPVwiaXNEcmFnZ2luZyA9IGZhbHNlXCJcbiAgKG1vdXNlbGVhdmUpPVwiaXNEcmFnZ2luZyA9IGZhbHNlXCJcbiAgKG1vdXNlbW92ZSk9XCJpc0RyYWdnaW5nID8gc2VlaygkZXZlbnQpIDogbnVsbFwiXG4gIChjbGljayk9XCJzZWVrKCRldmVudClcIlxuPlxuICA8IS0tZXNsaW50LWVuYWJsZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cy0tPlxuICA8ZGl2XG4gICAgKm5nRm9yPVwiXG4gICAgICBsZXQgZGF0YVBvaW50IG9mIHJlc2FtcGxlZFdhdmVGb3JtRGF0YTtcbiAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICB0cmFja0J5OiB0cmFja0J5SW5kZXhcbiAgICBcIlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX3dhdmUtcHJvZ3Jlc3MtYmFyX19hbXBsaXR1ZGUtYmFyXCJcbiAgICBbY2xhc3Muc3RyLWNoYXRfX3dhdmUtcHJvZ3Jlc3MtYmFyX19hbXBsaXR1ZGUtYmFyLS1hY3RpdmVdPVwiXG4gICAgICBwcm9ncmVzcyA+IGkgLyByZXNhbXBsZWRXYXZlRm9ybURhdGEubGVuZ3RoXG4gICAgXCJcbiAgICBbc3R5bGUuLS1zdHItY2hhdF9fd2F2ZS1wcm9ncmVzcy1iYXJfX2FtcGxpdHVkZS1iYXItaGVpZ2h0XT1cIlxuICAgICAgZGF0YVBvaW50ID8gZGF0YVBvaW50ICogMTAwICsgJyUnIDogJzAlJ1xuICAgIFwiXG4gID48L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX3dhdmUtcHJvZ3Jlc3MtYmFyX19wcm9ncmVzcy1pbmRpY2F0b3JcIlxuICAgIGRhdGEtdGVzdGlkPVwid2F2ZS1wcm9ncmVzcy1iYXItcHJvZ3Jlc3MtaW5kaWNhdG9yXCJcbiAgICBbbmdTdHlsZV09XCJ7ICdpbnNldC1pbmxpbmUtc3RhcnQnOiBwcm9ncmVzcyAqIDEwMCArICclJyB9XCJcbiAgPjwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Component, Input, ViewChild, } from '@angular/core';
|
|
2
2
|
import prettybytes from 'pretty-bytes';
|
|
3
|
+
import { formatDuration } from '../format-duration';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "../icon-placeholder/icon-placeholder.component";
|
|
6
|
+
import * as i2 from "../icon/icon-placeholder/icon-placeholder.component";
|
|
6
7
|
import * as i3 from "./voice-recording-wavebar/voice-recording-wavebar.component";
|
|
7
8
|
import * as i4 from "@ngx-translate/core";
|
|
8
9
|
/**
|
|
@@ -66,16 +67,7 @@ export class VoiceRecordingComponent {
|
|
|
66
67
|
this.audioElement.nativeElement.playbackRate = playbackRate;
|
|
67
68
|
}
|
|
68
69
|
getFormattedDuration(duration) {
|
|
69
|
-
|
|
70
|
-
return '00:00';
|
|
71
|
-
const [hours, hoursLeftover] = this.divMod(duration, 3600);
|
|
72
|
-
const [minutes, seconds] = this.divMod(hoursLeftover, 60);
|
|
73
|
-
const roundedSeconds = Math.ceil(seconds);
|
|
74
|
-
const prependHrsZero = hours.toString().length === 1 ? '0' : '';
|
|
75
|
-
const prependMinZero = minutes.toString().length === 1 ? '0' : '';
|
|
76
|
-
const prependSecZero = roundedSeconds.toString().length === 1 ? '0' : '';
|
|
77
|
-
const minSec = `${prependMinZero}${minutes}:${prependSecZero}${roundedSeconds}`;
|
|
78
|
-
return hours ? `${prependHrsZero}${hours}:` + minSec : minSec;
|
|
70
|
+
return formatDuration(duration);
|
|
79
71
|
}
|
|
80
72
|
getFileSize() {
|
|
81
73
|
if (this.attachment?.file_size === undefined ||
|
|
@@ -84,9 +76,6 @@ export class VoiceRecordingComponent {
|
|
|
84
76
|
}
|
|
85
77
|
return prettybytes(Number(this.attachment.file_size || 0));
|
|
86
78
|
}
|
|
87
|
-
divMod(num, divisor) {
|
|
88
|
-
return [Math.floor(num / divisor), num % divisor];
|
|
89
|
-
}
|
|
90
79
|
}
|
|
91
80
|
VoiceRecordingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
92
81
|
VoiceRecordingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: VoiceRecordingComponent, selector: "stream-voice-recording", inputs: { attachment: "attachment" }, viewQueries: [{ propertyName: "audioElement", first: true, predicate: ["audioElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__message-attachment__voice-recording-widget\"\n data-testid=\"voice-recording-widget\"\n [class.str-chat__message-attachment__voice-recording-widget--error]=\"isError\"\n>\n <!-- Empty event handlers to trigger change detection -->\n <audio\n #audioElement\n (play)=\"(null)\"\n (pause)=\"(null)\"\n (ended)=\"(null)\"\n (error)=\"isError = true\"\n (abort)=\"isError = true\"\n >\n <source\n data-testid=\"audio-source\"\n [src]=\"attachment?.asset_url\"\n [type]=\"attachment?.mime_type\"\n />\n </audio>\n <button\n class=\"str-chat__message-attachment-audio-widget--play-button\"\n data-testid=\"play-button\"\n (click)=\"togglePlay()\"\n >\n <stream-icon-placeholder\n [icon]=\"audioElement?.paused ? 'play' : 'pause'\"\n ></stream-icon-placeholder>\n </button>\n <div class=\"str-chat__message-attachment__voice-recording-widget__metadata\">\n <div class=\"str-chat__message-attachment-voice-recording-widget--first-row\">\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__title\"\n data-testid=\"voice-recording-title\"\n [title]=\"attachment?.title\"\n >\n {{ attachment?.title }}\n </div>\n </div>\n\n <ng-container *ngIf=\"isError; else state\">\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__error-message\"\n >\n <stream-icon-placeholder icon=\"error\"></stream-icon-placeholder>\n <span data-testid=\"error-message\">{{\n \"streamChat.Error playing audio\" | translate\n }}</span>\n </div>\n </ng-container>\n <ng-template #state>\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__audio-state\"\n >\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__timer\"\n >\n <span\n *ngIf=\"!!attachment?.duration; else fileSizeTemplate\"\n data-testid=\"duration\"\n >\n {{\n secondsElapsed > 0 || !audioElement.paused\n ? secondsElapsedFormatted\n : durationFormatted\n }}</span\n >\n <ng-template #fileSizeTemplate>\n <span\n class=\"str-chat__message-attachment-file--item-size\"\n data-testid=\"file-size-indicator\"\n >\n {{ fileSize }}\n </span>\n </ng-template>\n </div>\n <stream-voice-recording-wavebar\n *ngIf=\"attachment?.waveform_data && attachment?.duration\"\n [waveFormData]=\"attachment?.waveform_data || []\"\n [duration]=\"attachment?.duration\"\n [audioElement]=\"audioElement\"\n ></stream-voice-recording-wavebar>\n </div>\n </ng-template>\n </div>\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__right-section\"\n >\n <button\n *ngIf=\"!audioElement?.paused; else fileIcon\"\n class=\"str-chat__message_attachment__playback-rate-button\"\n data-testid=\"playback-rate-button\"\n (click)=\"setPlaybackRate()\"\n >\n {{ audioElement?.playbackRate | number : \"1.1-1\" }}x\n </button>\n <ng-template #fileIcon>\n <stream-icon-placeholder\n class=\"str-chat__attachment-type-icon\"\n icon=\"audio-file\"\n ></stream-icon-placeholder>\n </ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon"] }, { kind: "component", type: i3.VoiceRecordingWavebarComponent, selector: "stream-voice-recording-wavebar", inputs: ["audioElement", "waveFormData", "duration"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
|
|
@@ -99,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
99
88
|
type: ViewChild,
|
|
100
89
|
args: ['audioElement']
|
|
101
90
|
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7Ozs7OztBQUV2Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUFhbEMsWUFBb0IsTUFBYyxFQUFVLEtBQXdCO1FBQWhELFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQVJwRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRXRCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBS2QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDdEQsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ2hELElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUMxQixDQUFDO1NBQ0g7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QUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxNQUFNLE1BQU0sR0FBRyxHQUFHLGNBQWMsR0FBRyxPQUFPLElBQUksY0FBYyxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRWhGLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBRyxLQUFLLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNoRSxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUNFLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxLQUFLLFNBQVM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssSUFBSSxFQUNuQztZQUNBLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUFlO1FBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7b0hBcEdVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLHVPQ3ZCcEMsODVHQXdHQTsyRkRqRmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHdCQUF3Qjs2SEFRekIsVUFBVTtzQkFBbEIsS0FBSztnQkFPRSxZQUFZO3NCQURuQixTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBwcmV0dHlieXRlcyBmcm9tICdwcmV0dHktYnl0ZXMnO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gYXR0YWNobWVudCB3aXRoIHR5cGUgYHZvaWNlUmVjb3JkaW5nYC4gVGhlIGNvbXBvbmVudCBhbGxvd3MgcGxheWluZyB0aGUgYXR0YWNobWVudCBpbnNpZGUgdGhlIGJyb3dzZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS12b2ljZS1yZWNvcmRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVGhlIHZvaWNlIHJlY29yZGluZyBhdHRhY2htZW50XG4gICAqL1xuICBASW5wdXQoKSBhdHRhY2htZW50PzogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgZmlsZVNpemU6IHN0cmluZyA9ICcnO1xuICBzZWNvbmRzRWxhcHNlZEZvcm1hdHRlZDogc3RyaW5nO1xuICBkdXJhdGlvbkZvcm1hdHRlZDogc3RyaW5nID0gJyc7XG4gIHNlY29uZHNFbGFwc2VkID0gMDtcbiAgaXNFcnJvciA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhdWRpb0VsZW1lbnQnKVxuICBwcml2YXRlIGF1ZGlvRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEF1ZGlvRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLnNlY29uZHNFbGFwc2VkRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmF0dGFjaG1lbnQpIHtcbiAgICAgIHRoaXMuZmlsZVNpemUgPSB0aGlzLmdldEZpbGVTaXplKCk7XG4gICAgICB0aGlzLmR1cmF0aW9uRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgICAgdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gdGltZXVwZGF0ZSBmaXJlZCBmcmVxdW50bHkgc28gd2Ugb3B0aW1pemUgY2hhbmdlIGRldGVjdGlvbnNcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWNvbmRzRWxhcHNlZCA9IHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5lbmRlZFxuICAgICAgICAgID8gdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvbiB8fCAwXG4gICAgICAgICAgOiBNYXRoLnJvdW5kKHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5jdXJyZW50VGltZSB8fCAwKTtcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kc0VsYXBzZWQgIT09IHNlY29uZHNFbGFwc2VkKSB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWQgPSBzZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRGb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZER1cmF0aW9uKFxuICAgICAgICAgICAgICB0aGlzLnNlY29uZHNFbGFwc2VkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGxheSgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9FbGVtZW50IHx8ICF0aGlzLmF0dGFjaG1lbnQ/LmFzc2V0X3VybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQucGF1c2VkXG4gICAgICAgID8gYXdhaXQgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5KClcbiAgICAgICAgOiB0aGlzLmF1ZGlvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5pc0Vycm9yID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXRQbGF5YmFja1JhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcGxheWJhY2tSYXRlID0gdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnBsYXliYWNrUmF0ZSArIDAuNTtcbiAgICBpZiAocGxheWJhY2tSYXRlID4gMikge1xuICAgICAgcGxheWJhY2tSYXRlID0gMTtcbiAgICB9XG4gICAgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1hdHRlZER1cmF0aW9uKGR1cmF0aW9uPzogbnVtYmVyKSB7XG4gICAgaWYgKGR1cmF0aW9uID09PSB1bmRlZmluZWQgfHwgZHVyYXRpb24gPD0gMCkgcmV0dXJuICcwMDowMCc7XG5cbiAgICBjb25zdCBbaG91cnMsIGhvdXJzTGVmdG92ZXJdID0gdGhpcy5kaXZNb2QoZHVyYXRpb24sIDM2MDApO1xuICAgIGNvbnN0IFttaW51dGVzLCBzZWNvbmRzXSA9IHRoaXMuZGl2TW9kKGhvdXJzTGVmdG92ZXIsIDYwKTtcbiAgICBjb25zdCByb3VuZGVkU2Vjb25kcyA9IE1hdGguY2VpbChzZWNvbmRzKTtcblxuICAgIGNvbnN0IHByZXBlbmRIcnNaZXJvID0gaG91cnMudG9TdHJpbmcoKS5sZW5ndGggPT09IDEgPyAnMCcgOiAnJztcbiAgICBjb25zdCBwcmVwZW5kTWluWmVybyA9IG1pbnV0ZXMudG9TdHJpbmcoKS5sZW5ndGggPT09IDEgPyAnMCcgOiAnJztcbiAgICBjb25zdCBwcmVwZW5kU2VjWmVybyA9IHJvdW5kZWRTZWNvbmRzLnRvU3RyaW5nKCkubGVuZ3RoID09PSAxID8gJzAnIDogJyc7XG4gICAgY29uc3QgbWluU2VjID0gYCR7cHJlcGVuZE1pblplcm99JHttaW51dGVzfToke3ByZXBlbmRTZWNaZXJvfSR7cm91bmRlZFNlY29uZHN9YDtcblxuICAgIHJldHVybiBob3VycyA/IGAke3ByZXBlbmRIcnNaZXJvfSR7aG91cnN9OmAgKyBtaW5TZWMgOiBtaW5TZWM7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVTaXplKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuYXR0YWNobWVudD8uZmlsZV9zaXplID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuYXR0YWNobWVudD8uZmlsZV9zaXplID09PSBudWxsXG4gICAgKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBwcmV0dHlieXRlcyhOdW1iZXIodGhpcy5hdHRhY2htZW50LmZpbGVfc2l6ZSB8fCAwKSk7XG4gIH1cblxuICBwcml2YXRlIGRpdk1vZChudW06IG51bWJlciwgZGl2aXNvcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIFtNYXRoLmZsb29yKG51bSAvIGRpdmlzb3IpLCBudW0gJSBkaXZpc29yXTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBkYXRhLXRlc3RpZD1cInZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldC0tZXJyb3JdPVwiaXNFcnJvclwiXG4+XG4gIDwhLS0gRW1wdHkgZXZlbnQgaGFuZGxlcnMgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIC0tPlxuICA8YXVkaW9cbiAgICAjYXVkaW9FbGVtZW50XG4gICAgKHBsYXkpPVwiKG51bGwpXCJcbiAgICAocGF1c2UpPVwiKG51bGwpXCJcbiAgICAoZW5kZWQpPVwiKG51bGwpXCJcbiAgICAoZXJyb3IpPVwiaXNFcnJvciA9IHRydWVcIlxuICAgIChhYm9ydCk9XCJpc0Vycm9yID0gdHJ1ZVwiXG4gID5cbiAgICA8c291cmNlXG4gICAgICBkYXRhLXRlc3RpZD1cImF1ZGlvLXNvdXJjZVwiXG4gICAgICBbc3JjXT1cImF0dGFjaG1lbnQ/LmFzc2V0X3VybFwiXG4gICAgICBbdHlwZV09XCJhdHRhY2htZW50Py5taW1lX3R5cGVcIlxuICAgIC8+XG4gIDwvYXVkaW8+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnQtYXVkaW8td2lkZ2V0LS1wbGF5LWJ1dHRvblwiXG4gICAgZGF0YS10ZXN0aWQ9XCJwbGF5LWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVBsYXkoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgIFtpY29uXT1cImF1ZGlvRWxlbWVudD8ucGF1c2VkID8gJ3BsYXknIDogJ3BhdXNlJ1wiXG4gICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fbWV0YWRhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudC12b2ljZS1yZWNvcmRpbmctd2lkZ2V0LS1maXJzdC1yb3dcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X190aXRsZVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwidm9pY2UtcmVjb3JkaW5nLXRpdGxlXCJcbiAgICAgICAgW3RpdGxlXT1cImF0dGFjaG1lbnQ/LnRpdGxlXCJcbiAgICAgID5cbiAgICAgICAge3sgYXR0YWNobWVudD8udGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRXJyb3I7IGVsc2Ugc3RhdGVcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19lcnJvci1tZXNzYWdlXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJlcnJvclwiPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiZXJyb3ItbWVzc2FnZVwiPnt7XG4gICAgICAgICAgXCJzdHJlYW1DaGF0LkVycm9yIHBsYXlpbmcgYXVkaW9cIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc3RhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fYXVkaW8tc3RhdGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X190aW1lclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhIWF0dGFjaG1lbnQ/LmR1cmF0aW9uOyBlbHNlIGZpbGVTaXplVGVtcGxhdGVcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJkdXJhdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgc2Vjb25kc0VsYXBzZWQgPiAwIHx8ICFhdWRpb0VsZW1lbnQucGF1c2VkXG4gICAgICAgICAgICAgICAgPyBzZWNvbmRzRWxhcHNlZEZvcm1hdHRlZFxuICAgICAgICAgICAgICAgIDogZHVyYXRpb25Gb3JtYXR0ZWRcbiAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsZVNpemVUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudC1maWxlLS1pdGVtLXNpemVcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtc2l6ZS1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmaWxlU2l6ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3RyZWFtLXZvaWNlLXJlY29yZGluZy13YXZlYmFyXG4gICAgICAgICAgKm5nSWY9XCJhdHRhY2htZW50Py53YXZlZm9ybV9kYXRhICYmIGF0dGFjaG1lbnQ/LmR1cmF0aW9uXCJcbiAgICAgICAgICBbd2F2ZUZvcm1EYXRhXT1cImF0dGFjaG1lbnQ/LndhdmVmb3JtX2RhdGEgfHwgW11cIlxuICAgICAgICAgIFtkdXJhdGlvbl09XCJhdHRhY2htZW50Py5kdXJhdGlvblwiXG4gICAgICAgICAgW2F1ZGlvRWxlbWVudF09XCJhdWRpb0VsZW1lbnRcIlxuICAgICAgICA+PC9zdHJlYW0tdm9pY2UtcmVjb3JkaW5nLXdhdmViYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fcmlnaHQtc2VjdGlvblwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIiFhdWRpb0VsZW1lbnQ/LnBhdXNlZDsgZWxzZSBmaWxlSWNvblwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlX2F0dGFjaG1lbnRfX3BsYXliYWNrLXJhdGUtYnV0dG9uXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwicGxheWJhY2stcmF0ZS1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNldFBsYXliYWNrUmF0ZSgpXCJcbiAgICA+XG4gICAgICB7eyBhdWRpb0VsZW1lbnQ/LnBsYXliYWNrUmF0ZSB8IG51bWJlciA6IFwiMS4xLTFcIiB9fXhcbiAgICA8L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgI2ZpbGVJY29uPlxuICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F0dGFjaG1lbnQtdHlwZS1pY29uXCJcbiAgICAgICAgaWNvbj1cImF1ZGlvLWZpbGVcIlxuICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFFcEQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sdUJBQXVCO0lBYWxDLFlBQW9CLE1BQWMsRUFBVSxLQUF3QjtRQUFoRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFScEUsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUV0QixzQkFBaUIsR0FBVyxFQUFFLENBQUM7UUFDL0IsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUtkLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ3RELElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUNo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QUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBwcmV0dHlieXRlcyBmcm9tICdwcmV0dHktYnl0ZXMnO1xuaW1wb3J0IHsgZm9ybWF0RHVyYXRpb24gfSBmcm9tICcuLi9mb3JtYXQtZHVyYXRpb24nO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gYXR0YWNobWVudCB3aXRoIHR5cGUgYHZvaWNlUmVjb3JkaW5nYC4gVGhlIGNvbXBvbmVudCBhbGxvd3MgcGxheWluZyB0aGUgYXR0YWNobWVudCBpbnNpZGUgdGhlIGJyb3dzZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS12b2ljZS1yZWNvcmRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICAvKipcbiAgICogVGhlIHZvaWNlIHJlY29yZGluZyBhdHRhY2htZW50XG4gICAqL1xuICBASW5wdXQoKSBhdHRhY2htZW50PzogQXR0YWNobWVudDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgZmlsZVNpemU6IHN0cmluZyA9ICcnO1xuICBzZWNvbmRzRWxhcHNlZEZvcm1hdHRlZDogc3RyaW5nO1xuICBkdXJhdGlvbkZvcm1hdHRlZDogc3RyaW5nID0gJyc7XG4gIHNlY29uZHNFbGFwc2VkID0gMDtcbiAgaXNFcnJvciA9IGZhbHNlO1xuICBAVmlld0NoaWxkKCdhdWRpb0VsZW1lbnQnKVxuICBwcml2YXRlIGF1ZGlvRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEF1ZGlvRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLnNlY29uZHNFbGFwc2VkRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmF0dGFjaG1lbnQpIHtcbiAgICAgIHRoaXMuZmlsZVNpemUgPSB0aGlzLmdldEZpbGVTaXplKCk7XG4gICAgICB0aGlzLmR1cmF0aW9uRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgICAgdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gdGltZXVwZGF0ZSBmaXJlZCBmcmVxdW50bHkgc28gd2Ugb3B0aW1pemUgY2hhbmdlIGRldGVjdGlvbnNcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWNvbmRzRWxhcHNlZCA9IHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5lbmRlZFxuICAgICAgICAgID8gdGhpcy5hdHRhY2htZW50Py5kdXJhdGlvbiB8fCAwXG4gICAgICAgICAgOiBNYXRoLnJvdW5kKHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50Py5jdXJyZW50VGltZSB8fCAwKTtcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kc0VsYXBzZWQgIT09IHNlY29uZHNFbGFwc2VkKSB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWQgPSBzZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWRGb3JtYXR0ZWQgPSB0aGlzLmdldEZvcm1hdHRlZER1cmF0aW9uKFxuICAgICAgICAgICAgICB0aGlzLnNlY29uZHNFbGFwc2VkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGxheSgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9FbGVtZW50IHx8ICF0aGlzLmF0dGFjaG1lbnQ/LmFzc2V0X3VybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQucGF1c2VkXG4gICAgICAgID8gYXdhaXQgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5KClcbiAgICAgICAgOiB0aGlzLmF1ZGlvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5pc0Vycm9yID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXRQbGF5YmFja1JhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcGxheWJhY2tSYXRlID0gdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnBsYXliYWNrUmF0ZSArIDAuNTtcbiAgICBpZiAocGxheWJhY2tSYXRlID4gMikge1xuICAgICAgcGxheWJhY2tSYXRlID0gMTtcbiAgICB9XG4gICAgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1hdHRlZER1cmF0aW9uKGR1cmF0aW9uPzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGZvcm1hdER1cmF0aW9uKGR1cmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZVNpemUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hdHRhY2htZW50Py5maWxlX3NpemUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5hdHRhY2htZW50Py5maWxlX3NpemUgPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHByZXR0eWJ5dGVzKE51bWJlcih0aGlzLmF0dGFjaG1lbnQuZmlsZV9zaXplIHx8IDApKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBkYXRhLXRlc3RpZD1cInZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldC0tZXJyb3JdPVwiaXNFcnJvclwiXG4+XG4gIDwhLS0gRW1wdHkgZXZlbnQgaGFuZGxlcnMgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIC0tPlxuICA8YXVkaW9cbiAgICAjYXVkaW9FbGVtZW50XG4gICAgKHBsYXkpPVwiKG51bGwpXCJcbiAgICAocGF1c2UpPVwiKG51bGwpXCJcbiAgICAoZW5kZWQpPVwiKG51bGwpXCJcbiAgICAoZXJyb3IpPVwiaXNFcnJvciA9IHRydWVcIlxuICAgIChhYm9ydCk9XCJpc0Vycm9yID0gdHJ1ZVwiXG4gID5cbiAgICA8c291cmNlXG4gICAgICBkYXRhLXRlc3RpZD1cImF1ZGlvLXNvdXJjZVwiXG4gICAgICBbc3JjXT1cImF0dGFjaG1lbnQ/LmFzc2V0X3VybFwiXG4gICAgICBbdHlwZV09XCJhdHRhY2htZW50Py5taW1lX3R5cGVcIlxuICAgIC8+XG4gIDwvYXVkaW8+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnQtYXVkaW8td2lkZ2V0LS1wbGF5LWJ1dHRvblwiXG4gICAgZGF0YS10ZXN0aWQ9XCJwbGF5LWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVBsYXkoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgIFtpY29uXT1cImF1ZGlvRWxlbWVudD8ucGF1c2VkID8gJ3BsYXknIDogJ3BhdXNlJ1wiXG4gICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gIDwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fbWV0YWRhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudC12b2ljZS1yZWNvcmRpbmctd2lkZ2V0LS1maXJzdC1yb3dcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X190aXRsZVwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwidm9pY2UtcmVjb3JkaW5nLXRpdGxlXCJcbiAgICAgICAgW3RpdGxlXT1cImF0dGFjaG1lbnQ/LnRpdGxlXCJcbiAgICAgID5cbiAgICAgICAge3sgYXR0YWNobWVudD8udGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRXJyb3I7IGVsc2Ugc3RhdGVcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19lcnJvci1tZXNzYWdlXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJlcnJvclwiPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiZXJyb3ItbWVzc2FnZVwiPnt7XG4gICAgICAgICAgXCJzdHJlYW1DaGF0LkVycm9yIHBsYXlpbmcgYXVkaW9cIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc3RhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fYXVkaW8tc3RhdGVcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X190aW1lclwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhIWF0dGFjaG1lbnQ/LmR1cmF0aW9uOyBlbHNlIGZpbGVTaXplVGVtcGxhdGVcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJkdXJhdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgc2Vjb25kc0VsYXBzZWQgPiAwIHx8ICFhdWRpb0VsZW1lbnQucGF1c2VkXG4gICAgICAgICAgICAgICAgPyBzZWNvbmRzRWxhcHNlZEZvcm1hdHRlZFxuICAgICAgICAgICAgICAgIDogZHVyYXRpb25Gb3JtYXR0ZWRcbiAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZmlsZVNpemVUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudC1maWxlLS1pdGVtLXNpemVcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtc2l6ZS1pbmRpY2F0b3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBmaWxlU2l6ZSB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3RyZWFtLXZvaWNlLXJlY29yZGluZy13YXZlYmFyXG4gICAgICAgICAgKm5nSWY9XCJhdHRhY2htZW50Py53YXZlZm9ybV9kYXRhICYmIGF0dGFjaG1lbnQ/LmR1cmF0aW9uXCJcbiAgICAgICAgICBbd2F2ZUZvcm1EYXRhXT1cImF0dGFjaG1lbnQ/LndhdmVmb3JtX2RhdGEgfHwgW11cIlxuICAgICAgICAgIFtkdXJhdGlvbl09XCJhdHRhY2htZW50Py5kdXJhdGlvblwiXG4gICAgICAgICAgW2F1ZGlvRWxlbWVudF09XCJhdWRpb0VsZW1lbnRcIlxuICAgICAgICA+PC9zdHJlYW0tdm9pY2UtcmVjb3JkaW5nLXdhdmViYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fcmlnaHQtc2VjdGlvblwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cIiFhdWRpb0VsZW1lbnQ/LnBhdXNlZDsgZWxzZSBmaWxlSWNvblwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlX2F0dGFjaG1lbnRfX3BsYXliYWNrLXJhdGUtYnV0dG9uXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwicGxheWJhY2stcmF0ZS1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNldFBsYXliYWNrUmF0ZSgpXCJcbiAgICA+XG4gICAgICB7eyBhdWRpb0VsZW1lbnQ/LnBsYXliYWNrUmF0ZSB8IG51bWJlciA6IFwiMS4xLTFcIiB9fXhcbiAgICA8L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgI2ZpbGVJY29uPlxuICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F0dGFjaG1lbnQtdHlwZS1pY29uXCJcbiAgICAgICAgaWNvbj1cImF1ZGlvLWZpbGVcIlxuICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { VoiceRecordingComponent } from './voice-recording.component';
|
|
4
|
+
import { VoiceRecordingWavebarComponent } from './voice-recording-wavebar/voice-recording-wavebar.component';
|
|
5
|
+
import { IconModule } from '../icon/icon.module';
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class VoiceRecordingModule {
|
|
9
|
+
}
|
|
10
|
+
VoiceRecordingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
11
|
+
VoiceRecordingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, declarations: [VoiceRecordingComponent, VoiceRecordingWavebarComponent], imports: [CommonModule, IconModule, TranslateModule], exports: [VoiceRecordingComponent, VoiceRecordingWavebarComponent] });
|
|
12
|
+
VoiceRecordingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, imports: [CommonModule, IconModule, TranslateModule] });
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, decorators: [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [VoiceRecordingComponent, VoiceRecordingWavebarComponent],
|
|
17
|
+
imports: [CommonModule, IconModule, TranslateModule],
|
|
18
|
+
exports: [VoiceRecordingComponent, VoiceRecordingWavebarComponent],
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU90RCxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBSmhCLHVCQUF1QixFQUFFLDhCQUE4QixhQUM1RCxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsYUFDekMsdUJBQXVCLEVBQUUsOEJBQThCO2tIQUV0RCxvQkFBb0IsWUFIckIsWUFBWSxFQUFFLFVBQVUsRUFBRSxlQUFlOzJGQUd4QyxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUM7b0JBQ3ZFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO29CQUNwRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSw4QkFBOEIsQ0FBQztpQkFDbkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZvaWNlUmVjb3JkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IFZvaWNlUmVjb3JkaW5nV2F2ZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIvdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtWb2ljZVJlY29yZGluZ0NvbXBvbmVudCwgVm9pY2VSZWNvcmRpbmdXYXZlYmFyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgZXhwb3J0czogW1ZvaWNlUmVjb3JkaW5nQ29tcG9uZW50LCBWb2ljZVJlY29yZGluZ1dhdmViYXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGluZ01vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export const resampleWaveForm = (waveFormData, sampleSize) => {
|
|
2
|
+
return waveFormData.length > sampleSize
|
|
3
|
+
? downsample(waveFormData, sampleSize)
|
|
4
|
+
: upsample(waveFormData, sampleSize);
|
|
5
|
+
};
|
|
6
|
+
const downsample = (waveFormData, sampleSize) => {
|
|
7
|
+
if (waveFormData.length <= sampleSize) {
|
|
8
|
+
return waveFormData;
|
|
9
|
+
}
|
|
10
|
+
if (sampleSize === 1)
|
|
11
|
+
return [mean(waveFormData)];
|
|
12
|
+
const result = [];
|
|
13
|
+
// bucket size adjusted due to the fact that the first and the last item in the original data array is kept in target output
|
|
14
|
+
const bucketSize = (waveFormData.length - 2) / (sampleSize - 2);
|
|
15
|
+
let lastSelectedPointIndex = 0;
|
|
16
|
+
result.push(waveFormData[lastSelectedPointIndex]); // Always add the first point
|
|
17
|
+
let maxAreaPoint, maxArea, triangleArea;
|
|
18
|
+
for (let bucketIndex = 1; bucketIndex < sampleSize - 1; bucketIndex++) {
|
|
19
|
+
const previousBucketRefPoint = waveFormData[lastSelectedPointIndex];
|
|
20
|
+
const nextBucketMean = getNextBucketMean(waveFormData, bucketIndex, bucketSize);
|
|
21
|
+
const currentBucketStartIndex = Math.floor((bucketIndex - 1) * bucketSize) + 1;
|
|
22
|
+
const nextBucketStartIndex = Math.floor(bucketIndex * bucketSize) + 1;
|
|
23
|
+
const countUnitsBetweenAtoC = 1 + nextBucketStartIndex - currentBucketStartIndex;
|
|
24
|
+
maxArea = triangleArea = -1;
|
|
25
|
+
for (let currentPointIndex = currentBucketStartIndex; currentPointIndex < nextBucketStartIndex; currentPointIndex++) {
|
|
26
|
+
const countUnitsBetweenAtoB = Math.abs(currentPointIndex - currentBucketStartIndex) + 1;
|
|
27
|
+
const countUnitsBetweenBtoC = countUnitsBetweenAtoC - countUnitsBetweenAtoB;
|
|
28
|
+
const currentPointValue = waveFormData[currentPointIndex];
|
|
29
|
+
triangleArea = triangleAreaHeron(triangleBase(Math.abs(previousBucketRefPoint - currentPointValue), countUnitsBetweenAtoB), triangleBase(Math.abs(currentPointValue - nextBucketMean), countUnitsBetweenBtoC), triangleBase(Math.abs(previousBucketRefPoint - nextBucketMean), countUnitsBetweenAtoC));
|
|
30
|
+
if (triangleArea > maxArea) {
|
|
31
|
+
maxArea = triangleArea;
|
|
32
|
+
maxAreaPoint = waveFormData[currentPointIndex];
|
|
33
|
+
lastSelectedPointIndex = currentPointIndex;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (typeof maxAreaPoint !== 'undefined')
|
|
37
|
+
result.push(maxAreaPoint);
|
|
38
|
+
}
|
|
39
|
+
result.push(waveFormData[waveFormData.length - 1]); // Always add the last point
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
const upsample = (waveFormData, sampleSize) => {
|
|
43
|
+
if (sampleSize === waveFormData.length)
|
|
44
|
+
return waveFormData;
|
|
45
|
+
// eslint-disable-next-line prefer-const
|
|
46
|
+
let [bucketSize, remainder] = divMod(sampleSize, waveFormData.length);
|
|
47
|
+
const result = [];
|
|
48
|
+
for (let i = 0; i < waveFormData.length; i++) {
|
|
49
|
+
const extra = remainder && remainder-- ? 1 : 0;
|
|
50
|
+
result.push(...Array(bucketSize + extra).fill(waveFormData[i]));
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
};
|
|
54
|
+
const getNextBucketMean = (data, currentBucketIndex, bucketSize) => {
|
|
55
|
+
const nextBucketStartIndex = Math.floor(currentBucketIndex * bucketSize) + 1;
|
|
56
|
+
let nextNextBucketStartIndex = Math.floor((currentBucketIndex + 1) * bucketSize) + 1;
|
|
57
|
+
nextNextBucketStartIndex =
|
|
58
|
+
nextNextBucketStartIndex < data.length
|
|
59
|
+
? nextNextBucketStartIndex
|
|
60
|
+
: data.length;
|
|
61
|
+
return mean(data.slice(nextBucketStartIndex, nextNextBucketStartIndex));
|
|
62
|
+
};
|
|
63
|
+
const mean = (values) => values.reduce((acc, value) => acc + value, 0) / values.length;
|
|
64
|
+
const triangleAreaHeron = (a, b, c) => {
|
|
65
|
+
const s = (a + b + c) / 2;
|
|
66
|
+
return Math.sqrt(s * (s - a) * (s - b) * (s - c));
|
|
67
|
+
};
|
|
68
|
+
const triangleBase = (a, b) => Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
|
|
69
|
+
const divMod = (num, divisor) => {
|
|
70
|
+
return [Math.floor(num / divisor), num % divisor];
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2ZS1mb3JtLXNhbXBsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvd2F2ZS1mb3JtLXNhbXBsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsWUFBc0IsRUFDdEIsVUFBa0IsRUFDbEIsRUFBRTtJQUNGLE9BQU8sWUFBWSxDQUFDLE1BQU0sR0FBRyxVQUFVO1FBQ3JDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztRQUN0QyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFlBQXNCLEVBQUUsVUFBa0IsRUFBRSxFQUFFO0lBQ2hFLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUU7UUFDckMsT0FBTyxZQUFZLENBQUM7S0FDckI7SUFFRCxJQUFJLFVBQVUsS0FBSyxDQUFDO1FBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1Qiw0SEFBNEg7SUFDNUgsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUNoRixJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDO0lBRXhDLEtBQUssSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLFdBQVcsR0FBRyxVQUFV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R0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsRUFBRTtJQUM5QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCByZXNhbXBsZVdhdmVGb3JtID0gKFxuICB3YXZlRm9ybURhdGE6IG51bWJlcltdLFxuICBzYW1wbGVTaXplOiBudW1iZXJcbikgPT4ge1xuICByZXR1cm4gd2F2ZUZvcm1EYXRhLmxlbmd0aCA+IHNhbXBsZVNpemVcbiAgICA/IGRvd25zYW1wbGUod2F2ZUZvcm1EYXRhLCBzYW1wbGVTaXplKVxuICAgIDogdXBzYW1wbGUod2F2ZUZvcm1EYXRhLCBzYW1wbGVTaXplKTtcbn07XG5cbmNvbnN0IGRvd25zYW1wbGUgPSAod2F2ZUZvcm1EYXRhOiBudW1iZXJbXSwgc2FtcGxlU2l6ZTogbnVtYmVyKSA9PiB7XG4gIGlmICh3YXZlRm9ybURhdGEubGVuZ3RoIDw9IHNhbXBsZVNpemUpIHtcbiAgICByZXR1cm4gd2F2ZUZvcm1EYXRhO1xuICB9XG5cbiAgaWYgKHNhbXBsZVNpemUgPT09IDEpIHJldHVybiBbbWVhbih3YXZlRm9ybURhdGEpXTtcblxuICBjb25zdCByZXN1bHQ6IG51bWJlcltdID0gW107XG4gIC8vIGJ1Y2tldCBzaXplIGFkanVzdGVkIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgaXRlbSBpbiB0aGUgb3JpZ2luYWwgZGF0YSBhcnJheSBpcyBrZXB0IGluIHRhcmdldCBvdXRwdXRcbiAgY29uc3QgYnVja2V0U2l6ZSA9ICh3YXZlRm9ybURhdGEubGVuZ3RoIC0gMikgLyAoc2FtcGxlU2l6ZSAtIDIpO1xuICBsZXQgbGFzdFNlbGVjdGVkUG9pbnRJbmRleCA9IDA7XG4gIHJlc3VsdC5wdXNoKHdhdmVGb3JtRGF0YVtsYXN0U2VsZWN0ZWRQb2ludEluZGV4XSk7IC8vIEFsd2F5cyBhZGQgdGhlIGZpcnN0IHBvaW50XG4gIGxldCBtYXhBcmVhUG9pbnQsIG1heEFyZWEsIHRyaWFuZ2xlQXJlYTtcblxuICBmb3IgKGxldCBidWNrZXRJbmRleCA9IDE7IGJ1Y2tldEluZGV4IDwgc2FtcGxlU2l6ZSAtIDE7IGJ1Y2tldEluZGV4KyspIHtcbiAgICBjb25zdCBwcmV2aW91c0J1Y2tldFJlZlBvaW50ID0gd2F2ZUZvcm1EYXRhW2xhc3RTZWxlY3RlZFBvaW50SW5kZXhdO1xuICAgIGNvbnN0IG5leHRCdWNrZXRNZWFuID0gZ2V0TmV4dEJ1Y2tldE1lYW4oXG4gICAgICB3YXZlRm9ybURhdGEsXG4gICAgICBidWNrZXRJbmRleCxcbiAgICAgIGJ1Y2tldFNpemVcbiAgICApO1xuXG4gICAgY29uc3QgY3VycmVudEJ1Y2tldFN0YXJ0SW5kZXggPVxuICAgICAgTWF0aC5mbG9vcigoYnVja2V0SW5kZXggLSAxKSAqIGJ1Y2tldFNpemUpICsgMTtcbiAgICBjb25zdCBuZXh0QnVja2V0U3RhcnRJbmRleCA9IE1hdGguZmxvb3IoYnVja2V0SW5kZXggKiBidWNrZXRTaXplKSArIDE7XG4gICAgY29uc3QgY291bnRVbml0c0JldHdlZW5BdG9DID1cbiAgICAgIDEgKyBuZXh0QnVja2V0U3RhcnRJbmRleCAtIGN1cnJlbnRCdWNrZXRTdGFydEluZGV4O1xuXG4gICAgbWF4QXJlYSA9IHRyaWFuZ2xlQXJlYSA9IC0xO1xuXG4gICAgZm9yIChcbiAgICAgIGxldCBjdXJyZW50UG9pbnRJbmRleCA9IGN1cnJlbnRCdWNrZXRTdGFydEluZGV4O1xuICAgICAgY3VycmVudFBvaW50SW5kZXggPCBuZXh0QnVja2V0U3RhcnRJbmRleDtcbiAgICAgIGN1cnJlbnRQb2ludEluZGV4KytcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvdW50VW5pdHNCZXR3ZWVuQXRvQiA9XG4gICAgICAgIE1hdGguYWJzKGN1cnJlbnRQb2ludEluZGV4IC0gY3VycmVudEJ1Y2tldFN0YXJ0SW5kZXgpICsgMTtcbiAgICAgIGNvbnN0IGNvdW50VW5pdHNCZXR3ZWVuQnRvQyA9XG4gICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQXRvQyAtIGNvdW50VW5pdHNCZXR3ZWVuQXRvQjtcbiAgICAgIGNvbnN0IGN1cnJlbnRQb2ludFZhbHVlID0gd2F2ZUZvcm1EYXRhW2N1cnJlbnRQb2ludEluZGV4XTtcblxuICAgICAgdHJpYW5nbGVBcmVhID0gdHJpYW5nbGVBcmVhSGVyb24oXG4gICAgICAgIHRyaWFuZ2xlQmFzZShcbiAgICAgICAgICBNYXRoLmFicyhwcmV2aW91c0J1Y2tldFJlZlBvaW50IC0gY3VycmVudFBvaW50VmFsdWUpLFxuICAgICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQXRvQlxuICAgICAgICApLFxuICAgICAgICB0cmlhbmdsZUJhc2UoXG4gICAgICAgICAgTWF0aC5hYnMoY3VycmVudFBvaW50VmFsdWUgLSBuZXh0QnVja2V0TWVhbiksXG4gICAgICAgICAgY291bnRVbml0c0JldHdlZW5CdG9DXG4gICAgICAgICksXG4gICAgICAgIHRyaWFuZ2xlQmFzZShcbiAgICAgICAgICBNYXRoLmFicyhwcmV2aW91c0J1Y2tldFJlZlBvaW50IC0gbmV4dEJ1Y2tldE1lYW4pLFxuICAgICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQXRvQ1xuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICBpZiAodHJpYW5nbGVBcmVhID4gbWF4QXJlYSkge1xuICAgICAgICBtYXhBcmVhID0gdHJpYW5nbGVBcmVhO1xuICAgICAgICBtYXhBcmVhUG9pbnQgPSB3YXZlRm9ybURhdGFbY3VycmVudFBvaW50SW5kZXhdO1xuICAgICAgICBsYXN0U2VsZWN0ZWRQb2ludEluZGV4ID0gY3VycmVudFBvaW50SW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtYXhBcmVhUG9pbnQgIT09ICd1bmRlZmluZWQnKSByZXN1bHQucHVzaChtYXhBcmVhUG9pbnQpO1xuICB9XG5cbiAgcmVzdWx0LnB1c2god2F2ZUZvcm1EYXRhW3dhdmVGb3JtRGF0YS5sZW5ndGggLSAxXSk7IC8vIEFsd2F5cyBhZGQgdGhlIGxhc3QgcG9pbnRcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdXBzYW1wbGUgPSAod2F2ZUZvcm1EYXRhOiBudW1iZXJbXSwgc2FtcGxlU2l6ZTogbnVtYmVyKSA9PiB7XG4gIGlmIChzYW1wbGVTaXplID09PSB3YXZlRm9ybURhdGEubGVuZ3RoKSByZXR1cm4gd2F2ZUZvcm1EYXRhO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgcHJlZmVyLWNvbnN0XG4gIGxldCBbYnVja2V0U2l6ZSwgcmVtYWluZGVyXSA9IGRpdk1vZChzYW1wbGVTaXplLCB3YXZlRm9ybURhdGEubGVuZ3RoKTtcbiAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgd2F2ZUZvcm1EYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZXh0cmEgPSByZW1haW5kZXIgJiYgcmVtYWluZGVyLS0gPyAxIDogMDtcbiAgICByZXN1bHQucHVzaCguLi5BcnJheTxudW1iZXI+KGJ1Y2tldFNpemUgKyBleHRyYSkuZmlsbCh3YXZlRm9ybURhdGFbaV0pKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgZ2V0TmV4dEJ1Y2tldE1lYW4gPSAoXG4gIGRhdGE6IG51bWJlcltdLFxuICBjdXJyZW50QnVja2V0SW5kZXg6IG51bWJlcixcbiAgYnVja2V0U2l6ZTogbnVtYmVyXG4pID0+IHtcbiAgY29uc3QgbmV4dEJ1Y2tldFN0YXJ0SW5kZXggPSBNYXRoLmZsb29yKGN1cnJlbnRCdWNrZXRJbmRleCAqIGJ1Y2tldFNpemUpICsgMTtcbiAgbGV0IG5leHROZXh0QnVja2V0U3RhcnRJbmRleCA9XG4gICAgTWF0aC5mbG9vcigoY3VycmVudEJ1Y2tldEluZGV4ICsgMSkgKiBidWNrZXRTaXplKSArIDE7XG4gIG5leHROZXh0QnVja2V0U3RhcnRJbmRleCA9XG4gICAgbmV4dE5leHRCdWNrZXRTdGFydEluZGV4IDwgZGF0YS5sZW5ndGhcbiAgICAgID8gbmV4dE5leHRCdWNrZXRTdGFydEluZGV4XG4gICAgICA6IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiBtZWFuKGRhdGEuc2xpY2UobmV4dEJ1Y2tldFN0YXJ0SW5kZXgsIG5leHROZXh0QnVja2V0U3RhcnRJbmRleCkpO1xufTtcblxuY29uc3QgbWVhbiA9ICh2YWx1ZXM6IG51bWJlcltdKSA9PlxuICB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbHVlKSA9PiBhY2MgKyB2YWx1ZSwgMCkgLyB2YWx1ZXMubGVuZ3RoO1xuXG5jb25zdCB0cmlhbmdsZUFyZWFIZXJvbiA9IChhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHMgPSAoYSArIGIgKyBjKSAvIDI7XG4gIHJldHVybiBNYXRoLnNxcnQocyAqIChzIC0gYSkgKiAocyAtIGIpICogKHMgLSBjKSk7XG59O1xuXG5jb25zdCB0cmlhbmdsZUJhc2UgPSAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+XG4gIE1hdGguc3FydChNYXRoLnBvdyhhLCAyKSArIE1hdGgucG93KGIsIDIpKTtcblxuY29uc3QgZGl2TW9kID0gKG51bTogbnVtYmVyLCBkaXZpc29yOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIFtNYXRoLmZsb29yKG51bSAvIGRpdmlzb3IpLCBudW0gJSBkaXZpc29yXTtcbn07XG4iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -10,9 +10,9 @@ export * from './lib/stream-i18n.service';
|
|
|
10
10
|
export * from './lib/avatar/avatar.component';
|
|
11
11
|
export * from './lib/avatar-placeholder/avatar-placeholder.component';
|
|
12
12
|
export * from './lib/icon/icon.component';
|
|
13
|
-
export * from './lib/icon-placeholder/icon-placeholder.component';
|
|
14
|
-
export * from './lib/loading-indicator/loading-indicator.component';
|
|
15
|
-
export * from './lib/loading-indicator-placeholder/loading-indicator-placeholder.component';
|
|
13
|
+
export * from './lib/icon/icon-placeholder/icon-placeholder.component';
|
|
14
|
+
export * from './lib/icon/loading-indicator/loading-indicator.component';
|
|
15
|
+
export * from './lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component';
|
|
16
16
|
export * from './lib/message-actions-box/message-actions-box.component';
|
|
17
17
|
export * from './lib/channel/channel.component';
|
|
18
18
|
export * from './lib/channel-header/channel-header.component';
|
|
@@ -42,7 +42,7 @@ export * from './lib/read-by';
|
|
|
42
42
|
export * from './lib/get-message-translation';
|
|
43
43
|
export * from './lib/get-channel-display-text';
|
|
44
44
|
export * from './lib/is-image-attachment';
|
|
45
|
-
export * from './lib/
|
|
45
|
+
export * from './lib/file-utils';
|
|
46
46
|
export * from './lib/message-preview';
|
|
47
47
|
export * from './lib/notification.service';
|
|
48
48
|
export * from './lib/transliteration.service';
|
|
@@ -66,4 +66,17 @@ export * from './lib/virtualized-list.service';
|
|
|
66
66
|
export * from './lib/virtualized-message-list.service';
|
|
67
67
|
export * from './lib/user-list/user-list.component';
|
|
68
68
|
export * from './lib/paginated-list/paginated-list.component';
|
|
69
|
-
|
|
69
|
+
export * from './lib/is-safari';
|
|
70
|
+
export * from './lib/voice-recorder/voice-recorder.module';
|
|
71
|
+
export * from './lib/voice-recorder/amplitude-recorder.service';
|
|
72
|
+
export * from './lib/voice-recorder/audio-recorder.service';
|
|
73
|
+
export * from './lib/voice-recorder/media-recorder';
|
|
74
|
+
export * from './lib/voice-recorder/transcoder.service';
|
|
75
|
+
export * from './lib/voice-recorder/voice-recorder.component';
|
|
76
|
+
export * from './lib/voice-recording/voice-recording.module';
|
|
77
|
+
export * from './lib/icon/icon.module';
|
|
78
|
+
export * from './lib/voice-recorder//voice-recorder-wavebar/voice-recorder-wavebar.component';
|
|
79
|
+
export * from './lib/format-duration';
|
|
80
|
+
export * from './lib/message-input/voice-recorder.service';
|
|
81
|
+
export * from './lib/voice-recorder/mp3-transcoder';
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtFQUErRSxDQUFDO0FBQzlGLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzdHJlYW0tY2hhdC1hbmd1bGFyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1jbGllbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFubmVsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGhlbWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdHRhY2htZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWkxOG4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXItcGxhY2Vob2xkZXIvYXZhdGFyLXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb24vaWNvbi1wbGFjZWhvbGRlci9pY29uLXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2xvYWRpbmctaW5kaWNhdG9yL2xvYWRpbmctaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2xvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyL2xvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwvY2hhbm5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbm5lbC1oZWFkZXIvY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtcHJldmlldy9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtbGlzdC9jaGFubmVsLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFyc2UtZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9saXN0LXVzZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtaW5wdXQvbWVzc2FnZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1ib3VuY2UtcHJvbXB0L21lc3NhZ2UtYm91bmNlLXByb21wdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC9hdXRvY29tcGxldGUtdGV4dGFyZWEvYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQtY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC90ZXh0YXJlYS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC90ZXh0YXJlYS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC9lbW9qaS1pbnB1dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtbGlzdC9tZXNzYWdlLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtbGlzdC9ncm91cC1zdHlsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1saXN0L2F0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24tbGlzdC9ub3RpZmljYXRpb24tbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGhyZWFkL3RocmVhZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlYWQtYnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2V0LW1lc3NhZ2UtdHJhbnNsYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2V0LWNoYW5uZWwtZGlzcGxheS10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lzLWltYWdlLWF0dGFjaG1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLXByZXZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsaXRlcmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWNoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS1hdmF0YXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS1hdXRvY29tcGxldGUtdGV4dGFyZWEubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS10ZXh0YXJlYS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5qZWN0aW9uLXRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1yZWFjdGlvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXBhcnNlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWFjdGlvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIvdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lzLW9uLXNlcGFyYXRlLWRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IvbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtcXVlcnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmlydHVhbGl6ZWQtbGlzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZpcnR1YWxpemVkLW1lc3NhZ2UtbGlzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3VzZXItbGlzdC91c2VyLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRlZC1saXN0L3BhZ2luYXRlZC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pcy1zYWZhcmknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdm9pY2UtcmVjb3JkZXIvdm9pY2UtcmVjb3JkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyL2FtcGxpdHVkZS1yZWNvcmRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyL2F1ZGlvLXJlY29yZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdm9pY2UtcmVjb3JkZXIvbWVkaWEtcmVjb3JkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdm9pY2UtcmVjb3JkZXIvdHJhbnNjb2Rlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLXJlY29yZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2ljb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyLy92b2ljZS1yZWNvcmRlci13YXZlYmFyL3ZvaWNlLXJlY29yZGVyLXdhdmViYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm1hdC1kdXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L3ZvaWNlLXJlY29yZGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdm9pY2UtcmVjb3JkZXIvbXAzLXRyYW5zY29kZXInO1xuIl19
|