@matechat/ng 0.0.1-alpha.0 → 20.0.1-alpha.0

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.
Files changed (42) hide show
  1. package/Base/base.component.d.ts +5 -5
  2. package/Bubble/bubble.component.d.ts +7 -5
  3. package/Input/button/button.component.d.ts +3 -2
  4. package/Input/input.component.d.ts +13 -4
  5. package/MarkdownCard/code-block.component.d.ts +49 -0
  6. package/MarkdownCard/index.d.ts +3 -0
  7. package/MarkdownCard/markdown-card.component.d.ts +200 -0
  8. package/MarkdownCard/markdown-card.module.d.ts +13 -0
  9. package/README.md +117 -13
  10. package/components-common/Base/foundation.d.ts +2 -0
  11. package/components-common/MarkdownCard/codeblock-foundation.d.ts +21 -0
  12. package/components-common/MarkdownCard/common/MDCardService.d.ts +14 -0
  13. package/components-common/MarkdownCard/common/MermaidService.d.ts +23 -0
  14. package/components-common/MarkdownCard/common/mdCard.types.d.ts +56 -0
  15. package/components-common/MarkdownCard/common/parser.d.ts +150 -0
  16. package/components-common/MarkdownCard/foundation.d.ts +38 -0
  17. package/esm2022/Base/base.component.mjs +2 -2
  18. package/esm2022/Bubble/bubble.component.mjs +15 -8
  19. package/esm2022/Input/button/button.component.mjs +1 -1
  20. package/esm2022/Input/input.component.mjs +107 -3
  21. package/esm2022/Locale/locale.service.mjs +5 -5
  22. package/esm2022/MarkdownCard/code-block.component.mjs +175 -0
  23. package/esm2022/MarkdownCard/index.mjs +4 -0
  24. package/esm2022/MarkdownCard/markdown-card.component.mjs +436 -0
  25. package/esm2022/MarkdownCard/markdown-card.module.mjs +44 -0
  26. package/esm2022/components-common/Base/foundation.mjs +4 -1
  27. package/esm2022/components-common/Input/foundation.mjs +1 -2
  28. package/esm2022/components-common/MarkdownCard/codeblock-foundation.mjs +132 -0
  29. package/esm2022/components-common/MarkdownCard/common/MDCardService.mjs +69 -0
  30. package/esm2022/components-common/MarkdownCard/common/MermaidService.mjs +222 -0
  31. package/esm2022/components-common/MarkdownCard/common/mdCard.types.mjs +6 -0
  32. package/esm2022/components-common/MarkdownCard/common/parser.mjs +194 -0
  33. package/esm2022/components-common/MarkdownCard/foundation.mjs +84 -0
  34. package/esm2022/public-api.mjs +2 -1
  35. package/fesm2022/matechat-ng.mjs +1514 -17
  36. package/fesm2022/matechat-ng.mjs.map +1 -1
  37. package/package.json +12 -7
  38. package/public-api.d.ts +1 -0
  39. package/fesm2022/matechat-ng-en-us-DsYnUbZd.mjs +0 -28
  40. package/fesm2022/matechat-ng-en-us-DsYnUbZd.mjs.map +0 -1
  41. package/fesm2022/matechat-ng-zh-cn--_YVZHnW.mjs +0 -28
  42. package/fesm2022/matechat-ng-zh-cn--_YVZHnW.mjs.map +0 -1
@@ -0,0 +1,56 @@
1
+ import type { Options, PluginSimple, PluginWithOptions, PluginWithParams } from 'markdown-it';
2
+ import type { Token } from 'markdown-it';
3
+ export interface MermaidConfig {
4
+ theme?: string;
5
+ }
6
+ export interface CustomXssRule {
7
+ key: string;
8
+ value: string[] | null;
9
+ }
10
+ export interface CodBlockData {
11
+ code: string;
12
+ language: string;
13
+ }
14
+ export type CodeBlockSlot = {
15
+ actions?: () => void;
16
+ header?: () => void;
17
+ content?: () => void;
18
+ };
19
+ export type Theme = 'light' | 'dark';
20
+ export type TypingStyle = 'normal' | 'cursor' | 'color' | 'gradient';
21
+ export type IntervalType = number | [number, number];
22
+ export declare const defaultTypingConfig: {
23
+ step: number;
24
+ interval: number;
25
+ style: TypingStyle;
26
+ };
27
+ export interface MdPlugin {
28
+ plugin: PluginSimple | PluginWithOptions | PluginWithParams;
29
+ opts?: unknown;
30
+ }
31
+ export interface MarkdownCardProps {
32
+ content?: string;
33
+ typing?: boolean;
34
+ enableThink?: boolean;
35
+ typingOptions?: {
36
+ step?: number;
37
+ interval?: number | [number, number];
38
+ style?: TypingStyle;
39
+ };
40
+ thinkOptions?: {
41
+ customClass?: string;
42
+ };
43
+ mdOptions?: Options;
44
+ mdPlugins?: Array<MdPlugin>;
45
+ customXssRules?: Array<CustomXssRule>;
46
+ theme?: Theme;
47
+ enableMermaid?: boolean;
48
+ mermaidConfig?: MermaidConfig;
49
+ }
50
+ export interface ASTNode {
51
+ nodeType: string;
52
+ openNode: Token | null;
53
+ closeNode: Token | null;
54
+ children: (ASTNode | Token)[];
55
+ vNodeKey: string;
56
+ }
@@ -0,0 +1,150 @@
1
+ import type { Token } from "markdown-it";
2
+ import type { ASTNode } from './mdCard.types';
3
+ export declare const isSelfClosingTag: (token: Token) => boolean;
4
+ export declare const isClosingTag: (openToken: Token, closeToken: Token) => boolean;
5
+ export declare const genTreeNode: (node: Token | null) => ASTNode;
6
+ export declare const matchHtmlToken: (token: Token, stack: Token[]) => void;
7
+ export declare const isValidTagName: (tagName: string | undefined) => boolean;
8
+ export declare const tokensToAst: (tokens: Token[]) => ASTNode[];
9
+ declare const _default: {
10
+ isSelfClosingTag: (token: {
11
+ type: string;
12
+ tag: string;
13
+ attrs: [string, string][] | null;
14
+ map: [number, number] | null;
15
+ nesting: Token.Nesting;
16
+ level: number;
17
+ children: any[] | null;
18
+ content: string;
19
+ markup: string;
20
+ info: string;
21
+ meta: any;
22
+ block: boolean;
23
+ hidden: boolean;
24
+ attrIndex(name: string): number;
25
+ attrPush(attrData: [string, string]): void;
26
+ attrSet(name: string, value: string): void;
27
+ attrGet(name: string): string | null;
28
+ attrJoin(name: string, value: string): void;
29
+ }) => boolean;
30
+ isClosingTag: (openToken: {
31
+ type: string;
32
+ tag: string;
33
+ attrs: [string, string][] | null;
34
+ map: [number, number] | null;
35
+ nesting: Token.Nesting;
36
+ level: number;
37
+ children: any[] | null;
38
+ content: string;
39
+ markup: string;
40
+ info: string;
41
+ meta: any;
42
+ block: boolean;
43
+ hidden: boolean;
44
+ attrIndex(name: string): number;
45
+ attrPush(attrData: [string, string]): void;
46
+ attrSet(name: string, value: string): void;
47
+ attrGet(name: string): string | null;
48
+ attrJoin(name: string, value: string): void;
49
+ }, closeToken: {
50
+ type: string;
51
+ tag: string;
52
+ attrs: [string, string][] | null;
53
+ map: [number, number] | null;
54
+ nesting: Token.Nesting;
55
+ level: number;
56
+ children: any[] | null;
57
+ content: string;
58
+ markup: string;
59
+ info: string;
60
+ meta: any;
61
+ block: boolean;
62
+ hidden: boolean;
63
+ attrIndex(name: string): number;
64
+ attrPush(attrData: [string, string]): void;
65
+ attrSet(name: string, value: string): void;
66
+ attrGet(name: string): string | null;
67
+ attrJoin(name: string, value: string): void;
68
+ }) => boolean;
69
+ tokensToAst: (tokens: {
70
+ type: string;
71
+ tag: string;
72
+ attrs: [string, string][] | null;
73
+ map: [number, number] | null;
74
+ nesting: Token.Nesting;
75
+ level: number;
76
+ children: any[] | null;
77
+ content: string;
78
+ markup: string;
79
+ info: string;
80
+ meta: any;
81
+ block: boolean;
82
+ hidden: boolean;
83
+ attrIndex(name: string): number;
84
+ attrPush(attrData: [string, string]): void;
85
+ attrSet(name: string, value: string): void;
86
+ attrGet(name: string): string | null;
87
+ attrJoin(name: string, value: string): void;
88
+ }[]) => ASTNode[];
89
+ genTreeNode: (node: {
90
+ type: string;
91
+ tag: string;
92
+ attrs: [string, string][] | null;
93
+ map: [number, number] | null;
94
+ nesting: Token.Nesting;
95
+ level: number;
96
+ children: any[] | null;
97
+ content: string;
98
+ markup: string;
99
+ info: string;
100
+ meta: any;
101
+ block: boolean;
102
+ hidden: boolean;
103
+ attrIndex(name: string): number;
104
+ attrPush(attrData: [string, string]): void;
105
+ attrSet(name: string, value: string): void;
106
+ attrGet(name: string): string | null;
107
+ attrJoin(name: string, value: string): void;
108
+ } | null) => ASTNode;
109
+ matchHtmlToken: (token: {
110
+ type: string;
111
+ tag: string;
112
+ attrs: [string, string][] | null;
113
+ map: [number, number] | null;
114
+ nesting: Token.Nesting;
115
+ level: number;
116
+ children: any[] | null;
117
+ content: string;
118
+ markup: string;
119
+ info: string;
120
+ meta: any;
121
+ block: boolean;
122
+ hidden: boolean;
123
+ attrIndex(name: string): number;
124
+ attrPush(attrData: [string, string]): void;
125
+ attrSet(name: string, value: string): void;
126
+ attrGet(name: string): string | null;
127
+ attrJoin(name: string, value: string): void;
128
+ }, stack: {
129
+ type: string;
130
+ tag: string;
131
+ attrs: [string, string][] | null;
132
+ map: [number, number] | null;
133
+ nesting: Token.Nesting;
134
+ level: number;
135
+ children: any[] | null;
136
+ content: string;
137
+ markup: string;
138
+ info: string;
139
+ meta: any;
140
+ block: boolean;
141
+ hidden: boolean;
142
+ attrIndex(name: string): number;
143
+ attrPush(attrData: [string, string]): void;
144
+ attrSet(name: string, value: string): void;
145
+ attrGet(name: string): string | null;
146
+ attrJoin(name: string, value: string): void;
147
+ }[]) => void;
148
+ isValidTagName: (tagName: string | undefined) => boolean;
149
+ };
150
+ export default _default;
@@ -0,0 +1,38 @@
1
+ import BaseFoundation, { DefaultAdapter } from '../Base/foundation';
2
+ import type { Token } from 'markdown-it';
3
+ import type { ASTNode } from './common/mdCard.types';
4
+ export interface MarkdownCardAdapter extends DefaultAdapter {
5
+ locale(key: string, params?: Record<string, string>): string;
6
+ typingStart: () => void;
7
+ typingEnd: () => void;
8
+ typingEvent: () => void;
9
+ parseContent: (content: string) => void;
10
+ }
11
+ export declare class MarkdownCardFoundation extends BaseFoundation<MarkdownCardAdapter> {
12
+ constructor(adapter: MarkdownCardAdapter);
13
+ isToken: (node: ASTNode | Token) => node is {
14
+ type: string;
15
+ tag: string;
16
+ attrs: [string, string][] | null;
17
+ map: [number, number] | null;
18
+ nesting: Token.Nesting;
19
+ level: number;
20
+ children: any[] | null;
21
+ content: string;
22
+ markup: string;
23
+ info: string;
24
+ meta: any;
25
+ block: boolean;
26
+ hidden: boolean;
27
+ attrIndex(name: string): number;
28
+ attrPush(attrData: [string, string]): void;
29
+ attrSet(name: string, value: string): void;
30
+ attrGet(name: string): string | null;
31
+ attrJoin(name: string, value: string): void;
32
+ };
33
+ typewriterEnd: () => void;
34
+ getThinkContent: (content: string, thinkOptions: any) => string;
35
+ parseTypingContent: (content: string) => string;
36
+ parseContent: () => void;
37
+ typewriterStart: () => void;
38
+ }
@@ -2,7 +2,6 @@ import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export default class BaseComponent {
4
4
  constructor() {
5
- this.foundation = null;
6
5
  }
7
6
  ngOnDestroy() {
8
7
  this.foundation &&
@@ -30,6 +29,7 @@ export default class BaseComponent {
30
29
  getCache: (key) => key && this.cache[key],
31
30
  getCaches: () => this.cache,
32
31
  setCache: (key, value) => key && (this.cache[key] = value),
32
+ nextTick: (cb) => setTimeout(cb, 0),
33
33
  };
34
34
  }
35
35
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
43
43
  template: '',
44
44
  }]
