@trudb/tru-common-lib 0.0.496 → 0.0.499
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/lib/classes/tru-data-change-parser.mjs +4 -12
- package/esm2020/lib/components/data-grid/tru-data-grid.mjs +4 -4
- package/esm2020/lib/services/tru-connection-hub.mjs +3 -3
- package/esm2020/lib/services/tru-data-context.mjs +17 -19
- package/fesm2015/trudb-tru-common-lib.mjs +23 -33
- package/fesm2015/trudb-tru-common-lib.mjs.map +1 -1
- package/fesm2020/trudb-tru-common-lib.mjs +23 -33
- package/fesm2020/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/classes/tru-data-change-parser.d.ts +14 -13
- package/lib/services/tru-connection-hub.d.ts +2 -1
- package/lib/services/tru-data-context.d.ts +2 -2
- package/package.json +1 -1
|
@@ -9,12 +9,12 @@ export class TruDataChangeParser {
|
|
|
9
9
|
dataChanged(change) {
|
|
10
10
|
this.dataChanged$.next(change);
|
|
11
11
|
}
|
|
12
|
-
constructor(connection, dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, modelPropertyLookup) {
|
|
12
|
+
constructor(connection, dataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, modelPropertyLookup) {
|
|
13
13
|
this.waitingEntities = [];
|
|
14
14
|
this.dataChanged$ = new Subject();
|
|
15
15
|
this.findEntityInCache = (change) => {
|
|
16
16
|
var entityAccessor = this.dataContext.entityAccess(change.tableName);
|
|
17
|
-
return entityAccessor.
|
|
17
|
+
return entityAccessor.searchByRefCacheOnly(this.entity, parseInt(change.tableRef, 10), true)[0];
|
|
18
18
|
};
|
|
19
19
|
this.findEntityInGlobalCache = (change) => {
|
|
20
20
|
var entityAccessor = this.globalDataContext.entityAccess(change.tableName);
|
|
@@ -106,15 +106,6 @@ export class TruDataChangeParser {
|
|
|
106
106
|
}
|
|
107
107
|
return entities.length;
|
|
108
108
|
};
|
|
109
|
-
this.getEntityFromCache = (change) => {
|
|
110
|
-
var entityAccessor = this.dataContext.entityAccess(this.tableName);
|
|
111
|
-
var entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
|
|
112
|
-
if (!entities.length) {
|
|
113
|
-
var entityAccessor = this.globalDataContext.entityAccess(this.tableName);
|
|
114
|
-
entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
|
|
115
|
-
}
|
|
116
|
-
return entities[0];
|
|
117
|
-
};
|
|
118
109
|
this.getEntityFromServer = (change) => {
|
|
119
110
|
var entityAccessor = this.dataContext.entityAccess(this.tableName);
|
|
120
111
|
var entitiy = entityAccessor.customSearchByRef(this.getLatestQuery(), change.tableRef);
|
|
@@ -263,6 +254,7 @@ export class TruDataChangeParser {
|
|
|
263
254
|
this.dataChanged(dataChangeArgs);
|
|
264
255
|
};
|
|
265
256
|
this.dataContext = dataContext;
|
|
257
|
+
this.entity = entity;
|
|
266
258
|
this.tableName = tableName;
|
|
267
259
|
this.getLatestResults = getLatestResults;
|
|
268
260
|
this.getLatestQuery = getLatestQuery;
|
|
@@ -275,4 +267,4 @@ export class TruDataChangeParser {
|
|
|
275
267
|
});
|
|
276
268
|
}
|
|
277
269
|
}
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY2hhbmdlLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRCxNQUFNLE9BQU8sbUJBQW1CO0lBZTlCLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFxQjtRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFDRSxVQUFlLEVBQ2YsV0FBMkIsRUFDM0IsU0FBaUIsRUFDakIsZ0JBQXFCLEVBQ3JCLGNBQW1CLEVBQ25CLGNBQWtCLEVBQ2xCLFdBQTBCLEVBQzFCLFFBQXVCLEVBQ3ZCLG1CQUEyQztRQXJCckMsb0JBQWUsR0FBeUIsRUFBRSxDQUFDO1FBRTNDLGlCQUFZLEdBQTJCLElBQUksT0FBTyxFQUFpQixDQUFDO1FBbUM1RSxzQkFBaUIsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ2xDLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRSxPQUFPLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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Q0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUV4QyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQWEsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBOFFGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJ1RW50aXR5QmFzZSB9IGZyb20gXCIuLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlXCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydURhdGFDaGFuZ2UgfSBmcm9tIFwiLi90cnUtZGF0YS1jaGFuZ2VcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tIFwiLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRydURhdGFDaGFuZ2VQYXJzZXIge1xyXG4gIHByaXZhdGUgZGF0YUNvbnRleHQ6IGFueTtcclxuICBwcml2YXRlIHRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgZ2V0TGF0ZXN0UmVzdWx0czogYW55O1xyXG4gIHByaXZhdGUgZ2V0TGF0ZXN0UXVlcnk6IGFueTtcclxuICBwcml2YXRlIGNvbnRleHRGaWx0ZXJzOiBbXTtcclxuICBwcml2YXRlIGV4cGFuZFBhdGhzOiBBcnJheTxzdHJpbmc+O1xyXG4gIHByaXZhdGUgaXNMb2FkZWQ6ICgpID0+IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSB0eXBlczogTWFwPHN0cmluZywgVHJ1UHJvcGVydHlDb25maWdCYXNlPjtcclxuXHJcbiAgcHJpdmF0ZSBnbG9iYWxEYXRhQ29udGV4dDogYW55O1xyXG4gIHByaXZhdGUgd2FpdGluZ0VudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiA9IFtdO1xyXG5cclxuICBwcml2YXRlIGRhdGFDaGFuZ2VkJDogU3ViamVjdDxUcnVEYXRhQ2hhbmdlPiA9IG5ldyBTdWJqZWN0PFRydURhdGFDaGFuZ2U+KCk7XHJcblxyXG4gIG9uRGF0YUNoYW5nZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhQ2hhbmdlZCQ7XHJcbiAgfVxyXG5cclxuICBkYXRhQ2hhbmdlZChjaGFuZ2U6IFRydURhdGFDaGFuZ2UpIHtcclxuICAgIHRoaXMuZGF0YUNoYW5nZWQkLm5leHQoY2hhbmdlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29ubmVjdGlvbjogYW55LFxyXG4gICAgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBnZXRMYXRlc3RSZXN1bHRzOiBhbnksXHJcbiAgICBnZXRMYXRlc3RRdWVyeTogYW55LFxyXG4gICAgY29udGV4dEZpbHRlcnM6IFtdLFxyXG4gICAgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz4sXHJcbiAgICBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbixcclxuICAgIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXBcclxuICApIHtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQgPSBkYXRhQ29udGV4dDtcclxuICAgIHRoaXMudGFibGVOYW1lID0gdGFibGVOYW1lO1xyXG4gICAgdGhpcy5nZXRMYXRlc3RSZXN1bHRzID0gZ2V0TGF0ZXN0UmVzdWx0cztcclxuICAgIHRoaXMuZ2V0TGF0ZXN0UXVlcnkgPSBnZXRMYXRlc3RRdWVyeTtcclxuICAgIHRoaXMuY29udGV4dEZpbHRlcnMgPSBjb250ZXh0RmlsdGVycztcclxuICAgIHRoaXMuZXhwYW5kUGF0aHMgPSBleHBhbmRQYXRocztcclxuICAgIHRoaXMuaXNMb2FkZWQgPSBpc0xvYWRlZDtcclxuICAgIHRoaXMudHlwZXMgPSBtb2RlbFByb3BlcnR5TG9va3VwLmxvb2t1cDtcclxuXHJcbiAgICBjb25uZWN0aW9uLm9uKFwiY2hhbmdlXCIsIChwYXlsb2FkOiBKU09OKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlKHBheWxvYWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmaW5kRW50aXR5SW5DYWNoZSA9IChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGVudGl0eUFjY2Vzc29yID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoY2hhbmdlLnRhYmxlTmFtZSk7XHJcbiAgICByZXR1cm4gZW50aXR5QWNjZXNzb3IuZ2V0QnlSZWZDYWNoZU9ubHkocGFyc2VJbnQoY2hhbmdlLnRhYmxlUmVmLCAxMCksIHRydWUpWzBdO1xyXG4gIH1cclxuXHJcbiAgZmluZEVudGl0eUluR2xvYmFsQ2FjaGUgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKGNoYW5nZS50YWJsZU5hbWUpO1xyXG4gICAgcmV0dXJuIGVudGl0eUFjY2Vzc29yLmdldEJ5UmVmQ2FjaGVPbmx5KHBhcnNlSW50KGNoYW5nZS50YWJsZVJlZiwgMTApLCB0cnVlKVswXTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZEYXRlVGltZSA9IChuZXdWYWx1ZTogYW55LCBjdXJyZW50VmFsdWU6IGFueSwgdHlwZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgaWYgKHR5cGVOYW1lID09PSAnZGF0ZS10aW1lJyB8fCB0eXBlTmFtZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGlmIChtb21lbnQobmV3VmFsdWUsIFwiWVlZWS1NTS1ERCBISDptbTpzcy5zc3Nzc3NzXCIsIHRydWUpLmlzVmFsaWQoKSlcclxuICAgICAgICByZXR1cm4gbW9tZW50KG1vbWVudC51dGMobmV3VmFsdWUpLnRvRGF0ZSgpKS5mb3JtYXQoJ01NL0REL1lZWVkgaGg6bW0gQScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1ZhbHVlXHJcbiAgfVxyXG5cclxuICBoYXNQcm9wZXJ0eUFscmVhZHlCZWVuTW9kaWZpZWQgPSAocHJvcGVydHlOYW1lOiBzdHJpbmcsIGVudGl0eTogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gZW50aXR5LmVudGl0eUFzcGVjdC5vcmlnaW5hbFZhbHVlcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlQcm9wZXJ0eUNoYW5nZXMgPSAoY2hhbmdlOiBhbnksIGVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgc3RhdGVCZWZvcmVQcm9wZXJ0eUNoYW5nZSA9IGVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgICB2YXIgb3JpZ2luYWxWYWx1ZXMgPSBlbnRpdHkuZW50aXR5QXNwZWN0Lm9yaWdpbmFsVmFsdWVzO1xyXG5cclxuICAgIGVudGl0eVsnRGF0YV9Ob3RpZmljYXRpb24nXSA9IHRydWU7XHJcblxyXG4gICAgT2JqZWN0LmtleXMoY2hhbmdlLnByb3BlcnRpZXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICB2YXIgZW50aXR5VHlwZSA9IHRoaXMudHlwZXMuZ2V0KGNoYW5nZS50YWJsZU5hbWUgKyAnLicgKyBrZXkpO1xyXG4gICAgICBpZiAoIWVudGl0eVR5cGUpIHtcclxuICAgICAgICBlbnRpdHlUeXBlID0gbmV3IFRydVByb3BlcnR5Q29uZmlnQmFzZSgpO1xyXG4gICAgICAgIGVudGl0eVR5cGUudHlwZU5hbWUgPSAndGV4dC1ib3VuZGVkJztcclxuICAgICAgfVxyXG4gICAgICB2YXIgcHJvcGVydHlNb2RpZmllZCA9IHRoaXMuaGFzUHJvcGVydHlBbHJlYWR5QmVlbk1vZGlmaWVkKGtleSwgZW50aXR5KVxyXG4gICAgICBpZiAoa2V5ID09PSAnVXBkYXRlZCcgfHwga2V5ID09PSAnVXBkYXRlZFJlZicpIHtcclxuICAgICAgICBlbnRpdHlba2V5XSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1trZXldO1xyXG4gICAgICB9IGVsc2UgaWYgKGVudGl0eVtrZXldICE9PSB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSkpIHtcclxuICAgICAgICBpZiAoIXByb3BlcnR5TW9kaWZpZWQpIHtcclxuICAgICAgICAgIGVudGl0eVtrZXldID0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpO1xyXG4gICAgICAgICAgZGVsZXRlIG9yaWdpbmFsVmFsdWVzW2tleV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciBtZXJnZURhdGEgPSBKU09OLnBhcnNlKGVudGl0eS5NZXJnZV9EYXRhKTtcclxuICAgICAgICAgIGlmIChtZXJnZURhdGEpIHtcclxuICAgICAgICAgICAgbWVyZ2VEYXRhW2tleV0gPSB7XHJcbiAgICAgICAgICAgICAgXCJ2YWx1ZVwiOiB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSksXHJcbiAgICAgICAgICAgICAgXCJtb2RpZmllZEJ5XCI6IGNoYW5nZS5tb2RpZmllZEJ5LFxyXG4gICAgICAgICAgICAgIFwiaGlkXCI6IGNoYW5nZS5wcm9wZXJ0aWVzW2tleSArICdISUQnXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWVyZ2VEYXRhID0ge307XHJcbiAgICAgICAgICAgIG1lcmdlRGF0YVtrZXldID0ge1xyXG4gICAgICAgICAgICAgIFwidmFsdWVcIjogdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpLFxyXG4gICAgICAgICAgICAgIFwibW9kaWZpZWRCeVwiOiBjaGFuZ2UubW9kaWZpZWRCeSxcclxuICAgICAgICAgICAgICBcImhpZFwiOiBjaGFuZ2UucHJvcGVydGllc1trZXkgKyAnSElEJ11cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVudGl0eS5NZXJnZV9EYXRhID0gSlNPTi5zdHJpbmdpZnkobWVyZ2VEYXRhKTtcclxuICAgICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3QudmFsaWRhdGVQcm9wZXJ0eShrZXkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiAob3JpZ2luYWxWYWx1ZXNba2V5XSkgIT09ICd1bmRlZmluZWQnKVxyXG4gICAgICAgICAgb3JpZ2luYWxWYWx1ZXNba2V5XSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob3JpZ2luYWxWYWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSlcclxuICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1trZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBlbnRpdHlbJ3Jvd3ZlciddID0gY2hhbmdlLnJvd3ZlcjtcclxuICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1sncm93dmVyJ107XHJcblxyXG4gICAgaWYgKHN0YXRlQmVmb3JlUHJvcGVydHlDaGFuZ2UubmFtZSAhPT0gXCJNb2RpZmllZFwiIHx8IChPYmplY3Qua2V5cyhvcmlnaW5hbFZhbHVlcykubGVuZ3RoID09PSAwICYmIG9yaWdpbmFsVmFsdWVzLmNvbnN0cnVjdG9yID09PSBPYmplY3QpKSB7XHJcbiAgICAgIGlmICghZW50aXR5LmVudGl0eUFzcGVjdC5pc0JlaW5nU2F2ZWQpIHtcclxuICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LnNldFVuY2hhbmdlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMud2FpdGluZ0VudGl0aWVzLnB1c2goZW50aXR5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZSBlbnRpdHlbJ0RhdGFfTm90aWZpY2F0aW9uJ107XHJcbiAgfVxyXG5cclxuICBzZXRXYWl0aW5nRW50aXRpZXNUb1VuY2hhbmdlZCA9ICgpID0+IHtcclxuICAgIHRoaXMud2FpdGluZ0VudGl0aWVzLmZvckVhY2goKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbnRpdHkgJiYgZW50aXR5LmVudGl0eUFzcGVjdClcclxuICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LnNldFVuY2hhbmdlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBlbnRpdHlGb3VuZEJ5UXVlcnkgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKHRoaXMudGFibGVOYW1lKTtcclxuICAgIHZhciBlbnRpdGllcyA9IGVudGl0eUFjY2Vzc29yLnN1YnNlYXJjaCh0aGlzLmdldExhdGVzdFF1ZXJ5KCksIFtjaGFuZ2UudGFibGVSZWZdKTtcclxuXHJcbiAgICBpZiAoIWVudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0LmVudGl0eUFjY2Vzcyh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgIGVudGl0aWVzID0gZW50aXR5QWNjZXNzb3Iuc3Vic2VhcmNoKHRoaXMuZ2V0TGF0ZXN0UXVlcnkoKSwgW2NoYW5nZS50YWJsZVJlZl0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlbnRpdGllcy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBnZXRFbnRpdHlGcm9tQ2FjaGUgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKHRoaXMudGFibGVOYW1lKTtcclxuICAgIHZhciBlbnRpdGllcyA9IGVudGl0eUFjY2Vzc29yLnN1YnNlYXJjaCh0aGlzLmdldExhdGVzdFF1ZXJ5KCksIFtjaGFuZ2UudGFibGVSZWZdKTtcclxuXHJcbiAgICBpZiAoIWVudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0LmVudGl0eUFjY2Vzcyh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgIGVudGl0aWVzID0gZW50aXR5QWNjZXNzb3Iuc3Vic2VhcmNoKHRoaXMuZ2V0TGF0ZXN0UXVlcnkoKSwgW2NoYW5nZS50YWJsZVJlZl0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlbnRpdGllc1swXTtcclxuICB9XHJcblxyXG4gIGdldEVudGl0eUZyb21TZXJ2ZXIgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKHRoaXMudGFibGVOYW1lKTtcclxuICAgIHZhciBlbnRpdGl5ID0gZW50aXR5QWNjZXNzb3IuY3VzdG9tU2VhcmNoQnlSZWYodGhpcy5nZXRMYXRlc3RRdWVyeSgpLCBjaGFuZ2UudGFibGVSZWYpO1xyXG4gICAgcmV0dXJuIGVudGl0aXk7XHJcbiAgfVxyXG5cclxuICBnZXRFbnRpdHlGcm9tUmVzdWx0cyA9IChyZXN1bHRzOiBhbnksIGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gcmVzdWx0cy5maWx0ZXIoKGU6IGFueSkgPT4geyByZXR1cm4gZS5SZWYgPT09IGNoYW5nZS50YWJsZVJlZiB9KTtcclxuICB9XHJcblxyXG4gIGlzU2F2aW5nID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdmFyIGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIC8vaWYgKCEkcm9vdFNjb3BlWydpc1NhdmluZyddKSB7XHJcbiAgICAgICAgLy8gIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgIC8vICByZXNvbHZlKCk7XHJcbiAgICAgICAgLy99XHJcbiAgICAgIH0sIDEwMDApXHJcbiAgICB9KVxyXG4gIH07XHJcblxyXG4gIHVwZGF0ZSA9IGFzeW5jIChwYXlsb2FkOiBhbnkpID0+IHtcclxuICAgIC8vYXdhaXQgdGhpcy5pc1NhdmluZygpO1xyXG5cclxuICAgIHZhciByZWxvYWRSZXN1bHRzID0gZmFsc2U7XHJcbiAgICBwYXlsb2FkLmNoYW5nZXMuZm9yRWFjaChhc3luYyAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgICAgdmFyIGZvdW5kRW50aXRpZXMgPSBbXTtcclxuICAgICAgdmFyIGxvY2FsRW50aXR5ID0gdGhpcy5maW5kRW50aXR5SW5DYWNoZShjaGFuZ2UpO1xyXG4gICAgICB2YXIgZ2xvYmFsRW50aXR5ID0gdGhpcy5maW5kRW50aXR5SW5HbG9iYWxDYWNoZShjaGFuZ2UpO1xyXG4gICAgICBpZiAobG9jYWxFbnRpdHkpXHJcbiAgICAgICAgZm91bmRFbnRpdGllcy5wdXNoKGxvY2FsRW50aXR5KTtcclxuICAgICAgaWYgKGdsb2JhbEVudGl0eSlcclxuICAgICAgICBmb3VuZEVudGl0aWVzLnB1c2goZ2xvYmFsRW50aXR5KTtcclxuXHJcbiAgICAgIGlmIChmb3VuZEVudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvdW5kRW50aXRpZXMuZm9yRWFjaChhc3luYyAoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGFuZ2UudGFibGVOYW1lID09PSB0aGlzLnRhYmxlTmFtZSkge1xyXG5cclxuICAgICAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdVJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG5cclxuICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZW50aXR5QWxyZWFkeUluUmVzdWx0cyA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmICghZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRpdHlUb1JlbW92ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlUb1JlbW92ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eVRvUmVtb3ZlWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnRCcpIHtcclxuICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgIHZhciBlbnRpdHlUb0RlbGV0ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICBpZiAoZW50aXR5VG9EZWxldGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBlbnRpdHlUb0RlbGV0ZVswXS5lbnRpdHlBc3BlY3Quc2V0RGV0YWNoZWQoKTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKHJlc3VsdHMuaW5kZXhPZihlbnRpdHlUb0RlbGV0ZVswXSksIDEpO1xyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdJJykge1xyXG4gICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgdmFyIGVudGl0eUFscmVhZHlJblJlc3VsdHMgPSB0aGlzLmdldEVudGl0eUZyb21SZXN1bHRzKHJlc3VsdHMsIGNoYW5nZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgIWVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsb2NhbEVudGl0eSkge1xyXG4gICAgICAgICAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoY2hhbmdlLnRhYmxlTmFtZSkuYWRkKHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgICAgICAgICBuZXdFbnRpdHlbY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gobmV3RW50aXR5KTtcclxuICAgICAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRpdHkgPT09IGxvY2FsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goZW50aXR5KTtcclxuICAgICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSAmJiBlbnRpdHlBbHJlYWR5SW5SZXN1bHRzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRpdHlUb0RlbGV0ZSA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICAgIGlmIChlbnRpdHlUb0RlbGV0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eUFscmVhZHlJblJlc3VsdHNbMF0pLCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICghZ2xvYmFsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoY2hhbmdlLnRhYmxlTmFtZSkuYWRkKHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgICAgICAgbmV3RW50aXR5W2NoYW5nZS50YWJsZU5hbWUgKyAnUmVmJ10gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gIT09ICdEJykge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnVScgJiYgY2hhbmdlLnRhYmxlTmFtZSA9PT0gdGhpcy50YWJsZU5hbWUpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldEVudGl0eUZyb21TZXJ2ZXIoY2hhbmdlKS50aGVuKChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgZW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpICYmIHRoaXMuaXNMb2FkZWQoKSkge1xyXG4gICAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbnRpdHkpO1xyXG4gICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdJJyAmJiBjaGFuZ2UudGFibGVOYW1lID09PSB0aGlzLnRhYmxlTmFtZSkge1xyXG4gICAgICAgICAgdmFyIG5ld0VudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKGNoYW5nZS50YWJsZU5hbWUpLmFkZCh0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgIG5ld0VudGl0eVtjaGFuZ2UudGFibGVOYW1lICsgJ1JlZiddID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoY2hhbmdlLnRhYmxlTmFtZSkuYWRkKHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgbmV3RW50aXR5W3RoaXMudGFibGVOYW1lICsgJ1JlZiddID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChuZXdFbnRpdHkpO1xyXG4gICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuY2hhbmdlT3BlcmF0aW9uID09PSAnSScpIHtcclxuICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0LmVudGl0eUFjY2VzcyhjaGFuZ2UudGFibGVOYW1lKS5hZGQodGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBuZXdFbnRpdHkpO1xyXG5cclxuICAgICAgICAgIG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKGNoYW5nZS50YWJsZU5hbWUpLmFkZCh0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgIG5ld0VudGl0eVtjaGFuZ2UudGFibGVOYW1lICsgJ1JlZiddID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5leHBhbmRQYXRocyAmJiB0aGlzLmV4cGFuZFBhdGhzLmxlbmd0aCAmJiB0aGlzLmV4cGFuZFBhdGhzLmluY2x1ZGVzKCdvJyArIGNoYW5nZS50YWJsZU5hbWUpKVxyXG4gICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGRhdGFDaGFuZ2VBcmdzID0gbmV3IFRydURhdGFDaGFuZ2UoKTtcclxuICAgIGRhdGFDaGFuZ2VBcmdzLmRhdGFDaGFuZ2VzID0gcGF5bG9hZDtcclxuICAgIGRhdGFDaGFuZ2VBcmdzLnJlbG9hZCA9IHJlbG9hZFJlc3VsdHM7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkKGRhdGFDaGFuZ2VBcmdzKTtcclxuICB9XHJcbn1cclxuIl19
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY2hhbmdlLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UtcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRCxNQUFNLE9BQU8sbUJBQW1CO0lBZ0I5QixhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBcUI7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQ0UsVUFBZSxFQUNmLFdBQTJCLEVBQzNCLE1BQTRCLEVBQzVCLFNBQWlCLEVBQ2pCLGdCQUFxQixFQUNyQixjQUFtQixFQUNuQixjQUFrQixFQUNsQixXQUEwQixFQUMxQixRQUF1QixFQUN2QixtQkFBMkM7UUF0QnJDLG9CQUFlLEdBQXlCLEVBQUUsQ0FBQztRQUUzQyxpQkFBWSxHQUEyQixJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQXFDcEUsc0JBQWlCLEdBQUcsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUMxQyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckUsT0FBTyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMs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SUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2xHLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLGNBQWMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFBO1FBOVFDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUV4QyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQWEsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBa1FGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJ1RW50aXR5QmFzZSB9IGZyb20gXCIuLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlXCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2UgfSBmcm9tIFwiLi4vYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZVwiO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXBcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydURhdGFDaGFuZ2UgfSBmcm9tIFwiLi90cnUtZGF0YS1jaGFuZ2VcIjtcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tIFwiLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRydURhdGFDaGFuZ2VQYXJzZXIge1xyXG4gIHByaXZhdGUgZGF0YUNvbnRleHQ6IGFueTtcclxuICBwcml2YXRlIGVudGl0eTogYW55O1xyXG4gIHByaXZhdGUgdGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBnZXRMYXRlc3RSZXN1bHRzOiBhbnk7XHJcbiAgcHJpdmF0ZSBnZXRMYXRlc3RRdWVyeTogYW55O1xyXG4gIHByaXZhdGUgY29udGV4dEZpbHRlcnM6IFtdO1xyXG4gIHByaXZhdGUgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz47XHJcbiAgcHJpdmF0ZSBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbjtcclxuICBwcml2YXRlIHR5cGVzOiBNYXA8c3RyaW5nLCBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2U+O1xyXG5cclxuICBwcml2YXRlIGdsb2JhbERhdGFDb250ZXh0OiBhbnk7XHJcbiAgcHJpdmF0ZSB3YWl0aW5nRW50aXRpZXM6IEFycmF5PFRydUVudGl0eUJhc2U+ID0gW107XHJcblxyXG4gIHByaXZhdGUgZGF0YUNoYW5nZWQkOiBTdWJqZWN0PFRydURhdGFDaGFuZ2U+ID0gbmV3IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4oKTtcclxuXHJcbiAgb25EYXRhQ2hhbmdlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFDaGFuZ2VkJDtcclxuICB9XHJcblxyXG4gIGRhdGFDaGFuZ2VkKGNoYW5nZTogVHJ1RGF0YUNoYW5nZSkge1xyXG4gICAgdGhpcy5kYXRhQ2hhbmdlZCQubmV4dChjaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb25uZWN0aW9uOiBhbnksXHJcbiAgICBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBnZXRMYXRlc3RSZXN1bHRzOiBhbnksXHJcbiAgICBnZXRMYXRlc3RRdWVyeTogYW55LFxyXG4gICAgY29udGV4dEZpbHRlcnM6IFtdLFxyXG4gICAgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz4sXHJcbiAgICBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbixcclxuICAgIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXBcclxuICApIHtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQgPSBkYXRhQ29udGV4dDtcclxuICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmdldExhdGVzdFJlc3VsdHMgPSBnZXRMYXRlc3RSZXN1bHRzO1xyXG4gICAgdGhpcy5nZXRMYXRlc3RRdWVyeSA9IGdldExhdGVzdFF1ZXJ5O1xyXG4gICAgdGhpcy5jb250ZXh0RmlsdGVycyA9IGNvbnRleHRGaWx0ZXJzO1xyXG4gICAgdGhpcy5leHBhbmRQYXRocyA9IGV4cGFuZFBhdGhzO1xyXG4gICAgdGhpcy5pc0xvYWRlZCA9IGlzTG9hZGVkO1xyXG4gICAgdGhpcy50eXBlcyA9IG1vZGVsUHJvcGVydHlMb29rdXAubG9va3VwO1xyXG5cclxuICAgIGNvbm5lY3Rpb24ub24oXCJjaGFuZ2VcIiwgKHBheWxvYWQ6IEpTT04pID0+IHtcclxuICAgICAgdGhpcy51cGRhdGUocGF5bG9hZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZEVudGl0eUluQ2FjaGUgPSAoY2hhbmdlOiBhbnkpID0+IHtcclxuICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKGNoYW5nZS50YWJsZU5hbWUpO1xyXG4gICAgcmV0dXJuIGVudGl0eUFjY2Vzc29yLnNlYXJjaEJ5UmVmQ2FjaGVPbmx5KHRoaXMuZW50aXR5LCBwYXJzZUludChjaGFuZ2UudGFibGVSZWYsIDEwKSwgdHJ1ZSlbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRFbnRpdHlJbkdsb2JhbENhY2hlID0gKGNoYW5nZTogYW55KSA9PiB7XHJcbiAgICB2YXIgZW50aXR5QWNjZXNzb3IgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0LmVudGl0eUFjY2VzcyhjaGFuZ2UudGFibGVOYW1lKTtcclxuICAgIHJldHVybiBlbnRpdHlBY2Nlc3Nvci5nZXRCeVJlZkNhY2hlT25seShwYXJzZUludChjaGFuZ2UudGFibGVSZWYsIDEwKSwgdHJ1ZSlbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrSWZEYXRlVGltZSA9IChuZXdWYWx1ZTogYW55LCBjdXJyZW50VmFsdWU6IGFueSwgdHlwZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgaWYgKHR5cGVOYW1lID09PSAnZGF0ZS10aW1lJyB8fCB0eXBlTmFtZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGlmIChtb21lbnQobmV3VmFsdWUsIFwiWVlZWS1NTS1ERCBISDptbTpzcy5zc3Nzc3NzXCIsIHRydWUpLmlzVmFsaWQoKSlcclxuICAgICAgICByZXR1cm4gbW9tZW50KG1vbWVudC51dGMobmV3VmFsdWUpLnRvRGF0ZSgpKS5mb3JtYXQoJ01NL0REL1lZWVkgaGg6bW0gQScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1ZhbHVlXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1Byb3BlcnR5QWxyZWFkeUJlZW5Nb2RpZmllZCA9IChwcm9wZXJ0eU5hbWU6IHN0cmluZywgZW50aXR5OiBhbnkpID0+IHtcclxuICAgIHJldHVybiBlbnRpdHkuZW50aXR5QXNwZWN0Lm9yaWdpbmFsVmFsdWVzLmhhc093blByb3BlcnR5KHByb3BlcnR5TmFtZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UHJvcGVydHlDaGFuZ2VzID0gKGNoYW5nZTogYW55LCBlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgdmFyIHN0YXRlQmVmb3JlUHJvcGVydHlDaGFuZ2UgPSBlbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gICAgdmFyIG9yaWdpbmFsVmFsdWVzID0gZW50aXR5LmVudGl0eUFzcGVjdC5vcmlnaW5hbFZhbHVlcztcclxuXHJcbiAgICBlbnRpdHlbJ0RhdGFfTm90aWZpY2F0aW9uJ10gPSB0cnVlO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKGNoYW5nZS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgdmFyIGVudGl0eVR5cGUgPSB0aGlzLnR5cGVzLmdldChjaGFuZ2UudGFibGVOYW1lICsgJy4nICsga2V5KTtcclxuICAgICAgaWYgKCFlbnRpdHlUeXBlKSB7XHJcbiAgICAgICAgZW50aXR5VHlwZSA9IG5ldyBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2UoKTtcclxuICAgICAgICBlbnRpdHlUeXBlLnR5cGVOYW1lID0gJ3RleHQtYm91bmRlZCc7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHByb3BlcnR5TW9kaWZpZWQgPSB0aGlzLmhhc1Byb3BlcnR5QWxyZWFkeUJlZW5Nb2RpZmllZChrZXksIGVudGl0eSlcclxuICAgICAgaWYgKGtleSA9PT0gJ1VwZGF0ZWQnIHx8IGtleSA9PT0gJ1VwZGF0ZWRSZWYnKSB7XHJcbiAgICAgICAgZW50aXR5W2tleV0gPSB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSk7XHJcbiAgICAgICAgaWYgKG9yaWdpbmFsVmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpXHJcbiAgICAgICAgICBkZWxldGUgb3JpZ2luYWxWYWx1ZXNba2V5XTtcclxuICAgICAgfSBlbHNlIGlmIChlbnRpdHlba2V5XSAhPT0gdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpKSB7XHJcbiAgICAgICAgaWYgKCFwcm9wZXJ0eU1vZGlmaWVkKSB7XHJcbiAgICAgICAgICBlbnRpdHlba2V5XSA9IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKTtcclxuICAgICAgICAgIGRlbGV0ZSBvcmlnaW5hbFZhbHVlc1trZXldO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YXIgbWVyZ2VEYXRhID0gSlNPTi5wYXJzZShlbnRpdHkuTWVyZ2VfRGF0YSk7XHJcbiAgICAgICAgICBpZiAobWVyZ2VEYXRhKSB7XHJcbiAgICAgICAgICAgIG1lcmdlRGF0YVtrZXldID0ge1xyXG4gICAgICAgICAgICAgIFwidmFsdWVcIjogdGhpcy5jaGVja0lmRGF0ZVRpbWUoY2hhbmdlLnByb3BlcnRpZXNba2V5XSwgZW50aXR5W2tleV0sIGVudGl0eVR5cGUudHlwZU5hbWUpLFxyXG4gICAgICAgICAgICAgIFwibW9kaWZpZWRCeVwiOiBjaGFuZ2UubW9kaWZpZWRCeSxcclxuICAgICAgICAgICAgICBcImhpZFwiOiBjaGFuZ2UucHJvcGVydGllc1trZXkgKyAnSElEJ11cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1lcmdlRGF0YSA9IHt9O1xyXG4gICAgICAgICAgICBtZXJnZURhdGFba2V5XSA9IHtcclxuICAgICAgICAgICAgICBcInZhbHVlXCI6IHRoaXMuY2hlY2tJZkRhdGVUaW1lKGNoYW5nZS5wcm9wZXJ0aWVzW2tleV0sIGVudGl0eVtrZXldLCBlbnRpdHlUeXBlLnR5cGVOYW1lKSxcclxuICAgICAgICAgICAgICBcIm1vZGlmaWVkQnlcIjogY2hhbmdlLm1vZGlmaWVkQnksXHJcbiAgICAgICAgICAgICAgXCJoaWRcIjogY2hhbmdlLnByb3BlcnRpZXNba2V5ICsgJ0hJRCddXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbnRpdHkuTWVyZ2VfRGF0YSA9IEpTT04uc3RyaW5naWZ5KG1lcmdlRGF0YSk7XHJcbiAgICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LnZhbGlkYXRlUHJvcGVydHkoa2V5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgKG9yaWdpbmFsVmFsdWVzW2tleV0pICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICAgIG9yaWdpbmFsVmFsdWVzW2tleV0gPSB0aGlzLmNoZWNrSWZEYXRlVGltZShjaGFuZ2UucHJvcGVydGllc1trZXldLCBlbnRpdHlba2V5XSwgZW50aXR5VHlwZS50eXBlTmFtZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG9yaWdpbmFsVmFsdWVzLmhhc093blByb3BlcnR5KGtleSkpXHJcbiAgICAgICAgICBkZWxldGUgb3JpZ2luYWxWYWx1ZXNba2V5XTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgZW50aXR5Wydyb3d2ZXInXSA9IGNoYW5nZS5yb3d2ZXI7XHJcbiAgICBkZWxldGUgb3JpZ2luYWxWYWx1ZXNbJ3Jvd3ZlciddO1xyXG5cclxuICAgIGlmIChzdGF0ZUJlZm9yZVByb3BlcnR5Q2hhbmdlLm5hbWUgIT09IFwiTW9kaWZpZWRcIiB8fCAoT2JqZWN0LmtleXMob3JpZ2luYWxWYWx1ZXMpLmxlbmd0aCA9PT0gMCAmJiBvcmlnaW5hbFZhbHVlcy5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSkge1xyXG4gICAgICBpZiAoIWVudGl0eS5lbnRpdHlBc3BlY3QuaXNCZWluZ1NhdmVkKSB7XHJcbiAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC5zZXRVbmNoYW5nZWQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLndhaXRpbmdFbnRpdGllcy5wdXNoKGVudGl0eSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUgZW50aXR5WydEYXRhX05vdGlmaWNhdGlvbiddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRXYWl0aW5nRW50aXRpZXNUb1VuY2hhbmdlZCA9ICgpID0+IHtcclxuICAgIHRoaXMud2FpdGluZ0VudGl0aWVzLmZvckVhY2goKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbnRpdHkgJiYgZW50aXR5LmVudGl0eUFzcGVjdClcclxuICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LnNldFVuY2hhbmdlZCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVudGl0eUZvdW5kQnlRdWVyeSA9IChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGVudGl0eUFjY2Vzc29yID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3ModGhpcy50YWJsZU5hbWUpO1xyXG4gICAgdmFyIGVudGl0aWVzID0gZW50aXR5QWNjZXNzb3Iuc3Vic2VhcmNoKHRoaXMuZ2V0TGF0ZXN0UXVlcnkoKSwgW2NoYW5nZS50YWJsZVJlZl0pO1xyXG5cclxuICAgIGlmICghZW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBlbnRpdHlBY2Nlc3NvciA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgZW50aXRpZXMgPSBlbnRpdHlBY2Nlc3Nvci5zdWJzZWFyY2godGhpcy5nZXRMYXRlc3RRdWVyeSgpLCBbY2hhbmdlLnRhYmxlUmVmXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVudGl0aWVzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW50aXR5RnJvbVNlcnZlciA9IChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgdmFyIGVudGl0eUFjY2Vzc29yID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3ModGhpcy50YWJsZU5hbWUpO1xyXG4gICAgdmFyIGVudGl0aXkgPSBlbnRpdHlBY2Nlc3Nvci5jdXN0b21TZWFyY2hCeVJlZih0aGlzLmdldExhdGVzdFF1ZXJ5KCksIGNoYW5nZS50YWJsZVJlZik7XHJcbiAgICByZXR1cm4gZW50aXRpeTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RW50aXR5RnJvbVJlc3VsdHMgPSAocmVzdWx0czogYW55LCBjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHJlc3VsdHMuZmlsdGVyKChlOiBhbnkpID0+IHsgcmV0dXJuIGUuUmVmID09PSBjaGFuZ2UudGFibGVSZWYgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU2F2aW5nID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdmFyIGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgIC8vaWYgKCEkcm9vdFNjb3BlWydpc1NhdmluZyddKSB7XHJcbiAgICAgICAgLy8gIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgIC8vICByZXNvbHZlKCk7XHJcbiAgICAgICAgLy99XHJcbiAgICAgIH0sIDEwMDApXHJcbiAgICB9KVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlID0gYXN5bmMgKHBheWxvYWQ6IGFueSkgPT4ge1xyXG4gICAgLy9hd2FpdCB0aGlzLmlzU2F2aW5nKCk7XHJcblxyXG4gICAgdmFyIHJlbG9hZFJlc3VsdHMgPSBmYWxzZTtcclxuICAgIHBheWxvYWQuY2hhbmdlcy5mb3JFYWNoKGFzeW5jIChjaGFuZ2U6IGFueSkgPT4ge1xyXG4gICAgICB2YXIgZm91bmRFbnRpdGllcyA9IFtdO1xyXG4gICAgICB2YXIgbG9jYWxFbnRpdHkgPSB0aGlzLmZpbmRFbnRpdHlJbkNhY2hlKGNoYW5nZSk7XHJcbiAgICAgIHZhciBnbG9iYWxFbnRpdHkgPSB0aGlzLmZpbmRFbnRpdHlJbkdsb2JhbENhY2hlKGNoYW5nZSk7XHJcbiAgICAgIGlmIChsb2NhbEVudGl0eSlcclxuICAgICAgICBmb3VuZEVudGl0aWVzLnB1c2gobG9jYWxFbnRpdHkpO1xyXG4gICAgICBpZiAoZ2xvYmFsRW50aXR5KVxyXG4gICAgICAgIGZvdW5kRW50aXRpZXMucHVzaChnbG9iYWxFbnRpdHkpO1xyXG5cclxuICAgICAgaWYgKGZvdW5kRW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgZm91bmRFbnRpdGllcy5mb3JFYWNoKGFzeW5jIChlbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZS50YWJsZU5hbWUgPT09IHRoaXMudGFibGVOYW1lKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ1UnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIGVudGl0eSk7XHJcblxyXG4gICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlbnRpdHlBbHJlYWR5SW5SZXN1bHRzID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlbnRpdHlBbHJlYWR5SW5SZXN1bHRzLmxlbmd0aCAmJiB0aGlzLmlzTG9hZGVkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudGl0eVRvUmVtb3ZlID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eVRvUmVtb3ZlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLnNwbGljZShyZXN1bHRzLmluZGV4T2YoZW50aXR5VG9SZW1vdmVbMF0pLCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdEJykge1xyXG4gICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgdmFyIGVudGl0eVRvRGVsZXRlID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgIGlmIChlbnRpdHlUb0RlbGV0ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGVudGl0eVRvRGVsZXRlWzBdLmVudGl0eUFzcGVjdC5zZXREZXRhY2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5zcGxpY2UocmVzdWx0cy5pbmRleE9mKGVudGl0eVRvRGVsZXRlWzBdKSwgMSk7XHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knKSB7XHJcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgICB2YXIgZW50aXR5QWxyZWFkeUluUmVzdWx0cyA9IHRoaXMuZ2V0RW50aXR5RnJvbVJlc3VsdHMocmVzdWx0cywgY2hhbmdlKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSAmJiAhZW50aXR5QWxyZWFkeUluUmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxvY2FsRW50aXR5KSB7XHJcbiAgICAgICAgICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcyhjaGFuZ2UudGFibGVOYW1lKS5hZGQodGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICAgIG5ld0VudGl0eVtjaGFuZ2UudGFibGVOYW1lICsgJ1JlZiddID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChuZXdFbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVudGl0eSA9PT0gbG9jYWxFbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gdGhpcy5nZXRMYXRlc3RSZXN1bHRzKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbnRpdHkpO1xyXG4gICAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmVudGl0eUZvdW5kQnlRdWVyeShjaGFuZ2UpICYmIGVudGl0eUFscmVhZHlJblJlc3VsdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IHRoaXMuZ2V0TGF0ZXN0UmVzdWx0cygpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudGl0eVRvRGVsZXRlID0gdGhpcy5nZXRFbnRpdHlGcm9tUmVzdWx0cyhyZXN1bHRzLCBjaGFuZ2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVudGl0eVRvRGVsZXRlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICByZXN1bHRzLnNwbGljZShyZXN1bHRzLmluZGV4T2YoZW50aXR5QWxyZWFkeUluUmVzdWx0c1swXSksIDEpO1xyXG4gICAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFnbG9iYWxFbnRpdHkpIHtcclxuICAgICAgICAgICAgICAgIHZhciBuZXdFbnRpdHkgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0LmVudGl0eUFjY2VzcyhjaGFuZ2UudGFibGVOYW1lKS5hZGQodGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICAgICAgICBuZXdFbnRpdHlbY2hhbmdlLnRhYmxlTmFtZSArICdSZWYnXSA9IGNoYW5nZS50YWJsZVJlZjtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBuZXdFbnRpdHkpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZWxvYWRSZXN1bHRzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiAhPT0gJ0QnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdVJyAmJiBjaGFuZ2UudGFibGVOYW1lID09PSB0aGlzLnRhYmxlTmFtZSkge1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0RW50aXR5RnJvbVNlcnZlcihjaGFuZ2UpLnRoZW4oKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlQcm9wZXJ0eUNoYW5nZXMoY2hhbmdlLCBlbnRpdHkpO1xyXG5cclxuICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZW50aXR5Rm91bmRCeVF1ZXJ5KGNoYW5nZSkgJiYgdGhpcy5pc0xvYWRlZCgpKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGVudGl0eSk7XHJcbiAgICAgICAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hhbmdlLmNoYW5nZU9wZXJhdGlvbiA9PT0gJ0knICYmIGNoYW5nZS50YWJsZU5hbWUgPT09IHRoaXMudGFibGVOYW1lKSB7XHJcbiAgICAgICAgICB2YXIgbmV3RW50aXR5ID0gdGhpcy5nbG9iYWxEYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoY2hhbmdlLnRhYmxlTmFtZSkuYWRkKHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgbmV3RW50aXR5W2NoYW5nZS50YWJsZU5hbWUgKyAnUmVmJ10gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcyhjaGFuZ2UudGFibGVOYW1lKS5hZGQodGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgICBuZXdFbnRpdHlbdGhpcy50YWJsZU5hbWUgKyAnUmVmJ10gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5lbnRpdHlGb3VuZEJ5UXVlcnkoY2hhbmdlKSAmJiB0aGlzLmlzTG9hZGVkKCkpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSB0aGlzLmdldExhdGVzdFJlc3VsdHMoKTtcclxuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICAgICAgICAgIHJlbG9hZFJlc3VsdHMgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKGNoYW5nZS5jaGFuZ2VPcGVyYXRpb24gPT09ICdJJykge1xyXG4gICAgICAgICAgdmFyIG5ld0VudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKGNoYW5nZS50YWJsZU5hbWUpLmFkZCh0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICAgIG5ld0VudGl0eVtjaGFuZ2UudGFibGVOYW1lICsgJ1JlZiddID0gY2hhbmdlLnRhYmxlUmVmO1xyXG4gICAgICAgICAgdGhpcy5hcHBseVByb3BlcnR5Q2hhbmdlcyhjaGFuZ2UsIG5ld0VudGl0eSk7XHJcblxyXG4gICAgICAgICAgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoY2hhbmdlLnRhYmxlTmFtZSkuYWRkKHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICAgICAgbmV3RW50aXR5W2NoYW5nZS50YWJsZU5hbWUgKyAnUmVmJ10gPSBjaGFuZ2UudGFibGVSZWY7XHJcbiAgICAgICAgICB0aGlzLmFwcGx5UHJvcGVydHlDaGFuZ2VzKGNoYW5nZSwgbmV3RW50aXR5KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZFBhdGhzICYmIHRoaXMuZXhwYW5kUGF0aHMubGVuZ3RoICYmIHRoaXMuZXhwYW5kUGF0aHMuaW5jbHVkZXMoJ28nICsgY2hhbmdlLnRhYmxlTmFtZSkpXHJcbiAgICAgICAgcmVsb2FkUmVzdWx0cyA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgZGF0YUNoYW5nZUFyZ3MgPSBuZXcgVHJ1RGF0YUNoYW5nZSgpO1xyXG4gICAgZGF0YUNoYW5nZUFyZ3MuZGF0YUNoYW5nZXMgPSBwYXlsb2FkO1xyXG4gICAgZGF0YUNoYW5nZUFyZ3MucmVsb2FkID0gcmVsb2FkUmVzdWx0cztcclxuICAgIHRoaXMuZGF0YUNoYW5nZWQoZGF0YUNoYW5nZUFyZ3MpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -83,6 +83,9 @@ export class TruDataGrid {
|
|
|
83
83
|
this.searchViewEventHandler.onSearch().pipe(skip(1)).subscribe((setupQuery) => {
|
|
84
84
|
this.onSearch(setupQuery);
|
|
85
85
|
});
|
|
86
|
+
this.connectionHub.subscribe(this.dataContext, this.entity, this.config.tableName, () => { return this.loadedEntities; }, () => { return this.latestSetupQuery; }, this.config.resultConfig.expands, [], () => { return true; }).subscribe((dataChange) => {
|
|
87
|
+
console.log(dataChange);
|
|
88
|
+
});
|
|
86
89
|
};
|
|
87
90
|
this.loadGridData = (entities) => {
|
|
88
91
|
this.rowData = entities.map(this.enhanceRowDataForEntity, entities);
|
|
@@ -228,9 +231,6 @@ export class TruDataGrid {
|
|
|
228
231
|
this.subscribeTo();
|
|
229
232
|
this.columnDefs = this.config.resultConfig.columnDefs;
|
|
230
233
|
this.gridType = this.config.resultConfig.gridType;
|
|
231
|
-
this.connectionHub.subscribe(this.dataContext, this.config.tableName, () => { return this.loadedEntities; }, () => { return this.latestSetupQuery; }, this.config.resultConfig.expands, [], () => { return true; }).subscribe((dataChange) => {
|
|
232
|
-
console.log(dataChange);
|
|
233
|
-
});
|
|
234
234
|
}
|
|
235
235
|
ngOnChanges(changes) {
|
|
236
236
|
if (this.gridType === TruDataGridTypes.Detail || this.gridType === TruDataGridTypes.DetailManyToMany)
|
|
@@ -258,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
258
258
|
}], name: [{
|
|
259
259
|
type: Input
|
|
260
260
|
}] } });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUF3RCxNQUFNLGVBQWUsQ0FBQztBQU1sSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFZaEMsTUFBTSxPQUFPLFdBQVc7SUE2QnRCLFlBQ1UsV0FBMkIsRUFDM0IsdUJBQW1ELEVBQ25ELGNBQWlDLEVBQ2pDLHNCQUFpRCxFQUNqRCxjQUFpQyxFQUNqQyxhQUErQjtRQUwvQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUEyQjtRQUNqRCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBOUJ6QyxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFFN0Isd0JBQW1CLEdBQWUsRUFBRSxDQUFDO1FBRXJD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TUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1ldmVudC1oYW5kbGVyJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgSVRydURhdGFHcmlkQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1kYXRhLWdyaWQtY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1RGF0YUdyaWRUeXBlcyB9IGZyb20gJy4vZW51bXMvdHJ1LWRhdGEtZ3JpZC10eXBlcyc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIHNraXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtc2VhcmNoLXJlc3VsdC12aWV3LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVDb25uZWN0aW9uSHViIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWNvbm5lY3Rpb24taHViJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWRhdGEtZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kYXRhLWdyaWQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRhdGEtZ3JpZC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHsnW2NsYXNzLnRydS1kYXRhLWdyaWRdJzogJ3RydWUnfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RGF0YUdyaWQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydURhdGFHcmlkQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGVudGl0eSE6IGFueTtcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBUcnVEYXRhR3JpZFR5cGVzID0gVHJ1RGF0YUdyaWRUeXBlcztcclxuXHJcbiAgY29sdW1uRGVmczogYW55ID0gW107XHJcbiAgcm93RGF0YTogYW55ID0gW107XHJcbiAgdmlld0Nob2ljZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBzZWxlY3RlZFZpZXdDaG9pY2U6IGFueTtcclxuICB1bmFzc29jaWF0ZWRDaG9pY2VzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2U6IGFueTtcclxuICBsb2FkaW5nVGVtcGxhdGU6IHN0cmluZyA9ICc8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXJcIj4gRGF0YSBpcyBsb2FkaW5nLi4uPC9zcGFuPic7XHJcbiAgbm9Sb3dzVGVtcGxhdGU6IHN0cmluZyA9IGA8c3Bhbj5SdW4gYSBzZWFyY2ggdG8gZmluZCBpdGVtcy48L3NwYW4+YDtcclxuICBncmlkVHlwZTogVHJ1RGF0YUdyaWRUeXBlcyA9IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXHJcbiAgdW5zYXZlZEVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbG9hZGVkRW50aXRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBsYXRlc3RTZXR1cFF1ZXJ5OiBhbnk7XHJcbiAgZ3JpZE9wdGlvbnM6IGFueSA9IHtcclxuICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcclxuICAgIHJvd1N0eWxlOiB7IGJhY2tncm91bmQ6ICd3aGl0ZScgfSxcclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlZDogKHBhcmFtczogYW55KSA9PiB7IH0sXHJcbiAgICBvbkNlbGxFZGl0aW5nU3RvcHBlZDogKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoeyByb3dOb2RlczogcGFyYW1zLm5vZGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hSZXN1bHRWaWV3TWFuYWdlcjogVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIsXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgdWlOb3RpZmljYXRpb246IFRydVVpTm90aWZpY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjb25uZWN0aW9uSHViOiBUcnVDb25uZWN0aW9uSHViKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuaGFuY2VSb3dEYXRhRm9yRW50aXR5ID0gKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICBsZXQgcm93RGF0YSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5yb3dEYXRhRW5oYW5jZXIoZW50aXR5KTtcclxuICAgIHJvd0RhdGEuJGVudGl0eSA9IGVudGl0eTtcclxuICAgIHJldHVybiByb3dEYXRhO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2V0Tm9Sb3dzVGVtcGxhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5vUm93c1RlbXBsYXRlID0gYDxzcGFuPk5vIHJvd3MgdG8gc2hvdy48L3NwYW4+YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uU2F2ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkucmVkcmF3Um93cygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uUmV2ZXJ0Q29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgIGxldCByb3dOb2RlczogYW55ID0gW107XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZm9yRWFjaE5vZGUoKHJvd05vZGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJvd05vZGVzLnB1c2gocm93Tm9kZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHJvd05vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKVxyXG4gICAgICAgICAgaWYgKHJvd05vZGVzW2ldLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddIDwgMClcclxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkudXBkYXRlUm93RGF0YSh7IHJlbW92ZTogW3Jvd05vZGVzW2ldLmRhdGFdIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBFbnZpcm9ubWVudC5vbkRlbGV0ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwgJiYgZXZlbnQuZW50aXRpZXMgJiYgZXZlbnQuZW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHJvd3NUb1JlbW92ZTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnJvd0RhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSBldmVudC5lbnRpdGllcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhW2ldLiRlbnRpdHkgPT09IGV2ZW50LmVudGl0aWVzW2pdKVxyXG4gICAgICAgICAgICAgIHJvd3NUb1JlbW92ZS5wdXNoKHRoaXMucm93RGF0YVtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHJvd3NUb1JlbW92ZSB9KTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRHcmlkRGF0YSA9IChlbnRpdGllczogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgdGhpcy5yb3dEYXRhID0gZW50aXRpZXMubWFwKHRoaXMuZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHksIGVudGl0aWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE1hbnlUb01hbnlHcmlkRGF0YSA9IChhc3NvY2lhdGVkRW50aXRpZXM6IEFycmF5PGFueT4sIGFzc29jaWF0YWJsZUVudGl0aWVzOiBBcnJheTxhbnk+LCBpbml0YWxMb2FkOiBib29sZWFuKSA9PiB7XHJcbiAgICBpZiAoaW5pdGFsTG9hZClcclxuICAgICAgdGhpcy5yb3dEYXRhID0gYXNzb2NpYXRlZEVudGl0aWVzLm1hcCh0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5LCBhc3NvY2lhdGVkRW50aXRpZXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICBhc3NvY2lhdGVkRW50aXRpZXMgPSB0aGlzLnJvd0RhdGEubWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIGUuJGVudGl0eSB9KTtcclxuICAgIGxldCBhc3NvY2lhdGFibGVUeXBlTmFtZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZS5uYW1lXHJcbiAgICBsZXQgYXNzb2NpYXRlZE1hcE9mQXNzb2NpYXRhYmxlID0gXy5tYXAoYXNzb2NpYXRlZEVudGl0aWVzLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsnbycgKyBhc3NvY2lhdGFibGVUeXBlTmFtZV07IH0pO1xyXG4gICAgdGhpcy51bmFzc29jaWF0ZWRDaG9pY2VzID0gYXNzb2NpYXRhYmxlRW50aXRpZXMuZmlsdGVyKG9iamVjdDEgPT4ge1xyXG4gICAgICByZXR1cm4gIWFzc29jaWF0ZWRNYXBPZkFzc29jaWF0YWJsZS5zb21lKG9iamVjdDIgPT4geyByZXR1cm4gb2JqZWN0MS52YWx1ZS4kID09PSBvYmplY3QyW2Fzc29jaWF0YWJsZVR5cGVOYW1lICsgJ1JlZiddOyB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnREYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zaG93RXhwb3J0RGlhbG9nKCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XHJcbiAgICAgIGxldCBleHBvcnRHcmlkU3BlYztcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlKVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUubmFtZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gJyRjdXN0b209JyArIDE7XHJcblxyXG4gICAgICBsZXQgcm93Tm9kZXM6IGFueSA9IFtdO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5mb3JFYWNoTm9kZSgocm93Tm9kZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgcm93Tm9kZXMucHVzaChyb3dOb2RlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZWZzID0gXy5tYXAocm93Tm9kZXMsIChyb3dOb2RlKSA9PiB7IHJldHVybiByb3dOb2RlLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddOyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dFxyXG4gICAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAgIC5leHBvcnQodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUsIGV4cG9ydEdyaWRTcGVjLCB0aGlzLmxhdGVzdFNldHVwUXVlcnksIHJlZnMuam9pbignLCcpLCByZXN1bHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJvd0RhdGFDaGFuZ2VkID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucm93RGF0YSA9PT0gbnVsbClcclxuICAgICAgdGhpcy5zZXROb1Jvd3NUZW1wbGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsRG91YmxlQ2xpY2tlZCA9IChncmlkQ29uZmlnOiBhbnkpID0+IHtcclxuICAgIGlmIChncmlkQ29uZmlnLmNvbERlZi5jZWxsQ2xhc3MgPT09ICdhZy1way1hbGlnbmVkLWNlbGwnKVxyXG4gICAgICB0aGlzLmNvbmZpZy5yb3dIZWFkZXJEb3VibGVDbGlja2VkKGdyaWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2ggPSAoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICBsZXQgZW50aXR5TG9hZGVkID0gdGhpcy5sb2FkZWRFbnRpdGllcy5zb21lKChyZWYpID0+IHsgcmV0dXJuIHJlZiA9PT0gdGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXTsgfSk7XHJcbiAgICBsZXQgam9pbnMgPSBbXTtcclxuICAgIGlmIChlbnRpdHlMb2FkZWQpIHtcclxuICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaENhY2hlT25seShcclxuICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSxcclxuICAgICAgICBzZXR1cFF1ZXJ5LFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCBmYWxzZSkpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMsIGZhbHNlKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCB0cnVlKSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhdGVzdFNldHVwUXVlcnkgPSBzZXR1cFF1ZXJ5O1xyXG5cclxuICAgIGZvcmtKb2luKGpvaW5zKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLnNldE5vUm93c1RlbXBsYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgICAgIHRoaXMubG9hZE1hbnlUb01hbnlHcmlkRGF0YShyZXN1bHRzWzBdLCByZXN1bHRzWzFdLCB0cnVlKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmxvYWRHcmlkRGF0YShyZXN1bHRzWzBdKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkVHlwZSAhPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2gpXHJcbiAgICAgICAgICB0aGlzLmxvYWRlZEVudGl0aWVzLnB1c2godGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25VbmFzc29jaWF0ZWRDaG9pY2VDaGFuZ2VkID0gKG9wdGlvbjogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB8IG51bGwpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBjYW5BZGQgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkFkZCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgbGV0IHBhcmVudE5hbWUgPSB0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICBsZXQgYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZTtcclxuICAgICAgbGV0IHVuYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGU7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlLnZhbHVlLiQ7XHJcbiAgICAgIGxldCBjaGlsZFRvQXNzb2NpYXRlID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hCeVJlZkNhY2hlT25seSh1bmFzc29jaWF0ZWRUeXBlLCByZWYsIHRydWUpXHJcbiAgICAgIGlmIChjaGlsZFRvQXNzb2NpYXRlKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlIG1hbnktdG8tbWFueSBlbnRpdHlcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZChhc3NvY2lhdGVkVHlwZSkpO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3VuYXNzb2NpYXRlZFR5cGUubmFtZSArICdSZWYnXSA9IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3BhcmVudE5hbWUgKyAnUmVmJ10gPSB0aGlzLmVudGl0eVtwYXJlbnROYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gdGhlIGFkZCBkcm9wZG93biBjb250cm9sXHJcbiAgICAgICAgbGV0IGl0ZW1JbmRleCA9IHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5maW5kSW5kZXgoKGNob2ljZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNob2ljZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ10gPT09IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgICAvLyBjbGVhciBhZGQgc2VsZWN0aW9uXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBhZGQgcm93IHRvIGdyaWRcclxuICAgICAgICB0aGlzLnVuc2F2ZWRFbnRpdGllcy5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW25ld0VudGl0eV0sIGFkZEluZGV4OiAwIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSkpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbbmV3RW50aXR5XSwgYWRkSW5kZXg6IDAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBlbnRpdGllcyA9IHNlbGVjdGVkUm93cy5tYXAoZnVuY3Rpb24gKHJvdzogYW55KSB7IHJldHVybiByb3cuJGVudGl0eTsgfSk7XHJcbiAgICAgIGxldCBjb25maXJtTXNnID0gdGhpcy5hcHBFbnZpcm9ubWVudC5mb3JtYXREZWxldGVDb25maXJtYXRpb25NZXNzYWdlKHRoaXMuY29uZmlnLnRhYmxlTmFtZSwgdGhpcy5jb25maWcudGFibGVQbHVyYWxMYWJlbCwgc2VsZWN0ZWRSb3dzLmxlbmd0aCk7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgICBsZXQgb25TdWNjZXNzID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZywgb25TdWNjZXNzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ05vUmVjb3Jkc1NlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2VlcCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKVxyXG4gICAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogc2VsZWN0ZWRSb3dzIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZXREZWZhdWx0UmVzdWx0VmlldyA9ICgpOiB2b2lkID0+IHtcclxuICAgIGFsZXJ0KCdOb3QgSW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5leHBvcnREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jb2x1bW5EZWZzO1xyXG4gICAgdGhpcy5ncmlkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5ncmlkVHlwZTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb25IdWIuc3Vic2NyaWJlKFxyXG4gICAgICB0aGlzLmRhdGFDb250ZXh0LFxyXG4gICAgICB0aGlzLmNvbmZpZy50YWJsZU5hbWUsXHJcbiAgICAgICgpID0+IHsgcmV0dXJuIHRoaXMubG9hZGVkRW50aXRpZXMgfSxcclxuICAgICAgKCkgPT4geyByZXR1cm4gdGhpcy5sYXRlc3RTZXR1cFF1ZXJ5IH0sXHJcbiAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzLFxyXG4gICAgICBbXSxcclxuICAgICAgKCkgPT4geyByZXR1cm4gdHJ1ZTsgfSkuc3Vic2NyaWJlKChkYXRhQ2hhbmdlOiBUcnVEYXRhQ2hhbmdlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZGF0YUNoYW5nZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsIHx8IHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy9zZXRUaW1lb3V0IHRvIHByZXZlbnQ6IEVSUk9SIEVycm9yOiBORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuIFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucGFyZW50VG9vbGJhclRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRWaWV3TWFuYWdlci5zZWFyY2hWaWV3VG9vbGJhclRlbXBsYXRlO1xyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWwgfHwgdGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KSB7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC10b29sYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgPHRydS10b29sYmFyPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwidW5hc3NvY2lhdGVkQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkT3B0aW9uKV09XCJzZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVW5hc3NvY2lhdGVkQ2hvaWNlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55XCI+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWFkZC1pY29uJ1wiIFt0b29sdGlwXT1cIidBZGQgLSBbQ3RybCArIEldJ1wiIFtkaXNhYmxlZF09XCIhY2FuQWRkKClcIiAob25DbGljayk9XCJvbkFkZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWRlbGV0ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidEZWxldGUgLSBbQ3RybCArIERdJ1wiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWtlZXAtaWNvbidcIiBbdG9vbHRpcF09XCInS2VlcCBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBLXSdcIiAoY2xpY2spPVwib25LZWVwKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmVtb3ZlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ1JlbW92ZSBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBSXSdcIiAoY2xpY2spPVwib25SZW1vdmUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1zdGFyLWVtcHR5LWljb24nXCIgW3Rvb2x0aXBdPVwiJ1NldCB0aGlzIHJlc3VsdCB2aWV3IGFzIGRlZmF1bHQnXCIgKGNsaWNrKT1cIm9uU2V0RGVmYXVsdFJlc3VsdFZpZXcoKVwiICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2hcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLXNlcGFyYXRvciAqbmdJZj1cImdyaWRUeXBlID09IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXCI+PC90cnUtdG9vbGJhci1zZXBhcmF0b3I+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWV4cG9ydC1pY29uJ1wiIFt0b29sdGlwXT1cIidFeHBvcnQnXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDwvdHJ1LXRvb2xiYXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kYXRhLWdyaWQtY29udGFpbmVyXCI+XHJcbiAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaGVhZGVySGVpZ2h0XT1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0hlaWdodF09XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvdmVybGF5TG9hZGluZ1RlbXBsYXRlXT1cImxvYWRpbmdUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvdmVybGF5Tm9Sb3dzVGVtcGxhdGVdPVwibm9Sb3dzVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2VsbERvdWJsZUNsaWNrZWQpPVwib25DZWxsRG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFDaGFuZ2VkKT1cIm9uUm93RGF0YUNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUF3RCxNQUFNLGVBQWUsQ0FBQztBQU1sSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFZaEMsTUFBTSxPQUFPLFdBQVc7SUE2QnRCLFlBQ1UsV0FBMkIsRUFDM0IsdUJBQW1ELEVBQ25ELGNBQWlDLEVBQ2pDLHNCQUFpRCxFQUNqRCxjQUFpQyxFQUNqQyxhQUErQjtRQUwvQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUEyQjtRQUNqRCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBOUJ6QyxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFFN0Isd0JBQW1CLEdBQWUsRUFBRSxDQUFDO1FBRXJD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QUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1ldmVudC1oYW5kbGVyJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgSVRydURhdGFHcmlkQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1kYXRhLWdyaWQtY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1RGF0YUdyaWRUeXBlcyB9IGZyb20gJy4vZW51bXMvdHJ1LWRhdGEtZ3JpZC10eXBlcyc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIHNraXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtc2VhcmNoLXJlc3VsdC12aWV3LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVDb25uZWN0aW9uSHViIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWNvbm5lY3Rpb24taHViJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWRhdGEtZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kYXRhLWdyaWQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRhdGEtZ3JpZC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHsnW2NsYXNzLnRydS1kYXRhLWdyaWRdJzogJ3RydWUnfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RGF0YUdyaWQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydURhdGFHcmlkQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGVudGl0eSE6IGFueTtcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBUcnVEYXRhR3JpZFR5cGVzID0gVHJ1RGF0YUdyaWRUeXBlcztcclxuXHJcbiAgY29sdW1uRGVmczogYW55ID0gW107XHJcbiAgcm93RGF0YTogYW55ID0gW107XHJcbiAgdmlld0Nob2ljZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBzZWxlY3RlZFZpZXdDaG9pY2U6IGFueTtcclxuICB1bmFzc29jaWF0ZWRDaG9pY2VzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2U6IGFueTtcclxuICBsb2FkaW5nVGVtcGxhdGU6IHN0cmluZyA9ICc8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXJcIj4gRGF0YSBpcyBsb2FkaW5nLi4uPC9zcGFuPic7XHJcbiAgbm9Sb3dzVGVtcGxhdGU6IHN0cmluZyA9IGA8c3Bhbj5SdW4gYSBzZWFyY2ggdG8gZmluZCBpdGVtcy48L3NwYW4+YDtcclxuICBncmlkVHlwZTogVHJ1RGF0YUdyaWRUeXBlcyA9IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXHJcbiAgdW5zYXZlZEVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbG9hZGVkRW50aXRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBsYXRlc3RTZXR1cFF1ZXJ5OiBhbnk7XHJcbiAgZ3JpZE9wdGlvbnM6IGFueSA9IHtcclxuICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcclxuICAgIHJvd1N0eWxlOiB7IGJhY2tncm91bmQ6ICd3aGl0ZScgfSxcclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlZDogKHBhcmFtczogYW55KSA9PiB7IH0sXHJcbiAgICBvbkNlbGxFZGl0aW5nU3RvcHBlZDogKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoeyByb3dOb2RlczogcGFyYW1zLm5vZGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hSZXN1bHRWaWV3TWFuYWdlcjogVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIsXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgdWlOb3RpZmljYXRpb246IFRydVVpTm90aWZpY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjb25uZWN0aW9uSHViOiBUcnVDb25uZWN0aW9uSHViKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuaGFuY2VSb3dEYXRhRm9yRW50aXR5ID0gKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICBsZXQgcm93RGF0YSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5yb3dEYXRhRW5oYW5jZXIoZW50aXR5KTtcclxuICAgIHJvd0RhdGEuJGVudGl0eSA9IGVudGl0eTtcclxuICAgIHJldHVybiByb3dEYXRhO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2V0Tm9Sb3dzVGVtcGxhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5vUm93c1RlbXBsYXRlID0gYDxzcGFuPk5vIHJvd3MgdG8gc2hvdy48L3NwYW4+YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uU2F2ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkucmVkcmF3Um93cygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uUmV2ZXJ0Q29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgIGxldCByb3dOb2RlczogYW55ID0gW107XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZm9yRWFjaE5vZGUoKHJvd05vZGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJvd05vZGVzLnB1c2gocm93Tm9kZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHJvd05vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKVxyXG4gICAgICAgICAgaWYgKHJvd05vZGVzW2ldLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddIDwgMClcclxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkudXBkYXRlUm93RGF0YSh7IHJlbW92ZTogW3Jvd05vZGVzW2ldLmRhdGFdIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBFbnZpcm9ubWVudC5vbkRlbGV0ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwgJiYgZXZlbnQuZW50aXRpZXMgJiYgZXZlbnQuZW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHJvd3NUb1JlbW92ZTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnJvd0RhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSBldmVudC5lbnRpdGllcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhW2ldLiRlbnRpdHkgPT09IGV2ZW50LmVudGl0aWVzW2pdKVxyXG4gICAgICAgICAgICAgIHJvd3NUb1JlbW92ZS5wdXNoKHRoaXMucm93RGF0YVtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHJvd3NUb1JlbW92ZSB9KTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb25IdWIuc3Vic2NyaWJlKFxyXG4gICAgICB0aGlzLmRhdGFDb250ZXh0LFxyXG4gICAgICB0aGlzLmVudGl0eSxcclxuICAgICAgdGhpcy5jb25maWcudGFibGVOYW1lLFxyXG4gICAgICAoKSA9PiB7IHJldHVybiB0aGlzLmxvYWRlZEVudGl0aWVzIH0sXHJcbiAgICAgICgpID0+IHsgcmV0dXJuIHRoaXMubGF0ZXN0U2V0dXBRdWVyeSB9LFxyXG4gICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZXhwYW5kcyxcclxuICAgICAgW10sXHJcbiAgICAgICgpID0+IHsgcmV0dXJuIHRydWU7IH0pLnN1YnNjcmliZSgoZGF0YUNoYW5nZTogVHJ1RGF0YUNoYW5nZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGFDaGFuZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZEdyaWREYXRhID0gKGVudGl0aWVzOiBBcnJheTxhbnk+KSA9PiB7XHJcbiAgICB0aGlzLnJvd0RhdGEgPSBlbnRpdGllcy5tYXAodGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSwgZW50aXRpZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkTWFueVRvTWFueUdyaWREYXRhID0gKGFzc29jaWF0ZWRFbnRpdGllczogQXJyYXk8YW55PiwgYXNzb2NpYXRhYmxlRW50aXRpZXM6IEFycmF5PGFueT4sIGluaXRhbExvYWQ6IGJvb2xlYW4pID0+IHtcclxuICAgIGlmIChpbml0YWxMb2FkKVxyXG4gICAgICB0aGlzLnJvd0RhdGEgPSBhc3NvY2lhdGVkRW50aXRpZXMubWFwKHRoaXMuZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHksIGFzc29jaWF0ZWRFbnRpdGllcyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIGFzc29jaWF0ZWRFbnRpdGllcyA9IHRoaXMucm93RGF0YS5tYXAoKGU6IGFueSkgPT4geyByZXR1cm4gZS4kZW50aXR5IH0pO1xyXG4gICAgbGV0IGFzc29jaWF0YWJsZVR5cGVOYW1lID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eU1hbnlUb01hbnlUeXBlLm5hbWVcclxuICAgIGxldCBhc3NvY2lhdGVkTWFwT2ZBc3NvY2lhdGFibGUgPSBfLm1hcChhc3NvY2lhdGVkRW50aXRpZXMsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlWydvJyArIGFzc29jaWF0YWJsZVR5cGVOYW1lXTsgfSk7XHJcbiAgICB0aGlzLnVuYXNzb2NpYXRlZENob2ljZXMgPSBhc3NvY2lhdGFibGVFbnRpdGllcy5maWx0ZXIob2JqZWN0MSA9PiB7XHJcbiAgICAgIHJldHVybiAhYXNzb2NpYXRlZE1hcE9mQXNzb2NpYXRhYmxlLnNvbWUob2JqZWN0MiA9PiB7IHJldHVybiBvYmplY3QxLnZhbHVlLiQgPT09IG9iamVjdDJbYXNzb2NpYXRhYmxlVHlwZU5hbWUgKyAnUmVmJ107IH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydERhdGEgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnVpTm90aWZpY2F0aW9uLnNob3dFeHBvcnREaWFsb2coKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcclxuICAgICAgbGV0IGV4cG9ydEdyaWRTcGVjO1xyXG4gICAgICBpZiAodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUpXHJcbiAgICAgICAgZXhwb3J0R3JpZFNwZWMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZXhwb3J0R3JpZFNwZWMgPSAnJGN1c3RvbT0nICsgMTtcclxuXHJcbiAgICAgIGxldCByb3dOb2RlczogYW55ID0gW107XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmZvckVhY2hOb2RlKChyb3dOb2RlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICByb3dOb2Rlcy5wdXNoKHJvd05vZGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgbGV0IHJlZnMgPSBfLm1hcChyb3dOb2RlcywgKHJvd05vZGUpID0+IHsgcmV0dXJuIHJvd05vZGUuZGF0YS4kZW50aXR5W3RoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLm5hbWUgKyAnUmVmJ107IH0pO1xyXG4gICAgICB0aGlzLmRhdGFDb250ZXh0XHJcbiAgICAgICAgLmVudGl0eUFjY2VzcygpXHJcbiAgICAgICAgLmV4cG9ydCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSwgZXhwb3J0R3JpZFNwZWMsIHRoaXMubGF0ZXN0U2V0dXBRdWVyeSwgcmVmcy5qb2luKCcsJyksIHJlc3VsdCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUm93RGF0YUNoYW5nZWQgPSAoZGF0YTogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5yb3dEYXRhID09PSBudWxsKVxyXG4gICAgICB0aGlzLnNldE5vUm93c1RlbXBsYXRlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNlbGxEb3VibGVDbGlja2VkID0gKGdyaWRDb25maWc6IGFueSkgPT4ge1xyXG4gICAgaWYgKGdyaWRDb25maWcuY29sRGVmLmNlbGxDbGFzcyA9PT0gJ2FnLXBrLWFsaWduZWQtY2VsbCcpXHJcbiAgICAgIHRoaXMuY29uZmlnLnJvd0hlYWRlckRvdWJsZUNsaWNrZWQoZ3JpZENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCA9IChzZXR1cFF1ZXJ5OiBhbnkpID0+IHtcclxuICAgIGxldCBlbnRpdHlMb2FkZWQgPSB0aGlzLmxvYWRlZEVudGl0aWVzLnNvbWUoKHJlZikgPT4geyByZXR1cm4gcmVmID09PSB0aGlzLmVudGl0eVt0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lICsgJ1JlZiddOyB9KTtcclxuICAgIGxldCBqb2lucyA9IFtdO1xyXG4gICAgaWYgKGVudGl0eUxvYWRlZCkge1xyXG4gICAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoQ2FjaGVPbmx5KFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMpKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaFF1ZXJ5Q2hvaWNlcyhcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZSxcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5tYW55VG9NYW55U2V0dXBRdWVyeSh0aGlzLmVudGl0eSksIG51bGwsIGZhbHNlKSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2goXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUsXHJcbiAgICAgICAgc2V0dXBRdWVyeSxcclxuICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZXhwYW5kcywgZmFsc2UpKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaFF1ZXJ5Q2hvaWNlcyhcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZSxcclxuICAgICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5tYW55VG9NYW55U2V0dXBRdWVyeSh0aGlzLmVudGl0eSksIG51bGwsIHRydWUpKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubGF0ZXN0U2V0dXBRdWVyeSA9IHNldHVwUXVlcnk7XHJcblxyXG4gICAgZm9ya0pvaW4oam9pbnMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3VsdHMgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0Tm9Sb3dzVGVtcGxhdGUoKTtcclxuICAgICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgICAgdGhpcy5sb2FkTWFueVRvTWFueUdyaWREYXRhKHJlc3VsdHNbMF0sIHJlc3VsdHNbMV0sIHRydWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMubG9hZEdyaWREYXRhKHJlc3VsdHNbMF0pO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmdyaWRUeXBlICE9PSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaClcclxuICAgICAgICAgIHRoaXMubG9hZGVkRW50aXRpZXMucHVzaCh0aGlzLmVudGl0eVt0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lICsgJ1JlZiddKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblVuYXNzb2NpYXRlZENob2ljZUNoYW5nZWQgPSAob3B0aW9uOiBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uIHwgbnVsbCkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIGNhbkFkZCA9ICgpOiBib29sZWFuID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlICE9PSB1bmRlZmluZWQ7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQWRkID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSkge1xyXG4gICAgICBsZXQgcGFyZW50TmFtZSA9IHRoaXMuZW50aXR5LmNvbnN0cnVjdG9yLm5hbWU7XHJcbiAgICAgIGxldCBhc3NvY2lhdGVkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlO1xyXG4gICAgICBsZXQgdW5hc3NvY2lhdGVkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZTtcclxuICAgICAgbGV0IHJlZiA9IHRoaXMuc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2UudmFsdWUuJDtcclxuICAgICAgbGV0IGNoaWxkVG9Bc3NvY2lhdGUgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaEJ5UmVmQ2FjaGVPbmx5KHVuYXNzb2NpYXRlZFR5cGUsIHJlZiwgdHJ1ZSlcclxuICAgICAgaWYgKGNoaWxkVG9Bc3NvY2lhdGUpIHtcclxuICAgICAgICAvLyBjcmVhdGUgbWFueS10by1tYW55IGVudGl0eVxyXG4gICAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5KHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKGFzc29jaWF0ZWRUeXBlKSk7XHJcbiAgICAgICAgbmV3RW50aXR5LiRlbnRpdHlbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddID0gY2hpbGRUb0Fzc29jaWF0ZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ107XHJcbiAgICAgICAgbmV3RW50aXR5LiRlbnRpdHlbcGFyZW50TmFtZSArICdSZWYnXSA9IHRoaXMuZW50aXR5W3BhcmVudE5hbWUgKyAnUmVmJ107XHJcbiAgICAgICAgLy8gcmVtb3ZlIGl0ZW0gZnJvbSB0aGUgYWRkIGRyb3Bkb3duIGNvbnRyb2xcclxuICAgICAgICBsZXQgaXRlbUluZGV4ID0gdGhpcy51bmFzc29jaWF0ZWRDaG9pY2VzLmZpbmRJbmRleCgoY2hvaWNlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY2hvaWNlW3VuYXNzb2NpYXRlZFR5cGUubmFtZSArICdSZWYnXSA9PT0gY2hpbGRUb0Fzc29jaWF0ZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ107XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy51bmFzc29jaWF0ZWRDaG9pY2VzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xyXG4gICAgICAgIC8vIGNsZWFyIGFkZCBzZWxlY3Rpb25cclxuICAgICAgICB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIC8vIGFkZCByb3cgdG8gZ3JpZFxyXG4gICAgICAgIHRoaXMudW5zYXZlZEVudGl0aWVzLnB1c2gobmV3RW50aXR5KTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbbmV3RW50aXR5XSwgYWRkSW5kZXg6IDAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5KHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlKSk7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyBhZGQ6IFtuZXdFbnRpdHldLCBhZGRJbmRleDogMCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgaWYgKHNlbGVjdGVkUm93cy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGVudGl0aWVzID0gc2VsZWN0ZWRSb3dzLm1hcChmdW5jdGlvbiAocm93OiBhbnkpIHsgcmV0dXJuIHJvdy4kZW50aXR5OyB9KTtcclxuICAgICAgbGV0IGNvbmZpcm1Nc2cgPSB0aGlzLmFwcEVudmlyb25tZW50LmZvcm1hdERlbGV0ZUNvbmZpcm1hdGlvbk1lc3NhZ2UodGhpcy5jb25maWcudGFibGVOYW1lLCB0aGlzLmNvbmZpZy50YWJsZVBsdXJhbExhYmVsLCBzZWxlY3RlZFJvd3MubGVuZ3RoKTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSkge1xyXG4gICAgICAgIGxldCBvblN1Y2Nlc3MgPSAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uU2VhcmNoKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5zZXR1cFF1ZXJ5KHRoaXMuZW50aXR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQuZGVsZXRlKGVudGl0aWVzLCBjb25maXJtTXNnLCBvblN1Y2Nlc3MpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQuZGVsZXRlKGVudGl0aWVzLCBjb25maXJtTXNnKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnTm9SZWNvcmRzU2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25LZWVwID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgaWYgKHNlbGVjdGVkUm93cy5sZW5ndGgpXHJcbiAgICAgIHRoaXMucm93RGF0YSA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gIH1cclxuXHJcbiAgb25SZW1vdmUgPSAoKTogdm9pZCA9PiB7XHJcbiAgICBsZXQgc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0U2VsZWN0ZWRSb3dzKCk7XHJcbiAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgcmVtb3ZlOiBzZWxlY3RlZFJvd3MgfSk7XHJcbiAgfVxyXG5cclxuICBvblNldERlZmF1bHRSZXN1bHRWaWV3ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgYWxlcnQoJ05vdCBJbXBsZW1lbnRlZCcpO1xyXG4gIH1cclxuXHJcbiAgb25FeHBvcnQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLmV4cG9ydERhdGEoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUbygpO1xyXG4gICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNvbHVtbkRlZnM7XHJcbiAgICB0aGlzLmdyaWRUeXBlID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmdyaWRUeXBlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsIHx8IHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy9zZXRUaW1lb3V0IHRvIHByZXZlbnQ6IEVSUk9SIEVycm9yOiBORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuIFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucGFyZW50VG9vbGJhclRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRWaWV3TWFuYWdlci5zZWFyY2hWaWV3VG9vbGJhclRlbXBsYXRlO1xyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWwgfHwgdGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KSB7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC10b29sYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgPHRydS10b29sYmFyPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwidW5hc3NvY2lhdGVkQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkT3B0aW9uKV09XCJzZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVW5hc3NvY2lhdGVkQ2hvaWNlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55XCI+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWFkZC1pY29uJ1wiIFt0b29sdGlwXT1cIidBZGQgLSBbQ3RybCArIEldJ1wiIFtkaXNhYmxlZF09XCIhY2FuQWRkKClcIiAob25DbGljayk9XCJvbkFkZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWRlbGV0ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidEZWxldGUgLSBbQ3RybCArIERdJ1wiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWtlZXAtaWNvbidcIiBbdG9vbHRpcF09XCInS2VlcCBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBLXSdcIiAoY2xpY2spPVwib25LZWVwKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmVtb3ZlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ1JlbW92ZSBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBSXSdcIiAoY2xpY2spPVwib25SZW1vdmUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1zdGFyLWVtcHR5LWljb24nXCIgW3Rvb2x0aXBdPVwiJ1NldCB0aGlzIHJlc3VsdCB2aWV3IGFzIGRlZmF1bHQnXCIgKGNsaWNrKT1cIm9uU2V0RGVmYXVsdFJlc3VsdFZpZXcoKVwiICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2hcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLXNlcGFyYXRvciAqbmdJZj1cImdyaWRUeXBlID09IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXCI+PC90cnUtdG9vbGJhci1zZXBhcmF0b3I+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWV4cG9ydC1pY29uJ1wiIFt0b29sdGlwXT1cIidFeHBvcnQnXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDwvdHJ1LXRvb2xiYXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kYXRhLWdyaWQtY29udGFpbmVyXCI+XHJcbiAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaGVhZGVySGVpZ2h0XT1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0hlaWdodF09XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvdmVybGF5TG9hZGluZ1RlbXBsYXRlXT1cImxvYWRpbmdUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvdmVybGF5Tm9Sb3dzVGVtcGxhdGVdPVwibm9Sb3dzVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2VsbERvdWJsZUNsaWNrZWQpPVwib25DZWxsRG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFDaGFuZ2VkKT1cIm9uUm93RGF0YUNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -25,8 +25,8 @@ export class TruConnectionHub {
|
|
|
25
25
|
console.log(`SignalR connection error: ${error}`);
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
|
-
this.subscribe = (dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded) => {
|
|
29
|
-
return new TruDataChangeParser(this.connection, dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
|
|
28
|
+
this.subscribe = (dataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded) => {
|
|
29
|
+
return new TruDataChangeParser(this.connection, dataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
|
|
30
30
|
};
|
|
31
31
|
this.connection = new signalR.HubConnectionBuilder()
|
|
32
32
|
.withUrl(`${this.appEnvironment.appUri}/notificationhub`, {
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
43
43
|
providedIn: 'root',
|
|
44
44
|
}]
|
|
45
45
|
}], ctorParameters: function () { return [{ type: i1.TruAppEnvironment }, { type: i2.TruModelPropertyLookup }]; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNvbm5lY3Rpb24taHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtY29ubmVjdGlvbi1odWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBSTdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUXhFLE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsY0FBaUMsRUFBVSxtQkFBMkM7UUFBdEYsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVUsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQVExRyxVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSTtnQkFDRixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzt5QkFDdEMsSUFBSSxDQUFDLENBQUMsWUFBb0IsRUFBRSxFQUFFO3dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxZQUFZLEVBQUUsQ0FBQyxDQUFDO29CQUMzRSxDQUFDLENBQUMsQ0FBQTtnQkFDTixDQUFDLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNuRDtRQUNILENBQUMsQ0FBQTtRQUVELGNBQVMsR0FBRyxDQUNWLFdBQTJCLEVBQzNCLE1BQTRCLEVBQzVCLFNBQWlCLEVBQ2pCLGdCQUEyQixFQUMzQixjQUF5QixFQUN6QixjQUFrQixFQUNsQixXQUEwQixFQUMxQixRQUF1QixFQUEwQixFQUFFO1lBQ25ELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyTSxDQUFDLENBQUE7UUFuQ0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTthQUNqRCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sa0JBQWtCLEVBQUU7WUFDeEQsZUFBZSxFQUFFLElBQUk7WUFDckIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVO1NBQ2hELENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLENBQUM7OzZHQVRVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBzaWduYWxSIGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHJcIlxyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tICcuLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZVBhcnNlciB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlLXBhcnNlcic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSAnLi90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDb25uZWN0aW9uSHViIHtcclxuICBwcml2YXRlIGNvbm5lY3Rpb246IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsIHByaXZhdGUgbW9kZWxQcm9wZXJ0eUxvb2t1cDogVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCkge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IHNpZ25hbFIuSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gICAgICAud2l0aFVybChgJHt0aGlzLmFwcEVudmlyb25tZW50LmFwcFVyaX0vbm90aWZpY2F0aW9uaHViYCwge1xyXG4gICAgICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSxcclxuICAgICAgICB0cmFuc3BvcnQ6IHNpZ25hbFIuSHR0cFRyYW5zcG9ydFR5cGUuV2ViU29ja2V0cyxcclxuICAgICAgfSkud2l0aEF1dG9tYXRpY1JlY29ubmVjdCgpLmJ1aWxkKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbihcImVycm9yXCIsICh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04ucGFyc2UodmFsdWUpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJTb2NrZXQsICdPUEVOJywgeyB2YWx1ZTogMSwgfSk7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5zdGFydCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoJ2dldENvbm5lY3Rpb25JZCcpXHJcbiAgICAgICAgICAudGhlbigoY29ubmVjdGlvbklkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFNpZ25hbFIgY29ubmVjdGlvbiBzdWNjZXNzISBjb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgU2lnbmFsUiBjb25uZWN0aW9uIGVycm9yOiAke2Vycm9yfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlID0gKFxyXG4gICAgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgZW50aXR5OiB0eXBlb2YgVHJ1RW50aXR5QmFzZSxcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgZ2V0TGF0ZXN0UmVzdWx0czogKCkgPT4gYW55LFxyXG4gICAgZ2V0TGF0ZXN0UXVlcnk6ICgpID0+IGFueSxcclxuICAgIGNvbnRleHRGaWx0ZXJzOiBbXSxcclxuICAgIGV4cGFuZFBhdGhzOiBBcnJheTxzdHJpbmc+LFxyXG4gICAgaXNMb2FkZWQ6ICgpID0+IGJvb2xlYW4pOiBTdWJqZWN0PFRydURhdGFDaGFuZ2U+ID0+IHtcclxuICAgIHJldHVybiBuZXcgVHJ1RGF0YUNoYW5nZVBhcnNlcih0aGlzLmNvbm5lY3Rpb24sIGRhdGFDb250ZXh0LCBlbnRpdHksIHRhYmxlTmFtZSwgZ2V0TGF0ZXN0UmVzdWx0cywgZ2V0TGF0ZXN0UXVlcnksIGNvbnRleHRGaWx0ZXJzLCBleHBhbmRQYXRocywgaXNMb2FkZWQsIHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cCkub25EYXRhQ2hhbmdlZCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { EntityState } from "breeze-client";
|
|
3
|
-
import { Observable
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./tru-breeze-context-factory";
|
|
6
6
|
import * as i2 from "./tru-app-environment";
|
|
@@ -32,27 +32,25 @@ export class TruDataContext {
|
|
|
32
32
|
});
|
|
33
33
|
return errors;
|
|
34
34
|
});
|
|
35
|
-
return
|
|
35
|
+
return errorsPerEntity;
|
|
36
36
|
};
|
|
37
37
|
this.formatValidationErrors = (entities = null) => {
|
|
38
38
|
let errors = this.getValidationErrors(entities);
|
|
39
39
|
let formattedErrors = new Array();
|
|
40
|
-
errors.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}));
|
|
55
|
-
});
|
|
40
|
+
formattedErrors.push(errors.map((e) => {
|
|
41
|
+
if (e.propertyName) {
|
|
42
|
+
return e.entity.entityType.defaultResourceName + '.' + e.propertyName + ': ' + e.errorMessage;
|
|
43
|
+
}
|
|
44
|
+
var mergeData = JSON.parse(e.entity.Merge_Data);
|
|
45
|
+
if (mergeData &&
|
|
46
|
+
mergeData.constructor === Object &&
|
|
47
|
+
Object.entries(mergeData).length > 0 &&
|
|
48
|
+
mergeData[e.property.name]) {
|
|
49
|
+
return mergeData[e.property.name].modifiedBy + ' changed ' + e.property.name + ' to ' + mergeData[e.property.name].value + '. Accept or Decline the change. ';
|
|
50
|
+
}
|
|
51
|
+
var propertyName = e.property.name ? e.property.name : '[Unknown Property]';
|
|
52
|
+
return e.entity.entityType.defaultResourceName + '.' + propertyName + ': has invalid data.';
|
|
53
|
+
}));
|
|
56
54
|
return formattedErrors;
|
|
57
55
|
};
|
|
58
56
|
this.findCachedCascadeDeleteDescendants = (entity) => {
|
|
@@ -214,4 +212,4 @@ TruDataContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versi
|
|
|
214
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataContext, decorators: [{
|
|
215
213
|
type: Injectable
|
|
216
214
|
}], ctorParameters: function () { return [{ type: i1.TruBreezeContextFactory }, { type: i2.TruAppEnvironment }, { type: i3.TruEntityAccessor }, { type: i4.TruUiNotification }]; } });
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVSxXQUFXLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBS2pGLE9BQU8sRUFBZSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFHbkQsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFDVSxvQkFBNkMsRUFDN0MsY0FBaUMsRUFDakMsY0FBaUMsRUFDakMsY0FBaUM7UUFIakMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQVBuQywyQkFBc0IsR0FBa0IsRUFBRSxDQUFDO1FBQzNDLGtDQUE2QixHQUFrQixFQUFFLENBQUM7UUFZMUQsOEJBQXlCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDOUQsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsd0JBQW1CLEdBQUcsQ0FBQyxXQUFpQyxJQUFJLEVBQXdDLEVBQUU7WUFDcEcsUUFBUSxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZELElBQUksZUFBZSxHQUFHLFFBQVMsQ0FBQyxHQUFHLENB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QXROQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQXNGRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUM7SUFDM0MsQ0FBQzs7MkdBekdVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRpdHksIEVudGl0eVN0YXRlLCBFbnRpdHlUeXBlLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiYnJlZXplLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBUcnVCcmVlemVDb250ZXh0RmFjdG9yeSwgVHJ1QnJlZXplQ29udGV4dCB9IGZyb20gJy4vdHJ1LWJyZWV6ZS1jb250ZXh0LWZhY3RvcnknO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlBY2Nlc3NvciB9IGZyb20gJy4vdHJ1LWVudGl0eS1hY2Nlc3Nvcic7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuL3RydS1hcHAtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBkZWZlciwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRydURhdGFDb250ZXh0IHtcclxuICBwcml2YXRlIF9icmVlemVDb250ZXh0OiBUcnVCcmVlemVDb250ZXh0O1xyXG4gIHByaXZhdGUgX3BlbmRpbmdEZWxldGVFbnRpdGllczogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gIHByaXZhdGUgX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGJyZWV6ZUNvbnRleHRGYWN0b3J5OiBUcnVCcmVlemVDb250ZXh0RmFjdG9yeSxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBlbnRpdHlBY2Nlc3NvcjogVHJ1RW50aXR5QWNjZXNzb3IsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvblxyXG4gICkge1xyXG4gICAgdGhpcy5fYnJlZXplQ29udGV4dCA9IHRoaXMuYnJlZXplQ29udGV4dEZhY3RvcnkuY3JlYXRlQ29udGV4dCgpO1xyXG4gICAgdGhpcy5lbnRpdHlBY2Nlc3Nvci5jb250ZXh0ID0gdGhpcztcclxuICB9XHJcblxyXG4gIHZhbGlkYXRpb25DaGFuZ2VEZXRlY3Rpb24gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgIHRoaXMuZW50aXR5TWFuYWdlci52YWxpZGF0aW9uRXJyb3JzQ2hhbmdlZC5zdWJzY3JpYmUoZW50aXRpZXMgPT4ge1xyXG4gICAgICBvYnNlcnZlci5uZXh0KGVudGl0aWVzKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBnZXRWYWxpZGF0aW9uRXJyb3JzID0gKGVudGl0aWVzOiBBcnJheTxFbnRpdHk+IHwgbnVsbCA9IG51bGwpOiBPYnNlcnZhYmxlPEFycmF5PFZhbGlkYXRpb25FcnJvcltdPj4gPT4ge1xyXG4gICAgZW50aXRpZXMgPSBlbnRpdGllcyB8fCB0aGlzLmVudGl0eU1hbmFnZXIuZ2V0Q2hhbmdlcygpO1xyXG4gICAgdmFyIGVycm9yc1BlckVudGl0eSA9IGVudGl0aWVzIS5tYXAoKGVudGl0eSk6IFZhbGlkYXRpb25FcnJvcltdID0+IHtcclxuICAgICAgdmFyIGVycm9ycyA9IGVudGl0eS5lbnRpdHlBc3BlY3QuZ2V0VmFsaWRhdGlvbkVycm9ycygpO1xyXG4gICAgICBlcnJvcnMgPSBlcnJvcnMubWFwKChlcnI6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGVudGl0eTogZW50aXR5LFxyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnIuZXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgcHJvcGVydHk6IGVyci5wcm9wZXJ0eVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBvZihlcnJvcnNQZXJFbnRpdHkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRWYWxpZGF0aW9uRXJyb3JzID0gKGVudGl0aWVzOiBBcnJheTxFbnRpdHk+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxzdHJpbmdbXT4gPT4ge1xyXG4gICAgbGV0IGVycm9ycyA9IHRoaXMuZ2V0VmFsaWRhdGlvbkVycm9ycyhlbnRpdGllcyk7XHJcbiAgICBsZXQgZm9ybWF0dGVkRXJyb3JzID0gbmV3IEFycmF5PHN0cmluZ1tdPigpO1xyXG4gICAgZXJyb3JzLnN1YnNjcmliZShlcnJvcnNBcnJheSA9PiB7XHJcbiAgICAgIGZvcm1hdHRlZEVycm9ycy5wdXNoKGVycm9yc0FycmF5Lm1hcCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGUucHJvcGVydHlOYW1lKSB7XHJcbiAgICAgICAgICByZXR1cm4gZS5lbnRpdHkuZW50aXR5VHlwZS5kZWZhdWx0UmVzb3VyY2VOYW1lICsgJy4nICsgZS5wcm9wZXJ0eU5hbWUgKyAnOiAnICsgZS5lcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBtZXJnZURhdGEgPSBKU09OLnBhcnNlKGUuZW50aXR5Lk1lcmdlX0RhdGEpO1xyXG4gICAgICAgIGlmIChtZXJnZURhdGEgJiZcclxuICAgICAgICAgIG1lcmdlRGF0YS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0ICYmXHJcbiAgICAgICAgICBPYmplY3QuZW50cmllcyhtZXJnZURhdGEpLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIG1lcmdlRGF0YVtlLnByb3BlcnR5Lm5hbWVdKSB7XHJcbiAgICAgICAgICByZXR1cm4gbWVyZ2VEYXRhW2UucHJvcGVydHkubmFtZV0ubW9kaWZpZWRCeSArICcgY2hhbmdlZCAnICsgZS5wcm9wZXJ0eS5uYW1lICsgJyB0byAnICsgbWVyZ2VEYXRhW2UucHJvcGVydHkubmFtZV0udmFsdWUgKyAnLiBBY2NlcHQgb3IgRGVjbGluZSB0aGUgY2hhbmdlLiAnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBlLnByb3BlcnR5Lm5hbWUgPyBlLnByb3BlcnR5Lm5hbWUgOiAnW1Vua25vd24gUHJvcGVydHldJztcclxuICAgICAgICByZXR1cm4gZS5lbnRpdHkuZW50aXR5VHlwZS5kZWZhdWx0UmVzb3VyY2VOYW1lICsgJy4nICsgcHJvcGVydHlOYW1lICsgJzogaGFzIGludmFsaWQgZGF0YS4nXHJcbiAgICAgIH0pKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRDYWNoZWRDYXNjYWRlRGVsZXRlRGVzY2VuZGFudHMgPSAoZW50aXR5OiBFbnRpdHkpOiBBcnJheTxFbnRpdHk+ID0+IHtcclxuICAgIGxldCBkZXNjZW5kYW50czogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gICAgdHlwZSBrZXlPZkVudGl0eSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBsZXQgdHlwZSA9IGVudGl0eS5lbnRpdHlUeXBlO1xyXG4gICAgbGV0IHR5cGVOYW1lID0gdHlwZS5kZWZhdWx0UmVzb3VyY2VOYW1lO1xyXG4gICAgbGV0IGVudGl0eUNoaWxkcmVuTmFtZXM6IGFueSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoJ1JlcGxhY2Ugd2l0aDogTW9kZWxOYXZpZ2F0aW9uUHJvcGVydGllcy52YWx1ZScpKVt0eXBlTmFtZV07XHJcbiAgICBPYmplY3QuZW50cmllcyhlbnRpdHlDaGlsZHJlbk5hbWVzKVxyXG4gICAgICAuZm9yRWFjaCgoW2ssIHZdOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgcHJvcGVydHkgPSBlbnRpdHlbayBhcyBrZXlPZkVudGl0eV0gYXMgYW55O1xyXG4gICAgICAgIHByb3BlcnR5LmZvckVhY2goKGNoaWxkOiBFbnRpdHkpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdi5kb2VzQ2FzY2FkZURlbGV0ZSAmJiBjaGlsZC5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUgIT09IEVudGl0eVN0YXRlLkFkZGVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVsZXRlIG9mIHNlbGVjdGVkIGl0ZW0gaXMgbm90IHBvc3NpYmxlIGR1ZSB0byByZWxhdGVkIGNoaWxkIHRoYXQgaXMgbm90IHNldHVwIGZvciBjYXNjYWRlIGRlbGV0ZS4gIERlbGV0ZSBjaGlsZHJlbiBpdGVtcyBmaXJzdC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHMuY29uY2F0KHRoaXMuZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyhjaGlsZCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRlc2NlbmRhbnRzID0gcHJvcGVydHkuY29uY2F0KGRlc2NlbmRhbnRzKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gZGVzY2VuZGFudHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtDYWNoZWREZXNjZW5kYW50c0ZvckRlbGV0ZSA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PikgPT4ge1xyXG4gICAgdmFyIGNhc2NhZGVEZWxldGVEZXNjZW5kYW50c1BlckVudGl0eSA9IGVudGl0aWVzLm1hcCgoZW50aXR5OiBFbnRpdHkpID0+IHsgcmV0dXJuIHRoaXMuZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyhlbnRpdHkpOyB9LCBlbnRpdGllcyk7XHJcbiAgICB2YXIgY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzID0gY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzUGVyRW50aXR5LnJlZHVjZSgobWVtbywgaSkgPT4geyByZXR1cm4gbWVtby5jb25jYXQoaSk7IH0pO1xyXG4gICAgY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzLmZvckVhY2goKGVudGl0eTogRW50aXR5KSA9PiB7IHRoaXMuZW50aXR5TWFuYWdlci5kZXRhY2hFbnRpdHkoZW50aXR5KTsgfSk7XHJcbiAgICB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMgPSB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMuY29uY2F0KGVudGl0aWVzKTtcclxuICAgIGxldCBjb21iaW5lZCA9IHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMuY29uY2F0KGNhc2NhZGVEZWxldGVEZXNjZW5kYW50cyk7XHJcbiAgICB0aGlzLl9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzID0gY29tYmluZWQuZmlsdGVyKChuLCBpKSA9PiBjb21iaW5lZC5pbmRleE9mKG4pID09PSBpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFya0ZvckRlbGV0ZSA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PikgPT4ge1xyXG4gICAgaWYgKGVudGl0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5tYXJrQ2FjaGVkRGVzY2VuZGFudHNGb3JEZWxldGUoZW50aXRpZXMpO1xyXG4gICAgICBlbnRpdGllcy5mb3JFYWNoKChlbnRpdHk6IEVudGl0eSkgPT4ge1xyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3Quc2V0RGVsZXRlZCgpO1xyXG4gICAgICAgIC8vZW50aXR5Ll9hc3NvY2lhdGVkRGF0YUNhY2hlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBicmVlemVDb250ZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZW50aXR5TWFuYWdlcigpIHtcclxuICAgIHJldHVybiB0aGlzLl9icmVlemVDb250ZXh0LmVudGl0eU1hbmFnZXI7XHJcbiAgfVxyXG5cclxuICBoYXNDaGFuZ2VzID0gKGVudGl0eVR5cGVzOiBBcnJheTxFbnRpdHlUeXBlPiA9IFtdKSA9PiB7XHJcbiAgICBpZiAoZW50aXR5VHlwZXMubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gdGhpcy5fYnJlZXplQ29udGV4dC5lbnRpdHlNYW5hZ2VyLmdldENoYW5nZXMoZW50aXR5VHlwZXMpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlci5nZXRDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBlbnRpdHlBY2Nlc3MgPSAoKTogVHJ1RW50aXR5QWNjZXNzb3IgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5QWNjZXNzb3I7XHJcbiAgfVxyXG5cclxuICBleHBvcnRDYWhjZSA9ICgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlci5leHBvcnRFbnRpdGllcygpKTtcclxuICB9XHJcblxyXG4gIHNhdmUgPSAoXHJcbiAgICBlbnRpdGllczogQXJyYXk8RW50aXR5PiB8IG51bGwgPSBudWxsLFxyXG4gICAgZGVsZXRlT3BlcmF0aW9uOiBib29sZWFuID0gZmFsc2UpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmFwcEVudmlyb25tZW50Lm1zZ1NhdmVJblByb2dyZXNzKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciB2YWxpZGF0aW9uRXJyb3JNZXNzYWdlcyA9IHRoaXMuZm9ybWF0VmFsaWRhdGlvbkVycm9ycyhlbnRpdGllcyk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uRXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy90aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnSW52YWxpZERhdGEsIHZhbGlkYXRpb25FcnJvck1lc3NhZ2VzKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaGFzQ2hhbmdlcygpLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ05vQ2hhbmdlc1RvU2F2ZSk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lbnRpdHlNYW5hZ2VyLnNhdmVDaGFuZ2VzKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgaWYgKCFkZWxldGVPcGVyYXRpb24pIHtcclxuICAgICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uc3VjY2Vzcyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ1NhdmVTdWNjZXNzZnVsKTtcclxuICAgICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuc2F2ZUNvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogdHJ1ZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICB9KS5jYXRjaCgoZTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5zYXZlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiBmYWxzZSB9KTtcclxuICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldmVydCA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMudWlOb3RpZmljYXRpb24uY29uZmlybSgnQ29uZmlybSBBY3Rpb24nLCAnUmV2ZXJ0ICcgKyB0aGlzLmhhc0NoYW5nZXMoKS5sZW5ndGggKyAnIGNoYW5nZWQgcmVjb3JkKHMpPycpLnRoZW4oKGNvbmZpcm06IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNvbmZpcm0pIHtcclxuICAgICAgICB0aGlzLmVudGl0eU1hbmFnZXIucmVqZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQucmV2ZXJ0Q29tcGxldGUoeyBzdWNjZXNzZnVsOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldmVydFdpdGhvdXRQcm9tcHQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgdGhpcy5hcHBFbnZpcm9ubWVudC5yZXZlcnRDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGUgPSAoXHJcbiAgICBlbnRpdGllczogQXJyYXk8RW50aXR5PixcclxuICAgIGNvbmZpcm1Nc2c6IHN0cmluZyxcclxuICAgIG9uU3VjY2VzczogRnVuY3Rpb24gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpID0+IHtcclxuICAgIHZhciBuZXdFbnRpdGllczogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gICAgdmFyIGV4aXN0aW5nRW50aXRpZXM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuICAgIGVudGl0aWVzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgaWYgKGUuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzQWRkZWQoKSlcclxuICAgICAgICBuZXdFbnRpdGllcy5wdXNoKGUpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgZXhpc3RpbmdFbnRpdGllcy5wdXNoKGUpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAobmV3RW50aXRpZXMubGVuZ3RoICYmIGV4aXN0aW5nRW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ0Nhbm5vdERlbGV0ZU5ld0FuZEV4aXN0aW5nUmVjb3Jkcyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChleGlzdGluZ0VudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5oYXNDaGFuZ2VzKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnRGlydHlQcmV2ZW50c0RlbGV0ZUV4aXN0aW5nUmVjb3JkKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmNvbmZpcm0oJ0NvbmZpcm0gQWN0aW9uJywgY29uZmlybU1zZykudGhlbigoY29uZmlybTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgIGlmIChuZXdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgICAgIG5ld0VudGl0aWVzLmZvckVhY2goKGVudGl0eTogRW50aXR5KSA9PiB7XHJcbiAgICAgICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3QuY2xlYXJWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubWFya0ZvckRlbGV0ZShuZXdFbnRpdGllcyk7XHJcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSBvblN1Y2Nlc3MoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMubWFya0ZvckRlbGV0ZShleGlzdGluZ0VudGl0aWVzKTtcclxuICAgICAgICB9IGNhdGNoIChleGNlcHRpb246IGFueSkge1xyXG4gICAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcihleGNlcHRpb24ubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2F2ZShudWxsLCB0cnVlKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIHZhciBlbnRpdGllc0RlbGV0ZWQgPSB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMuY29uY2F0KHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMpO1xyXG4gICAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5kZWxldGVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUsIGVudGl0aWVzOiBlbnRpdGllc0RlbGV0ZWQgfSk7XHJcbiAgICAgICAgICBpZiAoZW50aXRpZXNEZWxldGVkLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEZWxldGVFbnRpdGllcyA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zdWNjZXNzKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnRGVsZXRlU3VjY2Vzc2Z1bCk7XHJcbiAgICAgICAgICBpZiAob25TdWNjZXNzKSBvblN1Y2Nlc3ModHJ1ZSk7XHJcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJldmVydCgpO1xyXG4gICAgICAgIH0pLmZpbmFsbHkoKCkgPT4geyB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVSxXQUFXLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBS2pGLE9BQU8sRUFBZSxVQUFVLEVBQU0sTUFBTSxNQUFNLENBQUM7Ozs7OztBQUduRCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUNVLG9CQUE2QyxFQUM3QyxjQUFpQyxFQUNqQyxjQUFpQyxFQUNqQyxjQUFpQztRQUhqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBUG5DLDJCQUFzQixHQUFrQixFQUFFLENBQUM7UUFDM0Msa0NBQTZCLEdBQWtCLEVBQUUsQ0FBQztRQVkxRCw4QkFBeUIsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUM5RCxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCx3QkFBbUIsR0FBRyxDQUFDLFdBQWlDLElBQUksRUFBTyxFQUFFO1lBQ25FLFFBQVEsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2RCxJQUFJLGVBQWUsR0FBRyxRQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsTUFB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QUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFvRkQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO0lBQzNDLENBQUM7OzJHQXZHVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlTdGF0ZSwgRW50aXR5VHlwZSwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgVHJ1QnJlZXplQ29udGV4dEZhY3RvcnksIFRydUJyZWV6ZUNvbnRleHQgfSBmcm9tICcuL3RydS1icmVlemUtY29udGV4dC1mYWN0b3J5JztcclxuaW1wb3J0IHsgVHJ1RW50aXR5QWNjZXNzb3IgfSBmcm9tICcuL3RydS1lbnRpdHktYWNjZXNzb3InO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgZGVmZXIsIGZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcnVEYXRhQ29udGV4dCB7XHJcbiAgcHJpdmF0ZSBfYnJlZXplQ29udGV4dDogVHJ1QnJlZXplQ29udGV4dDtcclxuICBwcml2YXRlIF9wZW5kaW5nRGVsZXRlRW50aXRpZXM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuICBwcml2YXRlIF9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBicmVlemVDb250ZXh0RmFjdG9yeTogVHJ1QnJlZXplQ29udGV4dEZhY3RvcnksXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgZW50aXR5QWNjZXNzb3I6IFRydUVudGl0eUFjY2Vzc29yLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb25cclxuICApIHtcclxuICAgIHRoaXMuX2JyZWV6ZUNvbnRleHQgPSB0aGlzLmJyZWV6ZUNvbnRleHRGYWN0b3J5LmNyZWF0ZUNvbnRleHQoKTtcclxuICAgIHRoaXMuZW50aXR5QWNjZXNzb3IuY29udGV4dCA9IHRoaXM7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0aW9uQ2hhbmdlRGV0ZWN0aW9uID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XHJcbiAgICB0aGlzLmVudGl0eU1hbmFnZXIudmFsaWRhdGlvbkVycm9yc0NoYW5nZWQuc3Vic2NyaWJlKGVudGl0aWVzID0+IHtcclxuICAgICAgb2JzZXJ2ZXIubmV4dChlbnRpdGllcyk7XHJcbiAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgZ2V0VmFsaWRhdGlvbkVycm9ycyA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PiB8IG51bGwgPSBudWxsKTogYW55ID0+IHtcclxuICAgIGVudGl0aWVzID0gZW50aXRpZXMgfHwgdGhpcy5lbnRpdHlNYW5hZ2VyLmdldENoYW5nZXMoKTtcclxuICAgIHZhciBlcnJvcnNQZXJFbnRpdHkgPSBlbnRpdGllcyEubWFwKChlbnRpdHkpOiBWYWxpZGF0aW9uRXJyb3JbXSA9PiB7XHJcbiAgICAgIHZhciBlcnJvcnMgPSBlbnRpdHkuZW50aXR5QXNwZWN0LmdldFZhbGlkYXRpb25FcnJvcnMoKTtcclxuICAgICAgZXJyb3JzID0gZXJyb3JzLm1hcCgoZXJyOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBlbnRpdHk6IGVudGl0eSxcclxuICAgICAgICAgIGVycm9yTWVzc2FnZTogZXJyLmVycm9yTWVzc2FnZSxcclxuICAgICAgICAgIHByb3BlcnR5OiBlcnIucHJvcGVydHlcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZXJyb3JzO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZXJyb3JzUGVyRW50aXR5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRWYWxpZGF0aW9uRXJyb3JzID0gKGVudGl0aWVzOiBBcnJheTxFbnRpdHk+IHwgbnVsbCA9IG51bGwpOiBBcnJheTxzdHJpbmdbXT4gPT4ge1xyXG4gICAgbGV0IGVycm9ycyA9IHRoaXMuZ2V0VmFsaWRhdGlvbkVycm9ycyhlbnRpdGllcyk7XHJcbiAgICBsZXQgZm9ybWF0dGVkRXJyb3JzID0gbmV3IEFycmF5PHN0cmluZ1tdPigpO1xyXG5cclxuICAgIGZvcm1hdHRlZEVycm9ycy5wdXNoKGVycm9ycy5tYXAoKGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZS5wcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICByZXR1cm4gZS5lbnRpdHkuZW50aXR5VHlwZS5kZWZhdWx0UmVzb3VyY2VOYW1lICsgJy4nICsgZS5wcm9wZXJ0eU5hbWUgKyAnOiAnICsgZS5lcnJvck1lc3NhZ2U7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIG1lcmdlRGF0YSA9IEpTT04ucGFyc2UoZS5lbnRpdHkuTWVyZ2VfRGF0YSk7XHJcbiAgICAgIGlmIChtZXJnZURhdGEgJiZcclxuICAgICAgICBtZXJnZURhdGEuY29uc3RydWN0b3IgPT09IE9iamVjdCAmJlxyXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG1lcmdlRGF0YSkubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgIG1lcmdlRGF0YVtlLnByb3BlcnR5Lm5hbWVdKSB7XHJcbiAgICAgICAgcmV0dXJuIG1lcmdlRGF0YVtlLnByb3BlcnR5Lm5hbWVdLm1vZGlmaWVkQnkgKyAnIGNoYW5nZWQgJyArIGUucHJvcGVydHkubmFtZSArICcgdG8gJyArIG1lcmdlRGF0YVtlLnByb3BlcnR5Lm5hbWVdLnZhbHVlICsgJy4gQWNjZXB0IG9yIERlY2xpbmUgdGhlIGNoYW5nZS4gJ1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBlLnByb3BlcnR5Lm5hbWUgPyBlLnByb3BlcnR5Lm5hbWUgOiAnW1Vua25vd24gUHJvcGVydHldJztcclxuICAgICAgcmV0dXJuIGUuZW50aXR5LmVudGl0eVR5cGUuZGVmYXVsdFJlc291cmNlTmFtZSArICcuJyArIHByb3BlcnR5TmFtZSArICc6IGhhcyBpbnZhbGlkIGRhdGEuJ1xyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIGZvcm1hdHRlZEVycm9ycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyA9IChlbnRpdHk6IEVudGl0eSk6IEFycmF5PEVudGl0eT4gPT4ge1xyXG4gICAgbGV0IGRlc2NlbmRhbnRzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcbiAgICB0eXBlIGtleU9mRW50aXR5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGxldCB0eXBlID0gZW50aXR5LmVudGl0eVR5cGU7XHJcbiAgICBsZXQgdHlwZU5hbWUgPSB0eXBlLmRlZmF1bHRSZXNvdXJjZU5hbWU7XHJcbiAgICBsZXQgZW50aXR5Q2hpbGRyZW5OYW1lczogYW55ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSgnUmVwbGFjZSB3aXRoOiBNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzLnZhbHVlJykpW3R5cGVOYW1lXTtcclxuICAgIE9iamVjdC5lbnRyaWVzKGVudGl0eUNoaWxkcmVuTmFtZXMpXHJcbiAgICAgIC5mb3JFYWNoKChbaywgdl06IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBwcm9wZXJ0eSA9IGVudGl0eVtrIGFzIGtleU9mRW50aXR5XSBhcyBhbnk7XHJcbiAgICAgICAgcHJvcGVydHkuZm9yRWFjaCgoY2hpbGQ6IEVudGl0eSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2LmRvZXNDYXNjYWRlRGVsZXRlICYmIGNoaWxkLmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZSAhPT0gRW50aXR5U3RhdGUuQWRkZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWxldGUgb2Ygc2VsZWN0ZWQgaXRlbSBpcyBub3QgcG9zc2libGUgZHVlIHRvIHJlbGF0ZWQgY2hpbGQgdGhhdCBpcyBub3Qgc2V0dXAgZm9yIGNhc2NhZGUgZGVsZXRlLiAgRGVsZXRlIGNoaWxkcmVuIGl0ZW1zIGZpcnN0LicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVzY2VuZGFudHMgPSBkZXNjZW5kYW50cy5jb25jYXQodGhpcy5maW5kQ2FjaGVkQ2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzKGNoaWxkKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGVzY2VuZGFudHMgPSBwcm9wZXJ0eS5jb25jYXQoZGVzY2VuZGFudHMpO1xyXG4gICAgICB9KTtcclxuICAgIHJldHVybiBkZXNjZW5kYW50cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFya0NhY2hlZERlc2NlbmRhbnRzRm9yRGVsZXRlID0gKGVudGl0aWVzOiBBcnJheTxFbnRpdHk+KSA9PiB7XHJcbiAgICB2YXIgY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzUGVyRW50aXR5ID0gZW50aXRpZXMubWFwKChlbnRpdHk6IEVudGl0eSkgPT4geyByZXR1cm4gdGhpcy5maW5kQ2FjaGVkQ2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzKGVudGl0eSk7IH0sIGVudGl0aWVzKTtcclxuICAgIHZhciBjYXNjYWRlRGVsZXRlRGVzY2VuZGFudHMgPSBjYXNjYWRlRGVsZXRlRGVzY2VuZGFudHNQZXJFbnRpdHkucmVkdWNlKChtZW1vLCBpKSA9PiB7IHJldHVybiBtZW1vLmNvbmNhdChpKTsgfSk7XHJcbiAgICBjYXNjYWRlRGVsZXRlRGVzY2VuZGFudHMuZm9yRWFjaCgoZW50aXR5OiBFbnRpdHkpID0+IHsgdGhpcy5lbnRpdHlNYW5hZ2VyLmRldGFjaEVudGl0eShlbnRpdHkpOyB9KTtcclxuICAgIHRoaXMuX3BlbmRpbmdEZWxldGVFbnRpdGllcyA9IHRoaXMuX3BlbmRpbmdEZWxldGVFbnRpdGllcy5jb25jYXQoZW50aXRpZXMpO1xyXG4gICAgbGV0IGNvbWJpbmVkID0gdGhpcy5fcGVuZGluZ0Nhc2NhZGVEZWxldGVFbnRpdGllcy5jb25jYXQoY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzKTtcclxuICAgIHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMgPSBjb21iaW5lZC5maWx0ZXIoKG4sIGkpID0+IGNvbWJpbmVkLmluZGV4T2YobikgPT09IGkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXJrRm9yRGVsZXRlID0gKGVudGl0aWVzOiBBcnJheTxFbnRpdHk+KSA9PiB7XHJcbiAgICBpZiAoZW50aXRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm1hcmtDYWNoZWREZXNjZW5kYW50c0ZvckRlbGV0ZShlbnRpdGllcyk7XHJcbiAgICAgIGVudGl0aWVzLmZvckVhY2goKGVudGl0eTogRW50aXR5KSA9PiB7XHJcbiAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC5zZXREZWxldGVkKCk7XHJcbiAgICAgICAgLy9lbnRpdHkuX2Fzc29jaWF0ZWREYXRhQ2FjaGVkID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGJyZWV6ZUNvbnRleHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYnJlZXplQ29udGV4dDtcclxuICB9XHJcblxyXG4gIGdldCBlbnRpdHlNYW5hZ2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlcjtcclxuICB9XHJcblxyXG4gIGhhc0NoYW5nZXMgPSAoZW50aXR5VHlwZXM6IEFycmF5PEVudGl0eVR5cGU+ID0gW10pID0+IHtcclxuICAgIGlmIChlbnRpdHlUeXBlcy5sZW5ndGgpXHJcbiAgICAgIHJldHVybiB0aGlzLl9icmVlemVDb250ZXh0LmVudGl0eU1hbmFnZXIuZ2V0Q2hhbmdlcyhlbnRpdHlUeXBlcyk7XHJcbiAgICByZXR1cm4gdGhpcy5fYnJlZXplQ29udGV4dC5lbnRpdHlNYW5hZ2VyLmdldENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGVudGl0eUFjY2VzcyA9ICgpOiBUcnVFbnRpdHlBY2Nlc3NvciA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlBY2Nlc3NvcjtcclxuICB9XHJcblxyXG4gIGV4cG9ydENhaGNlID0gKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5fYnJlZXplQ29udGV4dC5lbnRpdHlNYW5hZ2VyLmV4cG9ydEVudGl0aWVzKCkpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSA9IChcclxuICAgIGVudGl0aWVzOiBBcnJheTxFbnRpdHk+IHwgbnVsbCA9IG51bGwsXHJcbiAgICBkZWxldGVPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcpIHtcclxuICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnU2F2ZUluUHJvZ3Jlc3MpO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdmFyIHZhbGlkYXRpb25FcnJvck1lc3NhZ2VzID0gdGhpcy5mb3JtYXRWYWxpZGF0aW9uRXJyb3JzKGVudGl0aWVzKTtcclxuICAgICAgaWYgKHZhbGlkYXRpb25FcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uZXJyb3IodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dJbnZhbGlkRGF0YSwgdmFsaWRhdGlvbkVycm9yTWVzc2FnZXMpO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5oYXNDaGFuZ2VzKCkubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnTm9DaGFuZ2VzVG9TYXZlKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVudGl0eU1hbmFnZXIuc2F2ZUNoYW5nZXMoKS50aGVuKCgpID0+IHtcclxuICAgICAgICBpZiAoIWRlbGV0ZU9wZXJhdGlvbikge1xyXG4gICAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zdWNjZXNzKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnU2F2ZVN1Y2Nlc3NmdWwpO1xyXG4gICAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5zYXZlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiB0cnVlIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0pLmNhdGNoKChlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnNhdmVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IGZhbHNlIH0pO1xyXG4gICAgICAgIHJlamVjdChlKTtcclxuICAgICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy51aU5vdGlmaWNhdGlvbi5jb25maXJtKCdDb25maXJtIEFjdGlvbicsICdSZXZlcnQgJyArIHRoaXMuaGFzQ2hhbmdlcygpLmxlbmd0aCArICcgY2hhbmdlZCByZWNvcmQocyk/JykudGhlbigoY29uZmlybTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5TWFuYWdlci5yZWplY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5yZXZlcnRDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0V2l0aG91dFByb21wdCA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMucmV2ZXJ0KCk7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50LnJldmVydENvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZSA9IChcclxuICAgIGVudGl0aWVzOiBBcnJheTxFbnRpdHk+LFxyXG4gICAgY29uZmlybU1zZzogc3RyaW5nLFxyXG4gICAgb25TdWNjZXNzOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgdmFyIG5ld0VudGl0aWVzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcbiAgICB2YXIgZXhpc3RpbmdFbnRpdGllczogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gICAgZW50aXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICBpZiAoZS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNBZGRlZCgpKVxyXG4gICAgICAgIG5ld0VudGl0aWVzLnB1c2goZSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBleGlzdGluZ0VudGl0aWVzLnB1c2goZSk7XHJcbiAgICB9KTtcclxuICAgIGlmIChuZXdFbnRpdGllcy5sZW5ndGggJiYgZXhpc3RpbmdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnQ2Fubm90RGVsZXRlTmV3QW5kRXhpc3RpbmdSZWNvcmRzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV4aXN0aW5nRW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0NoYW5nZXMoKS5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dEaXJ0eVByZXZlbnRzRGVsZXRlRXhpc3RpbmdSZWNvcmQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudWlOb3RpZmljYXRpb24uY29uZmlybSgnQ29uZmlybSBBY3Rpb24nLCBjb25maXJtTXNnKS50aGVuKChjb25maXJtOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgaWYgKG5ld0VudGl0aWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgbmV3RW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBFbnRpdHkpID0+IHtcclxuICAgICAgICAgICAgZW50aXR5LmVudGl0eUFzcGVjdC5jbGVhclZhbGlkYXRpb25FcnJvcnMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5tYXJrRm9yRGVsZXRlKG5ld0VudGl0aWVzKTtcclxuICAgICAgICAgIGlmIChvblN1Y2Nlc3MpIG9uU3VjY2VzcygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgdGhpcy5tYXJrRm9yRGVsZXRlKGV4aXN0aW5nRW50aXRpZXMpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbjogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKGV4Y2VwdGlvbi5tZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zYXZlKG51bGwsIHRydWUpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdmFyIGVudGl0aWVzRGVsZXRlZCA9IHRoaXMuX3BlbmRpbmdEZWxldGVFbnRpdGllcy5jb25jYXQodGhpcy5fcGVuZGluZ0Nhc2NhZGVEZWxldGVFbnRpdGllcyk7XHJcbiAgICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LmRlbGV0ZUNvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogdHJ1ZSwgZW50aXRpZXM6IGVudGl0aWVzRGVsZXRlZCB9KTtcclxuICAgICAgICAgIGlmIChlbnRpdGllc0RlbGV0ZWQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMgPSBbXTtcclxuICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0RlbGV0ZUVudGl0aWVzID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5hcHBFbnZpcm9ubWVudC5tc2dEZWxldGVTdWNjZXNzZnVsKTtcclxuICAgICAgICAgIGlmIChvblN1Y2Nlc3MpIG9uU3VjY2Vzcyh0cnVlKTtcclxuICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMucmV2ZXJ0KCk7XHJcbiAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
|