@acorex/modules 20.0.5 → 20.0.6
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/conversation/index.d.ts +157 -217
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs} +2 -2
- package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs} +9 -9
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs.map → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs → acorex-modules-auth-app-chooser.component-C60idNYx.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs.map → acorex-modules-auth-app-chooser.component-C60idNYx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs → acorex-modules-auth-login.module-siRdi16m.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs.map → acorex-modules-auth-login.module-siRdi16m.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs → acorex-modules-auth-master.layout-BJCAe5Ai.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs.map → acorex-modules-auth-master.layout-BJCAe5Ai.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs → acorex-modules-auth-password.component-6-EEsfc2.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs.map → acorex-modules-auth-password.component-6-EEsfc2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-rE9yrcGW.mjs → acorex-modules-auth-password.component-VhDUmkMc.mjs} +3 -3
- package/fesm2022/acorex-modules-auth-password.component-VhDUmkMc.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs → acorex-modules-auth-routes-BwBn4o81.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs.map → acorex-modules-auth-routes-BwBn4o81.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs.map → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs.map → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1762 -1568
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +9 -9
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +3 -3
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs → acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs} +6 -6
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs.map → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs → acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs} +35 -25
- package/fesm2022/acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs +589 -0
- package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +208 -0
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-security-management.mjs +582 -72
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs → acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs} +2 -2
- package/fesm2022/acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
- package/package.json +5 -1
- package/report-management/README.md +356 -0
- package/report-management/index.d.ts +39 -0
- package/security-management/index.d.ts +162 -2
- package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs +0 -218
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs +0 -41
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs +0 -20
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs +0 -51
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs +0 -21
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs +0 -20
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs.map +0 -1
@@ -0,0 +1,356 @@
|
|
1
|
+
# Report Management
|
2
|
+
|
3
|
+
This library provides comprehensive report management functionality for the ACoreX Platform, featuring a powerful Report Runner that enables users to discover, configure, and execute reports through an intuitive interface.
|
4
|
+
|
5
|
+
## 🎯 **Core Features**
|
6
|
+
|
7
|
+
### **Report Runner System**
|
8
|
+
|
9
|
+
- **Hierarchical Category Navigation**: Tree-based browsing through organized report categories
|
10
|
+
- **Dynamic Parameter Configuration**: Auto-generated forms based on report parameter definitions
|
11
|
+
- **Real-time Search**: Search across reports and categories with instant results
|
12
|
+
- **Responsive Layout**: Adaptive UI for desktop and mobile devices
|
13
|
+
- **State Management**: Persistent navigation and form state using NgRx Signals
|
14
|
+
|
15
|
+
### **Current Capabilities**
|
16
|
+
|
17
|
+
- ✅ Report discovery and browsing
|
18
|
+
- ✅ Category-based organization
|
19
|
+
- ✅ Dynamic parameter forms with widget support
|
20
|
+
- ✅ Parameter validation and form management
|
21
|
+
- ✅ Responsive navigation with breadcrumbs
|
22
|
+
- ✅ Search and filtering functionality
|
23
|
+
- ✅ Integration with platform layout system
|
24
|
+
|
25
|
+
## 📚 **Architecture**
|
26
|
+
|
27
|
+
### **Core Components**
|
28
|
+
|
29
|
+
```typescript
|
30
|
+
// Main Report Runner Components
|
31
|
+
AXPReportRunnerRootViewModel; // State management with NgRx Signals
|
32
|
+
AXMReportRunnerRootPageComponent; // Main navigation and layout
|
33
|
+
AXPReportRunnerParametersView; // Dynamic parameter form builder
|
34
|
+
|
35
|
+
// Data Providers
|
36
|
+
AXMReportDefinitionProvider; // Report definition data access
|
37
|
+
AXMReportCategoryProvider; // Category hierarchy management
|
38
|
+
```
|
39
|
+
|
40
|
+
### **Widget Integration**
|
41
|
+
|
42
|
+
The system leverages the platform's widget catalog for parameter inputs:
|
43
|
+
|
44
|
+
```typescript
|
45
|
+
// Supported Parameter Widgets
|
46
|
+
- TextBox, NumberBox, DateTimeBox
|
47
|
+
- SelectBox (single/multi-select)
|
48
|
+
- ToggleSwitch, CheckBox
|
49
|
+
- DocumentAttachment
|
50
|
+
- LargeTextBox for descriptions
|
51
|
+
- Lookup widgets for entity references
|
52
|
+
```
|
53
|
+
|
54
|
+
## 🚀 **Planned Enhancements**
|
55
|
+
|
56
|
+
### **Phase 1: Core Functionality Completion**
|
57
|
+
|
58
|
+
#### **🔥 High Priority (Essential)**
|
59
|
+
|
60
|
+
**1. Report Results Management**
|
61
|
+
|
62
|
+
```typescript
|
63
|
+
// Missing critical functionality
|
64
|
+
- Report viewer/preview component
|
65
|
+
- Export options (PDF, Excel, CSV, JSON)
|
66
|
+
- Print functionality with formatting options
|
67
|
+
- Email/share report results
|
68
|
+
- Save generated reports for later access
|
69
|
+
```
|
70
|
+
|
71
|
+
**2. Report History & Favorites**
|
72
|
+
|
73
|
+
```typescript
|
74
|
+
// User experience improvements
|
75
|
+
- Recently run reports with quick access
|
76
|
+
- Favorite/bookmark frequently used reports
|
77
|
+
- Quick re-run with previously saved parameters
|
78
|
+
- Personal report library and organization
|
79
|
+
- Usage statistics and recommendations
|
80
|
+
```
|
81
|
+
|
82
|
+
**3. Enhanced Export System**
|
83
|
+
|
84
|
+
```typescript
|
85
|
+
// Professional output options
|
86
|
+
- Multi-format export (PDF, Excel, CSV, Word)
|
87
|
+
- Custom report templates and styling
|
88
|
+
- Batch export capabilities
|
89
|
+
- Automated delivery options
|
90
|
+
- Watermarking and branding
|
91
|
+
```
|
92
|
+
|
93
|
+
### **Phase 2: Advanced Features**
|
94
|
+
|
95
|
+
#### **📊 Scheduled Reports & Automation**
|
96
|
+
|
97
|
+
**4. Report Scheduling**
|
98
|
+
|
99
|
+
```typescript
|
100
|
+
// Automated report generation
|
101
|
+
- Cron-based scheduling (daily, weekly, monthly, custom)
|
102
|
+
- Email delivery automation with distribution lists
|
103
|
+
- Parameter preset management for scheduled runs
|
104
|
+
- Schedule conflict resolution and queue management
|
105
|
+
- Notification system for failed/successful runs
|
106
|
+
```
|
107
|
+
|
108
|
+
**5. Report Templates & Presets**
|
109
|
+
|
110
|
+
```typescript
|
111
|
+
// Parameter management and reusability
|
112
|
+
- Save parameter combinations as named templates
|
113
|
+
- Share parameter presets across teams
|
114
|
+
- Default parameter values per user/role/department
|
115
|
+
- Template versioning and change tracking
|
116
|
+
- Import/export template configurations
|
117
|
+
```
|
118
|
+
|
119
|
+
#### **🎨 Dashboard Integration**
|
120
|
+
|
121
|
+
**6. Dashboard & Visualization**
|
122
|
+
|
123
|
+
```typescript
|
124
|
+
// Interactive reporting experience
|
125
|
+
- Convert reports to dashboard widgets
|
126
|
+
- Embed reports in custom dashboards
|
127
|
+
- Real-time data refresh capabilities
|
128
|
+
- Interactive charts and visualizations
|
129
|
+
- Drill-down functionality from summaries
|
130
|
+
```
|
131
|
+
|
132
|
+
### **Phase 3: Enterprise Features**
|
133
|
+
|
134
|
+
#### **🔐 Security & Governance**
|
135
|
+
|
136
|
+
**7. Advanced Access Control**
|
137
|
+
|
138
|
+
```typescript
|
139
|
+
// Enterprise security features
|
140
|
+
- Role-based report access with fine-grained permissions
|
141
|
+
- Parameter-level security and data masking
|
142
|
+
- Row-level security integration
|
143
|
+
- Audit trail for all report activities
|
144
|
+
- Compliance reporting and data governance
|
145
|
+
```
|
146
|
+
|
147
|
+
**8. Report Analytics & Insights**
|
148
|
+
|
149
|
+
```typescript
|
150
|
+
// Usage and performance analytics
|
151
|
+
- Report execution statistics and performance metrics
|
152
|
+
- User behavior analytics and usage patterns
|
153
|
+
- Popular reports ranking and recommendations
|
154
|
+
- Resource usage monitoring and optimization
|
155
|
+
- Cost analysis for report generation
|
156
|
+
```
|
157
|
+
|
158
|
+
#### **🤝 Collaboration & Workflow**
|
159
|
+
|
160
|
+
**9. Team Collaboration**
|
161
|
+
|
162
|
+
```typescript
|
163
|
+
// Collaborative reporting features
|
164
|
+
- Share reports with specific users/groups/roles
|
165
|
+
- Comments and annotations on reports
|
166
|
+
- Report approval workflows and review processes
|
167
|
+
- Team workspaces with shared report collections
|
168
|
+
- Notification system for shared reports
|
169
|
+
```
|
170
|
+
|
171
|
+
**10. Report Builder/Designer**
|
172
|
+
|
173
|
+
```typescript
|
174
|
+
// Self-service report creation
|
175
|
+
- Visual drag-and-drop report designer
|
176
|
+
- Template gallery with industry-specific templates
|
177
|
+
- Data source configuration and mapping
|
178
|
+
- Preview mode with sample data
|
179
|
+
- Version control for custom reports
|
180
|
+
```
|
181
|
+
|
182
|
+
### **Phase 4: Integration & Advanced Analytics**
|
183
|
+
|
184
|
+
#### **🔌 External Integration**
|
185
|
+
|
186
|
+
**11. API & Integration Platform**
|
187
|
+
|
188
|
+
```typescript
|
189
|
+
// Programmatic access and integration
|
190
|
+
- REST API for external applications
|
191
|
+
- Webhook notifications for report events
|
192
|
+
- Integration with external data sources
|
193
|
+
- Third-party tool connectors (Tableau, Power BI)
|
194
|
+
- Mobile app with offline capabilities
|
195
|
+
```
|
196
|
+
|
197
|
+
**12. Advanced Search & Discovery**
|
198
|
+
|
199
|
+
```typescript
|
200
|
+
// Enhanced content discovery
|
201
|
+
- AI-powered report recommendations
|
202
|
+
- Semantic search with natural language queries
|
203
|
+
- Advanced filtering by metadata, usage, performance
|
204
|
+
- Tag-based organization and discovery
|
205
|
+
- Related reports suggestions
|
206
|
+
```
|
207
|
+
|
208
|
+
## 💡 **Implementation Roadmap**
|
209
|
+
|
210
|
+
### **Quarter 1: Foundation**
|
211
|
+
|
212
|
+
- ✅ Complete Report Results Viewer
|
213
|
+
- ✅ Implement Export System (PDF, Excel)
|
214
|
+
- ✅ Add Report History and Favorites
|
215
|
+
|
216
|
+
### **Quarter 2: User Experience**
|
217
|
+
|
218
|
+
- 🔄 Scheduled Reports and Automation
|
219
|
+
- 🔄 Parameter Templates and Presets
|
220
|
+
- 🔄 Advanced Search and Filtering
|
221
|
+
|
222
|
+
### **Quarter 3: Enterprise Ready**
|
223
|
+
|
224
|
+
- ⏳ Dashboard Integration
|
225
|
+
- ⏳ Access Control and Security
|
226
|
+
- ⏳ Report Analytics
|
227
|
+
|
228
|
+
### **Quarter 4: Advanced Features**
|
229
|
+
|
230
|
+
- ⏳ Collaboration Tools
|
231
|
+
- ⏳ Report Builder/Designer
|
232
|
+
- ⏳ External Integrations
|
233
|
+
|
234
|
+
## 📦 **Usage**
|
235
|
+
|
236
|
+
### **Installation**
|
237
|
+
|
238
|
+
```typescript
|
239
|
+
import { AXMReportManagementModule } from '@acorex/modules/report-management';
|
240
|
+
|
241
|
+
@NgModule({
|
242
|
+
imports: [AXMReportManagementModule],
|
243
|
+
})
|
244
|
+
export class AppModule {}
|
245
|
+
```
|
246
|
+
|
247
|
+
### **Navigation**
|
248
|
+
|
249
|
+
```typescript
|
250
|
+
// Navigate to report runner
|
251
|
+
this.router.navigate(['reports']);
|
252
|
+
|
253
|
+
// Navigate to specific category
|
254
|
+
this.router.navigate(['reports', 'category-id']);
|
255
|
+
|
256
|
+
// Navigate to report with parameters
|
257
|
+
this.router.navigate(['reports', 'category-id'], {
|
258
|
+
queryParams: { report: 'report-id' },
|
259
|
+
});
|
260
|
+
```
|
261
|
+
|
262
|
+
### **Custom Parameter Groups**
|
263
|
+
|
264
|
+
```typescript
|
265
|
+
// Example: Custom WHS incident parameters
|
266
|
+
const whsIncidentParameters: AXPReportParameterGroup = {
|
267
|
+
name: 'incidentDetails',
|
268
|
+
title: 'Incident Details',
|
269
|
+
parameters: [
|
270
|
+
{
|
271
|
+
path: 'incidentType',
|
272
|
+
title: 'Incident Type',
|
273
|
+
widget: {
|
274
|
+
type: AXPWidgetsList.Editors.SelectBox,
|
275
|
+
options: {
|
276
|
+
dataSource: ['Injury', 'Near Miss', 'Property Damage'],
|
277
|
+
},
|
278
|
+
},
|
279
|
+
},
|
280
|
+
// ... more parameters
|
281
|
+
],
|
282
|
+
};
|
283
|
+
```
|
284
|
+
|
285
|
+
## 🛠️ **API Reference**
|
286
|
+
|
287
|
+
### **Public Exports**
|
288
|
+
|
289
|
+
```typescript
|
290
|
+
// Core Module
|
291
|
+
export { AXMReportManagementModule } from './lib/module';
|
292
|
+
|
293
|
+
// ViewModels
|
294
|
+
export { AXPReportRunnerRootViewModel } from './lib/features/report-runner/report-runner.viewmodel';
|
295
|
+
|
296
|
+
// Components
|
297
|
+
export { AXMReportRunnerRootPageComponent } from './lib/features/report-runner/report-runner-root-page/report-runner-root-page.component';
|
298
|
+
|
299
|
+
// Services and Providers
|
300
|
+
export { AXMReportDefinitionProvider, AXMReportCategoryProvider } from './lib/features/report-runner/reports.provider';
|
301
|
+
|
302
|
+
// Types and Interfaces
|
303
|
+
export * from './lib/types';
|
304
|
+
```
|
305
|
+
|
306
|
+
### **Key Interfaces**
|
307
|
+
|
308
|
+
```typescript
|
309
|
+
// Report Definition Structure
|
310
|
+
interface AXPReportDefinition {
|
311
|
+
id: string;
|
312
|
+
title: string;
|
313
|
+
description?: string;
|
314
|
+
categoryIds: string[];
|
315
|
+
parameterGroups: AXPReportParameterGroup[];
|
316
|
+
}
|
317
|
+
|
318
|
+
// Category Structure
|
319
|
+
interface AXPReportCategory {
|
320
|
+
id: string;
|
321
|
+
title: string;
|
322
|
+
description?: string;
|
323
|
+
parentId?: string;
|
324
|
+
hasChild: boolean;
|
325
|
+
hasReport: boolean;
|
326
|
+
}
|
327
|
+
|
328
|
+
// Parameter Group Configuration
|
329
|
+
interface AXPReportParameterGroup {
|
330
|
+
name: string;
|
331
|
+
title: string;
|
332
|
+
description?: string;
|
333
|
+
parameters: AXPReportParameter[];
|
334
|
+
}
|
335
|
+
```
|
336
|
+
|
337
|
+
## 🤝 **Contributing**
|
338
|
+
|
339
|
+
When contributing to this module:
|
340
|
+
|
341
|
+
1. **Follow the established patterns** for parameter groups and widget usage
|
342
|
+
2. **Add comprehensive tests** for new features
|
343
|
+
3. **Update documentation** including this README
|
344
|
+
4. **Consider backward compatibility** when modifying existing APIs
|
345
|
+
5. **Follow the platform's coding standards** and conventions
|
346
|
+
|
347
|
+
## 📋 **Status Legend**
|
348
|
+
|
349
|
+
- ✅ **Completed**: Feature is implemented and available
|
350
|
+
- 🔄 **In Progress**: Currently being developed
|
351
|
+
- ⏳ **Planned**: Scheduled for future development
|
352
|
+
- 💡 **Proposed**: Under consideration for future releases
|
353
|
+
|
354
|
+
---
|
355
|
+
|
356
|
+
> 💡 **Note**: This module is actively developed as part of the ACoreX Platform. For the latest updates and detailed API documentation, please refer to the platform documentation.
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { AXPAppStartUpService } from '@acorex/platform/core';
|
2
|
+
import * as i0 from '@angular/core';
|
3
|
+
import { Injector } from '@angular/core';
|
4
|
+
import * as i1 from '@acorex/platform/domain';
|
5
|
+
|
6
|
+
declare class AXMReportManagementModule {
|
7
|
+
constructor(appInitService: AXPAppStartUpService, injector: Injector);
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXMReportManagementModule, never>;
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<AXMReportManagementModule, never, [typeof i1.AXPDomainModule], never>;
|
10
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<AXMReportManagementModule>;
|
11
|
+
}
|
12
|
+
|
13
|
+
declare const RootConfig: {
|
14
|
+
config: {
|
15
|
+
i18n: string;
|
16
|
+
};
|
17
|
+
module: {
|
18
|
+
route: string;
|
19
|
+
name: string;
|
20
|
+
title: string;
|
21
|
+
icon: string;
|
22
|
+
};
|
23
|
+
entities: {
|
24
|
+
category: {
|
25
|
+
name: string;
|
26
|
+
title: string;
|
27
|
+
titlePlural: string;
|
28
|
+
icon: string;
|
29
|
+
};
|
30
|
+
report: {
|
31
|
+
name: string;
|
32
|
+
title: string;
|
33
|
+
titlePlural: string;
|
34
|
+
icon: string;
|
35
|
+
};
|
36
|
+
};
|
37
|
+
};
|
38
|
+
|
39
|
+
export { AXMReportManagementModule, RootConfig };
|
@@ -1,9 +1,15 @@
|
|
1
1
|
import { AXPEntity } from '@acorex/platform/common';
|
2
2
|
import * as i0 from '@angular/core';
|
3
|
-
import { Injector } from '@angular/core';
|
3
|
+
import { Injector, OnInit } from '@angular/core';
|
4
4
|
import { AXPEntityModel, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
|
5
5
|
import * as i1 from '@acorex/platform/workflow';
|
6
|
+
import { AXPWorkflowService } from '@acorex/platform/workflow';
|
6
7
|
import * as i2 from '@acorex/platform/layout/builder';
|
8
|
+
import { AXPValueWidgetComponent, AXPColumnWidgetComponent, AXPLayoutWidgetComponent, AXPWidgetConfig } from '@acorex/platform/layout/builder';
|
9
|
+
import { AXPPermissionGroupDefinition, AXPPermissionDefinition } from '@acorex/platform/auth';
|
10
|
+
import { AXValueChangedEvent } from '@acorex/cdk/common';
|
11
|
+
import { AXPPopupLayoutBaseComponent } from '@acorex/platform/layout/views';
|
12
|
+
import { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';
|
7
13
|
|
8
14
|
declare const RootConfig: {
|
9
15
|
config: {
|
@@ -163,5 +169,159 @@ declare class AXMSecurityManagementModule {
|
|
163
169
|
static ɵinj: i0.ɵɵInjectorDeclaration<AXMSecurityManagementModule>;
|
164
170
|
}
|
165
171
|
|
166
|
-
|
172
|
+
declare class AXPPermissionsEditorComponent implements OnInit {
|
173
|
+
/** Service for fetching permission groups and definitions */
|
174
|
+
private permissionService;
|
175
|
+
/** Currently selected permission group */
|
176
|
+
protected selectedGroup: i0.WritableSignal<AXPPermissionGroupDefinition | null>;
|
177
|
+
/** All available permission groups */
|
178
|
+
protected groups: i0.WritableSignal<AXPPermissionGroupDefinition[]>;
|
179
|
+
/** Initial permissions to be selected - exposed as signal input */
|
180
|
+
initialPermissions: i0.InputSignal<string[]>;
|
181
|
+
/** Whether the editor is in read-only mode */
|
182
|
+
readOnly: i0.InputSignal<boolean>;
|
183
|
+
/** List of selected permission names */
|
184
|
+
protected selectedPermissions: i0.WritableSignal<string[]>;
|
185
|
+
/** Event emitted when permissions selection changes */
|
186
|
+
permissionsChanged: i0.OutputEmitterRef<string[]>;
|
187
|
+
/** Event emitted when permissions are applied/selected */
|
188
|
+
permissionsSelected: i0.OutputEmitterRef<string[]>;
|
189
|
+
/**
|
190
|
+
* Recursively maps permissions to include selection state and children.
|
191
|
+
*/
|
192
|
+
private mapPermissions;
|
193
|
+
/**
|
194
|
+
* Computed: Returns mapped permissions for the selected group.
|
195
|
+
*/
|
196
|
+
protected items: i0.Signal<any[]>;
|
197
|
+
/**
|
198
|
+
* Computed: Returns groups with badge counts.
|
199
|
+
*/
|
200
|
+
protected groupsWithBadge: i0.Signal<{
|
201
|
+
badge: string;
|
202
|
+
name: string;
|
203
|
+
title: string;
|
204
|
+
description?: string;
|
205
|
+
permissions: AXPPermissionDefinition[];
|
206
|
+
}[]>;
|
207
|
+
/**
|
208
|
+
* Recursively collects all permission names (parents and children) from an array.
|
209
|
+
*/
|
210
|
+
private collectAllPermissionNames;
|
211
|
+
/**
|
212
|
+
* Returns the badge count for a group (all selected permissions, including parents).
|
213
|
+
*/
|
214
|
+
private getBadge;
|
215
|
+
/**
|
216
|
+
* Checks if a permission is selected.
|
217
|
+
*/
|
218
|
+
private isSelected;
|
219
|
+
/**
|
220
|
+
* Recursively collects all descendant permission names for a single item (including itself).
|
221
|
+
*/
|
222
|
+
private collectPermissionNames;
|
223
|
+
/**
|
224
|
+
* Gets the current selected permissions.
|
225
|
+
*/
|
226
|
+
getSelectedPermissions(): string[];
|
227
|
+
/**
|
228
|
+
* Sets the selected permissions.
|
229
|
+
*/
|
230
|
+
setSelectedPermissions(permissions: string[]): void;
|
231
|
+
/**
|
232
|
+
* Applies/selects the current permissions.
|
233
|
+
*/
|
234
|
+
selectPermissions(): void;
|
235
|
+
/**
|
236
|
+
* Initializes the component and loads permission groups.
|
237
|
+
*/
|
238
|
+
ngOnInit(): Promise<void>;
|
239
|
+
/**
|
240
|
+
* Handles group tab/menu item click.
|
241
|
+
*/
|
242
|
+
protected handleMenuItemClick(item: AXPPermissionGroupDefinition): void;
|
243
|
+
/**
|
244
|
+
* Handles permission checkbox toggle (checks/unchecks all children recursively).
|
245
|
+
*/
|
246
|
+
protected onPermissionToggle(item: any, e: AXValueChangedEvent): void;
|
247
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsEditorComponent, never>;
|
248
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsEditorComponent, "axm-permissions-editor", never, { "initialPermissions": { "alias": "initialPermissions"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; }, { "permissionsChanged": "permissionsChanged"; "permissionsSelected": "permissionsSelected"; }, never, never, true, never>;
|
249
|
+
}
|
250
|
+
|
251
|
+
declare class AXPPermissionsEditorPopupComponent extends AXPPopupLayoutBaseComponent {
|
252
|
+
/** Reference to the core permission editor component */
|
253
|
+
permissionEditor: AXPPermissionsEditorComponent;
|
254
|
+
/** Initial permissions to be selected */
|
255
|
+
protected initialPermissions: string[];
|
256
|
+
/**
|
257
|
+
* Initializes the component.
|
258
|
+
*/
|
259
|
+
ngOnInit(): Promise<void>;
|
260
|
+
/**
|
261
|
+
* Returns the primary menu items for the popup layout.
|
262
|
+
*/
|
263
|
+
protected getPrimaryMenuItems(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
|
264
|
+
/**
|
265
|
+
* Handles permission selection changes from the editor component.
|
266
|
+
*/
|
267
|
+
protected onPermissionsChanged(permissions: string[]): void;
|
268
|
+
/**
|
269
|
+
* Handles when permissions are selected from the editor component.
|
270
|
+
*/
|
271
|
+
protected onPermissionsSelected(permissions: string[]): void;
|
272
|
+
/**
|
273
|
+
* Executes popup commands.
|
274
|
+
*/
|
275
|
+
execute(command: AXPExecuteCommand): void | Promise<void>;
|
276
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsEditorPopupComponent, never>;
|
277
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsEditorPopupComponent, "axm-permissions-editor-popup", never, {}, {}, never, never, true, never>;
|
278
|
+
}
|
279
|
+
|
280
|
+
interface PermissionPath {
|
281
|
+
group: AXPPermissionGroupDefinition;
|
282
|
+
path: AXPPermissionDefinition[];
|
283
|
+
displayPath: string;
|
284
|
+
}
|
285
|
+
declare class AXPPermissionsWidgetViewComponent extends AXPValueWidgetComponent<string[]> {
|
286
|
+
private permissionService;
|
287
|
+
private workflowService;
|
288
|
+
protected groups: i0.WritableSignal<AXPPermissionGroupDefinition[]>;
|
289
|
+
private loadGroupsEffect;
|
290
|
+
protected selectedPermissionsByGroup: i0.Signal<Record<string, PermissionPath[]>>;
|
291
|
+
protected isEmpty: i0.Signal<boolean>;
|
292
|
+
protected openPermissionsEditor(): Promise<void>;
|
293
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetViewComponent, never>;
|
294
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
295
|
+
}
|
296
|
+
|
297
|
+
declare class AXPPermissionsWidgetEditComponent extends AXPValueWidgetComponent<string[]> {
|
298
|
+
/**
|
299
|
+
* Handles permissions changes from the editor.
|
300
|
+
*/
|
301
|
+
protected onPermissionsChanged(permissions: string[]): void;
|
302
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetEditComponent, never>;
|
303
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetEditComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
304
|
+
}
|
305
|
+
|
306
|
+
declare class AXPPermissionsWidgetColumnComponent extends AXPColumnWidgetComponent<any> {
|
307
|
+
protected count: i0.Signal<number>;
|
308
|
+
protected workflowService: AXPWorkflowService;
|
309
|
+
openPermissionsEditor(): Promise<void>;
|
310
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetColumnComponent, never>;
|
311
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetColumnComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
|
312
|
+
}
|
313
|
+
|
314
|
+
declare class AXPPermissionsWidgetPrintComponent extends AXPLayoutWidgetComponent {
|
315
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetPrintComponent, never>;
|
316
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetPrintComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
317
|
+
}
|
318
|
+
|
319
|
+
declare class AXPPermissionsWidgetDesignerComponent extends AXPLayoutWidgetComponent {
|
320
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionsWidgetDesignerComponent, never>;
|
321
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AXPPermissionsWidgetDesignerComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
322
|
+
}
|
323
|
+
|
324
|
+
declare const AXPPermissionsWidget: AXPWidgetConfig;
|
325
|
+
|
326
|
+
export { AXMDeviceSessionsService, AXMDeviceSessionsServiceImpl, AXMPermissionsModule, AXMSecurityManagementDeviceSessionsEntityModule, AXMSecurityManagementModule, AXMSecurityManagementRolesEntityService, AXMSecurityManagementRolesEntityServiceImpl, AXMSessionStatusTypes, AXMUsersEntityService, AXMUsersEntityServiceImpl, AXPPermissionsEditorComponent, AXPPermissionsEditorPopupComponent, AXPPermissionsWidget, AXPPermissionsWidgetColumnComponent, AXPPermissionsWidgetDesignerComponent, AXPPermissionsWidgetEditComponent, AXPPermissionsWidgetPrintComponent, AXPPermissionsWidgetViewComponent, AXPSecurityManagementMenuKeys, RootConfig, factory };
|
167
327
|
export type { AXMSecurityManagementDeviceSessionsEntityModel, AXMSecurityManagementRolesEntityModel, AXMSecurityManagementUsersEntityModel };
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-auth-password.component-rE9yrcGW.mjs","sources":["../tmp-esm2022/auth/lib/pages/login/password/password.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, ViewChild, inject } from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { FormsModule } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { AXMAuthenticationTypes, AXM_AUTH_CONFIG_TOKEN } from '../../../auth.config';\nimport { AXPHomePageService } from '@acorex/platform/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@acorex/components/form\";\nimport * as i4 from \"@acorex/components/text-box\";\nimport * as i5 from \"@acorex/components/password-box\";\nimport * as i6 from \"@acorex/components/button\";\nimport * as i7 from \"@acorex/components/label\";\nimport * as i8 from \"@acorex/components/decorators\";\nimport * as i9 from \"@acorex/components/check-box\";\nimport * as i10 from \"@acorex/core/translation\";\nimport * as i11 from \"@acorex/components/loading\";\nconst MODULES = [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXTextBoxModule,\n AXPasswordBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXTranslationModule,\n AXTranslationModule,\n AXLoadingModule,\n RouterModule,\n AXValidationModule,\n];\nexport class AXPLoginPasswordComponent {\n constructor() {\n this.configs = inject(AXM_AUTH_CONFIG_TOKEN);\n this.v1 = '';\n this.v2 = '';\n this.isLoading$ = new BehaviorSubject(false);\n this.submitText = 'signin.submit';\n this.dialogService = inject(AXDialogService);\n this.sessionService = inject(AXPSessionService);\n this.activateRoute = inject(ActivatedRoute);\n this.homePageService = inject(AXPHomePageService);\n this.router = inject(Router);\n this.isKeepLogin = false;\n }\n ngOnInit() {\n this.l2 = 'password';\n switch (this.configs.type) {\n case AXMAuthenticationTypes.EmailPassword:\n this.l1 = 'email';\n break;\n case AXMAuthenticationTypes.MobilePassword:\n this.l1 = 'mobile';\n break;\n case AXMAuthenticationTypes.UsernameEmailPassword:\n this.l1 = 'username-email';\n break;\n case AXMAuthenticationTypes.UsernamePassword:\n default:\n this.l1 = 'username';\n }\n }\n handleForgotOnClick() {\n this.router.navigate(['/auth/forgot']);\n }\n handleRegisterOnClick() {\n this.router.navigate([this.configs.signup?.url || '/auth/register']);\n }\n handleLoginClick() {\n const redirectUrl = this.activateRoute.snapshot.queryParams['redirectUrl'];\n this.form.validate().then(async (form) => {\n if (form.result) {\n this.isLoading$.next(true);\n this.submitText = 'processing';\n this.submitText = 'redirecting';\n try {\n await this.sessionService.signin({\n strategy: 'user-pass',\n username: this.v1,\n password: this.v2,\n });\n await this.sessionService.signInComplete();\n if (this.sessionService.tenant?.id == null) {\n this.router.navigate(['/auth/account/tenant-chooser']);\n }\n else if (this.sessionService.application?.id == null) {\n this.router.navigate(['/auth/account/app-chooser']);\n }\n else if (redirectUrl) {\n this.router.navigate([redirectUrl]);\n }\n else {\n await this.homePageService.navigateTo();\n }\n }\n catch (error) {\n console.log({ error });\n this.submitText = 'signin.submit';\n this.v2 = null;\n this.isLoading$.next(false);\n }\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLoginPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPLoginPasswordComponent, isStandalone: true, selector: \"ng-component\", viewQueries: [{ propertyName: \"form\", first: true, predicate: AXFormComponent, descendants: true }], ngImport: i0, template: \"<ng-container *translate=\\\"let t\\\">\\n <div class=\\\"ax-text-center ax-mb-4\\\">\\n <h1 class=\\\"ax-font-bold ax-text-xl ax-mb-2\\\">\\n {{ t('signin.title', { scope: 'auth' }) | async }}\\n </h1>\\n <p class=\\\"ax-text-base ax-text-neutral-600\\\">\\n {{ t('signin.hint', { scope: 'auth' }) | async }}\\n </p>\\n </div>\\n <div class=\\\"ax-w-80 lg:ax-w-96\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>{{ t(l1, { scope: 'auth' }) | async }}</ax-label>\\n <ax-text-box [name]=\\\"'username'\\\" [autoComplete]=\\\"'username'\\\" [(value)]=\\\"v1\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-text-box>\\n </ax-form-field>\\n <ax-form-field>\\n <ax-label>{{ t(l2, { scope: 'auth' }) | async }}</ax-label>\\n <ax-password-box [name]=\\\"'password'\\\" [autoComplete]=\\\"'current-password'\\\" [(value)]=\\\"v2\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-password-box>\\n </ax-form-field>\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <ax-check-box [(ngModel)]=\\\"isKeepLogin\\\">\\n <ax-label class=\\\"ax-mb-0\\\">{{ t('signin.remember', { scope: 'auth' }) | async }}</ax-label>\\n </ax-check-box>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-sm\\\"\\n [text]=\\\"t('forgot.password', { scope: 'auth' }) | async\\\"\\n look=\\\"blank\\\"\\n (onClick)=\\\"handleForgotOnClick()\\\"\\n >\\n </ax-button>\\n </div>\\n </div>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-mt-6 ax-w-full\\\"\\n [text]=\\\"t(submitText, { scope: 'auth' }) | async\\\"\\n (onClick)=\\\"handleLoginClick()\\\"\\n [disabled]=\\\"isLoading$ | async\\\"\\n [type]=\\\"'submit'\\\"\\n >\\n @if (isLoading$ | async) {\\n <ax-loading></ax-loading>\\n }\\n </ax-button>\\n @if(configs.signin_google ||configs.signin_apple ||configs.signup?.enable){\\n <div class=\\\"ax-heading ax-heading-center !ax-my-8\\\">\\n <span>{{ t('signin.or', { scope: 'auth' }) | async }}</span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\\\">\\n @if(configs.signin_google){\\n <ax-button text=\\\"{{ 'authentication.with-google' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-google fa-lg ax-text-danger-500\\\"></i>\\n </ax-icon>\\n </ax-prefix> </ax-button\\n >} @if(configs.signin_apple){\\n\\n <ax-button text=\\\"{{ 'authentication.with-apple' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-apple fa-xl\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }\\n </div>\\n </ax-form>\\n @if(configs.signup?.enable){\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n (onClick)=\\\"handleRegisterOnClick()\\\"\\n text=\\\"{{ t('register', { scope: 'auth' }) | async }}\\\"\\n [color]=\\\"'default'\\\"\\n >\\n </ax-button>\\n }\\n </div>\\n </ng-container>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i3.AXFormFieldComponent, selector: \"ax-form-field\", inputs: [\"labelMode\"] }, { kind: \"component\", type: i3.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"directive\", type: i3.AXValidationRuleDirective, selector: \"ax-validation-rule\", inputs: [\"rule\", \"options\", \"message\", \"disabled\"] }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i4.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXPasswordBoxModule }, { kind: \"component\", type: i5.AXPasswordBoxComponent, selector: \"ax-password-box\", inputs: [\"readonly\", \"disabled\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"autoComplete\", \"showToggleButton\", \"class\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i6.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i7.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i8.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i8.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i9.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"checked\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i10.AXTranslatorPipe, name: \"translate\" }, { kind: \"directive\", type: i10.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i11.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: AXValidationModule }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLoginPasswordComponent, decorators: [{\n type: Component,\n args: [{ imports: [...MODULES], template: \"<ng-container *translate=\\\"let t\\\">\\n <div class=\\\"ax-text-center ax-mb-4\\\">\\n <h1 class=\\\"ax-font-bold ax-text-xl ax-mb-2\\\">\\n {{ t('signin.title', { scope: 'auth' }) | async }}\\n </h1>\\n <p class=\\\"ax-text-base ax-text-neutral-600\\\">\\n {{ t('signin.hint', { scope: 'auth' }) | async }}\\n </p>\\n </div>\\n <div class=\\\"ax-w-80 lg:ax-w-96\\\">\\n <ax-form>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-6\\\">\\n <ax-form-field>\\n <ax-label>{{ t(l1, { scope: 'auth' }) | async }}</ax-label>\\n <ax-text-box [name]=\\\"'username'\\\" [autoComplete]=\\\"'username'\\\" [(value)]=\\\"v1\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-text-box>\\n </ax-form-field>\\n <ax-form-field>\\n <ax-label>{{ t(l2, { scope: 'auth' }) | async }}</ax-label>\\n <ax-password-box [name]=\\\"'password'\\\" [autoComplete]=\\\"'current-password'\\\" [(value)]=\\\"v2\\\">\\n <ax-validation-rule rule=\\\"required\\\"></ax-validation-rule>\\n </ax-password-box>\\n </ax-form-field>\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <ax-check-box [(ngModel)]=\\\"isKeepLogin\\\">\\n <ax-label class=\\\"ax-mb-0\\\">{{ t('signin.remember', { scope: 'auth' }) | async }}</ax-label>\\n </ax-check-box>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-sm\\\"\\n [text]=\\\"t('forgot.password', { scope: 'auth' }) | async\\\"\\n look=\\\"blank\\\"\\n (onClick)=\\\"handleForgotOnClick()\\\"\\n >\\n </ax-button>\\n </div>\\n </div>\\n <ax-button\\n color=\\\"primary\\\"\\n class=\\\"ax-mt-6 ax-w-full\\\"\\n [text]=\\\"t(submitText, { scope: 'auth' }) | async\\\"\\n (onClick)=\\\"handleLoginClick()\\\"\\n [disabled]=\\\"isLoading$ | async\\\"\\n [type]=\\\"'submit'\\\"\\n >\\n @if (isLoading$ | async) {\\n <ax-loading></ax-loading>\\n }\\n </ax-button>\\n @if(configs.signin_google ||configs.signin_apple ||configs.signup?.enable){\\n <div class=\\\"ax-heading ax-heading-center !ax-my-8\\\">\\n <span>{{ t('signin.or', { scope: 'auth' }) | async }}</span>\\n </div>\\n }\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2 lg:ax-flex-row ax-justify-between ax-mt-6\\\">\\n @if(configs.signin_google){\\n <ax-button text=\\\"{{ 'authentication.with-google' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-google fa-lg ax-text-danger-500\\\"></i>\\n </ax-icon>\\n </ax-prefix> </ax-button\\n >} @if(configs.signin_apple){\\n\\n <ax-button text=\\\"{{ 'authentication.with-apple' | translate | async }}\\\" [color]=\\\"'default'\\\">\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-brands fa-apple fa-xl\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }\\n </div>\\n </ax-form>\\n @if(configs.signup?.enable){\\n <ax-button\\n class=\\\"ax-w-full ax-mt-2\\\"\\n (onClick)=\\\"handleRegisterOnClick()\\\"\\n text=\\\"{{ t('register', { scope: 'auth' }) | async }}\\\"\\n [color]=\\\"'default'\\\"\\n >\\n </ax-button>\\n }\\n </div>\\n </ng-container>\\n\" }]\n }], propDecorators: { form: [{\n type: ViewChild,\n args: [AXFormComponent]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2F1dGgvc3JjL2xpYi9wYWdlcy9sb2dpbi9wYXNzd29yZC9wYXNzd29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXV0aC9zcmMvbGliL3BhZ2VzL2xvZ2luL3Bhc3N3b3JkL3Bhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFp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LElBQUksQ0FBQztvQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBakZVLHlCQUF5QjtrR0FBekIseUJBQXlCLDhHQWdCekIsZUFBZSxnREN6RDVCLDYwR0FzRkEsMkNEakVFLFlBQVksbUZBQ1osV0FBVyw4VkFDWCxZQUFZLGljQUNaLGVBQWUscWJBQ2YsbUJBQW1CLCtaQUNuQixjQUFjLDZYQUNkLGFBQWEsZ0tBQ2IsaUJBQWlCLHNWQUNqQixnQkFBZ0Isd1JBQ2hCLG1CQUFtQixnTEFFbkIsZUFBZSwrS0FDZixZQUFZLDhCQUNaLGtCQUFrQjs7MkZBT1AseUJBQXlCO2tCQUpyQyxTQUFTOzhCQUVDLENBQUMsR0FBRyxPQUFPLENBQUM7OEJBbUJiLElBQUk7c0JBRFgsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ2hlY2tCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY2hlY2stYm94JztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQYXNzd29yZEJveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYXNzd29yZC1ib3gnO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYTUF1dGhDb25maWdzLCBBWE1BdXRoZW50aWNhdGlvblR5cGVzLCBBWE1fQVVUSF9DT05GSUdfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9hdXRoLmNvbmZpZyc7XG5pbXBvcnQgeyBBWFBIb21lUGFnZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5jb25zdCBNT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuICBBWEZvcm1Nb2R1bGUsXG4gIEFYVGV4dEJveE1vZHVsZSxcbiAgQVhQYXNzd29yZEJveE1vZHVsZSxcbiAgQVhCdXR0b25Nb2R1bGUsXG4gIEFYTGFiZWxNb2R1bGUsXG4gIEFYRGVjb3JhdG9yTW9kdWxlLFxuICBBWENoZWNrQm94TW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBBWExvYWRpbmdNb2R1bGUsXG4gIFJvdXRlck1vZHVsZSxcbiAgQVhWYWxpZGF0aW9uTW9kdWxlLFxuXTtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFsuLi5NT0RVTEVTXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTG9naW5QYXNzd29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBjb25maWdzOiBBWE1BdXRoQ29uZmlncyA9IGluamVjdDxBWE1BdXRoQ29uZmlncz4oQVhNX0FVVEhfQ09ORklHX1RPS0VOKTtcbiAgcHJvdGVjdGVkIGwxITogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbDIhOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHYxID0gJyc7XG4gIHByb3RlY3RlZCB2Mjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgc3VibWl0VGV4dCA9ICdzaWduaW4uc3VibWl0JztcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFYRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIGFjdGl2YXRlUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIGhvbWVQYWdlU2VydmljZSA9IGluamVjdChBWFBIb21lUGFnZVNlcnZpY2UpO1xuXG4gIEBWaWV3Q2hpbGQoQVhGb3JtQ29tcG9uZW50KVxuICBwcml2YXRlIGZvcm0hOiBBWEZvcm1Db21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBwcm90ZWN0ZWQgaXNLZWVwTG9naW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmwyID0gJ3Bhc3N3b3JkJztcbiAgICBzd2l0Y2ggKHRoaXMuY29uZmlncy50eXBlKSB7XG4gICAgICBjYXNlIEFYTUF1dGhlbnRpY2F0aW9uVHlwZXMuRW1haWxQYXNzd29yZDpcbiAgICAgICAgdGhpcy5sMSA9ICdlbWFpbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBWE1BdXRoZW50aWNhdGlvblR5cGVzLk1vYmlsZVBhc3N3b3JkOlxuICAgICAgICB0aGlzLmwxID0gJ21vYmlsZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBWE1BdXRoZW50aWNhdGlvblR5cGVzLlVzZXJuYW1lRW1haWxQYXNzd29yZDpcbiAgICAgICAgdGhpcy5sMSA9ICd1c2VybmFtZS1lbWFpbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBWE1BdXRoZW50aWNhdGlvblR5cGVzLlVzZXJuYW1lUGFzc3dvcmQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmwxID0gJ3VzZXJuYW1lJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRm9yZ290T25DbGljaygpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hdXRoL2ZvcmdvdCddKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVSZWdpc3Rlck9uQ2xpY2soKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMuY29uZmlncy5zaWdudXA/LnVybCB8fCAnL2F1dGgvcmVnaXN0ZXInXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlTG9naW5DbGljaygpIHtcbiAgICBjb25zdCByZWRpcmVjdFVybCA9IHRoaXMuYWN0aXZhdGVSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1sncmVkaXJlY3RVcmwnXTtcbiAgICB0aGlzLmZvcm0udmFsaWRhdGUoKS50aGVuKGFzeW5jIChmb3JtKSA9PiB7XG4gICAgICBpZiAoZm9ybS5yZXN1bHQpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc3VibWl0VGV4dCA9ICdwcm9jZXNzaW5nJztcbiAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gJ3JlZGlyZWN0aW5nJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNpZ25pbih7XG4gICAgICAgICAgICBzdHJhdGVneTogJ3VzZXItcGFzcycsXG4gICAgICAgICAgICB1c2VybmFtZTogdGhpcy52MSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiB0aGlzLnYyISxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnNpZ25JbkNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5zZXNzaW9uU2VydmljZS50ZW5hbnQ/LmlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvYWNjb3VudC90ZW5hbnQtY2hvb3NlciddKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vzc2lvblNlcnZpY2UuYXBwbGljYXRpb24/LmlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2F1dGgvYWNjb3VudC9hcHAtY2hvb3NlciddKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlZGlyZWN0VXJsKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVkaXJlY3RVcmxdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5ob21lUGFnZVNlcnZpY2UubmF2aWdhdGVUbygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHsgZXJyb3IgfSk7XG4gICAgICAgICAgdGhpcy5zdWJtaXRUZXh0ID0gJ3NpZ25pbi5zdWJtaXQnO1xuICAgICAgICAgIHRoaXMudjIgPSBudWxsO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtbWItNFwiPlxuICAgIDxoMSBjbGFzcz1cImF4LWZvbnQtYm9sZCBheC10ZXh0LXhsIGF4LW1iLTJcIj5cbiAgICAgIHt7IHQoJ3NpZ25pbi50aXRsZScsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19XG4gICAgPC9oMT5cbiAgICA8cCBjbGFzcz1cImF4LXRleHQtYmFzZSBheC10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICB7eyB0KCdzaWduaW4uaGludCcsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImF4LXctODAgbGc6YXgtdy05NlwiPlxuICAgIDxheC1mb3JtPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTZcIj5cbiAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPGF4LWxhYmVsPnt7IHQobDEsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19PC9heC1sYWJlbD5cbiAgICAgICAgICA8YXgtdGV4dC1ib3ggW25hbWVdPVwiJ3VzZXJuYW1lJ1wiIFthdXRvQ29tcGxldGVdPVwiJ3VzZXJuYW1lJ1wiIFsodmFsdWUpXT1cInYxXCI+XG4gICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgICAgICAgPGF4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPGF4LWxhYmVsPnt7IHQobDIsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jIH19PC9heC1sYWJlbD5cbiAgICAgICAgICA8YXgtcGFzc3dvcmQtYm94IFtuYW1lXT1cIidwYXNzd29yZCdcIiBbYXV0b0NvbXBsZXRlXT1cIidjdXJyZW50LXBhc3N3b3JkJ1wiIFsodmFsdWUpXT1cInYyXCI+XG4gICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHJ1bGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgIDwvYXgtcGFzc3dvcmQtYm94PlxuICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8YXgtY2hlY2stYm94IFsobmdNb2RlbCldPVwiaXNLZWVwTG9naW5cIj5cbiAgICAgICAgICAgIDxheC1sYWJlbCBjbGFzcz1cImF4LW1iLTBcIj57eyB0KCdzaWduaW4ucmVtZW1iZXInLCB7IHNjb3BlOiAnYXV0aCcgfSkgfCBhc3luYyB9fTwvYXgtbGFiZWw+XG4gICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgW3RleHRdPVwidCgnZm9yZ290LnBhc3N3b3JkJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmNcIlxuICAgICAgICAgICAgbG9vaz1cImJsYW5rXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUZvcmdvdE9uQ2xpY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIGNsYXNzPVwiYXgtbXQtNiBheC13LWZ1bGxcIlxuICAgICAgICBbdGV4dF09XCJ0KHN1Ym1pdFRleHQsIHsgc2NvcGU6ICdhdXRoJyB9KSB8IGFzeW5jXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlTG9naW5DbGljaygpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAgIFt0eXBlXT1cIidzdWJtaXQnXCJcbiAgICAgICAgPlxuICAgICAgICBAaWYgKGlzTG9hZGluZyQgfCBhc3luYykge1xuICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgfVxuICAgICAgPC9heC1idXR0b24+XG4gICAgICBAaWYoY29uZmlncy5zaWduaW5fZ29vZ2xlIHx8Y29uZmlncy5zaWduaW5fYXBwbGUgfHxjb25maWdzLnNpZ251cD8uZW5hYmxlKXtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWhlYWRpbmcgYXgtaGVhZGluZy1jZW50ZXIgIWF4LW15LThcIj5cbiAgICAgICAgICA8c3Bhbj57eyB0KCdzaWduaW4ub3InLCB7IHNjb3BlOiAnYXV0aCcgfSkgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMiBsZzpheC1mbGV4LXJvdyBheC1qdXN0aWZ5LWJldHdlZW4gYXgtbXQtNlwiPlxuICAgICAgICBAaWYoY29uZmlncy5zaWduaW5fZ29vZ2xlKXtcbiAgICAgICAgICA8YXgtYnV0dG9uIHRleHQ9XCJ7eyAnYXV0aGVudGljYXRpb24ud2l0aC1nb29nbGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cIiBbY29sb3JdPVwiJ2RlZmF1bHQnXCI+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWJyYW5kcyBmYS1nb29nbGUgZmEtbGcgYXgtdGV4dC1kYW5nZXItNTAwXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LXByZWZpeD4gPC9heC1idXR0b25cbiAgICAgICAgICAgID59IEBpZihjb25maWdzLnNpZ25pbl9hcHBsZSl7XG5cbiAgICAgICAgICAgIDxheC1idXR0b24gdGV4dD1cInt7ICdhdXRoZW50aWNhdGlvbi53aXRoLWFwcGxlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XCIgW2NvbG9yXT1cIidkZWZhdWx0J1wiPlxuICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxheC1pY29uPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1icmFuZHMgZmEtYXBwbGUgZmEteGxcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LWZvcm0+XG4gICAgICBAaWYoY29uZmlncy5zaWdudXA/LmVuYWJsZSl7XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbCBheC1tdC0yXCJcbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVSZWdpc3Rlck9uQ2xpY2soKVwiXG4gICAgICAgICAgdGV4dD1cInt7IHQoJ3JlZ2lzdGVyJywgeyBzY29wZTogJ2F1dGgnIH0pIHwgYXN5bmMgfX1cIlxuICAgICAgICAgIFtjb2xvcl09XCInZGVmYXVsdCdcIlxuICAgICAgICAgID5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuIl19"],"names":["i3","i6","i8","i10","i11"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAM,OAAO,GAAG;AAChB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,eAAe;AACnB,IAAI,mBAAmB;AACvB,IAAI,cAAc;AAClB,IAAI,aAAa;AACjB,IAAI,iBAAiB;AACrB,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AACvB,IAAI,eAAe;AACnB,IAAI,YAAY;AAChB,IAAI,kBAAkB;AACtB,CAAC;AACM,MAAM,yBAAyB,CAAC;AACvC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACpD,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE;AACpB,QAAQ,IAAI,CAAC,EAAE,GAAG,EAAE;AACpB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACpD,QAAQ,IAAI,CAAC,UAAU,GAAG,eAAe;AACzC,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACpD,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACnD,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,EAAE,GAAG,UAAU;AAC5B,QAAQ,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI;AACjC,YAAY,KAAK,sBAAsB,CAAC,aAAa;AACrD,gBAAgB,IAAI,CAAC,EAAE,GAAG,OAAO;AACjC,gBAAgB;AAChB,YAAY,KAAK,sBAAsB,CAAC,cAAc;AACtD,gBAAgB,IAAI,CAAC,EAAE,GAAG,QAAQ;AAClC,gBAAgB;AAChB,YAAY,KAAK,sBAAsB,CAAC,qBAAqB;AAC7D,gBAAgB,IAAI,CAAC,EAAE,GAAG,gBAAgB;AAC1C,gBAAgB;AAChB,YAAY,KAAK,sBAAsB,CAAC,gBAAgB;AACxD,YAAY;AACZ,gBAAgB,IAAI,CAAC,EAAE,GAAG,UAAU;AACpC;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC;AAC9C;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,CAAC;AAC5E;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;AAClF,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK;AAClD,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,gBAAgB,IAAI,CAAC,UAAU,GAAG,YAAY;AAC9C,gBAAgB,IAAI,CAAC,UAAU,GAAG,aAAa;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACrD,wBAAwB,QAAQ,EAAE,WAAW;AAC7C,wBAAwB,QAAQ,EAAE,IAAI,CAAC,EAAE;AACzC,wBAAwB,QAAQ,EAAE,IAAI,CAAC,EAAE;AACzC,qBAAqB,CAAC;AACtB,oBAAoB,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;AAC9D,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE;AAChE,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,8BAA8B,CAAC,CAAC;AAC9E;AACA,yBAAyB,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,IAAI,IAAI,EAAE;AAC1E,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,CAAC;AAC3E;AACA,yBAAyB,IAAI,WAAW,EAAE;AAC1C,wBAAwB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;AAC3D;AACA,yBAAyB;AACzB,wBAAwB,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;AAC/D;AACA;AACA,gBAAgB,OAAO,KAAK,EAAE;AAC9B,oBAAoB,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAC1C,oBAAoB,IAAI,CAAC,UAAU,GAAG,eAAe;AACrD,oBAAoB,IAAI,CAAC,EAAE,GAAG,IAAI;AAClC,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C;AACA;AACA,SAAS,CAAC;AACV;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,60GAA60G,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,yBAAyB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,IAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,IAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEC,EAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAG,CAAC,qBAAqB,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEC,IAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;AACtjO;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;AACnI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,60GAA60G,EAAE;AACr4G,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,IAAI,EAAE,CAAC,eAAe;AACtC,aAAa,CAAC,EAAE,EAAE,CAAC;;;;"}
|