45
45
  }], ctorParameters: () => [] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9CYXNlL2Jhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzFDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYTtJQUdoQztRQUNFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVU7WUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLFVBQVU7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFO2dCQUN2QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ3pCLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUMxQixDQUFDO29CQUNELEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDYixDQUFDO1lBQ0gsQ0FBQztZQUNELFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUM1QixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUNyQixRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN6QyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDM0IsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDM0QsQ0FBQztJQUNKLENBQUM7OEdBbkNrQixhQUFhO2tHQUFiLGFBQWEsK0VBRnRCLEVBQUU7OzJGQUVPLGFBQWE7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEFkYXB0ZXIgfSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9CYXNlL2ZvdW5kYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdGUtYmFzZS1jb21wb25lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZUNvbXBvbmVudCB7XG4gIGZvdW5kYXRpb246IGFueTtcbiAgY2FjaGU6IGFueTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5mb3VuZGF0aW9uID0gbnVsbDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZm91bmRhdGlvbiAmJlxuICAgICAgdHlwZW9mIHRoaXMuZm91bmRhdGlvbi5kZXN0cm95ID09PSAnZnVuY3Rpb24nICYmXG4gICAgICB0aGlzLmZvdW5kYXRpb24uZGVzdHJveSgpO1xuICB9XG5cbiAgZ2V0IGFkYXB0ZXIoKTogRGVmYXVsdEFkYXB0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRQcm9wOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgICAgIH0sXG4gICAgICBnZXRQcm9wczogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBzZXRTdGF0ZTogKHN0YXRlcywgY2IpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc3RhdGVzKSB7XG4gICAgICAgICAgaWYgKHN0YXRlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBzdGF0ZXNba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2IgJiYgY2IoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGdldFN0YXRlOiAoa2V5KSA9PiB0aGlzW2tleV0sXG4gICAgICBnZXRTdGF0ZXM6ICgpID0+IHRoaXMsXG4gICAgICBnZXRDYWNoZTogKGtleSkgPT4ga2V5ICYmIHRoaXMuY2FjaGVba2V5XSxcbiAgICAgIGdldENhY2hlczogKCkgPT4gdGhpcy5jYWNoZSxcbiAgICAgIHNldENhY2hlOiAoa2V5LCB2YWx1ZSkgPT4ga2V5ICYmICh0aGlzLmNhY2hlW2tleV0gPSB2YWx1ZSksXG4gICAgfTtcbiAgfVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzLW5nL3NyYy9CYXNlL2Jhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzFDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYTtJQUdoQztJQUNBLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVU7WUFDYixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxLQUFLLFVBQVU7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFO2dCQUN2QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ3pCLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUMxQixDQUFDO29CQUNELEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDYixDQUFDO1lBQ0gsQ0FBQztZQUNELFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUM1QixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUNyQixRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUN6QyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDM0IsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDMUQsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNwQyxDQUFDO0lBQ0osQ0FBQzs4R0FuQ2tCLGFBQWE7a0dBQWIsYUFBYSwrRUFGdEIsRUFBRTs7MkZBRU8sYUFBYTtrQkFMakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLEVBQUU7aUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUZvdW5kYXRpb24sIHsgRGVmYXVsdEFkYXB0ZXIgfSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9CYXNlL2ZvdW5kYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdGUtYmFzZS1jb21wb25lbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZUNvbXBvbmVudDxUIGV4dGVuZHMgQmFzZUZvdW5kYXRpb248RGVmYXVsdEFkYXB0ZXI+PiB7XG4gIGZvdW5kYXRpb246IFQ7XG4gIGNhY2hlOiBhbnk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3VuZGF0aW9uICYmXG4gICAgICB0eXBlb2YgdGhpcy5mb3VuZGF0aW9uLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHRoaXMuZm91bmRhdGlvbi5kZXN0cm95KCk7XG4gIH1cblxuICBnZXQgYWRhcHRlcigpOiBEZWZhdWx0QWRhcHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFByb3A6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpc1trZXldO1xuICAgICAgfSxcbiAgICAgIGdldFByb3BzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICAgIHNldFN0YXRlOiAoc3RhdGVzLCBjYikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzdGF0ZXMpIHtcbiAgICAgICAgICBpZiAoc3RhdGVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IHN0YXRlc1trZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYiAmJiBjYigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZ2V0U3RhdGU6IChrZXkpID0+IHRoaXNba2V5XSxcbiAgICAgIGdldFN0YXRlczogKCkgPT4gdGhpcyxcbiAgICAgIGdldENhY2hlOiAoa2V5KSA9PiBrZXkgJiYgdGhpcy5jYWNoZVtrZXldLFxuICAgICAgZ2V0Q2FjaGVzOiAoKSA9PiB0aGlzLmNhY2hlLFxuICAgICAgc2V0Q2FjaGU6IChrZXksIHZhbHVlKSA9PiBrZXkgJiYgKHRoaXMuY2FjaGVba2V5XSA9IHZhbHVlKSxcbiAgICAgIG5leHRUaWNrOiAoY2IpID0+IHNldFRpbWVvdXQoY2IsIDApLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { Component, Input, ContentChild } from '@angular/core';
1
+ import { Component, Input, ContentChild, ContentChildren } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { BubbleLoadingComponent } from './bubble-loading/bubble-loading.component';
4
4
  import { AvatarComponent } from './avatar/avatar.component';
