@tuki-io/tuki-widgets 0.0.163 → 0.0.165
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/esm2020/di2mt/shared/services/api.service.mjs +2 -2
- package/esm2020/user-creation/src/app.constants.mjs +8 -6
- package/esm2020/user-creation/src/classes/site.mjs +1 -1
- package/esm2020/user-creation/src/shared/api/api.service.mjs +2 -2
- package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +18 -7
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +3 -3
- package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +68 -22
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +9 -4
- package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +112 -31
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +1 -1
- package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +230 -74
- package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +1 -1
- package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +215 -72
- package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
- package/package.json +1 -1
- package/user-creation/src/app.constants.d.ts +2 -0
- package/user-creation/src/classes/site.d.ts +15 -0
- package/user-creation/src/shared/services/user-creation-api.service.d.ts +6 -2
- package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +18 -8
- package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.d.ts +4 -2
- package/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.d.ts +6 -0
package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs
CHANGED
|
@@ -35,6 +35,77 @@ export class UserCreationWizardService {
|
|
|
35
35
|
this.selectedTemplate = template;
|
|
36
36
|
this.rebuildOverviewUsers();
|
|
37
37
|
}
|
|
38
|
+
resetTemplateDrivenData() {
|
|
39
|
+
this.lineOptions = [];
|
|
40
|
+
this.routePartitionOptions = [];
|
|
41
|
+
this.lineSelections = [];
|
|
42
|
+
this.deviceEntries = [];
|
|
43
|
+
this.deviceRows = [];
|
|
44
|
+
this.rebuildOverviewLines();
|
|
45
|
+
this.rebuildOverviewDevices();
|
|
46
|
+
}
|
|
47
|
+
applyTemplateTokenPayload(payload) {
|
|
48
|
+
const template = this.extractTemplateFromTokenPayload(payload);
|
|
49
|
+
const endUser = template?.endUser || {};
|
|
50
|
+
const linesFromTemplate = Array.isArray(endUser.lines) ? endUser.lines : [];
|
|
51
|
+
const devicesFromTemplate = Array.isArray(endUser.devices) ? endUser.devices : [];
|
|
52
|
+
this.userDetailsForm = {
|
|
53
|
+
userId: this.valueToString(endUser.userid),
|
|
54
|
+
firstName: this.valueToString(endUser.firstName),
|
|
55
|
+
lastName: this.valueToString(endUser.lastName),
|
|
56
|
+
email: this.valueToString(endUser.email)
|
|
57
|
+
};
|
|
58
|
+
const mappedLineOptions = linesFromTemplate
|
|
59
|
+
.map(line => ({
|
|
60
|
+
number: this.valueToString(line?.directoryNumber?.directoryNumber),
|
|
61
|
+
did: this.valueToString(line?.didPatterns?.[0]?.pattern || line?.directoryNumber?.directoryNumber),
|
|
62
|
+
css: this.valueToString(typeof line?.callingSearchSpace === 'string'
|
|
63
|
+
? line.callingSearchSpace
|
|
64
|
+
: line?.callingSearchSpace?.name),
|
|
65
|
+
description: this.valueToString(line?.description)
|
|
66
|
+
}))
|
|
67
|
+
.filter(line => line.number.trim().length > 0);
|
|
68
|
+
if (mappedLineOptions.length) {
|
|
69
|
+
this.lineOptions = this.uniqueByNumber(mappedLineOptions);
|
|
70
|
+
this.lineSelections = this.lineOptions.map(line => ({
|
|
71
|
+
lineNumber: line.number,
|
|
72
|
+
routePartitionName: linesFromTemplate.find(source => (source?.directoryNumber?.directoryNumber || '') === line.number)?.directoryNumber?.routePartitionName || null
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const lineAssociations = devicesFromTemplate.flatMap(device => device.lineAssociations || []);
|
|
77
|
+
const associatedLineOptions = lineAssociations
|
|
78
|
+
.map(association => {
|
|
79
|
+
const number = association?.directoryNumber?.directoryNumber || '';
|
|
80
|
+
return {
|
|
81
|
+
number,
|
|
82
|
+
did: number,
|
|
83
|
+
css: '',
|
|
84
|
+
description: ''
|
|
85
|
+
};
|
|
86
|
+
})
|
|
87
|
+
.filter(line => line.number.trim().length > 0);
|
|
88
|
+
this.lineOptions = this.uniqueByNumber(associatedLineOptions);
|
|
89
|
+
this.lineSelections = this.lineOptions.map(line => ({
|
|
90
|
+
lineNumber: line.number,
|
|
91
|
+
routePartitionName: lineAssociations.find(source => (source?.directoryNumber?.directoryNumber || '') === line.number)?.directoryNumber?.routePartitionName || null
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
const routePartitions = this.lineSelections
|
|
95
|
+
.map(line => line.routePartitionName)
|
|
96
|
+
.filter((value) => !!value && value.trim().length > 0);
|
|
97
|
+
this.routePartitionOptions = this.uniqueStrings(routePartitions);
|
|
98
|
+
this.deviceEntries = devicesFromTemplate.map(device => ({
|
|
99
|
+
deviceType: this.valueToString(device.deviceType),
|
|
100
|
+
protocol: this.valueToString(device.protocol),
|
|
101
|
+
buttonTemplate: this.valueToString(device.buttonTemplate),
|
|
102
|
+
name: this.valueToString(device.name)
|
|
103
|
+
}));
|
|
104
|
+
this.deviceRows = this.deviceEntries.map((_, index) => index + 1);
|
|
105
|
+
this.rebuildOverviewUsers();
|
|
106
|
+
this.rebuildOverviewLines();
|
|
107
|
+
this.rebuildOverviewDevices();
|
|
108
|
+
}
|
|
38
109
|
setSelectedUserCreationType(type) {
|
|
39
110
|
this.selectedUserCreationType = type;
|
|
40
111
|
}
|
|
@@ -79,55 +150,39 @@ export class UserCreationWizardService {
|
|
|
79
150
|
// Placeholder bootstrap until backend APIs are connected.
|
|
80
151
|
loadPlaceholderData() {
|
|
81
152
|
this.siteOptions = ['Site 1', 'Site 2', 'Site 3'];
|
|
82
|
-
this.templateOptions = ['
|
|
153
|
+
this.templateOptions = ['User 8851 Office'];
|
|
83
154
|
this.lineOptions = [
|
|
84
155
|
{
|
|
85
|
-
number: '
|
|
86
|
-
did: '+
|
|
87
|
-
css: '
|
|
88
|
-
description: '
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
number: '1002',
|
|
92
|
-
did: '+1 555 0102',
|
|
93
|
-
css: 'Support-CSS',
|
|
94
|
-
description: 'Backup line'
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
number: '1003',
|
|
98
|
-
did: '+1 555 0103',
|
|
99
|
-
css: 'Lobby-CSS',
|
|
100
|
-
description: 'Lobby phone line'
|
|
156
|
+
number: '557046',
|
|
157
|
+
did: '+13125557046',
|
|
158
|
+
css: 'Atlanta_internal_css',
|
|
159
|
+
description: ''
|
|
101
160
|
}
|
|
102
161
|
];
|
|
103
|
-
this.routePartitionOptions = ['
|
|
162
|
+
this.routePartitionOptions = ['Atlanta_internal_PT', 'Beijing_national_PT'];
|
|
104
163
|
this.deviceRows = [1, 2];
|
|
105
164
|
this.ldapUsers = [
|
|
106
|
-
{ userId: '
|
|
107
|
-
{ userId: '
|
|
165
|
+
{ userId: 'John.Doe', firstName: 'John', lastName: 'Doe', email: 'john.doe@car.west.io' },
|
|
166
|
+
{ userId: 'Jane.Smith', firstName: 'Jane', lastName: 'Smith', email: 'jane.smith@car.west.io' }
|
|
108
167
|
];
|
|
109
168
|
this.lineSelections = [
|
|
110
169
|
{
|
|
111
170
|
lineNumber: this.lineOptions[0]?.number || null,
|
|
112
171
|
routePartitionName: this.routePartitionOptions[0] || null
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
lineNumber: this.lineOptions[1]?.number || null,
|
|
116
|
-
routePartitionName: this.routePartitionOptions[1] || null
|
|
117
172
|
}
|
|
118
173
|
];
|
|
119
174
|
this.deviceEntries = [
|
|
120
175
|
{
|
|
121
|
-
deviceType: 'Cisco
|
|
176
|
+
deviceType: 'Cisco 8851',
|
|
122
177
|
protocol: 'SIP',
|
|
123
|
-
buttonTemplate: 'Standard
|
|
124
|
-
name: '
|
|
178
|
+
buttonTemplate: 'Standard 8851 SIP',
|
|
179
|
+
name: ''
|
|
125
180
|
},
|
|
126
181
|
{
|
|
127
|
-
deviceType: 'Cisco
|
|
182
|
+
deviceType: 'Cisco Unified Client Services Framework',
|
|
128
183
|
protocol: 'SIP',
|
|
129
|
-
buttonTemplate: 'Standard
|
|
130
|
-
name: '
|
|
184
|
+
buttonTemplate: 'Standard Client Services Framework',
|
|
185
|
+
name: ''
|
|
131
186
|
}
|
|
132
187
|
];
|
|
133
188
|
this.selectedTemplate = this.selectedTemplate ?? null;
|
|
@@ -179,6 +234,32 @@ export class UserCreationWizardService {
|
|
|
179
234
|
description: `${device.protocol} / ${device.buttonTemplate}`
|
|
180
235
|
}));
|
|
181
236
|
}
|
|
237
|
+
extractTemplateFromTokenPayload(payload) {
|
|
238
|
+
if (!payload || typeof payload !== 'object') {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
if (Array.isArray(payload)) {
|
|
242
|
+
return payload[0] || null;
|
|
243
|
+
}
|
|
244
|
+
const firstKey = Object.keys(payload)[0];
|
|
245
|
+
return firstKey ? payload[firstKey] : null;
|
|
246
|
+
}
|
|
247
|
+
uniqueByNumber(lines) {
|
|
248
|
+
const seen = new Set();
|
|
249
|
+
return lines.filter(line => {
|
|
250
|
+
if (seen.has(line.number)) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
seen.add(line.number);
|
|
254
|
+
return true;
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
uniqueStrings(items) {
|
|
258
|
+
return Array.from(new Set(items));
|
|
259
|
+
}
|
|
260
|
+
valueToString(value) {
|
|
261
|
+
return typeof value === 'string' ? value : '';
|
|
262
|
+
}
|
|
182
263
|
// TODO: replace placeholders with real API integration.
|
|
183
264
|
loadDataFromApi() {
|
|
184
265
|
// this.api.getWizardBootstrapData().subscribe(...)
|
|
@@ -189,4 +270,4 @@ UserCreationWizardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.
|
|
|
189
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserCreationWizardService, decorators: [{
|
|
190
271
|
type: Injectable
|
|
191
272
|
}], ctorParameters: function () { return []; } });
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jcmVhdGlvbi13aXphcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3NyYy93aWRnZXRzL3VzZXItY3JlYXRpb24td2l6YXJkL3VzZXItY3JlYXRpb24td2l6YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBeUR6RixNQUFNLE9BQU8seUJBQXlCO0lBNEJsQztRQTNCaUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTdDLHFCQUFnQixHQUFhLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLHNCQUFpQixHQUF1QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVoRSxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQixvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFDL0IsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQ3JDLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUF3QixFQUFFLENBQUM7UUFDMUMsb0JBQWUsR0FBb0I7WUFDL0IsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsRUFBRTtZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osS0FBSyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBQ0YsbUJBQWMsR0FB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QyxRQUFRLE1BQU0sTUFBTSxDQUFDLGNBQWMsRUFBRTtTQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsZUFBZTtRQUNYLG1EQUFtRDtJQUN2RCxDQUFDOzt1SEFyTVEseUJBQXlCOzJIQUF6Qix5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFVzZXJDcmVhdGlvbkFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3VzZXItY3JlYXRpb24tYXBpLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGRhcFVzZXJSb3cge1xyXG4gICAgdXNlcklkOiBzdHJpbmc7XHJcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJ2aWV3VXNlclJvdyBleHRlbmRzIExkYXBVc2VyUm93IHtcclxuICAgIHVzZXJUZW1wbGF0ZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJ2aWV3TGluZVJvdyB7XHJcbiAgICBudW1iZXI6IHN0cmluZztcclxuICAgIGRpZDogc3RyaW5nO1xyXG4gICAgcm91dGVQYXJ0aXRpb25OYW1lOiBzdHJpbmc7XHJcbiAgICBjc3M6IHN0cmluZztcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnZpZXdEZXZpY2VSb3cge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgZGV2aWNlVHlwZTogc3RyaW5nO1xyXG4gICAgbGluZXM6IHN0cmluZztcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFVzZXJDcmVhdGlvblR5cGUgPSAnQ1VDTScgfCAnTVQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBVc2VyRGV0YWlsc0Zvcm0ge1xyXG4gICAgdXNlcklkOiBzdHJpbmc7XHJcbiAgICBmaXJzdE5hbWU6IHN0cmluZztcclxuICAgIGxhc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpbmVPcHRpb24ge1xyXG4gICAgbnVtYmVyOiBzdHJpbmc7XHJcbiAgICBkaWQ6IHN0cmluZztcclxuICAgIGNzczogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RlZExpbmVSb3cge1xyXG4gICAgbGluZU51bWJlcjogc3RyaW5nIHwgbnVsbDtcclxuICAgIHJvdXRlUGFydGl0aW9uTmFtZTogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VFbnRyeSB7XHJcbiAgICBkZXZpY2VUeXBlOiBzdHJpbmc7XHJcbiAgICBwcm90b2NvbDogc3RyaW5nO1xyXG4gICAgYnV0dG9uVGVtcGxhdGU6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXNlckNyZWF0aW9uV2l6YXJkU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwaSA9IGluamVjdChVc2VyQ3JlYXRpb25BcGlTZXJ2aWNlKTtcclxuXHJcbiAgICByZWFkb25seSBsZGFwVGFibGVDb2x1bW5zOiBzdHJpbmdbXSA9IFsndXNlcklkJywgJ2ZpcnN0TmFtZScsICdsYXN0TmFtZScsICdlbWFpbCcsICdhZGQnXTtcclxuICAgIHJlYWRvbmx5IHVzZXJDcmVhdGlvblR5cGVzOiBVc2VyQ3JlYXRpb25UeXBlW10gPSBbJ0NVQ00nLCAnTVQnXTtcclxuXHJcbiAgICBzaXRlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcclxuICAgIHRlbXBsYXRlT3B0aW9uczogc3RyaW5nW10gPSBbXTtcclxuICAgIGxpbmVPcHRpb25zOiBMaW5lT3B0aW9uW10gPSBbXTtcclxuICAgIHJvdXRlUGFydGl0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcclxuICAgIGRldmljZVJvd3M6IG51bWJlcltdID0gW107XHJcbiAgICBsZGFwVXNlcnM6IExkYXBVc2VyUm93W10gPSBbXTtcclxuICAgIG92ZXJ2aWV3VXNlcnM6IE92ZXJ2aWV3VXNlclJvd1tdID0gW107XHJcbiAgICBvdmVydmlld0xpbmVzOiBPdmVydmlld0xpbmVSb3dbXSA9IFtdO1xyXG4gICAgb3ZlcnZpZXdEZXZpY2VzOiBPdmVydmlld0RldmljZVJvd1tdID0gW107XHJcbiAgICB1c2VyRGV0YWlsc0Zvcm06IFVzZXJEZXRhaWxzRm9ybSA9IHtcclxuICAgICAgICB1c2VySWQ6ICcnLFxyXG4gICAgICAgIGZpcnN0TmFtZTogJycsXHJcbiAgICAgICAgbGFzdE5hbWU6ICcnLFxyXG4gICAgICAgIGVtYWlsOiAnJ1xyXG4gICAgfTtcclxuICAgIGxpbmVTZWxlY3Rpb25zOiBTZWxlY3RlZExpbmVSb3dbXSA9IFtdO1xyXG4gICAgZGV2aWNlRW50cmllczogRGV2aWNlRW50cnlbXSA9IFtdO1xyXG5cclxuICAgIHNlbGVjdGVkU2l0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBzZWxlY3RlZFRlbXBsYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHNlbGVjdGVkVXNlckNyZWF0aW9uVHlwZTogVXNlckNyZWF0aW9uVHlwZSA9ICdDVUNNJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmxvYWRQbGFjZWhvbGRlckRhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTZWxlY3RlZFNpdGUoc2l0ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaXRlID0gc2l0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTZWxlY3RlZFRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRlbXBsYXRlID0gdGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdVc2VycygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNlbGVjdGVkVXNlckNyZWF0aW9uVHlwZSh0eXBlOiBVc2VyQ3JlYXRpb25UeXBlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVzZXJDcmVhdGlvblR5cGUgPSB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFVzZXJEZXRhaWxzRmllbGQoZmllbGQ6IGtleW9mIFVzZXJEZXRhaWxzRm9ybSwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHNGb3JtID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLnVzZXJEZXRhaWxzRm9ybSxcclxuICAgICAgICAgICAgW2ZpZWxkXTogdmFsdWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3VXNlcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMaW5lU2VsZWN0aW9uKGluZGV4OiBudW1iZXIsIGxpbmVOdW1iZXI6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubGluZVNlbGVjdGlvbnNbaW5kZXhdKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saW5lU2VsZWN0aW9uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMubGluZVNlbGVjdGlvbnNbaW5kZXhdLFxyXG4gICAgICAgICAgICBsaW5lTnVtYmVyXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0xpbmVzKCk7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdEZXZpY2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Um91dGVQYXJ0aXRpb25TZWxlY3Rpb24oaW5kZXg6IG51bWJlciwgcm91dGVQYXJ0aXRpb25OYW1lOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxpbmVTZWxlY3Rpb25zW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGluZVNlbGVjdGlvbnNbaW5kZXhdID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLmxpbmVTZWxlY3Rpb25zW2luZGV4XSxcclxuICAgICAgICAgICAgcm91dGVQYXJ0aXRpb25OYW1lXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0xpbmVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGV2aWNlTmFtZShpbmRleDogbnVtYmVyLCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZGV2aWNlRW50cmllc1tpbmRleF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRldmljZUVudHJpZXNbaW5kZXhdID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLmRldmljZUVudHJpZXNbaW5kZXhdLFxyXG4gICAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0RldmljZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQbGFjZWhvbGRlciBib290c3RyYXAgdW50aWwgYmFja2VuZCBBUElzIGFyZSBjb25uZWN0ZWQuXHJcbiAgICBsb2FkUGxhY2Vob2xkZXJEYXRhKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2l0ZU9wdGlvbnMgPSBbJ1NpdGUgMScsICdTaXRlIDInLCAnU2l0ZSAzJ107XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZU9wdGlvbnMgPSBbJ1RlbXBsYXRlIEEnLCAnVGVtcGxhdGUgQicsICdUZW1wbGF0ZSBDJ107XHJcbiAgICAgICAgdGhpcy5saW5lT3B0aW9ucyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbnVtYmVyOiAnMTAwMScsXHJcbiAgICAgICAgICAgICAgICBkaWQ6ICcrMSA1NTUgMDEwMScsXHJcbiAgICAgICAgICAgICAgICBjc3M6ICdJbnRlcm5hbC1DU1MnLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdQcmltYXJ5IGxpbmUnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG51bWJlcjogJzEwMDInLFxyXG4gICAgICAgICAgICAgICAgZGlkOiAnKzEgNTU1IDAxMDInLFxyXG4gICAgICAgICAgICAgICAgY3NzOiAnU3VwcG9ydC1DU1MnLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdCYWNrdXAgbGluZSdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbnVtYmVyOiAnMTAwMycsXHJcbiAgICAgICAgICAgICAgICBkaWQ6ICcrMSA1NTUgMDEwMycsXHJcbiAgICAgICAgICAgICAgICBjc3M6ICdMb2JieS1DU1MnLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdMb2JieSBwaG9uZSBsaW5lJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnJvdXRlUGFydGl0aW9uT3B0aW9ucyA9IFsnUGFydGl0aW9uIEEnLCAnUGFydGl0aW9uIEInLCAnUGFydGl0aW9uIEMnXTtcclxuICAgICAgICB0aGlzLmRldmljZVJvd3MgPSBbMSwgMl07XHJcbiAgICAgICAgdGhpcy5sZGFwVXNlcnMgPSBbXHJcbiAgICAgICAgICAgIHsgdXNlcklkOiAndXNlcl8wMScsIGZpcnN0TmFtZTogJ0pvaG4nLCBsYXN0TmFtZTogJ0RvZScsIGVtYWlsOiAnam9obi5kb2VAZXhhbXBsZS5jb20nIH0sXHJcbiAgICAgICAgICAgIHsgdXNlcklkOiAndXNlcl8wMicsIGZpcnN0TmFtZTogJ0phbmUnLCBsYXN0TmFtZTogJ1NtaXRoJywgZW1haWw6ICdqYW5lLnNtaXRoQGV4YW1wbGUuY29tJyB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLmxpbmVTZWxlY3Rpb25zID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVPcHRpb25zWzBdPy5udW1iZXIgfHwgbnVsbCxcclxuICAgICAgICAgICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZTogdGhpcy5yb3V0ZVBhcnRpdGlvbk9wdGlvbnNbMF0gfHwgbnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVPcHRpb25zWzFdPy5udW1iZXIgfHwgbnVsbCxcclxuICAgICAgICAgICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZTogdGhpcy5yb3V0ZVBhcnRpdGlvbk9wdGlvbnNbMV0gfHwgbnVsbFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLmRldmljZUVudHJpZXMgPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGRldmljZVR5cGU6ICdDaXNjbyA4ODQ1JyxcclxuICAgICAgICAgICAgICAgIHByb3RvY29sOiAnU0lQJyxcclxuICAgICAgICAgICAgICAgIGJ1dHRvblRlbXBsYXRlOiAnU3RhbmRhcmQgODg0NScsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnU0VQMDAxMTIyMzM0NDU1J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBkZXZpY2VUeXBlOiAnQ2lzY28gSmFiYmVyJyxcclxuICAgICAgICAgICAgICAgIHByb3RvY29sOiAnU0lQJyxcclxuICAgICAgICAgICAgICAgIGJ1dHRvblRlbXBsYXRlOiAnU3RhbmRhcmQgSmFiYmVyJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdDU0ZKRE9FJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgPSB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgPz8gbnVsbDtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld1VzZXJzKCk7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdMaW5lcygpO1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3RGV2aWNlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVidWlsZE92ZXJ2aWV3VXNlcnMoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdXNlclRlbXBsYXRlID0gdGhpcy5zZWxlY3RlZFRlbXBsYXRlIHx8ICcnO1xyXG4gICAgICAgIGNvbnN0IGhhc1VzZXJEYXRhID0gT2JqZWN0LnZhbHVlcyh0aGlzLnVzZXJEZXRhaWxzRm9ybSkuc29tZSh2YWx1ZSA9PiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgdGhpcy5vdmVydmlld1VzZXJzID0gaGFzVXNlckRhdGFcclxuICAgICAgICAgICAgPyBbe1xyXG4gICAgICAgICAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJEZXRhaWxzRm9ybS51c2VySWQsXHJcbiAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHRoaXMudXNlckRldGFpbHNGb3JtLmZpcnN0TmFtZSxcclxuICAgICAgICAgICAgICAgIGxhc3ROYW1lOiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5sYXN0TmFtZSxcclxuICAgICAgICAgICAgICAgIGVtYWlsOiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5lbWFpbCxcclxuICAgICAgICAgICAgICAgIHVzZXJUZW1wbGF0ZVxyXG4gICAgICAgICAgICB9XVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVidWlsZE92ZXJ2aWV3TGluZXMoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vdmVydmlld0xpbmVzID0gdGhpcy5saW5lU2VsZWN0aW9uc1xyXG4gICAgICAgICAgICAubWFwKHNlbGVjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGlvbj8ubGluZU51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRMaW5lID0gdGhpcy5saW5lT3B0aW9ucy5maW5kKGxpbmUgPT4gbGluZS5udW1iZXIgPT09IHNlbGVjdGlvbi5saW5lTnVtYmVyKTtcclxuICAgICAgICAgICAgICAgIGlmICghc2VsZWN0ZWRMaW5lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlcjogc2VsZWN0ZWRMaW5lLm51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICBkaWQ6IHNlbGVjdGVkTGluZS5kaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiBzZWxlY3Rpb24ucm91dGVQYXJ0aXRpb25OYW1lIHx8IHRoaXMucm91dGVQYXJ0aXRpb25PcHRpb25zWzBdIHx8ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNzczogc2VsZWN0ZWRMaW5lLmNzcyxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VsZWN0ZWRMaW5lLmRlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuZmlsdGVyKChsaW5lKTogbGluZSBpcyBPdmVydmlld0xpbmVSb3cgPT4gISFsaW5lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlYnVpbGRPdmVydmlld0RldmljZXMoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRMaW5lTnVtYmVycyA9IHRoaXMub3ZlcnZpZXdMaW5lcy5tYXAobGluZSA9PiBsaW5lLm51bWJlcikuam9pbignLCAnKTtcclxuICAgICAgICB0aGlzLm92ZXJ2aWV3RGV2aWNlcyA9IHRoaXMuZGV2aWNlRW50cmllc1xyXG4gICAgICAgICAgICAuZmlsdGVyKGRldmljZSA9PiBkZXZpY2UubmFtZS50cmltKCkubGVuZ3RoID4gMCB8fCBkZXZpY2UuZGV2aWNlVHlwZS50cmltKCkubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgLm1hcChkZXZpY2UgPT4gKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IGRldmljZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgZGV2aWNlVHlwZTogZGV2aWNlLmRldmljZVR5cGUsXHJcbiAgICAgICAgICAgICAgICBsaW5lczogc2VsZWN0ZWRMaW5lTnVtYmVycyxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtkZXZpY2UucHJvdG9jb2x9IC8gJHtkZXZpY2UuYnV0dG9uVGVtcGxhdGV9YFxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVE9ETzogcmVwbGFjZSBwbGFjZWhvbGRlcnMgd2l0aCByZWFsIEFQSSBpbnRlZ3JhdGlvbi5cclxuICAgIGxvYWREYXRhRnJvbUFwaSgpOiB2b2lkIHtcclxuICAgICAgICAvLyB0aGlzLmFwaS5nZXRXaXphcmRCb290c3RyYXBEYXRhKCkuc3Vic2NyaWJlKC4uLilcclxuICAgIH1cclxufSJdfQ==
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jcmVhdGlvbi13aXphcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWNyZWF0aW9uL3NyYy93aWRnZXRzL3VzZXItY3JlYXRpb24td2l6YXJkL3VzZXItY3JlYXRpb24td2l6YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7O0FBeUZ6RixNQUFNLE9BQU8seUJBQXlCO0lBNEJsQztRQTNCaUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRTdDLHFCQUFnQixHQUFhLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLHNCQUFpQixHQUF1QixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVoRSxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQixvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFDL0IsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQ3JDLGVBQVUsR0FBYSxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFrQixFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBc0IsRUFBRSxDQUFDO1FBQ3RDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUF3QixFQUFFLENBQUM7UUFDMUMsb0JBQWUsR0FBb0I7WUFDL0IsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsRUFBRTtZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osS0FBSyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBQ0YsbUJBQWMsR0FB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QUcsRUFBVSxDQUFDO1FBQy9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN2QixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFlO1FBQ2pDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBYztRQUNoQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxlQUFlO1FBQ1gsbURBQW1EO0lBQ3ZELENBQUM7O3VIQXhTUSx5QkFBeUI7MkhBQXpCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVXNlckNyZWF0aW9uQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9zaGFyZWQvc2VydmljZXMvdXNlci1jcmVhdGlvbi1hcGkuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMZGFwVXNlclJvdyB7XHJcbiAgICB1c2VySWQ6IHN0cmluZztcclxuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgbGFzdE5hbWU6IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnZpZXdVc2VyUm93IGV4dGVuZHMgTGRhcFVzZXJSb3cge1xyXG4gICAgdXNlclRlbXBsYXRlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcnZpZXdMaW5lUm93IHtcclxuICAgIG51bWJlcjogc3RyaW5nO1xyXG4gICAgZGlkOiBzdHJpbmc7XHJcbiAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IHN0cmluZztcclxuICAgIGNzczogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPdmVydmlld0RldmljZVJvdyB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBkZXZpY2VUeXBlOiBzdHJpbmc7XHJcbiAgICBsaW5lczogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVXNlckNyZWF0aW9uVHlwZSA9ICdDVUNNJyB8ICdNVCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJEZXRhaWxzRm9ybSB7XHJcbiAgICB1c2VySWQ6IHN0cmluZztcclxuICAgIGZpcnN0TmFtZTogc3RyaW5nO1xyXG4gICAgbGFzdE5hbWU6IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGluZU9wdGlvbiB7XHJcbiAgICBudW1iZXI6IHN0cmluZztcclxuICAgIGRpZDogc3RyaW5nO1xyXG4gICAgY3NzOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGVkTGluZVJvdyB7XHJcbiAgICBsaW5lTnVtYmVyOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcm91dGVQYXJ0aXRpb25OYW1lOiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUVudHJ5IHtcclxuICAgIGRldmljZVR5cGU6IHN0cmluZztcclxuICAgIHByb3RvY29sOiBzdHJpbmc7XHJcbiAgICBidXR0b25UZW1wbGF0ZTogc3RyaW5nO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGVtcGxhdGVMaW5lTGlrZSB7XHJcbiAgICBkaXJlY3RvcnlOdW1iZXI/OiB7XHJcbiAgICAgICAgZGlyZWN0b3J5TnVtYmVyPzogc3RyaW5nO1xyXG4gICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICB9O1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgY2FsbGluZ1NlYXJjaFNwYWNlPzogc3RyaW5nIHwgeyBuYW1lPzogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbDtcclxuICAgIGRpZFBhdHRlcm5zPzogQXJyYXk8eyBwYXR0ZXJuPzogc3RyaW5nIHwgbnVsbCB9PiB8IG51bGw7XHJcbn1cclxuXHJcbmludGVyZmFjZSBUZW1wbGF0ZURldmljZUxpa2Uge1xyXG4gICAgZGV2aWNlVHlwZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBwcm90b2NvbD86IHN0cmluZyB8IG51bGw7XHJcbiAgICBidXR0b25UZW1wbGF0ZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBuYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGxpbmVBc3NvY2lhdGlvbnM/OiBBcnJheTx7XHJcbiAgICAgICAgZGlyZWN0b3J5TnVtYmVyPzoge1xyXG4gICAgICAgICAgICBkaXJlY3RvcnlOdW1iZXI/OiBzdHJpbmc7XHJcbiAgICAgICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgIH0+O1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGVtcGxhdGVFbmRVc2VyTGlrZSB7XHJcbiAgICB1c2VyaWQ/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgZmlyc3ROYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGxhc3ROYW1lPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGxpbmVzPzogVGVtcGxhdGVMaW5lTGlrZVtdIHwgbnVsbDtcclxuICAgIGRldmljZXM/OiBUZW1wbGF0ZURldmljZUxpa2VbXSB8IG51bGw7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFVzZXJDcmVhdGlvbldpemFyZFNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGkgPSBpbmplY3QoVXNlckNyZWF0aW9uQXBpU2VydmljZSk7XHJcblxyXG4gICAgcmVhZG9ubHkgbGRhcFRhYmxlQ29sdW1uczogc3RyaW5nW10gPSBbJ3VzZXJJZCcsICdmaXJzdE5hbWUnLCAnbGFzdE5hbWUnLCAnZW1haWwnLCAnYWRkJ107XHJcbiAgICByZWFkb25seSB1c2VyQ3JlYXRpb25UeXBlczogVXNlckNyZWF0aW9uVHlwZVtdID0gWydDVUNNJywgJ01UJ107XHJcblxyXG4gICAgc2l0ZU9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICBsaW5lT3B0aW9uczogTGluZU9wdGlvbltdID0gW107XHJcbiAgICByb3V0ZVBhcnRpdGlvbk9wdGlvbnM6IHN0cmluZ1tdID0gW107XHJcbiAgICBkZXZpY2VSb3dzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgbGRhcFVzZXJzOiBMZGFwVXNlclJvd1tdID0gW107XHJcbiAgICBvdmVydmlld1VzZXJzOiBPdmVydmlld1VzZXJSb3dbXSA9IFtdO1xyXG4gICAgb3ZlcnZpZXdMaW5lczogT3ZlcnZpZXdMaW5lUm93W10gPSBbXTtcclxuICAgIG92ZXJ2aWV3RGV2aWNlczogT3ZlcnZpZXdEZXZpY2VSb3dbXSA9IFtdO1xyXG4gICAgdXNlckRldGFpbHNGb3JtOiBVc2VyRGV0YWlsc0Zvcm0gPSB7XHJcbiAgICAgICAgdXNlcklkOiAnJyxcclxuICAgICAgICBmaXJzdE5hbWU6ICcnLFxyXG4gICAgICAgIGxhc3ROYW1lOiAnJyxcclxuICAgICAgICBlbWFpbDogJydcclxuICAgIH07XHJcbiAgICBsaW5lU2VsZWN0aW9uczogU2VsZWN0ZWRMaW5lUm93W10gPSBbXTtcclxuICAgIGRldmljZUVudHJpZXM6IERldmljZUVudHJ5W10gPSBbXTtcclxuXHJcbiAgICBzZWxlY3RlZFNpdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgc2VsZWN0ZWRUZW1wbGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBzZWxlY3RlZFVzZXJDcmVhdGlvblR5cGU6IFVzZXJDcmVhdGlvblR5cGUgPSAnQ1VDTSc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkUGxhY2Vob2xkZXJEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRTaXRlKHNpdGU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkU2l0ZSA9IHNpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRUZW1wbGF0ZSh0ZW1wbGF0ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3VXNlcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldFRlbXBsYXRlRHJpdmVuRGF0YSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxpbmVPcHRpb25zID0gW107XHJcbiAgICAgICAgdGhpcy5yb3V0ZVBhcnRpdGlvbk9wdGlvbnMgPSBbXTtcclxuICAgICAgICB0aGlzLmxpbmVTZWxlY3Rpb25zID0gW107XHJcbiAgICAgICAgdGhpcy5kZXZpY2VFbnRyaWVzID0gW107XHJcbiAgICAgICAgdGhpcy5kZXZpY2VSb3dzID0gW107XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdMaW5lcygpO1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3RGV2aWNlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5VGVtcGxhdGVUb2tlblBheWxvYWQocGF5bG9hZDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmV4dHJhY3RUZW1wbGF0ZUZyb21Ub2tlblBheWxvYWQocGF5bG9hZCk7XHJcbiAgICAgICAgY29uc3QgZW5kVXNlcjogVGVtcGxhdGVFbmRVc2VyTGlrZSA9IHRlbXBsYXRlPy5lbmRVc2VyIHx8IHt9O1xyXG4gICAgICAgIGNvbnN0IGxpbmVzRnJvbVRlbXBsYXRlOiBUZW1wbGF0ZUxpbmVMaWtlW10gPSBBcnJheS5pc0FycmF5KGVuZFVzZXIubGluZXMpID8gZW5kVXNlci5saW5lcyA6IFtdO1xyXG4gICAgICAgIGNvbnN0IGRldmljZXNGcm9tVGVtcGxhdGU6IFRlbXBsYXRlRGV2aWNlTGlrZVtdID0gQXJyYXkuaXNBcnJheShlbmRVc2VyLmRldmljZXMpID8gZW5kVXNlci5kZXZpY2VzIDogW107XHJcblxyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHNGb3JtID0ge1xyXG4gICAgICAgICAgICB1c2VySWQ6IHRoaXMudmFsdWVUb1N0cmluZyhlbmRVc2VyLnVzZXJpZCksXHJcbiAgICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy52YWx1ZVRvU3RyaW5nKGVuZFVzZXIuZmlyc3ROYW1lKSxcclxuICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMudmFsdWVUb1N0cmluZyhlbmRVc2VyLmxhc3ROYW1lKSxcclxuICAgICAgICAgICAgZW1haWw6IHRoaXMudmFsdWVUb1N0cmluZyhlbmRVc2VyLmVtYWlsKVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IG1hcHBlZExpbmVPcHRpb25zOiBMaW5lT3B0aW9uW10gPSBsaW5lc0Zyb21UZW1wbGF0ZVxyXG4gICAgICAgICAgICAubWFwKGxpbmUgPT4gKHtcclxuICAgICAgICAgICAgICAgIG51bWJlcjogdGhpcy52YWx1ZVRvU3RyaW5nKGxpbmU/LmRpcmVjdG9yeU51bWJlcj8uZGlyZWN0b3J5TnVtYmVyKSxcclxuICAgICAgICAgICAgICAgIGRpZDogdGhpcy52YWx1ZVRvU3RyaW5nKGxpbmU/LmRpZFBhdHRlcm5zPy5bMF0/LnBhdHRlcm4gfHwgbGluZT8uZGlyZWN0b3J5TnVtYmVyPy5kaXJlY3RvcnlOdW1iZXIpLFxyXG4gICAgICAgICAgICAgICAgY3NzOiB0aGlzLnZhbHVlVG9TdHJpbmcoXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGxpbmU/LmNhbGxpbmdTZWFyY2hTcGFjZSA9PT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBsaW5lLmNhbGxpbmdTZWFyY2hTcGFjZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGxpbmU/LmNhbGxpbmdTZWFyY2hTcGFjZT8ubmFtZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnZhbHVlVG9TdHJpbmcobGluZT8uZGVzY3JpcHRpb24pXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZS5udW1iZXIudHJpbSgpLmxlbmd0aCA+IDApO1xyXG5cclxuICAgICAgICBpZiAobWFwcGVkTGluZU9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubGluZU9wdGlvbnMgPSB0aGlzLnVuaXF1ZUJ5TnVtYmVyKG1hcHBlZExpbmVPcHRpb25zKTtcclxuICAgICAgICAgICAgdGhpcy5saW5lU2VsZWN0aW9ucyA9IHRoaXMubGluZU9wdGlvbnMubWFwKGxpbmUgPT4gKHtcclxuICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmUubnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiBsaW5lc0Zyb21UZW1wbGF0ZS5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAoc291cmNlPy5kaXJlY3RvcnlOdW1iZXI/LmRpcmVjdG9yeU51bWJlciB8fCAnJykgPT09IGxpbmUubnVtYmVyXHJcbiAgICAgICAgICAgICAgICApPy5kaXJlY3RvcnlOdW1iZXI/LnJvdXRlUGFydGl0aW9uTmFtZSB8fCBudWxsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBsaW5lQXNzb2NpYXRpb25zID0gZGV2aWNlc0Zyb21UZW1wbGF0ZS5mbGF0TWFwKGRldmljZSA9PiBkZXZpY2UubGluZUFzc29jaWF0aW9ucyB8fCBbXSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0ZWRMaW5lT3B0aW9uczogTGluZU9wdGlvbltdID0gbGluZUFzc29jaWF0aW9uc1xyXG4gICAgICAgICAgICAgICAgLm1hcChhc3NvY2lhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyID0gYXNzb2NpYXRpb24/LmRpcmVjdG9yeU51bWJlcj8uZGlyZWN0b3J5TnVtYmVyIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlkOiBudW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzczogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihsaW5lID0+IGxpbmUubnVtYmVyLnRyaW0oKS5sZW5ndGggPiAwKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubGluZU9wdGlvbnMgPSB0aGlzLnVuaXF1ZUJ5TnVtYmVyKGFzc29jaWF0ZWRMaW5lT3B0aW9ucyk7XHJcbiAgICAgICAgICAgIHRoaXMubGluZVNlbGVjdGlvbnMgPSB0aGlzLmxpbmVPcHRpb25zLm1hcChsaW5lID0+ICh7XHJcbiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lLm51bWJlcixcclxuICAgICAgICAgICAgICAgIHJvdXRlUGFydGl0aW9uTmFtZTogbGluZUFzc29jaWF0aW9ucy5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAoc291cmNlPy5kaXJlY3RvcnlOdW1iZXI/LmRpcmVjdG9yeU51bWJlciB8fCAnJykgPT09IGxpbmUubnVtYmVyXHJcbiAgICAgICAgICAgICAgICApPy5kaXJlY3RvcnlOdW1iZXI/LnJvdXRlUGFydGl0aW9uTmFtZSB8fCBudWxsXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJvdXRlUGFydGl0aW9ucyA9IHRoaXMubGluZVNlbGVjdGlvbnNcclxuICAgICAgICAgICAgLm1hcChsaW5lID0+IGxpbmUucm91dGVQYXJ0aXRpb25OYW1lKVxyXG4gICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiAhIXZhbHVlICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKTtcclxuICAgICAgICB0aGlzLnJvdXRlUGFydGl0aW9uT3B0aW9ucyA9IHRoaXMudW5pcXVlU3RyaW5ncyhyb3V0ZVBhcnRpdGlvbnMpO1xyXG5cclxuICAgICAgICB0aGlzLmRldmljZUVudHJpZXMgPSBkZXZpY2VzRnJvbVRlbXBsYXRlLm1hcChkZXZpY2UgPT4gKHtcclxuICAgICAgICAgICAgZGV2aWNlVHlwZTogdGhpcy52YWx1ZVRvU3RyaW5nKGRldmljZS5kZXZpY2VUeXBlKSxcclxuICAgICAgICAgICAgcHJvdG9jb2w6IHRoaXMudmFsdWVUb1N0cmluZyhkZXZpY2UucHJvdG9jb2wpLFxyXG4gICAgICAgICAgICBidXR0b25UZW1wbGF0ZTogdGhpcy52YWx1ZVRvU3RyaW5nKGRldmljZS5idXR0b25UZW1wbGF0ZSksXHJcbiAgICAgICAgICAgIG5hbWU6IHRoaXMudmFsdWVUb1N0cmluZyhkZXZpY2UubmFtZSlcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VSb3dzID0gdGhpcy5kZXZpY2VFbnRyaWVzLm1hcCgoXywgaW5kZXgpID0+IGluZGV4ICsgMSk7XHJcblxyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3VXNlcnMoKTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0xpbmVzKCk7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdEZXZpY2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U2VsZWN0ZWRVc2VyQ3JlYXRpb25UeXBlKHR5cGU6IFVzZXJDcmVhdGlvblR5cGUpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlckNyZWF0aW9uVHlwZSA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VXNlckRldGFpbHNGaWVsZChmaWVsZDoga2V5b2YgVXNlckRldGFpbHNGb3JtLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMudXNlckRldGFpbHNGb3JtLFxyXG4gICAgICAgICAgICBbZmllbGRdOiB2YWx1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdVc2VycygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExpbmVTZWxlY3Rpb24oaW5kZXg6IG51bWJlciwgbGluZU51bWJlcjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5saW5lU2VsZWN0aW9uc1tpbmRleF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxpbmVTZWxlY3Rpb25zW2luZGV4XSA9IHtcclxuICAgICAgICAgICAgLi4udGhpcy5saW5lU2VsZWN0aW9uc1tpbmRleF0sXHJcbiAgICAgICAgICAgIGxpbmVOdW1iZXJcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3TGluZXMoKTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0RldmljZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSb3V0ZVBhcnRpdGlvblNlbGVjdGlvbihpbmRleDogbnVtYmVyLCByb3V0ZVBhcnRpdGlvbk5hbWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMubGluZVNlbGVjdGlvbnNbaW5kZXhdKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saW5lU2VsZWN0aW9uc1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMubGluZVNlbGVjdGlvbnNbaW5kZXhdLFxyXG4gICAgICAgICAgICByb3V0ZVBhcnRpdGlvbk5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3TGluZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXREZXZpY2VOYW1lKGluZGV4OiBudW1iZXIsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5kZXZpY2VFbnRyaWVzW2luZGV4XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGV2aWNlRW50cmllc1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZGV2aWNlRW50cmllc1tpbmRleF0sXHJcbiAgICAgICAgICAgIG5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3RGV2aWNlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFBsYWNlaG9sZGVyIGJvb3RzdHJhcCB1bnRpbCBiYWNrZW5kIEFQSXMgYXJlIGNvbm5lY3RlZC5cclxuICAgIGxvYWRQbGFjZWhvbGRlckRhdGEoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaXRlT3B0aW9ucyA9IFsnU2l0ZSAxJywgJ1NpdGUgMicsICdTaXRlIDMnXTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlT3B0aW9ucyA9IFsnVXNlciA4ODUxIE9mZmljZSddO1xyXG4gICAgICAgIHRoaXMubGluZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG51bWJlcjogJzU1NzA0NicsXHJcbiAgICAgICAgICAgICAgICBkaWQ6ICcrMTMxMjU1NTcwNDYnLFxyXG4gICAgICAgICAgICAgICAgY3NzOiAnQXRsYW50YV9pbnRlcm5hbF9jc3MnLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMucm91dGVQYXJ0aXRpb25PcHRpb25zID0gWydBdGxhbnRhX2ludGVybmFsX1BUJywgJ0JlaWppbmdfbmF0aW9uYWxfUFQnXTtcclxuICAgICAgICB0aGlzLmRldmljZVJvd3MgPSBbMSwgMl07XHJcbiAgICAgICAgdGhpcy5sZGFwVXNlcnMgPSBbXHJcbiAgICAgICAgICAgIHsgdXNlcklkOiAnSm9obi5Eb2UnLCBmaXJzdE5hbWU6ICdKb2huJywgbGFzdE5hbWU6ICdEb2UnLCBlbWFpbDogJ2pvaG4uZG9lQGNhci53ZXN0LmlvJyB9LFxyXG4gICAgICAgICAgICB7IHVzZXJJZDogJ0phbmUuU21pdGgnLCBmaXJzdE5hbWU6ICdKYW5lJywgbGFzdE5hbWU6ICdTbWl0aCcsIGVtYWlsOiAnamFuZS5zbWl0aEBjYXIud2VzdC5pbycgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5saW5lU2VsZWN0aW9ucyA9IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lT3B0aW9uc1swXT8ubnVtYmVyIHx8IG51bGwsXHJcbiAgICAgICAgICAgICAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IHRoaXMucm91dGVQYXJ0aXRpb25PcHRpb25zWzBdIHx8IG51bGxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdGhpcy5kZXZpY2VFbnRyaWVzID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBkZXZpY2VUeXBlOiAnQ2lzY28gODg1MScsXHJcbiAgICAgICAgICAgICAgICBwcm90b2NvbDogJ1NJUCcsXHJcbiAgICAgICAgICAgICAgICBidXR0b25UZW1wbGF0ZTogJ1N0YW5kYXJkIDg4NTEgU0lQJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICcnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGRldmljZVR5cGU6ICdDaXNjbyBVbmlmaWVkIENsaWVudCBTZXJ2aWNlcyBGcmFtZXdvcmsnLFxyXG4gICAgICAgICAgICAgICAgcHJvdG9jb2w6ICdTSVAnLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uVGVtcGxhdGU6ICdTdGFuZGFyZCBDbGllbnQgU2VydmljZXMgRnJhbWV3b3JrJyxcclxuICAgICAgICAgICAgICAgIG5hbWU6ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA9IHRoaXMuc2VsZWN0ZWRUZW1wbGF0ZSA/PyBudWxsO1xyXG4gICAgICAgIHRoaXMucmVidWlsZE92ZXJ2aWV3VXNlcnMoKTtcclxuICAgICAgICB0aGlzLnJlYnVpbGRPdmVydmlld0xpbmVzKCk7XHJcbiAgICAgICAgdGhpcy5yZWJ1aWxkT3ZlcnZpZXdEZXZpY2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWJ1aWxkT3ZlcnZpZXdVc2VycygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB1c2VyVGVtcGxhdGUgPSB0aGlzLnNlbGVjdGVkVGVtcGxhdGUgfHwgJyc7XHJcbiAgICAgICAgY29uc3QgaGFzVXNlckRhdGEgPSBPYmplY3QudmFsdWVzKHRoaXMudXNlckRldGFpbHNGb3JtKS5zb21lKHZhbHVlID0+IHZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKTtcclxuICAgICAgICB0aGlzLm92ZXJ2aWV3VXNlcnMgPSBoYXNVc2VyRGF0YVxyXG4gICAgICAgICAgICA/IFt7XHJcbiAgICAgICAgICAgICAgICB1c2VySWQ6IHRoaXMudXNlckRldGFpbHNGb3JtLnVzZXJJZCxcclxuICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogdGhpcy51c2VyRGV0YWlsc0Zvcm0uZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgbGFzdE5hbWU6IHRoaXMudXNlckRldGFpbHNGb3JtLmxhc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgZW1haWw6IHRoaXMudXNlckRldGFpbHNGb3JtLmVtYWlsLFxyXG4gICAgICAgICAgICAgICAgdXNlclRlbXBsYXRlXHJcbiAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWJ1aWxkT3ZlcnZpZXdMaW5lcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm92ZXJ2aWV3TGluZXMgPSB0aGlzLmxpbmVTZWxlY3Rpb25zXHJcbiAgICAgICAgICAgIC5tYXAoc2VsZWN0aW9uID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghc2VsZWN0aW9uPy5saW5lTnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZExpbmUgPSB0aGlzLmxpbmVPcHRpb25zLmZpbmQobGluZSA9PiBsaW5lLm51bWJlciA9PT0gc2VsZWN0aW9uLmxpbmVOdW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RlZExpbmUpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVyOiBzZWxlY3RlZExpbmUubnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpZDogc2VsZWN0ZWRMaW5lLmRpZCxcclxuICAgICAgICAgICAgICAgICAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IHNlbGVjdGlvbi5yb3V0ZVBhcnRpdGlvbk5hbWUgfHwgdGhpcy5yb3V0ZVBhcnRpdGlvbk9wdGlvbnNbMF0gfHwgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgY3NzOiBzZWxlY3RlZExpbmUuY3NzLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzZWxlY3RlZExpbmUuZGVzY3JpcHRpb25cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGxpbmUpOiBsaW5lIGlzIE92ZXJ2aWV3TGluZVJvdyA9PiAhIWxpbmUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVidWlsZE92ZXJ2aWV3RGV2aWNlcygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZExpbmVOdW1iZXJzID0gdGhpcy5vdmVydmlld0xpbmVzLm1hcChsaW5lID0+IGxpbmUubnVtYmVyKS5qb2luKCcsICcpO1xyXG4gICAgICAgIHRoaXMub3ZlcnZpZXdEZXZpY2VzID0gdGhpcy5kZXZpY2VFbnRyaWVzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoZGV2aWNlID0+IGRldmljZS5uYW1lLnRyaW0oKS5sZW5ndGggPiAwIHx8IGRldmljZS5kZXZpY2VUeXBlLnRyaW0oKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAubWFwKGRldmljZSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogZGV2aWNlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICBkZXZpY2VUeXBlOiBkZXZpY2UuZGV2aWNlVHlwZSxcclxuICAgICAgICAgICAgICAgIGxpbmVzOiBzZWxlY3RlZExpbmVOdW1iZXJzLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGAke2RldmljZS5wcm90b2NvbH0gLyAke2RldmljZS5idXR0b25UZW1wbGF0ZX1gXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGV4dHJhY3RUZW1wbGF0ZUZyb21Ub2tlblBheWxvYWQocGF5bG9hZDogYW55KTogYW55IHtcclxuICAgICAgICBpZiAoIXBheWxvYWQgfHwgdHlwZW9mIHBheWxvYWQgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZFswXSB8fCBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaXJzdEtleSA9IE9iamVjdC5rZXlzKHBheWxvYWQpWzBdO1xyXG4gICAgICAgIHJldHVybiBmaXJzdEtleSA/IHBheWxvYWRbZmlyc3RLZXldIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVuaXF1ZUJ5TnVtYmVyKGxpbmVzOiBMaW5lT3B0aW9uW10pOiBMaW5lT3B0aW9uW10ge1xyXG4gICAgICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuICAgICAgICByZXR1cm4gbGluZXMuZmlsdGVyKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2Vlbi5oYXMobGluZS5udW1iZXIpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2Vlbi5hZGQobGluZS5udW1iZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVuaXF1ZVN0cmluZ3MoaXRlbXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoaXRlbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHZhbHVlVG9TdHJpbmcodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPOiByZXBsYWNlIHBsYWNlaG9sZGVycyB3aXRoIHJlYWwgQVBJIGludGVncmF0aW9uLlxyXG4gICAgbG9hZERhdGFGcm9tQXBpKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIHRoaXMuYXBpLmdldFdpemFyZEJvb3RzdHJhcERhdGEoKS5zdWJzY3JpYmUoLi4uKVxyXG4gICAgfVxyXG59Il19
|
|
@@ -73,7 +73,7 @@ class APIService {
|
|
|
73
73
|
this.apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';
|
|
74
74
|
this.token = 'eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbkBjb3JyZW5ldC5jb20iLCJyb2xlcyI6IlNVUEVSX1VTRVIiLCJpYXQiOjE3NzM5MjU4NzAsImV4cCI6MTc3Mzk0Mzg3MH0.OFxsG5XvtI3zKpGtPSXVvDCkr3ls4k1Jp7_K1jO7V8Q';
|
|
75
75
|
// this.apiUrl = window.location.protocol + '//' + window.location.host + '/dcp';
|
|
76
|
-
this.apiUrl = 'https://dev.tuki.io
|
|
76
|
+
this.apiUrl = 'https://dev.tuki.io';
|
|
77
77
|
// this.apiUrl = 'http://localhost:8088/dcp';
|
|
78
78
|
}
|
|
79
79
|
fetch(url, params, cache) {
|