@yelon/bis 17.3.1 → 18.0.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.
- package/LICENSE +21 -21
- package/README.md +1 -1
- package/config/bis.config.d.ts +3 -3
- package/config/index.d.ts +5 -5
- package/config/public_api.d.ts +1 -1
- package/esm2022/bis.mjs +4 -4
- package/esm2022/config/bis.config.mjs +14 -14
- package/esm2022/config/config.mjs +4 -4
- package/esm2022/config/public_api.mjs +1 -1
- package/esm2022/layout/layout-basic.component.mjs +518 -508
- package/esm2022/layout/layout-nav-application.component.mjs +372 -372
- package/esm2022/layout/layout-nav-group.component.mjs +166 -162
- package/esm2022/layout/layout-nav-tile.component.mjs +14 -14
- package/esm2022/layout/layout.mjs +4 -4
- package/esm2022/layout/layout.module.mjs +53 -53
- package/esm2022/layout/public_api.mjs +5 -5
- package/esm2022/public_api.mjs +8 -8
- package/esm2022/src/bis.module.mjs +16 -16
- package/esm2022/src/helper.mjs +44 -44
- package/esm2022/src/provide.mjs +7 -7
- package/esm2022/src/refresh-token.mjs +78 -78
- package/esm2022/src/startup.service.mjs +183 -183
- package/esm2022/src/yunzai-act.guard.mjs +87 -87
- package/esm2022/src/yunzai-analysis-addon.guard.mjs +98 -98
- package/esm2022/src/yunzai-default.interceptor.mjs +62 -62
- package/esm2022/yunzai-widgets/public_api.mjs +6 -6
- package/esm2022/yunzai-widgets/yunzai-clear-storage.component.mjs +46 -46
- package/esm2022/yunzai-widgets/yunzai-fullscreen.component.mjs +46 -46
- package/esm2022/yunzai-widgets/yunzai-i18n.component.mjs +138 -138
- package/esm2022/yunzai-widgets/yunzai-notify.component.mjs +179 -179
- package/esm2022/yunzai-widgets/yunzai-user.component.mjs +119 -119
- package/esm2022/yunzai-widgets/yunzai-widget.module.mjs +61 -61
- package/esm2022/yunzai-widgets/yunzai-widgets.mjs +4 -4
- package/fesm2022/bis.mjs +559 -559
- package/fesm2022/config.mjs +21 -21
- package/fesm2022/layout.mjs +1097 -1083
- package/fesm2022/layout.mjs.map +1 -1
- package/fesm2022/yunzai-widgets.mjs +563 -563
- package/index.d.ts +5 -5
- package/index.less +1 -1
- package/layout/index.d.ts +5 -5
- package/layout/layout-basic.component.d.ts +54 -54
- package/layout/layout-nav-application.component.d.ts +26 -26
- package/layout/layout-nav-group.component.d.ts +14 -14
- package/layout/layout-nav-tile.component.d.ts +5 -5
- package/layout/layout.module.d.ts +18 -18
- package/layout/public_api.d.ts +5 -5
- package/layout/style/index.less +181 -182
- package/package.json +68 -68
- package/public_api.d.ts +8 -8
- package/src/bis.module.d.ts +8 -8
- package/src/helper.d.ts +16 -16
- package/src/provide.d.ts +2 -2
- package/src/refresh-token.d.ts +6 -6
- package/src/startup.service.d.ts +24 -24
- package/src/yunzai-act.guard.d.ts +20 -20
- package/src/yunzai-analysis-addon.guard.d.ts +26 -26
- package/src/yunzai-default.interceptor.d.ts +2 -2
- package/theme-compact.less +3 -3
- package/theme-dark.less +46 -46
- package/theme-default.less +48 -48
- package/theme-variable.less +1 -0
- package/yunzai-widgets/index.d.ts +5 -5
- package/yunzai-widgets/public_api.d.ts +6 -6
- package/yunzai-widgets/yunzai-clear-storage.component.d.ts +8 -8
- package/yunzai-widgets/yunzai-fullscreen.component.d.ts +8 -8
- package/yunzai-widgets/yunzai-i18n.component.d.ts +19 -19
- package/yunzai-widgets/yunzai-notify.component.d.ts +25 -25
- package/yunzai-widgets/yunzai-user.component.d.ts +22 -22
- package/yunzai-widgets/yunzai-widget.module.d.ts +18 -18
|
@@ -1,139 +1,139 @@
|
|
|
1
|
-
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
2
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';
|
|
3
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
4
|
-
import { I18nPipe, SettingsService, YUNZAI_I18N_TOKEN } from '@yelon/theme';
|
|
5
|
-
import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
|
|
6
|
-
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "ng-zorro-antd/menu";
|
|
9
|
-
import * as i2 from "ng-zorro-antd/dropdown";
|
|
10
|
-
import * as i3 from "ng-zorro-antd/icon";
|
|
11
|
-
export class YunzaiHeaderI18nComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.settings = inject(SettingsService);
|
|
14
|
-
this.i18n = inject(YUNZAI_I18N_TOKEN);
|
|
15
|
-
this.doc = inject(DOCUMENT);
|
|
16
|
-
this.langs = [];
|
|
17
|
-
this.destroy$ = new Subject();
|
|
18
|
-
/** Whether to display language text */
|
|
19
|
-
this.showLangText = true;
|
|
20
|
-
}
|
|
21
|
-
get curLangCode() {
|
|
22
|
-
return this.settings.layout.lang;
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.i18n
|
|
26
|
-
.getLangs()
|
|
27
|
-
.pipe(takeUntil(this.destroy$))
|
|
28
|
-
.subscribe(langs => {
|
|
29
|
-
this.langs = langs;
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
change(lang) {
|
|
33
|
-
const spinEl = this.doc.createElement('div');
|
|
34
|
-
spinEl.setAttribute('class', `page-loading ant-spin ant-spin-lg ant-spin-spinning`);
|
|
35
|
-
spinEl.innerHTML = `<span class="ant-spin-dot ant-spin-dot-spin"><i></i><i></i><i></i><i></i></span>`;
|
|
36
|
-
this.doc.body.appendChild(spinEl);
|
|
37
|
-
this.i18n.loadLangData(lang).subscribe(res => {
|
|
38
|
-
this.i18n.use(lang, res);
|
|
39
|
-
this.settings.setLayout('lang', lang);
|
|
40
|
-
setTimeout(() => this.doc.location.reload());
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
ngOnDestroy() {
|
|
44
|
-
this.destroy$.complete();
|
|
45
|
-
}
|
|
46
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
47
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
48
|
-
@if (showLangText) {
|
|
49
|
-
<div nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
|
|
50
|
-
<i nz-icon nzType="global"></i>
|
|
51
|
-
{{ 'lang.nav' | i18n }}
|
|
52
|
-
<i nz-icon nzType="down"></i>
|
|
53
|
-
</div>
|
|
54
|
-
} @else {
|
|
55
|
-
<i nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight" nz-icon nzType="global"></i>
|
|
56
|
-
}
|
|
57
|
-
<nz-dropdown-menu data-event-id="_nav_lang" #langMenu="nzDropdownMenu">
|
|
58
|
-
<ul nz-menu>
|
|
59
|
-
@for (item of langs; track item) {
|
|
60
|
-
<li
|
|
61
|
-
data-event-id="_nav_lang"
|
|
62
|
-
[attr.data-text]="item.text"
|
|
63
|
-
nz-menu-item
|
|
64
|
-
[nzSelected]="item.code === curLangCode"
|
|
65
|
-
(click)="change(item.code)"
|
|
66
|
-
>
|
|
67
|
-
@if (!item.icon) {
|
|
68
|
-
<span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
|
|
69
|
-
} @else {
|
|
70
|
-
<img
|
|
71
|
-
style="margin-right:4px"
|
|
72
|
-
width="50px"
|
|
73
|
-
height="30px"
|
|
74
|
-
[src]="'data:image/png;base64,' + item.icon"
|
|
75
|
-
[alt]="item.abbr"
|
|
76
|
-
class="pr-xs"
|
|
77
|
-
/>
|
|
78
|
-
}
|
|
79
|
-
{{ item.text }}
|
|
80
|
-
</li>
|
|
81
|
-
}
|
|
82
|
-
</ul>
|
|
83
|
-
</nz-dropdown-menu>
|
|
84
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i2.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
85
|
-
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
87
|
-
type: Component,
|
|
88
|
-
args: [{
|
|
89
|
-
selector: `yunzai-header-i18n`,
|
|
90
|
-
template: `
|
|
91
|
-
@if (showLangText) {
|
|
92
|
-
<div nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
|
|
93
|
-
<i nz-icon nzType="global"></i>
|
|
94
|
-
{{ 'lang.nav' | i18n }}
|
|
95
|
-
<i nz-icon nzType="down"></i>
|
|
96
|
-
</div>
|
|
97
|
-
} @else {
|
|
98
|
-
<i nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight" nz-icon nzType="global"></i>
|
|
99
|
-
}
|
|
100
|
-
<nz-dropdown-menu data-event-id="_nav_lang" #langMenu="nzDropdownMenu">
|
|
101
|
-
<ul nz-menu>
|
|
102
|
-
@for (item of langs; track item) {
|
|
103
|
-
<li
|
|
104
|
-
data-event-id="_nav_lang"
|
|
105
|
-
[attr.data-text]="item.text"
|
|
106
|
-
nz-menu-item
|
|
107
|
-
[nzSelected]="item.code === curLangCode"
|
|
108
|
-
(click)="change(item.code)"
|
|
109
|
-
>
|
|
110
|
-
@if (!item.icon) {
|
|
111
|
-
<span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
|
|
112
|
-
} @else {
|
|
113
|
-
<img
|
|
114
|
-
style="margin-right:4px"
|
|
115
|
-
width="50px"
|
|
116
|
-
height="30px"
|
|
117
|
-
[src]="'data:image/png;base64,' + item.icon"
|
|
118
|
-
[alt]="item.abbr"
|
|
119
|
-
class="pr-xs"
|
|
120
|
-
/>
|
|
121
|
-
}
|
|
122
|
-
{{ item.text }}
|
|
123
|
-
</li>
|
|
124
|
-
}
|
|
125
|
-
</ul>
|
|
126
|
-
</nz-dropdown-menu>
|
|
127
|
-
`,
|
|
128
|
-
host: {
|
|
129
|
-
'[class.flex-1]': 'true'
|
|
130
|
-
},
|
|
131
|
-
standalone: true,
|
|
132
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
133
|
-
imports: [NzDropDownModule, NzIconModule, I18nPipe, CommonModule]
|
|
134
|
-
}]
|
|
135
|
-
}], propDecorators: { showLangText: [{
|
|
136
|
-
type: Input,
|
|
137
|
-
args: [{ transform: booleanAttribute }]
|
|
138
|
-
}] } });
|
|
1
|
+
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
2
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';
|
|
3
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
4
|
+
import { I18nPipe, SettingsService, YUNZAI_I18N_TOKEN } from '@yelon/theme';
|
|
5
|
+
import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
|
|
6
|
+
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "ng-zorro-antd/menu";
|
|
9
|
+
import * as i2 from "ng-zorro-antd/dropdown";
|
|
10
|
+
import * as i3 from "ng-zorro-antd/icon";
|
|
11
|
+
export class YunzaiHeaderI18nComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.settings = inject(SettingsService);
|
|
14
|
+
this.i18n = inject(YUNZAI_I18N_TOKEN);
|
|
15
|
+
this.doc = inject(DOCUMENT);
|
|
16
|
+
this.langs = [];
|
|
17
|
+
this.destroy$ = new Subject();
|
|
18
|
+
/** Whether to display language text */
|
|
19
|
+
this.showLangText = true;
|
|
20
|
+
}
|
|
21
|
+
get curLangCode() {
|
|
22
|
+
return this.settings.layout.lang;
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
this.i18n
|
|
26
|
+
.getLangs()
|
|
27
|
+
.pipe(takeUntil(this.destroy$))
|
|
28
|
+
.subscribe(langs => {
|
|
29
|
+
this.langs = langs;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
change(lang) {
|
|
33
|
+
const spinEl = this.doc.createElement('div');
|
|
34
|
+
spinEl.setAttribute('class', `page-loading ant-spin ant-spin-lg ant-spin-spinning`);
|
|
35
|
+
spinEl.innerHTML = `<span class="ant-spin-dot ant-spin-dot-spin"><i></i><i></i><i></i><i></i></span>`;
|
|
36
|
+
this.doc.body.appendChild(spinEl);
|
|
37
|
+
this.i18n.loadLangData(lang).subscribe(res => {
|
|
38
|
+
this.i18n.use(lang, res);
|
|
39
|
+
this.settings.setLayout('lang', lang);
|
|
40
|
+
setTimeout(() => this.doc.location.reload());
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
ngOnDestroy() {
|
|
44
|
+
this.destroy$.complete();
|
|
45
|
+
}
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiHeaderI18nComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: YunzaiHeaderI18nComponent, isStandalone: true, selector: "yunzai-header-i18n", inputs: { showLangText: ["showLangText", "showLangText", booleanAttribute] }, host: { properties: { "class.flex-1": "true" } }, ngImport: i0, template: `
|
|
48
|
+
@if (showLangText) {
|
|
49
|
+
<div nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
|
|
50
|
+
<i nz-icon nzType="global"></i>
|
|
51
|
+
{{ 'lang.nav' | i18n }}
|
|
52
|
+
<i nz-icon nzType="down"></i>
|
|
53
|
+
</div>
|
|
54
|
+
} @else {
|
|
55
|
+
<i nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight" nz-icon nzType="global"></i>
|
|
56
|
+
}
|
|
57
|
+
<nz-dropdown-menu data-event-id="_nav_lang" #langMenu="nzDropdownMenu">
|
|
58
|
+
<ul nz-menu>
|
|
59
|
+
@for (item of langs; track item) {
|
|
60
|
+
<li
|
|
61
|
+
data-event-id="_nav_lang"
|
|
62
|
+
[attr.data-text]="item.text"
|
|
63
|
+
nz-menu-item
|
|
64
|
+
[nzSelected]="item.code === curLangCode"
|
|
65
|
+
(click)="change(item.code)"
|
|
66
|
+
>
|
|
67
|
+
@if (!item.icon) {
|
|
68
|
+
<span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
|
|
69
|
+
} @else {
|
|
70
|
+
<img
|
|
71
|
+
style="margin-right:4px"
|
|
72
|
+
width="50px"
|
|
73
|
+
height="30px"
|
|
74
|
+
[src]="'data:image/png;base64,' + item.icon"
|
|
75
|
+
[alt]="item.abbr"
|
|
76
|
+
class="pr-xs"
|
|
77
|
+
/>
|
|
78
|
+
}
|
|
79
|
+
{{ item.text }}
|
|
80
|
+
</li>
|
|
81
|
+
}
|
|
82
|
+
</ul>
|
|
83
|
+
</nz-dropdown-menu>
|
|
84
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i2.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
85
|
+
}
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiHeaderI18nComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{
|
|
89
|
+
selector: `yunzai-header-i18n`,
|
|
90
|
+
template: `
|
|
91
|
+
@if (showLangText) {
|
|
92
|
+
<div nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
|
|
93
|
+
<i nz-icon nzType="global"></i>
|
|
94
|
+
{{ 'lang.nav' | i18n }}
|
|
95
|
+
<i nz-icon nzType="down"></i>
|
|
96
|
+
</div>
|
|
97
|
+
} @else {
|
|
98
|
+
<i nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight" nz-icon nzType="global"></i>
|
|
99
|
+
}
|
|
100
|
+
<nz-dropdown-menu data-event-id="_nav_lang" #langMenu="nzDropdownMenu">
|
|
101
|
+
<ul nz-menu>
|
|
102
|
+
@for (item of langs; track item) {
|
|
103
|
+
<li
|
|
104
|
+
data-event-id="_nav_lang"
|
|
105
|
+
[attr.data-text]="item.text"
|
|
106
|
+
nz-menu-item
|
|
107
|
+
[nzSelected]="item.code === curLangCode"
|
|
108
|
+
(click)="change(item.code)"
|
|
109
|
+
>
|
|
110
|
+
@if (!item.icon) {
|
|
111
|
+
<span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
|
|
112
|
+
} @else {
|
|
113
|
+
<img
|
|
114
|
+
style="margin-right:4px"
|
|
115
|
+
width="50px"
|
|
116
|
+
height="30px"
|
|
117
|
+
[src]="'data:image/png;base64,' + item.icon"
|
|
118
|
+
[alt]="item.abbr"
|
|
119
|
+
class="pr-xs"
|
|
120
|
+
/>
|
|
121
|
+
}
|
|
122
|
+
{{ item.text }}
|
|
123
|
+
</li>
|
|
124
|
+
}
|
|
125
|
+
</ul>
|
|
126
|
+
</nz-dropdown-menu>
|
|
127
|
+
`,
|
|
128
|
+
host: {
|
|
129
|
+
'[class.flex-1]': 'true'
|
|
130
|
+
},
|
|
131
|
+
standalone: true,
|
|
132
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
133
|
+
imports: [NzDropDownModule, NzIconModule, I18nPipe, CommonModule]
|
|
134
|
+
}]
|
|
135
|
+
}], propDecorators: { showLangText: [{
|
|
136
|
+
type: Input,
|
|
137
|
+
args: [{ transform: booleanAttribute }]
|
|
138
|
+
}] } });
|
|
139
139
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWkxOG4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL3l1bnphaS13aWRnZXRzL3l1bnphaS1pMThuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQXlDLE1BQU0sY0FBYyxDQUFDO0FBRW5ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFpRGxELE1BQU0sT0FBTyx5QkFBeUI7SUEvQ3RDO1FBZ0RtQixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLFNBQUksR0FBRyxNQUFNLENBQXdCLGlCQUFpQixDQUFDLENBQUM7UUFDeEQsUUFBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxVQUFLLEdBQXFCLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQXVCLElBQUksT0FBTyxFQUFhLENBQUM7UUFDaEUsdUNBQXVDO1FBQ0MsaUJBQVksR0FBRyxJQUFJLENBQUM7S0E2QjdEO0lBM0JDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUk7YUFDTixRQUFRLEVBQUU7YUFDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUscURBQXFELENBQUMsQ0FBQztRQUNwRixNQUFNLENBQUMsU0FBUyxHQUFHLGtGQUFrRixDQUFDO1FBQ3RHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzhHQW5DVSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwrR0FPaEIsZ0JBQWdCLCtFQXBEMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ1QsMkRBTVMsZ0JBQWdCLHkyQkFBRSxZQUFZLDZNQUFFLFFBQVEsNENBQUUsWUFBWTs7MkZBRXJELHlCQUF5QjtrQkEvQ3JDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNUO29CQUNELElBQUksRUFBRTt3QkFDSixnQkFBZ0IsRUFBRSxNQUFNO3FCQUN6QjtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDO2lCQUNsRTs4QkFReUMsWUFBWTtzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJMThuUGlwZSwgU2V0dGluZ3NTZXJ2aWNlLCBZVU5aQUlfSTE4Tl9UT0tFTiwgWXVuemFpSHR0cEkxOE5TZXJ2aWNlLCBZdW56YWlJMThOVHlwZSB9IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgTnpEcm9wRG93bk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZHJvcGRvd24nO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBgeXVuemFpLWhlYWRlci1pMThuYCxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHNob3dMYW5nVGV4dCkge1xuICAgICAgPGRpdiBuei1kcm9wZG93biBbbnpEcm9wZG93bk1lbnVdPVwibGFuZ01lbnVcIiBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCI+XG4gICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwiZ2xvYmFsXCI+PC9pPlxuICAgICAgICB7eyAnbGFuZy5uYXYnIHwgaTE4biB9fVxuICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cImRvd25cIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxpIG56LWRyb3Bkb3duIFtuekRyb3Bkb3duTWVudV09XCJsYW5nTWVudVwiIG56UGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIiBuei1pY29uIG56VHlwZT1cImdsb2JhbFwiPjwvaT5cbiAgICB9XG4gICAgPG56LWRyb3Bkb3duLW1lbnUgZGF0YS1ldmVudC1pZD1cIl9uYXZfbGFuZ1wiICNsYW5nTWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gICAgICA8dWwgbnotbWVudT5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBsYW5nczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgZGF0YS1ldmVudC1pZD1cIl9uYXZfbGFuZ1wiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRleHRdPVwiaXRlbS50ZXh0XCJcbiAgICAgICAgICAgIG56LW1lbnUtaXRlbVxuICAgICAgICAgICAgW256U2VsZWN0ZWRdPVwiaXRlbS5jb2RlID09PSBjdXJMYW5nQ29kZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlKGl0ZW0uY29kZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoIWl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICA8c3BhbiByb2xlPVwiaW1nXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLnRleHRcIiBjbGFzcz1cInByLXhzXCI+e3sgaXRlbS5hYmJyIH19PC9zcGFuPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDo0cHhcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBweFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMzBweFwiXG4gICAgICAgICAgICAgICAgW3NyY109XCInZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5hYmJyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInByLXhzXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgPC9uei1kcm9wZG93bi1tZW51PlxuICBgLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5mbGV4LTFdJzogJ3RydWUnXG4gIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTnpEcm9wRG93bk1vZHVsZSwgTnpJY29uTW9kdWxlLCBJMThuUGlwZSwgQ29tbW9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBZdW56YWlIZWFkZXJJMThuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzID0gaW5qZWN0KFNldHRpbmdzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdDxZdW56YWlIdHRwSTE4TlNlcnZpY2U+KFlVTlpBSV9JMThOX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBsYW5nczogWXVuemFpSTE4TlR5cGVbXSA9IFtdO1xuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PE56U2FmZUFueT4gPSBuZXcgU3ViamVjdDxOelNhZmVBbnk+KCk7XG4gIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgbGFuZ3VhZ2UgdGV4dCAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0xhbmdUZXh0ID0gdHJ1ZTtcblxuICBnZXQgY3VyTGFuZ0NvZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5sYXlvdXQubGFuZztcbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmkxOG5cbiAgICAgIC5nZXRMYW5ncygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGxhbmdzID0+IHtcbiAgICAgICAgdGhpcy5sYW5ncyA9IGxhbmdzO1xuICAgICAgfSk7XG4gIH1cblxuICBjaGFuZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3BpbkVsID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3BpbkVsLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCBgcGFnZS1sb2FkaW5nIGFudC1zcGluIGFudC1zcGluLWxnIGFudC1zcGluLXNwaW5uaW5nYCk7XG4gICAgc3BpbkVsLmlubmVySFRNTCA9IGA8c3BhbiBjbGFzcz1cImFudC1zcGluLWRvdCBhbnQtc3Bpbi1kb3Qtc3BpblwiPjxpPjwvaT48aT48L2k+PGk+PC9pPjxpPjwvaT48L3NwYW4+YDtcbiAgICB0aGlzLmRvYy5ib2R5LmFwcGVuZENoaWxkKHNwaW5FbCk7XG5cbiAgICB0aGlzLmkxOG4ubG9hZExhbmdEYXRhKGxhbmcpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy5pMThuLnVzZShsYW5nLCByZXMpO1xuICAgICAgdGhpcy5zZXR0aW5ncy5zZXRMYXlvdXQoJ2xhbmcnLCBsYW5nKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kb2MubG9jYXRpb24ucmVsb2FkKCkpO1xuICAgIH0pO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|