@@ -8,6 +8,10 @@ import { TranslatePipe } from '../Locale/translate.pipe';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common";
10
10
  export class BubbleComponent extends BaseComponent {
11
+ // 计算是否有内容投影
12
+ get ngContentProjected() {
13
+ return this.contentChildren && this.contentChildren.length > 0;
14
+ }
11
15
  constructor() {
12
16
  super();
13
17
  // 组件属性
@@ -17,9 +21,9 @@ export class BubbleComponent extends BaseComponent {
17
21
  this.avatarPosition = 'side';
18
22
  this.variant = 'filled';
19
23
  // 内容投影模板引用
24
+ this.avatarTemplate = null;
20
25
  this.topTemplate = null;
21
26
  this.loadingTplTemplate = null;
22
- this.defaultTemplate = null;
23
27
  this.bottomTemplate = null;
24
28
  }
25
29
  ngOnInit() {
@@ -49,11 +53,11 @@ export class BubbleComponent extends BaseComponent {
49
53
  }
50
54
  ;
51
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BubbleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: BubbleComponent, isStandalone: true, selector: "mc-bubble", inputs: { content: "content", loading: "loading", align: "align", avatarPosition: "avatarPosition", variant: "variant", avatarConfig: "avatarConfig" }, queries: [{ propertyName: "topTemplate", first: true, predicate: ["top"], descendants: true }, { propertyName: "loadingTplTemplate", first: true, predicate: ["loadingTpl"], descendants: true }, { propertyName: "defaultTemplate", first: true, predicate: ["defaultTemplate"], descendants: true }, { propertyName: "bottomTemplate", first: true, predicate: ["bottom"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"mc-bubble\" [ngClass]=\"bubbleClasses\" role=\"group\" [attr.aria-label]=\"'Bubble.ariaLabel' | translate\">\n <div\n *ngIf=\"avatarConfig\"\n class=\"mc-bubble-avatar\" role=\"img\"\n [ngClass]=\"{ 'empty-avatar': isEmptyAvatar }\"\n >\n <mc-avatar\n *ngIf=\"!isEmptyAvatar\"\n [imgSrc]=\"avatarConfig?.imgSrc || ''\"\n [name]=\"avatarConfig?.name || ''\"\n [width]=\"avatarConfig?.width || 36\"\n [height]=\"avatarConfig?.height || 36\"\n [gender]=\"avatarConfig?.gender || ''\"\n />\n <div *ngIf=\"isEmptyAvatar\" class=\"mc-bubble-avatar-wrapper\" [attr.aria-label]=\"'Bubble.emptyAvatar' | translate\"\n [style.width.px]=\"avatarConfig?.width || 36\"\n [style.height.px]=\"avatarConfig?.height || 36\"></div>\n <span *ngIf=\"avatarPosition === 'top'\" class=\"mc-bubble-avatar-name\" [attr.aria-label]=\"'Bubble.userName' | translate:{ name: avatarConfig?.displayName || '' } \">{{\n avatarConfig?.displayName\n }}</span>\n </div>\n <div\n class=\"mc-bubble-content-container\" aria-live=\"polite\"\n [ngClass]=\"{ 'with-avatar': avatarConfig }\"\n >\n <!-- \u9876\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"topTemplate\"></ng-container>\n <ng-content select=\"[top]\"></ng-content>\n </ng-container>\n \n <!-- \u52A0\u8F7D\u72B6\u6001 -->\n <div *ngIf=\"loading\" class=\"loading-container\" role=\"status\" aria-busy=\"true\">\n <ng-container *ngIf=\"loadingTplTemplate; else defaultLoadingTemplate\">\n <ng-container *ngTemplateOutlet=\"loadingTplTemplate\"></ng-container>\n <ng-content select=\"[loadingTpl]\"></ng-content>\n </ng-container>\n <ng-template #defaultLoadingTemplate>\n <mc-bubble-loading></mc-bubble-loading>\n </ng-template>\n </div>\n \n <!-- \u4E3B\u8981\u5185\u5BB9 -->\n <div\n *ngIf=\"(defaultTemplate || content) && !loading\"\n class=\"mc-bubble-content\"\n [ngClass]=\"[variant]\"\n role=\"region\"\n >\n <ng-container *ngIf=\"defaultTemplate; else contentTemplate\">\n <ng-container *ngTemplateOutlet=\"defaultTemplate\"></ng-container>\n <ng-content></ng-content>\n </ng-container>\n <ng-template #contentTemplate>\n <span [attr.aria-label]=\"'Bubble.content' | translate\">{{ content }}</span>\n </ng-template>\n </div>\n \n <!-- \u5E95\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"bottomTemplate\"></ng-container>\n <ng-content select=\"[bottom]\"></ng-content>\n </ng-container>\n </div>\n</div>\n", styles: [".mc-bubble{display:flex;gap:4px;font-size:var(--devui-font-size, 14px)}.mc-bubble .mc-bubble-content{word-wrap:break-word}.mc-bubble .mc-bubble-content.filled,.mc-bubble .mc-bubble-content.bordered{padding:12px 16px;border-radius:12px}.mc-bubble .mc-bubble-content.filled{background-color:var(--devui-global-bg, #f6f6f8)}.mc-bubble .mc-bubble-content.bordered{border:1px solid var(--devui-dividing-line, #f2f2f3)}.mc-bubble .mc-bubble-avatar{flex-shrink:0;display:flex;gap:4px}.mc-bubble .mc-bubble-avatar .mc-bubble-avatar-name{font-size:14px}.mc-bubble .mc-bubble-avatar.empty-avatar{visibility:hidden}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar{align-items:center}.mc-bubble .mc-bubble-content-container{max-width:100%}.mc-bubble.mc-bubble-avatar-top{flex-direction:column}.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{align-items:flex-start;flex-direction:column}.mc-bubble.mc-bubble-loading.mc-bubble-avatar-side{align-items:center}.mc-bubble.mc-bubble-avatar-side.mc-bubble-right{flex-direction:row-reverse;justify-content:end}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{display:flex}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-content-container{align-items:flex-end}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar{flex-direction:row-reverse}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BubbleLoadingComponent, selector: "mc-bubble-loading" }, { kind: "component", type: AvatarComponent, selector: "mc-avatar", inputs: ["imgSrc", "name", "width", "height", "isRound", "gender"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: BubbleComponent, isStandalone: true, selector: "mc-bubble", inputs: { content: "content", loading: "loading", align: "align", avatarPosition: "avatarPosition", variant: "variant", avatarConfig: "avatarConfig" }, queries: [{ propertyName: "avatarTemplate", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "topTemplate", first: true, predicate: ["top"], descendants: true }, { propertyName: "loadingTplTemplate", first: true, predicate: ["loadingTpl"], descendants: true }, { propertyName: "bottomTemplate", first: true, predicate: ["bottom"], descendants: true }, { propertyName: "contentChildren", predicate: ["ng-content"] }], usesInheritance: true, ngImport: i0, template: "<div class=\"mc-bubble\" [ngClass]=\"bubbleClasses\" role=\"group\" [attr.aria-label]=\"'Bubble.ariaLabel' | translate\">\n <!-- \u81EA\u5B9A\u4E49\u5934\u50CF\u533A\u57DF -->\n <div *ngIf=\"avatarTemplate\" class=\"mc-bubble-avatar\" role=\"img\">\n <ng-container *ngTemplateOutlet=\"avatarTemplate\"></ng-container>\n <ng-content select=\"[avatar]\"></ng-content>\n </div>\n \n <!-- \u9ED8\u8BA4\u5934\u50CF\u914D\u7F6E -->\n <div *ngIf=\"!avatarTemplate && avatarConfig\"\n class=\"mc-bubble-avatar\" role=\"img\"\n [ngClass]=\"{ 'empty-avatar': isEmptyAvatar }\"\n >\n <mc-avatar\n *ngIf=\"!isEmptyAvatar\"\n [imgSrc]=\"avatarConfig?.imgSrc || ''\"\n [name]=\"avatarConfig?.name || ''\"\n [width]=\"avatarConfig?.width || 36\"\n [height]=\"avatarConfig?.height || 36\"\n [gender]=\"avatarConfig?.gender || ''\"\n />\n <div *ngIf=\"isEmptyAvatar\" class=\"mc-bubble-avatar-wrapper\" [attr.aria-label]=\"'Bubble.emptyAvatar' | translate\"\n [style.width.px]=\"avatarConfig?.width || 36\"\n [style.height.px]=\"avatarConfig?.height || 36\"></div>\n <span *ngIf=\"avatarPosition === 'top'\" class=\"mc-bubble-avatar-name\" [attr.aria-label]=\"'Bubble.userName' | translate:{ name: avatarConfig?.displayName || '' } \">{{\n avatarConfig?.displayName\n }}</span>\n </div>\n <div\n class=\"mc-bubble-content-container\" aria-live=\"polite\"\n [ngClass]=\"{ 'with-avatar': avatarTemplate || avatarConfig }\"\n >\n <!-- \u9876\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"topTemplate\"></ng-container>\n <ng-content select=\"[top]\"></ng-content>\n </ng-container>\n \n <!-- \u52A0\u8F7D\u72B6\u6001 -->\n <div *ngIf=\"loading\" class=\"loading-container\" role=\"status\" aria-busy=\"true\">\n <ng-container *ngIf=\"loadingTplTemplate; else defaultLoadingTemplate\">\n <ng-container *ngTemplateOutlet=\"loadingTplTemplate\"></ng-container>\n <ng-content select=\"[loadingTpl]\"></ng-content>\n </ng-container>\n <ng-template #defaultLoadingTemplate>\n <mc-bubble-loading></mc-bubble-loading>\n </ng-template>\n </div>\n \n <!-- \u4E3B\u8981\u5185\u5BB9 -->\n <div\n *ngIf=\"!loading\"\n class=\"mc-bubble-content\"\n [ngClass]=\"[variant]\"\n role=\"region\"\n >\n <ng-content></ng-content>\n <ng-container *ngIf=\"content && !ngContentProjected\">\n <span [attr.aria-label]=\"'Bubble.content' | translate\">{{ content }}</span>\n </ng-container>\n </div>\n \n <!-- \u5E95\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"bottomTemplate\"></ng-container>\n <ng-content select=\"[bottom]\"></ng-content>\n </ng-container>\n </div>\n</div>\n", styles: [".mc-bubble{display:flex;gap:4px;font-size:var(--devui-font-size, 14px)}.mc-bubble .mc-bubble-content{word-wrap:break-word}.mc-bubble .mc-bubble-content.filled,.mc-bubble .mc-bubble-content.bordered{padding:12px 16px;border-radius:12px}.mc-bubble .mc-bubble-content.filled{background-color:var(--devui-global-bg, #f6f6f8)}.mc-bubble .mc-bubble-content.bordered{border:1px solid var(--devui-dividing-line, #f2f2f3)}.mc-bubble .mc-bubble-avatar{flex-shrink:0;display:flex;gap:4px}.mc-bubble .mc-bubble-avatar .mc-bubble-avatar-name{font-size:14px}.mc-bubble .mc-bubble-avatar.empty-avatar{visibility:hidden}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar{align-items:center}.mc-bubble .mc-bubble-content-container{max-width:100%}.mc-bubble.mc-bubble-avatar-top{flex-direction:column}.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{align-items:flex-start;flex-direction:column}.mc-bubble.mc-bubble-loading.mc-bubble-avatar-side{align-items:center}.mc-bubble.mc-bubble-avatar-side.mc-bubble-right{flex-direction:row-reverse;justify-content:end}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{display:flex}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-content-container{align-items:flex-end}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar{flex-direction:row-reverse}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BubbleLoadingComponent, selector: "mc-bubble-loading" }, { kind: "component", type: AvatarComponent, selector: "mc-avatar", inputs: ["imgSrc", "name", "width", "height", "isRound", "gender"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
53
57
  }
54
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BubbleComponent, decorators: [{
55
59
  type: Component,
56
- args: [{ selector: 'mc-bubble', standalone: true, imports: [CommonModule, BubbleLoadingComponent, AvatarComponent, TranslatePipe], template: "<div class=\"mc-bubble\" [ngClass]=\"bubbleClasses\" role=\"group\" [attr.aria-label]=\"'Bubble.ariaLabel' | translate\">\n <div\n *ngIf=\"avatarConfig\"\n class=\"mc-bubble-avatar\" role=\"img\"\n [ngClass]=\"{ 'empty-avatar': isEmptyAvatar }\"\n >\n <mc-avatar\n *ngIf=\"!isEmptyAvatar\"\n [imgSrc]=\"avatarConfig?.imgSrc || ''\"\n [name]=\"avatarConfig?.name || ''\"\n [width]=\"avatarConfig?.width || 36\"\n [height]=\"avatarConfig?.height || 36\"\n [gender]=\"avatarConfig?.gender || ''\"\n />\n <div *ngIf=\"isEmptyAvatar\" class=\"mc-bubble-avatar-wrapper\" [attr.aria-label]=\"'Bubble.emptyAvatar' | translate\"\n [style.width.px]=\"avatarConfig?.width || 36\"\n [style.height.px]=\"avatarConfig?.height || 36\"></div>\n <span *ngIf=\"avatarPosition === 'top'\" class=\"mc-bubble-avatar-name\" [attr.aria-label]=\"'Bubble.userName' | translate:{ name: avatarConfig?.displayName || '' } \">{{\n avatarConfig?.displayName\n }}</span>\n </div>\n <div\n class=\"mc-bubble-content-container\" aria-live=\"polite\"\n [ngClass]=\"{ 'with-avatar': avatarConfig }\"\n >\n <!-- \u9876\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"topTemplate\"></ng-container>\n <ng-content select=\"[top]\"></ng-content>\n </ng-container>\n \n <!-- \u52A0\u8F7D\u72B6\u6001 -->\n <div *ngIf=\"loading\" class=\"loading-container\" role=\"status\" aria-busy=\"true\">\n <ng-container *ngIf=\"loadingTplTemplate; else defaultLoadingTemplate\">\n <ng-container *ngTemplateOutlet=\"loadingTplTemplate\"></ng-container>\n <ng-content select=\"[loadingTpl]\"></ng-content>\n </ng-container>\n <ng-template #defaultLoadingTemplate>\n <mc-bubble-loading></mc-bubble-loading>\n </ng-template>\n </div>\n \n <!-- \u4E3B\u8981\u5185\u5BB9 -->\n <div\n *ngIf=\"(defaultTemplate || content) && !loading\"\n class=\"mc-bubble-content\"\n [ngClass]=\"[variant]\"\n role=\"region\"\n >\n <ng-container *ngIf=\"defaultTemplate; else contentTemplate\">\n <ng-container *ngTemplateOutlet=\"defaultTemplate\"></ng-container>\n <ng-content></ng-content>\n </ng-container>\n <ng-template #contentTemplate>\n <span [attr.aria-label]=\"'Bubble.content' | translate\">{{ content }}</span>\n </ng-template>\n </div>\n \n <!-- \u5E95\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"bottomTemplate\"></ng-container>\n <ng-content select=\"[bottom]\"></ng-content>\n </ng-container>\n </div>\n</div>\n", styles: [".mc-bubble{display:flex;gap:4px;font-size:var(--devui-font-size, 14px)}.mc-bubble .mc-bubble-content{word-wrap:break-word}.mc-bubble .mc-bubble-content.filled,.mc-bubble .mc-bubble-content.bordered{padding:12px 16px;border-radius:12px}.mc-bubble .mc-bubble-content.filled{background-color:var(--devui-global-bg, #f6f6f8)}.mc-bubble .mc-bubble-content.bordered{border:1px solid var(--devui-dividing-line, #f2f2f3)}.mc-bubble .mc-bubble-avatar{flex-shrink:0;display:flex;gap:4px}.mc-bubble .mc-bubble-avatar .mc-bubble-avatar-name{font-size:14px}.mc-bubble .mc-bubble-avatar.empty-avatar{visibility:hidden}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar{align-items:center}.mc-bubble .mc-bubble-content-container{max-width:100%}.mc-bubble.mc-bubble-avatar-top{flex-direction:column}.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{align-items:flex-start;flex-direction:column}.mc-bubble.mc-bubble-loading.mc-bubble-avatar-side{align-items:center}.mc-bubble.mc-bubble-avatar-side.mc-bubble-right{flex-direction:row-reverse;justify-content:end}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{display:flex}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-content-container{align-items:flex-end}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar{flex-direction:row-reverse}\n"] }]
60
+ args: [{ selector: 'mc-bubble', standalone: true, imports: [CommonModule, BubbleLoadingComponent, AvatarComponent, TranslatePipe], template: "<div class=\"mc-bubble\" [ngClass]=\"bubbleClasses\" role=\"group\" [attr.aria-label]=\"'Bubble.ariaLabel' | translate\">\n <!-- \u81EA\u5B9A\u4E49\u5934\u50CF\u533A\u57DF -->\n <div *ngIf=\"avatarTemplate\" class=\"mc-bubble-avatar\" role=\"img\">\n <ng-container *ngTemplateOutlet=\"avatarTemplate\"></ng-container>\n <ng-content select=\"[avatar]\"></ng-content>\n </div>\n \n <!-- \u9ED8\u8BA4\u5934\u50CF\u914D\u7F6E -->\n <div *ngIf=\"!avatarTemplate && avatarConfig\"\n class=\"mc-bubble-avatar\" role=\"img\"\n [ngClass]=\"{ 'empty-avatar': isEmptyAvatar }\"\n >\n <mc-avatar\n *ngIf=\"!isEmptyAvatar\"\n [imgSrc]=\"avatarConfig?.imgSrc || ''\"\n [name]=\"avatarConfig?.name || ''\"\n [width]=\"avatarConfig?.width || 36\"\n [height]=\"avatarConfig?.height || 36\"\n [gender]=\"avatarConfig?.gender || ''\"\n />\n <div *ngIf=\"isEmptyAvatar\" class=\"mc-bubble-avatar-wrapper\" [attr.aria-label]=\"'Bubble.emptyAvatar' | translate\"\n [style.width.px]=\"avatarConfig?.width || 36\"\n [style.height.px]=\"avatarConfig?.height || 36\"></div>\n <span *ngIf=\"avatarPosition === 'top'\" class=\"mc-bubble-avatar-name\" [attr.aria-label]=\"'Bubble.userName' | translate:{ name: avatarConfig?.displayName || '' } \">{{\n avatarConfig?.displayName\n }}</span>\n </div>\n <div\n class=\"mc-bubble-content-container\" aria-live=\"polite\"\n [ngClass]=\"{ 'with-avatar': avatarTemplate || avatarConfig }\"\n >\n <!-- \u9876\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"topTemplate\"></ng-container>\n <ng-content select=\"[top]\"></ng-content>\n </ng-container>\n \n <!-- \u52A0\u8F7D\u72B6\u6001 -->\n <div *ngIf=\"loading\" class=\"loading-container\" role=\"status\" aria-busy=\"true\">\n <ng-container *ngIf=\"loadingTplTemplate; else defaultLoadingTemplate\">\n <ng-container *ngTemplateOutlet=\"loadingTplTemplate\"></ng-container>\n <ng-content select=\"[loadingTpl]\"></ng-content>\n </ng-container>\n <ng-template #defaultLoadingTemplate>\n <mc-bubble-loading></mc-bubble-loading>\n </ng-template>\n </div>\n \n <!-- \u4E3B\u8981\u5185\u5BB9 -->\n <div\n *ngIf=\"!loading\"\n class=\"mc-bubble-content\"\n [ngClass]=\"[variant]\"\n role=\"region\"\n >\n <ng-content></ng-content>\n <ng-container *ngIf=\"content && !ngContentProjected\">\n <span [attr.aria-label]=\"'Bubble.content' | translate\">{{ content }}</span>\n </ng-container>\n </div>\n \n <!-- \u5E95\u90E8\u5185\u5BB9\u6295\u5F71 -->\n <ng-container *ngIf=\"!loading\">\n <ng-container *ngTemplateOutlet=\"bottomTemplate\"></ng-container>\n <ng-content select=\"[bottom]\"></ng-content>\n </ng-container>\n </div>\n</div>\n", styles: [".mc-bubble{display:flex;gap:4px;font-size:var(--devui-font-size, 14px)}.mc-bubble .mc-bubble-content{word-wrap:break-word}.mc-bubble .mc-bubble-content.filled,.mc-bubble .mc-bubble-content.bordered{padding:12px 16px;border-radius:12px}.mc-bubble .mc-bubble-content.filled{background-color:var(--devui-global-bg, #f6f6f8)}.mc-bubble .mc-bubble-content.bordered{border:1px solid var(--devui-dividing-line, #f2f2f3)}.mc-bubble .mc-bubble-avatar{flex-shrink:0;display:flex;gap:4px}.mc-bubble .mc-bubble-avatar .mc-bubble-avatar-name{font-size:14px}.mc-bubble .mc-bubble-avatar.empty-avatar{visibility:hidden}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar{align-items:center}.mc-bubble .mc-bubble-content-container{max-width:100%}.mc-bubble.mc-bubble-avatar-top{flex-direction:column}.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{align-items:flex-start;flex-direction:column}.mc-bubble.mc-bubble-loading.mc-bubble-avatar-side{align-items:center}.mc-bubble.mc-bubble-avatar-side.mc-bubble-right{flex-direction:row-reverse;justify-content:end}.mc-bubble.mc-bubble-avatar-top .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top .mc-bubble-content-container{display:flex}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar,.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-content-container{align-items:flex-end}.mc-bubble.mc-bubble-avatar-top.mc-bubble-right .mc-bubble-avatar{flex-direction:row-reverse}\n"] }]
57
61
  }], ctorParameters: () => [], propDecorators: { content: [{
58
62
  type: Input
59
63
  }], loading: [{
@@ -66,17 +70,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
66
70
  type: Input
67
71
  }], avatarConfig: [{
68
72
  type: Input
73
+ }], avatarTemplate: [{
74
+ type: ContentChild,
75
+ args: ['avatar']
69
76
  }], topTemplate: [{
70
77
  type: ContentChild,
71
78
  args: ['top']
72
79
  }], loadingTplTemplate: [{
73
80
  type: ContentChild,
74
81
  args: ['loadingTpl']
75
- }], defaultTemplate: [{
76
- type: ContentChild,
77
- args: ['defaultTemplate']
78
82
  }], bottomTemplate: [{
79
83
  type: ContentChild,
80
84
  args: ['bottom']
85
+ }], contentChildren: [{
86
+ type: ContentChildren,
87
+ args: ['ng-content']
81
88
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0J1YmJsZS9idWJibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvQnViYmxlL2J1YmJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBWSxZQUFZLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc1RCxPQUFPLEVBQWlCLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekYsT0FBTyxhQUFhLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFTekQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQWVoRDtRQUFnQixLQUFLLEVBQUUsQ0FBQztRQWR4QixPQUFPO1FBQ0UsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFVBQUssR0FBZ0IsTUFBTSxDQUFDO1FBQzVCLG1CQUFjLEdBQW1CLE1BQU0sQ0FBQztRQUN4QyxZQUFPLEdBQWtCLFFBQVEsQ0FBQztRQUczQyxXQUFXO1FBQ1UsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQ3JDLHVCQUFrQixHQUE0QixJQUFJLENBQUM7UUFDOUMsb0JBQWUsR0FBNEIsSUFBSSxDQUFDO1FBQ3pELG1CQUFjLEdBQTRCLElBQUksQ0FBQztJQUU5QyxDQUFDO0lBRTFCLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELElBQWEsT0FBTztRQUNsQixPQUFPO1lBQ0wsR0FBRyxLQUFLLENBQUMsT0FBTztZQUNoQixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7Z0JBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2hDLENBQUM7U0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU87SUFDUCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBQUEsQ0FBQztJQUVGLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFBLENBQUM7OEdBM0NTLGVBQWU7a0dBQWYsZUFBZSx1bkJDakI1QiwrcUZBaUVBLHM5Q0RwRFksWUFBWSx3WUFBRSxzQkFBc0IsOERBQUUsZUFBZSxxSEFBRSxhQUFhOzsyRkFJbkUsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUM7d0RBTXRFLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR2UsV0FBVztzQkFBL0IsWUFBWTt1QkFBQyxLQUFLO2dCQUNTLGtCQUFrQjtzQkFBN0MsWUFBWTt1QkFBQyxZQUFZO2dCQUNPLGVBQWU7c0JBQS9DLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUNQLGNBQWM7c0JBQXJDLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIGNvbXB1dGVkLCBDb250ZW50Q2hpbGQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnViYmxlTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vYnViYmxlLWxvYWRpbmcvYnViYmxlLWxvYWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9BVkFUQVJfV0lEVEgsIERFRkFVTFRfQVZBVEFSX0hFSUdIVCwgQVZBVEFSX05BTUUsIEFWQVRBUl9JTUcgfSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9CdWJibGUvY29tbW9uL2J1YmJsZS1jb25zdGFudHMnO1xuaW1wb3J0IHsgQnViYmxlQWxpZ24sIEJ1YmJsZVZhcmlhbnQsIEF2YXRhclBvc2l0aW9uLCBCdWJibGVBdmF0YXIgfSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi8vQnViYmxlL2NvbW1vbi9idWJibGUtdHlwZXMnO1xuaW1wb3J0IHsgQnViYmxlQWRhcHRlciwgQnViYmxlRm91bmRhdGlvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMtY29tbW9uL0J1YmJsZS9mb3VuZGF0aW9uJztcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4uL0Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uL0xvY2FsZS90cmFuc2xhdGUucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21jLWJ1YmJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1YmJsZUxvYWRpbmdDb21wb25lbnQsIEF2YXRhckNvbXBvbmVudCwgVHJhbnNsYXRlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9idWJibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9idWJibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCdWJibGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgLy8g57uE5Lu25bGe5oCnXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsaWduOiBCdWJibGVBbGlnbiA9ICdsZWZ0JztcbiAgQElucHV0KCkgYXZhdGFyUG9zaXRpb246IEF2YXRhclBvc2l0aW9uID0gJ3NpZGUnO1xuICBASW5wdXQoKSB2YXJpYW50OiBCdWJibGVWYXJpYW50ID0gJ2ZpbGxlZCc7XG4gIEBJbnB1dCgpIGF2YXRhckNvbmZpZz86IEJ1YmJsZUF2YXRhcjtcblxuICAvLyDlhoXlrrnmipXlvbHmqKHmnb/lvJXnlKhcbiAgQENvbnRlbnRDaGlsZCgndG9wJykgdG9wVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnbG9hZGluZ1RwbCcpIGxvYWRpbmdUcGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdkZWZhdWx0VGVtcGxhdGUnKSBkZWZhdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnYm90dG9tJykgYm90dG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm91bmRhdGlvbiA9IG5ldyBCdWJibGVGb3VuZGF0aW9uKHRoaXMuYWRhcHRlcik7XG4gICAgdGhpcy5mb3VuZGF0aW9uLmluaXQoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBhZGFwdGVyKCk6IEJ1YmJsZUFkYXB0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5hZGFwdGVyLFxuICAgICAgZ2V0UHJvcHM6ICgpID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IHRoaXMuY29udGVudCxcbiAgICAgICAgbG9hZGluZzogdGhpcy5sb2FkaW5nLFxuICAgICAgICBhbGlnbjogdGhpcy5hbGlnbixcbiAgICAgICAgYXZhdGFyUG9zaXRpb246IHRoaXMuYXZhdGFyUG9zaXRpb24sXG4gICAgICAgIHZhcmlhbnQ6IHRoaXMudmFyaWFudCxcbiAgICAgICAgYXZhdGFyQ29uZmlnOiB0aGlzLmF2YXRhckNvbmZpZyxcbiAgICAgIH0pLFxuICAgIH1cbiAgfVxuXG4gIC8vIOiuoeeul+WxnuaAp1xuICBnZXQgYnViYmxlQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvdW5kYXRpb24uZ2V0QnViYmxlQ2xhc3NlcygpO1xuICB9O1xuXG4gIGdldCBpc0VtcHR5QXZhdGFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZvdW5kYXRpb24uZ2V0SXNFbXB0eUF2YXRhcih0aGlzLmF2YXRhckNvbmZpZyk7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwibWMtYnViYmxlXCIgW25nQ2xhc3NdPVwiYnViYmxlQ2xhc3Nlc1wiIHJvbGU9XCJncm91cFwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0J1YmJsZS5hcmlhTGFiZWwnIHwgdHJhbnNsYXRlXCI+XG4gIDxkaXZcbiAgICAqbmdJZj1cImF2YXRhckNvbmZpZ1wiXG4gICAgY2xhc3M9XCJtYy1idWJibGUtYXZhdGFyXCIgcm9sZT1cImltZ1wiXG4gICAgW25nQ2xhc3NdPVwieyAnZW1wdHktYXZhdGFyJzogaXNFbXB0eUF2YXRhciB9XCJcbiAgPlxuICAgIDxtYy1hdmF0YXJcbiAgICAgICpuZ0lmPVwiIWlzRW1wdHlBdmF0YXJcIlxuICAgICAgW2ltZ1NyY109XCJhdmF0YXJDb25maWc/LmltZ1NyYyB8fCAnJ1wiXG4gICAgICBbbmFtZV09XCJhdmF0YXJDb25maWc/Lm5hbWUgfHwgJydcIlxuICAgICAgW3dpZHRoXT1cImF2YXRhckNvbmZpZz8ud2lkdGggfHwgMzZcIlxuICAgICAgW2hlaWdodF09XCJhdmF0YXJDb25maWc/LmhlaWdodCB8fCAzNlwiXG4gICAgICBbZ2VuZGVyXT1cImF2YXRhckNvbmZpZz8uZ2VuZGVyIHx8ICcnXCJcbiAgICAvPlxuICAgIDxkaXYgKm5nSWY9XCJpc0VtcHR5QXZhdGFyXCIgICAgY2xhc3M9XCJtYy1idWJibGUtYXZhdGFyLXdyYXBwZXJcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidCdWJibGUuZW1wdHlBdmF0YXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJhdmF0YXJDb25maWc/LndpZHRoIHx8IDM2XCJcbiAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiYXZhdGFyQ29uZmlnPy5oZWlnaHQgfHwgMzZcIj48L2Rpdj5cbiAgICA8c3BhbiAqbmdJZj1cImF2YXRhclBvc2l0aW9uID09PSAndG9wJ1wiIGNsYXNzPVwibWMtYnViYmxlLWF2YXRhci1uYW1lXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQnViYmxlLnVzZXJOYW1lJyB8IHRyYW5zbGF0ZTp7IG5hbWU6IGF2YXRhckNvbmZpZz8uZGlzcGxheU5hbWUgfHwgJycgfSBcIj57e1xuICAgICAgYXZhdGFyQ29uZmlnPy5kaXNwbGF5TmFtZVxuICAgIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWMtYnViYmxlLWNvbnRlbnQtY29udGFpbmVyXCIgYXJpYS1saXZlPVwicG9saXRlXCJcbiAgICBbbmdDbGFzc109XCJ7ICd3aXRoLWF2YXRhcic6IGF2YXRhckNvbmZpZyB9XCJcbiAgPlxuICAgIDwhLS0g6aG26YOo5YaF5a655oqV5b2xIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvcFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9wXVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICBcbiAgICA8IS0tIOWKoOi9veeKtuaAgSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1idXN5PVwidHJ1ZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdUcGxUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TG9hZGluZ1RlbXBsYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVHBsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xvYWRpbmdUcGxdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkaW5nVGVtcGxhdGU+XG4gICAgICAgIDxtYy1idWJibGUtbG9hZGluZz48L21jLWJ1YmJsZS1sb2FkaW5nPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8IS0tIOS4u+imgeWGheWuuSAtLT5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIihkZWZhdWx0VGVtcGxhdGUgfHwgY29udGVudCkgJiYgIWxvYWRpbmdcIlxuICAgICAgY2xhc3M9XCJtYy1idWJibGUtY29udGVudFwiXG4gICAgICBbbmdDbGFzc109XCJbdmFyaWFudF1cIlxuICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlZmF1bHRUZW1wbGF0ZTsgZWxzZSBjb250ZW50VGVtcGxhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlZmF1bHRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGVudFRlbXBsYXRlPlxuICAgICAgICA8c3BhbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidCdWJibGUuY29udGVudCcgfCB0cmFuc2xhdGVcIj57eyBjb250ZW50IH19PC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8IS0tIOW6lemDqOWGheWuueaKleW9sSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib3R0b21UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JvdHRvbV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0J1YmJsZS9idWJibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvQnViYmxlL2J1YmJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBWSxZQUFZLEVBQWUsZUFBZSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHNUQsT0FBTyxFQUFpQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pGLE9BQU8sYUFBYSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBU3pELE1BQU0sT0FBTyxlQUFnQixTQUFRLGFBQStCO0lBa0JsRSxZQUFZO0lBQ1osSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7UUFBZ0IsS0FBSyxFQUFFLENBQUM7UUF0QnhCLE9BQU87UUFDRSxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsVUFBSyxHQUFnQixNQUFNLENBQUM7UUFDNUIsbUJBQWMsR0FBbUIsTUFBTSxDQUFDO1FBQ3hDLFlBQU8sR0FBa0IsUUFBUSxDQUFDO1FBRzNDLFdBQVc7UUFDYSxtQkFBYyxHQUE0QixJQUFJLENBQUM7UUFDbEQsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQ3JDLHVCQUFrQixHQUE0QixJQUFJLENBQUM7UUFDdkQsbUJBQWMsR0FBNEIsSUFBSSxDQUFDO0lBVTlDLENBQUM7SUFFMUIsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYSxPQUFPO1FBQ2xCLE9BQU87WUFDTCxHQUFHLEtBQUssQ0FBQyxPQUFPO1lBQ2hCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7YUFDaEMsQ0FBQztTQUNILENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTztJQUNQLElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQUEsQ0FBQzs4R0FuRFMsZUFBZTtrR0FBZixlQUFlLDZxQkNqQjVCLHcxRkFvRUEsczlDRHZEWSxZQUFZLHdZQUFFLHNCQUFzQiw4REFBRSxlQUFlLHFIQUFFLGFBQWE7OzJGQUluRSxlQUFlO2tCQVAzQixTQUFTOytCQUNFLFdBQVcsY0FDVCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzt3REFNdEUsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHa0IsY0FBYztzQkFBckMsWUFBWTt1QkFBQyxRQUFRO2dCQUNELFdBQVc7c0JBQS9CLFlBQVk7dUJBQUMsS0FBSztnQkFDUyxrQkFBa0I7c0JBQTdDLFlBQVk7dUJBQUMsWUFBWTtnQkFDRixjQUFjO3NCQUFyQyxZQUFZO3VCQUFDLFFBQVE7Z0JBR1MsZUFBZTtzQkFBN0MsZUFBZTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgY29tcHV0ZWQsIENvbnRlbnRDaGlsZCwgVGVtcGxhdGVSZWYsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnViYmxlTG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJy4vYnViYmxlLWxvYWRpbmcvYnViYmxlLWxvYWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9BVkFUQVJfV0lEVEgsIERFRkFVTFRfQVZBVEFSX0hFSUdIVCwgQVZBVEFSX05BTUUsIEFWQVRBUl9JTUcgfSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi9CdWJibGUvY29tbW9uL2J1YmJsZS1jb25zdGFudHMnO1xuaW1wb3J0IHsgQnViYmxlQWxpZ24sIEJ1YmJsZVZhcmlhbnQsIEF2YXRhclBvc2l0aW9uLCBCdWJibGVBdmF0YXIgfSBmcm9tICcuLi9jb21wb25lbnRzLWNvbW1vbi8vQnViYmxlL2NvbW1vbi9idWJibGUtdHlwZXMnO1xuaW1wb3J0IHsgQnViYmxlQWRhcHRlciwgQnViYmxlRm91bmRhdGlvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMtY29tbW9uL0J1YmJsZS9mb3VuZGF0aW9uJztcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4uL0Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uL0xvY2FsZS90cmFuc2xhdGUucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21jLWJ1YmJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1YmJsZUxvYWRpbmdDb21wb25lbnQsIEF2YXRhckNvbXBvbmVudCwgVHJhbnNsYXRlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9idWJibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9idWJibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCdWJibGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50PEJ1YmJsZUZvdW5kYXRpb24+IHtcbiAgLy8g57uE5Lu25bGe5oCnXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsaWduOiBCdWJibGVBbGlnbiA9ICdsZWZ0JztcbiAgQElucHV0KCkgYXZhdGFyUG9zaXRpb246IEF2YXRhclBvc2l0aW9uID0gJ3NpZGUnO1xuICBASW5wdXQoKSB2YXJpYW50OiBCdWJibGVWYXJpYW50ID0gJ2ZpbGxlZCc7XG4gIEBJbnB1dCgpIGF2YXRhckNvbmZpZz86IEJ1YmJsZUF2YXRhcjtcblxuICAvLyDlhoXlrrnmipXlvbHmqKHmnb/lvJXnlKhcbiAgQENvbnRlbnRDaGlsZCgnYXZhdGFyJykgYXZhdGFyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgndG9wJykgdG9wVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgQENvbnRlbnRDaGlsZCgnbG9hZGluZ1RwbCcpIGxvYWRpbmdUcGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBAQ29udGVudENoaWxkKCdib3R0b20nKSBib3R0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBcbiAgLy8g5qOA5rWL5piv5ZCm5pyJ5YaF5a655oqV5b2xXG4gIEBDb250ZW50Q2hpbGRyZW4oJ25nLWNvbnRlbnQnKSBjb250ZW50Q2hpbGRyZW46IFF1ZXJ5TGlzdDxhbnk+O1xuICBcbiAgLy8g6K6h566X5piv5ZCm5pyJ5YaF5a655oqV5b2xXG4gIGdldCBuZ0NvbnRlbnRQcm9qZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudENoaWxkcmVuICYmIHRoaXMuY29udGVudENoaWxkcmVuLmxlbmd0aCA+IDA7XG4gIH1cbiAgXG4gIGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3VuZGF0aW9uID0gbmV3IEJ1YmJsZUZvdW5kYXRpb24odGhpcy5hZGFwdGVyKTtcbiAgICB0aGlzLmZvdW5kYXRpb24uaW5pdCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IGFkYXB0ZXIoKTogQnViYmxlQWRhcHRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLmFkYXB0ZXIsXG4gICAgICBnZXRQcm9wczogKCkgPT4gKHtcbiAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgICBsb2FkaW5nOiB0aGlzLmxvYWRpbmcsXG4gICAgICAgIGFsaWduOiB0aGlzLmFsaWduLFxuICAgICAgICBhdmF0YXJQb3NpdGlvbjogdGhpcy5hdmF0YXJQb3NpdGlvbixcbiAgICAgICAgdmFyaWFudDogdGhpcy52YXJpYW50LFxuICAgICAgICBhdmF0YXJDb25maWc6IHRoaXMuYXZhdGFyQ29uZmlnLFxuICAgICAgfSksXG4gICAgfVxuICB9XG5cbiAgLy8g6K6h566X5bGe5oCnXG4gIGdldCBidWJibGVDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm91bmRhdGlvbi5nZXRCdWJibGVDbGFzc2VzKCk7XG4gIH07XG5cbiAgZ2V0IGlzRW1wdHlBdmF0YXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZm91bmRhdGlvbi5nZXRJc0VtcHR5QXZhdGFyKHRoaXMuYXZhdGFyQ29uZmlnKTtcbiAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJtYy1idWJibGVcIiBbbmdDbGFzc109XCJidWJibGVDbGFzc2VzXCIgcm9sZT1cImdyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQnViYmxlLmFyaWFMYWJlbCcgfCB0cmFuc2xhdGVcIj5cbiAgPCEtLSDoh6rlrprkuYnlpLTlg4/ljLrln58gLS0+XG4gIDxkaXYgKm5nSWY9XCJhdmF0YXJUZW1wbGF0ZVwiIGNsYXNzPVwibWMtYnViYmxlLWF2YXRhclwiIHJvbGU9XCJpbWdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXZhdGFyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYXZhdGFyXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIFxuICA8IS0tIOm7mOiupOWktOWDj+mFjee9riAtLT5cbiAgPGRpdiAqbmdJZj1cIiFhdmF0YXJUZW1wbGF0ZSAmJiBhdmF0YXJDb25maWdcIlxuICAgIGNsYXNzPVwibWMtYnViYmxlLWF2YXRhclwiIHJvbGU9XCJpbWdcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ2VtcHR5LWF2YXRhcic6IGlzRW1wdHlBdmF0YXIgfVwiXG4gID5cbiAgICA8bWMtYXZhdGFyXG4gICAgICAqbmdJZj1cIiFpc0VtcHR5QXZhdGFyXCJcbiAgICAgIFtpbWdTcmNdPVwiYXZhdGFyQ29uZmlnPy5pbWdTcmMgfHwgJydcIlxuICAgICAgW25hbWVdPVwiYXZhdGFyQ29uZmlnPy5uYW1lIHx8ICcnXCJcbiAgICAgIFt3aWR0aF09XCJhdmF0YXJDb25maWc/LndpZHRoIHx8IDM2XCJcbiAgICAgIFtoZWlnaHRdPVwiYXZhdGFyQ29uZmlnPy5oZWlnaHQgfHwgMzZcIlxuICAgICAgW2dlbmRlcl09XCJhdmF0YXJDb25maWc/LmdlbmRlciB8fCAnJ1wiXG4gICAgLz5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNFbXB0eUF2YXRhclwiICAgIGNsYXNzPVwibWMtYnViYmxlLWF2YXRhci13cmFwcGVyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQnViYmxlLmVtcHR5QXZhdGFyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiYXZhdGFyQ29uZmlnPy53aWR0aCB8fCAzNlwiXG4gICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImF2YXRhckNvbmZpZz8uaGVpZ2h0IHx8IDM2XCI+PC9kaXY+XG4gICAgPHNwYW4gKm5nSWY9XCJhdmF0YXJQb3NpdGlvbiA9PT0gJ3RvcCdcIiBjbGFzcz1cIm1jLWJ1YmJsZS1hdmF0YXItbmFtZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0J1YmJsZS51c2VyTmFtZScgfCB0cmFuc2xhdGU6eyBuYW1lOiBhdmF0YXJDb25maWc/LmRpc3BsYXlOYW1lIHx8ICcnIH0gXCI+e3tcbiAgICAgIGF2YXRhckNvbmZpZz8uZGlzcGxheU5hbWVcbiAgICB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1jLWJ1YmJsZS1jb250ZW50LWNvbnRhaW5lclwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgW25nQ2xhc3NdPVwieyAnd2l0aC1hdmF0YXInOiBhdmF0YXJUZW1wbGF0ZSB8fCBhdmF0YXJDb25maWcgfVwiXG4gID5cbiAgICA8IS0tIOmhtumDqOWGheWuueaKleW9sSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b3BUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RvcF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgXG4gICAgPCEtLSDliqDovb3nirbmgIEgLS0+XG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtYnVzeT1cInRydWVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nVHBsVGVtcGxhdGU7IGVsc2UgZGVmYXVsdExvYWRpbmdUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1RwbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsb2FkaW5nVHBsXVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9hZGluZ1RlbXBsYXRlPlxuICAgICAgICA8bWMtYnViYmxlLWxvYWRpbmc+PC9tYy1idWJibGUtbG9hZGluZz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPCEtLSDkuLvopoHlhoXlrrkgLS0+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhbG9hZGluZ1wiXG4gICAgICBjbGFzcz1cIm1jLWJ1YmJsZS1jb250ZW50XCJcbiAgICAgIFtuZ0NsYXNzXT1cIlt2YXJpYW50XVwiXG4gICAgICByb2xlPVwicmVnaW9uXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudCAmJiAhbmdDb250ZW50UHJvamVjdGVkXCI+XG4gICAgICAgIDxzcGFuIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0J1YmJsZS5jb250ZW50JyB8IHRyYW5zbGF0ZVwiPnt7IGNvbnRlbnQgfX08L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8IS0tIOW6lemDqOWGheWuueaKleW9sSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib3R0b21UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JvdHRvbV1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
80
80
  type: HostListener,
81
81
  args: ['mouseup']
82
82
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0lucHV0L2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1RCxPQUFPLEVBQXNCLHFCQUFxQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7QUFRMUcsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBYTtJQWdCbEQsWUFBb0IsYUFBNEI7UUFBSSxLQUFLLEVBQUUsQ0FBQztRQUF4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWZ2QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixtQkFBYyxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBRXBELFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3BDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBSTlDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsY0FBUyxHQUFrQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRVYsQ0FBQztJQUU5RCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBNkIsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBR0QsU0FBUztRQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFpQjtRQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOzhHQW5EWSxlQUFlO2tHQUFmLGVBQWUsMmNDZDlCLDRxSUEyQ0EsZ2lFRGhDWSxZQUFZLHdZQUFFLGlCQUFpQixvREFBRSxhQUFhOzsyRkFHM0MsZUFBZTtrQkFON0IsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsQ0FBQztrRkFJaEQsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUVjLGFBQWE7c0JBQWpDLFNBQVM7dUJBQUMsUUFBUTtnQkFrQm5CLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXO2dCQU16QixTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBIb3N0TGlzdGVuZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNlbmRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VuZC1pY29uL3NlbmQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VuZEJ0blZhcmlhbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzLWNvbW1vbi9JbnB1dC9jb21tb24vdHlwZXMnO1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSAnLi4vLi4vQmFzZS9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vTG9jYWxlJztcbmltcG9ydCB7IElucHV0QnV0dG9uQWRhcHRlciwgSW5wdXRCdXR0b25Gb3VuZGF0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy1jb21tb24vSW5wdXQvYnV0dG9uLWZvdW5kYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYy1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTZW5kSWNvbkNvbXBvbmVudCwgVHJhbnNsYXRlUGlwZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlucHV0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZW5kQnRuVmFyaWFudDogU2VuZEJ0blZhcmlhbnQgPSBTZW5kQnRuVmFyaWFudC5GdWxsO1xuICBcbiAgQE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIFxuICBAVmlld0NoaWxkKCdidXR0b24nKSBidXR0b25FbGVtZW50ITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIFxuICBpc01vdXNlRG93bjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93V2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB3YXZlU3R5bGU6IHsgdG9wOiBzdHJpbmc7IGxlZnQ6IHN0cmluZyB9ID0geyB0b3A6ICcwcHgnLCBsZWZ0OiAnMHB4JyB9O1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlKSB7IHN1cGVyKCk7IH1cbiAgXG4gIGdldCBidXR0b25DbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm91bmRhdGlvbi5nZXRCdXR0b25DbGFzc2VzKCk7XG4gIH1cbiAgXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm91bmRhdGlvbiA9IG5ldyBJbnB1dEJ1dHRvbkZvdW5kYXRpb24odGhpcy5hZGFwdGVyIGFzIElucHV0QnV0dG9uQWRhcHRlcik7XG4gICAgdGhpcy5mb3VuZGF0aW9uLmluaXQoKTtcbiAgfVxuICBcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJylcbiAgb25Nb3VzZURvd24oKTogdm9pZCB7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IHRydWU7XG4gIH1cbiAgXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNldXAnKVxuICBvbk1vdXNlVXAoKTogdm9pZCB7XG4gICAgdGhpcy5pc01vdXNlRG93biA9IGZhbHNlO1xuICB9XG4gIFxuICBzaG93Q2xpY2tXYXZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb3VuZGF0aW9uLnNob3dDbGlja1dhdmUodGhpcy5idXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGV2ZW50KTtcbiAgfVxuICBcbiAgb25Db25maXJtKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q2xpY2tXYXZlKGV2ZW50KTtcbiAgICBcbiAgICBpZiAodGhpcy5sb2FkaW5nKSB7XG4gICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3VibWl0LmVtaXQodGhpcy5pbnB1dFZhbHVlKTtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmlucHV0VmFsdWUpO1xuICAgIH1cbiAgfVxuICBcblxufSIsIjxidXR0b25cbiAgI2J1dHRvblxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKCFsb2FkaW5nICYmICFpbnB1dFZhbHVlKVwiXG4gIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzZXNcIlxuICAoY2xpY2spPVwib25Db25maXJtKCRldmVudClcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImxvYWRpbmcgPyAoJ0lucHV0LnBhdXNlQW5zd2VyJyB8IHRyYW5zbGF0ZSkgOiAoJ0lucHV0LnNlbmQnIHwgdHJhbnNsYXRlKVwiXG4gIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgKCFsb2FkaW5nICYmICFpbnB1dFZhbHVlKVwiXG4gIFthdHRyLmFyaWEtYnVzeV09XCJsb2FkaW5nXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJtYy1idXR0b24tY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9hZGluZ0ljb25cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxtYy1zZW5kLWljb24gKm5nSWY9XCIhbG9hZGluZ1wiPjwvbWMtc2VuZC1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwic2VuZEJ0blZhcmlhbnQgPT09ICdmdWxsJ1wiPlxuICAgICAge3tcbiAgICAgICAgbG9hZGluZyA/IChcIklucHV0LnBhdXNlQW5zd2VyXCIgfCB0cmFuc2xhdGUpIDogKFwiSW5wdXQuc2VuZFwiIHwgdHJhbnNsYXRlKVxuICAgICAgfX1cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwic2hvd1dhdmVcIlxuICAgIGNsYXNzPVwibWMtYnV0dG9uLXdhdGVyLXdhdmVcIlxuICAgIFtzdHlsZS50b3BdPVwid2F2ZVN0eWxlLnRvcFwiXG4gICAgW3N0eWxlLmxlZnRdPVwid2F2ZVN0eWxlLmxlZnRcIlxuICA+PC9kaXY+XG48L2J1dHRvbj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nSWNvbj5cbiAgPHN2Z1xuICAgIHdpZHRoPVwiMTZweFwiXG4gICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gID5cbiAgICA8ZyBzdHJva2U9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIGZpbGw9XCJub25lXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk04LDEyIEM4LjI3NjE0MjM3LDEyIDguNSwxMi4yMjM4NTc2IDguNSwxMi41IEw4LjUsMTQuNSBDOC41LDE0Ljc3NjE0MjQgOC4yNzYxNDIzNywxNSA4LDE1IEM3LjcyMzg1NzYzLDE1IDcuNSwxNC43NzYxNDI0IDcuNSwxNC41IEw3LjUsMTIuNSBDNy41LDEyLjIyMzg1NzYgNy43MjM4NTc2MywxMiA4LDEyIFogTTExLjA0OTU0MjEsMTEuMzQ2NjgzOCBMMTIuMjI1MTEyNiwxMi45NjQ3MTc4IEMxMi4zODc0MjUxLDEzLjE4ODEyMTcgMTIuMzM3OTAwNiwxMy41MDA4MDY1IDEyLjExNDQ5NjgsMTMuNjYzMTE5IEMxMS44OTEwOTI5LDEzLjgyNTQzMTQgMTEuNTc4NDA4MSwxMy43NzU5MDcgMTEuNDE2MDk1NiwxMy41NTI1MDMxIEwxMC4yNDA1MjUxLDExLjkzNDQ2OTEgQzEwLjA3ODIxMjcsMTEuNzExMDY1MiAxMC4xMjc3MzcxLDExLjM5ODM4MDQgMTAuMzUxMTQxLDExLjIzNjA2OCBDMTAuNTc0NTQ0OSwxMS4wNzM3NTU2IDEwLjg4NzIyOTcsMTEuMTIzMjggMTEuMDQ5NTQyMSwxMS4zNDY2ODM4IFogTTUuNjQ4ODU4OTksMTEuMjM2MDY4IEM1Ljg3MjI2Mjg3LDExLjM5ODM4MDQgNS45MjE3ODcyOCwxMS43MTEwNjUyIDUuNzU5NDc0ODYsMTEuOTM0NDY5MSBMNC41ODM5MDQzNiwxMy41NTI1MDMxIEM0LjQyMTU5MTk0LDEzLjc3NTkwNyA0LjEwODkwNzExLDEzLjgyNTQzMTQgMy44ODU1MDMyMywxMy42NjMxMTkgQzMuNjYyMDk5MzYsMTMuNTAwODA2NSAzLjYxMjU3NDk1LDEzLjE4ODEyMTcgMy43NzQ4ODczNiwxMi45NjQ3MTc4IEw0Ljk1MDQ1Nzg3LDExLjM0NjY4MzggQzUuMTEyNzcwMjgsMTEuMTIzMjggNS40MjU0NTUxMiwxMS4wNzM3NTU2IDUuNjQ4ODU4OTksMTEuMjM2MDY4IFogTTEyLjQzNDI2MjgsOC45MTUwNDgyMiBMMTQuMzM2Mzc1OSw5LjUzMzA4MjIxIEMxNC41OTkwMDI5LDkuNjE4NDE0ODkgMTQuNzQyNzI4Myw5LjkwMDQ5MTk2IDE0LjY1NzM5NTYsMTAuMTYzMTE5IEMxNC41NzIwNjI5LDEwLjQyNTc0NiAxNC4yODk5ODU5LDEwLjU2OTQ3MTQgMTQuMDI3MzU4OSwxMC40ODQxMzg3IEwxMi4xMjUyNDU4LDkuODY2MTA0NzMgQzExLjg2MjYxODgsOS43ODA3NzIwNSAxMS43MTg4OTM0LDkuNDk4Njk0OTggMTEuODA0MjI2MSw5LjIzNjA2Nzk4IEMxMS44ODk1NTg4LDguOTczNDQwOTcgMTIuMTcxNjM1OCw4LjgyOTcxNTUzIDEyLjQzNDI2MjgsOC45MTUwNDgyMiBaIE00LjE5NTc3MzkzLDkuMjM2MDY3OTggQzQuMjgxMTA2NjIsOS40OTg2OTQ5OCA0LjEzNzM4MTE4LDkuNzgwNzcyMDUgMy44NzQ3NTQxNyw5Ljg2NjEwNDczIEwxLjk3MjY0MTE0LDEwLjQ4NDEzODcgQzEuNzEwMDE0MTQsMTAuNTY5NDcxNCAxLjQyNzkzNzA3LDEwLjQyNTc0NiAxLjM0MjYwNDM5LDEwLjE2MzExOSBDMS4yNTcyNzE3LDkuOTAwNDkxOTYgMS40MDA5OTcxNCw5LjYxODQxNDg5IDEuNjYzNjI0MTUsOS41MzMwODIyMSBMMy41NjU3MzcxOCw4LjkxNTA0ODIyIEMzLjgyODM2NDE4LDguODI5NzE1NTMgNC4xMTA0NDEyNSw4Ljk3MzQ0MDk3IDQuMTk1NzczOTMsOS4yMzYwNjc5OCBaIE0xNC42NTczOTU2LDUuODM2ODgxMDQgQzE0Ljc0MjcyODMsNi4wOTk1MDgwNCAxNC41OTkwMDI5LDYuMzgxNTg1MTEgMTQuMzM2Mzc1OSw2LjQ2NjkxNzc5IEwxMi40MzQyNjI4LDcuMDg0OTUxNzggQzEyLjE3MTYzNTgsNy4xNzAyODQ0NyAxMS44ODk1NTg4LDcuMDI2NTU5MDMgMTEuODA0MjI2MSw2Ljc2MzkzMjAyIEMxMS43MTg4OTM0LDYuNTAxMzA1MDIgMTEuODYyNjE4OCw2LjIxOTIyNzk1IDEyLjEyNTI0NTgsNi4xMzM4OTUyNyBMMTQuMDI3MzU4OSw1LjUxNTg2MTI4IEMxNC4yODk5ODU5LDUuNDMwNTI4NTkgMTQuNTcyMDYyOSw1LjU3NDI1NDAzIDE0LjY1NzM5NTYsNS44MzY4ODEwNCBaIE0xLjk3MjY0MTE0LDUuNTE1ODYxMjggTDMuODc0NzU0MTcsNi4xMzM4OTUyNyBDNC4xMzczODExOCw2LjIxOTIyNzk1IDQuMjgxMTA2NjIsNi41MDEzMDUwMiA0LjE5NTc3MzkzLDYuNzYzOTMyMDIgQzQuMTEwNDQxMjUsNy4wMjY1NTkwMyAzLjgyODM2NDE4LDcuMTcwMjg0NDcgMy41NjU3MzcxOCw3LjA4NDk1MTc4IEwxLjY2MzYyNDE1LDYuNDY2OTE3NzkgQzEuNDAwOTk3MTQsNi4zODE1ODUxMSAxLjI1NzI3MTcsNi4wOTk1MDgwNCAxLjM0MjYwNDM5LDUuODM2ODgxMDQgQzEuNDI3OTM3MDcsNS41NzQyNTQwMyAxLjcxMDAxNDE0LDUuNDMwNTI4NTkgMS45NzI2NDExNCw1LjUxNTg2MTI4IFogTTEyLjExNDQ5NjgsMi4zMzY4ODEwNCBDMTIuMzM3OTAwNiwyLjQ5OTE5MzQ1IDEyLjM4NzQyNTEsMi44MTE4NzgyOSAxMi4yMjUxMTI2LDMuMDM1MjgyMTYgTDExLjA0OTU0MjEsNC42NTMzMTYxNSBDMTAuODg3MjI5Nyw0Ljg3NjcyMDAzIDEwLjU3NDU0NDksNC45MjYyNDQ0NCAxMC4zNTExNDEsNC43NjM5MzIwMiBDMTAuMTI3NzM3MSw0LjYwMTYxOTYxIDEwLjA3ODIxMjcsNC4yODg5MzQ3NyAxMC4yNDA1MjUxLDQuMDY1NTMwOSBMMTEuNDE2MDk1NiwyLjQ0NzQ5NjkxIEMxMS41Nzg0MDgxLDIuMjI0MDkzMDQgMTEuODkxMDkyOSwyLjE3NDU2ODYyIDEyLjExNDQ5NjgsMi4zMzY4ODEwNCBaIE00LjU4MzkwNDM2LDIuNDQ3NDk2OTEgTDUuNzU5NDc0ODYsNC4wNjU1MzA5IEM1LjkyMTc4NzI4LDQuMjg4OTM0NzcgNS44NzIyNjI4Nyw0LjYwMTYxOTYxIDUuNjQ4ODU4OTksNC43NjM5MzIwMiBDNS40MjU0NTUxMiw0LjkyNjI0NDQ0IDUuMTEyNzcwMjgsNC44NzY3MjAwMyA0Ljk1MDQ1Nzg3LDQuNjUzMzE2MTUgTDMuNzc0ODg3MzYsMy4wMzUyODIxNiBDMy42MTI1NzQ5NSwyLjgxMTg3ODI5IDMuNjYyMDk5MzYsMi40OTkxOTM0NSAzLjg4NTUwMzIzLDIuMzM2ODgxMDQgQzQuMTA4OTA3MTEsMi4xNzQ1Njg2MiA0LjQyMTU5MTk0LDIuMjI0MDkzMDQgNC41ODM5MDQzNiwyLjQ0NzQ5NjkxIFogTTgsMSBDOC4yNzYxNDIzNywxIDguNSwxLjIyMzg1NzYzIDguNSwxLjUgTDguNSwzLjUgQzguNSwzLjc3NjE0MjM3IDguMjc2MTQyMzcsNCA4LDQgQzcuNzIzODU3NjMsNCA3LjUsMy43NzYxNDIzNyA3LjUsMy41IEw3LjUsMS41IEM3LjUsMS4yMjM4NTc2MyA3LjcyMzg1NzYzLDEgOCwxIFpcIlxuICAgICAgPjwvcGF0aD5cbiAgICA8L2c+XG4gIDwvc3ZnPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtbmcvc3JjL0lucHV0L2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1uZy9zcmMvSW5wdXQvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1RCxPQUFPLEVBQXNCLHFCQUFxQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7QUFRMUcsTUFBTSxPQUFPLGVBQWdCLFNBQVEsYUFBb0M7SUFnQnpFLFlBQW9CLGFBQTRCO1FBQUksS0FBSyxFQUFFLENBQUM7UUFBeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFmdkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsbUJBQWMsR0FBbUIsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVwRCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsQyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUk5QyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGNBQVMsR0FBa0MsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUVWLENBQUM7SUFFOUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLE9BQTZCLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUdELFNBQVM7UUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBaUI7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQzs4R0FuRFksZUFBZTtrR0FBZixlQUFlLDJjQ2Q5Qiw0cUlBMkNBLGdpRURoQ1ksWUFBWSx3WUFBRSxpQkFBaUIsb0RBQUUsYUFBYTs7MkZBRzNDLGVBQWU7a0JBTjdCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxhQUFhLENBQUM7a0ZBSWhELFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFFYyxhQUFhO3NCQUFqQyxTQUFTO3VCQUFDLFFBQVE7Z0JBa0JuQixXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVztnQkFNekIsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSG9zdExpc3RlbmVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZW5kSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NlbmQtaWNvbi9zZW5kLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNlbmRCdG5WYXJpYW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy1jb21tb24vSW5wdXQvY29tbW9uL3R5cGVzJztcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gJy4uLy4uL0Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9jYWxlU2VydmljZSwgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL0xvY2FsZSc7XG5pbXBvcnQgeyBJbnB1dEJ1dHRvbkFkYXB0ZXIsIElucHV0QnV0dG9uRm91bmRhdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMtY29tbW9uL0lucHV0L2J1dHRvbi1mb3VuZGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWMtYnV0dG9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2VuZEljb25Db21wb25lbnQsIFRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KWV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50PElucHV0QnV0dG9uRm91bmRhdGlvbj4ge1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlucHV0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZW5kQnRuVmFyaWFudDogU2VuZEJ0blZhcmlhbnQgPSBTZW5kQnRuVmFyaWFudC5GdWxsO1xuICBcbiAgQE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIFxuICBAVmlld0NoaWxkKCdidXR0b24nKSBidXR0b25FbGVtZW50ITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIFxuICBpc01vdXNlRG93bjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93V2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB3YXZlU3R5bGU6IHsgdG9wOiBzdHJpbmc7IGxlZnQ6IHN0cmluZyB9ID0geyB0b3A6ICcwcHgnLCBsZWZ0OiAnMHB4JyB9O1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlKSB7IHN1cGVyKCk7IH1cbiAgXG4gIGdldCBidXR0b25DbGFzc2VzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmZvdW5kYXRpb24uZ2V0QnV0dG9uQ2xhc3NlcygpO1xuICB9XG4gIFxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvdW5kYXRpb24gPSBuZXcgSW5wdXRCdXR0b25Gb3VuZGF0aW9uKHRoaXMuYWRhcHRlciBhcyBJbnB1dEJ1dHRvbkFkYXB0ZXIpO1xuICAgIHRoaXMuZm91bmRhdGlvbi5pbml0KCk7XG4gIH1cbiAgXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicpXG4gIG9uTW91c2VEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb3VzZURvd24gPSB0cnVlO1xuICB9XG4gIFxuICBASG9zdExpc3RlbmVyKCdtb3VzZXVwJylcbiAgb25Nb3VzZVVwKCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgfVxuICBcbiAgc2hvd0NsaWNrV2F2ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZm91bmRhdGlvbi5zaG93Q2xpY2tXYXZlKHRoaXMuYnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LCBldmVudCk7XG4gIH1cbiAgXG4gIG9uQ29uZmlybShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0NsaWNrV2F2ZShldmVudCk7XG4gICAgXG4gICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1Ym1pdC5lbWl0KHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5pbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgXG5cbn0iLCI8YnV0dG9uXG4gICNidXR0b25cbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8ICghbG9hZGluZyAmJiAhaW5wdXRWYWx1ZSlcIlxuICBbbmdDbGFzc109XCJidXR0b25DbGFzc2VzXCJcbiAgKGNsaWNrKT1cIm9uQ29uZmlybSgkZXZlbnQpXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJsb2FkaW5nID8gKCdJbnB1dC5wYXVzZUFuc3dlcicgfCB0cmFuc2xhdGUpIDogKCdJbnB1dC5zZW5kJyB8IHRyYW5zbGF0ZSlcIlxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkIHx8ICghbG9hZGluZyAmJiAhaW5wdXRWYWx1ZSlcIlxuICBbYXR0ci5hcmlhLWJ1c3ldPVwibG9hZGluZ1wiXG4+XG4gIDxzcGFuIGNsYXNzPVwibWMtYnV0dG9uLWNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxvYWRpbmdJY29uXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bWMtc2VuZC1pY29uICpuZ0lmPVwiIWxvYWRpbmdcIj48L21jLXNlbmQtaWNvbj5cbiAgICA8c3BhbiAqbmdJZj1cInNlbmRCdG5WYXJpYW50ID09PSAnZnVsbCdcIj5cbiAgICAgIHt7XG4gICAgICAgIGxvYWRpbmcgPyAoXCJJbnB1dC5wYXVzZUFuc3dlclwiIHwgdHJhbnNsYXRlKSA6IChcIklucHV0LnNlbmRcIiB8IHRyYW5zbGF0ZSlcbiAgICAgIH19XG4gICAgPC9zcGFuPlxuICA8L3NwYW4+XG4gIDxkaXZcbiAgICAqbmdJZj1cInNob3dXYXZlXCJcbiAgICBjbGFzcz1cIm1jLWJ1dHRvbi13YXRlci13YXZlXCJcbiAgICBbc3R5bGUudG9wXT1cIndhdmVTdHlsZS50b3BcIlxuICAgIFtzdHlsZS5sZWZ0XT1cIndhdmVTdHlsZS5sZWZ0XCJcbiAgPjwvZGl2PlxuPC9idXR0b24+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ0ljb24+XG4gIDxzdmdcbiAgICB3aWR0aD1cIjE2cHhcIlxuICAgIGhlaWdodD1cIjE2cHhcIlxuICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgIHZlcnNpb249XCIxLjFcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICA+XG4gICAgPGcgc3Ryb2tlPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjFcIiBmaWxsPVwibm9uZVwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cbiAgICAgIDxwYXRoXG4gICAgICAgIGQ9XCJNOCwxMiBDOC4yNzYxNDIzNywxMiA4LjUsMTIuMjIzODU3NiA4LjUsMTIuNSBMOC41LDE0LjUgQzguNSwxNC43NzYxNDI0IDguMjc2MTQyMzcsMTUgOCwxNSBDNy43MjM4NTc2MywxNSA3LjUsMTQuNzc2MTQyNCA3LjUsMTQuNSBMNy41LDEyLjUgQzcuNSwxMi4yMjM4NTc2IDcuNzIzODU3NjMsMTIgOCwxMiBaIE0xMS4wNDk1NDIxLDExLjM0NjY4MzggTDEyLjIyNTExMjYsMTIuOTY0NzE3OCBDMTIuMzg3NDI1MSwxMy4xODgxMjE3IDEyLjMzNzkwMDYsMTMuNTAwODA2NSAxMi4xMTQ0OTY4LDEzLjY2MzExOSBDMTEuODkxMDkyOSwxMy44MjU0MzE0IDExLjU3ODQwODEsMTMuNzc1OTA3IDExLjQxNjA5NTYsMTMuNTUyNTAzMSBMMTAuMjQwNTI1MSwxMS45MzQ0NjkxIEMxMC4wNzgyMTI3LDExLjcxMTA2NTIgMTAuMTI3NzM3MSwxMS4zOTgzODA0IDEwLjM1MTE0MSwxMS4yMzYwNjggQzEwLjU3NDU0NDksMTEuMDczNzU1NiAxMC44ODcyMjk3LDExLjEyMzI4IDExLjA0OTU0MjEsMTEuMzQ2NjgzOCBaIE01LjY0ODg1ODk5LDExLjIzNjA2OCBDNS44NzIyNjI4NywxMS4zOTgzODA0IDUuOTIxNzg3MjgsMTEuNzExMDY1MiA1Ljc1OTQ3NDg2LDExLjkzNDQ2OTEgTDQuNTgzOTA0MzYsMTMuNTUyNTAzMSBDNC40MjE1OTE5NCwxMy43NzU5MDcgNC4xMDg5MDcxMSwxMy44MjU0MzE0IDMuODg1NTAzMjMsMTMuNjYzMTE5IEMzLjY2MjA5OTM2LDEzLjUwMDgwNjUgMy42MTI1NzQ5NSwxMy4xODgxMjE3IDMuNzc0ODg3MzYsMTIuOTY0NzE3OCBMNC45NTA0NTc4NywxMS4zNDY2ODM4IEM1LjExMjc3MDI4LDExLjEyMzI4IDUuNDI1NDU1MTIsMTEuMDczNzU1NiA1LjY0ODg1ODk5LDExLjIzNjA2OCBaIE0xMi40MzQyNjI4LDguOTE1MDQ4MjIgTDE0LjMzNjM3NTksOS41MzMwODIyMSBDMTQuNTk5MDAyOSw5LjYxODQxNDg5IDE0Ljc0MjcyODMsOS45MDA0OTE5NiAxNC42NTczOTU2LDEwLjE2MzExOSBDMTQuNTcyMDYyOSwxMC40MjU3NDYgMTQuMjg5OTg1OSwxMC41Njk0NzE0IDE0LjAyNzM1ODksMTAuNDg0MTM4NyBMMTIuMTI1MjQ1OCw5Ljg2NjEwNDczIEMxMS44NjI2MTg4LDkuNzgwNzcyMDUgMTEuNzE4ODkzNCw5LjQ5ODY5NDk4IDExLjgwNDIyNjEsOS4yMzYwNjc5OCBDMTEuODg5NTU4OCw4Ljk3MzQ0MDk3IDEyLjE3MTYzNTgsOC44Mjk3MTU1MyAxMi40MzQyNjI4LDguOTE1MDQ4MjIgWiBNNC4xOTU3NzM5Myw5LjIzNjA2Nzk4IEM0LjI4MTEwNjYyLDkuNDk4Njk0OTggNC4xMzczODExOCw5Ljc4MDc3MjA1IDMuODc0NzU0MTcsOS44NjYxMDQ3MyBMMS45NzI2NDExNCwxMC40ODQxMzg3IEMxLjcxMDAxNDE0LDEwLjU2OTQ3MTQgMS40Mjc5MzcwNywxMC40MjU3NDYgMS4zNDI2MDQzOSwxMC4xNjMxMTkgQzEuMjU3MjcxNyw5LjkwMDQ5MTk2IDEuNDAwOTk3MTQsOS42MTg0MTQ4OSAxLjY2MzYyNDE1LDkuNTMzMDgyMjEgTDMuNTY1NzM3MTgsOC45MTUwNDgyMiBDMy44MjgzNjQxOCw4LjgyOTcxNTUzIDQuMTEwNDQxMjUsOC45NzM0NDA5NyA0LjE5NTc3MzkzLDkuMjM2MDY3OTggWiBNMTQuNjU3Mzk1Niw1LjgzNjg4MTA0IEMxNC43NDI3MjgzLDYuMDk5NTA4MDQgMTQuNTk5MDAyOSw2LjM4MTU4NTExIDE0LjMzNjM3NTksNi40NjY5MTc3OSBMMTIuNDM0MjYyOCw3LjA4NDk1MTc4IEMxMi4xNzE2MzU4LDcuMTcwMjg0NDcgMTEuODg5NTU4OCw3LjAyNjU1OTAzIDExLjgwNDIyNjEsNi43NjM5MzIwMiBDMTEuNzE4ODkzNCw2LjUwMTMwNTAyIDExLjg2MjYxODgsNi4yMTkyMjc5NSAxMi4xMjUyNDU4LDYuMTMzODk1MjcgTDE0LjAyNzM1ODksNS41MTU4NjEyOCBDMTQuMjg5OTg1OSw1LjQzMDUyODU5IDE0LjU3MjA2MjksNS41NzQyNTQwMyAxNC42NTczOTU2LDUuODM2ODgxMDQgWiBNMS45NzI2NDExNCw1LjUxNTg2MTI4IEwzLjg3NDc1NDE3LDYuMTMzODk1MjcgQzQuMTM3MzgxMTgsNi4yMTkyMjc5NSA0LjI4MTEwNjYyLDYuNTAxMzA1MDIgNC4xOTU3NzM5Myw2Ljc2MzkzMjAyIEM0LjExMDQ0MTI1LDcuMDI2NTU5MDMgMy44MjgzNjQxOCw3LjE3MDI4NDQ3IDMuNTY1NzM3MTgsNy4wODQ5NTE3OCBMMS42NjM2MjQxNSw2LjQ2NjkxNzc5IEMxLjQwMDk5NzE0LDYuMzgxNTg1MTEgMS4yNTcyNzE3LDYuMDk5NTA4MDQgMS4zNDI2MDQzOSw1LjgzNjg4MTA0IEMxLjQyNzkzNzA3LDUuNTc0MjU0MDMgMS43MTAwMTQxNCw1LjQzMDUyODU5IDEuOTcyNjQxMTQsNS41MTU4NjEyOCBaIE0xMi4xMTQ0OTY4LDIuMzM2ODgxMDQgQzEyLjMzNzkwMDYsMi40OTkxOTM0NSAxMi4zODc0MjUxLDIuODExODc4MjkgMTIuMjI1MTEyNiwzLjAzNTI4MjE2IEwxMS4wNDk1NDIxLDQuNjUzMzE2MTUgQzEwLjg4NzIyOTcsNC44NzY3MjAwMyAxMC41NzQ1NDQ5LDQuOTI2MjQ0NDQgMTAuMzUxMTQxLDQuNzYzOTMyMDIgQzEwLjEyNzczNzEsNC42MDE2MTk2MSAxMC4wNzgyMTI3LDQuMjg4OTM0NzcgMTAuMjQwNTI1MSw0LjA2NTUzMDkgTDExLjQxNjA5NTYsMi40NDc0OTY5MSBDMTEuNTc4NDA4MSwyLjIyNDA5MzA0IDExLjg5MTA5MjksMi4xNzQ1Njg2MiAxMi4xMTQ0OTY4LDIuMzM2ODgxMDQgWiBNNC41ODM5MDQzNiwyLjQ0NzQ5NjkxIEw1Ljc1OTQ3NDg2LDQuMDY1NTMwOSBDNS45MjE3ODcyOCw0LjI4ODkzNDc3IDUuODcyMjYyODcsNC42MDE2MTk2MSA1LjY0ODg1ODk5LDQuNzYzOTMyMDIgQzUuNDI1NDU1MTIsNC45MjYyNDQ0NCA1LjExMjc3MDI4LDQuODc2NzIwMDMgNC45NTA0NTc4Nyw0LjY1MzMxNjE1IEwzLjc3NDg4NzM2LDMuMDM1MjgyMTYgQzMuNjEyNTc0OTUsMi44MTE4NzgyOSAzLjY2MjA5OTM2LDIuNDk5MTkzNDUgMy44ODU1MDMyMywyLjMzNjg4MTA0IEM0LjEwODkwNzExLDIuMTc0NTY4NjIgNC40MjE1OTE5NCwyLjIyNDA5MzA0IDQuNTgzOTA0MzYsMi40NDc0OTY5MSBaIE04LDEgQzguMjc2MTQyMzcsMSA4LjUsMS4yMjM4NTc2MyA4LjUsMS41IEw4LjUsMy41IEM4LjUsMy43NzYxNDIzNyA4LjI3NjE0MjM3LDQgOCw0IEM3LjcyMzg1NzYzLDQgNy41LDMuNzc2MTQyMzcgNy41LDMuNSBMNy41LDEuNSBDNy41LDEuMjIzODU3NjMgNy43MjM4NTc2MywxIDgsMSBaXCJcbiAgICAgID48L3BhdGg+XG4gICAgPC9nPlxuICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=