UNPKG

@sam17896/ngx-speech-recognition

Version:

Angular 5+ speech recognition service (based on browser implementation such as Chrome).

207 lines 18.2 kB
/** * @fileoverview added by tsickle * Generated from: lib/service/speech-recognition.common.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export class SpeechRecognitionCommon { /** * @param {?} _grammars * @param {?} _lang * @param {?} _continuous * @param {?} _interimResults * @param {?} _maxAlternatives * @param {?} _serviceURI */ constructor(_grammars, _lang, _continuous, _interimResults, _maxAlternatives, _serviceURI) { this._grammars = _grammars; this._lang = _lang; this._continuous = _continuous; this._interimResults = _interimResults; this._maxAlternatives = _maxAlternatives; this._serviceURI = _serviceURI; this.internal = new SpeechRecognition(); } /** * Property * @return {?} */ // The grammars property of the SpeechRecognition interface returns and sets // a collection of SpeechGrammar objects // that represent the grammars that will be understood // by the current SpeechRecognition. // // SpeechRecognitionインターフェイスのgrammarsプロパティは、 // 現在のSpeechRecognitionで認識される文法を表す // SpeechGrammarオブジェクトのコレクションを返して設定します。 get grammars() { return this._grammars; } /** * @param {?} grammars * @return {?} */ set grammars(grammars) { this._grammars = grammars; if (this._grammars !== undefined && this._grammars != null && this.internal) { this.internal.grammars = this._grammars; } } // The lang property of the SpeechRecognition interface returns // and sets the language of the current SpeechRecognition. // If not specified, this defaults to the HTML lang attribute value, // or the user agent's language setting if that isn't set either. // // SpeechRecognitionインターフェイスのlangプロパティは、 // 現在のSpeechRecognitionの言語を返して設定します。 // 指定されていない場合、これはデフォルトでHTMLのlang属性の値、 // またはユーザエージェントの言語設定が設定されていない場合は // その値になります。 /** * @return {?} */ get lang() { return this._lang; } /** * @param {?} lang * @return {?} */ set lang(lang) { this._lang = lang; if (this._lang !== undefined && this._lang != null && this.internal) { this.internal.lang = this._lang; } } // The continuous property of the SpeechRecognition interface controls // whether continuous results are returned for each recognition, or only a single result. // // SpeechRecognitionインターフェイスの連続プロパティは、 // 認識結果ごとに連続した結果を返すか、単一の結果のみを返すかを制御します。 /** * @return {?} */ get continuous() { return this._continuous; } /** * @param {?} continuous * @return {?} */ set continuous(continuous) { this._continuous = continuous; if (this._continuous !== undefined && this._continuous != null && this.internal) { this.internal.continuous = this._continuous; } } // The interimResults property of the SpeechRecognition interface controls // whether interim results should be returned (true) // or not (false.) Interim results are results that are not yet final // (e.g. the SpeechRecognitionResult.isFinal property is false.) // // SpeechRecognitionインターフェイスのinterimResultsプロパティは、 // 中間結果を返すかどうか(true)、そうでないか(false)を制御します。 // 中間結果は、最終段階ではない結果です(SpeechRecognitionResult.isFinalプロパティはfalseです)。 /** * @return {?} */ get interimResults() { return this._interimResults; } /** * @param {?} interimResults * @return {?} */ set interimResults(interimResults) { this._interimResults = interimResults; if (this._interimResults !== undefined && this._interimResults != null && this.internal) { this.internal.interimResults = this._interimResults; } } // The maxAlternatives property of the SpeechRecognition interface sets // the maximum number of SpeechRecognitionAlternatives // provided per SpeechRecognitionResult. // // SpeechRecognitionインターフェイスのmaxAlternativesプロパティは、 // SpeechRecognitionResultごとに提供される // SpeechRecognitionAlternativesの最大数を設定します。 /** * @return {?} */ get maxAlternatives() { return this._maxAlternatives; } /** * @param {?} maxAlternatives * @return {?} */ set maxAlternatives(maxAlternatives) { this._maxAlternatives = maxAlternatives; if (this._maxAlternatives !== undefined && this._maxAlternatives != null && this.internal) { this.internal.maxAlternatives = this._maxAlternatives; } } // The serviceURI property of the SpeechRecognition interface specifies // the location of the speech recognition service // used by the current SpeechRecognition to handle // the actual recognition. The default is the user agent's // default speech service. // // SpeechRecognitionインターフェイスのserviceURIプロパティは、 // 現在のSpeechRecognitionが実際の認識を処理するために使用する // 音声認識サービスの場所を指定します。 // デフォルトはユーザエージェントのデフォルト音声サービスです。 /** * @return {?} */ get serviceURI() { return this._serviceURI; } /** * @param {?} serviceURI * @return {?} */ set serviceURI(serviceURI) { this._serviceURI = serviceURI; if (this._serviceURI !== undefined && this._serviceURI != null && this.internal) { this.internal.serviceURI = this._serviceURI; } } } if (false) { /** * @type {?} * @protected */ SpeechRecognitionCommon.prototype.internal; /** * @type {?} * @protected */ SpeechRecognitionCommon.prototype._grammars; /** * @type {?} * @protected */ SpeechRecognitionCommon.prototype._lang; /** * @type {?} * @protected */ SpeechRecognitionCommon.prototype._continuous; /** * @type {?} * @protected */ SpeechRecognitionCommon.prototype._interimResults; /** * @type {?} * @protected */ SpeechRecognitionCommon.prototype._maxAlternatives; /** * @type {?} * @protected */ SpeechRecognitionCommon.prototype._serviceURI; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLmNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzYW0xNzg5Ni9uZ3gtc3BlZWNoLXJlY29nbml0aW9uLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2Uvc3BlZWNoLXJlY29nbml0aW9uLmNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLE1BQU0sT0FBTyx1QkFBdUI7Ozs7Ozs7OztJQUlsQyxZQUNZLFNBQWdDLEVBQ2hDLEtBQWEsRUFDYixXQUFvQixFQUNwQixlQUF3QixFQUN4QixnQkFBd0IsRUFDeEIsV0FBbUI7UUFMbkIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1FBQ3BCLG9CQUFlLEdBQWYsZUFBZSxDQUFTO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQVJyQixhQUFRLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztJQVM1RCxDQUFDOzs7Ozs7Ozs7Ozs7O0lBZ0JMLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDOzs7OztJQUVELElBQUksUUFBUSxDQUFDLFFBQStCO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3pDO0lBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUFZRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7Ozs7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7Ozs7Ozs7O0lBT0QsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBRUQsSUFBSSxVQUFVLENBQUMsVUFBbUI7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQy9FLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDN0M7SUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7SUFVRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7Ozs7O0lBQ0QsSUFBSSxjQUFjLENBQUMsY0FBdUI7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZGLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDckQ7SUFDSCxDQUFDOzs7Ozs7Ozs7OztJQVNELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDOzs7OztJQUNELElBQUksZUFBZSxDQUFDLGVBQXVCO1FBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6RixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDdkQ7SUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7OztJQVlELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzs7OztJQUNELElBQUksVUFBVSxDQUFDLFVBQWtCO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMvRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztDQUVGOzs7Ozs7SUFoSUMsMkNBQWdFOzs7OztJQUc5RCw0Q0FBMEM7Ozs7O0lBQzFDLHdDQUF1Qjs7Ozs7SUFDdkIsOENBQThCOzs7OztJQUM5QixrREFBa0M7Ozs7O0lBQ2xDLG1EQUFrQzs7Ozs7SUFDbEMsOENBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBTcGVlY2hHcmFtbWFyTGlzdFR5cGUsXHJcbn0gZnJvbSAnLi4vYWRhcHRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgU3BlZWNoUmVjb2duaXRpb25Db21tb24ge1xyXG5cclxuICBwcm90ZWN0ZWQgaW50ZXJuYWw6IFNwZWVjaFJlY29nbml0aW9uID0gbmV3IFNwZWVjaFJlY29nbml0aW9uKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIF9ncmFtbWFyczogU3BlZWNoR3JhbW1hckxpc3RUeXBlLFxyXG4gICAgcHJvdGVjdGVkIF9sYW5nOiBzdHJpbmcsXHJcbiAgICBwcm90ZWN0ZWQgX2NvbnRpbnVvdXM6IGJvb2xlYW4sXHJcbiAgICBwcm90ZWN0ZWQgX2ludGVyaW1SZXN1bHRzOiBib29sZWFuLFxyXG4gICAgcHJvdGVjdGVkIF9tYXhBbHRlcm5hdGl2ZXM6IG51bWJlcixcclxuICAgIHByb3RlY3RlZCBfc2VydmljZVVSSTogc3RyaW5nLFxyXG4gICkgeyB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBQcm9wZXJ0eVxyXG4gICAqL1xyXG5cclxuXHJcbiAgLy8gVGhlIGdyYW1tYXJzIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2UgcmV0dXJucyBhbmQgc2V0c1xyXG4gIC8vIGEgY29sbGVjdGlvbiBvZiBTcGVlY2hHcmFtbWFyIG9iamVjdHNcclxuICAvLyB0aGF0IHJlcHJlc2VudCB0aGUgZ3JhbW1hcnMgdGhhdCB3aWxsIGJlIHVuZGVyc3Rvb2RcclxuICAvLyBieSB0aGUgY3VycmVudCBTcGVlY2hSZWNvZ25pdGlvbi5cclxuICAvL1xyXG4gIC8vIFNwZWVjaFJlY29nbml0aW9u44Kk44Oz44K/44O844OV44Kn44Kk44K544GuZ3JhbW1hcnPjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDnj77lnKjjga5TcGVlY2hSZWNvZ25pdGlvbuOBp+iqjeitmOOBleOCjOOCi+aWh+azleOCkuihqOOBmVxyXG4gIC8vIFNwZWVjaEdyYW1tYXLjgqrjg5bjgrjjgqfjgq/jg4jjga7jgrPjg6zjgq/jgrfjg6fjg7PjgpLov5TjgZfjgaboqK3lrprjgZfjgb7jgZnjgIJcclxuICBnZXQgZ3JhbW1hcnMoKTogU3BlZWNoR3JhbW1hckxpc3RUeXBlIHtcclxuICAgIHJldHVybiB0aGlzLl9ncmFtbWFycztcclxuICB9XHJcblxyXG4gIHNldCBncmFtbWFycyhncmFtbWFyczogU3BlZWNoR3JhbW1hckxpc3RUeXBlKSB7XHJcbiAgICB0aGlzLl9ncmFtbWFycyA9IGdyYW1tYXJzO1xyXG4gICAgaWYgKHRoaXMuX2dyYW1tYXJzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fZ3JhbW1hcnMgIT0gbnVsbCAmJiB0aGlzLmludGVybmFsKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWwuZ3JhbW1hcnMgPSB0aGlzLl9ncmFtbWFycztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSBsYW5nIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2UgcmV0dXJuc1xyXG4gIC8vIGFuZCBzZXRzIHRoZSBsYW5ndWFnZSBvZiB0aGUgY3VycmVudCBTcGVlY2hSZWNvZ25pdGlvbi5cclxuICAvLyBJZiBub3Qgc3BlY2lmaWVkLCB0aGlzIGRlZmF1bHRzIHRvIHRoZSBIVE1MIGxhbmcgYXR0cmlidXRlIHZhbHVlLFxyXG4gIC8vIG9yIHRoZSB1c2VyIGFnZW50J3MgbGFuZ3VhZ2Ugc2V0dGluZyBpZiB0aGF0IGlzbid0IHNldCBlaXRoZXIuXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrmxhbmfjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDnj77lnKjjga5TcGVlY2hSZWNvZ25pdGlvbuOBruiogOiqnuOCkui/lOOBl+OBpuioreWumuOBl+OBvuOBmeOAglxyXG4gIC8vIOaMh+WumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOAgeOBk+OCjOOBr+ODh+ODleOCqeODq+ODiOOBp0hUTUzjga5sYW5n5bGe5oCn44Gu5YCk44CBXHJcbiAgLy8g44G+44Gf44Gv44Om44O844K244Ko44O844K444Kn44Oz44OI44Gu6KiA6Kqe6Kit5a6a44GM6Kit5a6a44GV44KM44Gm44GE44Gq44GE5aC05ZCI44GvXHJcbiAgLy8g44Gd44Gu5YCk44Gr44Gq44KK44G+44GZ44CCXHJcbiAgZ2V0IGxhbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYW5nO1xyXG4gIH1cclxuXHJcbiAgc2V0IGxhbmcobGFuZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sYW5nID0gbGFuZztcclxuICAgIGlmICh0aGlzLl9sYW5nICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fbGFuZyAhPSBudWxsICYmIHRoaXMuaW50ZXJuYWwpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbC5sYW5nID0gdGhpcy5fbGFuZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSBjb250aW51b3VzIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2UgY29udHJvbHNcclxuICAvLyB3aGV0aGVyIGNvbnRpbnVvdXMgcmVzdWx0cyBhcmUgcmV0dXJuZWQgZm9yIGVhY2ggcmVjb2duaXRpb24sIG9yIG9ubHkgYSBzaW5nbGUgcmVzdWx0LlxyXG4gIC8vXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb27jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7pgKPntprjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDoqo3orZjntZDmnpzjgZTjgajjgavpgKPntprjgZfjgZ/ntZDmnpzjgpLov5TjgZnjgYvjgIHljZjkuIDjga7ntZDmnpzjga7jgb/jgpLov5TjgZnjgYvjgpLliLblvqHjgZfjgb7jgZnjgIJcclxuICBnZXQgY29udGludW91cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250aW51b3VzO1xyXG4gIH1cclxuXHJcbiAgc2V0IGNvbnRpbnVvdXMoY29udGludW91czogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY29udGludW91cyA9IGNvbnRpbnVvdXM7XHJcbiAgICBpZiAodGhpcy5fY29udGludW91cyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2NvbnRpbnVvdXMgIT0gbnVsbCAmJiB0aGlzLmludGVybmFsKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWwuY29udGludW91cyA9IHRoaXMuX2NvbnRpbnVvdXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgaW50ZXJpbVJlc3VsdHMgcHJvcGVydHkgb2YgdGhlIFNwZWVjaFJlY29nbml0aW9uIGludGVyZmFjZSBjb250cm9sc1xyXG4gIC8vIHdoZXRoZXIgaW50ZXJpbSByZXN1bHRzIHNob3VsZCBiZSByZXR1cm5lZCAodHJ1ZSlcclxuICAvLyBvciBub3QgKGZhbHNlLikgSW50ZXJpbSByZXN1bHRzIGFyZSByZXN1bHRzIHRoYXQgYXJlIG5vdCB5ZXQgZmluYWxcclxuICAvLyAoZS5nLiB0aGUgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaXNGaW5hbCBwcm9wZXJ0eSBpcyBmYWxzZS4pXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrmludGVyaW1SZXN1bHRz44OX44Ot44OR44OG44Kj44Gv44CBXHJcbiAgLy8g5Lit6ZaT57WQ5p6c44KS6L+U44GZ44GL44Gp44GG44GL77yIdHJ1Ze+8ieOAgeOBneOBhuOBp+OBquOBhOOBi++8iGZhbHNl77yJ44KS5Yi25b6h44GX44G+44GZ44CCXHJcbiAgLy8g5Lit6ZaT57WQ5p6c44Gv44CB5pyA57WC5q616ZqO44Gn44Gv44Gq44GE57WQ5p6c44Gn44GZ77yIU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuaXNGaW5hbOODl+ODreODkeODhuOCo+OBr2ZhbHNl44Gn44GZ77yJ44CCXHJcbiAgZ2V0IGludGVyaW1SZXN1bHRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVyaW1SZXN1bHRzO1xyXG4gIH1cclxuICBzZXQgaW50ZXJpbVJlc3VsdHMoaW50ZXJpbVJlc3VsdHM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2ludGVyaW1SZXN1bHRzID0gaW50ZXJpbVJlc3VsdHM7XHJcbiAgICBpZiAodGhpcy5faW50ZXJpbVJlc3VsdHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9pbnRlcmltUmVzdWx0cyAhPSBudWxsICYmIHRoaXMuaW50ZXJuYWwpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbC5pbnRlcmltUmVzdWx0cyA9IHRoaXMuX2ludGVyaW1SZXN1bHRzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVGhlIG1heEFsdGVybmF0aXZlcyBwcm9wZXJ0eSBvZiB0aGUgU3BlZWNoUmVjb2duaXRpb24gaW50ZXJmYWNlIHNldHNcclxuICAvLyB0aGUgbWF4aW11bSBudW1iZXIgb2YgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZXNcclxuICAvLyBwcm92aWRlZCBwZXIgU3BlZWNoUmVjb2duaXRpb25SZXN1bHQuXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrm1heEFsdGVybmF0aXZlc+ODl+ODreODkeODhuOCo+OBr+OAgVxyXG4gIC8vIFNwZWVjaFJlY29nbml0aW9uUmVzdWx044GU44Go44Gr5o+Q5L6b44GV44KM44KLXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZXPjga7mnIDlpKfmlbDjgpLoqK3lrprjgZfjgb7jgZnjgIJcclxuICBnZXQgbWF4QWx0ZXJuYXRpdmVzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4QWx0ZXJuYXRpdmVzO1xyXG4gIH1cclxuICBzZXQgbWF4QWx0ZXJuYXRpdmVzKG1heEFsdGVybmF0aXZlczogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9tYXhBbHRlcm5hdGl2ZXMgPSBtYXhBbHRlcm5hdGl2ZXM7XHJcbiAgICBpZiAodGhpcy5fbWF4QWx0ZXJuYXRpdmVzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fbWF4QWx0ZXJuYXRpdmVzICE9IG51bGwgJiYgdGhpcy5pbnRlcm5hbCkge1xyXG4gICAgICB0aGlzLmludGVybmFsLm1heEFsdGVybmF0aXZlcyA9IHRoaXMuX21heEFsdGVybmF0aXZlcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSBzZXJ2aWNlVVJJIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2Ugc3BlY2lmaWVzXHJcbiAgLy8gdGhlIGxvY2F0aW9uIG9mIHRoZSBzcGVlY2ggcmVjb2duaXRpb24gc2VydmljZVxyXG4gIC8vIHVzZWQgYnkgdGhlIGN1cnJlbnQgU3BlZWNoUmVjb2duaXRpb24gdG8gaGFuZGxlXHJcbiAgLy8gdGhlIGFjdHVhbCByZWNvZ25pdGlvbi4gVGhlIGRlZmF1bHQgaXMgdGhlIHVzZXIgYWdlbnQnc1xyXG4gIC8vIGRlZmF1bHQgc3BlZWNoIHNlcnZpY2UuXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrnNlcnZpY2VVUknjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyDnj77lnKjjga5TcGVlY2hSZWNvZ25pdGlvbuOBjOWun+mam+OBruiqjeitmOOCkuWHpueQhuOBmeOCi+OBn+OCgeOBq+S9v+eUqOOBmeOCi1xyXG4gIC8vIOmfs+WjsOiqjeitmOOCteODvOODk+OCueOBruWgtOaJgOOCkuaMh+WumuOBl+OBvuOBmeOAglxyXG4gIC8vIOODh+ODleOCqeODq+ODiOOBr+ODpuODvOOCtuOCqOODvOOCuOOCp+ODs+ODiOOBruODh+ODleOCqeODq+ODiOmfs+WjsOOCteODvOODk+OCueOBp+OBmeOAglxyXG4gIGdldCBzZXJ2aWNlVVJJKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VydmljZVVSSTtcclxuICB9XHJcbiAgc2V0IHNlcnZpY2VVUkkoc2VydmljZVVSSTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlVVJJID0gc2VydmljZVVSSTtcclxuICAgIGlmICh0aGlzLl9zZXJ2aWNlVVJJICE9PSB1bmRlZmluZWQgJiYgdGhpcy5fc2VydmljZVVSSSAhPSBudWxsICYmIHRoaXMuaW50ZXJuYWwpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbC5zZXJ2aWNlVVJJID0gdGhpcy5fc2VydmljZVVSSTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==