Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@ctrl/ngx-codemirror

Package Overview
Dependencies
Maintainers
1
Versions
48
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ctrl/ngx-codemirror - npm Package Compare versions

Comparing version 3.0.4 to 3.1.0

3

bundles/ctrl-ngx-codemirror.umd.js

@@ -227,5 +227,2 @@ (function (global, factory) {

}
/* tslint:disable */
var CodeMirror;
/* tslint:enable */
var CodemirrorComponent = /** @class */ (function () {

@@ -232,0 +229,0 @@ function CodemirrorComponent(_differs, _ngZone) {

2

bundles/ctrl-ngx-codemirror.umd.min.js

@@ -15,3 +15,3 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define("@ctrl/ngx-codemirror",["exports","@angular/core","@angular/forms"],t):t(((e=e||self).ctrl=e.ctrl||{},e.ctrl["ngx-codemirror"]={}),e.ng.core,e.ng.forms)}(this,(function(e,t,o){"use strict";

and limitations under the License.
***************************************************************************** */function r(e,t,o,r){var n,i=arguments.length,c=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,o,r);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(c=(i<3?n(c):i>3?n(t,o,c):n(t,o))||c);return i>3&&c&&Object.defineProperty(t,o,c),c}function n(e){return e?e.replace(/\r\n|\r/g,"\n"):e}var i=function(){function e(e,o){this._differs=e,this._ngZone=o,this.className="",this.name="codemirror",this.autoFocus=!1,this.preserveScrollPosition=!1,this.cursorActivity=new t.EventEmitter,this.focusChange=new t.EventEmitter,this.scroll=new t.EventEmitter,this.drop=new t.EventEmitter,this.value="",this.disabled=!1,this.isFocused=!1,this.onChange=function(e){},this.onTouched=function(){}}var i;return i=e,Object.defineProperty(e.prototype,"options",{set:function(e){this._options=e,!this._differ&&e&&(this._differ=this._differs.find(e).create())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"codeMirrorGlobal",{get:function(){return this._codeMirror||(this._codeMirror=require("codemirror")),this._codeMirror},enumerable:!0,configurable:!0}),e.prototype.ngAfterViewInit=function(){var e=this;this.ref&&this._ngZone.runOutsideAngular((function(){e.codeMirror=e.codeMirrorGlobal.fromTextArea(e.ref.nativeElement,e._options),e.codeMirror.on("cursorActivity",(function(t){return e._ngZone.run((function(){return e.cursorActive(t)}))})),e.codeMirror.on("scroll",e.scrollChanged.bind(e)),e.codeMirror.on("blur",(function(){return e._ngZone.run((function(){return e.focusChanged(!1)}))})),e.codeMirror.on("focus",(function(){return e._ngZone.run((function(){return e.focusChanged(!0)}))})),e.codeMirror.on("change",(function(t,o){return e._ngZone.run((function(){return e.codemirrorValueChanged(t,o)}))})),e.codeMirror.on("drop",(function(t,o){e._ngZone.run((function(){return e.dropFiles(t,o)}))})),e.codeMirror.setValue(e.value)}))},e.prototype.ngDoCheck=function(){var e=this;if(this._differ){var t=this._differ.diff(this._options);t&&(t.forEachChangedItem((function(t){return e.setOptionIfChanged(t.key,t.currentValue)})),t.forEachAddedItem((function(t){return e.setOptionIfChanged(t.key,t.currentValue)})),t.forEachRemovedItem((function(t){return e.setOptionIfChanged(t.key,t.currentValue)})))}},e.prototype.ngOnDestroy=function(){this.codeMirror&&this.codeMirror.toTextArea()},e.prototype.codemirrorValueChanged=function(e,t){"setValue"!==t.origin&&(this.value=e.getValue(),this.onChange(this.value))},e.prototype.setOptionIfChanged=function(e,t){this.codeMirror&&this.codeMirror.setOption(e,t)},e.prototype.focusChanged=function(e){this.onTouched(),this.isFocused=e,this.focusChange.emit(e)},e.prototype.scrollChanged=function(e){this.scroll.emit(e.getScrollInfo())},e.prototype.cursorActive=function(e){this.cursorActivity.emit(e)},e.prototype.dropFiles=function(e,t){this.drop.emit([e,t])},e.prototype.writeValue=function(e){if(null!=e)if(this.codeMirror){var t=this.codeMirror.getValue();if(e!==t&&n(t)!==n(e))if(this.value=e,this.preserveScrollPosition){var o=this.codeMirror.getScrollInfo();this.codeMirror.setValue(this.value),this.codeMirror.scrollTo(o.left,o.top)}else this.codeMirror.setValue(this.value)}else this.value=e},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this.disabled=e,this.setOptionIfChanged("readOnly",this.disabled)},e.ctorParameters=function(){return[{type:t.KeyValueDiffers},{type:t.NgZone}]},r([t.Input()],e.prototype,"className",void 0),r([t.Input()],e.prototype,"name",void 0),r([t.Input()],e.prototype,"autoFocus",void 0),r([t.Input()],e.prototype,"options",null),r([t.Input()],e.prototype,"preserveScrollPosition",void 0),r([t.Output()],e.prototype,"cursorActivity",void 0),r([t.Output()],e.prototype,"focusChange",void 0),r([t.Output()],e.prototype,"scroll",void 0),r([t.Output()],e.prototype,"drop",void 0),r([t.ViewChild("ref",{static:!0})],e.prototype,"ref",void 0),e=i=r([t.Component({selector:"ngx-codemirror",template:'\n <textarea\n [name]="name"\n class="ngx-codemirror {{ className }}"\n [class.ngx-codemirror--focused]="isFocused"\n autocomplete="off"\n [autofocus]="autoFocus"\n #ref\n >\n </textarea>\n ',providers:[{provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return i})),multi:!0}],preserveWhitespaces:!1,changeDetection:t.ChangeDetectionStrategy.OnPush})],e)}(),c=function(){function e(){}return e=r([t.NgModule({exports:[i],declarations:[i]})],e)}();e.CodemirrorComponent=i,e.CodemirrorModule=c,Object.defineProperty(e,"__esModule",{value:!0})}));
***************************************************************************** */function r(e,t,o,r){var n,i=arguments.length,c=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)c=Reflect.decorate(e,t,o,r);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(c=(i<3?n(c):i>3?n(t,o,c):n(t,o))||c);return i>3&&c&&Object.defineProperty(t,o,c),c}function n(e){return e?e.replace(/\r\n|\r/g,"\n"):e}var i=function(){function e(e,o){this._differs=e,this._ngZone=o,this.className="",this.name="codemirror",this.autoFocus=!1,this.preserveScrollPosition=!1,this.cursorActivity=new t.EventEmitter,this.focusChange=new t.EventEmitter,this.scroll=new t.EventEmitter,this.drop=new t.EventEmitter,this.value="",this.disabled=!1,this.isFocused=!1,this.onChange=function(e){},this.onTouched=function(){}}var i;return i=e,Object.defineProperty(e.prototype,"options",{set:function(e){this._options=e,!this._differ&&e&&(this._differ=this._differs.find(e).create())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"codeMirrorGlobal",{get:function(){return this._codeMirror||(this._codeMirror=CodeMirror||require("codemirror")),this._codeMirror},enumerable:!0,configurable:!0}),e.prototype.ngAfterViewInit=function(){var e=this;this.ref&&this._ngZone.runOutsideAngular((function(){e.codeMirror=e.codeMirrorGlobal.fromTextArea(e.ref.nativeElement,e._options),e.codeMirror.on("cursorActivity",(function(t){return e._ngZone.run((function(){return e.cursorActive(t)}))})),e.codeMirror.on("scroll",e.scrollChanged.bind(e)),e.codeMirror.on("blur",(function(){return e._ngZone.run((function(){return e.focusChanged(!1)}))})),e.codeMirror.on("focus",(function(){return e._ngZone.run((function(){return e.focusChanged(!0)}))})),e.codeMirror.on("change",(function(t,o){return e._ngZone.run((function(){return e.codemirrorValueChanged(t,o)}))})),e.codeMirror.on("drop",(function(t,o){e._ngZone.run((function(){return e.dropFiles(t,o)}))})),e.codeMirror.setValue(e.value)}))},e.prototype.ngDoCheck=function(){var e=this;if(this._differ){var t=this._differ.diff(this._options);t&&(t.forEachChangedItem((function(t){return e.setOptionIfChanged(t.key,t.currentValue)})),t.forEachAddedItem((function(t){return e.setOptionIfChanged(t.key,t.currentValue)})),t.forEachRemovedItem((function(t){return e.setOptionIfChanged(t.key,t.currentValue)})))}},e.prototype.ngOnDestroy=function(){this.codeMirror&&this.codeMirror.toTextArea()},e.prototype.codemirrorValueChanged=function(e,t){"setValue"!==t.origin&&(this.value=e.getValue(),this.onChange(this.value))},e.prototype.setOptionIfChanged=function(e,t){this.codeMirror&&this.codeMirror.setOption(e,t)},e.prototype.focusChanged=function(e){this.onTouched(),this.isFocused=e,this.focusChange.emit(e)},e.prototype.scrollChanged=function(e){this.scroll.emit(e.getScrollInfo())},e.prototype.cursorActive=function(e){this.cursorActivity.emit(e)},e.prototype.dropFiles=function(e,t){this.drop.emit([e,t])},e.prototype.writeValue=function(e){if(null!=e)if(this.codeMirror){var t=this.codeMirror.getValue();if(e!==t&&n(t)!==n(e))if(this.value=e,this.preserveScrollPosition){var o=this.codeMirror.getScrollInfo();this.codeMirror.setValue(this.value),this.codeMirror.scrollTo(o.left,o.top)}else this.codeMirror.setValue(this.value)}else this.value=e},e.prototype.registerOnChange=function(e){this.onChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.setDisabledState=function(e){this.disabled=e,this.setOptionIfChanged("readOnly",this.disabled)},e.ctorParameters=function(){return[{type:t.KeyValueDiffers},{type:t.NgZone}]},r([t.Input()],e.prototype,"className",void 0),r([t.Input()],e.prototype,"name",void 0),r([t.Input()],e.prototype,"autoFocus",void 0),r([t.Input()],e.prototype,"options",null),r([t.Input()],e.prototype,"preserveScrollPosition",void 0),r([t.Output()],e.prototype,"cursorActivity",void 0),r([t.Output()],e.prototype,"focusChange",void 0),r([t.Output()],e.prototype,"scroll",void 0),r([t.Output()],e.prototype,"drop",void 0),r([t.ViewChild("ref",{static:!0})],e.prototype,"ref",void 0),e=i=r([t.Component({selector:"ngx-codemirror",template:'\n <textarea\n [name]="name"\n class="ngx-codemirror {{ className }}"\n [class.ngx-codemirror--focused]="isFocused"\n autocomplete="off"\n [autofocus]="autoFocus"\n #ref\n >\n </textarea>\n ',providers:[{provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return i})),multi:!0}],preserveWhitespaces:!1,changeDetection:t.ChangeDetectionStrategy.OnPush})],e)}(),c=function(){function e(){}return e=r([t.NgModule({exports:[i],declarations:[i]})],e)}();e.CodemirrorComponent=i,e.CodemirrorModule=c,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ctrl-ngx-codemirror.umd.min.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"CodemirrorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":36,"character":1},"arguments":[{"selector":"ngx-codemirror","template":"\n <textarea\n [name]=\"name\"\n class=\"ngx-codemirror {{ className }}\"\n [class.ngx-codemirror--focused]=\"isFocused\"\n autocomplete=\"off\"\n [autofocus]=\"autoFocus\"\n #ref\n >\n </textarea>\n ","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":51,"character":15},"useExisting":{"__symbolic":"reference","name":"CodemirrorComponent"},"multi":true}],"preserveWhitespaces":false,"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":57,"character":19},"member":"OnPush"}}]}],"members":{"className":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"autoFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"preserveScrollPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"cursorActivity":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":81,"character":3}}]}],"focusChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":83,"character":3}}]}],"scroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":85,"character":3}}]}],"drop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":87,"character":3}}]}],"ref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":88,"character":3},"arguments":["ref",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":101,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":101,"character":66}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"codemirrorValueChanged":[{"__symbolic":"method"}],"setOptionIfChanged":[{"__symbolic":"method"}],"focusChanged":[{"__symbolic":"method"}],"scrollChanged":[{"__symbolic":"method"}],"cursorActive":[{"__symbolic":"method"}],"dropFiles":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}]}},"CodemirrorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"CodemirrorComponent"}],"declarations":[{"__symbolic":"reference","name":"CodemirrorComponent"}]}]}],"members":{}}},"origins":{"CodemirrorComponent":"./codemirror.component","CodemirrorModule":"./codemirror.module"},"importAs":"@ctrl/ngx-codemirror"}
{"__symbolic":"module","version":4,"metadata":{"CodemirrorComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":34,"character":1},"arguments":[{"selector":"ngx-codemirror","template":"\n <textarea\n [name]=\"name\"\n class=\"ngx-codemirror {{ className }}\"\n [class.ngx-codemirror--focused]=\"isFocused\"\n autocomplete=\"off\"\n [autofocus]=\"autoFocus\"\n #ref\n >\n </textarea>\n ","providers":[{"provide":{"__symbolic":"reference","module":"@angular/forms","name":"NG_VALUE_ACCESSOR","line":49,"character":15},"useExisting":{"__symbolic":"reference","name":"CodemirrorComponent"},"multi":true}],"preserveWhitespaces":false,"changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":55,"character":19},"member":"OnPush"}}]}],"members":{"className":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"autoFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"preserveScrollPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"cursorActivity":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":79,"character":3}}]}],"focusChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":81,"character":3}}]}],"scroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":83,"character":3}}]}],"drop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":85,"character":3}}]}],"ref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":86,"character":3},"arguments":["ref",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":99,"character":32},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":99,"character":66}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"codemirrorValueChanged":[{"__symbolic":"method"}],"setOptionIfChanged":[{"__symbolic":"method"}],"focusChanged":[{"__symbolic":"method"}],"scrollChanged":[{"__symbolic":"method"}],"cursorActive":[{"__symbolic":"method"}],"dropFiles":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}]}},"CodemirrorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"CodemirrorComponent"}],"declarations":[{"__symbolic":"reference","name":"CodemirrorComponent"}]}]}],"members":{}}},"origins":{"CodemirrorComponent":"./codemirror.component","CodemirrorModule":"./codemirror.module"},"importAs":"@ctrl/ngx-codemirror"}

