speechrecorderng 3.0.0 → 3.0.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/esm2020/lib/speechrecorder/recording.mjs +12 -1
- package/esm2020/lib/speechrecorder/recordings/recordings.service.mjs +22 -25
- package/esm2020/lib/speechrecorder/session/recording_file_cache.mjs +22 -9
- package/esm2020/lib/spr.module.version.mjs +2 -2
- package/fesm2015/speechrecorderng.mjs +54 -33
- package/fesm2015/speechrecorderng.mjs.map +1 -1
- package/fesm2020/speechrecorderng.mjs +54 -33
- package/fesm2020/speechrecorderng.mjs.map +1 -1
- package/lib/speechrecorder/recording.d.ts +1 -0
- package/lib/speechrecorder/session/recording_file_cache.d.ts +7 -4
- package/lib/spr.module.version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -76,6 +76,17 @@ export class SprRecordingFile extends RecordingFile {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
export class RecordingFileUtils {
|
|
79
|
+
static equals(recordinFile, otherRecordingFile) {
|
|
80
|
+
if (recordinFile && otherRecordingFile) {
|
|
81
|
+
if (otherRecordingFile === recordinFile) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
if (otherRecordingFile.uuid === recordinFile.uuid) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
79
90
|
static setAudioData(rf, audioDataHolder) {
|
|
80
91
|
rf.audioDataHolder = audioDataHolder;
|
|
81
92
|
if (audioDataHolder) {
|
|
@@ -97,4 +108,4 @@ export class RecordingFileUtils {
|
|
|
97
108
|
return rv;
|
|
98
109
|
}
|
|
99
110
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3JlY29yZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFTckMsTUFBTSxPQUFPLDJCQUEyQjtJQUd0QyxnQkFBZSxDQUFDO0NBQ2pCO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUFpQnhCLFlBQVksSUFBVyxFQUFDLFNBQXVCLEVBQUMsZUFBb0M7UUFoQnBGLG9CQUFlLEdBQTBCLElBQUksQ0FBQztRQUM5QyxTQUFJLEdBQWEsSUFBSSxDQUFDO1FBQ3RCLG9CQUFlLEdBQUMsS0FBSyxDQUFDO1FBQ3RCLHVCQUFrQixHQUFDLEtBQUssQ0FBQztRQUN6QixTQUFJLEdBQWMsSUFBSSxDQUFDO1FBQ3ZCLG1CQUFjLEdBQVcsSUFBSSxDQUFDO1FBQzlCLGdCQUFXLEdBQWMsSUFBSSxDQUFDO1FBQzlCLHNCQUFpQixHQUFZLElBQUksQ0FBQztRQUNsQyxvQkFBZSxHQUFzQixJQUFJLENBQUM7UUFDMUMsWUFBTyxHQUFvQixJQUFJLENBQUM7UUFDaEMsV0FBTSxHQUFhLElBQUksQ0FBQztRQUN4QixlQUFVLEdBQWEsSUFBSSxDQUFDO1FBQzVCLG1CQUFjLEdBQWEsSUFBSSxDQUFDO1FBQ2hDLG1CQUFjLEdBQWEsSUFBSSxDQUFBO1FBQy9CLGlCQUFZLEdBQWEsSUFBSSxDQUFBO1FBRzNCLElBQUksQ0FBQyxPQUFPLEdBQUMsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUMsZUFBZSxDQUFBO1FBQ3BDLElBQUcsZUFBZSxFQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsSUFBSSxHQUFDLElBQUksQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNsQixJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUM7WUFDZCxHQUFHLElBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQixHQUFHLElBQUUsR0FBRyxDQUFDO1NBQ1Y7UUFDRCxHQUFHLElBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNmLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBcUM7UUFDMUMsSUFBRyxrQkFBa0IsS0FBRyxJQUFJLEVBQUU7WUFDNUIsSUFBSSxrQkFBa0IsS0FBSyxJQUFJLEVBQUU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLGtCQUFrQixDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUN6QyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyx3QkFBd0IsR0FBQyxJQUFJLENBQUMsSUFBSSxHQUFDLGFBQWEsR0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3ZFLENBQUM7Q0FFRjtBQUVHLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxhQUFhO0lBT2pELFlBQVksU0FBdUIsRUFBQyxRQUFlLEVBQUMsT0FBYyxFQUFDLGVBQW9DO1FBQ25HLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUMsU0FBUyxFQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLEdBQUMsU0FBUyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUMsUUFBUSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUMsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFJRCxjQUFjO1FBQ1osSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBQztZQUNaLEdBQUcsSUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xCLEdBQUcsSUFBRSxHQUFHLENBQUM7U0FDWjtRQUNELElBQUcsSUFBSSxDQUFDLFFBQVEsRUFBQztZQUNmLEdBQUcsSUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ25CLEdBQUcsSUFBRSxHQUFHLENBQUM7U0FDVjtRQUNELEdBQUcsSUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sd0JBQXdCLEdBQUMsSUFBSSxDQUFDLElBQUksR0FBQyxhQUFhLEdBQUMsSUFBSSxDQUFDLE9BQU8sR0FBQyxjQUFjLEdBQUMsSUFBSSxDQUFDLFFBQVEsR0FBQyxhQUFhLEdBQUMsSUFBSSxDQUFDLE9BQU8sR0FBQyxVQUFVLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNwSixDQUFDO0NBRUY7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBK0IsRUFBQyxrQkFBcUM7UUFDakYsSUFBRyxZQUFZLElBQUksa0JBQWtCLEVBQUM7WUFDcEMsSUFBSSxrQkFBa0IsS0FBSyxZQUFZLEVBQUU7Z0JBQ3ZDLE9BQU8sSUFBSSxDQUFDO2FBQ2I7WUFDRCxJQUFJLGtCQUFrQixDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFO2dCQUNqRCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQWdCLEVBQUMsZUFBb0M7UUFDckUsRUFBRSxDQUFDLGVBQWUsR0FBQyxlQUFlLENBQUM7UUFDbkMsSUFBRyxlQUFlLEVBQUU7WUFDbEIsRUFBRSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxVQUFVLEdBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQWdCO1FBQ2pDLElBQUcsRUFBRSxDQUFDLGVBQWUsRUFBQztZQUNwQixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDMUM7YUFBSTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBQ0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFnQjtRQUNyQyxJQUFJLEVBQUUsR0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDO1FBQzFCLEVBQUUsQ0FBQyxlQUFlLEdBQUMsSUFBSSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVVJRCB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJ1xyXG5pbXBvcnQge1Byb21wdEl0ZW19IGZyb20gXCIuL3NjcmlwdC9zY3JpcHRcIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuLi9hdWRpby9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNvcmRpbmdGaWxlRGVzY3JpcHRvciB7XHJcbiAgcmVjb3JkaW5nOlByb21wdEl0ZW07XHJcbiAgdmVyc2lvbjpudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdGaWxlRGVzY3JpcHRvckltcGwge1xyXG4gIHJlY29yZGluZyE6UHJvbXB0SXRlbTtcclxuICB2ZXJzaW9uITpudW1iZXI7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nRmlsZSB7XHJcbiAgcmVjb3JkaW5nRmlsZUlkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsPSBudWxsO1xyXG4gIHV1aWQ6c3RyaW5nfG51bGw9bnVsbDtcclxuICBzZXJ2ZXJQZXJzaXN0ZWQ9ZmFsc2U7XHJcbiAga2VlcEF1ZGlvRGF0YUNhY2hlPWZhbHNlO1xyXG4gIGRhdGU6IHN0cmluZ3xudWxsPW51bGw7XHJcbiAgX2RhdGVBc0RhdGVPYmo6RGF0ZXxudWxsPW51bGw7XHJcbiAgc3RhcnRlZERhdGU6IHN0cmluZ3xudWxsPW51bGw7XHJcbiAgX3N0YXJ0ZWRBc0RhdGVPYmo/OkRhdGV8bnVsbD1udWxsO1xyXG4gIGF1ZGlvRGF0YUhvbGRlcjpBdWRpb0RhdGFIb2xkZXJ8bnVsbD1udWxsO1xyXG4gIHNlc3Npb246c3RyaW5nfG51bWJlcnxudWxsPW51bGw7XHJcbiAgZnJhbWVzOm51bWJlcnxudWxsPW51bGw7XHJcbiAgdGltZUxlbmd0aDpudW1iZXJ8bnVsbD1udWxsO1xyXG4gIGVkaXRTYW1wbGVSYXRlOm51bWJlcnxudWxsPW51bGw7XHJcbiAgZWRpdFN0YXJ0RnJhbWU6bnVtYmVyfG51bGw9bnVsbFxyXG4gIGVkaXRFbmRGcmFtZTpudW1iZXJ8bnVsbD1udWxsXHJcblxyXG4gIGNvbnN0cnVjdG9yKHV1aWQ6c3RyaW5nLHNlc3Npb25JZDpzdHJpbmd8bnVtYmVyLGF1ZGlvRGF0YUhvbGRlcjpBdWRpb0RhdGFIb2xkZXJ8bnVsbCkge1xyXG4gICAgdGhpcy5zZXNzaW9uPXNlc3Npb25JZDtcclxuICAgIHRoaXMuYXVkaW9EYXRhSG9sZGVyPWF1ZGlvRGF0YUhvbGRlclxyXG4gICAgaWYoYXVkaW9EYXRhSG9sZGVyKXtcclxuICAgICAgdGhpcy5mcmFtZXM9YXVkaW9EYXRhSG9sZGVyLmZyYW1lTGVuO1xyXG4gICAgICB0aGlzLnRpbWVMZW5ndGg9YXVkaW9EYXRhSG9sZGVyLmR1cmF0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy51dWlkPXV1aWQ7XHJcbiAgfVxyXG5cclxuICBmaWxlbmFtZVN0cmluZygpOnN0cmluZ3tcclxuICAgIGxldCBmbnM6c3RyaW5nPScnO1xyXG4gICAgaWYodGhpcy5zZXNzaW9uKXtcclxuICAgICAgZm5zKz10aGlzLnNlc3Npb247XHJcbiAgICAgIGZucys9J18nO1xyXG4gICAgfVxyXG4gICAgZm5zKz10aGlzLnV1aWQ7XHJcbiAgICByZXR1cm4gZm5zO1xyXG4gIH1cclxuXHJcbiAgZXF1YWxzKG90aGVyUmVjb3JkaW5nRmlsZTpSZWNvcmRpbmdGaWxlfG51bGwpOmJvb2xlYW57XHJcbiAgICBpZihvdGhlclJlY29yZGluZ0ZpbGUhPT1udWxsKSB7XHJcbiAgICAgIGlmIChvdGhlclJlY29yZGluZ0ZpbGUgPT09IHRoaXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAob3RoZXJSZWNvcmRpbmdGaWxlLnV1aWQgPT09IHRoaXMudXVpZCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOnN0cmluZ3tcclxuICAgIHJldHVybiAnUmVjb3JkaW5nIGZpbGU6IFVVSUQ6ICcrdGhpcy51dWlkKycsIHNlc3Npb246ICcrdGhpcy5zZXNzaW9uO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiAgICBleHBvcnQgY2xhc3MgU3ByUmVjb3JkaW5nRmlsZSBleHRlbmRzIFJlY29yZGluZ0ZpbGUgaW1wbGVtZW50cyAgUmVjb3JkaW5nRmlsZURlc2NyaXB0b3J7XHJcblxyXG4gICAgICBpdGVtQ29kZTpzdHJpbmc7XHJcblxyXG4gICAgICByZWNvcmRpbmchOlByb21wdEl0ZW07XHJcbiAgICAgIHZlcnNpb24hOm51bWJlcjtcclxuXHJcbiAgICAgIGNvbnN0cnVjdG9yKHNlc3Npb25JZDpzdHJpbmd8bnVtYmVyLGl0ZW1jb2RlOnN0cmluZyx2ZXJzaW9uOm51bWJlcixhdWRpb0RhdGFIb2xkZXI6QXVkaW9EYXRhSG9sZGVyfG51bGwpIHtcclxuICAgICAgICAgIHN1cGVyKFVVSUQuZ2VuZXJhdGUoKSxzZXNzaW9uSWQsYXVkaW9EYXRhSG9sZGVyKTtcclxuICAgICAgICAgIHRoaXMuc2Vzc2lvbj1zZXNzaW9uSWQ7XHJcbiAgICAgICAgICB0aGlzLml0ZW1Db2RlPWl0ZW1jb2RlO1xyXG4gICAgICAgICAgdGhpcy52ZXJzaW9uPXZlcnNpb247XHJcbiAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgZmlsZW5hbWVTdHJpbmcoKTpzdHJpbmd7XHJcbiAgICAgICAgbGV0IGZuczpzdHJpbmc9Jyc7XHJcbiAgICAgICAgaWYodGhpcy5zZXNzaW9uKXtcclxuICAgICAgICAgICAgZm5zKz10aGlzLnNlc3Npb247XHJcbiAgICAgICAgICAgIGZucys9J18nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLml0ZW1Db2RlKXtcclxuICAgICAgICAgIGZucys9dGhpcy5pdGVtQ29kZTtcclxuICAgICAgICAgIGZucys9J18nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmbnMrPXRoaXMudXVpZDtcclxuICAgICAgICByZXR1cm4gZm5zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0b1N0cmluZygpOnN0cmluZ3tcclxuICAgICAgICByZXR1cm4gJ1JlY29yZGluZyBmaWxlOiBVVUlEOiAnK3RoaXMudXVpZCsnLCBzZXNzaW9uOiAnK3RoaXMuc2Vzc2lvbisnLCBpdGVtY29kZTogJyt0aGlzLml0ZW1Db2RlKycsIHZlcnNpb246ICcrdGhpcy52ZXJzaW9uKycsIFVVSUQ6ICcrdGhpcy51dWlkO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBjbGFzcyBSZWNvcmRpbmdGaWxlVXRpbHN7XHJcblxyXG4gICAgICBzdGF0aWMgZXF1YWxzKHJlY29yZGluRmlsZTpSZWNvcmRpbmdGaWxlfG51bGwsb3RoZXJSZWNvcmRpbmdGaWxlOlJlY29yZGluZ0ZpbGV8bnVsbCk6Ym9vbGVhbntcclxuICAgICAgICBpZihyZWNvcmRpbkZpbGUgJiYgb3RoZXJSZWNvcmRpbmdGaWxlKXtcclxuICAgICAgICAgIGlmIChvdGhlclJlY29yZGluZ0ZpbGUgPT09IHJlY29yZGluRmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChvdGhlclJlY29yZGluZ0ZpbGUudXVpZCA9PT0gcmVjb3JkaW5GaWxlLnV1aWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RhdGljIHNldEF1ZGlvRGF0YShyZjpSZWNvcmRpbmdGaWxlLGF1ZGlvRGF0YUhvbGRlcjpBdWRpb0RhdGFIb2xkZXJ8bnVsbCl7XHJcbiAgICAgICAgICByZi5hdWRpb0RhdGFIb2xkZXI9YXVkaW9EYXRhSG9sZGVyO1xyXG4gICAgICAgICAgaWYoYXVkaW9EYXRhSG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHJmLmZyYW1lcyA9IGF1ZGlvRGF0YUhvbGRlci5mcmFtZUxlbjtcclxuICAgICAgICAgICAgcmYudGltZUxlbmd0aD1hdWRpb0RhdGFIb2xkZXIuZHVyYXRpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHN0YXRpYyBzYW1wbGVDb3VudChyZjpSZWNvcmRpbmdGaWxlKTpudW1iZXJ7XHJcbiAgICAgICAgaWYocmYuYXVkaW9EYXRhSG9sZGVyKXtcclxuICAgICAgICAgIHJldHVybiByZi5hdWRpb0RhdGFIb2xkZXIuc2FtcGxlQ291bnRzKCk7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgc3RhdGljIGV4cGlyZUF1ZGlvRGF0YShyZjpSZWNvcmRpbmdGaWxlKTpBdWRpb0RhdGFIb2xkZXJ8bnVsbHtcclxuICAgICAgICBsZXQgcnY9cmYuYXVkaW9EYXRhSG9sZGVyO1xyXG4gICAgICAgIHJmLmF1ZGlvRGF0YUhvbGRlcj1udWxsO1xyXG4gICAgICAgIHJldHVybiBydjtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuIl19
|
|
@@ -109,33 +109,30 @@ export class RecordingService {
|
|
|
109
109
|
}
|
|
110
110
|
if (recordingFile.session && recFileId) {
|
|
111
111
|
let obs = this.fetchAudiofile(projectName, recordingFile.session, recFileId);
|
|
112
|
-
obs.subscribe({
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
observer.next(ab);
|
|
118
|
-
observer.complete();
|
|
119
|
-
}, error => {
|
|
120
|
-
observer.error(error);
|
|
121
|
-
observer.complete();
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
observer.error('Fetching audio file: response has no body');
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
error: (error) => {
|
|
129
|
-
if (error.status == 404) {
|
|
130
|
-
// Interpret not as an error, the file ist not recorded yet
|
|
131
|
-
observer.next(null);
|
|
112
|
+
obs.subscribe(resp => {
|
|
113
|
+
// Do not use Promise version, which does not work with Safari 13 (13.0.5)
|
|
114
|
+
if (resp.body) {
|
|
115
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
116
|
+
observer.next(ab);
|
|
132
117
|
observer.complete();
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
// all other states are errors
|
|
118
|
+
}, error => {
|
|
136
119
|
observer.error(error);
|
|
137
120
|
observer.complete();
|
|
138
|
-
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
observer.error('Fetching audio file: response has no body');
|
|
125
|
+
}
|
|
126
|
+
}, (error) => {
|
|
127
|
+
if (error.status == 404) {
|
|
128
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
129
|
+
observer.next(null);
|
|
130
|
+
observer.complete();
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// all other states are errors
|
|
134
|
+
observer.error(error);
|
|
135
|
+
observer.complete();
|
|
139
136
|
}
|
|
140
137
|
});
|
|
141
138
|
}
|
|
@@ -335,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
335
332
|
type: Inject,
|
|
336
333
|
args: [SPEECHRECORDER_CONFIG]
|
|
337
334
|
}] }]; } });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3JlY29yZGluZ3MvcmVjb3JkaW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFnQyxXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLGtCQUFrQixDQUFDO0FBRXRGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQThDLGtCQUFrQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFHOUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFDLFNBQVMsQ0FBQTtBQUtsQyxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQW9CLElBQWdCLEVBQXlDLE1BQTZCO1FBQXRGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBeUMsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFMbEcsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFekMsa0NBQWtDO1FBQzFCLGVBQVUsR0FBUSxDQUFDLENBQUM7UUFJMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFFckIsSUFBSSxNQUFNLElBQUks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QVEsRUFBRSxDQUFDO3lCQUNyQjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtxQkFBSTtvQkFDSCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2xCO1lBQ0gsQ0FBQyxFQUNELENBQUMsS0FBd0IsRUFBRSxFQUFFO2dCQUMzQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFO29CQUN2QiwyREFBMkQ7b0JBQzNELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtpQkFDcEI7cUJBQUk7b0JBQ0gsOEJBQThCO29CQUM5QixRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN0QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ3JCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7QUFoVnNCLDRCQUFXLEdBQUcsU0FBUyxDQUFBO0FBQ3ZCLGtDQUFpQixHQUFDLGVBQWUsQ0FBQTs4R0FIN0MsZ0JBQWdCLDRDQVVtQixxQkFBcUI7a0hBVnhELGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOzswQkFXOEIsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ3JlYXRlZCBieSBrbGF1c2ogb24gMTcuMDYuMjAxNy5cclxuICovXHJcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7QXBpVHlwZSwgU1BFRUNIUkVDT1JERVJfQ09ORklHLCBTcGVlY2hSZWNvcmRlckNvbmZpZ30gZnJvbSBcIi4uLy4uL3Nwci5jb25maWdcIjtcclxuXHJcbmltcG9ydCB7VVVJRH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XHJcbmltcG9ydCB7U3ByUmVjb3JkaW5nRmlsZSwgUmVjb3JkaW5nRmlsZURlc2NyaXB0b3JJbXBsLCBSZWNvcmRpbmdGaWxlLCBSZWNvcmRpbmdGaWxlVXRpbHN9IGZyb20gXCIuLi9yZWNvcmRpbmdcIjtcclxuaW1wb3J0IHtQcm9qZWN0U2VydmljZX0gZnJvbSBcIi4uL3Byb2plY3QvcHJvamVjdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gXCIuLi9zZXNzaW9uL3Nlc3Npb24uc2VydmljZVwiO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QXVkaW9EYXRhSG9sZGVyfSBmcm9tIFwiLi4vLi4vYXVkaW8vYXVkaW9fZGF0YV9ob2xkZXJcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3QgUkVDX0FQSV9DVFg9J3JlY2ZpbGUnXHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFJlY29yZGluZ1NlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFQ19BUElfQ1RYID0gJ3JlY2ZpbGUnXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRUNPUkRJTkdfQVBJX0NUWD0ncmVjb3JkaW5nZmlsZSdcclxuICBwcml2YXRlIGFwaUVuZFBvaW50OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB3aXRoQ3JlZGVudGlhbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9wcml2YXRlIGRlYnVnRGVsYXk6bnVtYmVyPTEwMDAwO1xyXG4gIHByaXZhdGUgZGVidWdEZWxheTpudW1iZXI9MDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KFNQRUVDSFJFQ09SREVSX0NPTkZJRykgcHJpdmF0ZSBjb25maWc/OiBTcGVlY2hSZWNvcmRlckNvbmZpZykge1xyXG5cclxuICAgIHRoaXMuYXBpRW5kUG9pbnQgPSAnJ1xyXG5cclxuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmFwaUVuZFBvaW50KSB7XHJcbiAgICAgIHRoaXMuYXBpRW5kUG9pbnQgPSBjb25maWcuYXBpRW5kUG9pbnQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hcGlFbmRQb2ludCAhPT0gJycpIHtcclxuICAgICAgdGhpcy5hcGlFbmRQb2ludCA9IHRoaXMuYXBpRW5kUG9pbnQgKyAnLydcclxuICAgIH1cclxuICAgIGlmIChjb25maWcgIT0gbnVsbCAmJiBjb25maWcud2l0aENyZWRlbnRpYWxzICE9IG51bGwpIHtcclxuICAgICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPSBjb25maWcud2l0aENyZWRlbnRpYWxzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWNvcmRpbmdGaWxlc1VybCgpOnN0cmluZ3tcclxuICAgIGxldCByZWNGaWxlc1VybCA9IHRoaXMuYXBpRW5kUG9pbnQgICsgUmVjb3JkaW5nU2VydmljZS5SRUNPUkRJTkdfQVBJX0NUWDtcclxuICAgIHJldHVybiByZWNGaWxlc1VybDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Vzc2lvblJlY29yZGluZ0ZpbGVzVXJsKHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyKTpzdHJpbmd7XHJcbiAgICBsZXQgZW5jUHJqTmFtZT1lbmNvZGVVUklDb21wb25lbnQocHJvamVjdE5hbWUpO1xyXG4gICAgbGV0IGVuY1Nlc3NJZD1lbmNvZGVVUklDb21wb25lbnQoc2Vzc0lkKTtcclxuICAgIGxldCByZWNGaWxlc1VybCA9IHRoaXMuYXBpRW5kUG9pbnQgKyBQcm9qZWN0U2VydmljZS5QUk9KRUNUX0FQSV9DVFggKyAnLycgKyBlbmNQcmpOYW1lICsgJy8nICtcclxuICAgICAgU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9BUElfQ1RYICsgJy8nICsgZW5jU2Vzc0lkICsgJy8nICsgUmVjb3JkaW5nU2VydmljZS5SRUNPUkRJTkdfQVBJX0NUWDtcclxuICAgIHJldHVybiByZWNGaWxlc1VybDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Vzc2lvblJlY0ZpbGVzVXJsKHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyKTpzdHJpbmd7XHJcbiAgICBsZXQgZW5jUHJqTmFtZT1lbmNvZGVVUklDb21wb25lbnQocHJvamVjdE5hbWUpO1xyXG4gICAgbGV0IGVuY1Nlc3NJZD1lbmNvZGVVUklDb21wb25lbnQoc2Vzc0lkKTtcclxuICAgIGxldCByZWNGaWxlc1VybCA9IHRoaXMuYXBpRW5kUG9pbnQgKyBQcm9qZWN0U2VydmljZS5QUk9KRUNUX0FQSV9DVFggKyAnLycgKyBlbmNQcmpOYW1lICsgJy8nICtcclxuICAgICAgICBTZXNzaW9uU2VydmljZS5TRVNTSU9OX0FQSV9DVFggKyAnLycgKyBlbmNTZXNzSWQgKyAnLycgKyBSZWNvcmRpbmdTZXJ2aWNlLlJFQ19BUElfQ1RYO1xyXG4gICAgcmV0dXJuIHJlY0ZpbGVzVXJsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXNzaW9uUmVjRmlsZXNSZXFVcmwocHJvamVjdE5hbWU6IHN0cmluZywgc2Vzc0lkOiBzdHJpbmcgfCBudW1iZXIpOnN0cmluZ3tcclxuICAgIGxldCByZWNGaWxlc1VybD10aGlzLnNlc3Npb25SZWNGaWxlc1VybChwcm9qZWN0TmFtZSxzZXNzSWQpO1xyXG4gICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmFwaVR5cGUgPT09IEFwaVR5cGUuRklMRVMpIHtcclxuICAgICAgLy8gZm9yIGRldmVsb3BtZW50IGFuZCBkZW1vXHJcbiAgICAgIC8vIGFwcGVuZCBVVUlEIHRvIG1ha2UgcmVxdWVzdCBVUkwgdW5pcXVlIHRvIGF2b2lkIGxvY2FsaG9zdCBzZXJ2ZXIgY2FjaGluZ1xyXG4gICAgICByZWNGaWxlc1VybCA9IHJlY0ZpbGVzVXJsICsgJy5qc29uP3JlcXVlc3RVVUlEPScgKyBVVUlELmdlbmVyYXRlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVjRmlsZXNVcmw7XHJcbiAgfVxyXG5cclxuICByZWNvcmRpbmdGaWxlRGVzY3JMaXN0KHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyKTpPYnNlcnZhYmxlPEFycmF5PFJlY29yZGluZ0ZpbGVEZXNjcmlwdG9ySW1wbD4+IHtcclxuICAgIGxldCByZWNGaWxlc1JlcVVybCA9IHRoaXMuc2Vzc2lvblJlY0ZpbGVzUmVxVXJsKHByb2plY3ROYW1lLHNlc3NJZCk7XHJcbiAgICBsZXQgd29icyA9IHRoaXMuaHR0cC5nZXQ8QXJyYXk8UmVjb3JkaW5nRmlsZURlc2NyaXB0b3JJbXBsPj4ocmVjRmlsZXNSZXFVcmwse3dpdGhDcmVkZW50aWFsczp0aGlzLndpdGhDcmVkZW50aWFsc30pO1xyXG4gICAgcmV0dXJuIHdvYnM7XHJcbiAgfVxyXG5cclxuICByZWNvcmRpbmdGaWxlTGlzdChwcm9qZWN0TmFtZTogc3RyaW5nLCBzZXNzSWQ6IHN0cmluZyB8IG51bWJlcik6T2JzZXJ2YWJsZTxBcnJheTxSZWNvcmRpbmdGaWxlPj4ge1xyXG4gICAgbGV0IHJlY0ZpbGVzUmVxVXJsID0gdGhpcy5zZXNzaW9uUmVjRmlsZXNSZXFVcmwocHJvamVjdE5hbWUsc2Vzc0lkKTtcclxuICAgIGxldCB3b2JzID0gdGhpcy5odHRwLmdldDxBcnJheTxSZWNvcmRpbmdGaWxlPj4ocmVjRmlsZXNSZXFVcmwse3dpdGhDcmVkZW50aWFsczp0aGlzLndpdGhDcmVkZW50aWFsc30pO1xyXG4gICAgcmV0dXJuIHdvYnM7XHJcbiAgfVxyXG5cclxuICBzcHJSZWNvcmRpbmdGaWxlTGlzdChwcm9qZWN0TmFtZTogc3RyaW5nLCBzZXNzSWQ6IHN0cmluZyB8IG51bWJlcik6T2JzZXJ2YWJsZTxBcnJheTxTcHJSZWNvcmRpbmdGaWxlPj4ge1xyXG4gICAgbGV0IHJlY0ZpbGVzUmVxVXJsID0gdGhpcy5zZXNzaW9uUmVjRmlsZXNSZXFVcmwocHJvamVjdE5hbWUsc2Vzc0lkKTtcclxuICAgIGxldCB3b2JzID0gdGhpcy5odHRwLmdldDxBcnJheTxTcHJSZWNvcmRpbmdGaWxlPj4ocmVjRmlsZXNSZXFVcmwse3dpdGhDcmVkZW50aWFsczp0aGlzLndpdGhDcmVkZW50aWFsc30pO1xyXG4gICAgcmV0dXJuIHdvYnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGF1ZGlvUmVxdWVzdChhdWRpb1VybDpzdHJpbmcpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheUJ1ZmZlcj4+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5hcGlUeXBlID09PSBBcGlUeXBlLkZJTEVTKSB7XHJcbiAgICAgIC8vIGZvciBkZXZlbG9wbWVudCBhbmQgZGVtb1xyXG4gICAgICAvLyBhcHBlbmQgVVVJRCB0byBtYWtlIHJlcXVlc3QgVVJMIHVuaXF1ZSB0byBhdm9pZCBsb2NhbGhvc3Qgc2VydmVyIGNhY2hpbmdcclxuICAgICAgYXVkaW9VcmwgPSBhdWRpb1VybCArICcud2F2P3JlcXVlc3RVVUlEPScgKyBVVUlELmdlbmVyYXRlKCk7XHJcbiAgICB9XHJcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCAnYXVkaW8vd2F2Jyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChhdWRpb1VybCwge1xyXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxyXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXHJcbiAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHNcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hBdWRpb2ZpbGUocHJvamVjdE5hbWU6IHN0cmluZywgc2Vzc0lkOiBzdHJpbmcgfCBudW1iZXIsIHJlY0ZpbGVJZDogc3RyaW5nfG51bWJlcik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj4ge1xyXG4gICAgbGV0IHJlY0ZpbGVzVXJsPXRoaXMuc2Vzc2lvblJlY29yZGluZ0ZpbGVzVXJsKHByb2plY3ROYW1lLHNlc3NJZCk7XHJcbiAgICBsZXQgZW5jUmVjRmlsZUlkPWVuY29kZVVSSUNvbXBvbmVudChyZWNGaWxlSWQpO1xyXG4gICAgbGV0IHJlY1VybCA9IHJlY0ZpbGVzVXJsICsgJy8nICsgZW5jUmVjRmlsZUlkO1xyXG4gICAgcmV0dXJuIHRoaXMuYXVkaW9SZXF1ZXN0KHJlY1VybCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoU3ByQXVkaW9maWxlKHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyLCBpdGVtY29kZTogc3RyaW5nLHZlcnNpb246bnVtYmVyKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXJyYXlCdWZmZXI+PiB7XHJcbiAgICBsZXQgcmVjRmlsZXNVcmw9dGhpcy5zZXNzaW9uUmVjRmlsZXNVcmwocHJvamVjdE5hbWUsc2Vzc0lkKTtcclxuICAgIGxldCBlbmNJdGVtY29kZT1lbmNvZGVVUklDb21wb25lbnQoaXRlbWNvZGUpO1xyXG4gICAgbGV0IHJlY1VybCA9IHJlY0ZpbGVzVXJsICsgJy8nICsgZW5jSXRlbWNvZGUgKycvJyt2ZXJzaW9uO1xyXG4gICAgcmV0dXJuIHRoaXMuYXVkaW9SZXF1ZXN0KHJlY1VybCk7XHJcbiAgfVxyXG5cclxuICBmZXRjaFJlY29yZGluZ0ZpbGVBdWRpb0J1ZmZlcihhQ3R4OiBBdWRpb0NvbnRleHQsIHByb2plY3ROYW1lOiBzdHJpbmcsIHJlY29yZGluZ0ZpbGU6UmVjb3JkaW5nRmlsZSk6T2JzZXJ2YWJsZTxBdWRpb0J1ZmZlcnxudWxsPiB7XHJcblxyXG4gICAgbGV0IHdvYnMgPSBuZXcgT2JzZXJ2YWJsZTxBdWRpb0J1ZmZlcnxudWxsPihvYnNlcnZlcj0+e1xyXG4gICAgICBsZXQgcmVjRmlsZUlkPXJlY29yZGluZ0ZpbGUucmVjb3JkaW5nRmlsZUlkO1xyXG4gICAgICBpZighcmVjRmlsZUlkKXtcclxuICAgICAgICByZWNGaWxlSWQ9cmVjb3JkaW5nRmlsZS51dWlkO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHJlY29yZGluZ0ZpbGUuc2Vzc2lvbiAmJiByZWNGaWxlSWQpIHtcclxuXHJcbiAgICAgICAgbGV0IG9icyA9IHRoaXMuZmV0Y2hBdWRpb2ZpbGUocHJvamVjdE5hbWUsIHJlY29yZGluZ0ZpbGUuc2Vzc2lvbiwgcmVjRmlsZUlkKTtcclxuICAgICAgICBvYnMuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IHJlc3AgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgIGFDdHguZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSwgYWIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGFiKTtcclxuICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKCdGZXRjaGluZyBhdWRpbyBmaWxlOiByZXNwb25zZSBoYXMgbm8gYm9keScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6KGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwNCkge1xyXG4gICAgICAgICAgICAgIC8vIEludGVycHJldCBub3QgYXMgYW4gZXJyb3IsIHRoZSBmaWxlIGlzdCBub3QgcmVjb3JkZWQgeWV0XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gYWxsIG90aGVyIHN0YXRlcyBhcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19KTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHdvYnM7XHJcbiAgfVxyXG5cclxuICBmZXRjaEFuZEFwcGx5UmVjb3JkaW5nRmlsZShhQ3R4OiBBdWRpb0NvbnRleHQsIHByb2plY3ROYW1lOiBzdHJpbmcsIHJlY29yZGluZ0ZpbGU6UmVjb3JkaW5nRmlsZSk6T2JzZXJ2YWJsZTxSZWNvcmRpbmdGaWxlfG51bGw+IHtcclxuXHJcbiAgICBsZXQgd29icyA9IG5ldyBPYnNlcnZhYmxlPFJlY29yZGluZ0ZpbGV8bnVsbD4ob2JzZXJ2ZXI9PntcclxuICAgICAgbGV0IHJlY0ZpbGVJZD1yZWNvcmRpbmdGaWxlLnJlY29yZGluZ0ZpbGVJZDtcclxuICAgICAgaWYoIXJlY0ZpbGVJZCl7XHJcbiAgICAgICAgcmVjRmlsZUlkPXJlY29yZGluZ0ZpbGUudXVpZDtcclxuICAgICAgfVxyXG4gICAgICBpZihyZWNvcmRpbmdGaWxlLnNlc3Npb24gJiYgcmVjRmlsZUlkKSB7XHJcblxyXG4gICAgICAgIGxldCBvYnMgPSB0aGlzLmZldGNoQXVkaW9maWxlKHByb2plY3ROYW1lLCByZWNvcmRpbmdGaWxlLnNlc3Npb24sIHJlY0ZpbGVJZCk7XHJcbiAgICAgICAgb2JzLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZldGNoZWQgYXVkaW8gZmlsZS4gSFRUUCByZXNwb25zZSBzdGF0dXM6IFwiK3Jlc3Auc3RhdHVzK1wiLCB0eXBlOiBcIityZXNwLnR5cGUrXCIsIGJ5dGUgbGVuZ3RoOiBcIisgcmVzcC5ib2R5LmJ5dGVMZW5ndGgpO1xyXG5cclxuICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgIGFDdHguZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSwgYWIgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGFkaD1uZXcgQXVkaW9EYXRhSG9sZGVyKGFiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgUmVjb3JkaW5nRmlsZVV0aWxzLnNldEF1ZGlvRGF0YShyZWNvcmRpbmdGaWxlLGFkaCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1Z0RlbGF5ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVjb3JkaW5nRmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgfSwgdGhpcy5kZWJ1Z0RlbGF5KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVjb3JkaW5nRmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKCdGZXRjaGluZyBhdWRpbyBmaWxlOiByZXNwb25zZSBoYXMgbm8gYm9keScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwNCkge1xyXG4gICAgICAgICAgICAgIC8vIEludGVycHJldCBub3QgYXMgYW4gZXJyb3IsIHRoZSBmaWxlIGlzdCBub3QgcmVjb3JkZWQgeWV0XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gYWxsIG90aGVyIHN0YXRlcyBhcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBvYnNlcnZlci5lcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd29icztcclxuICB9XHJcblxyXG4gIGZldGNoU3ByUmVjb3JkaW5nRmlsZUF1ZGlvQnVmZmVyKGFDdHg6IEF1ZGlvQ29udGV4dCwgcHJvamVjdE5hbWU6IHN0cmluZywgcmVjb3JkaW5nRmlsZTpTcHJSZWNvcmRpbmdGaWxlKTpPYnNlcnZhYmxlPEF1ZGlvQnVmZmVyfG51bGw+IHtcclxuXHJcbiAgICBsZXQgd29icyA9IG5ldyBPYnNlcnZhYmxlPEF1ZGlvQnVmZmVyfG51bGw+KG9ic2VydmVyPT57XHJcbiAgICAgIGlmKHJlY29yZGluZ0ZpbGUuc2Vzc2lvbikge1xyXG4gICAgICAgIGxldCBvYnMgPSB0aGlzLmZldGNoU3ByQXVkaW9maWxlKHByb2plY3ROYW1lLCByZWNvcmRpbmdGaWxlLnNlc3Npb24sIHJlY29yZGluZ0ZpbGUuaXRlbUNvZGUsIHJlY29yZGluZ0ZpbGUudmVyc2lvbik7XHJcbiAgICAgICAgb2JzLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiByZXNwID0+IHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgIGFDdHguZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSwgYWIgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy9SZWNvcmRpbmdGaWxlVXRpbHMuc2V0QXVkaW9EYXRhKHJlY29yZGluZ0ZpbGUsbmV3IEF1ZGlvRGF0YUhvbGRlcihhYixudWxsKSk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGFiKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcignRmV0Y2hpbmcgYXVkaW8gZmlsZTogcmVzcG9uc2UgaGFzIG5vIGJvZHknKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDA0KSB7XHJcbiAgICAgICAgICAgICAgLy8gSW50ZXJwcmV0IG5vdCBhcyBhbiBlcnJvciwgdGhlIGZpbGUgaXN0IG5vdCByZWNvcmRlZCB5ZXRcclxuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyBhbGwgb3RoZXIgc3RhdGVzIGFyZSBlcnJvcnNcclxuICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX0pO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBvYnNlcnZlci5lcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd29icztcclxuICB9XHJcblxyXG5cclxuICBmZXRjaEFuZEFwcGx5U3ByUmVjb3JkaW5nRmlsZShhQ3R4OiBBdWRpb0NvbnRleHQsIHByb2plY3ROYW1lOiBzdHJpbmcsIHJlY29yZGluZ0ZpbGU6U3ByUmVjb3JkaW5nRmlsZSk6T2JzZXJ2YWJsZTxTcHJSZWNvcmRpbmdGaWxlfG51bGw+IHtcclxuXHJcbiAgICBsZXQgd29icyA9IG5ldyBPYnNlcnZhYmxlPFNwclJlY29yZGluZ0ZpbGV8bnVsbD4ob2JzZXJ2ZXI9PntcclxuICAgICAgaWYocmVjb3JkaW5nRmlsZS5zZXNzaW9uKSB7XHJcbiAgICAgICAgbGV0IG9icyA9IHRoaXMuZmV0Y2hTcHJBdWRpb2ZpbGUocHJvamVjdE5hbWUsIHJlY29yZGluZ0ZpbGUuc2Vzc2lvbiwgcmVjb3JkaW5nRmlsZS5pdGVtQ29kZSwgcmVjb3JkaW5nRmlsZS52ZXJzaW9uKTtcclxuICAgICAgICBvYnMuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGZXRjaGVkIGF1ZGlvIGZpbGUuIEhUVFAgcmVzcG9uc2Ugc3RhdHVzOiBcIityZXNwLnN0YXR1cytcIiwgdHlwZTogXCIrcmVzcC50eXBlK1wiLCBieXRlIGxlbmd0aDogXCIrIHJlc3AuYm9keS5ieXRlTGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgICBpZiAocmVzcC5ib2R5KSB7XHJcbiAgICAgICAgICAgICAgICBhQ3R4LmRlY29kZUF1ZGlvRGF0YShyZXNwLmJvZHksIGFiID0+IHtcclxuICAgICAgICAgICAgICAgICAgUmVjb3JkaW5nRmlsZVV0aWxzLnNldEF1ZGlvRGF0YShyZWNvcmRpbmdGaWxlLG5ldyBBdWRpb0RhdGFIb2xkZXIoYWIsbnVsbCkpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1Z0RlbGF5ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlY29yZGluZ0ZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmRlYnVnRGVsYXkpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVjb3JkaW5nRmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcignRmV0Y2hpbmcgYXVkaW8gZmlsZTogcmVzcG9uc2UgaGFzIG5vIGJvZHknKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwNCkge1xyXG4gICAgICAgICAgICAgICAgLy8gSW50ZXJwcmV0IG5vdCBhcyBhbiBlcnJvciwgdGhlIGZpbGUgaXN0IG5vdCByZWNvcmRlZCB5ZXRcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGFsbCBvdGhlciBzdGF0ZXMgYXJlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBvYnNlcnZlci5lcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd29icztcclxuICB9XHJcblxyXG4gIGZldGNoUmVjb3JkaW5nRmlsZShhQ3R4OiBBdWRpb0NvbnRleHQsIHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyLCBpdGVtY29kZTogc3RyaW5nLHZlcnNpb246bnVtYmVyKTpPYnNlcnZhYmxlPFNwclJlY29yZGluZ0ZpbGV8bnVsbD4ge1xyXG5cclxuICAgIGxldCB3b2JzID0gbmV3IE9ic2VydmFibGU8U3ByUmVjb3JkaW5nRmlsZSB8IG51bGw+KG9ic2VydmVyPT57XHJcbiAgICAgIGxldCBvYnMgPSB0aGlzLmZldGNoU3ByQXVkaW9maWxlKHByb2plY3ROYW1lLCBzZXNzSWQsIGl0ZW1jb2RlLHZlcnNpb24pO1xyXG5cclxuXHJcbiAgICAgIG9icy5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCB1c2UgUHJvbWlzZSB2ZXJzaW9uLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdpdGggU2FmYXJpIDEzXHJcbiAgICAgICAgICBpZihyZXNwLmJvZHkpIHtcclxuICAgICAgICAgICAgYUN0eC5kZWNvZGVBdWRpb0RhdGEocmVzcC5ib2R5LCBhYiA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGFkaD1uZXcgQXVkaW9EYXRhSG9sZGVyKGFiLG51bGwpO1xyXG4gICAgICAgICAgICAgIGxldCByZiA9IG5ldyBTcHJSZWNvcmRpbmdGaWxlKHNlc3NJZCwgaXRlbWNvZGUsIHZlcnNpb24sIGFkaCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWdEZWxheSA+IDApIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmYpO1xyXG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSwgdGhpcy5kZWJ1Z0RlbGF5KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZik7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDA0KSB7XHJcbiAgICAgICAgICAgIC8vIEludGVycHJldCBub3QgYXMgYW4gZXJyb3IsIHRoZSBmaWxlIGlzdCBub3QgcmVjb3JkZWQgeWV0XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAvLyBhbGwgb3RoZXIgc3RhdGVzIGFyZSBlcnJvcnNcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHdvYnM7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3NwZWVjaHJlY29yZGVyL3JlY29yZGluZ3MvcmVjb3JkaW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFnQyxXQUFXLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RixPQUFPLEVBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUF1QixNQUFNLGtCQUFrQixDQUFDO0FBRXRGLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQThDLGtCQUFrQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFHOUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFDLFNBQVMsQ0FBQTtBQUtsQyxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQW9CLElBQWdCLEVBQXlDLE1BQTZCO1FBQXRGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBeUMsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7UUFMbEcsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFekMsa0NBQWtDO1FBQzFCLGVBQVUsR0FBUSxDQUFDLENBQUM7UUFJMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFFckIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7U0FDdkM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUE7U0FDMUM7UUFDRCxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUU7WUFDcEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFJLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQ3pFLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxXQUFtQixFQUFFLE1BQXVCO1FBQzNFLElBQUksVUFBVSxHQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9DLElBQUksU0FBUyxHQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsVUFBVSxHQUFHLEdBQUc7WUFDMUYsY0FBYyxDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQztRQUM5RixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsV0FBbUIsRUFBRSxNQUF1QjtRQUNyRSxJQUFJLFVBQVUsR0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxJQUFJLFNBQVMsR0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHLFVBQVUsR0FBRyxHQUFHO1lBQ3hGLGNBQWMsQ0FBQyxlQUFlLEdBQUcsR0FBRyxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQzFGLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUFtQixFQUFFLE1BQXVCO1FBQ3hFLElBQUksV0FBVyxHQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDeEQsMkJBQTJCO1lBQzNCLDJFQUEyRTtZQUMzRSxXQUFXLEdBQUcsV0FBVyxHQUFHLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNwRTtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxXQUFtQixFQUFFLE1BQXVCO1FBQ2pFLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFDLGNBQWMsRUFBQyxFQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUNwSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLE1BQXVCO1FBQzVELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXVCLGNBQWMsRUFBQyxFQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUN0RyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxXQUFtQixFQUFFLE1BQXVCO1FBQy9ELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQTBCLGNBQWMsRUFBQyxFQUFDLGVBQWUsRUFBQyxJQUFJLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUN6RyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxZQUFZLENBQUMsUUFBZTtRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLEtBQUssRUFBRTtZQUN4RCwyQkFBMkI7WUFDM0IsMkVBQTJFO1lBQzNFLFFBQVEsR0FBRyxRQUFRLEdBQUcsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzdEO1FBQ0QsSUFBSSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsWUFBWSxFQUFFLGFBQWE7WUFDM0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ3RDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFTyxjQUFjLENBQUMsV0FBbUIsRUFBRSxNQUF1QixFQUFFLFNBQXdCO1FBQzNGLElBQUksV0FBVyxHQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEUsSUFBSSxZQUFZLEdBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxNQUFNLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxXQUFtQixFQUFFLE1BQXVCLEVBQUUsUUFBZ0IsRUFBQyxPQUFjO1FBQ3JHLElBQUksV0FBVyxHQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxXQUFXLEdBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0MsSUFBSSxNQUFNLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxXQUFXLEdBQUUsR0FBRyxHQUFDLE9BQU8sQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELDZCQUE2QixDQUFDLElBQWtCLEVBQUUsV0FBbUIsRUFBRSxhQUEyQjtRQUVoRyxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBbUIsUUFBUSxDQUFBLEVBQUU7WUFDcEQsSUFBSSxTQUFTLEdBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQztZQUM1QyxJQUFHLENBQUMsU0FBUyxFQUFDO2dCQUNaLFNBQVMsR0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2FBQzlCO1lBQ0QsSUFBRyxhQUFhLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTtnQkFFckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDN0UsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDakIsMEVBQTBFO29CQUMxRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFOzRCQUNqQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNsQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3hCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTs0QkFDVCxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUN0QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3RCLENBQUMsQ0FBQyxDQUFBO3FCQUNIO3lCQUFNO3dCQUNMLFFBQVEsQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztxQkFDN0Q7Z0JBQ0gsQ0FBQyxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFO29CQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFO3dCQUN2QiwyREFBMkQ7d0JBQzNELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtxQkFDcEI7eUJBQU07d0JBQ0wsOEJBQThCO3dCQUM5QixRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN0QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ3JCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQUk7Z0JBQ0gsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxJQUFrQixFQUFFLFdBQW1CLEVBQUUsYUFBMkI7UUFFN0YsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQXFCLFFBQVEsQ0FBQSxFQUFFO1lBQ3RELElBQUksU0FBUyxHQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUM7WUFDNUMsSUFBRyxDQUFDLFNBQVMsRUFBQztnQkFDWixTQUFTLEdBQUMsYUFBYSxDQUFDLElBQUksQ0FBQzthQUM5QjtZQUNELElBQUcsYUFBYSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7Z0JBRXJDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzdFLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2pCLHFJQUFxSTtvQkFFckksMEVBQTBFO29CQUMxRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFOzRCQUNuQyxJQUFJLEdBQUcsR0FBQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3JDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ25ELElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7Z0NBQ3ZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO29DQUVyQixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29DQUM3QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0NBQ3RCLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7NkJBQ3JCO2lDQUFNO2dDQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0NBQzdCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzs2QkFDckI7d0JBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFOzRCQUNULFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3RCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEIsQ0FBQyxDQUFDLENBQUE7cUJBQ0g7eUJBQU07d0JBQ0wsUUFBUSxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO3FCQUM3RDtnQkFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUF3QixFQUFFLEVBQUU7b0JBQzNCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7d0JBQ3ZCLDJEQUEyRDt3QkFDM0QsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFBO3FCQUNwQjt5QkFBTTt3QkFDTCw4QkFBOEI7d0JBQzlCLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3RCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDckI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDTjtpQkFBSTtnQkFDSCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdDQUFnQyxDQUFDLElBQWtCLEVBQUUsV0FBbUIsRUFBRSxhQUE4QjtRQUV0RyxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBbUIsUUFBUSxDQUFBLEVBQUU7WUFDcEQsSUFBRyxhQUFhLENBQUMsT0FBTyxFQUFFO2dCQUN4QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BILEdBQUcsQ0FBQyxTQUFTLENBQUM7b0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO3dCQUNYLDBFQUEwRTt3QkFDMUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFOzRCQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRTtnQ0FDbkMsOEVBQThFO2dDQUM5RSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUNsQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBRXRCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtnQ0FDVCxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dDQUN0QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ3RCLENBQUMsQ0FBQyxDQUFBO3lCQUNIOzZCQUFNOzRCQUNMLFFBQVEsQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQzt5QkFDN0Q7b0JBQ0gsQ0FBQztvQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUF3QixFQUFFLEVBQUU7d0JBQ2xDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7NEJBQ3ZCLDJEQUEyRDs0QkFDM0QsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFBO3lCQUNwQjs2QkFBTTs0QkFDTCw4QkFBOEI7NEJBQzlCLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3RCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt5QkFDckI7b0JBQ0gsQ0FBQztpQkFBQyxDQUFDLENBQUM7YUFDUDtpQkFBSTtnQkFDSCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdELDZCQUE2QixDQUFDLElBQWtCLEVBQUUsV0FBbUIsRUFBRSxhQUE4QjtRQUVuRyxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBd0IsUUFBUSxDQUFBLEVBQUU7WUFDekQsSUFBRyxhQUFhLENBQUMsT0FBTyxFQUFFO2dCQUN4QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BILEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2YscUlBQXFJO29CQUVySSwwRUFBMEU7b0JBQzFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTt3QkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUU7NEJBQ25DLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUMsSUFBSSxlQUFlLENBQUMsRUFBRSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7NEJBQzVFLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7Z0NBQ3ZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO29DQUVyQixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29DQUM3QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0NBQ3RCLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7NkJBQ3JCO2lDQUFNO2dDQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0NBQzdCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzs2QkFDckI7d0JBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFOzRCQUNULFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ3RCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDdEIsQ0FBQyxDQUFDLENBQUE7cUJBQ0g7eUJBQU07d0JBQ0wsUUFBUSxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO3FCQUM3RDtnQkFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUF3QixFQUFFLEVBQUU7b0JBQzNCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7d0JBQ3ZCLDJEQUEyRDt3QkFDM0QsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFBO3FCQUNwQjt5QkFBTTt3QkFDTCw4QkFBOEI7d0JBQzlCLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3RCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDckI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDUjtpQkFBSTtnQkFDSCxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDbEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQWtCLEVBQUUsV0FBbUIsRUFBRSxNQUF1QixFQUFFLFFBQWdCLEVBQUMsT0FBYztRQUVsSCxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBMEIsUUFBUSxDQUFBLEVBQUU7WUFDM0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBR3hFLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2YsaUVBQWlFO2dCQUNuRSxJQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFO3dCQUNuQyxJQUFJLEdBQUcsR0FBQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3JDLElBQUksRUFBRSxHQUFHLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQzlELElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7NEJBQ3ZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dDQUVyQixRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUNsQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ3RCLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7eUJBQ3JCOzZCQUFNOzRCQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ2xCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzt5QkFDckI7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQUk7b0JBQ0gsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNsQjtZQUNILENBQUMsRUFDRCxDQUFDLEtBQXdCLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTtvQkFDdkIsMkRBQTJEO29CQUMzRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNwQixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7aUJBQ3BCO3FCQUFJO29CQUNILDhCQUE4QjtvQkFDOUIsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNyQjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O0FBNVVzQiw0QkFBVyxHQUFHLFNBQVMsQ0FBQTtBQUN2QixrQ0FBaUIsR0FBQyxlQUFlLENBQUE7OEdBSDdDLGdCQUFnQiw0Q0FVbUIscUJBQXFCO2tIQVZ4RCxnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBVzhCLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENyZWF0ZWQgYnkga2xhdXNqIG9uIDE3LjA2LjIwMTcuXHJcbiAqL1xyXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge0FwaVR5cGUsIFNQRUVDSFJFQ09SREVSX0NPTkZJRywgU3BlZWNoUmVjb3JkZXJDb25maWd9IGZyb20gXCIuLi8uLi9zcHIuY29uZmlnXCI7XHJcblxyXG5pbXBvcnQge1VVSUR9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5pbXBvcnQge1NwclJlY29yZGluZ0ZpbGUsIFJlY29yZGluZ0ZpbGVEZXNjcmlwdG9ySW1wbCwgUmVjb3JkaW5nRmlsZSwgUmVjb3JkaW5nRmlsZVV0aWxzfSBmcm9tIFwiLi4vcmVjb3JkaW5nXCI7XHJcbmltcG9ydCB7UHJvamVjdFNlcnZpY2V9IGZyb20gXCIuLi9wcm9qZWN0L3Byb2plY3Quc2VydmljZVwiO1xyXG5pbXBvcnQge1Nlc3Npb25TZXJ2aWNlfSBmcm9tIFwiLi4vc2Vzc2lvbi9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0F1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uLy4uL2F1ZGlvL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IFJFQ19BUElfQ1RYPSdyZWNmaWxlJ1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRUNfQVBJX0NUWCA9ICdyZWNmaWxlJ1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVDT1JESU5HX0FQSV9DVFg9J3JlY29yZGluZ2ZpbGUnXHJcbiAgcHJpdmF0ZSBhcGlFbmRQb2ludDogc3RyaW5nO1xyXG4gIHByaXZhdGUgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vcHJpdmF0ZSBkZWJ1Z0RlbGF5Om51bWJlcj0xMDAwMDtcclxuICBwcml2YXRlIGRlYnVnRGVsYXk6bnVtYmVyPTA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChTUEVFQ0hSRUNPUkRFUl9DT05GSUcpIHByaXZhdGUgY29uZmlnPzogU3BlZWNoUmVjb3JkZXJDb25maWcpIHtcclxuXHJcbiAgICB0aGlzLmFwaUVuZFBvaW50ID0gJydcclxuXHJcbiAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5hcGlFbmRQb2ludCkge1xyXG4gICAgICB0aGlzLmFwaUVuZFBvaW50ID0gY29uZmlnLmFwaUVuZFBvaW50O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYXBpRW5kUG9pbnQgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMuYXBpRW5kUG9pbnQgPSB0aGlzLmFwaUVuZFBvaW50ICsgJy8nXHJcbiAgICB9XHJcbiAgICBpZiAoY29uZmlnICE9IG51bGwgJiYgY29uZmlnLndpdGhDcmVkZW50aWFscyAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID0gY29uZmlnLndpdGhDcmVkZW50aWFscztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVjb3JkaW5nRmlsZXNVcmwoKTpzdHJpbmd7XHJcbiAgICBsZXQgcmVjRmlsZXNVcmwgPSB0aGlzLmFwaUVuZFBvaW50ICArIFJlY29yZGluZ1NlcnZpY2UuUkVDT1JESU5HX0FQSV9DVFg7XHJcbiAgICByZXR1cm4gcmVjRmlsZXNVcmw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlc3Npb25SZWNvcmRpbmdGaWxlc1VybChwcm9qZWN0TmFtZTogc3RyaW5nLCBzZXNzSWQ6IHN0cmluZyB8IG51bWJlcik6c3RyaW5ne1xyXG4gICAgbGV0IGVuY1Byak5hbWU9ZW5jb2RlVVJJQ29tcG9uZW50KHByb2plY3ROYW1lKTtcclxuICAgIGxldCBlbmNTZXNzSWQ9ZW5jb2RlVVJJQ29tcG9uZW50KHNlc3NJZCk7XHJcbiAgICBsZXQgcmVjRmlsZXNVcmwgPSB0aGlzLmFwaUVuZFBvaW50ICsgUHJvamVjdFNlcnZpY2UuUFJPSkVDVF9BUElfQ1RYICsgJy8nICsgZW5jUHJqTmFtZSArICcvJyArXHJcbiAgICAgIFNlc3Npb25TZXJ2aWNlLlNFU1NJT05fQVBJX0NUWCArICcvJyArIGVuY1Nlc3NJZCArICcvJyArIFJlY29yZGluZ1NlcnZpY2UuUkVDT1JESU5HX0FQSV9DVFg7XHJcbiAgICByZXR1cm4gcmVjRmlsZXNVcmw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlc3Npb25SZWNGaWxlc1VybChwcm9qZWN0TmFtZTogc3RyaW5nLCBzZXNzSWQ6IHN0cmluZyB8IG51bWJlcik6c3RyaW5ne1xyXG4gICAgbGV0IGVuY1Byak5hbWU9ZW5jb2RlVVJJQ29tcG9uZW50KHByb2plY3ROYW1lKTtcclxuICAgIGxldCBlbmNTZXNzSWQ9ZW5jb2RlVVJJQ29tcG9uZW50KHNlc3NJZCk7XHJcbiAgICBsZXQgcmVjRmlsZXNVcmwgPSB0aGlzLmFwaUVuZFBvaW50ICsgUHJvamVjdFNlcnZpY2UuUFJPSkVDVF9BUElfQ1RYICsgJy8nICsgZW5jUHJqTmFtZSArICcvJyArXHJcbiAgICAgICAgU2Vzc2lvblNlcnZpY2UuU0VTU0lPTl9BUElfQ1RYICsgJy8nICsgZW5jU2Vzc0lkICsgJy8nICsgUmVjb3JkaW5nU2VydmljZS5SRUNfQVBJX0NUWDtcclxuICAgIHJldHVybiByZWNGaWxlc1VybDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2Vzc2lvblJlY0ZpbGVzUmVxVXJsKHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyKTpzdHJpbmd7XHJcbiAgICBsZXQgcmVjRmlsZXNVcmw9dGhpcy5zZXNzaW9uUmVjRmlsZXNVcmwocHJvamVjdE5hbWUsc2Vzc0lkKTtcclxuICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5hcGlUeXBlID09PSBBcGlUeXBlLkZJTEVTKSB7XHJcbiAgICAgIC8vIGZvciBkZXZlbG9wbWVudCBhbmQgZGVtb1xyXG4gICAgICAvLyBhcHBlbmQgVVVJRCB0byBtYWtlIHJlcXVlc3QgVVJMIHVuaXF1ZSB0byBhdm9pZCBsb2NhbGhvc3Qgc2VydmVyIGNhY2hpbmdcclxuICAgICAgcmVjRmlsZXNVcmwgPSByZWNGaWxlc1VybCArICcuanNvbj9yZXF1ZXN0VVVJRD0nICsgVVVJRC5nZW5lcmF0ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlY0ZpbGVzVXJsO1xyXG4gIH1cclxuXHJcbiAgcmVjb3JkaW5nRmlsZURlc2NyTGlzdChwcm9qZWN0TmFtZTogc3RyaW5nLCBzZXNzSWQ6IHN0cmluZyB8IG51bWJlcik6T2JzZXJ2YWJsZTxBcnJheTxSZWNvcmRpbmdGaWxlRGVzY3JpcHRvckltcGw+PiB7XHJcbiAgICBsZXQgcmVjRmlsZXNSZXFVcmwgPSB0aGlzLnNlc3Npb25SZWNGaWxlc1JlcVVybChwcm9qZWN0TmFtZSxzZXNzSWQpO1xyXG4gICAgbGV0IHdvYnMgPSB0aGlzLmh0dHAuZ2V0PEFycmF5PFJlY29yZGluZ0ZpbGVEZXNjcmlwdG9ySW1wbD4+KHJlY0ZpbGVzUmVxVXJsLHt3aXRoQ3JlZGVudGlhbHM6dGhpcy53aXRoQ3JlZGVudGlhbHN9KTtcclxuICAgIHJldHVybiB3b2JzO1xyXG4gIH1cclxuXHJcbiAgcmVjb3JkaW5nRmlsZUxpc3QocHJvamVjdE5hbWU6IHN0cmluZywgc2Vzc0lkOiBzdHJpbmcgfCBudW1iZXIpOk9ic2VydmFibGU8QXJyYXk8UmVjb3JkaW5nRmlsZT4+IHtcclxuICAgIGxldCByZWNGaWxlc1JlcVVybCA9IHRoaXMuc2Vzc2lvblJlY0ZpbGVzUmVxVXJsKHByb2plY3ROYW1lLHNlc3NJZCk7XHJcbiAgICBsZXQgd29icyA9IHRoaXMuaHR0cC5nZXQ8QXJyYXk8UmVjb3JkaW5nRmlsZT4+KHJlY0ZpbGVzUmVxVXJsLHt3aXRoQ3JlZGVudGlhbHM6dGhpcy53aXRoQ3JlZGVudGlhbHN9KTtcclxuICAgIHJldHVybiB3b2JzO1xyXG4gIH1cclxuXHJcbiAgc3ByUmVjb3JkaW5nRmlsZUxpc3QocHJvamVjdE5hbWU6IHN0cmluZywgc2Vzc0lkOiBzdHJpbmcgfCBudW1iZXIpOk9ic2VydmFibGU8QXJyYXk8U3ByUmVjb3JkaW5nRmlsZT4+IHtcclxuICAgIGxldCByZWNGaWxlc1JlcVVybCA9IHRoaXMuc2Vzc2lvblJlY0ZpbGVzUmVxVXJsKHByb2plY3ROYW1lLHNlc3NJZCk7XHJcbiAgICBsZXQgd29icyA9IHRoaXMuaHR0cC5nZXQ8QXJyYXk8U3ByUmVjb3JkaW5nRmlsZT4+KHJlY0ZpbGVzUmVxVXJsLHt3aXRoQ3JlZGVudGlhbHM6dGhpcy53aXRoQ3JlZGVudGlhbHN9KTtcclxuICAgIHJldHVybiB3b2JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdWRpb1JlcXVlc3QoYXVkaW9Vcmw6c3RyaW5nKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXJyYXlCdWZmZXI+PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuYXBpVHlwZSA9PT0gQXBpVHlwZS5GSUxFUykge1xyXG4gICAgICAvLyBmb3IgZGV2ZWxvcG1lbnQgYW5kIGRlbW9cclxuICAgICAgLy8gYXBwZW5kIFVVSUQgdG8gbWFrZSByZXF1ZXN0IFVSTCB1bmlxdWUgdG8gYXZvaWQgbG9jYWxob3N0IHNlcnZlciBjYWNoaW5nXHJcbiAgICAgIGF1ZGlvVXJsID0gYXVkaW9VcmwgKyAnLndhdj9yZXF1ZXN0VVVJRD0nICsgVVVJRC5nZW5lcmF0ZSgpO1xyXG4gICAgfVxyXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgJ2F1ZGlvL3dhdicpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYXVkaW9VcmwsIHtcclxuICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxyXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMud2l0aENyZWRlbnRpYWxzXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoQXVkaW9maWxlKHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyLCByZWNGaWxlSWQ6IHN0cmluZ3xudW1iZXIpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheUJ1ZmZlcj4+IHtcclxuICAgIGxldCByZWNGaWxlc1VybD10aGlzLnNlc3Npb25SZWNvcmRpbmdGaWxlc1VybChwcm9qZWN0TmFtZSxzZXNzSWQpO1xyXG4gICAgbGV0IGVuY1JlY0ZpbGVJZD1lbmNvZGVVUklDb21wb25lbnQocmVjRmlsZUlkKTtcclxuICAgIGxldCByZWNVcmwgPSByZWNGaWxlc1VybCArICcvJyArIGVuY1JlY0ZpbGVJZDtcclxuICAgIHJldHVybiB0aGlzLmF1ZGlvUmVxdWVzdChyZWNVcmwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaFNwckF1ZGlvZmlsZShwcm9qZWN0TmFtZTogc3RyaW5nLCBzZXNzSWQ6IHN0cmluZyB8IG51bWJlciwgaXRlbWNvZGU6IHN0cmluZyx2ZXJzaW9uOm51bWJlcik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj4ge1xyXG4gICAgbGV0IHJlY0ZpbGVzVXJsPXRoaXMuc2Vzc2lvblJlY0ZpbGVzVXJsKHByb2plY3ROYW1lLHNlc3NJZCk7XHJcbiAgICBsZXQgZW5jSXRlbWNvZGU9ZW5jb2RlVVJJQ29tcG9uZW50KGl0ZW1jb2RlKTtcclxuICAgIGxldCByZWNVcmwgPSByZWNGaWxlc1VybCArICcvJyArIGVuY0l0ZW1jb2RlICsnLycrdmVyc2lvbjtcclxuICAgIHJldHVybiB0aGlzLmF1ZGlvUmVxdWVzdChyZWNVcmwpO1xyXG4gIH1cclxuXHJcbiAgZmV0Y2hSZWNvcmRpbmdGaWxlQXVkaW9CdWZmZXIoYUN0eDogQXVkaW9Db250ZXh0LCBwcm9qZWN0TmFtZTogc3RyaW5nLCByZWNvcmRpbmdGaWxlOlJlY29yZGluZ0ZpbGUpOk9ic2VydmFibGU8QXVkaW9CdWZmZXJ8bnVsbD4ge1xyXG5cclxuICAgIGxldCB3b2JzID0gbmV3IE9ic2VydmFibGU8QXVkaW9CdWZmZXJ8bnVsbD4ob2JzZXJ2ZXI9PntcclxuICAgICAgbGV0IHJlY0ZpbGVJZD1yZWNvcmRpbmdGaWxlLnJlY29yZGluZ0ZpbGVJZDtcclxuICAgICAgaWYoIXJlY0ZpbGVJZCl7XHJcbiAgICAgICAgcmVjRmlsZUlkPXJlY29yZGluZ0ZpbGUudXVpZDtcclxuICAgICAgfVxyXG4gICAgICBpZihyZWNvcmRpbmdGaWxlLnNlc3Npb24gJiYgcmVjRmlsZUlkKSB7XHJcblxyXG4gICAgICAgIGxldCBvYnMgPSB0aGlzLmZldGNoQXVkaW9maWxlKHByb2plY3ROYW1lLCByZWNvcmRpbmdGaWxlLnNlc3Npb24sIHJlY0ZpbGVJZCk7XHJcbiAgICAgICAgb2JzLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgIGFDdHguZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSwgYWIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGFiKTtcclxuICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoJ0ZldGNoaW5nIGF1ZGlvIGZpbGU6IHJlc3BvbnNlIGhhcyBubyBib2R5Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDQpIHtcclxuICAgICAgICAgICAgICAvLyBJbnRlcnByZXQgbm90IGFzIGFuIGVycm9yLCB0aGUgZmlsZSBpc3Qgbm90IHJlY29yZGVkIHlldFxyXG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIC8vIGFsbCBvdGhlciBzdGF0ZXMgYXJlIGVycm9yc1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHdvYnM7XHJcbiAgfVxyXG5cclxuICBmZXRjaEFuZEFwcGx5UmVjb3JkaW5nRmlsZShhQ3R4OiBBdWRpb0NvbnRleHQsIHByb2plY3ROYW1lOiBzdHJpbmcsIHJlY29yZGluZ0ZpbGU6UmVjb3JkaW5nRmlsZSk6T2JzZXJ2YWJsZTxSZWNvcmRpbmdGaWxlfG51bGw+IHtcclxuXHJcbiAgICBsZXQgd29icyA9IG5ldyBPYnNlcnZhYmxlPFJlY29yZGluZ0ZpbGV8bnVsbD4ob2JzZXJ2ZXI9PntcclxuICAgICAgbGV0IHJlY0ZpbGVJZD1yZWNvcmRpbmdGaWxlLnJlY29yZGluZ0ZpbGVJZDtcclxuICAgICAgaWYoIXJlY0ZpbGVJZCl7XHJcbiAgICAgICAgcmVjRmlsZUlkPXJlY29yZGluZ0ZpbGUudXVpZDtcclxuICAgICAgfVxyXG4gICAgICBpZihyZWNvcmRpbmdGaWxlLnNlc3Npb24gJiYgcmVjRmlsZUlkKSB7XHJcblxyXG4gICAgICAgIGxldCBvYnMgPSB0aGlzLmZldGNoQXVkaW9maWxlKHByb2plY3ROYW1lLCByZWNvcmRpbmdGaWxlLnNlc3Npb24sIHJlY0ZpbGVJZCk7XHJcbiAgICAgICAgb2JzLnN1YnNjcmliZShyZXNwID0+IHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkZldGNoZWQgYXVkaW8gZmlsZS4gSFRUUCByZXNwb25zZSBzdGF0dXM6IFwiK3Jlc3Auc3RhdHVzK1wiLCB0eXBlOiBcIityZXNwLnR5cGUrXCIsIGJ5dGUgbGVuZ3RoOiBcIisgcmVzcC5ib2R5LmJ5dGVMZW5ndGgpO1xyXG5cclxuICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgIGFDdHguZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSwgYWIgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGFkaD1uZXcgQXVkaW9EYXRhSG9sZGVyKGFiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgUmVjb3JkaW5nRmlsZVV0aWxzLnNldEF1ZGlvRGF0YShyZWNvcmRpbmdGaWxlLGFkaCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1Z0RlbGF5ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVjb3JkaW5nRmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgfSwgdGhpcy5kZWJ1Z0RlbGF5KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVjb3JkaW5nRmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKCdGZXRjaGluZyBhdWRpbyBmaWxlOiByZXNwb25zZSBoYXMgbm8gYm9keScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwNCkge1xyXG4gICAgICAgICAgICAgIC8vIEludGVycHJldCBub3QgYXMgYW4gZXJyb3IsIHRoZSBmaWxlIGlzdCBub3QgcmVjb3JkZWQgeWV0XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy8gYWxsIG90aGVyIHN0YXRlcyBhcmUgZXJyb3JzXHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBvYnNlcnZlci5lcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd29icztcclxuICB9XHJcblxyXG4gIGZldGNoU3ByUmVjb3JkaW5nRmlsZUF1ZGlvQnVmZmVyKGFDdHg6IEF1ZGlvQ29udGV4dCwgcHJvamVjdE5hbWU6IHN0cmluZywgcmVjb3JkaW5nRmlsZTpTcHJSZWNvcmRpbmdGaWxlKTpPYnNlcnZhYmxlPEF1ZGlvQnVmZmVyfG51bGw+IHtcclxuXHJcbiAgICBsZXQgd29icyA9IG5ldyBPYnNlcnZhYmxlPEF1ZGlvQnVmZmVyfG51bGw+KG9ic2VydmVyPT57XHJcbiAgICAgIGlmKHJlY29yZGluZ0ZpbGUuc2Vzc2lvbikge1xyXG4gICAgICAgIGxldCBvYnMgPSB0aGlzLmZldGNoU3ByQXVkaW9maWxlKHByb2plY3ROYW1lLCByZWNvcmRpbmdGaWxlLnNlc3Npb24sIHJlY29yZGluZ0ZpbGUuaXRlbUNvZGUsIHJlY29yZGluZ0ZpbGUudmVyc2lvbik7XHJcbiAgICAgICAgb2JzLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiByZXNwID0+IHtcclxuICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgIGFDdHguZGVjb2RlQXVkaW9EYXRhKHJlc3AuYm9keSwgYWIgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy9SZWNvcmRpbmdGaWxlVXRpbHMuc2V0QXVkaW9EYXRhKHJlY29yZGluZ0ZpbGUsbmV3IEF1ZGlvRGF0YUhvbGRlcihhYixudWxsKSk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KGFiKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcignRmV0Y2hpbmcgYXVkaW8gZmlsZTogcmVzcG9uc2UgaGFzIG5vIGJvZHknKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDA0KSB7XHJcbiAgICAgICAgICAgICAgLy8gSW50ZXJwcmV0IG5vdCBhcyBhbiBlcnJvciwgdGhlIGZpbGUgaXN0IG5vdCByZWNvcmRlZCB5ZXRcclxuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyBhbGwgb3RoZXIgc3RhdGVzIGFyZSBlcnJvcnNcclxuICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX0pO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBvYnNlcnZlci5lcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd29icztcclxuICB9XHJcblxyXG5cclxuICBmZXRjaEFuZEFwcGx5U3ByUmVjb3JkaW5nRmlsZShhQ3R4OiBBdWRpb0NvbnRleHQsIHByb2plY3ROYW1lOiBzdHJpbmcsIHJlY29yZGluZ0ZpbGU6U3ByUmVjb3JkaW5nRmlsZSk6T2JzZXJ2YWJsZTxTcHJSZWNvcmRpbmdGaWxlfG51bGw+IHtcclxuXHJcbiAgICBsZXQgd29icyA9IG5ldyBPYnNlcnZhYmxlPFNwclJlY29yZGluZ0ZpbGV8bnVsbD4ob2JzZXJ2ZXI9PntcclxuICAgICAgaWYocmVjb3JkaW5nRmlsZS5zZXNzaW9uKSB7XHJcbiAgICAgICAgbGV0IG9icyA9IHRoaXMuZmV0Y2hTcHJBdWRpb2ZpbGUocHJvamVjdE5hbWUsIHJlY29yZGluZ0ZpbGUuc2Vzc2lvbiwgcmVjb3JkaW5nRmlsZS5pdGVtQ29kZSwgcmVjb3JkaW5nRmlsZS52ZXJzaW9uKTtcclxuICAgICAgICBvYnMuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJGZXRjaGVkIGF1ZGlvIGZpbGUuIEhUVFAgcmVzcG9uc2Ugc3RhdHVzOiBcIityZXNwLnN0YXR1cytcIiwgdHlwZTogXCIrcmVzcC50eXBlK1wiLCBieXRlIGxlbmd0aDogXCIrIHJlc3AuYm9keS5ieXRlTGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gRG8gbm90IHVzZSBQcm9taXNlIHZlcnNpb24sIHdoaWNoIGRvZXMgbm90IHdvcmsgd2l0aCBTYWZhcmkgMTMgKDEzLjAuNSlcclxuICAgICAgICAgICAgICBpZiAocmVzcC5ib2R5KSB7XHJcbiAgICAgICAgICAgICAgICBhQ3R4LmRlY29kZUF1ZGlvRGF0YShyZXNwLmJvZHksIGFiID0+IHtcclxuICAgICAgICAgICAgICAgICAgUmVjb3JkaW5nRmlsZVV0aWxzLnNldEF1ZGlvRGF0YShyZWNvcmRpbmdGaWxlLG5ldyBBdWRpb0RhdGFIb2xkZXIoYWIsbnVsbCkpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1Z0RlbGF5ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlY29yZGluZ0ZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLmRlYnVnRGVsYXkpO1xyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVjb3JkaW5nRmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvcignRmV0Y2hpbmcgYXVkaW8gZmlsZTogcmVzcG9uc2UgaGFzIG5vIGJvZHknKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwNCkge1xyXG4gICAgICAgICAgICAgICAgLy8gSW50ZXJwcmV0IG5vdCBhcyBhbiBlcnJvciwgdGhlIGZpbGUgaXN0IG5vdCByZWNvcmRlZCB5ZXRcclxuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIGFsbCBvdGhlciBzdGF0ZXMgYXJlIGVycm9yc1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBvYnNlcnZlci5lcnJvcigpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd29icztcclxuICB9XHJcblxyXG4gIGZldGNoUmVjb3JkaW5nRmlsZShhQ3R4OiBBdWRpb0NvbnRleHQsIHByb2plY3ROYW1lOiBzdHJpbmcsIHNlc3NJZDogc3RyaW5nIHwgbnVtYmVyLCBpdGVtY29kZTogc3RyaW5nLHZlcnNpb246bnVtYmVyKTpPYnNlcnZhYmxlPFNwclJlY29yZGluZ0ZpbGV8bnVsbD4ge1xyXG5cclxuICAgIGxldCB3b2JzID0gbmV3IE9ic2VydmFibGU8U3ByUmVjb3JkaW5nRmlsZSB8IG51bGw+KG9ic2VydmVyPT57XHJcbiAgICAgIGxldCBvYnMgPSB0aGlzLmZldGNoU3ByQXVkaW9maWxlKHByb2plY3ROYW1lLCBzZXNzSWQsIGl0ZW1jb2RlLHZlcnNpb24pO1xyXG5cclxuXHJcbiAgICAgIG9icy5zdWJzY3JpYmUocmVzcCA9PiB7XHJcbiAgICAgICAgICAgIC8vIERvIG5vdCB1c2UgUHJvbWlzZSB2ZXJzaW9uLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdpdGggU2FmYXJpIDEzXHJcbiAgICAgICAgICBpZihyZXNwLmJvZHkpIHtcclxuICAgICAgICAgICAgYUN0eC5kZWNvZGVBdWRpb0RhdGEocmVzcC5ib2R5LCBhYiA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGFkaD1uZXcgQXVkaW9EYXRhSG9sZGVyKGFiLG51bGwpO1xyXG4gICAgICAgICAgICAgIGxldCByZiA9IG5ldyBTcHJSZWNvcmRpbmdGaWxlKHNlc3NJZCwgaXRlbWNvZGUsIHZlcnNpb24sIGFkaCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZGVidWdEZWxheSA+IDApIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmYpO1xyXG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSwgdGhpcy5kZWJ1Z0RlbGF5KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZik7XHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDA0KSB7XHJcbiAgICAgICAgICAgIC8vIEludGVycHJldCBub3QgYXMgYW4gZXJyb3IsIHRoZSBmaWxlIGlzdCBub3QgcmVjb3JkZWQgeWV0XHJcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKClcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAvLyBhbGwgb3RoZXIgc3RhdGVzIGFyZSBlcnJvcnNcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHdvYnM7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -3,8 +3,15 @@ export class BasicRecFilesCache {
|
|
|
3
3
|
constructor() {
|
|
4
4
|
//public static readonly DEFAULT_MAX_SAMPLES=30*48000; // TEST 30 seconds
|
|
5
5
|
this._sampleCount = 0;
|
|
6
|
-
this.maxSampleCount =
|
|
7
|
-
this.
|
|
6
|
+
this.maxSampleCount = BasicRecFilesCache.DEFAULT_MAX_SAMPLES;
|
|
7
|
+
this._currentRecordingFile = null;
|
|
8
|
+
}
|
|
9
|
+
get currentRecordingFile() {
|
|
10
|
+
return this._currentRecordingFile;
|
|
11
|
+
}
|
|
12
|
+
set currentRecordingFile(value) {
|
|
13
|
+
this._currentRecordingFile = value;
|
|
14
|
+
this.expire();
|
|
8
15
|
}
|
|
9
16
|
}
|
|
10
17
|
BasicRecFilesCache.DEBUG = false;
|
|
@@ -29,7 +36,7 @@ export class SprItemsCache extends BasicRecFilesCache {
|
|
|
29
36
|
tryExpire(toBeExpiredRf) {
|
|
30
37
|
if (BasicRecFilesCache.DEBUG)
|
|
31
38
|
console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " try expire:");
|
|
32
|
-
if (!
|
|
39
|
+
if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
|
|
33
40
|
if (BasicRecFilesCache.DEBUG)
|
|
34
41
|
console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " not current file...");
|
|
35
42
|
if (toBeExpiredRf.serverPersisted) {
|
|
@@ -148,12 +155,18 @@ export class RecFilesCache extends BasicRecFilesCache {
|
|
|
148
155
|
}
|
|
149
156
|
let toBeExpiredRf = this._recFiles[rfI];
|
|
150
157
|
if (toBeExpiredRf.serverPersisted) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
158
|
+
if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
|
|
159
|
+
// expire recording files first stored to the cache
|
|
160
|
+
let expiredAudio = RecordingFileUtils.expireAudioData(toBeExpiredRf);
|
|
161
|
+
if (expiredAudio) {
|
|
162
|
+
this._sampleCount -= expiredAudio.sampleCounts();
|
|
163
|
+
if (BasicRecFilesCache.DEBUG)
|
|
164
|
+
console.debug("Rec. files cache: Expired #" + rfI + ". Cache samples: " + this._sampleCount);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
155
168
|
if (BasicRecFilesCache.DEBUG)
|
|
156
|
-
console.debug("Rec. files cache:
|
|
169
|
+
console.debug("Rec. files cache: #" + rfI + " is current file. (not expiring)");
|
|
157
170
|
}
|
|
158
171
|
}
|
|
159
172
|
else {
|
|
@@ -179,4 +192,4 @@ export class RecFilesCache extends BasicRecFilesCache {
|
|
|
179
192
|
console.debug("Rec. files cache: Set audio data. Cache samples: " + this._sampleCount);
|
|
180
193
|
}
|
|
181
194
|
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nX2ZpbGVfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdfZmlsZV9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGtCQUFrQixFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUlqRixNQUFNLE9BQU8sa0JBQWtCO0lBQS9CO1FBSUUsMEVBQTBFO1FBRWhFLGlCQUFZLEdBQVEsQ0FBQyxDQUFDO1FBQ2hDLG1CQUFjLEdBQVEsYUFBYSxDQUFDLG1CQUFtQixDQUFDO1FBQ2pELHlCQUFvQixHQUFvQixJQUFJLENBQUM7SUFDdEQsQ0FBQzs7QUFSd0Isd0JBQUssR0FBQyxLQUFLLENBQUM7QUFDWixzQ0FBbUIsR0FBQyxFQUFFLEdBQUMsRUFBRSxHQUFDLEtBQUssQ0FBQyxDQUFFLHdCQUF3QjtBQVduRixNQUFNLE9BQU8sYUFBYyxTQUFRLGtCQUFrQjtJQUFyRDs7UUFHWSxXQUFNLEdBQWEsSUFBSSxLQUFLLEVBQVEsQ0FBQztJQThHakQsQ0FBQztJQTVHRyxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFTO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUdPLFNBQVMsQ0FBQyxhQUE4QjtRQUM5QyxJQUFHLGtCQUFrQixDQUFDLEtBQUs7WUFBQyxPQUFPLENB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QUM7SUFFRCxVQUFVLENBQUMsT0FBcUI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsSUFBRyxrQkFBa0IsQ0FBQyxLQUFLO1lBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsR0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQXFCLEVBQUUsR0FBd0I7UUFDakUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLFlBQVksSUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0Qsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxJQUFFLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFHLGtCQUFrQixDQUFDLEtBQUs7WUFBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxHQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlY29yZGluZ0ZpbGUsIFJlY29yZGluZ0ZpbGVVdGlscywgU3ByUmVjb3JkaW5nRmlsZX0gZnJvbSBcIi4uL3JlY29yZGluZ1wiO1xyXG5pbXBvcnQge0l0ZW19IGZyb20gXCIuL2l0ZW1cIjtcclxuaW1wb3J0IHtBdWRpb0RhdGFIb2xkZXJ9IGZyb20gXCIuLi8uLi9hdWRpby9hdWRpb19kYXRhX2hvbGRlclwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEJhc2ljUmVjRmlsZXNDYWNoZSB7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUJVRz1mYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MTAqNjAqNDgwMDA7ICAvLyAyMCBNaW51dGVzIG1vbm8gNDhrSHpcclxuXHJcbiAgLy9wdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MzAqNDgwMDA7ICAvLyBURVNUIDMwIHNlY29uZHNcclxuXHJcbiAgcHJvdGVjdGVkIF9zYW1wbGVDb3VudDpudW1iZXI9MDtcclxuICBtYXhTYW1wbGVDb3VudDpudW1iZXI9U3BySXRlbXNDYWNoZS5ERUZBVUxUX01BWF9TQU1QTEVTO1xyXG4gIHB1YmxpYyBjdXJyZW50UmVjb3JkaW5nRmlsZTpSZWNvcmRpbmdGaWxlfG51bGw9bnVsbDtcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3BySXRlbXNDYWNoZSBleHRlbmRzIEJhc2ljUmVjRmlsZXNDYWNoZXtcclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfaXRlbXM6QXJyYXk8SXRlbT49bmV3IEFycmF5PEl0ZW0+KCk7XHJcblxyXG4gICAgZ2V0IGl0ZW1zKCk6IEFycmF5PEl0ZW0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkSXRlbShpdGVtOkl0ZW0pe1xyXG4gICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbShpbmRleDpudW1iZXIpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1tpbmRleF07XHJcbiAgICB9XHJcblxyXG4gICAgbGVuZ3RoKCk6bnVtYmVye1xyXG4gICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmxlbmd0aDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSB0cnlFeHBpcmUodG9CZUV4cGlyZWRSZjpTcHJSZWNvcmRpbmdGaWxlKXtcclxuICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiB0cnkgZXhwaXJlOlwiKTtcclxuICAgICAgaWYoIXRvQmVFeHBpcmVkUmYuZXF1YWxzKHRoaXMuY3VycmVudFJlY29yZGluZ0ZpbGUpKSB7XHJcbiAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBub3QgY3VycmVudCBmaWxlLi4uXCIpO1xyXG4gICAgICAgIGlmICh0b0JlRXhwaXJlZFJmLnNlcnZlclBlcnNpc3RlZCkge1xyXG4gICAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBpcyBzZXJ2ZXIgcGVyc2lzdGVkLi4uXCIpO1xyXG4gICAgICAgICAgLy8gZXhwaXJlIHJlY29yZGluZyBmaWxlcyBmaXJzdCBzdG9yZWQgdG8gdGhlIGNhY2hlXHJcbiAgICAgICAgICBsZXQgZXhwaXJlZEF1ZGlvID0gUmVjb3JkaW5nRmlsZVV0aWxzLmV4cGlyZUF1ZGlvRGF0YSh0b0JlRXhwaXJlZFJmKTtcclxuICAgICAgICAgIGlmIChleHBpcmVkQXVkaW8pIHtcclxuICAgICAgICAgICAgdGhpcy5fc2FtcGxlQ291bnQgLT0gZXhwaXJlZEF1ZGlvLnNhbXBsZUNvdW50cygpO1xyXG4gICAgICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEV4cGlyZWQ6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpK1wiLiBDYWNoZSBzYW1wbGVzIG5vdzogXCIgKyB0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogI1wiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpICsgXCIgbm90IHlldCBwZXJzaXN0ZWQgb24gc2VydmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkrXCIgaXMgY3VycmVudCBmaWxlLlwiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICBwcml2YXRlIGV4cGlyZSgpIHtcclxuICAgIC8vIGV4cGlyZSBjb3JyZWN0ZWQgdmVyc2lvbnMgZmlyc3RcclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogRXhwaXJlPyBjdXJyZW50OiBcIit0aGlzLl9zYW1wbGVDb3VudCtcIiwgbWF4OiBcIit0aGlzLm1heFNhbXBsZUNvdW50KTtcclxuICAgIGlmICh0aGlzLl9zYW1wbGVDb3VudCA+IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuXHJcbiAgICAgIC8vIGV4cGlyZSBvbGRlciB2ZXJzaW9ucyBvZiBhbiBpdGVtIGZpcnN0XHJcbiAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGlpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpdCA9IHRoaXMuX2l0ZW1zW2lpXTtcclxuICAgICAgICBsZXQgaXRSZnMgPSBpdC5yZWNzO1xyXG5cclxuICAgICAgICBpZiAoaXRSZnMgJiYgaXRSZnMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcmZpID0gMDsgcmZpIDwgaXRSZnMubGVuZ3RoIC0gMTsgcmZpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IGl0UmZzW3JmaV07XHJcbiAgICAgICAgICAgIHRoaXMudHJ5RXhwaXJlKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaWYgdGhhdCdzIG5vdCBzdWZmaWNpZW50IGV4cGlyZSBhdWRpbyBkYXRhIG9mIGxhdGVzdCB2ZXJzaW9ucyBhcyB3ZWxsXHJcbiAgICAgIGZvciAobGV0IGlpID0gMDsgaWkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7IGlpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBpdCA9IHRoaXMuX2l0ZW1zW2lpXTtcclxuICAgICAgICBsZXQgaXRSZnMgPSBpdC5yZWNzO1xyXG5cclxuICAgICAgICBpZiAoaXRSZnMgJiYgaXRSZnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcmZpID0gMDsgcmZpIDwgaXRSZnMubGVuZ3RoOyByZmkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPD0gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0b0JlRXhwaXJlZFJmID0gaXRSZnNbcmZpXTtcclxuICAgICAgICAgICAgdGhpcy50cnlFeHBpcmUodG9CZUV4cGlyZWRSZik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTcHJSZWNGaWxlKGl0ZW06SXRlbSxzcHJSZWNGaWxlOlNwclJlY29yZGluZ0ZpbGUpe1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICAgIGlmKCFpdGVtLnJlY3MpIHtcclxuICAgICAgaXRlbS5yZWNzPW5ldyBBcnJheTxTcHJSZWNvcmRpbmdGaWxlPigpO1xyXG4gICAgfVxyXG4gICAgaXRlbS5yZWNzLnB1c2goc3ByUmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCArPSBSZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQoc3ByUmVjRmlsZSk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEFkZGVkLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG5cclxuICBzZXRTcHJSZWNGaWxlQXVkaW9EYXRhKHNwclJlY0ZpbGU6U3ByUmVjb3JkaW5nRmlsZSwgYWRoOkF1ZGlvRGF0YUhvbGRlcnxudWxsKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhIGFmdGVyIGV4cGlyZS4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gICAgbGV0IGN1cnJTYW1wbGVDbnQ9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHNwclJlY0ZpbGUpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQtPWN1cnJTYW1wbGVDbnQ7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhIHN1YnRyYWN0ZWQgY3VyciBzYW1wbGUgY291bnQ6IFwiK2N1cnJTYW1wbGVDbnQrXCIuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIFJlY29yZGluZ0ZpbGVVdGlscy5zZXRBdWRpb0RhdGEoc3ByUmVjRmlsZSxhZGgpO1xyXG4gICAgbGV0IG5ld1NhbXBsZUNudD1SZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQoc3ByUmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCs9bmV3U2FtcGxlQ250O1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YSBhZGRlZCBuZXcgc2FtcGxlIGNvdW50OiBcIituZXdTYW1wbGVDbnQrXCIuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIGxldCBmbD1hZGg/LmZyYW1lTGVuO1xyXG4gICAgaWYoZmwpe1xyXG4gICAgICBzcHJSZWNGaWxlLmZyYW1lcz1mbDtcclxuICAgIH1cclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogU2V0IGF1ZGlvIGRhdGEuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUmVjRmlsZXNDYWNoZSBleHRlbmRzIEJhc2ljUmVjRmlsZXNDYWNoZXtcclxuXHJcbiAgcHJpdmF0ZSBfcmVjRmlsZXM6QXJyYXk8UmVjb3JkaW5nRmlsZT49bmV3IEFycmF5PFJlY29yZGluZ0ZpbGU+KCk7XHJcblxyXG4gIGdldCByZWNGaWxlcygpOiBBcnJheTxSZWNvcmRpbmdGaWxlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjRmlsZXM7XHJcbiAgfVxyXG5cclxuICBnZXRSZWNGaWxlKGluZGV4Om51bWJlcil7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVjRmlsZXNbaW5kZXhdO1xyXG4gIH1cclxuXHJcbiAgbGVuZ3RoKCk6bnVtYmVye1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwaXJlKCkge1xyXG4gICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50ID4gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAvLyBhdWRpbyByZWNvcmRlciBsaXN0IGlzIHNvcnRlZDogbG93ZXIgaW5kZXggaXMgbmV3ZXJcclxuICAgICAgZm9yIChsZXQgcmZJID0gdGhpcy5fcmVjRmlsZXMubGVuZ3RoLTE7IHJmSSA+PTA7IHJmSS0tKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IHRoaXMuX3JlY0ZpbGVzW3JmSV07XHJcbiAgICAgICAgaWYgKHRvQmVFeHBpcmVkUmYuc2VydmVyUGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICAvLyBleHBpcmUgcmVjb3JkaW5nIGZpbGVzIGZpcnN0IHN0b3JlZCB0byB0aGUgY2FjaGVcclxuICAgICAgICAgIGxldCBleHBpcmVkQXVkaW8gPSBSZWNvcmRpbmdGaWxlVXRpbHMuZXhwaXJlQXVkaW9EYXRhKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgaWYgKGV4cGlyZWRBdWRpbykge1xyXG4gICAgICAgICAgICB0aGlzLl9zYW1wbGVDb3VudCAtPSBleHBpcmVkQXVkaW8uc2FtcGxlQ291bnRzKCk7XHJcbiAgICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogRXhwaXJlZCAjXCIrcmZJK1wiLiBDYWNoZSBzYW1wbGVzOiBcIiArIHRoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogI1wiK3JmSStcIiBub3QgeWV0IHNlcnZlciBwZXJzaXN0ZWQuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkUmVjRmlsZShyZWNGaWxlOlJlY29yZGluZ0ZpbGUpe1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICAgIHRoaXMuX3JlY0ZpbGVzLnB1c2gocmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCArPSBSZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQocmVjRmlsZSk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEFkZGVkLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG5cclxuICBzZXRSZWNGaWxlQXVkaW9EYXRhKHJlY0ZpbGU6UmVjb3JkaW5nRmlsZSwgYWRoOkF1ZGlvRGF0YUhvbGRlcnxudWxsKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudC09UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHJlY0ZpbGUpO1xyXG4gICAgUmVjb3JkaW5nRmlsZVV0aWxzLnNldEF1ZGlvRGF0YShyZWNGaWxlLGFkaCk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCs9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHJlY0ZpbGUpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YS4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nX2ZpbGVfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zcGVlY2hyZWNvcmRlcm5nL3NyYy9saWIvc3BlZWNocmVjb3JkZXIvc2Vzc2lvbi9yZWNvcmRpbmdfZmlsZV9jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLGtCQUFrQixFQUFtQixNQUFNLGNBQWMsQ0FBQztBQUlqRixNQUFNLE9BQWdCLGtCQUFrQjtJQUF4QztRQUtFLDBFQUEwRTtRQUVoRSxpQkFBWSxHQUFRLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFRLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBQ3JELDBCQUFxQixHQUFvQixJQUFJLENBQUM7SUFXeEQsQ0FBQztJQVJDLElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLG9CQUFvQixDQUFDLEtBQTJCO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7O0FBakJzQix3QkFBSyxHQUFDLEtBQUssQ0FBQztBQUNaLHNDQUFtQixHQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUMsS0FBSyxDQUFDLENBQUUsd0JBQXdCO0FBcUJuRixNQUFNLE9BQU8sYUFBYyxTQUFRLGtCQUFrQjtJQUFyRDs7UUFHWSxXQUFNLEdBQWEsSUFBSSxLQUFLLEVBQVEsQ0FBQztJQThHakQsQ0FBQztJQTVHRyxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFTO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFZO1FBQ2hC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QWtCLENBQUMsS0FBSztZQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELEdBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25ILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVjb3JkaW5nRmlsZSwgUmVjb3JkaW5nRmlsZVV0aWxzLCBTcHJSZWNvcmRpbmdGaWxlfSBmcm9tIFwiLi4vcmVjb3JkaW5nXCI7XHJcbmltcG9ydCB7SXRlbX0gZnJvbSBcIi4vaXRlbVwiO1xyXG5pbXBvcnQge0F1ZGlvRGF0YUhvbGRlcn0gZnJvbSBcIi4uLy4uL2F1ZGlvL2F1ZGlvX2RhdGFfaG9sZGVyXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzaWNSZWNGaWxlc0NhY2hlIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUJVRz1mYWxzZTtcclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MTAqNjAqNDgwMDA7ICAvLyAyMCBNaW51dGVzIG1vbm8gNDhrSHpcclxuXHJcbiAgLy9wdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTUFYX1NBTVBMRVM9MzAqNDgwMDA7ICAvLyBURVNUIDMwIHNlY29uZHNcclxuXHJcbiAgcHJvdGVjdGVkIF9zYW1wbGVDb3VudDpudW1iZXI9MDtcclxuICBtYXhTYW1wbGVDb3VudDpudW1iZXI9QmFzaWNSZWNGaWxlc0NhY2hlLkRFRkFVTFRfTUFYX1NBTVBMRVM7XHJcbiAgcHJpdmF0ZSBfY3VycmVudFJlY29yZGluZ0ZpbGU6UmVjb3JkaW5nRmlsZXxudWxsPW51bGw7XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGV4cGlyZSgpOnZvaWQ7XHJcblxyXG4gIGdldCBjdXJyZW50UmVjb3JkaW5nRmlsZSgpOiBSZWNvcmRpbmdGaWxlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlY29yZGluZ0ZpbGU7XHJcbiAgfVxyXG5cclxuICBzZXQgY3VycmVudFJlY29yZGluZ0ZpbGUodmFsdWU6IFJlY29yZGluZ0ZpbGUgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UmVjb3JkaW5nRmlsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNwckl0ZW1zQ2FjaGUgZXh0ZW5kcyBCYXNpY1JlY0ZpbGVzQ2FjaGV7XHJcblxyXG5cclxuICAgIHByaXZhdGUgX2l0ZW1zOkFycmF5PEl0ZW0+PW5ldyBBcnJheTxJdGVtPigpO1xyXG5cclxuICAgIGdldCBpdGVtcygpOiBBcnJheTxJdGVtPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEl0ZW0oaXRlbTpJdGVtKXtcclxuICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW0oaW5kZXg6bnVtYmVyKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNbaW5kZXhdO1xyXG4gICAgfVxyXG5cclxuICAgIGxlbmd0aCgpOm51bWJlcntcclxuICAgICAgIHJldHVybiB0aGlzLl9pdGVtcy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgdHJ5RXhwaXJlKHRvQmVFeHBpcmVkUmY6U3ByUmVjb3JkaW5nRmlsZSl7XHJcbiAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkrXCIgdHJ5IGV4cGlyZTpcIik7XHJcbiAgICAgIGlmKCFSZWNvcmRpbmdGaWxlVXRpbHMuZXF1YWxzKHRvQmVFeHBpcmVkUmYsdGhpcy5jdXJyZW50UmVjb3JkaW5nRmlsZSkpIHtcclxuICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpK1wiIG5vdCBjdXJyZW50IGZpbGUuLi5cIik7XHJcbiAgICAgICAgaWYgKHRvQmVFeHBpcmVkUmYuc2VydmVyUGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFwiICsgdG9CZUV4cGlyZWRSZi50b1N0cmluZygpK1wiIGlzIHNlcnZlciBwZXJzaXN0ZWQuLi5cIik7XHJcbiAgICAgICAgICAvLyBleHBpcmUgcmVjb3JkaW5nIGZpbGVzIGZpcnN0IHN0b3JlZCB0byB0aGUgY2FjaGVcclxuICAgICAgICAgIGxldCBleHBpcmVkQXVkaW8gPSBSZWNvcmRpbmdGaWxlVXRpbHMuZXhwaXJlQXVkaW9EYXRhKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgaWYgKGV4cGlyZWRBdWRpbykge1xyXG4gICAgICAgICAgICB0aGlzLl9zYW1wbGVDb3VudCAtPSBleHBpcmVkQXVkaW8uc2FtcGxlQ291bnRzKCk7XHJcbiAgICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogRXhwaXJlZDogXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkrXCIuIENhY2hlIHNhbXBsZXMgbm93OiBcIiArIHRoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiAjXCIgKyB0b0JlRXhwaXJlZFJmLnRvU3RyaW5nKCkgKyBcIiBub3QgeWV0IHBlcnNpc3RlZCBvbiBzZXJ2ZXIuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBcIiArIHRvQmVFeHBpcmVkUmYudG9TdHJpbmcoKStcIiBpcyBjdXJyZW50IGZpbGUuXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIHByb3RlY3RlZCBleHBpcmUoKSB7XHJcbiAgICAvLyBleHBpcmUgY29ycmVjdGVkIHZlcnNpb25zIGZpcnN0XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEV4cGlyZT8gY3VycmVudDogXCIrdGhpcy5fc2FtcGxlQ291bnQrXCIsIG1heDogXCIrdGhpcy5tYXhTYW1wbGVDb3VudCk7XHJcbiAgICBpZiAodGhpcy5fc2FtcGxlQ291bnQgPiB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcblxyXG4gICAgICAvLyBleHBpcmUgb2xkZXIgdmVyc2lvbnMgb2YgYW4gaXRlbSBmaXJzdFxyXG4gICAgICBmb3IgKGxldCBpaSA9IDA7IGlpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaXQgPSB0aGlzLl9pdGVtc1tpaV07XHJcbiAgICAgICAgbGV0IGl0UmZzID0gaXQucmVjcztcclxuXHJcbiAgICAgICAgaWYgKGl0UmZzICYmIGl0UmZzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIGZvciAobGV0IHJmaSA9IDA7IHJmaSA8IGl0UmZzLmxlbmd0aCAtIDE7IHJmaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9zYW1wbGVDb3VudCA8PSB0aGlzLm1heFNhbXBsZUNvdW50KSB7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHRvQmVFeHBpcmVkUmYgPSBpdFJmc1tyZmldO1xyXG4gICAgICAgICAgICB0aGlzLnRyeUV4cGlyZSh0b0JlRXhwaXJlZFJmKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGlmIHRoYXQncyBub3Qgc3VmZmljaWVudCBleHBpcmUgYXVkaW8gZGF0YSBvZiBsYXRlc3QgdmVyc2lvbnMgYXMgd2VsbFxyXG4gICAgICBmb3IgKGxldCBpaSA9IDA7IGlpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaXQgPSB0aGlzLl9pdGVtc1tpaV07XHJcbiAgICAgICAgbGV0IGl0UmZzID0gaXQucmVjcztcclxuXHJcbiAgICAgICAgaWYgKGl0UmZzICYmIGl0UmZzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGZvciAobGV0IHJmaSA9IDA7IHJmaSA8IGl0UmZzLmxlbmd0aDsgcmZpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IGl0UmZzW3JmaV07XHJcbiAgICAgICAgICAgIHRoaXMudHJ5RXhwaXJlKHRvQmVFeHBpcmVkUmYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU3ByUmVjRmlsZShpdGVtOkl0ZW0sc3ByUmVjRmlsZTpTcHJSZWNvcmRpbmdGaWxlKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICBpZighaXRlbS5yZWNzKSB7XHJcbiAgICAgIGl0ZW0ucmVjcz1uZXcgQXJyYXk8U3ByUmVjb3JkaW5nRmlsZT4oKTtcclxuICAgIH1cclxuICAgIGl0ZW0ucmVjcy5wdXNoKHNwclJlY0ZpbGUpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQgKz0gUmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHNwclJlY0ZpbGUpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBBZGRlZC4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gIH1cclxuXHJcbiAgc2V0U3ByUmVjRmlsZUF1ZGlvRGF0YShzcHJSZWNGaWxlOlNwclJlY29yZGluZ0ZpbGUsIGFkaDpBdWRpb0RhdGFIb2xkZXJ8bnVsbCl7XHJcbiAgICB0aGlzLmV4cGlyZSgpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YSBhZnRlciBleHBpcmUuIENhY2hlIHNhbXBsZXM6IFwiK3RoaXMuX3NhbXBsZUNvdW50KTtcclxuICAgIGxldCBjdXJyU2FtcGxlQ250PVJlY29yZGluZ0ZpbGVVdGlscy5zYW1wbGVDb3VudChzcHJSZWNGaWxlKTtcclxuICAgIHRoaXMuX3NhbXBsZUNvdW50LT1jdXJyU2FtcGxlQ250O1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YSBzdWJ0cmFjdGVkIGN1cnIgc2FtcGxlIGNvdW50OiBcIitjdXJyU2FtcGxlQ250K1wiLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICBSZWNvcmRpbmdGaWxlVXRpbHMuc2V0QXVkaW9EYXRhKHNwclJlY0ZpbGUsYWRoKTtcclxuICAgIGxldCBuZXdTYW1wbGVDbnQ9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHNwclJlY0ZpbGUpO1xyXG4gICAgdGhpcy5fc2FtcGxlQ291bnQrPW5ld1NhbXBsZUNudDtcclxuICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogU2V0IGF1ZGlvIGRhdGEgYWRkZWQgbmV3IHNhbXBsZSBjb3VudDogXCIrbmV3U2FtcGxlQ250K1wiLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICBsZXQgZmw9YWRoPy5mcmFtZUxlbjtcclxuICAgIGlmKGZsKXtcclxuICAgICAgc3ByUmVjRmlsZS5mcmFtZXM9Zmw7XHJcbiAgICB9XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IFNldCBhdWRpbyBkYXRhLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFJlY0ZpbGVzQ2FjaGUgZXh0ZW5kcyBCYXNpY1JlY0ZpbGVzQ2FjaGV7XHJcblxyXG4gIHByaXZhdGUgX3JlY0ZpbGVzOkFycmF5PFJlY29yZGluZ0ZpbGU+PW5ldyBBcnJheTxSZWNvcmRpbmdGaWxlPigpO1xyXG5cclxuICBnZXQgcmVjRmlsZXMoKTogQXJyYXk8UmVjb3JkaW5nRmlsZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVjRmlsZShpbmRleDpudW1iZXIpe1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlY0ZpbGVzW2luZGV4XTtcclxuICB9XHJcblxyXG4gIGxlbmd0aCgpOm51bWJlcntcclxuICAgIHJldHVybiB0aGlzLl9yZWNGaWxlcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZXhwaXJlKCkge1xyXG4gICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50ID4gdGhpcy5tYXhTYW1wbGVDb3VudCkge1xyXG4gICAgICAvLyBhdWRpbyByZWNvcmRlciBsaXN0IGlzIHNvcnRlZDogbG93ZXIgaW5kZXggaXMgbmV3ZXJcclxuICAgICAgZm9yIChsZXQgcmZJID0gdGhpcy5fcmVjRmlsZXMubGVuZ3RoLTE7IHJmSSA+PTA7IHJmSS0tKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NhbXBsZUNvdW50IDw9IHRoaXMubWF4U2FtcGxlQ291bnQpIHtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG9CZUV4cGlyZWRSZiA9IHRoaXMuX3JlY0ZpbGVzW3JmSV07XHJcbiAgICAgICAgaWYgKHRvQmVFeHBpcmVkUmYuc2VydmVyUGVyc2lzdGVkKSB7XHJcbiAgICAgICAgICBpZighUmVjb3JkaW5nRmlsZVV0aWxzLmVxdWFscyh0b0JlRXhwaXJlZFJmLHRoaXMuY3VycmVudFJlY29yZGluZ0ZpbGUpKSB7XHJcbiAgICAgICAgICAgIC8vIGV4cGlyZSByZWNvcmRpbmcgZmlsZXMgZmlyc3Qgc3RvcmVkIHRvIHRoZSBjYWNoZVxyXG4gICAgICAgICAgICBsZXQgZXhwaXJlZEF1ZGlvID0gUmVjb3JkaW5nRmlsZVV0aWxzLmV4cGlyZUF1ZGlvRGF0YSh0b0JlRXhwaXJlZFJmKTtcclxuICAgICAgICAgICAgaWYgKGV4cGlyZWRBdWRpbykge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3NhbXBsZUNvdW50IC09IGV4cGlyZWRBdWRpby5zYW1wbGVDb3VudHMoKTtcclxuICAgICAgICAgICAgICBpZiAoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKSBjb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogRXhwaXJlZCAjXCIgKyByZkkgKyBcIi4gQ2FjaGUgc2FtcGxlczogXCIgKyB0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6ICNcIityZkkrXCIgaXMgY3VycmVudCBmaWxlLiAobm90IGV4cGlyaW5nKVwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIGlmKEJhc2ljUmVjRmlsZXNDYWNoZS5ERUJVRyljb25zb2xlLmRlYnVnKFwiUmVjLiBmaWxlcyBjYWNoZTogI1wiK3JmSStcIiBub3QgeWV0IHNlcnZlciBwZXJzaXN0ZWQuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkUmVjRmlsZShyZWNGaWxlOlJlY29yZGluZ0ZpbGUpe1xyXG4gICAgdGhpcy5leHBpcmUoKTtcclxuICAgIHRoaXMuX3JlY0ZpbGVzLnB1c2gocmVjRmlsZSk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCArPSBSZWNvcmRpbmdGaWxlVXRpbHMuc2FtcGxlQ291bnQocmVjRmlsZSk7XHJcbiAgICBpZihCYXNpY1JlY0ZpbGVzQ2FjaGUuREVCVUcpY29uc29sZS5kZWJ1ZyhcIlJlYy4gZmlsZXMgY2FjaGU6IEFkZGVkLiBDYWNoZSBzYW1wbGVzOiBcIit0aGlzLl9zYW1wbGVDb3VudCk7XHJcbiAgfVxyXG5cclxuICBzZXRSZWNGaWxlQXVkaW9EYXRhKHJlY0ZpbGU6UmVjb3JkaW5nRmlsZSwgYWRoOkF1ZGlvRGF0YUhvbGRlcnxudWxsKXtcclxuICAgIHRoaXMuZXhwaXJlKCk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudC09UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHJlY0ZpbGUpO1xyXG4gICAgUmVjb3JkaW5nRmlsZVV0aWxzLnNldEF1ZGlvRGF0YShyZWNGaWxlLGFkaCk7XHJcbiAgICB0aGlzLl9zYW1wbGVDb3VudCs9UmVjb3JkaW5nRmlsZVV0aWxzLnNhbXBsZUNvdW50KHJlY0ZpbGUpO1xyXG4gICAgaWYoQmFzaWNSZWNGaWxlc0NhY2hlLkRFQlVHKWNvbnNvbGUuZGVidWcoXCJSZWMuIGZpbGVzIGNhY2hlOiBTZXQgYXVkaW8gZGF0YS4gQ2FjaGUgc2FtcGxlczogXCIrdGhpcy5fc2FtcGxlQ291bnQpO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '3.0.
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const VERSION = '3.0.1';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByLm1vZHVsZS52ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL3Nwci5tb2R1bGUudmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUMsT0FBTyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFUlNJT049JzMuMC4xJyJdfQ==
|
|
@@ -2295,6 +2295,17 @@ class SprRecordingFile extends RecordingFile {
|
|
|
2295
2295
|
}
|
|
2296
2296
|
}
|
|
2297
2297
|
class RecordingFileUtils {
|
|
2298
|
+
static equals(recordinFile, otherRecordingFile) {
|
|
2299
|
+
if (recordinFile && otherRecordingFile) {
|
|
2300
|
+
if (otherRecordingFile === recordinFile) {
|
|
2301
|
+
return true;
|
|
2302
|
+
}
|
|
2303
|
+
if (otherRecordingFile.uuid === recordinFile.uuid) {
|
|
2304
|
+
return true;
|
|
2305
|
+
}
|
|
2306
|
+
}
|
|
2307
|
+
return false;
|
|
2308
|
+
}
|
|
2298
2309
|
static setAudioData(rf, audioDataHolder) {
|
|
2299
2310
|
rf.audioDataHolder = audioDataHolder;
|
|
2300
2311
|
if (audioDataHolder) {
|
|
@@ -9189,8 +9200,15 @@ class BasicRecFilesCache {
|
|
|
9189
9200
|
constructor() {
|
|
9190
9201
|
//public static readonly DEFAULT_MAX_SAMPLES=30*48000; // TEST 30 seconds
|
|
9191
9202
|
this._sampleCount = 0;
|
|
9192
|
-
this.maxSampleCount =
|
|
9193
|
-
this.
|
|
9203
|
+
this.maxSampleCount = BasicRecFilesCache.DEFAULT_MAX_SAMPLES;
|
|
9204
|
+
this._currentRecordingFile = null;
|
|
9205
|
+
}
|
|
9206
|
+
get currentRecordingFile() {
|
|
9207
|
+
return this._currentRecordingFile;
|
|
9208
|
+
}
|
|
9209
|
+
set currentRecordingFile(value) {
|
|
9210
|
+
this._currentRecordingFile = value;
|
|
9211
|
+
this.expire();
|
|
9194
9212
|
}
|
|
9195
9213
|
}
|
|
9196
9214
|
BasicRecFilesCache.DEBUG = false;
|
|
@@ -9215,7 +9233,7 @@ class SprItemsCache extends BasicRecFilesCache {
|
|
|
9215
9233
|
tryExpire(toBeExpiredRf) {
|
|
9216
9234
|
if (BasicRecFilesCache.DEBUG)
|
|
9217
9235
|
console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " try expire:");
|
|
9218
|
-
if (!
|
|
9236
|
+
if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
|
|
9219
9237
|
if (BasicRecFilesCache.DEBUG)
|
|
9220
9238
|
console.debug("Rec. files cache: " + toBeExpiredRf.toString() + " not current file...");
|
|
9221
9239
|
if (toBeExpiredRf.serverPersisted) {
|
|
@@ -9334,12 +9352,18 @@ class RecFilesCache extends BasicRecFilesCache {
|
|
|
9334
9352
|
}
|
|
9335
9353
|
let toBeExpiredRf = this._recFiles[rfI];
|
|
9336
9354
|
if (toBeExpiredRf.serverPersisted) {
|
|
9337
|
-
|
|
9338
|
-
|
|
9339
|
-
|
|
9340
|
-
|
|
9355
|
+
if (!RecordingFileUtils.equals(toBeExpiredRf, this.currentRecordingFile)) {
|
|
9356
|
+
// expire recording files first stored to the cache
|
|
9357
|
+
let expiredAudio = RecordingFileUtils.expireAudioData(toBeExpiredRf);
|
|
9358
|
+
if (expiredAudio) {
|
|
9359
|
+
this._sampleCount -= expiredAudio.sampleCounts();
|
|
9360
|
+
if (BasicRecFilesCache.DEBUG)
|
|
9361
|
+
console.debug("Rec. files cache: Expired #" + rfI + ". Cache samples: " + this._sampleCount);
|
|
9362
|
+
}
|
|
9363
|
+
}
|
|
9364
|
+
else {
|
|
9341
9365
|
if (BasicRecFilesCache.DEBUG)
|
|
9342
|
-
console.debug("Rec. files cache:
|
|
9366
|
+
console.debug("Rec. files cache: #" + rfI + " is current file. (not expiring)");
|
|
9343
9367
|
}
|
|
9344
9368
|
}
|
|
9345
9369
|
else {
|
|
@@ -9465,33 +9489,30 @@ class RecordingService {
|
|
|
9465
9489
|
}
|
|
9466
9490
|
if (recordingFile.session && recFileId) {
|
|
9467
9491
|
let obs = this.fetchAudiofile(projectName, recordingFile.session, recFileId);
|
|
9468
|
-
obs.subscribe({
|
|
9469
|
-
|
|
9470
|
-
|
|
9471
|
-
|
|
9472
|
-
|
|
9473
|
-
observer.next(ab);
|
|
9474
|
-
observer.complete();
|
|
9475
|
-
}, error => {
|
|
9476
|
-
observer.error(error);
|
|
9477
|
-
observer.complete();
|
|
9478
|
-
});
|
|
9479
|
-
}
|
|
9480
|
-
else {
|
|
9481
|
-
observer.error('Fetching audio file: response has no body');
|
|
9482
|
-
}
|
|
9483
|
-
},
|
|
9484
|
-
error: (error) => {
|
|
9485
|
-
if (error.status == 404) {
|
|
9486
|
-
// Interpret not as an error, the file ist not recorded yet
|
|
9487
|
-
observer.next(null);
|
|
9492
|
+
obs.subscribe(resp => {
|
|
9493
|
+
// Do not use Promise version, which does not work with Safari 13 (13.0.5)
|
|
9494
|
+
if (resp.body) {
|
|
9495
|
+
aCtx.decodeAudioData(resp.body, ab => {
|
|
9496
|
+
observer.next(ab);
|
|
9488
9497
|
observer.complete();
|
|
9489
|
-
}
|
|
9490
|
-
else {
|
|
9491
|
-
// all other states are errors
|
|
9498
|
+
}, error => {
|
|
9492
9499
|
observer.error(error);
|
|
9493
9500
|
observer.complete();
|
|
9494
|
-
}
|
|
9501
|
+
});
|
|
9502
|
+
}
|
|
9503
|
+
else {
|
|
9504
|
+
observer.error('Fetching audio file: response has no body');
|
|
9505
|
+
}
|
|
9506
|
+
}, (error) => {
|
|
9507
|
+
if (error.status == 404) {
|
|
9508
|
+
// Interpret not as an error, the file ist not recorded yet
|
|
9509
|
+
observer.next(null);
|
|
9510
|
+
observer.complete();
|
|
9511
|
+
}
|
|
9512
|
+
else {
|
|
9513
|
+
// all other states are errors
|
|
9514
|
+
observer.error(error);
|
|
9515
|
+
observer.complete();
|
|
9495
9516
|
}
|
|
9496
9517
|
});
|
|
9497
9518
|
}
|
|
@@ -13932,7 +13953,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
13932
13953
|
}]
|
|
13933
13954
|
}] });
|
|
13934
13955
|
|
|
13935
|
-
const VERSION = '3.0.
|
|
13956
|
+
const VERSION = '3.0.1';
|
|
13936
13957
|
|
|
13937
13958
|
/*
|
|
13938
13959
|
* Public API Surface of speechrecorderng
|