@muraai/mnl-chat 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2020/lib/chat.module.mjs +87 -0
- package/esm2020/lib/components/ng-chat/ng-chat.component.mjs +588 -0
- package/esm2020/lib/components/ng-chat-friends-list/ng-chat-friends-list.component.mjs +128 -0
- package/esm2020/lib/components/ng-chat-options/ng-chat-options.component.mjs +29 -0
- package/esm2020/lib/components/ng-chat-window/ng-chat-window.component.mjs +247 -0
- package/esm2020/lib/core/chat-adapter.mjs +18 -0
- package/esm2020/lib/core/chat-controller.mjs +2 -0
- package/esm2020/lib/core/chat-group-adapter.mjs +2 -0
- package/esm2020/lib/core/chat-option.mjs +2 -0
- package/esm2020/lib/core/chat-participant-status-descriptor.mjs +6 -0
- package/esm2020/lib/core/chat-participant-status.enum.mjs +8 -0
- package/esm2020/lib/core/chat-participant-type.enum.mjs +6 -0
- package/esm2020/lib/core/chat-participant.mjs +2 -0
- package/esm2020/lib/core/default-file-upload-adapter.mjs +43 -0
- package/esm2020/lib/core/file-upload-adapter.mjs +2 -0
- package/esm2020/lib/core/group.mjs +14 -0
- package/esm2020/lib/core/guid.mjs +11 -0
- package/esm2020/lib/core/localization.mjs +2 -0
- package/esm2020/lib/core/message-counter.mjs +25 -0
- package/esm2020/lib/core/message-type.enum.mjs +7 -0
- package/esm2020/lib/core/message.mjs +7 -0
- package/esm2020/lib/core/paged-history-chat-adapter.mjs +9 -0
- package/esm2020/lib/core/participant-metadata.mjs +6 -0
- package/esm2020/lib/core/participant-response.mjs +3 -0
- package/esm2020/lib/core/scroll-direction.enum.mjs +6 -0
- package/esm2020/lib/core/theme.enum.mjs +7 -0
- package/esm2020/lib/core/user.mjs +7 -0
- package/esm2020/lib/core/window.mjs +20 -0
- package/esm2020/lib/firstLetter.pipe.mjs +20 -0
- package/esm2020/lib/material.module.mjs +50 -0
- package/esm2020/lib/pipes/emojify.pipe.mjs +41 -0
- package/esm2020/lib/pipes/group-message-display-name.pipe.mjs +24 -0
- package/esm2020/lib/pipes/linkfy.pipe.mjs +34 -0
- package/esm2020/lib/pipes/sanitize.pipe.mjs +21 -0
- package/esm2020/lib/services/chat.service.mjs +14 -0
- package/esm2020/muraai-mnl-chat.mjs +5 -0
- package/esm2020/public-api.mjs +25 -0
- package/fesm2015/muraai-mnl-chat.mjs +1426 -0
- package/fesm2015/muraai-mnl-chat.mjs.map +1 -0
- package/fesm2020/muraai-mnl-chat.mjs +1424 -0
- package/fesm2020/muraai-mnl-chat.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/chat.module.d.ts +24 -0
- package/lib/components/ng-chat/ng-chat.component.d.ts +130 -0
- package/lib/components/ng-chat-friends-list/ng-chat-friends-list.component.d.ts +45 -0
- package/lib/components/ng-chat-options/ng-chat-options.component.d.ts +12 -0
- package/lib/components/ng-chat-window/ng-chat-window.component.d.ts +65 -0
- package/lib/core/chat-adapter.d.ts +15 -0
- package/lib/core/chat-controller.d.ts +6 -0
- package/lib/core/chat-group-adapter.d.ts +4 -0
- package/lib/core/chat-option.d.ts +9 -0
- package/lib/core/chat-participant-status-descriptor.d.ts +3 -0
- package/lib/core/chat-participant-status.enum.d.ts +6 -0
- package/lib/core/chat-participant-type.enum.d.ts +4 -0
- package/lib/core/chat-participant.d.ts +9 -0
- package/lib/core/default-file-upload-adapter.d.ts +14 -0
- package/lib/core/file-upload-adapter.d.ts +5 -0
- package/lib/core/group.d.ts +13 -0
- package/lib/core/guid.d.ts +3 -0
- package/lib/core/localization.d.ts +15 -0
- package/lib/core/message-counter.d.ts +10 -0
- package/lib/core/message-type.enum.d.ts +5 -0
- package/lib/core/message.d.ts +10 -0
- package/lib/core/paged-history-chat-adapter.d.ts +10 -0
- package/lib/core/participant-metadata.d.ts +3 -0
- package/lib/core/participant-response.d.ts +6 -0
- package/lib/core/scroll-direction.enum.d.ts +4 -0
- package/lib/core/theme.enum.d.ts +5 -0
- package/lib/core/user.d.ts +10 -0
- package/lib/core/window.d.ts +13 -0
- package/lib/firstLetter.pipe.d.ts +7 -0
- package/lib/material.module.d.ts +14 -0
- package/lib/pipes/emojify.pipe.d.ts +7 -0
- package/lib/pipes/group-message-display-name.pipe.d.ts +9 -0
- package/lib/pipes/linkfy.pipe.d.ts +7 -0
- package/lib/pipes/sanitize.pipe.d.ts +10 -0
- package/lib/services/chat.service.d.ts +6 -0
- package/package.json +31 -0
- package/public-api.d.ts +21 -0
- package/src/assets/icons.css +140 -0
- package/src/assets/loading-spinner.css +59 -0
- package/src/assets/ng-chat.component.default.css +106 -0
- package/src/assets/notification.png +0 -0
- package/src/assets/notification.wav +0 -0
- package/src/assets/themes/ng-chat.theme.dark.scss +71 -0
- package/src/assets/themes/ng-chat.theme.default.scss +63 -0
- package/src/assets/user.png +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Chat
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project chat` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project chat`.
|
|
8
|
+
> Note: Don't forget to add `--project chat` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build chat` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build chat`, go to the dist folder `cd dist/chat` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test chat` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
|
4
|
+
import { AppConfigService } from '@muraai/mnl-commons';
|
|
5
|
+
import { ChatMaterialModule } from './material.module';
|
|
6
|
+
import { ChatService } from './services/chat.service';
|
|
7
|
+
import { NgChat } from './components/ng-chat/ng-chat.component';
|
|
8
|
+
import { EmojifyPipe } from './pipes/emojify.pipe';
|
|
9
|
+
import { LinkfyPipe } from './pipes/linkfy.pipe';
|
|
10
|
+
import { SanitizePipe } from './pipes/sanitize.pipe';
|
|
11
|
+
import { GroupMessageDisplayNamePipe } from './pipes/group-message-display-name.pipe';
|
|
12
|
+
import { NgChatOptionsComponent } from './components/ng-chat-options/ng-chat-options.component';
|
|
13
|
+
import { NgChatFriendsListComponent } from './components/ng-chat-friends-list/ng-chat-friends-list.component';
|
|
14
|
+
import { NgChatWindowComponent } from './components/ng-chat-window/ng-chat-window.component';
|
|
15
|
+
import { FormsModule } from '@angular/forms';
|
|
16
|
+
import { FirstLetterPipe } from './firstLetter.pipe';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
export class ChatModule {
|
|
19
|
+
static forRoot() {
|
|
20
|
+
return {
|
|
21
|
+
ngModule: ChatModule,
|
|
22
|
+
providers: [
|
|
23
|
+
{
|
|
24
|
+
provide: APP_INITIALIZER,
|
|
25
|
+
useFactory: loadConfig,
|
|
26
|
+
deps: [
|
|
27
|
+
AppConfigService,
|
|
28
|
+
ChatService
|
|
29
|
+
],
|
|
30
|
+
multi: true,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
static forChild() {
|
|
36
|
+
return {
|
|
37
|
+
ngModule: ChatModule,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
ChatModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ChatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
42
|
+
ChatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ChatModule, declarations: [NgChat,
|
|
43
|
+
EmojifyPipe,
|
|
44
|
+
LinkfyPipe,
|
|
45
|
+
SanitizePipe,
|
|
46
|
+
GroupMessageDisplayNamePipe,
|
|
47
|
+
NgChatOptionsComponent,
|
|
48
|
+
NgChatFriendsListComponent,
|
|
49
|
+
NgChatWindowComponent,
|
|
50
|
+
FirstLetterPipe], imports: [ChatMaterialModule,
|
|
51
|
+
CommonModule,
|
|
52
|
+
FormsModule,
|
|
53
|
+
HttpClientModule], exports: [NgChat] });
|
|
54
|
+
ChatModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ChatModule, imports: [ChatMaterialModule,
|
|
55
|
+
CommonModule,
|
|
56
|
+
FormsModule,
|
|
57
|
+
HttpClientModule] });
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ChatModule, decorators: [{
|
|
59
|
+
type: NgModule,
|
|
60
|
+
args: [{
|
|
61
|
+
declarations: [
|
|
62
|
+
NgChat,
|
|
63
|
+
EmojifyPipe,
|
|
64
|
+
LinkfyPipe,
|
|
65
|
+
SanitizePipe,
|
|
66
|
+
GroupMessageDisplayNamePipe,
|
|
67
|
+
NgChatOptionsComponent,
|
|
68
|
+
NgChatFriendsListComponent,
|
|
69
|
+
NgChatWindowComponent,
|
|
70
|
+
FirstLetterPipe
|
|
71
|
+
],
|
|
72
|
+
imports: [
|
|
73
|
+
ChatMaterialModule,
|
|
74
|
+
CommonModule,
|
|
75
|
+
FormsModule,
|
|
76
|
+
HttpClientModule
|
|
77
|
+
],
|
|
78
|
+
exports: [
|
|
79
|
+
NgChat
|
|
80
|
+
],
|
|
81
|
+
}]
|
|
82
|
+
}] });
|
|
83
|
+
export function loadConfig(config) {
|
|
84
|
+
const conf = () => config.load();
|
|
85
|
+
return conf;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0L3NyYy9saWIvY2hhdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2hHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBeUJyRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxVQUFVO29CQUN0QixJQUFJLEVBQUU7d0JBQ0osZ0JBQWdCO3dCQUNoQixXQUFXO3FCQUNaO29CQUNELEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRO1FBQ2IsT0FBTztZQUNMLFFBQVEsRUFBRSxVQUFVO1NBQ3JCLENBQUM7SUFDSixDQUFDOzt1R0F0QlUsVUFBVTt3R0FBVixVQUFVLGlCQXJCbkIsTUFBTTtRQUNOLFdBQVc7UUFDWCxVQUFVO1FBQ1YsWUFBWTtRQUNaLDJCQUEyQjtRQUMzQixzQkFBc0I7UUFDdEIsMEJBQTBCO1FBQzFCLHFCQUFxQjtRQUNyQixlQUFlLGFBR2Ysa0JBQWtCO1FBQ2xCLFlBQVk7UUFDWixXQUFXO1FBQ1gsZ0JBQWdCLGFBR2hCLE1BQU07d0dBSUcsVUFBVSxZQVZuQixrQkFBa0I7UUFDbEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxnQkFBZ0I7MkZBT1AsVUFBVTtrQkF2QnRCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLE1BQU07d0JBQ04sV0FBVzt3QkFDWCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osMkJBQTJCO3dCQUMzQixzQkFBc0I7d0JBQ3RCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsTUFBTTtxQkFDUDtpQkFFRjs7QUEwQkQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUF3QjtJQUNqRCxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQG11cmFhaS9tbmwtY29tbW9ucyc7XG5pbXBvcnQgeyBDaGF0TWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBDaGF0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2hhdC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ2hhdCB9IGZyb20gJy4vY29tcG9uZW50cy9uZy1jaGF0L25nLWNoYXQuY29tcG9uZW50JztcbmltcG9ydCB7IEVtb2ppZnlQaXBlIH0gZnJvbSAnLi9waXBlcy9lbW9qaWZ5LnBpcGUnO1xuaW1wb3J0IHsgTGlua2Z5UGlwZSB9IGZyb20gJy4vcGlwZXMvbGlua2Z5LnBpcGUnO1xuaW1wb3J0IHsgU2FuaXRpemVQaXBlIH0gZnJvbSAnLi9waXBlcy9zYW5pdGl6ZS5waXBlJztcbmltcG9ydCB7IEdyb3VwTWVzc2FnZURpc3BsYXlOYW1lUGlwZSB9IGZyb20gJy4vcGlwZXMvZ3JvdXAtbWVzc2FnZS1kaXNwbGF5LW5hbWUucGlwZSc7XG5pbXBvcnQgeyBOZ0NoYXRPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25nLWNoYXQtb3B0aW9ucy9uZy1jaGF0LW9wdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IE5nQ2hhdEZyaWVuZHNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL25nLWNoYXQtZnJpZW5kcy1saXN0L25nLWNoYXQtZnJpZW5kcy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0NoYXRXaW5kb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmctY2hhdC13aW5kb3cvbmctY2hhdC13aW5kb3cuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmlyc3RMZXR0ZXJQaXBlIH0gZnJvbSAnLi9maXJzdExldHRlci5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmdDaGF0LFxuICAgIEVtb2ppZnlQaXBlLFxuICAgIExpbmtmeVBpcGUsXG4gICAgU2FuaXRpemVQaXBlLFxuICAgIEdyb3VwTWVzc2FnZURpc3BsYXlOYW1lUGlwZSxcbiAgICBOZ0NoYXRPcHRpb25zQ29tcG9uZW50LFxuICAgIE5nQ2hhdEZyaWVuZHNMaXN0Q29tcG9uZW50LFxuICAgIE5nQ2hhdFdpbmRvd0NvbXBvbmVudCxcbiAgICBGaXJzdExldHRlclBpcGVcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENoYXRNYXRlcmlhbE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUgLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE5nQ2hhdFxuICBdLFxuICBcbn0pXG5leHBvcnQgY2xhc3MgQ2hhdE1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Q2hhdE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQ2hhdE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGxvYWRDb25maWcsXG4gICAgICAgICAgZGVwczogW1xuICAgICAgICAgICAgQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgICAgIENoYXRTZXJ2aWNlXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmb3JDaGlsZCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENoYXRNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IENoYXRNb2R1bGUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZENvbmZpZyhjb25maWc6IEFwcENvbmZpZ1NlcnZpY2UpIHtcbiAgY29uc3QgY29uZiA9ICgpID0+IGNvbmZpZy5sb2FkKCk7XG4gIHJldHVybiBjb25mO1xufVxuIl19
|