@sam17896/ngx-speech-recognition
Version:
Angular 5+ speech recognition service (based on browser implementation such as Chrome).
281 lines • 23.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/service/speech-recognition.common.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var SpeechRecognitionCommon = /** @class */ (function () {
function SpeechRecognitionCommon(_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();
}
Object.defineProperty(SpeechRecognitionCommon.prototype, "grammars", {
/**
* Property
*/
// 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: /**
* 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オブジェクトのコレクションを返して設定します。
function () {
return this._grammars;
},
set: /**
* @param {?} grammars
* @return {?}
*/
function (grammars) {
this._grammars = grammars;
if (this._grammars !== undefined && this._grammars != null && this.internal) {
this.internal.grammars = this._grammars;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SpeechRecognitionCommon.prototype, "lang", {
// 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属性の値、
// またはユーザエージェントの言語設定が設定されていない場合は
// その値になります。
get:
// 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 {?}
*/
function () {
return this._lang;
},
set: /**
* @param {?} lang
* @return {?}
*/
function (lang) {
this._lang = lang;
if (this._lang !== undefined && this._lang != null && this.internal) {
this.internal.lang = this._lang;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SpeechRecognitionCommon.prototype, "continuous", {
// The continuous property of the SpeechRecognition interface controls
// whether continuous results are returned for each recognition, or only a single result.
//
// SpeechRecognitionインターフェイスの連続プロパティは、
// 認識結果ごとに連続した結果を返すか、単一の結果のみを返すかを制御します。
get:
// The continuous property of the SpeechRecognition interface controls
// whether continuous results are returned for each recognition, or only a single result.
//
// SpeechRecognitionインターフェイスの連続プロパティは、
// 認識結果ごとに連続した結果を返すか、単一の結果のみを返すかを制御します。
/**
* @return {?}
*/
function () {
return this._continuous;
},
set: /**
* @param {?} continuous
* @return {?}
*/
function (continuous) {
this._continuous = continuous;
if (this._continuous !== undefined && this._continuous != null && this.internal) {
this.internal.continuous = this._continuous;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SpeechRecognitionCommon.prototype, "interimResults", {
// 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です)。
get:
// 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 {?}
*/
function () {
return this._interimResults;
},
set: /**
* @param {?} interimResults
* @return {?}
*/
function (interimResults) {
this._interimResults = interimResults;
if (this._interimResults !== undefined && this._interimResults != null && this.internal) {
this.internal.interimResults = this._interimResults;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SpeechRecognitionCommon.prototype, "maxAlternatives", {
// The maxAlternatives property of the SpeechRecognition interface sets
// the maximum number of SpeechRecognitionAlternatives
// provided per SpeechRecognitionResult.
//
// SpeechRecognitionインターフェイスのmaxAlternativesプロパティは、
// SpeechRecognitionResultごとに提供される
// SpeechRecognitionAlternativesの最大数を設定します。
get:
// The maxAlternatives property of the SpeechRecognition interface sets
// the maximum number of SpeechRecognitionAlternatives
// provided per SpeechRecognitionResult.
//
// SpeechRecognitionインターフェイスのmaxAlternativesプロパティは、
// SpeechRecognitionResultごとに提供される
// SpeechRecognitionAlternativesの最大数を設定します。
/**
* @return {?}
*/
function () {
return this._maxAlternatives;
},
set: /**
* @param {?} maxAlternatives
* @return {?}
*/
function (maxAlternatives) {
this._maxAlternatives = maxAlternatives;
if (this._maxAlternatives !== undefined && this._maxAlternatives != null && this.internal) {
this.internal.maxAlternatives = this._maxAlternatives;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SpeechRecognitionCommon.prototype, "serviceURI", {
// 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が実際の認識を処理するために使用する
// 音声認識サービスの場所を指定します。
// デフォルトはユーザエージェントのデフォルト音声サービスです。
get:
// 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 {?}
*/
function () {
return this._serviceURI;
},
set: /**
* @param {?} serviceURI
* @return {?}
*/
function (serviceURI) {
this._serviceURI = serviceURI;
if (this._serviceURI !== undefined && this._serviceURI != null && this.internal) {
this.internal.serviceURI = this._serviceURI;
}
},
enumerable: true,
configurable: true
});
return SpeechRecognitionCommon;
}());
export { SpeechRecognitionCommon };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLmNvbW1vbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzYW0xNzg5Ni9uZ3gtc3BlZWNoLXJlY29nbml0aW9uLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2Uvc3BlZWNoLXJlY29nbml0aW9uLmNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBO0lBSUUsaUNBQ1ksU0FBZ0MsRUFDaEMsS0FBYSxFQUNiLFdBQW9CLEVBQ3BCLGVBQXdCLEVBQ3hCLGdCQUF3QixFQUN4QixXQUFtQjtRQUxuQixjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFDcEIsb0JBQWUsR0FBZixlQUFlLENBQVM7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBUnJCLGFBQVEsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBUzVELENBQUM7SUFnQkwsc0JBQUksNkNBQVE7UUFiWjs7V0FFRztRQUdILDRFQUE0RTtRQUM1RSx3Q0FBd0M7UUFDeEMsc0RBQXNEO1FBQ3RELG9DQUFvQztRQUNwQyxFQUFFO1FBQ0YsNENBQTRDO1FBQzVDLGtDQUFrQztRQUNsQyx1Q0FBdUM7Ozs7Ozs7Ozs7Ozs7UUFDdkM7WUFDRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEIsQ0FBQzs7Ozs7UUFFRCxVQUFhLFFBQStCO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDM0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUN6QztRQUNILENBQUM7OztPQVBBO0lB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Ozs7UUFDRCxVQUFlLFVBQWtCO1lBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1lBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUM3QztRQUNILENBQUM7OztPQU5BO0lBUUgsOEJBQUM7QUFBRCxDQUFDLEFBbElELElBa0lDOzs7Ozs7O0lBaElDLDJDQUFnRTs7Ozs7SUFHOUQsNENBQTBDOzs7OztJQUMxQyx3Q0FBdUI7Ozs7O0lBQ3ZCLDhDQUE4Qjs7Ozs7SUFDOUIsa0RBQWtDOzs7OztJQUNsQyxtREFBa0M7Ozs7O0lBQ2xDLDhDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgU3BlZWNoR3JhbW1hckxpc3RUeXBlLFxyXG59IGZyb20gJy4uL2FkYXB0ZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uQ29tbW9uIHtcclxuXHJcbiAgcHJvdGVjdGVkIGludGVybmFsOiBTcGVlY2hSZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBfZ3JhbW1hcnM6IFNwZWVjaEdyYW1tYXJMaXN0VHlwZSxcclxuICAgIHByb3RlY3RlZCBfbGFuZzogc3RyaW5nLFxyXG4gICAgcHJvdGVjdGVkIF9jb250aW51b3VzOiBib29sZWFuLFxyXG4gICAgcHJvdGVjdGVkIF9pbnRlcmltUmVzdWx0czogYm9vbGVhbixcclxuICAgIHByb3RlY3RlZCBfbWF4QWx0ZXJuYXRpdmVzOiBudW1iZXIsXHJcbiAgICBwcm90ZWN0ZWQgX3NlcnZpY2VVUkk6IHN0cmluZyxcclxuICApIHsgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUHJvcGVydHlcclxuICAgKi9cclxuXHJcblxyXG4gIC8vIFRoZSBncmFtbWFycyBwcm9wZXJ0eSBvZiB0aGUgU3BlZWNoUmVjb2duaXRpb24gaW50ZXJmYWNlIHJldHVybnMgYW5kIHNldHNcclxuICAvLyBhIGNvbGxlY3Rpb24gb2YgU3BlZWNoR3JhbW1hciBvYmplY3RzXHJcbiAgLy8gdGhhdCByZXByZXNlbnQgdGhlIGdyYW1tYXJzIHRoYXQgd2lsbCBiZSB1bmRlcnN0b29kXHJcbiAgLy8gYnkgdGhlIGN1cnJlbnQgU3BlZWNoUmVjb2duaXRpb24uXHJcbiAgLy9cclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvbuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrmdyYW1tYXJz44OX44Ot44OR44OG44Kj44Gv44CBXHJcbiAgLy8g54++5Zyo44GuU3BlZWNoUmVjb2duaXRpb27jgafoqo3orZjjgZXjgozjgovmlofms5XjgpLooajjgZlcclxuICAvLyBTcGVlY2hHcmFtbWFy44Kq44OW44K444Kn44Kv44OI44Gu44Kz44Os44Kv44K344On44Oz44KS6L+U44GX44Gm6Kit5a6a44GX44G+44GZ44CCXHJcbiAgZ2V0IGdyYW1tYXJzKCk6IFNwZWVjaEdyYW1tYXJMaXN0VHlwZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ3JhbW1hcnM7XHJcbiAgfVxyXG5cclxuICBzZXQgZ3JhbW1hcnMoZ3JhbW1hcnM6IFNwZWVjaEdyYW1tYXJMaXN0VHlwZSkge1xyXG4gICAgdGhpcy5fZ3JhbW1hcnMgPSBncmFtbWFycztcclxuICAgIGlmICh0aGlzLl9ncmFtbWFycyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2dyYW1tYXJzICE9IG51bGwgJiYgdGhpcy5pbnRlcm5hbCkge1xyXG4gICAgICB0aGlzLmludGVybmFsLmdyYW1tYXJzID0gdGhpcy5fZ3JhbW1hcnM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgbGFuZyBwcm9wZXJ0eSBvZiB0aGUgU3BlZWNoUmVjb2duaXRpb24gaW50ZXJmYWNlIHJldHVybnNcclxuICAvLyBhbmQgc2V0cyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGN1cnJlbnQgU3BlZWNoUmVjb2duaXRpb24uXHJcbiAgLy8gSWYgbm90IHNwZWNpZmllZCwgdGhpcyBkZWZhdWx0cyB0byB0aGUgSFRNTCBsYW5nIGF0dHJpYnV0ZSB2YWx1ZSxcclxuICAvLyBvciB0aGUgdXNlciBhZ2VudCdzIGxhbmd1YWdlIHNldHRpbmcgaWYgdGhhdCBpc24ndCBzZXQgZWl0aGVyLlxyXG4gIC8vXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb27jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5sYW5n44OX44Ot44OR44OG44Kj44Gv44CBXHJcbiAgLy8g54++5Zyo44GuU3BlZWNoUmVjb2duaXRpb27jga7oqIDoqp7jgpLov5TjgZfjgaboqK3lrprjgZfjgb7jgZnjgIJcclxuICAvLyDmjIflrprjgZXjgozjgabjgYTjgarjgYTloLTlkIjjgIHjgZPjgozjga/jg4fjg5Xjgqnjg6vjg4jjgadIVE1M44GubGFuZ+WxnuaAp+OBruWApOOAgVxyXG4gIC8vIOOBvuOBn+OBr+ODpuODvOOCtuOCqOODvOOCuOOCp+ODs+ODiOOBruiogOiqnuioreWumuOBjOioreWumuOBleOCjOOBpuOBhOOBquOBhOWgtOWQiOOBr1xyXG4gIC8vIOOBneOBruWApOOBq+OBquOCiuOBvuOBmeOAglxyXG4gIGdldCBsYW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZztcclxuICB9XHJcblxyXG4gIHNldCBsYW5nKGxhbmc6IHN0cmluZykge1xyXG4gICAgdGhpcy5fbGFuZyA9IGxhbmc7XHJcbiAgICBpZiAodGhpcy5fbGFuZyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2xhbmcgIT0gbnVsbCAmJiB0aGlzLmludGVybmFsKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWwubGFuZyA9IHRoaXMuX2xhbmc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgY29udGludW91cyBwcm9wZXJ0eSBvZiB0aGUgU3BlZWNoUmVjb2duaXRpb24gaW50ZXJmYWNlIGNvbnRyb2xzXHJcbiAgLy8gd2hldGhlciBjb250aW51b3VzIHJlc3VsdHMgYXJlIHJldHVybmVkIGZvciBlYWNoIHJlY29nbml0aW9uLCBvciBvbmx5IGEgc2luZ2xlIHJlc3VsdC5cclxuICAvL1xyXG4gIC8vIFNwZWVjaFJlY29nbml0aW9u44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu6YCj57aa44OX44Ot44OR44OG44Kj44Gv44CBXHJcbiAgLy8g6KqN6K2Y57WQ5p6c44GU44Go44Gr6YCj57aa44GX44Gf57WQ5p6c44KS6L+U44GZ44GL44CB5Y2Y5LiA44Gu57WQ5p6c44Gu44G/44KS6L+U44GZ44GL44KS5Yi25b6h44GX44G+44GZ44CCXHJcbiAgZ2V0IGNvbnRpbnVvdXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludW91cztcclxuICB9XHJcblxyXG4gIHNldCBjb250aW51b3VzKGNvbnRpbnVvdXM6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2NvbnRpbnVvdXMgPSBjb250aW51b3VzO1xyXG4gICAgaWYgKHRoaXMuX2NvbnRpbnVvdXMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9jb250aW51b3VzICE9IG51bGwgJiYgdGhpcy5pbnRlcm5hbCkge1xyXG4gICAgICB0aGlzLmludGVybmFsLmNvbnRpbnVvdXMgPSB0aGlzLl9jb250aW51b3VzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gVGhlIGludGVyaW1SZXN1bHRzIHByb3BlcnR5IG9mIHRoZSBTcGVlY2hSZWNvZ25pdGlvbiBpbnRlcmZhY2UgY29udHJvbHNcclxuICAvLyB3aGV0aGVyIGludGVyaW0gcmVzdWx0cyBzaG91bGQgYmUgcmV0dXJuZWQgKHRydWUpXHJcbiAgLy8gb3Igbm90IChmYWxzZS4pIEludGVyaW0gcmVzdWx0cyBhcmUgcmVzdWx0cyB0aGF0IGFyZSBub3QgeWV0IGZpbmFsXHJcbiAgLy8gKGUuZy4gdGhlIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0LmlzRmluYWwgcHJvcGVydHkgaXMgZmFsc2UuKVxyXG4gIC8vXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb27jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5pbnRlcmltUmVzdWx0c+ODl+ODreODkeODhuOCo+OBr+OAgVxyXG4gIC8vIOS4remWk+e1kOaenOOCkui/lOOBmeOBi+OBqeOBhuOBi++8iHRydWXvvInjgIHjgZ3jgYbjgafjgarjgYTjgYvvvIhmYWxzZe+8ieOCkuWItuW+oeOBl+OBvuOBmeOAglxyXG4gIC8vIOS4remWk+e1kOaenOOBr+OAgeacgOe1guautemajuOBp+OBr+OBquOBhOe1kOaenOOBp+OBme+8iFNwZWVjaFJlY29nbml0aW9uUmVzdWx0LmlzRmluYWzjg5fjg63jg5Hjg4bjgqPjga9mYWxzZeOBp+OBme+8ieOAglxyXG4gIGdldCBpbnRlcmltUmVzdWx0cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcmltUmVzdWx0cztcclxuICB9XHJcbiAgc2V0IGludGVyaW1SZXN1bHRzKGludGVyaW1SZXN1bHRzOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbnRlcmltUmVzdWx0cyA9IGludGVyaW1SZXN1bHRzO1xyXG4gICAgaWYgKHRoaXMuX2ludGVyaW1SZXN1bHRzICE9PSB1bmRlZmluZWQgJiYgdGhpcy5faW50ZXJpbVJlc3VsdHMgIT0gbnVsbCAmJiB0aGlzLmludGVybmFsKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWwuaW50ZXJpbVJlc3VsdHMgPSB0aGlzLl9pbnRlcmltUmVzdWx0cztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFRoZSBtYXhBbHRlcm5hdGl2ZXMgcHJvcGVydHkgb2YgdGhlIFNwZWVjaFJlY29nbml0aW9uIGludGVyZmFjZSBzZXRzXHJcbiAgLy8gdGhlIG1heGltdW0gbnVtYmVyIG9mIFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVzXHJcbiAgLy8gcHJvdmlkZWQgcGVyIFNwZWVjaFJlY29nbml0aW9uUmVzdWx0LlxyXG4gIC8vXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb27jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5tYXhBbHRlcm5hdGl2ZXPjg5fjg63jg5Hjg4bjgqPjga/jgIFcclxuICAvLyBTcGVlY2hSZWNvZ25pdGlvblJlc3VsdOOBlOOBqOOBq+aPkOS+m+OBleOCjOOCi1xyXG4gIC8vIFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVz44Gu5pyA5aSn5pWw44KS6Kit5a6a44GX44G+44GZ44CCXHJcbiAgZ2V0IG1heEFsdGVybmF0aXZlcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heEFsdGVybmF0aXZlcztcclxuICB9XHJcbiAgc2V0IG1heEFsdGVybmF0aXZlcyhtYXhBbHRlcm5hdGl2ZXM6IG51bWJlcikge1xyXG4gICAgdGhpcy5fbWF4QWx0ZXJuYXRpdmVzID0gbWF4QWx0ZXJuYXRpdmVzO1xyXG4gICAgaWYgKHRoaXMuX21heEFsdGVybmF0aXZlcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX21heEFsdGVybmF0aXZlcyAhPSBudWxsICYmIHRoaXMuaW50ZXJuYWwpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbC5tYXhBbHRlcm5hdGl2ZXMgPSB0aGlzLl9tYXhBbHRlcm5hdGl2ZXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBUaGUgc2VydmljZVVSSSBwcm9wZXJ0eSBvZiB0aGUgU3BlZWNoUmVjb2duaXRpb24gaW50ZXJmYWNlIHNwZWNpZmllc1xyXG4gIC8vIHRoZSBsb2NhdGlvbiBvZiB0aGUgc3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2VcclxuICAvLyB1c2VkIGJ5IHRoZSBjdXJyZW50IFNwZWVjaFJlY29nbml0aW9uIHRvIGhhbmRsZVxyXG4gIC8vIHRoZSBhY3R1YWwgcmVjb2duaXRpb24uIFRoZSBkZWZhdWx0IGlzIHRoZSB1c2VyIGFnZW50J3NcclxuICAvLyBkZWZhdWx0IHNwZWVjaCBzZXJ2aWNlLlxyXG4gIC8vXHJcbiAgLy8gU3BlZWNoUmVjb2duaXRpb27jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5zZXJ2aWNlVVJJ44OX44Ot44OR44OG44Kj44Gv44CBXHJcbiAgLy8g54++5Zyo44GuU3BlZWNoUmVjb2duaXRpb27jgYzlrp/pmpvjga7oqo3orZjjgpLlh6bnkIbjgZnjgovjgZ/jgoHjgavkvb/nlKjjgZnjgotcclxuICAvLyDpn7Plo7Doqo3orZjjgrXjg7zjg5Pjgrnjga7loLTmiYDjgpLmjIflrprjgZfjgb7jgZnjgIJcclxuICAvLyDjg4fjg5Xjgqnjg6vjg4jjga/jg6bjg7zjgrbjgqjjg7zjgrjjgqfjg7Pjg4jjga7jg4fjg5Xjgqnjg6vjg4jpn7Plo7DjgrXjg7zjg5PjgrnjgafjgZnjgIJcclxuICBnZXQgc2VydmljZVVSSSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VVUkk7XHJcbiAgfVxyXG4gIHNldCBzZXJ2aWNlVVJJKHNlcnZpY2VVUkk6IHN0cmluZykge1xyXG4gICAgdGhpcy5fc2VydmljZVVSSSA9IHNlcnZpY2VVUkk7XHJcbiAgICBpZiAodGhpcy5fc2VydmljZVVSSSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3NlcnZpY2VVUkkgIT0gbnVsbCAmJiB0aGlzLmludGVybmFsKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJuYWwuc2VydmljZVVSSSA9IHRoaXMuX3NlcnZpY2VVUkk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=