@@ -11,5 +11,2 @@ var CodemirrorComponent_1;

}
/* tslint:disable */
var CodeMirror;
/* tslint:enable */
let CodemirrorComponent = CodemirrorComponent_1 = class CodemirrorComponent {

@@ -221,2 +218,2 @@ constructor(_differs, _ngZone) {

export { CodemirrorComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1pcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3RybC9uZ3gtY29kZW1pcnJvci8iLCJzb3VyY2VzIjpbImNvZGVtaXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXpFLFNBQVMsb0JBQW9CLENBQUMsR0FBVztJQUN2QyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUdELG9CQUFvQjtBQUNwQixJQUFJLFVBQWUsQ0FBQztBQUNwQixtQkFBbUI7QUF5Qm5CLElBQWEsbUJBQW1CLDJCQUFoQyxNQUFhLG1CQUFtQjtJQTBDOUIsWUFBb0IsUUFBeUIsRUFBVSxPQUFlO1FBQWxELGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQXhDdEUsMkNBQTJDO1FBQ2xDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDeEIsMENBQTBDO1FBQ2pDLFNBQUksR0FBRyxZQUFZLENBQUM7UUFDN0IsdURBQXVEO1FBQzlDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFZM0IsNERBQTREO1FBQ25ELDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUN4QywwQ0FBMEM7UUFDaEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3RELHNEQUFzRDtRQUM1QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDcEQsd0NBQXdDO1FBQzlCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ2xELHFDQUFxQztRQUMzQixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFekQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQXFKbEIsbURBQW1EO1FBQzNDLGFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQ2xDLG1EQUFtRDtRQUMzQyxjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBOUk0QyxDQUFDO0lBbEMxRTs7O09BR0c7SUFFSCxJQUFJLE9BQU8sQ0FBQyxLQUE2QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNuRDtJQUNILENBQUM7SUEwQkQsSUFBSSxnQkFBZ0I7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUNELGdIQUFnSDtRQUNoSCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQ2xELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUN0QixJQUFJLENBQUMsUUFBUSxDQUNkLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQzlDLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDakQsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNoRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQ2hCLFFBQVEsRUFDUixDQUFDLEVBQVUsRUFBRSxNQUE4QixFQUFFLEVBQUUsQ0FDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUNsRSxDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQ2hCLE1BQU0sRUFDTixDQUFDLEVBQVUsRUFBRSxDQUFZLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsaUNBQWlDO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQ3pELENBQUM7WUFDRixPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUN6RCxDQUFDO1lBQ0YsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FDekQsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCwyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsRUFBVSxFQUFFLE1BQThCO1FBQy9ELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsVUFBa0IsRUFBRSxRQUFhO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLE9BQU87U0FDUjtRQUVELG9EQUFvRDtRQUNwRCxpRUFBaUU7UUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQWdCO1FBQzNCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLEVBQVU7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELFlBQVksQ0FBQyxFQUFVO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxTQUFTLENBQUMsRUFBVSxFQUFFLENBQVk7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQ0QsbURBQW1EO0lBQ25ELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3pDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLE9BQU87U0FDUjtRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsSUFDRSxLQUFLLEtBQUssR0FBRztZQUNiLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxLQUFLLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUN6RDtZQUNBLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUMvQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQ3RCLGtCQUFrQixDQUFDLElBQUksRUFDdkIsa0JBQWtCLENBQUMsR0FBRyxDQUN2QixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbURBQW1EO0lBQ25ELGdCQUFnQixDQUFDLEVBQTJCO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxtREFBbUQ7SUFDbkQsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsbURBQW1EO0lBQ25ELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FLRixDQUFBOztZQS9JK0IsZUFBZTtZQUFtQixNQUFNOztBQXZDN0Q7SUFBUixLQUFLLEVBQUU7c0RBQWdCO0FBRWY7SUFBUixLQUFLLEVBQUU7aURBQXFCO0FBRXBCO0lBQVIsS0FBSyxFQUFFO3NEQUFtQjtBQU0zQjtJQURDLEtBQUssRUFBRTtrREFNUDtBQUVRO0lBQVIsS0FBSyxFQUFFO21FQUFnQztBQUU5QjtJQUFULE1BQU0sRUFBRTsyREFBNkM7QUFFNUM7SUFBVCxNQUFNLEVBQUU7d0RBQTJDO0FBRTFDO0lBQVQsTUFBTSxFQUFFO21EQUF5QztBQUV4QztJQUFULE1BQU0sRUFBRTtpREFBZ0Q7QUFDckI7SUFBbkMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztnREFBaUI7QUE3QnpDLG1CQUFtQjtJQXZCL0IsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7R0FVVDtRQUNELFNBQVMsRUFBRTtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjtRQUNELG1CQUFtQixFQUFFLEtBQUs7UUFDMUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07S0FDaEQsQ0FBQztHQUNXLG1CQUFtQixDQXlML0I7U0F6TFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEVkaXRvcixcbiAgRWRpdG9yQ2hhbmdlTGlua2VkTGlzdCxcbiAgRWRpdG9yRnJvbVRleHRBcmVhLFxuICBTY3JvbGxJbmZvLFxufSBmcm9tICdjb2RlbWlycm9yJztcblxuZnVuY3Rpb24gbm9ybWFsaXplTGluZUVuZGluZ3Moc3RyOiBzdHJpbmcpIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxyXFxufFxcci9nLCAnXFxuJyk7XG59XG5cbmRlY2xhcmUgdmFyIHJlcXVpcmU6IGFueTtcbi8qIHRzbGludDpkaXNhYmxlICovXG52YXIgQ29kZU1pcnJvcjogYW55O1xuLyogdHNsaW50OmVuYWJsZSAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtY29kZW1pcnJvcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHRleHRhcmVhXG4gICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgIGNsYXNzPVwibmd4LWNvZGVtaXJyb3Ige3sgY2xhc3NOYW1lIH19XCJcbiAgICAgIFtjbGFzcy5uZ3gtY29kZW1pcnJvci0tZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIFthdXRvZm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgICAgICNyZWZcbiAgICA+XG4gICAgPC90ZXh0YXJlYT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb2RlbWlycm9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29kZW1pcnJvckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERvQ2hlY2sge1xuICAvKiBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjcmVhdGVkIHRleHRhcmVhICovXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuICAvKiBuYW1lIGFwcGxpZWQgdG8gdGhlIGNyZWF0ZWQgdGV4dGFyZWEgKi9cbiAgQElucHV0KCkgbmFtZSA9ICdjb2RlbWlycm9yJztcbiAgLyogYXV0b2ZvY3VzIHNldHRpbmcgYXBwbGllZCB0byB0aGUgY3JlYXRlZCB0ZXh0YXJlYSAqL1xuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIHNldCBvcHRpb25zIGZvciBjb2RlbWlycm9yXG4gICAqIEBsaW5rIGh0dHA6Ly9jb2RlbWlycm9yLm5ldC9kb2MvbWFudWFsLmh0bWwjY29uZmlnXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICBpZiAoIXRoaXMuX2RpZmZlciAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5fZGlmZmVycy5maW5kKHZhbHVlKS5jcmVhdGUoKTtcbiAgICB9XG4gIH1cbiAgLyogcHJlc2VydmUgcHJldmlvdXMgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIHVwZGF0aW5nIHZhbHVlICovXG4gIEBJbnB1dCgpIHByZXNlcnZlU2Nyb2xsUG9zaXRpb24gPSBmYWxzZTtcbiAgLyogY2FsbGVkIHdoZW4gdGhlIHRleHQgY3Vyc29yIGlzIG1vdmVkICovXG4gIEBPdXRwdXQoKSBjdXJzb3JBY3Rpdml0eSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdG9yPigpO1xuICAvKiBjYWxsZWQgd2hlbiB0aGUgZWRpdG9yIGlzIGZvY3VzZWQgb3IgbG9zZXMgZm9jdXMgKi9cbiAgQE91dHB1dCgpIGZvY3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKiBjYWxsZWQgd2hlbiB0aGUgZWRpdG9yIGlzIHNjcm9sbGVkICovXG4gIEBPdXRwdXQoKSBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPFNjcm9sbEluZm8+KCk7XG4gIC8qIGNhbGxlZCB3aGVuIGZpbGUocykgYXJlIGRyb3BwZWQgKi9cbiAgQE91dHB1dCgpIGRyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPFtFZGl0b3IsIERyYWdFdmVudF0+KCk7XG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHsgc3RhdGljOiB0cnVlIH0pIHJlZjogRWxlbWVudFJlZjtcbiAgdmFsdWUgPSAnJztcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgaXNGb2N1c2VkID0gZmFsc2U7XG4gIGNvZGVNaXJyb3I6IEVkaXRvckZyb21UZXh0QXJlYTtcbiAgLyoqXG4gICAqIGVpdGhlciBnbG9iYWwgdmFyaWFibGUgb3IgcmVxdWlyZWQgbGlicmFyeVxuICAgKi9cbiAgcHJpdmF0ZSBfY29kZU1pcnJvcjogYW55O1xuXG4gIHByaXZhdGUgX2RpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLCBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkge31cblxuICBnZXQgY29kZU1pcnJvckdsb2JhbCgpIHtcbiAgICBpZiAodGhpcy5fY29kZU1pcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3I7XG4gICAgfVxuXG4gICAgdGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IgPyBDb2RlTWlycm9yIDogcmVxdWlyZSgnY29kZW1pcnJvcicpO1xuICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5yZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHVuaXZlcnNhbCByZW5kZXJpbmcsIHdlIGltcG9ydCBDb2RlbWlycm9yIHJ1bnRpbWUgd2l0aCBgcmVxdWlyZWAgdG8gcHJldmVudCBub2RlIGVycm9yc1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmNvZGVNaXJyb3IgPSB0aGlzLmNvZGVNaXJyb3JHbG9iYWwuZnJvbVRleHRBcmVhKFxuICAgICAgICB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLl9vcHRpb25zLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbignY3Vyc29yQWN0aXZpdHknLCBjbSA9PlxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuY3Vyc29yQWN0aXZlKGNtKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKCdzY3JvbGwnLCB0aGlzLnNjcm9sbENoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iub24oJ2JsdXInLCAoKSA9PlxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuZm9jdXNDaGFuZ2VkKGZhbHNlKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKCdmb2N1cycsICgpID0+XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5mb2N1c0NoYW5nZWQodHJ1ZSkpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbihcbiAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgIChjbTogRWRpdG9yLCBjaGFuZ2U6IEVkaXRvckNoYW5nZUxpbmtlZExpc3QpID0+XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLmNvZGVtaXJyb3JWYWx1ZUNoYW5nZWQoY20sIGNoYW5nZSkpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbihcbiAgICAgICAgJ2Ryb3AnLFxuICAgICAgICAoY206IEVkaXRvciwgZTogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLmRyb3BGaWxlcyhjbSwgZSkpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAoIXRoaXMuX2RpZmZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBjaGVjayBvcHRpb25zIGhhdmUgbm90IGNoYW5nZWRcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fb3B0aW9ucyk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKG9wdGlvbiA9PlxuICAgICAgICB0aGlzLnNldE9wdGlvbklmQ2hhbmdlZChvcHRpb24ua2V5LCBvcHRpb24uY3VycmVudFZhbHVlKSxcbiAgICAgICk7XG4gICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0ob3B0aW9uID0+XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKG9wdGlvbi5rZXksIG9wdGlvbi5jdXJyZW50VmFsdWUpLFxuICAgICAgKTtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKG9wdGlvbiA9PlxuICAgICAgICB0aGlzLnNldE9wdGlvbklmQ2hhbmdlZChvcHRpb24ua2V5LCBvcHRpb24uY3VycmVudFZhbHVlKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIGlzIHRoZXJlIGEgbGlnaHRlci13ZWlnaHQgd2F5IHRvIHJlbW92ZSB0aGUgY20gaW5zdGFuY2U/XG4gICAgaWYgKHRoaXMuY29kZU1pcnJvcikge1xuICAgICAgdGhpcy5jb2RlTWlycm9yLnRvVGV4dEFyZWEoKTtcbiAgICB9XG4gIH1cbiAgY29kZW1pcnJvclZhbHVlQ2hhbmdlZChjbTogRWRpdG9yLCBjaGFuZ2U6IEVkaXRvckNoYW5nZUxpbmtlZExpc3QpIHtcbiAgICBpZiAoY2hhbmdlLm9yaWdpbiAhPT0gJ3NldFZhbHVlJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGNtLmdldFZhbHVlKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuICBzZXRPcHRpb25JZkNoYW5nZWQob3B0aW9uTmFtZTogc3RyaW5nLCBuZXdWYWx1ZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLmNvZGVNaXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjYXN0IHRvIGFueSB0byBoYW5kbGUgc3RyaWN0bHkgdHlwZWQgb3B0aW9uIG5hbWVzXG4gICAgLy8gY291bGQgcG9zc2libHkgaW1wb3J0IHNldHRpbmdzIHN0cmluZ3MgYXZhaWxhYmxlIGluIHRoZSBmdXR1cmVcbiAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0T3B0aW9uKG9wdGlvbk5hbWUgYXMgYW55LCBuZXdWYWx1ZSk7XG4gIH1cbiAgZm9jdXNDaGFuZ2VkKGZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZm9jdXNlZDtcbiAgICB0aGlzLmZvY3VzQ2hhbmdlLmVtaXQoZm9jdXNlZCk7XG4gIH1cbiAgc2Nyb2xsQ2hhbmdlZChjbTogRWRpdG9yKSB7XG4gICAgdGhpcy5zY3JvbGwuZW1pdChjbS5nZXRTY3JvbGxJbmZvKCkpO1xuICB9XG4gIGN1cnNvckFjdGl2ZShjbTogRWRpdG9yKSB7XG4gICAgdGhpcy5jdXJzb3JBY3Rpdml0eS5lbWl0KGNtKTtcbiAgfVxuICBkcm9wRmlsZXMoY206IEVkaXRvciwgZTogRHJhZ0V2ZW50KSB7XG4gICAgdGhpcy5kcm9wLmVtaXQoW2NtLCBlXSk7XG4gIH1cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5jb2RlTWlycm9yKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1ciA9IHRoaXMuY29kZU1pcnJvci5nZXRWYWx1ZSgpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSBjdXIgJiZcbiAgICAgIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKGN1cikgIT09IG5vcm1hbGl6ZUxpbmVFbmRpbmdzKHZhbHVlKVxuICAgICkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMucHJlc2VydmVTY3JvbGxQb3NpdGlvbikge1xuICAgICAgICBjb25zdCBwcmV2U2Nyb2xsUG9zaXRpb24gPSB0aGlzLmNvZGVNaXJyb3IuZ2V0U2Nyb2xsSW5mbygpO1xuICAgICAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY29kZU1pcnJvci5zY3JvbGxUbyhcbiAgICAgICAgICBwcmV2U2Nyb2xsUG9zaXRpb24ubGVmdCxcbiAgICAgICAgICBwcmV2U2Nyb2xsUG9zaXRpb24udG9wLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2RlTWlycm9yLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLnNldE9wdGlvbklmQ2hhbmdlZCgncmVhZE9ubHknLCB0aGlzLmRpc2FibGVkKTtcbiAgfVxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1pcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3RybC9uZ3gtY29kZW1pcnJvci8iLCJzb3VyY2VzIjpbImNvZGVtaXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXpFLFNBQVMsb0JBQW9CLENBQUMsR0FBVztJQUN2QyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FBTyxHQUFHLENBQUM7S0FDWjtJQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQTRCRCxJQUFhLG1CQUFtQiwyQkFBaEMsTUFBYSxtQkFBbUI7SUEwQzlCLFlBQW9CLFFBQXlCLEVBQVUsT0FBZTtRQUFsRCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUF4Q3RFLDJDQUEyQztRQUNsQyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLDBDQUEwQztRQUNqQyxTQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzdCLHVEQUF1RDtRQUM5QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBWTNCLDREQUE0RDtRQUNuRCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDeEMsMENBQTBDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0RCxzREFBc0Q7UUFDNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3BELHdD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Q0FBQTs7WUEvSStCLGVBQWU7WUFBbUIsTUFBTTs7QUF2QzdEO0lBQVIsS0FBSyxFQUFFO3NEQUFnQjtBQUVmO0lBQVIsS0FBSyxFQUFFO2lEQUFxQjtBQUVwQjtJQUFSLEtBQUssRUFBRTtzREFBbUI7QUFNM0I7SUFEQyxLQUFLLEVBQUU7a0RBTVA7QUFFUTtJQUFSLEtBQUssRUFBRTttRUFBZ0M7QUFFOUI7SUFBVCxNQUFNLEVBQUU7MkRBQTZDO0FBRTVDO0lBQVQsTUFBTSxFQUFFO3dEQUEyQztBQUUxQztJQUFULE1BQU0sRUFBRTttREFBeUM7QUFFeEM7SUFBVCxNQUFNLEVBQUU7aURBQWdEO0FBQ3JCO0lBQW5DLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0RBQWlCO0FBN0J6QyxtQkFBbUI7SUF2Qi9CLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7O0dBVVQ7UUFDRCxTQUFTLEVBQUU7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHFCQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7UUFDRCxtQkFBbUIsRUFBRSxLQUFLO1FBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO0tBQ2hELENBQUM7R0FDVyxtQkFBbUIsQ0F5TC9CO1NBekxZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBFZGl0b3IsXG4gIEVkaXRvckNoYW5nZUxpbmtlZExpc3QsXG4gIEVkaXRvckZyb21UZXh0QXJlYSxcbiAgU2Nyb2xsSW5mbyxcbn0gZnJvbSAnY29kZW1pcnJvcic7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKHN0cjogc3RyaW5nKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcclxcbnxcXHIvZywgJ1xcbicpO1xufVxuXG5kZWNsYXJlIHZhciByZXF1aXJlOiBhbnk7XG5kZWNsYXJlIHZhciBDb2RlTWlycm9yOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1jb2RlbWlycm9yJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dGV4dGFyZWFcbiAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgY2xhc3M9XCJuZ3gtY29kZW1pcnJvciB7eyBjbGFzc05hbWUgfX1cIlxuICAgICAgW2NsYXNzLm5neC1jb2RlbWlycm9yLS1mb2N1c2VkXT1cImlzRm9jdXNlZFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW2F1dG9mb2N1c109XCJhdXRvRm9jdXNcIlxuICAgICAgI3JlZlxuICAgID5cbiAgICA8L3RleHRhcmVhPlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVtaXJyb3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb2RlbWlycm9yQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVjayB7XG4gIC8qIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNyZWF0ZWQgdGV4dGFyZWEgKi9cbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIC8qIG5hbWUgYXBwbGllZCB0byB0aGUgY3JlYXRlZCB0ZXh0YXJlYSAqL1xuICBASW5wdXQoKSBuYW1lID0gJ2NvZGVtaXJyb3InO1xuICAvKiBhdXRvZm9jdXMgc2V0dGluZyBhcHBsaWVkIHRvIHRoZSBjcmVhdGVkIHRleHRhcmVhICovXG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICAvKipcbiAgICogc2V0IG9wdGlvbnMgZm9yIGNvZGVtaXJyb3JcbiAgICogQGxpbmsgaHR0cDovL2NvZGVtaXJyb3IubmV0L2RvYy9tYW51YWwuaHRtbCNjb25maWdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIGlmICghdGhpcy5fZGlmZmVyICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLl9kaWZmZXIgPSB0aGlzLl9kaWZmZXJzLmZpbmQodmFsdWUpLmNyZWF0ZSgpO1xuICAgIH1cbiAgfVxuICAvKiBwcmVzZXJ2ZSBwcmV2aW91cyBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgdXBkYXRpbmcgdmFsdWUgKi9cbiAgQElucHV0KCkgcHJlc2VydmVTY3JvbGxQb3NpdGlvbiA9IGZhbHNlO1xuICAvKiBjYWxsZWQgd2hlbiB0aGUgdGV4dCBjdXJzb3IgaXMgbW92ZWQgKi9cbiAgQE91dHB1dCgpIGN1cnNvckFjdGl2aXR5ID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0b3I+KCk7XG4gIC8qIGNhbGxlZCB3aGVuIHRoZSBlZGl0b3IgaXMgZm9jdXNlZCBvciBsb3NlcyBmb2N1cyAqL1xuICBAT3V0cHV0KCkgZm9jdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qIGNhbGxlZCB3aGVuIHRoZSBlZGl0b3IgaXMgc2Nyb2xsZWQgKi9cbiAgQE91dHB1dCgpIHNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsSW5mbz4oKTtcbiAgLyogY2FsbGVkIHdoZW4gZmlsZShzKSBhcmUgZHJvcHBlZCAqL1xuICBAT3V0cHV0KCkgZHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8W0VkaXRvciwgRHJhZ0V2ZW50XT4oKTtcbiAgQFZpZXdDaGlsZCgncmVmJywgeyBzdGF0aWM6IHRydWUgfSkgcmVmOiBFbGVtZW50UmVmO1xuICB2YWx1ZSA9ICcnO1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgY29kZU1pcnJvcjogRWRpdG9yRnJvbVRleHRBcmVhO1xuICAvKipcbiAgICogZWl0aGVyIGdsb2JhbCB2YXJpYWJsZSBvciByZXF1aXJlZCBsaWJyYXJ5XG4gICAqL1xuICBwcml2YXRlIF9jb2RlTWlycm9yOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XG4gIHByaXZhdGUgX29wdGlvbnM6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7fVxuXG4gIGdldCBjb2RlTWlycm9yR2xvYmFsKCkge1xuICAgIGlmICh0aGlzLl9jb2RlTWlycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvcjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb2RlTWlycm9yID0gQ29kZU1pcnJvciA/IENvZGVNaXJyb3IgOiByZXF1aXJlKCdjb2RlbWlycm9yJyk7XG4gICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3I7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLnJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBpbiBvcmRlciB0byBhbGxvdyBmb3IgdW5pdmVyc2FsIHJlbmRlcmluZywgd2UgaW1wb3J0IENvZGVtaXJyb3IgcnVudGltZSB3aXRoIGByZXF1aXJlYCB0byBwcmV2ZW50IG5vZGUgZXJyb3JzXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuY29kZU1pcnJvciA9IHRoaXMuY29kZU1pcnJvckdsb2JhbC5mcm9tVGV4dEFyZWEoXG4gICAgICAgIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuX29wdGlvbnMsXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKCdjdXJzb3JBY3Rpdml0eScsIGNtID0+XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5jdXJzb3JBY3RpdmUoY20pKSxcbiAgICAgICk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iub24oJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbignYmx1cicsICgpID0+XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5mb2N1c0NoYW5nZWQoZmFsc2UpKSxcbiAgICAgICk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iub24oJ2ZvY3VzJywgKCkgPT5cbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLmZvY3VzQ2hhbmdlZCh0cnVlKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKFxuICAgICAgICAnY2hhbmdlJyxcbiAgICAgICAgKGNtOiBFZGl0b3IsIGNoYW5nZTogRWRpdG9yQ2hhbmdlTGlua2VkTGlzdCkgPT5cbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuY29kZW1pcnJvclZhbHVlQ2hhbmdlZChjbSwgY2hhbmdlKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKFxuICAgICAgICAnZHJvcCcsXG4gICAgICAgIChjbTogRWRpdG9yLCBlOiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuZHJvcEZpbGVzKGNtLCBlKSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgfSk7XG4gIH1cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICghdGhpcy5fZGlmZmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGNoZWNrIG9wdGlvbnMgaGF2ZSBub3QgY2hhbmdlZFxuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9vcHRpb25zKTtcbiAgICBpZiAoY2hhbmdlcykge1xuICAgICAgY2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0ob3B0aW9uID0+XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKG9wdGlvbi5rZXksIG9wdGlvbi5jdXJyZW50VmFsdWUpLFxuICAgICAgKTtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbShvcHRpb24gPT5cbiAgICAgICAgdGhpcy5zZXRPcHRpb25JZkNoYW5nZWQob3B0aW9uLmtleSwgb3B0aW9uLmN1cnJlbnRWYWx1ZSksXG4gICAgICApO1xuICAgICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0ob3B0aW9uID0+XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKG9wdGlvbi5rZXksIG9wdGlvbi5jdXJyZW50VmFsdWUpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gaXMgdGhlcmUgYSBsaWdodGVyLXdlaWdodCB3YXkgdG8gcmVtb3ZlIHRoZSBjbSBpbnN0YW5jZT9cbiAgICBpZiAodGhpcy5jb2RlTWlycm9yKSB7XG4gICAgICB0aGlzLmNvZGVNaXJyb3IudG9UZXh0QXJlYSgpO1xuICAgIH1cbiAgfVxuICBjb2RlbWlycm9yVmFsdWVDaGFuZ2VkKGNtOiBFZGl0b3IsIGNoYW5nZTogRWRpdG9yQ2hhbmdlTGlua2VkTGlzdCkge1xuICAgIGlmIChjaGFuZ2Uub3JpZ2luICE9PSAnc2V0VmFsdWUnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gY20uZ2V0VmFsdWUoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHNldE9wdGlvbklmQ2hhbmdlZChvcHRpb25OYW1lOiBzdHJpbmcsIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuY29kZU1pcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhc3QgdG8gYW55IHRvIGhhbmRsZSBzdHJpY3RseSB0eXBlZCBvcHRpb24gbmFtZXNcbiAgICAvLyBjb3VsZCBwb3NzaWJseSBpbXBvcnQgc2V0dGluZ3Mgc3RyaW5ncyBhdmFpbGFibGUgaW4gdGhlIGZ1dHVyZVxuICAgIHRoaXMuY29kZU1pcnJvci5zZXRPcHRpb24ob3B0aW9uTmFtZSBhcyBhbnksIG5ld1ZhbHVlKTtcbiAgfVxuICBmb2N1c0NoYW5nZWQoZm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmb2N1c2VkO1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdChmb2N1c2VkKTtcbiAgfVxuICBzY3JvbGxDaGFuZ2VkKGNtOiBFZGl0b3IpIHtcbiAgICB0aGlzLnNjcm9sbC5lbWl0KGNtLmdldFNjcm9sbEluZm8oKSk7XG4gIH1cbiAgY3Vyc29yQWN0aXZlKGNtOiBFZGl0b3IpIHtcbiAgICB0aGlzLmN1cnNvckFjdGl2aXR5LmVtaXQoY20pO1xuICB9XG4gIGRyb3BGaWxlcyhjbTogRWRpdG9yLCBlOiBEcmFnRXZlbnQpIHtcbiAgICB0aGlzLmRyb3AuZW1pdChbY20sIGVdKTtcbiAgfVxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNvZGVNaXJyb3IpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VyID0gdGhpcy5jb2RlTWlycm9yLmdldFZhbHVlKCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IGN1ciAmJlxuICAgICAgbm9ybWFsaXplTGluZUVuZGluZ3MoY3VyKSAhPT0gbm9ybWFsaXplTGluZUVuZGluZ3ModmFsdWUpXG4gICAgKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5wcmVzZXJ2ZVNjcm9sbFBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHByZXZTY3JvbGxQb3NpdGlvbiA9IHRoaXMuY29kZU1pcnJvci5nZXRTY3JvbGxJbmZvKCk7XG4gICAgICAgIHRoaXMuY29kZU1pcnJvci5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jb2RlTWlycm9yLnNjcm9sbFRvKFxuICAgICAgICAgIHByZXZTY3JvbGxQb3NpdGlvbi5sZWZ0LFxuICAgICAgICAgIHByZXZTY3JvbGxQb3NpdGlvbi50b3AsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKCdyZWFkT25seScsIHRoaXMuZGlzYWJsZWQpO1xuICB9XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xufVxuIl19

@@ -10,5 +10,2 @@ import { __decorate } from "tslib";

}
/* tslint:disable */
var CodeMirror;
/* tslint:enable */
var CodemirrorComponent = /** @class */ (function () {

@@ -237,2 +234,2 @@ function CodemirrorComponent(_differs, _ngZone) {

export { CodemirrorComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1pcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3RybC9uZ3gtY29kZW1pcnJvci8iLCJzb3VyY2VzIjpbImNvZGVtaXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRekUsU0FBUyxvQkFBb0IsQ0FBQyxHQUFXO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0QsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBR0Qsb0JBQW9CO0FBQ3BCLElBQUksVUFBZSxDQUFDO0FBQ3BCLG1CQUFtQjtBQXlCbkI7SUEwQ0UsNkJBQW9CLFFBQXlCLEVBQVUsT0FBZTtRQUFsRCxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUF4Q3RFLDJDQUEyQztRQUNsQyxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLDBDQUEwQztRQUNqQyxTQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzdCLHVEQUF1RDtRQUM5QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBWTNCLDREQUE0RDtRQUNuRCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDeEMsMENBQTBDO1FBQ2hDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN0RCxzREFBc0Q7UUFDNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFB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SUF5TEM7U0F6TFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEVkaXRvcixcbiAgRWRpdG9yQ2hhbmdlTGlua2VkTGlzdCxcbiAgRWRpdG9yRnJvbVRleHRBcmVhLFxuICBTY3JvbGxJbmZvLFxufSBmcm9tICdjb2RlbWlycm9yJztcblxuZnVuY3Rpb24gbm9ybWFsaXplTGluZUVuZGluZ3Moc3RyOiBzdHJpbmcpIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXFxyXFxufFxcci9nLCAnXFxuJyk7XG59XG5cbmRlY2xhcmUgdmFyIHJlcXVpcmU6IGFueTtcbi8qIHRzbGludDpkaXNhYmxlICovXG52YXIgQ29kZU1pcnJvcjogYW55O1xuLyogdHNsaW50OmVuYWJsZSAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtY29kZW1pcnJvcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHRleHRhcmVhXG4gICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgIGNsYXNzPVwibmd4LWNvZGVtaXJyb3Ige3sgY2xhc3NOYW1lIH19XCJcbiAgICAgIFtjbGFzcy5uZ3gtY29kZW1pcnJvci0tZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgIFthdXRvZm9jdXNdPVwiYXV0b0ZvY3VzXCJcbiAgICAgICNyZWZcbiAgICA+XG4gICAgPC90ZXh0YXJlYT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb2RlbWlycm9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29kZW1pcnJvckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIERvQ2hlY2sge1xuICAvKiBjbGFzcyBhcHBsaWVkIHRvIHRoZSBjcmVhdGVkIHRleHRhcmVhICovXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xuICAvKiBuYW1lIGFwcGxpZWQgdG8gdGhlIGNyZWF0ZWQgdGV4dGFyZWEgKi9cbiAgQElucHV0KCkgbmFtZSA9ICdjb2RlbWlycm9yJztcbiAgLyogYXV0b2ZvY3VzIHNldHRpbmcgYXBwbGllZCB0byB0aGUgY3JlYXRlZCB0ZXh0YXJlYSAqL1xuICBASW5wdXQoKSBhdXRvRm9jdXMgPSBmYWxzZTtcbiAgLyoqXG4gICAqIHNldCBvcHRpb25zIGZvciBjb2RlbWlycm9yXG4gICAqIEBsaW5rIGh0dHA6Ly9jb2RlbWlycm9yLm5ldC9kb2MvbWFudWFsLmh0bWwjY29uZmlnXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICBpZiAoIXRoaXMuX2RpZmZlciAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5fZGlmZmVycy5maW5kKHZhbHVlKS5jcmVhdGUoKTtcbiAgICB9XG4gIH1cbiAgLyogcHJlc2VydmUgcHJldmlvdXMgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIHVwZGF0aW5nIHZhbHVlICovXG4gIEBJbnB1dCgpIHByZXNlcnZlU2Nyb2xsUG9zaXRpb24gPSBmYWxzZTtcbiAgLyogY2FsbGVkIHdoZW4gdGhlIHRleHQgY3Vyc29yIGlzIG1vdmVkICovXG4gIEBPdXRwdXQoKSBjdXJzb3JBY3Rpdml0eSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdG9yPigpO1xuICAvKiBjYWxsZWQgd2hlbiB0aGUgZWRpdG9yIGlzIGZvY3VzZWQgb3IgbG9zZXMgZm9jdXMgKi9cbiAgQE91dHB1dCgpIGZvY3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKiBjYWxsZWQgd2hlbiB0aGUgZWRpdG9yIGlzIHNjcm9sbGVkICovXG4gIEBPdXRwdXQoKSBzY3JvbGwgPSBuZXcgRXZlbnRFbWl0dGVyPFNjcm9sbEluZm8+KCk7XG4gIC8qIGNhbGxlZCB3aGVuIGZpbGUocykgYXJlIGRyb3BwZWQgKi9cbiAgQE91dHB1dCgpIGRyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPFtFZGl0b3IsIERyYWdFdmVudF0+KCk7XG4gIEBWaWV3Q2hpbGQoJ3JlZicsIHsgc3RhdGljOiB0cnVlIH0pIHJlZjogRWxlbWVudFJlZjtcbiAgdmFsdWUgPSAnJztcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgaXNGb2N1c2VkID0gZmFsc2U7XG4gIGNvZGVNaXJyb3I6IEVkaXRvckZyb21UZXh0QXJlYTtcbiAgLyoqXG4gICAqIGVpdGhlciBnbG9iYWwgdmFyaWFibGUgb3IgcmVxdWlyZWQgbGlicmFyeVxuICAgKi9cbiAgcHJpdmF0ZSBfY29kZU1pcnJvcjogYW55O1xuXG4gIHByaXZhdGUgX2RpZmZlcjogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+O1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLCBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZSkge31cblxuICBnZXQgY29kZU1pcnJvckdsb2JhbCgpIHtcbiAgICBpZiAodGhpcy5fY29kZU1pcnJvcikge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3I7XG4gICAgfVxuXG4gICAgdGhpcy5fY29kZU1pcnJvciA9IENvZGVNaXJyb3IgPyBDb2RlTWlycm9yIDogcmVxdWlyZSgnY29kZW1pcnJvcicpO1xuICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5yZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHVuaXZlcnNhbCByZW5kZXJpbmcsIHdlIGltcG9ydCBDb2RlbWlycm9yIHJ1bnRpbWUgd2l0aCBgcmVxdWlyZWAgdG8gcHJldmVudCBub2RlIGVycm9yc1xuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmNvZGVNaXJyb3IgPSB0aGlzLmNvZGVNaXJyb3JHbG9iYWwuZnJvbVRleHRBcmVhKFxuICAgICAgICB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLl9vcHRpb25zLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbignY3Vyc29yQWN0aXZpdHknLCBjbSA9PlxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuY3Vyc29yQWN0aXZlKGNtKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKCdzY3JvbGwnLCB0aGlzLnNjcm9sbENoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iub24oJ2JsdXInLCAoKSA9PlxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuZm9jdXNDaGFuZ2VkKGZhbHNlKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKCdmb2N1cycsICgpID0+XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5mb2N1c0NoYW5nZWQodHJ1ZSkpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbihcbiAgICAgICAgJ2NoYW5nZScsXG4gICAgICAgIChjbTogRWRpdG9yLCBjaGFuZ2U6IEVkaXRvckNoYW5nZUxpbmtlZExpc3QpID0+XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLmNvZGVtaXJyb3JWYWx1ZUNoYW5nZWQoY20sIGNoYW5nZSkpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbihcbiAgICAgICAgJ2Ryb3AnLFxuICAgICAgICAoY206IEVkaXRvciwgZTogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLmRyb3BGaWxlcyhjbSwgZSkpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIG5nRG9DaGVjaygpIHtcbiAgICBpZiAoIXRoaXMuX2RpZmZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBjaGVjayBvcHRpb25zIGhhdmUgbm90IGNoYW5nZWRcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fb3B0aW9ucyk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaENoYW5nZWRJdGVtKG9wdGlvbiA9PlxuICAgICAgICB0aGlzLnNldE9wdGlvbklmQ2hhbmdlZChvcHRpb24ua2V5LCBvcHRpb24uY3VycmVudFZhbHVlKSxcbiAgICAgICk7XG4gICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0ob3B0aW9uID0+XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKG9wdGlvbi5rZXksIG9wdGlvbi5jdXJyZW50VmFsdWUpLFxuICAgICAgKTtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKG9wdGlvbiA9PlxuICAgICAgICB0aGlzLnNldE9wdGlvbklmQ2hhbmdlZChvcHRpb24ua2V5LCBvcHRpb24uY3VycmVudFZhbHVlKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIGlzIHRoZXJlIGEgbGlnaHRlci13ZWlnaHQgd2F5IHRvIHJlbW92ZSB0aGUgY20gaW5zdGFuY2U/XG4gICAgaWYgKHRoaXMuY29kZU1pcnJvcikge1xuICAgICAgdGhpcy5jb2RlTWlycm9yLnRvVGV4dEFyZWEoKTtcbiAgICB9XG4gIH1cbiAgY29kZW1pcnJvclZhbHVlQ2hhbmdlZChjbTogRWRpdG9yLCBjaGFuZ2U6IEVkaXRvckNoYW5nZUxpbmtlZExpc3QpIHtcbiAgICBpZiAoY2hhbmdlLm9yaWdpbiAhPT0gJ3NldFZhbHVlJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGNtLmdldFZhbHVlKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuICBzZXRPcHRpb25JZkNoYW5nZWQob3B0aW9uTmFtZTogc3RyaW5nLCBuZXdWYWx1ZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLmNvZGVNaXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjYXN0IHRvIGFueSB0byBoYW5kbGUgc3RyaWN0bHkgdHlwZWQgb3B0aW9uIG5hbWVzXG4gICAgLy8gY291bGQgcG9zc2libHkgaW1wb3J0IHNldHRpbmdzIHN0cmluZ3MgYXZhaWxhYmxlIGluIHRoZSBmdXR1cmVcbiAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0T3B0aW9uKG9wdGlvbk5hbWUgYXMgYW55LCBuZXdWYWx1ZSk7XG4gIH1cbiAgZm9jdXNDaGFuZ2VkKGZvY3VzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZm9jdXNlZDtcbiAgICB0aGlzLmZvY3VzQ2hhbmdlLmVtaXQoZm9jdXNlZCk7XG4gIH1cbiAgc2Nyb2xsQ2hhbmdlZChjbTogRWRpdG9yKSB7XG4gICAgdGhpcy5zY3JvbGwuZW1pdChjbS5nZXRTY3JvbGxJbmZvKCkpO1xuICB9XG4gIGN1cnNvckFjdGl2ZShjbTogRWRpdG9yKSB7XG4gICAgdGhpcy5jdXJzb3JBY3Rpdml0eS5lbWl0KGNtKTtcbiAgfVxuICBkcm9wRmlsZXMoY206IEVkaXRvciwgZTogRHJhZ0V2ZW50KSB7XG4gICAgdGhpcy5kcm9wLmVtaXQoW2NtLCBlXSk7XG4gIH1cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5jb2RlTWlycm9yKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGN1ciA9IHRoaXMuY29kZU1pcnJvci5nZXRWYWx1ZSgpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSBjdXIgJiZcbiAgICAgIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKGN1cikgIT09IG5vcm1hbGl6ZUxpbmVFbmRpbmdzKHZhbHVlKVxuICAgICkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMucHJlc2VydmVTY3JvbGxQb3NpdGlvbikge1xuICAgICAgICBjb25zdCBwcmV2U2Nyb2xsUG9zaXRpb24gPSB0aGlzLmNvZGVNaXJyb3IuZ2V0U2Nyb2xsSW5mbygpO1xuICAgICAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY29kZU1pcnJvci5zY3JvbGxUbyhcbiAgICAgICAgICBwcmV2U2Nyb2xsUG9zaXRpb24ubGVmdCxcbiAgICAgICAgICBwcmV2U2Nyb2xsUG9zaXRpb24udG9wLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb2RlTWlycm9yLnNldFZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLnNldE9wdGlvbklmQ2hhbmdlZCgncmVhZE9ubHknLCB0aGlzLmRpc2FibGVkKTtcbiAgfVxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZW1pcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3RybC9uZ3gtY29kZW1pcnJvci8iLCJzb3VyY2VzIjpbImNvZGVtaXJyb3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxjQUFjLEVBQ2QsZUFBZSxFQUNmLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRekUsU0FBUyxvQkFBb0IsQ0FBQyxHQUFXO0lBQ3ZDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0QsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBNEJEO0lBMENFLDZCQUFvQixRQUF5QixFQUFVLE9BQWU7UUFBbEQsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBeEN0RSwyQ0FBMkM7UUFDbEMsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN4QiwwQ0FBMEM7UUFDakMsU0FBSSxHQUFHLFlBQVksQ0FBQztRQUM3Qix1REFBdUQ7UUFDOUMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVkzQiw0REFBNEQ7UUFDbkQsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLDBDQUEwQztRQUNoQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdEQsc0RBQXNEO1FBQzVDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNwRCx3Q0FBd0M7UUFDOUIsV0FBTSxHQUFHLElBQUksWUFBWSxF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XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBFZGl0b3IsXG4gIEVkaXRvckNoYW5nZUxpbmtlZExpc3QsXG4gIEVkaXRvckZyb21UZXh0QXJlYSxcbiAgU2Nyb2xsSW5mbyxcbn0gZnJvbSAnY29kZW1pcnJvcic7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKHN0cjogc3RyaW5nKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcclxcbnxcXHIvZywgJ1xcbicpO1xufVxuXG5kZWNsYXJlIHZhciByZXF1aXJlOiBhbnk7XG5kZWNsYXJlIHZhciBDb2RlTWlycm9yOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1jb2RlbWlycm9yJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8dGV4dGFyZWFcbiAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgY2xhc3M9XCJuZ3gtY29kZW1pcnJvciB7eyBjbGFzc05hbWUgfX1cIlxuICAgICAgW2NsYXNzLm5neC1jb2RlbWlycm9yLS1mb2N1c2VkXT1cImlzRm9jdXNlZFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW2F1dG9mb2N1c109XCJhdXRvRm9jdXNcIlxuICAgICAgI3JlZlxuICAgID5cbiAgICA8L3RleHRhcmVhPlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVtaXJyb3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb2RlbWlycm9yQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRG9DaGVjayB7XG4gIC8qIGNsYXNzIGFwcGxpZWQgdG8gdGhlIGNyZWF0ZWQgdGV4dGFyZWEgKi9cbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIC8qIG5hbWUgYXBwbGllZCB0byB0aGUgY3JlYXRlZCB0ZXh0YXJlYSAqL1xuICBASW5wdXQoKSBuYW1lID0gJ2NvZGVtaXJyb3InO1xuICAvKiBhdXRvZm9jdXMgc2V0dGluZyBhcHBsaWVkIHRvIHRoZSBjcmVhdGVkIHRleHRhcmVhICovXG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICAvKipcbiAgICogc2V0IG9wdGlvbnMgZm9yIGNvZGVtaXJyb3JcbiAgICogQGxpbmsgaHR0cDovL2NvZGVtaXJyb3IubmV0L2RvYy9tYW51YWwuaHRtbCNjb25maWdcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKHZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHZhbHVlO1xuICAgIGlmICghdGhpcy5fZGlmZmVyICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLl9kaWZmZXIgPSB0aGlzLl9kaWZmZXJzLmZpbmQodmFsdWUpLmNyZWF0ZSgpO1xuICAgIH1cbiAgfVxuICAvKiBwcmVzZXJ2ZSBwcmV2aW91cyBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgdXBkYXRpbmcgdmFsdWUgKi9cbiAgQElucHV0KCkgcHJlc2VydmVTY3JvbGxQb3NpdGlvbiA9IGZhbHNlO1xuICAvKiBjYWxsZWQgd2hlbiB0aGUgdGV4dCBjdXJzb3IgaXMgbW92ZWQgKi9cbiAgQE91dHB1dCgpIGN1cnNvckFjdGl2aXR5ID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0b3I+KCk7XG4gIC8qIGNhbGxlZCB3aGVuIHRoZSBlZGl0b3IgaXMgZm9jdXNlZCBvciBsb3NlcyBmb2N1cyAqL1xuICBAT3V0cHV0KCkgZm9jdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIC8qIGNhbGxlZCB3aGVuIHRoZSBlZGl0b3IgaXMgc2Nyb2xsZWQgKi9cbiAgQE91dHB1dCgpIHNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsSW5mbz4oKTtcbiAgLyogY2FsbGVkIHdoZW4gZmlsZShzKSBhcmUgZHJvcHBlZCAqL1xuICBAT3V0cHV0KCkgZHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8W0VkaXRvciwgRHJhZ0V2ZW50XT4oKTtcbiAgQFZpZXdDaGlsZCgncmVmJywgeyBzdGF0aWM6IHRydWUgfSkgcmVmOiBFbGVtZW50UmVmO1xuICB2YWx1ZSA9ICcnO1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgY29kZU1pcnJvcjogRWRpdG9yRnJvbVRleHRBcmVhO1xuICAvKipcbiAgICogZWl0aGVyIGdsb2JhbCB2YXJpYWJsZSBvciByZXF1aXJlZCBsaWJyYXJ5XG4gICAqL1xuICBwcml2YXRlIF9jb2RlTWlycm9yOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZGlmZmVyOiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XG4gIHByaXZhdGUgX29wdGlvbnM6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7fVxuXG4gIGdldCBjb2RlTWlycm9yR2xvYmFsKCkge1xuICAgIGlmICh0aGlzLl9jb2RlTWlycm9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvcjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb2RlTWlycm9yID0gQ29kZU1pcnJvciA/IENvZGVNaXJyb3IgOiByZXF1aXJlKCdjb2RlbWlycm9yJyk7XG4gICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3I7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKCF0aGlzLnJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBpbiBvcmRlciB0byBhbGxvdyBmb3IgdW5pdmVyc2FsIHJlbmRlcmluZywgd2UgaW1wb3J0IENvZGVtaXJyb3IgcnVudGltZSB3aXRoIGByZXF1aXJlYCB0byBwcmV2ZW50IG5vZGUgZXJyb3JzXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuY29kZU1pcnJvciA9IHRoaXMuY29kZU1pcnJvckdsb2JhbC5mcm9tVGV4dEFyZWEoXG4gICAgICAgIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuX29wdGlvbnMsXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKCdjdXJzb3JBY3Rpdml0eScsIGNtID0+XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5jdXJzb3JBY3RpdmUoY20pKSxcbiAgICAgICk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iub24oJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICAgIHRoaXMuY29kZU1pcnJvci5vbignYmx1cicsICgpID0+XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5mb2N1c0NoYW5nZWQoZmFsc2UpKSxcbiAgICAgICk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iub24oJ2ZvY3VzJywgKCkgPT5cbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB0aGlzLmZvY3VzQ2hhbmdlZCh0cnVlKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKFxuICAgICAgICAnY2hhbmdlJyxcbiAgICAgICAgKGNtOiBFZGl0b3IsIGNoYW5nZTogRWRpdG9yQ2hhbmdlTGlua2VkTGlzdCkgPT5cbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuY29kZW1pcnJvclZhbHVlQ2hhbmdlZChjbSwgY2hhbmdlKSksXG4gICAgICApO1xuICAgICAgdGhpcy5jb2RlTWlycm9yLm9uKFxuICAgICAgICAnZHJvcCcsXG4gICAgICAgIChjbTogRWRpdG9yLCBlOiBEcmFnRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuZHJvcEZpbGVzKGNtLCBlKSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgfSk7XG4gIH1cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICghdGhpcy5fZGlmZmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGNoZWNrIG9wdGlvbnMgaGF2ZSBub3QgY2hhbmdlZFxuICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9vcHRpb25zKTtcbiAgICBpZiAoY2hhbmdlcykge1xuICAgICAgY2hhbmdlcy5mb3JFYWNoQ2hhbmdlZEl0ZW0ob3B0aW9uID0+XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKG9wdGlvbi5rZXksIG9wdGlvbi5jdXJyZW50VmFsdWUpLFxuICAgICAgKTtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaEFkZGVkSXRlbShvcHRpb24gPT5cbiAgICAgICAgdGhpcy5zZXRPcHRpb25JZkNoYW5nZWQob3B0aW9uLmtleSwgb3B0aW9uLmN1cnJlbnRWYWx1ZSksXG4gICAgICApO1xuICAgICAgY2hhbmdlcy5mb3JFYWNoUmVtb3ZlZEl0ZW0ob3B0aW9uID0+XG4gICAgICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKG9wdGlvbi5rZXksIG9wdGlvbi5jdXJyZW50VmFsdWUpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gaXMgdGhlcmUgYSBsaWdodGVyLXdlaWdodCB3YXkgdG8gcmVtb3ZlIHRoZSBjbSBpbnN0YW5jZT9cbiAgICBpZiAodGhpcy5jb2RlTWlycm9yKSB7XG4gICAgICB0aGlzLmNvZGVNaXJyb3IudG9UZXh0QXJlYSgpO1xuICAgIH1cbiAgfVxuICBjb2RlbWlycm9yVmFsdWVDaGFuZ2VkKGNtOiBFZGl0b3IsIGNoYW5nZTogRWRpdG9yQ2hhbmdlTGlua2VkTGlzdCkge1xuICAgIGlmIChjaGFuZ2Uub3JpZ2luICE9PSAnc2V0VmFsdWUnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gY20uZ2V0VmFsdWUoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHNldE9wdGlvbklmQ2hhbmdlZChvcHRpb25OYW1lOiBzdHJpbmcsIG5ld1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuY29kZU1pcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNhc3QgdG8gYW55IHRvIGhhbmRsZSBzdHJpY3RseSB0eXBlZCBvcHRpb24gbmFtZXNcbiAgICAvLyBjb3VsZCBwb3NzaWJseSBpbXBvcnQgc2V0dGluZ3Mgc3RyaW5ncyBhdmFpbGFibGUgaW4gdGhlIGZ1dHVyZVxuICAgIHRoaXMuY29kZU1pcnJvci5zZXRPcHRpb24ob3B0aW9uTmFtZSBhcyBhbnksIG5ld1ZhbHVlKTtcbiAgfVxuICBmb2N1c0NoYW5nZWQoZm9jdXNlZDogYm9vbGVhbikge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmb2N1c2VkO1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdChmb2N1c2VkKTtcbiAgfVxuICBzY3JvbGxDaGFuZ2VkKGNtOiBFZGl0b3IpIHtcbiAgICB0aGlzLnNjcm9sbC5lbWl0KGNtLmdldFNjcm9sbEluZm8oKSk7XG4gIH1cbiAgY3Vyc29yQWN0aXZlKGNtOiBFZGl0b3IpIHtcbiAgICB0aGlzLmN1cnNvckFjdGl2aXR5LmVtaXQoY20pO1xuICB9XG4gIGRyb3BGaWxlcyhjbTogRWRpdG9yLCBlOiBEcmFnRXZlbnQpIHtcbiAgICB0aGlzLmRyb3AuZW1pdChbY20sIGVdKTtcbiAgfVxuICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmNvZGVNaXJyb3IpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY3VyID0gdGhpcy5jb2RlTWlycm9yLmdldFZhbHVlKCk7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IGN1ciAmJlxuICAgICAgbm9ybWFsaXplTGluZUVuZGluZ3MoY3VyKSAhPT0gbm9ybWFsaXplTGluZUVuZGluZ3ModmFsdWUpXG4gICAgKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy5wcmVzZXJ2ZVNjcm9sbFBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IHByZXZTY3JvbGxQb3NpdGlvbiA9IHRoaXMuY29kZU1pcnJvci5nZXRTY3JvbGxJbmZvKCk7XG4gICAgICAgIHRoaXMuY29kZU1pcnJvci5zZXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jb2RlTWlycm9yLnNjcm9sbFRvKFxuICAgICAgICAgIHByZXZTY3JvbGxQb3NpdGlvbi5sZWZ0LFxuICAgICAgICAgIHByZXZTY3JvbGxQb3NpdGlvbi50b3AsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvZGVNaXJyb3Iuc2V0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgLyoqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuc2V0T3B0aW9uSWZDaGFuZ2VkKCdyZWFkT25seScsIHRoaXMuZGlzYWJsZWQpO1xuICB9XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG4gIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xufVxuIl19

@@ -12,5 +12,2 @@ import { __decorate } from 'tslib';

}
/* tslint:disable */
var CodeMirror;
/* tslint:enable */
let CodemirrorComponent = CodemirrorComponent_1 = class CodemirrorComponent {

@@ -17,0 +14,0 @@ constructor(_differs, _ngZone) {

@@ -11,5 +11,2 @@ import { __decorate } from 'tslib';

}
/* tslint:disable */
var CodeMirror;
/* tslint:enable */
var CodemirrorComponent = /** @class */ (function () {

@@ -16,0 +13,0 @@ function CodemirrorComponent(_differs, _ngZone) {

{
"$schema": "../../node_modules/ng-packagr/package.schema.json",
"name": "@ctrl/ngx-codemirror",
"version": "3.0.4",
"version": "3.1.0",
"license": "MIT",

@@ -6,0 +6,0 @@ "description": "CodeMirror wrapper for Angular",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc