@covalent/code-editor 4.0.0-alpha.0 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,8 @@
1
1
  import { EventEmitter, OnInit, ElementRef, NgZone, ChangeDetectorRef, OnDestroy } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import { Observable } from 'rxjs';
4
+ import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
5
+ import * as i0 from "@angular/core";
4
6
  export declare class TdCodeEditorComponent implements OnInit, ControlValueAccessor, OnDestroy {
5
7
  private zone;
6
8
  private _changeDetectorRef;
@@ -21,12 +23,13 @@ export declare class TdCodeEditorComponent implements OnInit, ControlValueAccess
21
23
  private _isFullScreen;
22
24
  private _keycode;
23
25
  private _registeredLanguagesStyles;
26
+ private _onDidChangeContentDisposable?;
24
27
  _editorContainer: ElementRef;
25
28
  /**
26
29
  * editorInitialized: function($event)
27
30
  * Event emitted when editor is first initialized
28
31
  */
29
- editorInitialized: EventEmitter<void>;
32
+ editorInitialized: EventEmitter<monaco.editor.IStandaloneCodeEditor>;
30
33
  /**
31
34
  * editorConfigurationChanged: function($event)
32
35
  * Event emitted when editor's configuration changes
@@ -128,4 +131,6 @@ export declare class TdCodeEditorComponent implements OnInit, ControlValueAccess
128
131
  * addFullScreenModeCommand used to add the fullscreen option to the context menu
129
132
  */
130
133
  private addFullScreenModeCommand;
134
+ static ɵfac: i0.ɵɵFactoryDeclaration<TdCodeEditorComponent, never>;
135
+ static ɵcmp: i0.ɵɵComponentDeclaration<TdCodeEditorComponent, "td-code-editor", never, { "value": "value"; "language": "language"; "editorStyle": "editorStyle"; "theme": "theme"; "fullScreenKeyBinding": "fullScreenKeyBinding"; "editorOptions": "editorOptions"; }, { "editorInitialized": "editorInitialized"; "editorConfigurationChanged": "editorConfigurationChanged"; "editorLanguageChanged": "editorLanguageChanged"; "editorValueChange": "editorValueChange"; "change": "change"; }, never, never>;
131
136
  }
@@ -1,7 +1,8 @@
1
1
  :host {
2
2
  display: block;
3
3
  position: relative;
4
- .editorContainer {
4
+
5
+ .editor-container {
5
6
  position: absolute;
6
7
  top: 0;
7
8
  bottom: 0;
@@ -1,2 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./code-editor.component";
3
+ import * as i2 from "@angular/common";
1
4
  export declare class CovalentCodeEditorModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<CovalentCodeEditorModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CovalentCodeEditorModule, [typeof i1.TdCodeEditorComponent], [typeof i2.CommonModule], [typeof i1.TdCodeEditorComponent]>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<CovalentCodeEditorModule>;
2
8
  }
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
+ /// <amd-module name="@covalent/code-editor" />
4
5
  export * from './index';
@@ -0,0 +1,425 @@
1
+ import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, forwardRef, NgZone, ChangeDetectorRef, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { fromEvent, merge, timer } from 'rxjs';
5
+ import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';
6
+ // Use esm version to support shipping subset of languages and features
7
+ import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
8
+ import * as i0 from "@angular/core";
9
+ const _c0 = ["editorContainer"];
10
+ const noop = () => {
11
+ // empty method
12
+ };
13
+ // counter for ids to allow for multiple editors on one page
14
+ let uniqueCounter = 0;
15
+ export class TdCodeEditorComponent {
16
+ // tslint:disable-next-line:member-ordering
17
+ constructor(zone, _changeDetectorRef, _elementRef) {
18
+ this.zone = zone;
19
+ this._changeDetectorRef = _changeDetectorRef;
20
+ this._elementRef = _elementRef;
21
+ this._destroy = new Subject();
22
+ this._widthSubject = new Subject();
23
+ this._heightSubject = new Subject();
24
+ this._editorStyle = 'width:100%;height:100%;border:1px solid grey;';
25
+ this._value = '';
26
+ this._theme = 'vs';
27
+ this._language = 'javascript';
28
+ this._subject = new Subject();
29
+ this._editorInnerContainer = 'editorInnerContainer' + uniqueCounter++;
30
+ this._fromEditor = false;
31
+ this._componentInitialized = false;
32
+ this._editorOptions = {};
33
+ this._isFullScreen = false;
34
+ this._registeredLanguagesStyles = [];
35
+ /**
36
+ * editorInitialized: function($event)
37
+ * Event emitted when editor is first initialized
38
+ */
39
+ this.editorInitialized = new EventEmitter();
40
+ /**
41
+ * editorConfigurationChanged: function($event)
42
+ * Event emitted when editor's configuration changes
43
+ */
44
+ this.editorConfigurationChanged = new EventEmitter();
45
+ /**
46
+ * editorLanguageChanged: function($event)
47
+ * Event emitted when editor's Language changes
48
+ */
49
+ this.editorLanguageChanged = new EventEmitter();
50
+ /**
51
+ * editorValueChange: function($event)
52
+ * Event emitted any time something changes the editor value
53
+ */
54
+ this.editorValueChange = new EventEmitter();
55
+ /**
56
+ * The change event notifies you about a change happening in an input field.
57
+ * Since the component is not a native Angular component have to specifiy the event emitter ourself
58
+ */
59
+ this.change = new EventEmitter();
60
+ /* tslint:disable-next-line */
61
+ this.propagateChange = (_) => { };
62
+ this.onTouched = () => noop;
63
+ }
64
+ /**
65
+ * value?: string
66
+ */
67
+ set value(value) {
68
+ if (value === this._value) {
69
+ return;
70
+ }
71
+ this._value = value;
72
+ if (this._componentInitialized) {
73
+ this.applyValue();
74
+ }
75
+ }
76
+ get value() {
77
+ return this._value;
78
+ }
79
+ applyValue() {
80
+ if (!this._fromEditor) {
81
+ this._editor.setValue(this._value);
82
+ }
83
+ this._fromEditor = false;
84
+ this.propagateChange(this._value);
85
+ this.change.emit();
86
+ this.editorValueChange.emit();
87
+ }
88
+ /**
89
+ * Implemented as part of ControlValueAccessor.
90
+ */
91
+ writeValue(value) {
92
+ // do not write if null or undefined
93
+ // tslint:disable-next-line
94
+ if (value != undefined) {
95
+ this.value = value;
96
+ }
97
+ }
98
+ registerOnChange(fn) {
99
+ this.propagateChange = fn;
100
+ }
101
+ registerOnTouched(fn) {
102
+ this.onTouched = fn;
103
+ }
104
+ /**
105
+ * getEditorContent?: function
106
+ * Returns the content within the editor
107
+ */
108
+ getValue() {
109
+ if (this._componentInitialized) {
110
+ setTimeout(() => {
111
+ this._subject.next(this._value);
112
+ this._subject.complete();
113
+ this._subject = new Subject();
114
+ });
115
+ return this._subject.asObservable();
116
+ }
117
+ }
118
+ /**
119
+ * language?: string
120
+ * language used in editor
121
+ */
122
+ set language(language) {
123
+ this._language = language;
124
+ if (this._componentInitialized) {
125
+ this.applyLanguage();
126
+ }
127
+ }
128
+ get language() {
129
+ return this._language;
130
+ }
131
+ applyLanguage() {
132
+ if (this._language) {
133
+ monaco.editor.setModelLanguage(this._editor.getModel(), this._language);
134
+ this.editorLanguageChanged.emit();
135
+ }
136
+ }
137
+ /**
138
+ * registerLanguage?: function
139
+ * Registers a custom Language within the editor
140
+ */
141
+ registerLanguage(language) {
142
+ if (this._componentInitialized) {
143
+ for (const provider of language.completionItemProvider) {
144
+ /* tslint:disable-next-line */
145
+ provider.kind = eval(provider.kind);
146
+ }
147
+ for (const monarchTokens of language.monarchTokensProvider) {
148
+ /* tslint:disable-next-line */
149
+ monarchTokens[0] = eval(monarchTokens[0]);
150
+ }
151
+ monaco.languages.register({ id: language.id });
152
+ monaco.languages.setMonarchTokensProvider(language.id, {
153
+ tokenizer: {
154
+ root: language.monarchTokensProvider,
155
+ },
156
+ });
157
+ // Define a new theme that constains only rules that match this language
158
+ monaco.editor.defineTheme(language.customTheme.id, language.customTheme.theme);
159
+ this._theme = language.customTheme.id;
160
+ monaco.languages.registerCompletionItemProvider(language.id, {
161
+ provideCompletionItems: () => {
162
+ return language.completionItemProvider;
163
+ },
164
+ });
165
+ const css = document.createElement('style');
166
+ css.type = 'text/css';
167
+ css.innerHTML = language.monarchTokensProviderCSS;
168
+ document.body.appendChild(css);
169
+ this.editorConfigurationChanged.emit();
170
+ this._registeredLanguagesStyles = [...this._registeredLanguagesStyles, css];
171
+ }
172
+ }
173
+ /**
174
+ * style?: string
175
+ * css style of the editor on the page
176
+ */
177
+ set editorStyle(editorStyle) {
178
+ this._editorStyle = editorStyle;
179
+ if (this._componentInitialized) {
180
+ this.applyStyle();
181
+ }
182
+ }
183
+ get editorStyle() {
184
+ return this._editorStyle;
185
+ }
186
+ applyStyle() {
187
+ if (this._editorStyle) {
188
+ const containerDiv = this._editorContainer.nativeElement;
189
+ containerDiv.setAttribute('style', this._editorStyle);
190
+ }
191
+ }
192
+ /**
193
+ * theme?: string
194
+ * Theme to be applied to editor
195
+ */
196
+ set theme(theme) {
197
+ this._theme = theme;
198
+ if (this._componentInitialized) {
199
+ this._editor.updateOptions({ theme });
200
+ this.editorConfigurationChanged.emit();
201
+ }
202
+ }
203
+ get theme() {
204
+ return this._theme;
205
+ }
206
+ /**
207
+ * fullScreenKeyBinding?: number
208
+ * See here for key bindings https://microsoft.github.io/monaco-editor/api/enums/monaco.keycode.html
209
+ * Sets the KeyCode for shortcutting to Fullscreen mode
210
+ */
211
+ set fullScreenKeyBinding(keycode) {
212
+ this._keycode = keycode;
213
+ }
214
+ get fullScreenKeyBinding() {
215
+ return this._keycode;
216
+ }
217
+ /**
218
+ * editorOptions?: object
219
+ * Options used on editor instantiation. Available options listed here:
220
+ * https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.ieditoroptions.html
221
+ */
222
+ set editorOptions(editorOptions) {
223
+ this._editorOptions = editorOptions;
224
+ if (this._componentInitialized) {
225
+ this._editor.updateOptions(editorOptions);
226
+ this.editorConfigurationChanged.emit();
227
+ }
228
+ }
229
+ get editorOptions() {
230
+ return this._editorOptions;
231
+ }
232
+ /**
233
+ * layout method that calls layout method of editor and instructs the editor to remeasure its container
234
+ */
235
+ layout() {
236
+ if (this._componentInitialized) {
237
+ this._editor.layout();
238
+ }
239
+ }
240
+ /**
241
+ * Returns if in Full Screen Mode or not
242
+ */
243
+ get isFullScreen() {
244
+ return this._isFullScreen;
245
+ }
246
+ ngOnInit() {
247
+ const containerDiv = this._editorContainer.nativeElement;
248
+ containerDiv.id = this._editorInnerContainer;
249
+ this._editor = monaco.editor.create(containerDiv, Object.assign({
250
+ value: this._value,
251
+ language: this.language,
252
+ theme: this._theme,
253
+ }, this.editorOptions));
254
+ this._componentInitialized = true;
255
+ setTimeout(() => {
256
+ this.applyLanguage();
257
+ this._fromEditor = true;
258
+ this.applyValue();
259
+ this.applyStyle();
260
+ this.editorInitialized.emit(this._editor);
261
+ this.editorConfigurationChanged.emit();
262
+ });
263
+ // The `onDidChangeContent` returns a disposable object (an object with `dispose()` method) which will cleanup
264
+ // the listener. The callback, that we pass to `onDidChangeContent`, captures `this`. This leads to a circular reference
265
+ // (`td-code-editor -> monaco -> td-code-editor`) and prevents the `td-code-editor` from being GC'd.
266
+ this._onDidChangeContentDisposable = this._editor.getModel().onDidChangeContent((e) => {
267
+ this._fromEditor = true;
268
+ this.writeValue(this._editor.getValue());
269
+ this.layout();
270
+ });
271
+ this.addFullScreenModeCommand();
272
+ merge(fromEvent(window, 'resize').pipe(debounceTime(100)), this._widthSubject.asObservable().pipe(distinctUntilChanged()), this._heightSubject.asObservable().pipe(distinctUntilChanged()))
273
+ .pipe(takeUntil(this._destroy), debounceTime(100))
274
+ .subscribe(() => {
275
+ this.layout();
276
+ this._changeDetectorRef.markForCheck();
277
+ });
278
+ timer(500, 250)
279
+ .pipe(takeUntil(this._destroy))
280
+ .subscribe(() => {
281
+ if (this._elementRef && this._elementRef.nativeElement) {
282
+ this._widthSubject.next(this._elementRef.nativeElement.getBoundingClientRect().width);
283
+ this._heightSubject.next(this._elementRef.nativeElement.getBoundingClientRect().height);
284
+ }
285
+ });
286
+ }
287
+ ngOnDestroy() {
288
+ this._changeDetectorRef.detach();
289
+ this._registeredLanguagesStyles.forEach((style) => style.remove());
290
+ if (this._onDidChangeContentDisposable) {
291
+ this._onDidChangeContentDisposable.dispose();
292
+ this._onDidChangeContentDisposable = undefined;
293
+ }
294
+ if (this._editor) {
295
+ this._editor.dispose();
296
+ this._editor = undefined;
297
+ }
298
+ this._destroy.next(true);
299
+ this._destroy.unsubscribe();
300
+ }
301
+ /**
302
+ * showFullScreenEditor request for full screen of Code Editor based on its browser type.
303
+ */
304
+ showFullScreenEditor() {
305
+ if (this._componentInitialized) {
306
+ const codeEditorElement = this._editorContainer.nativeElement;
307
+ const fullScreenMap = {
308
+ // Chrome
309
+ requestFullscreen: () => codeEditorElement.requestFullscreen(),
310
+ // Safari
311
+ webkitRequestFullscreen: () => codeEditorElement.webkitRequestFullscreen(),
312
+ // IE
313
+ msRequestFullscreen: () => codeEditorElement.msRequestFullscreen(),
314
+ // Firefox
315
+ mozRequestFullScreen: () => codeEditorElement.mozRequestFullScreen(),
316
+ };
317
+ for (const handler of Object.keys(fullScreenMap)) {
318
+ if (codeEditorElement[handler]) {
319
+ fullScreenMap[handler]();
320
+ }
321
+ }
322
+ }
323
+ this._isFullScreen = true;
324
+ }
325
+ /**
326
+ * exitFullScreenEditor request to exit full screen of Code Editor based on its browser type.
327
+ */
328
+ exitFullScreenEditor() {
329
+ if (this._componentInitialized) {
330
+ const exitFullScreenMap = {
331
+ // Chrome
332
+ exitFullscreen: () => document.exitFullscreen(),
333
+ // Safari
334
+ webkitExitFullscreen: () => document.webkitExitFullscreen(),
335
+ // Firefox
336
+ mozCancelFullScreen: () => document.mozCancelFullScreen(),
337
+ // IE
338
+ msExitFullscreen: () => document.msExitFullscreen(),
339
+ };
340
+ for (const handler of Object.keys(exitFullScreenMap)) {
341
+ if (document[handler]) {
342
+ exitFullScreenMap[handler]();
343
+ }
344
+ }
345
+ }
346
+ this._isFullScreen = false;
347
+ }
348
+ /**
349
+ * addFullScreenModeCommand used to add the fullscreen option to the context menu
350
+ */
351
+ addFullScreenModeCommand() {
352
+ this._editor.addAction({
353
+ // An unique identifier of the contributed action.
354
+ id: 'fullScreen',
355
+ // A label of the action that will be presented to the user.
356
+ label: 'Full Screen',
357
+ // An optional array of keybindings for the action.
358
+ contextMenuGroupId: 'navigation',
359
+ keybindings: this._keycode,
360
+ contextMenuOrder: 1.5,
361
+ // Method that will be executed when the action is triggered.
362
+ // @param editor The editor instance is passed in as a convinience
363
+ run: (ed) => {
364
+ this.showFullScreenEditor();
365
+ },
366
+ });
367
+ }
368
+ }
369
+ /** @nocollapse */ /** @nocollapse */ TdCodeEditorComponent.ɵfac = function TdCodeEditorComponent_Factory(t) { return new (t || TdCodeEditorComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef)); };
370
+ /** @nocollapse */ /** @nocollapse */ TdCodeEditorComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TdCodeEditorComponent, selectors: [["td-code-editor"]], viewQuery: function TdCodeEditorComponent_Query(rf, ctx) { if (rf & 1) {
371
+ i0.ɵɵviewQuery(_c0, 7);
372
+ } if (rf & 2) {
373
+ let _t;
374
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._editorContainer = _t.first);
375
+ } }, inputs: { value: "value", language: "language", editorStyle: "editorStyle", theme: "theme", fullScreenKeyBinding: "fullScreenKeyBinding", editorOptions: "editorOptions" }, outputs: { editorInitialized: "editorInitialized", editorConfigurationChanged: "editorConfigurationChanged", editorLanguageChanged: "editorLanguageChanged", editorValueChange: "editorValueChange", change: "change" }, features: [i0.ɵɵProvidersFeature([
376
+ {
377
+ provide: NG_VALUE_ACCESSOR,
378
+ useExisting: forwardRef((() => TdCodeEditorComponent)),
379
+ multi: true,
380
+ },
381
+ ])], decls: 2, vars: 0, consts: [[1, "editor-container"], ["editorContainer", ""]], template: function TdCodeEditorComponent_Template(rf, ctx) { if (rf & 1) {
382
+ i0.ɵɵelement(0, "div", 0, 1);
383
+ } }, styles: ["[_nghost-%COMP%]{display:block;position:relative}[_nghost-%COMP%] .editor-container[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0} .monaco-aria-container{display:none}"] });
384
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdCodeEditorComponent, [{
385
+ type: Component,
386
+ args: [{ selector: 'td-code-editor', providers: [
387
+ {
388
+ provide: NG_VALUE_ACCESSOR,
389
+ useExisting: forwardRef((() => TdCodeEditorComponent)),
390
+ multi: true,
391
+ },
392
+ ], template: "<div class=\"editor-container\" #editorContainer></div>\n", styles: [":host{display:block;position:relative}:host .editor-container{position:absolute;top:0;bottom:0;left:0;right:0}::ng-deep .monaco-aria-container{display:none}\n"] }]
393
+ }], function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, { _editorContainer: [{
394
+ type: ViewChild,
395
+ args: ['editorContainer', { static: true }]
396
+ }], editorInitialized: [{
397
+ type: Output
398
+ }], editorConfigurationChanged: [{
399
+ type: Output
400
+ }], editorLanguageChanged: [{
401
+ type: Output
402
+ }], editorValueChange: [{
403
+ type: Output
404
+ }], change: [{
405
+ type: Output
406
+ }], value: [{
407
+ type: Input,
408
+ args: ['value']
409
+ }], language: [{
410
+ type: Input,
411
+ args: ['language']
412
+ }], editorStyle: [{
413
+ type: Input,
414
+ args: ['editorStyle']
415
+ }], theme: [{
416
+ type: Input,
417
+ args: ['theme']
418
+ }], fullScreenKeyBinding: [{
419
+ type: Input,
420
+ args: ['fullScreenKeyBinding']
421
+ }], editorOptions: [{
422
+ type: Input,
423
+ args: ['editorOptions']
424
+ }] }); })();
425
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUVaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0UsdUVBQXVFO0FBQ3ZFLE9BQU8sS0FBSyxNQUFNLE1BQU0sd0NBQXdDLENBQUM7OztBQUVqRSxNQUFNLElBQUksR0FBUSxHQUFHLEVBQUU7SUFDckIsZUFBZTtBQUNqQixDQUFDLENBQUM7QUFFRiw0REFBNEQ7QUFDNUQsSUFBSSxhQUFhLEdBQVcsQ0FBQyxDQUFDO0FBYzlCLE1BQU0sT0FBTyxxQkFBcUI7SUF5UWhDLDJDQUEyQztJQUMzQyxZQUFvQixJQUFZLEVBQVUsa0JBQXFDLEVBQVUsV0FBdUI7UUFBNUYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXpReEcsYUFBUSxHQUFxQixJQUFJ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aUI7a0JBQTFCLE1BQU07WUFPRywwQkFBMEI7a0JBQW5DLE1BQU07WUFNRyxxQkFBcUI7a0JBQTlCLE1BQU07WUFNRyxpQkFBaUI7a0JBQTFCLE1BQU07WUFNRyxNQUFNO2tCQUFmLE1BQU07WUFTSCxLQUFLO2tCQURSLEtBQUs7bUJBQUMsT0FBTztZQThEVixRQUFRO2tCQURYLEtBQUs7bUJBQUMsVUFBVTtZQWlFYixXQUFXO2tCQURkLEtBQUs7bUJBQUMsYUFBYTtZQXdCaEIsS0FBSztrQkFEUixLQUFLO21CQUFDLE9BQU87WUFrQlYsb0JBQW9CO2tCQUR2QixLQUFLO21CQUFDLHNCQUFzQjtZQWN6QixhQUFhO2tCQURoQixLQUFLO21CQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIE5nWm9uZSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBVc2UgZXNtIHZlcnNpb24gdG8gc3VwcG9ydCBzaGlwcGluZyBzdWJzZXQgb2YgbGFuZ3VhZ2VzIGFuZCBmZWF0dXJlc1xuaW1wb3J0ICogYXMgbW9uYWNvIGZyb20gJ21vbmFjby1lZGl0b3IvZXNtL3ZzL2VkaXRvci9lZGl0b3IuYXBpJztcblxuY29uc3Qgbm9vcDogYW55ID0gKCkgPT4ge1xuICAvLyBlbXB0eSBtZXRob2Rcbn07XG5cbi8vIGNvdW50ZXIgZm9yIGlkcyB0byBhbGxvdyBmb3IgbXVsdGlwbGUgZWRpdG9ycyBvbiBvbmUgcGFnZVxubGV0IHVuaXF1ZUNvdW50ZXI6IG51bWJlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLWNvZGUtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvZGUtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kZS1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUZENvZGVFZGl0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGRDb2RlRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZGVzdHJveTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgX3dpZHRoU3ViamVjdDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICBwcml2YXRlIF9oZWlnaHRTdWJqZWN0OiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBfZWRpdG9yU3R5bGU6IHN0cmluZyA9ICd3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjoxcHggc29saWQgZ3JleTsnO1xuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3RoZW1lOiBzdHJpbmcgPSAndnMnO1xuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nID0gJ2phdmFzY3JpcHQnO1xuICBwcml2YXRlIF9zdWJqZWN0OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIF9lZGl0b3JJbm5lckNvbnRhaW5lcjogc3RyaW5nID0gJ2VkaXRvcklubmVyQ29udGFpbmVyJyArIHVuaXF1ZUNvdW50ZXIrKztcbiAgcHJpdmF0ZSBfZWRpdG9yOiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcjtcbiAgcHJpdmF0ZSBfZnJvbUVkaXRvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9jb21wb25lbnRJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9lZGl0b3JPcHRpb25zOiBhbnkgPSB7fTtcbiAgcHJpdmF0ZSBfaXNGdWxsU2NyZWVuOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2tleWNvZGU6IGFueTtcbiAgcHJpdmF0ZSBfcmVnaXN0ZXJlZExhbmd1YWdlc1N0eWxlczogSFRNTFN0eWxlRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgX29uRGlkQ2hhbmdlQ29udGVudERpc3Bvc2FibGU/OiBtb25hY28uSURpc3Bvc2FibGU7XG5cbiAgQFZpZXdDaGlsZCgnZWRpdG9yQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgX2VkaXRvckNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogZWRpdG9ySW5pdGlhbGl6ZWQ6IGZ1bmN0aW9uKCRldmVudClcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGVkaXRvciBpcyBmaXJzdCBpbml0aWFsaXplZFxuICAgKi9cbiAgQE91dHB1dCgpIGVkaXRvckluaXRpYWxpemVkOiBFdmVudEVtaXR0ZXI8bW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUNvZGVFZGl0b3I+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPG1vbmFjby5lZGl0b3IuSVN0YW5kYWxvbmVDb2RlRWRpdG9yPigpO1xuXG4gIC8qKlxuICAgKiBlZGl0b3JDb25maWd1cmF0aW9uQ2hhbmdlZDogZnVuY3Rpb24oJGV2ZW50KVxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gZWRpdG9yJ3MgY29uZmlndXJhdGlvbiBjaGFuZ2VzXG4gICAqL1xuICBAT3V0cHV0KCkgZWRpdG9yQ29uZmlndXJhdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogZWRpdG9yTGFuZ3VhZ2VDaGFuZ2VkOiBmdW5jdGlvbigkZXZlbnQpXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBlZGl0b3IncyBMYW5ndWFnZSBjaGFuZ2VzXG4gICAqL1xuICBAT3V0cHV0KCkgZWRpdG9yTGFuZ3VhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIGVkaXRvclZhbHVlQ2hhbmdlOiBmdW5jdGlvbigkZXZlbnQpXG4gICAqIEV2ZW50IGVtaXR0ZWQgYW55IHRpbWUgc29tZXRoaW5nIGNoYW5nZXMgdGhlIGVkaXRvciB2YWx1ZVxuICAgKi9cbiAgQE91dHB1dCgpIGVkaXRvclZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFuZ2UgZXZlbnQgbm90aWZpZXMgeW91IGFib3V0IGEgY2hhbmdlIGhhcHBlbmluZyBpbiBhbiBpbnB1dCBmaWVsZC5cbiAgICogU2luY2UgdGhlIGNvbXBvbmVudCBpcyBub3QgYSBuYXRpdmUgQW5ndWxhciBjb21wb25lbnQgaGF2ZSB0byBzcGVjaWZpeSB0aGUgZXZlbnQgZW1pdHRlciBvdXJzZWxmXG4gICAqL1xuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4gbm9vcDtcblxuICAvKipcbiAgICogdmFsdWU/OiBzdHJpbmdcbiAgICovXG4gIEBJbnB1dCgndmFsdWUnKVxuICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5fY29tcG9uZW50SW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuYXBwbHlWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIGFwcGx5VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9mcm9tRWRpdG9yKSB7XG4gICAgICB0aGlzLl9lZGl0b3Iuc2V0VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLl9mcm9tRWRpdG9yID0gZmFsc2U7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMuY2hhbmdlLmVtaXQoKTtcbiAgICB0aGlzLmVkaXRvclZhbHVlQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgLy8gZG8gbm90IHdyaXRlIGlmIG51bGwgb3IgdW5kZWZpbmVkXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldEVkaXRvckNvbnRlbnQ/OiBmdW5jdGlvblxuICAgKiBSZXR1cm5zIHRoZSBjb250ZW50IHdpdGhpbiB0aGUgZWRpdG9yXG4gICAqL1xuICBnZXRWYWx1ZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLl9jb21wb25lbnRJbml0aWFsaXplZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N1YmplY3QubmV4dCh0aGlzLl92YWx1ZSk7XG4gICAgICAgIHRoaXMuX3N1YmplY3QuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fc3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBsYW5ndWFnZT86IHN0cmluZ1xuICAgKiBsYW5ndWFnZSB1c2VkIGluIGVkaXRvclxuICAgKi9cbiAgQElucHV0KCdsYW5ndWFnZScpXG4gIHNldCBsYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICBpZiAodGhpcy5fY29tcG9uZW50SW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuYXBwbHlMYW5ndWFnZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBsYW5ndWFnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcbiAgfVxuXG4gIGFwcGx5TGFuZ3VhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xhbmd1YWdlKSB7XG4gICAgICBtb25hY28uZWRpdG9yLnNldE1vZGVsTGFuZ3VhZ2UodGhpcy5fZWRpdG9yLmdldE1vZGVsKCksIHRoaXMuX2xhbmd1YWdlKTtcbiAgICAgIHRoaXMuZWRpdG9yTGFuZ3VhZ2VDaGFuZ2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogcmVnaXN0ZXJMYW5ndWFnZT86IGZ1bmN0aW9uXG4gICAqIFJlZ2lzdGVycyBhIGN1c3RvbSBMYW5ndWFnZSB3aXRoaW4gdGhlIGVkaXRvclxuICAgKi9cbiAgcmVnaXN0ZXJMYW5ndWFnZShsYW5ndWFnZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudEluaXRpYWxpemVkKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIGxhbmd1YWdlLmNvbXBsZXRpb25JdGVtUHJvdmlkZXIpIHtcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXG4gICAgICAgIHByb3ZpZGVyLmtpbmQgPSBldmFsKHByb3ZpZGVyLmtpbmQpO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBtb25hcmNoVG9rZW5zIG9mIGxhbmd1YWdlLm1vbmFyY2hUb2tlbnNQcm92aWRlcikge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgICAgICAgbW9uYXJjaFRva2Vuc1swXSA9IGV2YWwobW9uYXJjaFRva2Vuc1swXSk7XG4gICAgICB9XG4gICAgICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyKHsgaWQ6IGxhbmd1YWdlLmlkIH0pO1xuXG4gICAgICBtb25hY28ubGFuZ3VhZ2VzLnNldE1vbmFyY2hUb2tlbnNQcm92aWRlcihsYW5ndWFnZS5pZCwge1xuICAgICAgICB0b2tlbml6ZXI6IHtcbiAgICAgICAgICByb290OiBsYW5ndWFnZS5tb25hcmNoVG9rZW5zUHJvdmlkZXIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gRGVmaW5lIGEgbmV3IHRoZW1lIHRoYXQgY29uc3RhaW5zIG9ubHkgcnVsZXMgdGhhdCBtYXRjaCB0aGlzIGxhbmd1YWdlXG4gICAgICBtb25hY28uZWRpdG9yLmRlZmluZVRoZW1lKGxhbmd1YWdlLmN1c3RvbVRoZW1lLmlkLCBsYW5ndWFnZS5jdXN0b21UaGVtZS50aGVtZSk7XG4gICAgICB0aGlzLl90aGVtZSA9IGxhbmd1YWdlLmN1c3RvbVRoZW1lLmlkO1xuXG4gICAgICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlcihsYW5ndWFnZS5pZCwge1xuICAgICAgICBwcm92aWRlQ29tcGxldGlvbkl0ZW1zOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGxhbmd1YWdlLmNvbXBsZXRpb25JdGVtUHJvdmlkZXI7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY3NzOiBIVE1MU3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIGNzcy50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgIGNzcy5pbm5lckhUTUwgPSBsYW5ndWFnZS5tb25hcmNoVG9rZW5zUHJvdmlkZXJDU1M7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNzcyk7XG4gICAgICB0aGlzLmVkaXRvckNvbmZpZ3VyYXRpb25DaGFuZ2VkLmVtaXQoKTtcbiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRMYW5ndWFnZXNTdHlsZXMgPSBbLi4udGhpcy5fcmVnaXN0ZXJlZExhbmd1YWdlc1N0eWxlcywgY3NzXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc3R5bGU/OiBzdHJpbmdcbiAgICogY3NzIHN0eWxlIG9mIHRoZSBlZGl0b3Igb24gdGhlIHBhZ2VcbiAgICovXG4gIEBJbnB1dCgnZWRpdG9yU3R5bGUnKVxuICBzZXQgZWRpdG9yU3R5bGUoZWRpdG9yU3R5bGU6IHN0cmluZykge1xuICAgIHRoaXMuX2VkaXRvclN0eWxlID0gZWRpdG9yU3R5bGU7XG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudEluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmFwcGx5U3R5bGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZWRpdG9yU3R5bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZWRpdG9yU3R5bGU7XG4gIH1cblxuICBhcHBseVN0eWxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9lZGl0b3JTdHlsZSkge1xuICAgICAgY29uc3QgY29udGFpbmVyRGl2OiBIVE1MRGl2RWxlbWVudCA9IHRoaXMuX2VkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xuICAgICAgY29udGFpbmVyRGl2LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCB0aGlzLl9lZGl0b3JTdHlsZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHRoZW1lPzogc3RyaW5nXG4gICAqIFRoZW1lIHRvIGJlIGFwcGxpZWQgdG8gZWRpdG9yXG4gICAqL1xuICBASW5wdXQoJ3RoZW1lJylcbiAgc2V0IHRoZW1lKHRoZW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90aGVtZSA9IHRoZW1lO1xuICAgIGlmICh0aGlzLl9jb21wb25lbnRJbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5fZWRpdG9yLnVwZGF0ZU9wdGlvbnMoeyB0aGVtZSB9KTtcbiAgICAgIHRoaXMuZWRpdG9yQ29uZmlndXJhdGlvbkNoYW5nZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuICBnZXQgdGhlbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGhlbWU7XG4gIH1cblxuICAvKipcbiAgICogZnVsbFNjcmVlbktleUJpbmRpbmc/OiBudW1iZXJcbiAgICogU2VlIGhlcmUgZm9yIGtleSBiaW5kaW5ncyBodHRwczovL21pY3Jvc29mdC5naXRodWIuaW8vbW9uYWNvLWVkaXRvci9hcGkvZW51bXMvbW9uYWNvLmtleWNvZGUuaHRtbFxuICAgKiBTZXRzIHRoZSBLZXlDb2RlIGZvciBzaG9ydGN1dHRpbmcgdG8gRnVsbHNjcmVlbiBtb2RlXG4gICAqL1xuICBASW5wdXQoJ2Z1bGxTY3JlZW5LZXlCaW5kaW5nJylcbiAgc2V0IGZ1bGxTY3JlZW5LZXlCaW5kaW5nKGtleWNvZGU6IG51bWJlcltdKSB7XG4gICAgdGhpcy5fa2V5Y29kZSA9IGtleWNvZGU7XG4gIH1cbiAgZ2V0IGZ1bGxTY3JlZW5LZXlCaW5kaW5nKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fa2V5Y29kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBlZGl0b3JPcHRpb25zPzogb2JqZWN0XG4gICAqIE9wdGlvbnMgdXNlZCBvbiBlZGl0b3IgaW5zdGFudGlhdGlvbi4gQXZhaWxhYmxlIG9wdGlvbnMgbGlzdGVkIGhlcmU6XG4gICAqIGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9tb25hY28tZWRpdG9yL2FwaS9pbnRlcmZhY2VzL21vbmFjby5lZGl0b3IuaWVkaXRvcm9wdGlvbnMuaHRtbFxuICAgKi9cbiAgQElucHV0KCdlZGl0b3JPcHRpb25zJylcbiAgc2V0IGVkaXRvck9wdGlvbnMoZWRpdG9yT3B0aW9uczogYW55KSB7XG4gICAgdGhpcy5fZWRpdG9yT3B0aW9ucyA9IGVkaXRvck9wdGlvbnM7XG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudEluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLl9lZGl0b3IudXBkYXRlT3B0aW9ucyhlZGl0b3JPcHRpb25zKTtcbiAgICAgIHRoaXMuZWRpdG9yQ29uZmlndXJhdGlvbkNoYW5nZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuICBnZXQgZWRpdG9yT3B0aW9ucygpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9lZGl0b3JPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIGxheW91dCBtZXRob2QgdGhhdCBjYWxscyBsYXlvdXQgbWV0aG9kIG9mIGVkaXRvciBhbmQgaW5zdHJ1Y3RzIHRoZSBlZGl0b3IgdG8gcmVtZWFzdXJlIGl0cyBjb250YWluZXJcbiAgICovXG4gIGxheW91dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29tcG9uZW50SW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuX2VkaXRvci5sYXlvdXQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBpZiBpbiBGdWxsIFNjcmVlbiBNb2RlIG9yIG5vdFxuICAgKi9cbiAgZ2V0IGlzRnVsbFNjcmVlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNGdWxsU2NyZWVuO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1lbWJlci1vcmRlcmluZ1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckRpdjogSFRNTERpdkVsZW1lbnQgPSB0aGlzLl9lZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb250YWluZXJEaXYuaWQgPSB0aGlzLl9lZGl0b3JJbm5lckNvbnRhaW5lcjtcblxuICAgIHRoaXMuX2VkaXRvciA9IG1vbmFjby5lZGl0b3IuY3JlYXRlKFxuICAgICAgY29udGFpbmVyRGl2LFxuICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiB0aGlzLl92YWx1ZSxcbiAgICAgICAgICBsYW5ndWFnZTogdGhpcy5sYW5ndWFnZSxcbiAgICAgICAgICB0aGVtZTogdGhpcy5fdGhlbWUsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuZWRpdG9yT3B0aW9ucyxcbiAgICAgICksXG4gICAgKTtcbiAgICB0aGlzLl9jb21wb25lbnRJbml0aWFsaXplZCA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UoKTtcbiAgICAgIHRoaXMuX2Zyb21FZGl0b3IgPSB0cnVlO1xuICAgICAgdGhpcy5hcHBseVZhbHVlKCk7XG4gICAgICB0aGlzLmFwcGx5U3R5bGUoKTtcbiAgICAgIHRoaXMuZWRpdG9ySW5pdGlhbGl6ZWQuZW1pdCh0aGlzLl9lZGl0b3IpO1xuICAgICAgdGhpcy5lZGl0b3JDb25maWd1cmF0aW9uQ2hhbmdlZC5lbWl0KCk7XG4gICAgfSk7XG4gICAgLy8gVGhlIGBvbkRpZENoYW5nZUNvbnRlbnRgIHJldHVybnMgYSBkaXNwb3NhYmxlIG9iamVjdCAoYW4gb2JqZWN0IHdpdGggYGRpc3Bvc2UoKWAgbWV0aG9kKSB3aGljaCB3aWxsIGNsZWFudXBcbiAgICAvLyB0aGUgbGlzdGVuZXIuIFRoZSBjYWxsYmFjaywgdGhhdCB3ZSBwYXNzIHRvIGBvbkRpZENoYW5nZUNvbnRlbnRgLCBjYXB0dXJlcyBgdGhpc2AuIFRoaXMgbGVhZHMgdG8gYSBjaXJjdWxhciByZWZlcmVuY2VcbiAgICAvLyAoYHRkLWNvZGUtZWRpdG9yIC0+IG1vbmFjbyAtPiB0ZC1jb2RlLWVkaXRvcmApIGFuZCBwcmV2ZW50cyB0aGUgYHRkLWNvZGUtZWRpdG9yYCBmcm9tIGJlaW5nIEdDJ2QuXG4gICAgdGhpcy5fb25EaWRDaGFuZ2VDb250ZW50RGlzcG9zYWJsZSA9IHRoaXMuX2VkaXRvci5nZXRNb2RlbCgpLm9uRGlkQ2hhbmdlQ29udGVudCgoZTogYW55KSA9PiB7XG4gICAgICB0aGlzLl9mcm9tRWRpdG9yID0gdHJ1ZTtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl9lZGl0b3IuZ2V0VmFsdWUoKSk7XG4gICAgICB0aGlzLmxheW91dCgpO1xuICAgIH0pO1xuICAgIHRoaXMuYWRkRnVsbFNjcmVlbk1vZGVDb21tYW5kKCk7XG5cbiAgICBtZXJnZShcbiAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKS5waXBlKGRlYm91bmNlVGltZSgxMDApKSxcbiAgICAgIHRoaXMuX3dpZHRoU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgdGhpcy5faGVpZ2h0U3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgIClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sYXlvdXQoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB0aW1lcig1MDAsIDI1MClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fZWxlbWVudFJlZiAmJiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICB0aGlzLl93aWR0aFN1YmplY3QubmV4dCgoPEhUTUxFbGVtZW50PnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICAgIHRoaXMuX2hlaWdodFN1YmplY3QubmV4dCgoPEhUTUxFbGVtZW50PnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRhY2goKTtcbiAgICB0aGlzLl9yZWdpc3RlcmVkTGFuZ3VhZ2VzU3R5bGVzLmZvckVhY2goKHN0eWxlOiBIVE1MU3R5bGVFbGVtZW50KSA9PiBzdHlsZS5yZW1vdmUoKSk7XG4gICAgaWYgKHRoaXMuX29uRGlkQ2hhbmdlQ29udGVudERpc3Bvc2FibGUpIHtcbiAgICAgIHRoaXMuX29uRGlkQ2hhbmdlQ29udGVudERpc3Bvc2FibGUuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fb25EaWRDaGFuZ2VDb250ZW50RGlzcG9zYWJsZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2VkaXRvcikge1xuICAgICAgdGhpcy5fZWRpdG9yLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX2VkaXRvciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5fZGVzdHJveS5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2Rlc3Ryb3kudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzaG93RnVsbFNjcmVlbkVkaXRvciByZXF1ZXN0IGZvciBmdWxsIHNjcmVlbiBvZiBDb2RlIEVkaXRvciBiYXNlZCBvbiBpdHMgYnJvd3NlciB0eXBlLlxuICAgKi9cbiAgcHVibGljIHNob3dGdWxsU2NyZWVuRWRpdG9yKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb21wb25lbnRJbml0aWFsaXplZCkge1xuICAgICAgY29uc3QgY29kZUVkaXRvckVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50ID0gdGhpcy5fZWRpdG9yQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICBjb25zdCBmdWxsU2NyZWVuTWFwOiBvYmplY3QgPSB7XG4gICAgICAgIC8vIENocm9tZVxuICAgICAgICByZXF1ZXN0RnVsbHNjcmVlbjogKCkgPT4gY29kZUVkaXRvckVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKSxcbiAgICAgICAgLy8gU2FmYXJpXG4gICAgICAgIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuOiAoKSA9PiAoPGFueT5jb2RlRWRpdG9yRWxlbWVudCkud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKSxcbiAgICAgICAgLy8gSUVcbiAgICAgICAgbXNSZXF1ZXN0RnVsbHNjcmVlbjogKCkgPT4gKDxhbnk+Y29kZUVkaXRvckVsZW1lbnQpLm1zUmVxdWVzdEZ1bGxzY3JlZW4oKSxcbiAgICAgICAgLy8gRmlyZWZveFxuICAgICAgICBtb3pSZXF1ZXN0RnVsbFNjcmVlbjogKCkgPT4gKDxhbnk+Y29kZUVkaXRvckVsZW1lbnQpLm1velJlcXVlc3RGdWxsU2NyZWVuKCksXG4gICAgICB9O1xuXG4gICAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgT2JqZWN0LmtleXMoZnVsbFNjcmVlbk1hcCkpIHtcbiAgICAgICAgaWYgKGNvZGVFZGl0b3JFbGVtZW50W2hhbmRsZXJdKSB7XG4gICAgICAgICAgZnVsbFNjcmVlbk1hcFtoYW5kbGVyXSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2lzRnVsbFNjcmVlbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogZXhpdEZ1bGxTY3JlZW5FZGl0b3IgcmVxdWVzdCB0byBleGl0IGZ1bGwgc2NyZWVuIG9mIENvZGUgRWRpdG9yIGJhc2VkIG9uIGl0cyBicm93c2VyIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgZXhpdEZ1bGxTY3JlZW5FZGl0b3IoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudEluaXRpYWxpemVkKSB7XG4gICAgICBjb25zdCBleGl0RnVsbFNjcmVlbk1hcDogb2JqZWN0ID0ge1xuICAgICAgICAvLyBDaHJvbWVcbiAgICAgICAgZXhpdEZ1bGxzY3JlZW46ICgpID0+IGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCksXG4gICAgICAgIC8vIFNhZmFyaVxuICAgICAgICB3ZWJraXRFeGl0RnVsbHNjcmVlbjogKCkgPT4gKDxhbnk+ZG9jdW1lbnQpLndlYmtpdEV4aXRGdWxsc2NyZWVuKCksXG4gICAgICAgIC8vIEZpcmVmb3hcbiAgICAgICAgbW96Q2FuY2VsRnVsbFNjcmVlbjogKCkgPT4gKDxhbnk+ZG9jdW1lbnQpLm1vekNhbmNlbEZ1bGxTY3JlZW4oKSxcbiAgICAgICAgLy8gSUVcbiAgICAgICAgbXNFeGl0RnVsbHNjcmVlbjogKCkgPT4gKDxhbnk+ZG9jdW1lbnQpLm1zRXhpdEZ1bGxzY3JlZW4oKSxcbiAgICAgIH07XG5cbiAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiBPYmplY3Qua2V5cyhleGl0RnVsbFNjcmVlbk1hcCkpIHtcbiAgICAgICAgaWYgKGRvY3VtZW50W2hhbmRsZXJdKSB7XG4gICAgICAgICAgZXhpdEZ1bGxTY3JlZW5NYXBbaGFuZGxlcl0oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl9pc0Z1bGxTY3JlZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGRGdWxsU2NyZWVuTW9kZUNvbW1hbmQgdXNlZCB0byBhZGQgdGhlIGZ1bGxzY3JlZW4gb3B0aW9uIHRvIHRoZSBjb250ZXh0IG1lbnVcbiAgICovXG4gIHByaXZhdGUgYWRkRnVsbFNjcmVlbk1vZGVDb21tYW5kKCk6IHZvaWQge1xuICAgIHRoaXMuX2VkaXRvci5hZGRBY3Rpb24oe1xuICAgICAgLy8gQW4gdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNvbnRyaWJ1dGVkIGFjdGlvbi5cbiAgICAgIGlkOiAnZnVsbFNjcmVlbicsXG4gICAgICAvLyBBIGxhYmVsIG9mIHRoZSBhY3Rpb24gdGhhdCB3aWxsIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlci5cbiAgICAgIGxhYmVsOiAnRnVsbCBTY3JlZW4nLFxuICAgICAgLy8gQW4gb3B0aW9uYWwgYXJyYXkgb2Yga2V5YmluZGluZ3MgZm9yIHRoZSBhY3Rpb24uXG4gICAgICBjb250ZXh0TWVudUdyb3VwSWQ6ICduYXZpZ2F0aW9uJyxcbiAgICAgIGtleWJpbmRpbmdzOiB0aGlzLl9rZXljb2RlLFxuICAgICAgY29udGV4dE1lbnVPcmRlcjogMS41LFxuICAgICAgLy8gTWV0aG9kIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBhY3Rpb24gaXMgdHJpZ2dlcmVkLlxuICAgICAgLy8gQHBhcmFtIGVkaXRvciBUaGUgZWRpdG9yIGluc3RhbmNlIGlzIHBhc3NlZCBpbiBhcyBhIGNvbnZpbmllbmNlXG4gICAgICBydW46IChlZDogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0Z1bGxTY3JlZW5FZGl0b3IoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlZGl0b3ItY29udGFpbmVyXCIgI2VkaXRvckNvbnRhaW5lcj48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TdCodeEditorComponent } from './code-editor.component';
4
+ import * as i0 from "@angular/core";
5
+ export class CovalentCodeEditorModule {
6
+ }
7
+ /** @nocollapse */ /** @nocollapse */ CovalentCodeEditorModule.ɵfac = function CovalentCodeEditorModule_Factory(t) { return new (t || CovalentCodeEditorModule)(); };
8
+ /** @nocollapse */ /** @nocollapse */ CovalentCodeEditorModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: CovalentCodeEditorModule, bootstrap: [TdCodeEditorComponent] });
9
+ /** @nocollapse */ /** @nocollapse */ CovalentCodeEditorModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ imports: [[CommonModule]] });
10
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CovalentCodeEditorModule, [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [CommonModule],
14
+ declarations: [TdCodeEditorComponent],
15
+ exports: [TdCodeEditorComponent],
16
+ bootstrap: [TdCodeEditorComponent],
17
+ }]
18
+ }], null, null); })();
19
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CovalentCodeEditorModule, { declarations: [TdCodeEditorComponent], imports: [CommonModule], exports: [TdCodeEditorComponent] }); })();
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFRaEUsTUFBTSxPQUFPLHdCQUF3Qjs7c0lBQXhCLHdCQUF3Qjs0SEFBeEIsd0JBQXdCLGNBRnZCLHFCQUFxQjtnSUFIeEIsQ0FBQyxZQUFZLENBQUM7dUZBS1osd0JBQXdCO2NBTnBDLFFBQVE7ZUFBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZCLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDaEMsU0FBUyxFQUFFLENBQUMscUJBQXFCLENBQUM7YUFDbkM7O3dGQUNZLHdCQUF3QixtQkFKcEIscUJBQXFCLGFBRDFCLFlBQVksYUFFWixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBUZENvZGVFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvZGUtZWRpdG9yLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtUZENvZGVFZGl0b3JDb21wb25lbnRdLFxuICBleHBvcnRzOiBbVGRDb2RlRWRpdG9yQ29tcG9uZW50XSxcbiAgYm9vdHN0cmFwOiBbVGRDb2RlRWRpdG9yQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ292YWxlbnRDb2RlRWRpdG9yTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292YWxlbnQtY29kZS1lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vY29kZS1lZGl0b3IvY292YWxlbnQtY29kZS1lZGl0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vY29kZS1lZGl0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -0,0 +1,3 @@
1
+ export { TdCodeEditorComponent } from './code-editor.component';
2
+ export { CovalentCodeEditorModule } from './code-editor.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9jb2RlLWVkaXRvci9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgVGRDb2RlRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb2RlLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ292YWxlbnRDb2RlRWRpdG9yTW9kdWxlIH0gZnJvbSAnLi9jb2RlLWVkaXRvci5tb2R1bGUnO1xuIl19