@netgrif/components-core 6.4.0-rc.4 → 6.4.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/task-content/services/task-content.service.mjs +3 -2
- package/esm2020/lib/user/services/user.service.mjs +11 -4
- package/fesm2015/netgrif-components-core.mjs +12 -4
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +12 -4
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/lib/user/services/user.service.d.ts +3 -1
- package/package.json +1 -1
|
@@ -246,7 +246,8 @@ export class TaskContentService {
|
|
|
246
246
|
}
|
|
247
247
|
getReferencedTaskId(changedField, chFields) {
|
|
248
248
|
return !!this.taskFieldsIndex ?
|
|
249
|
-
Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
|
|
249
|
+
(Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
|
|
250
|
+
|| Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))) : undefined;
|
|
250
251
|
}
|
|
251
252
|
findTaskRefId(taskId, fields) {
|
|
252
253
|
let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value.includes(taskId));
|
|
@@ -269,4 +270,4 @@ TaskContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", v
|
|
|
269
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TaskContentService, decorators: [{
|
|
270
271
|
type: Injectable
|
|
271
272
|
}], ctorParameters: function () { return [{ type: i1.FieldConverterService }, { type: i2.SnackBarService }, { type: i3.TranslateService }, { type: i4.LoggerService }]; } });
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1jb250ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy90YXNrLWNvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBQyxlQUFlLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBUSxNQUFNLE1BQU0sQ0FBQztBQVNoRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUs3RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sdURBQXVELENBQUM7Ozs7OztBQUVuRjs7Ozs7OztHQU9HO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUFlcEMsWUFBZ0Msc0JBQTZDLEVBQzdDLGdCQUFpQyxFQUNqQyxVQUE0QixFQUM1QixPQUFzQjtRQUh0QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQVI1QyxxQkFBZ0IsR0FFdEIsRUFBRSxDQUFDO1FBQ0csOEJBQXlCLEdBQXdDLEVBQUUsQ0FBQztRQU0xRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFtQixDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMs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QUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxZQUFZLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ1osTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0csaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUMzQixTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFO29CQUNiLE9BQU8sU0FBUyxDQUFDO2lCQUNwQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLFNBQVMsQ0FBQTtJQUNwQixDQUFDOztBQXBTc0IsdUNBQW9CLEdBQUcsbUJBQW9CLENBQUE7QUFDM0MseUJBQU0sR0FBRyxRQUFTLENBQUE7Z0hBSHZCLGtCQUFrQjtvSEFBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RhdGFHcm91cH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9kYXRhLWdyb3Vwcyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUYXNrfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3Rhc2snO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtTbmFja0JhclNlcnZpY2V9IGZyb20gJy4uLy4uL3NuYWNrLWJhci9zZXJ2aWNlcy9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtFbnVtZXJhdGlvbkZpZWxkLCBFbnVtZXJhdGlvbkZpZWxkVmFsdWV9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL2VudW1lcmF0aW9uLWZpZWxkL21vZGVscy9lbnVtZXJhdGlvbi1maWVsZCc7XG5pbXBvcnQge011bHRpY2hvaWNlRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL211bHRpY2hvaWNlLWZpZWxkL21vZGVscy9tdWx0aWNob2ljZS1maWVsZCc7XG5pbXBvcnQge0NoYW5nZSwgQ2hhbmdlZEZpZWxkc30gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NoYW5nZWQtZmllbGRzJztcbmltcG9ydCB7RmllbGRDb252ZXJ0ZXJTZXJ2aWNlfSBmcm9tICcuL2ZpZWxkLWNvbnZlcnRlci5zZXJ2aWNlJztcbmltcG9ydCB7RmllbGRUeXBlUmVzb3VyY2V9IGZyb20gJy4uL21vZGVsL2ZpZWxkLXR5cGUtcmVzb3VyY2UnO1xuaW1wb3J0IHtEeW5hbWljRW51bWVyYXRpb25GaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2R5bmFtaWMtZW51bWVyYXRpb24tZmllbGQnO1xuaW1wb3J0IHtWYWxpZGF0aW9ufSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvdmFsaWRhdGlvbic7XG5pbXBvcnQge1Rhc2tFdmVudE91dGNvbWV9IGZyb20gJy4uLy4uL2V2ZW50L21vZGVsL2V2ZW50LW91dGNvbWVzL3Rhc2stb3V0Y29tZXMvdGFzay1ldmVudC1vdXRjb21lJztcbmltcG9ydCB7RGF0YUZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQge1Rhc2tGaWVsZHN9IGZyb20gJy4uL21vZGVsL3Rhc2stZmllbGRzJztcbmltcG9ydCB7VGFza1JlZkZpZWxkfSBmcm9tIFwiLi4vLi4vZGF0YS1maWVsZHMvdGFzay1yZWYtZmllbGQvbW9kZWwvdGFzay1yZWYtZmllbGRcIjtcblxuLyoqXG4gKiBBY3RzIGFzIGEgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgQ29tcG9uZW50IHRoYXQgcmVuZGVycyBUYXNrIGNvbnRlbnQgYW5kIGl0J3MgcGFyZW50IENvbXBvbmVudC5cbiAqIEFsc28gcHJvdmlkZXMgc29tZSBnZW5lcmFsIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyBuZWVkZWQgd2hlbiB3b3JraW5nIHdpdGggdGFzayBjb250ZW50LlxuICpcbiAqIE5vdGFibGUgZXhhbXBsZSBvZiBhIHBhcmVudCBDb21wb25lbnQgaXMgdGhlIHtAbGluayBBYnN0cmFjdFRhc2tQYW5lbENvbXBvbmVudH0uXG4gKlxuICogTm90YWJsZSBleGFtcGxlIG9mIGEgdGFzayBjb250ZW50IHJlbmRlcmVyIGlzIHRoZSB7QGxpbmsgQWJzdHJhY3RUYXNrQ29udGVudENvbXBvbmVudH0uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYXNrQ29udGVudFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBGUk9OVEVORF9BQ1RJT05TX0tFWSA9ICdfZnJvbnRlbmRfYWN0aW9ucyc7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT04gPSAnYWN0aW9uJztcblxuICAgICRzaG91bGRDcmVhdGU6IFJlcGxheVN1YmplY3Q8QXJyYXk8RGF0YUdyb3VwPj47XG4gICAgJHNob3VsZENyZWF0ZUNvdW50ZXI6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICAgIHByb3RlY3RlZCBfdGFzazogVGFzaztcbiAgICBwcm90ZWN0ZWQgX3Rhc2tEYXRhUmVsb2FkUmVxdWVzdCQ6IFN1YmplY3Q8Q2hhbmdlPjtcbiAgICBwcm90ZWN0ZWQgX2lzRXhwYW5kaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICAgIHByb3RlY3RlZCBfdGFza0ZpZWxkc0luZGV4OiB7XG4gICAgICAgIFt0YXNrSWQ6IHN0cmluZ106IFRhc2tGaWVsZHNcbiAgICB9ID0ge307XG4gICAgcHJvdGVjdGVkIF9yZWZlcmVuY2VkVGFza0FuZENhc2VJZHM6IHsgW2Nhc2VJZDogc3RyaW5nXTogQXJyYXk8c3RyaW5nPiB9ID0ge307XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF9maWVsZENvbnZlcnRlclNlcnZpY2U6IEZpZWxkQ29udmVydGVyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuJHNob3VsZENyZWF0ZSA9IG5ldyBSZXBsYXlTdWJqZWN0PEFycmF5PERhdGFHcm91cD4+KDEpO1xuICAgICAgICB0aGlzLiRzaG91bGRDcmVhdGVDb3VudGVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICAgICAgICB0aGlzLl9pc0V4cGFuZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAgICAgdGhpcy5fdGFzayA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fdGFza0RhdGFSZWxvYWRSZXF1ZXN0JCA9IG5ldyBTdWJqZWN0PENoYW5nZT4oKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLiRzaG91bGRDcmVhdGUuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLiRzaG91bGRDcmVhdGUuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl90YXNrRGF0YVJlbG9hZFJlcXVlc3QkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzRXhwYW5kaW5nJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBUYXNrIG9iamVjdCBpZiBzZXQgYW5kIGB1bmRlZmluZWRgIG90aGVyd2lzZVxuICAgICAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBnZXQgdGFzaygpOiBUYXNrIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogU2V0dGluZyBhIFRhc2sgYWxzbyBlbWl0cyBpdCBpbnRvIHRoZSBzdHJlYW0gYWNjZXNzaWJsZSBieSB0aGUgW3Rhc2skXXtAbGluayBUYXNrQ29udGVudFNlcnZpY2UjdGFzayR9IGdldHRlciBtZXRob2QuXG4gICAgICogQHBhcmFtIHRhc2sgdGhlIFRhc2sgdGhhdCBvd25zIHRoZSBjb250ZW50IG1hbmFnZWQgYnkgdGhpcyBzZXJ2aWNlXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IHNldCB0YXNrKHRhc2s6IFRhc2spO1xuXG4gICAgLyoqXG4gICAgICogU3RyZWFtIHJldHVybnMgYSB7QGxpbmsgVGFza30gb2JqZWN0IGV2ZXJ5IHRpbWUgdGhpcyBvYmplY3QgaXMgc2V0LlxuICAgICAqXG4gICAgICogVXNlIFt0YXNrXXtAbGluayBUYXNrQ29udGVudFNlcnZpY2UjdGFza30gc2V0dGVyIG1ldGhvZCB0byBzZXQgdGhlIFRhc2suXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGdldCB0YXNrJCgpOiBPYnNlcnZhYmxlPFRhc2s+O1xuXG4gICAgLyoqXG4gICAgICogU3RyZWFtIHRoYXQgZW1pdHMgZXZlcnkgdGltZSBhIGRhdGEgcmVsb2FkIGlzIHJlcXVlc3RlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRhc2tEYXRhUmVsb2FkUmVxdWVzdCQoKTogT2JzZXJ2YWJsZTxDaGFuZ2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tEYXRhUmVsb2FkUmVxdWVzdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG5cbiAgICBnZXQgdGFza0ZpZWxkc0luZGV4KCk6IHsgW3A6IHN0cmluZ106IFRhc2tGaWVsZHMgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXNrRmllbGRzSW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IHRhc2tGaWVsZHNJbmRleCh2YWx1ZTogeyBbcDogc3RyaW5nXTogVGFza0ZpZWxkcyB9KSB7XG4gICAgICAgIHRoaXMuX3Rhc2tGaWVsZHNJbmRleCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCByZWZlcmVuY2VkVGFza0FuZENhc2VJZHMoKTogeyBbcDogc3RyaW5nXTogQXJyYXk8c3RyaW5nPiB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkcztcbiAgICB9XG5cbiAgICBzZXQgcmVmZXJlbmNlZFRhc2tBbmRDYXNlSWRzKHZhbHVlOiB7IFtwOiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0pIHtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlZFRhc2tBbmRDYXNlSWRzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgcGFuZWwgdGhhdCB0aGUgdGFzayBjb250ZW50IGlzIGNvbnRhaW5lZCBpbiBpcyBjdXJyZW50bHkgZXhwYW5kaW5nLlxuICAgICAqXG4gICAgICogSWYgdGhlIHRhc2sgY29udGVudCBpcyBub3QgY29udGFpbmVkIGluIGEgcGFuZWwsIGBpc0V4cGFuZGluZ2Agd2lsbCBiZSBhbHdheXMgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzRXhwYW5kaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNFeHBhbmRpbmckLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIHN0YXRlIG9mIHRoZSB0YXNrIGNvbnRlbnQgdG8gYGV4cGFuZGluZ2AuXG4gICAgICovXG4gICAgcHVibGljIGV4cGFuc2lvblN0YXJ0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzRXhwYW5kaW5nJC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIHN0YXRlIG9mIHRoZSB0YXNrIGNvbnRlbnQgdG8gYG5vdCBleHBhbmRpbmdgLlxuICAgICAqL1xuICAgIHB1YmxpYyBleHBhbnNpb25GaW5pc2hlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRpbmckLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB0aGUgdmFsaWRpdHkgb2YgYWxsIGRhdGEgZmllbGRzIGluIHRoZSBtYW5hZ2VkIHtAbGluayBUYXNrfS5cbiAgICAgKlxuICAgICAqIElmIHNvbWUgb2YgdGhlIGZpZWxkcyBhcmUgaW52YWxpZCB0b3VjaGVzIHRoZW0gc28gdGhlaXIgdmFsaWRhdGlvbiBlcnJvcnMgd2lsbCBhcHBlYXIgKGlmIHNldCkuXG4gICAgICogQSBzbmFja2JhciB3aWxsIGFsc28gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLCBpbmZvcm1pbmcgdGhlbSBvZiB0aGUgZmFjdCB0aGF0IHRoZSBmaWVsZHMgYXJlIGludmFsaWQuXG4gICAgICogQHJldHVybnMgd2hldGhlciB0aGUgdGFzayBpcyB2YWxpZCBvciBub3RcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGVUYXNrRGF0YSh0YXNrSWQ/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrIHx8ICF0aGlzLl90YXNrLmRhdGFHcm91cHMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWxpZCA9ICF0aGlzLl90YXNrLmRhdGFHcm91cHMuZmlsdGVyKGdyb3VwID0+ICEhZ3JvdXAucGFyZW50VGFza0lkICYmICEhdGFza0lkID8gZ3JvdXAucGFyZW50VGFza0lkID09PSB0YXNrSWQgOiB0cnVlKS5zb21lKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5zb21lKGZpZWxkID0+ICFmaWVsZC52YWxpZCAmJiAhZmllbGQuZGlzYWJsZWQpKTtcbiAgICAgICAgY29uc3QgdmFsaWREaXNhYmxlZCA9ICF0aGlzLl90YXNrLmRhdGFHcm91cHMuZmlsdGVyKGdyb3VwID0+ICEhZ3JvdXAucGFyZW50VGFza0lkICYmICEhdGFza0lkID8gZ3JvdXAucGFyZW50VGFza0lkID09PSB0YXNrSWQgOiB0cnVlKS5zb21lKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5zb21lKGZpZWxkID0+ICFmaWVsZC52YWxpZFJlcXVpcmVkICYmIGZpZWxkLmRpc2FibGVkKSk7XG4gICAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgndGFza3Muc25hY2tiYXIuaW52YWxpZERhdGEnKSk7XG4gICAgICAgICAgICB0aGlzLl90YXNrLmRhdGFHcm91cHMuZm9yRWFjaChncm91cCA9PiBncm91cC5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiBmaWVsZC50b3VjaCA9IHRydWUpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbGlkRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgndGFza3Muc25hY2tiYXIubWlzc2luZ1JlcXVpcmVkJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZCAmJiB2YWxpZERpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIGludmFsaWQgZGF0YSBvZiB0YXNrXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBhcnJheSBvZiBpbnZhbGlkIGRhdGFmaWVsZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SW52YWxpZFRhc2tEYXRhKCk6IEFycmF5PERhdGFGaWVsZDxhbnk+PiB7XG4gICAgICAgIGNvbnN0IGludmFsaWRGaWVsZHMgPSBbXTtcbiAgICAgICAgdGhpcy5fdGFzay5kYXRhR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4gaW52YWxpZEZpZWxkcy5wdXNoKC4uLmdyb3VwLmZpZWxkcy5maWx0ZXIoZmllbGQgPT5cbiAgICAgICAgICAgICghZmllbGQudmFsaWQgJiYgIWZpZWxkLmRpc2FibGVkKSB8fCAoIWZpZWxkLnZhbGlkUmVxdWlyZWQgJiYgIWZpZWxkLmRpc2FibGVkKSkpKTtcbiAgICAgICAgcmV0dXJuIGludmFsaWRGaWVsZHM7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlRHluYW1pY0VudW1GaWVsZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrIHx8ICF0aGlzLl90YXNrLmRhdGFHcm91cHMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLl90YXNrLmRhdGFHcm91cHMuc29tZShncm91cCA9PiBncm91cC5maWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZCBpbnN0YW5jZW9mIER5bmFtaWNFbnVtZXJhdGlvbkZpZWxkKSk7XG4gICAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBncm91cC5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGQgaW5zdGFuY2VvZiBEeW5hbWljRW51bWVyYXRpb25GaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuY2hvaWNlcyAhPT0gdW5kZWZpbmVkICYmIGZpZWxkLmNob2ljZXMubGVuZ3RoICE9PSAwICYmIGZpZWxkLnZhbHVlICE9PSAnJyAmJiBmaWVsZC52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpZWxkLmNob2ljZXMuc29tZShjaG9pY2UgPT4gY2hvaWNlLmtleSA9PT0gZmllbGQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuYmVoYXZpb3IucmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5taXNzaW5nUmVxdWlyZWQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIGJsb2NraW5nIHN0YXRlIG9mIGFsbCBmaWVsZHMgaW4gdGhlIG1hbmFnZWQgVGFzay5cbiAgICAgKiBAcGFyYW0gYmxvY2tpbmdTdGF0ZSB3aGV0aGVyIHRoZSBmaWVsZCBzaG91bGQgYmUgYmxvY2tlZCBvciBub3RcbiAgICAgKi9cbiAgICBwdWJsaWMgYmxvY2tGaWVsZHMoYmxvY2tpbmdTdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fdGFzayAmJiB0aGlzLl90YXNrLmRhdGFHcm91cHMpIHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgICAgICAgICBncm91cC5maWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLmJsb2NrID0gYmxvY2tpbmdTdGF0ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHRoZSBhc3NpZ25lZSwgc3RhcnQgZGF0ZSBhbmQgZmluaXNoIGRhdGUgZnJvbSB0aGUgbWFuYWdlZCBUYXNrLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVTdGF0ZURhdGEoZXZlbnRPdXRjb21lOiBUYXNrRXZlbnRPdXRjb21lKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl90YXNrKSB7XG4gICAgICAgICAgICB0aGlzLl90YXNrLnVzZXIgPSBldmVudE91dGNvbWUudGFzay51c2VyO1xuICAgICAgICAgICAgdGhpcy5fdGFzay5zdGFydERhdGUgPSBldmVudE91dGNvbWUudGFzay5zdGFydERhdGU7XG4gICAgICAgICAgICB0aGlzLl90YXNrLmZpbmlzaERhdGUgPSBldmVudE91dGNvbWUudGFzay5maW5pc2hEYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgcHJvcGVydGllcyBvZiBmaWVsZHMgaW4gdGhlIG1hbmFnZWQgdGFzayBiYXNlZCBvbiBhIGRlbHRhIG9mIGNoYW5nZXMgZnJvbSBwcmV2aW91cyBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gY2hGaWVsZHMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlbHRhIG9mIHRoZSBjaGFuZ2VzIGZyb20gdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZUZyb21DaGFuZ2VkRmllbGRzKGNoRmllbGRzOiBDaGFuZ2VkRmllbGRzKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fdGFzayB8fCAhdGhpcy5fdGFzay5kYXRhR3JvdXBzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZnJvbnRlbmRBY3Rpb25zID0gY2hGaWVsZHMudGFza0lkID09PSB0aGlzLnRhc2suc3RyaW5nSWQgJiYgY2hGaWVsZHNbVGFza0NvbnRlbnRTZXJ2aWNlLkZST05URU5EX0FDVElPTlNfS0VZXTtcbiAgICAgICAgT2JqZWN0LmtleXMoY2hGaWVsZHMpLmZvckVhY2goY2hhbmdlZEZpZWxkID0+IHtcbiAgICAgICAgICAgIGlmIChjaEZpZWxkcy50YXNrSWQgPT09IHRoaXMuX3Rhc2suc3RyaW5nSWQgJiYgdGhpcy5pc0ZpZWxkSW5UYXNrKGNoRmllbGRzLnRhc2tJZCwgY2hhbmdlZEZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRmllbGQoY2hGaWVsZHMsIHRoaXMudGFza0ZpZWxkc0luZGV4W2NoRmllbGRzLnRhc2tJZF0uZmllbGRzW2NoYW5nZWRGaWVsZF0sIGZyb250ZW5kQWN0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCEhdGhpcy5nZXRSZWZlcmVuY2VkVGFza0lkKGNoYW5nZWRGaWVsZCwgY2hGaWVsZHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZChjaEZpZWxkcywgdGhpcy50YXNrRmllbGRzSW5kZXhbdGhpcy5nZXRSZWZlcmVuY2VkVGFza0lkKGNoYW5nZWRGaWVsZCwgY2hGaWVsZHMpXS5maWVsZHNbY2hhbmdlZEZpZWxkXSwgZnJvbnRlbmRBY3Rpb25zLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4kc2hvdWxkQ3JlYXRlLm5leHQodGhpcy5fdGFzay5kYXRhR3JvdXBzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlRmllbGQoY2hGaWVsZHM6IENoYW5nZWRGaWVsZHMsIGZpZWxkOiBEYXRhRmllbGQ8YW55PiwgZnJvbnRlbmRBY3Rpb25zOiBDaGFuZ2UsIHJlZmVyZW5jZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZmllbGRDb252ZXJ0ZXJTZXJ2aWNlLnJlc29sdmVUeXBlKGZpZWxkKSA9PT0gRmllbGRUeXBlUmVzb3VyY2UuVEFTS19SRUYpIHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2tEYXRhUmVsb2FkUmVxdWVzdCQubmV4dChmcm9udGVuZEFjdGlvbnMgPyBmcm9udGVuZEFjdGlvbnMgOiB1bmRlZmluZWQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkID0gY2hGaWVsZHNbZmllbGQuc3RyaW5nSWRdO1xuICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVkRmllbGQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndHlwZSc6XG4gICAgICAgICAgICAgICAgICAgIC8vIHR5cGUgaXMganVzdCBhbiBpbmZvcm1hdGlvbiwgbm90IGFuIHVwZGF0ZS4gQSBmaWVsZCBjYW5ub3QgY2hhbmdlIGl0cyB0eXBlXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gY29udGludWUgLSB0aGUgZmllbGQgZG9lcyBub3QgbmVlZCB1cGRhdGluZywgc2luY2Ugbm90aGluZyBjaGFuZ2VkXG4gICAgICAgICAgICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZVdpdGhvdXRDaGFuZ2UodGhpcy5fZmllbGRDb252ZXJ0ZXJTZXJ2aWNlLmZvcm1hdFZhbHVlRnJvbUJhY2tlbmQoZmllbGQsIHVwZGF0ZWRGaWVsZFtrZXldKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2JlaGF2aW9yJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2VkICYmIHVwZGF0ZWRGaWVsZC5iZWhhdmlvclt0aGlzLl90YXNrLnRyYW5zaXRpb25JZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmJlaGF2aW9yID0gdXBkYXRlZEZpZWxkLmJlaGF2aW9yW3RoaXMuX3Rhc2sudHJhbnNpdGlvbklkXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWZlcmVuY2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrSWQgPSB0aGlzLmdldFJlZmVyZW5jZWRUYXNrSWQoZmllbGQuc3RyaW5nSWQsIGNoRmllbGRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2tSZWYgPSB0aGlzLmZpbmRUYXNrUmVmSWQodGFza0lkLCB0aGlzLnRhc2tGaWVsZHNJbmRleFt0aGlzLl90YXNrLnN0cmluZ0lkXS5maWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNpdGlvbklkID0gdGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS50cmFuc2l0aW9uSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISF0cmFuc2l0aW9uSWQgJiYgdHJhbnNpdGlvbklkICE9PSAnJyAmJiB1cGRhdGVkRmllbGQuYmVoYXZpb3JbdHJhbnNpdGlvbklkXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5iZWhhdmlvciA9IHRhc2tSZWYuYmVoYXZpb3IuZWRpdGFibGUgPyB1cGRhdGVkRmllbGQuYmVoYXZpb3JbdHJhbnNpdGlvbklkXSA6IHRhc2tSZWYuYmVoYXZpb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hvaWNlcyc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Nob2ljZXM6IEFycmF5PEVudW1lcmF0aW9uRmllbGRWYWx1ZT4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRGaWVsZC5jaG9pY2VzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRGaWVsZC5jaG9pY2VzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Nob2ljZXMucHVzaCh7a2V5OiBpdCwgdmFsdWU6IGl0fSBhcyBFbnVtZXJhdGlvbkZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVkRmllbGQuY2hvaWNlcykuZm9yRWFjaChjaG9pY2VLZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Nob2ljZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hvaWNlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdXBkYXRlZEZpZWxkLmNob2ljZXNbY2hvaWNlS2V5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgRW51bWVyYXRpb25GaWVsZFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIChmaWVsZCBhcyBFbnVtZXJhdGlvbkZpZWxkIHwgTXVsdGljaG9pY2VGaWVsZCkuY2hvaWNlcyA9IG5ld0Nob2ljZXM7XG4gICAgICAgICAgICAgICAgICAgIChmaWVsZCBhcyBFbnVtZXJhdGlvbkZpZWxkIHwgTXVsdGljaG9pY2VGaWVsZCkudXBkYXRlQ2hvaWNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ29wdGlvbnMnOlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdPcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRGaWVsZC5vcHRpb25zKS5mb3JFYWNoKG9wdGlvbktleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdPcHRpb25zLnB1c2goe2tleTogb3B0aW9uS2V5LCB2YWx1ZTogdXBkYXRlZEZpZWxkLm9wdGlvbnNbb3B0aW9uS2V5XX0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS5jaG9pY2VzID0gbmV3T3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS51cGRhdGVDaG9pY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndmFsaWRhdGlvbnMnOlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC5yZXBsYWNlVmFsaWRhdGlvbnModXBkYXRlZEZpZWxkLnZhbGlkYXRpb25zLm1hcChpdCA9PiAoaXQgYXMgVmFsaWRhdGlvbikpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZmllbGRba2V5XSA9IHVwZGF0ZWRGaWVsZFtrZXldO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZC51cGRhdGUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzRmllbGRJblRhc2sodGFza0lkOiBzdHJpbmcsIGNoYW5nZWRGaWVsZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRhc2tJZFxuICAgICAgICAgICAgJiYgISF0aGlzLnRhc2tGaWVsZHNJbmRleFt0YXNrSWRdXG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0ZpZWxkc0luZGV4W3Rhc2tJZF0uZmllbGRzXG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0ZpZWxkc0luZGV4W3Rhc2tJZF0uZmllbGRzW2NoYW5nZWRGaWVsZF1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UmVmZXJlbmNlZFRhc2tJZChjaGFuZ2VkRmllbGQ6IHN0cmluZywgY2hGaWVsZHM6IENoYW5nZWRGaWVsZHMpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRhc2tGaWVsZHNJbmRleCA/XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnRhc2tGaWVsZHNJbmRleCkuZmluZCh0YXNrSWQgPT4gdGFza0lkICE9PSB0aGlzLnRhc2suc3RyaW5nSWQgJiYgdGFza0lkID09PSBjaEZpZWxkcy50YXNrSWQgJiYgT2JqZWN0LmtleXModGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHMpLmluY2x1ZGVzKGNoYW5nZWRGaWVsZCkpIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kVGFza1JlZklkKHRhc2tJZDogc3RyaW5nLCBmaWVsZHM6IHsgW2ZpZWxkSWQ6IHN0cmluZ106IERhdGFGaWVsZDxhbnk+fSk6IERhdGFGaWVsZDxhbnk+IHtcbiAgICAgICAgbGV0IHRhc2tSZWZJZCA9IE9iamVjdC52YWx1ZXMoZmllbGRzKS5maW5kKGYgPT4gZiBpbnN0YW5jZW9mIFRhc2tSZWZGaWVsZCAmJiBmLnZhbHVlLmluY2x1ZGVzKHRhc2tJZCkpO1xuICAgICAgICBpZiAoIXRhc2tSZWZJZCkge1xuICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlZFRhc2tJZHMgPSBPYmplY3QudmFsdWVzKGZpZWxkcykuZmlsdGVyKGYgPT4gZiBpbnN0YW5jZW9mIFRhc2tSZWZGaWVsZCkubWFwKHRyID0+IHRyLnZhbHVlKTtcbiAgICAgICAgICAgIHJlZmVyZW5jZWRUYXNrSWRzLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgICAgIHRhc2tSZWZJZCA9IHRoaXMuZmluZFRhc2tSZWZJZCh0YXNrSWQsIHRoaXMudGFza0ZpZWxkc0luZGV4W2lkXS5maWVsZHMpO1xuICAgICAgICAgICAgICAgIGlmICghIXRhc2tSZWZJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFza1JlZklkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXNrUmVmSWRcbiAgICB9XG59XG4iXX0=
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1jb250ZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3Rhc2stY29udGVudC9zZXJ2aWNlcy90YXNrLWNvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBQyxlQUFlLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBUSxNQUFNLE1BQU0sQ0FBQztBQVNoRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzRUFBc0UsQ0FBQztBQUs3RyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sdURBQXVELENBQUM7Ozs7OztBQUVuRjs7Ozs7OztHQU9HO0FBRUgsTUFBTSxPQUFnQixrQkFBa0I7SUFlcEMsWUFBZ0Msc0JBQTZDLEVBQzdDLGdCQUFpQyxFQUNqQyxVQUE0QixFQUM1QixPQUFzQjtRQUh0QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQzdDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQVI1QyxxQkFBZ0IsR0FFdEIsRUFBRSxDQUFDO1FBQ0csOEJBQXlCLEdBQXdDLEVBQUUsQ0FBQztRQU0xRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFtQixDQUFDLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN2QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtZQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQW9CRDs7T0FFRztJQUNILElBQVcsc0JBQXNCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFHRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsS0FBa0M7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDeEIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksd0JBQXdCLENBQUMsS0FBcUM7UUFDOUQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxpQkFBaUI7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQixDQUFDLE1BQWU7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDek0sTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDeE4sSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDN0Y7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7U0FDdEc7UUFDRCxPQUFPLEtBQUssSUFBSSxhQUFhLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0I7UUFDckIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNyRixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRU0sd0JBQXdCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDdkMsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7UUFDekgsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUN2QyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQzlCLElBQUksS0FBSyxZQUFZLHVCQUF1QixFQUFFO29CQUMxQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTt3QkFDOUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7NEJBQzNELEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDOzRCQUNqQixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2dDQUN6QixLQUFLLEdBQUcsS0FBSyxDQUFDOzZCQUNqQjt5QkFDSjtxQkFDSjtpQkFDSjthQUNKO1NBQ0o7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztTQUN0RztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXLENBQUMsYUFBc0I7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3pCLEtBQUssQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQUMsWUFBOEI7UUFDakQsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDbkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDeEQ7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksdUJBQXVCLENBQUMsUUFBdUI7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUN2QyxPQUFPO1NBQ1Y7UUFDRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQzlGLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQzthQUMzRztpQkFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxFQUFFO2dCQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2xKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxXQUFXLENBQUMsUUFBdUIsRUFBRSxLQUFxQixFQUFFLGVBQXVCLEVBQUUsYUFBc0IsS0FBSztRQUN0SCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssaUJBQWlCLENBQUMsUUFBUSxFQUFFO1lBQy9FLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pGLE9BQU87U0FDVjtRQUVELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEMsUUFBUSxHQUFHLEVBQUU7Z0JBQ1QsS0FBSyxNQUFNO29CQUNQLDZFQUE2RTtvQkFDN0UsT0FBTyxDQUFDLHFFQUFxRTtnQkFDakYsS0FBSyxPQUFPO29CQUNSLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZHLE1BQU07Z0JBQ1YsS0FBSyxVQUFVO29CQUNYLElBQUksQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO3dCQUMvRCxLQUFLLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDbkU7eUJBQU0sSUFBSSxVQUFVLEVBQUU7d0JBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO3dCQUNsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzdGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDO3dCQUMvRCxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksWUFBWSxLQUFLLEVBQUUsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQzs0QkFDNUUsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztxQkFDM0c7b0JBQ0QsTUFBTTtnQkFDVixLQUFLLFNBQVM7b0JBQ1YsTUFBTSxVQUFVLEdBQWlDLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxZQUFZLENBQUMsT0FBTyxZQUFZLEtBQUssRUFBRTt3QkFDdkMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7NEJBQzlCLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQTBCLENBQUMsQ0FBQzt3QkFDbkUsQ0FBQyxDQUFDLENBQUM7cUJBQ047eUJBQU07d0JBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFOzRCQUNsRCxVQUFVLENBQUMsSUFBSSxDQUFDO2dDQUNaLEdBQUcsRUFBRSxTQUFTO2dDQUNkLEtBQUssRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQzs2QkFDaEIsQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUMsQ0FBQztxQkFDTjtvQkFDQSxLQUE2QyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7b0JBQ25FLEtBQTZDLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQzlELE1BQU07Z0JBQ1YsS0FBSyxTQUFTO29CQUNWLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO3dCQUNsRCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDLENBQUM7b0JBQzlFLENBQUMsQ0FBQyxDQUFDO29CQUNGLEtBQTZDLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztvQkFDbkUsS0FBNkMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDOUQsTUFBTTtnQkFDVixLQUFLLGFBQWE7b0JBQ2QsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUUsRUFBaUIsQ0FBQyxDQUFDLENBQUM7b0JBQ2pGLE1BQU07Z0JBQ1Y7b0JBQ0ksS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUV0QztZQUNELEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxhQUFhLENBQUMsTUFBYyxFQUFFLFlBQW9CO1FBQ3hELE9BQU8sQ0FBQyxDQUFDLE1BQU07ZUFDUixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7ZUFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTTtlQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVTLG1CQUFtQixDQUFDLFlBQW9CLEVBQUUsUUFBdUI7UUFDdkUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7bUJBQ3RMLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25MLENBQUM7SUFFUyxhQUFhLENBQUMsTUFBYyxFQUFFLE1BQTRDO1FBQ2hGLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLFlBQVksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDWixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQzNCLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUU7b0JBQ2IsT0FBTyxTQUFTLENBQUM7aUJBQ3BCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sU0FBUyxDQUFBO0lBQ3BCLENBQUM7O0FBclNzQix1Q0FBb0IsR0FBRyxtQkFBb0IsQ0FBQTtBQUMzQyx5QkFBTSxHQUFHLFFBQVMsQ0FBQTtnSEFIdkIsa0JBQWtCO29IQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Rhc2t9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvdGFzayc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0VudW1lcmF0aW9uRmllbGQsIEVudW1lcmF0aW9uRmllbGRWYWx1ZX0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvZW51bWVyYXRpb24tZmllbGQvbW9kZWxzL2VudW1lcmF0aW9uLWZpZWxkJztcbmltcG9ydCB7TXVsdGljaG9pY2VGaWVsZH0gZnJvbSAnLi4vLi4vZGF0YS1maWVsZHMvbXVsdGljaG9pY2UtZmllbGQvbW9kZWxzL211bHRpY2hvaWNlLWZpZWxkJztcbmltcG9ydCB7Q2hhbmdlLCBDaGFuZ2VkRmllbGRzfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9tb2RlbHMvY2hhbmdlZC1maWVsZHMnO1xuaW1wb3J0IHtGaWVsZENvbnZlcnRlclNlcnZpY2V9IGZyb20gJy4vZmllbGQtY29udmVydGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtGaWVsZFR5cGVSZXNvdXJjZX0gZnJvbSAnLi4vbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0R5bmFtaWNFbnVtZXJhdGlvbkZpZWxkfSBmcm9tICcuLi8uLi9kYXRhLWZpZWxkcy9lbnVtZXJhdGlvbi1maWVsZC9tb2RlbHMvZHluYW1pYy1lbnVtZXJhdGlvbi1maWVsZCc7XG5pbXBvcnQge1ZhbGlkYXRpb259IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy92YWxpZGF0aW9uJztcbmltcG9ydCB7VGFza0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvdGFzay1vdXRjb21lcy90YXNrLWV2ZW50LW91dGNvbWUnO1xuaW1wb3J0IHtEYXRhRmllbGR9IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9hYnN0cmFjdC1kYXRhLWZpZWxkJztcbmltcG9ydCB7VGFza0ZpZWxkc30gZnJvbSAnLi4vbW9kZWwvdGFzay1maWVsZHMnO1xuaW1wb3J0IHtUYXNrUmVmRmllbGR9IGZyb20gXCIuLi8uLi9kYXRhLWZpZWxkcy90YXNrLXJlZi1maWVsZC9tb2RlbC90YXNrLXJlZi1maWVsZFwiO1xuXG4vKipcbiAqIEFjdHMgYXMgYSBjb21tdW5pY2F0aW9uIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBDb21wb25lbnQgdGhhdCByZW5kZXJzIFRhc2sgY29udGVudCBhbmQgaXQncyBwYXJlbnQgQ29tcG9uZW50LlxuICogQWxzbyBwcm92aWRlcyBzb21lIGdlbmVyYWwgZnVuY3Rpb25hbGl0eSB0aGF0IGlzIG5lZWRlZCB3aGVuIHdvcmtpbmcgd2l0aCB0YXNrIGNvbnRlbnQuXG4gKlxuICogTm90YWJsZSBleGFtcGxlIG9mIGEgcGFyZW50IENvbXBvbmVudCBpcyB0aGUge0BsaW5rIEFic3RyYWN0VGFza1BhbmVsQ29tcG9uZW50fS5cbiAqXG4gKiBOb3RhYmxlIGV4YW1wbGUgb2YgYSB0YXNrIGNvbnRlbnQgcmVuZGVyZXIgaXMgdGhlIHtAbGluayBBYnN0cmFjdFRhc2tDb250ZW50Q29tcG9uZW50fS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhc2tDb250ZW50U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZST05URU5EX0FDVElPTlNfS0VZID0gJ19mcm9udGVuZF9hY3Rpb25zJztcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTiA9ICdhY3Rpb24nO1xuXG4gICAgJHNob3VsZENyZWF0ZTogUmVwbGF5U3ViamVjdDxBcnJheTxEYXRhR3JvdXA+PjtcbiAgICAkc2hvdWxkQ3JlYXRlQ291bnRlcjogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG4gICAgcHJvdGVjdGVkIF90YXNrOiBUYXNrO1xuICAgIHByb3RlY3RlZCBfdGFza0RhdGFSZWxvYWRSZXF1ZXN0JDogU3ViamVjdDxDaGFuZ2U+O1xuICAgIHByb3RlY3RlZCBfaXNFeHBhbmRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF90YXNrRmllbGRzSW5kZXg6IHtcbiAgICAgICAgW3Rhc2tJZDogc3RyaW5nXTogVGFza0ZpZWxkc1xuICAgIH0gPSB7fTtcbiAgICBwcm90ZWN0ZWQgX3JlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkczogeyBbY2FzZUlkOiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0gPSB7fTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2ZpZWxkQ29udmVydGVyU2VydmljZTogRmllbGRDb252ZXJ0ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrQmFyU2VydmljZTogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy4kc2hvdWxkQ3JlYXRlID0gbmV3IFJlcGxheVN1YmplY3Q8QXJyYXk8RGF0YUdyb3VwPj4oMSk7XG4gICAgICAgIHRoaXMuJHNob3VsZENyZWF0ZUNvdW50ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgICAgIHRoaXMuX2lzRXhwYW5kaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgICAgICB0aGlzLl90YXNrID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl90YXNrRGF0YVJlbG9hZFJlcXVlc3QkID0gbmV3IFN1YmplY3Q8Q2hhbmdlPigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuJHNob3VsZENyZWF0ZS5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuJHNob3VsZENyZWF0ZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Rhc2tEYXRhUmVsb2FkUmVxdWVzdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRpbmckLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgdGhlIFRhc2sgb2JqZWN0IGlmIHNldCBhbmQgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHVibGljIGFic3RyYWN0IGdldCB0YXNrKCk6IFRhc2sgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXR0aW5nIGEgVGFzayBhbHNvIGVtaXRzIGl0IGludG8gdGhlIHN0cmVhbSBhY2Nlc3NpYmxlIGJ5IHRoZSBbdGFzayRde0BsaW5rIFRhc2tDb250ZW50U2VydmljZSN0YXNrJH0gZ2V0dGVyIG1ldGhvZC5cbiAgICAgKiBAcGFyYW0gdGFzayB0aGUgVGFzayB0aGF0IG93bnMgdGhlIGNvbnRlbnQgbWFuYWdlZCBieSB0aGlzIHNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2V0IHRhc2sodGFzazogVGFzayk7XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gcmV0dXJucyBhIHtAbGluayBUYXNrfSBvYmplY3QgZXZlcnkgdGltZSB0aGlzIG9iamVjdCBpcyBzZXQuXG4gICAgICpcbiAgICAgKiBVc2UgW3Rhc2tde0BsaW5rIFRhc2tDb250ZW50U2VydmljZSN0YXNrfSBzZXR0ZXIgbWV0aG9kIHRvIHNldCB0aGUgVGFzay5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHRhc2skKCk6IE9ic2VydmFibGU8VGFzaz47XG5cbiAgICAvKipcbiAgICAgKiBTdHJlYW0gdGhhdCBlbWl0cyBldmVyeSB0aW1lIGEgZGF0YSByZWxvYWQgaXMgcmVxdWVzdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGFza0RhdGFSZWxvYWRSZXF1ZXN0JCgpOiBPYnNlcnZhYmxlPENoYW5nZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFza0RhdGFSZWxvYWRSZXF1ZXN0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cblxuICAgIGdldCB0YXNrRmllbGRzSW5kZXgoKTogeyBbcDogc3RyaW5nXTogVGFza0ZpZWxkcyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2tGaWVsZHNJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFza0ZpZWxkc0luZGV4KHZhbHVlOiB7IFtwOiBzdHJpbmddOiBUYXNrRmllbGRzIH0pIHtcbiAgICAgICAgdGhpcy5fdGFza0ZpZWxkc0luZGV4ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHJlZmVyZW5jZWRUYXNrQW5kQ2FzZUlkcygpOiB7IFtwOiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVmZXJlbmNlZFRhc2tBbmRDYXNlSWRzO1xuICAgIH1cblxuICAgIHNldCByZWZlcmVuY2VkVGFza0FuZENhc2VJZHModmFsdWU6IHsgW3A6IHN0cmluZ106IEFycmF5PHN0cmluZz4gfSkge1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VkVGFza0FuZENhc2VJZHMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBwYW5lbCB0aGF0IHRoZSB0YXNrIGNvbnRlbnQgaXMgY29udGFpbmVkIGluIGlzIGN1cnJlbnRseSBleHBhbmRpbmcuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgdGFzayBjb250ZW50IGlzIG5vdCBjb250YWluZWQgaW4gYSBwYW5lbCwgYGlzRXhwYW5kaW5nYCB3aWxsIGJlIGFsd2F5cyBgZmFsc2VgLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNFeHBhbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0V4cGFuZGluZyQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgY29udGVudCB0byBgZXhwYW5kaW5nYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwYW5zaW9uU3RhcnRlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRpbmckLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHRhc2sgY29udGVudCB0byBgbm90IGV4cGFuZGluZ2AuXG4gICAgICovXG4gICAgcHVibGljIGV4cGFuc2lvbkZpbmlzaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc0V4cGFuZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHRoZSB2YWxpZGl0eSBvZiBhbGwgZGF0YSBmaWVsZHMgaW4gdGhlIG1hbmFnZWQge0BsaW5rIFRhc2t9LlxuICAgICAqXG4gICAgICogSWYgc29tZSBvZiB0aGUgZmllbGRzIGFyZSBpbnZhbGlkIHRvdWNoZXMgdGhlbSBzbyB0aGVpciB2YWxpZGF0aW9uIGVycm9ycyB3aWxsIGFwcGVhciAoaWYgc2V0KS5cbiAgICAgKiBBIHNuYWNrYmFyIHdpbGwgYWxzbyBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIsIGluZm9ybWluZyB0aGVtIG9mIHRoZSBmYWN0IHRoYXQgdGhlIGZpZWxkcyBhcmUgaW52YWxpZC5cbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIHRoZSB0YXNrIGlzIHZhbGlkIG9yIG5vdFxuICAgICAqL1xuICAgIHB1YmxpYyB2YWxpZGF0ZVRhc2tEYXRhKHRhc2tJZD86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2sgfHwgIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbGlkID0gIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gISFncm91cC5wYXJlbnRUYXNrSWQgJiYgISF0YXNrSWQgPyBncm91cC5wYXJlbnRUYXNrSWQgPT09IHRhc2tJZCA6IHRydWUpLnNvbWUoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLnNvbWUoZmllbGQgPT4gIWZpZWxkLnZhbGlkICYmICFmaWVsZC5kaXNhYmxlZCkpO1xuICAgICAgICBjb25zdCB2YWxpZERpc2FibGVkID0gIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gISFncm91cC5wYXJlbnRUYXNrSWQgJiYgISF0YXNrSWQgPyBncm91cC5wYXJlbnRUYXNrSWQgPT09IHRhc2tJZCA6IHRydWUpLnNvbWUoZ3JvdXAgPT4gZ3JvdXAuZmllbGRzLnNvbWUoZmllbGQgPT4gIWZpZWxkLnZhbGlkUmVxdWlyZWQgJiYgZmllbGQuZGlzYWJsZWQpKTtcbiAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5pbnZhbGlkRGF0YScpKTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IGZpZWxkLnRvdWNoID0gdHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWREaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd0YXNrcy5zbmFja2Jhci5taXNzaW5nUmVxdWlyZWQnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkICYmIHZhbGlkRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluZHMgaW52YWxpZCBkYXRhIG9mIHRhc2tcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGFycmF5IG9mIGludmFsaWQgZGF0YWZpZWxkc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRJbnZhbGlkVGFza0RhdGEoKTogQXJyYXk8RGF0YUZpZWxkPGFueT4+IHtcbiAgICAgICAgY29uc3QgaW52YWxpZEZpZWxkcyA9IFtdO1xuICAgICAgICB0aGlzLl90YXNrLmRhdGFHcm91cHMuZm9yRWFjaChncm91cCA9PiBpbnZhbGlkRmllbGRzLnB1c2goLi4uZ3JvdXAuZmllbGRzLmZpbHRlcihmaWVsZCA9PlxuICAgICAgICAgICAgKCFmaWVsZC52YWxpZCAmJiAhZmllbGQuZGlzYWJsZWQpIHx8ICghZmllbGQudmFsaWRSZXF1aXJlZCAmJiAhZmllbGQuZGlzYWJsZWQpKSkpO1xuICAgICAgICByZXR1cm4gaW52YWxpZEZpZWxkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGVEeW5hbWljRW51bUZpZWxkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuX3Rhc2sgfHwgIXRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuX3Rhc2suZGF0YUdyb3Vwcy5zb21lKGdyb3VwID0+IGdyb3VwLmZpZWxkcy5zb21lKGZpZWxkID0+IGZpZWxkIGluc3RhbmNlb2YgRHluYW1pY0VudW1lcmF0aW9uRmllbGQpKTtcbiAgICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgdGhpcy5fdGFzay5kYXRhR3JvdXBzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGdyb3VwLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZCBpbnN0YW5jZW9mIER5bmFtaWNFbnVtZXJhdGlvbkZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jaG9pY2VzICE9PSB1bmRlZmluZWQgJiYgZmllbGQuY2hvaWNlcy5sZW5ndGggIT09IDAgJiYgZmllbGQudmFsdWUgIT09ICcnICYmIGZpZWxkLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQuY2hvaWNlcy5zb21lKGNob2ljZSA9PiBjaG9pY2Uua2V5ID09PSBmaWVsZC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5iZWhhdmlvci5yZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3Rhc2tzLnNuYWNrYmFyLm1pc3NpbmdSZXF1aXJlZCcpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlcyB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgYWxsIGZpZWxkcyBpbiB0aGUgbWFuYWdlZCBUYXNrLlxuICAgICAqIEBwYXJhbSBibG9ja2luZ1N0YXRlIHdoZXRoZXIgdGhlIGZpZWxkIHNob3VsZCBiZSBibG9ja2VkIG9yIG5vdFxuICAgICAqL1xuICAgIHB1YmxpYyBibG9ja0ZpZWxkcyhibG9ja2luZ1N0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl90YXNrICYmIHRoaXMuX3Rhc2suZGF0YUdyb3Vwcykge1xuICAgICAgICAgICAgdGhpcy5fdGFzay5kYXRhR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuYmxvY2sgPSBibG9ja2luZ1N0YXRlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGFzc2lnbmVlLCBzdGFydCBkYXRlIGFuZCBmaW5pc2ggZGF0ZSBmcm9tIHRoZSBtYW5hZ2VkIFRhc2suXG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZVN0YXRlRGF0YShldmVudE91dGNvbWU6IFRhc2tFdmVudE91dGNvbWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Rhc2spIHtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2sudXNlciA9IGV2ZW50T3V0Y29tZS50YXNrLnVzZXI7XG4gICAgICAgICAgICB0aGlzLl90YXNrLnN0YXJ0RGF0ZSA9IGV2ZW50T3V0Y29tZS50YXNrLnN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIHRoaXMuX3Rhc2suZmluaXNoRGF0ZSA9IGV2ZW50T3V0Y29tZS50YXNrLmZpbmlzaERhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBwcm9wZXJ0aWVzIG9mIGZpZWxkcyBpbiB0aGUgbWFuYWdlZCB0YXNrIGJhc2VkIG9uIGEgZGVsdGEgb2YgY2hhbmdlcyBmcm9tIHByZXZpb3VzIHN0YXRlLlxuICAgICAqIEBwYXJhbSBjaEZpZWxkcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVsdGEgb2YgdGhlIGNoYW5nZXMgZnJvbSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlRnJvbUNoYW5nZWRGaWVsZHMoY2hGaWVsZHM6IENoYW5nZWRGaWVsZHMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrIHx8ICF0aGlzLl90YXNrLmRhdGFHcm91cHMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmcm9udGVuZEFjdGlvbnMgPSBjaEZpZWxkcy50YXNrSWQgPT09IHRoaXMudGFzay5zdHJpbmdJZCAmJiBjaEZpZWxkc1tUYXNrQ29udGVudFNlcnZpY2UuRlJPTlRFTkRfQUNUSU9OU19LRVldO1xuICAgICAgICBPYmplY3Qua2V5cyhjaEZpZWxkcykuZm9yRWFjaChjaGFuZ2VkRmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGNoRmllbGRzLnRhc2tJZCA9PT0gdGhpcy5fdGFzay5zdHJpbmdJZCAmJiB0aGlzLmlzRmllbGRJblRhc2soY2hGaWVsZHMudGFza0lkLCBjaGFuZ2VkRmllbGQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZChjaEZpZWxkcywgdGhpcy50YXNrRmllbGRzSW5kZXhbY2hGaWVsZHMudGFza0lkXS5maWVsZHNbY2hhbmdlZEZpZWxkXSwgZnJvbnRlbmRBY3Rpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmdldFJlZmVyZW5jZWRUYXNrSWQoY2hhbmdlZEZpZWxkLCBjaEZpZWxkcykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpZWxkKGNoRmllbGRzLCB0aGlzLnRhc2tGaWVsZHNJbmRleFt0aGlzLmdldFJlZmVyZW5jZWRUYXNrSWQoY2hhbmdlZEZpZWxkLCBjaEZpZWxkcyldLmZpZWxkc1tjaGFuZ2VkRmllbGRdLCBmcm9udGVuZEFjdGlvbnMsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiRzaG91bGRDcmVhdGUubmV4dCh0aGlzLl90YXNrLmRhdGFHcm91cHMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGaWVsZChjaEZpZWxkczogQ2hhbmdlZEZpZWxkcywgZmllbGQ6IERhdGFGaWVsZDxhbnk+LCBmcm9udGVuZEFjdGlvbnM6IENoYW5nZSwgcmVmZXJlbmNlZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9maWVsZENvbnZlcnRlclNlcnZpY2UucmVzb2x2ZVR5cGUoZmllbGQpID09PSBGaWVsZFR5cGVSZXNvdXJjZS5UQVNLX1JFRikge1xuICAgICAgICAgICAgdGhpcy5fdGFza0RhdGFSZWxvYWRSZXF1ZXN0JC5uZXh0KGZyb250ZW5kQWN0aW9ucyA/IGZyb250ZW5kQWN0aW9ucyA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkRmllbGQgPSBjaEZpZWxkc1tmaWVsZC5zdHJpbmdJZF07XG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRGaWVsZCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgICAgICAgICAgICAgLy8gdHlwZSBpcyBqdXN0IGFuIGluZm9ybWF0aW9uLCBub3QgYW4gdXBkYXRlLiBBIGZpZWxkIGNhbm5vdCBjaGFuZ2UgaXRzIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBjb250aW51ZSAtIHRoZSBmaWVsZCBkb2VzIG5vdCBuZWVkIHVwZGF0aW5nLCBzaW5jZSBub3RoaW5nIGNoYW5nZWRcbiAgICAgICAgICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlV2l0aG91dENoYW5nZSh0aGlzLl9maWVsZENvbnZlcnRlclNlcnZpY2UuZm9ybWF0VmFsdWVGcm9tQmFja2VuZChmaWVsZCwgdXBkYXRlZEZpZWxkW2tleV0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYmVoYXZpb3InOlxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZWQgJiYgdXBkYXRlZEZpZWxkLmJlaGF2aW9yW3RoaXMuX3Rhc2sudHJhbnNpdGlvbklkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuYmVoYXZpb3IgPSB1cGRhdGVkRmllbGQuYmVoYXZpb3JbdGhpcy5fdGFzay50cmFuc2l0aW9uSWRdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlZmVyZW5jZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2tJZCA9IHRoaXMuZ2V0UmVmZXJlbmNlZFRhc2tJZChmaWVsZC5zdHJpbmdJZCwgY2hGaWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFza1JlZiA9IHRoaXMuZmluZFRhc2tSZWZJZCh0YXNrSWQsIHRoaXMudGFza0ZpZWxkc0luZGV4W3RoaXMuX3Rhc2suc3RyaW5nSWRdLmZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2l0aW9uSWQgPSB0aGlzLnRhc2tGaWVsZHNJbmRleFt0YXNrSWRdLnRyYW5zaXRpb25JZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIXRyYW5zaXRpb25JZCAmJiB0cmFuc2l0aW9uSWQgIT09ICcnICYmIHVwZGF0ZWRGaWVsZC5iZWhhdmlvclt0cmFuc2l0aW9uSWRdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmJlaGF2aW9yID0gdGFza1JlZi5iZWhhdmlvci5lZGl0YWJsZSA/IHVwZGF0ZWRGaWVsZC5iZWhhdmlvclt0cmFuc2l0aW9uSWRdIDogdGFza1JlZi5iZWhhdmlvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdjaG9pY2VzJzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q2hvaWNlczogQXJyYXk8RW51bWVyYXRpb25GaWVsZFZhbHVlPiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodXBkYXRlZEZpZWxkLmNob2ljZXMgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZEZpZWxkLmNob2ljZXMuZm9yRWFjaChpdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hvaWNlcy5wdXNoKHtrZXk6IGl0LCB2YWx1ZTogaXR9IGFzIEVudW1lcmF0aW9uRmllbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRGaWVsZC5jaG9pY2VzKS5mb3JFYWNoKGNob2ljZUtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2hvaWNlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaG9pY2VLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB1cGRhdGVkRmllbGQuY2hvaWNlc1tjaG9pY2VLZXldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBFbnVtZXJhdGlvbkZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS5jaG9pY2VzID0gbmV3Q2hvaWNlcztcbiAgICAgICAgICAgICAgICAgICAgKGZpZWxkIGFzIEVudW1lcmF0aW9uRmllbGQgfCBNdWx0aWNob2ljZUZpZWxkKS51cGRhdGVDaG9pY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModXBkYXRlZEZpZWxkLm9wdGlvbnMpLmZvckVhY2gob3B0aW9uS2V5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wdGlvbnMucHVzaCh7a2V5OiBvcHRpb25LZXksIHZhbHVlOiB1cGRhdGVkRmllbGQub3B0aW9uc1tvcHRpb25LZXldfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAoZmllbGQgYXMgRW51bWVyYXRpb25GaWVsZCB8IE11bHRpY2hvaWNlRmllbGQpLmNob2ljZXMgPSBuZXdPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICAoZmllbGQgYXMgRW51bWVyYXRpb25GaWVsZCB8IE11bHRpY2hvaWNlRmllbGQpLnVwZGF0ZUNob2ljZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd2YWxpZGF0aW9ucyc6XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnJlcGxhY2VWYWxpZGF0aW9ucyh1cGRhdGVkRmllbGQudmFsaWRhdGlvbnMubWFwKGl0ID0+IChpdCBhcyBWYWxpZGF0aW9uKSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBmaWVsZFtrZXldID0gdXBkYXRlZEZpZWxkW2tleV07XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNGaWVsZEluVGFzayh0YXNrSWQ6IHN0cmluZywgY2hhbmdlZEZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGFza0lkXG4gICAgICAgICAgICAmJiAhIXRoaXMudGFza0ZpZWxkc0luZGV4W3Rhc2tJZF1cbiAgICAgICAgICAgICYmICEhdGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHNcbiAgICAgICAgICAgICYmICEhdGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHNbY2hhbmdlZEZpZWxkXVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRSZWZlcmVuY2VkVGFza0lkKGNoYW5nZWRGaWVsZDogc3RyaW5nLCBjaEZpZWxkczogQ2hhbmdlZEZpZWxkcyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGFza0ZpZWxkc0luZGV4ID9cbiAgICAgICAgICAgIChPYmplY3Qua2V5cyh0aGlzLnRhc2tGaWVsZHNJbmRleCkuZmluZCh0YXNrSWQgPT4gdGFza0lkICE9PSB0aGlzLnRhc2suc3RyaW5nSWQgJiYgdGFza0lkID09PSBjaEZpZWxkcy50YXNrSWQgJiYgT2JqZWN0LmtleXModGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHMpLmluY2x1ZGVzKGNoYW5nZWRGaWVsZCkpXG4gICAgICAgICAgICB8fCBPYmplY3Qua2V5cyh0aGlzLnRhc2tGaWVsZHNJbmRleCkuZmluZCh0YXNrSWQgPT4gdGFza0lkICE9PSB0aGlzLnRhc2suc3RyaW5nSWQgJiYgT2JqZWN0LmtleXModGhpcy50YXNrRmllbGRzSW5kZXhbdGFza0lkXS5maWVsZHMpLmluY2x1ZGVzKGNoYW5nZWRGaWVsZCkpKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZFRhc2tSZWZJZCh0YXNrSWQ6IHN0cmluZywgZmllbGRzOiB7IFtmaWVsZElkOiBzdHJpbmddOiBEYXRhRmllbGQ8YW55Pn0pOiBEYXRhRmllbGQ8YW55PiB7XG4gICAgICAgIGxldCB0YXNrUmVmSWQgPSBPYmplY3QudmFsdWVzKGZpZWxkcykuZmluZChmID0+IGYgaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQgJiYgZi52YWx1ZS5pbmNsdWRlcyh0YXNrSWQpKTtcbiAgICAgICAgaWYgKCF0YXNrUmVmSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZmVyZW5jZWRUYXNrSWRzID0gT2JqZWN0LnZhbHVlcyhmaWVsZHMpLmZpbHRlcihmID0+IGYgaW5zdGFuY2VvZiBUYXNrUmVmRmllbGQpLm1hcCh0ciA9PiB0ci52YWx1ZSk7XG4gICAgICAgICAgICByZWZlcmVuY2VkVGFza0lkcy5mb3JFYWNoKGlkID0+IHtcbiAgICAgICAgICAgICAgICB0YXNrUmVmSWQgPSB0aGlzLmZpbmRUYXNrUmVmSWQodGFza0lkLCB0aGlzLnRhc2tGaWVsZHNJbmRleFtpZF0uZmllbGRzKTtcbiAgICAgICAgICAgICAgICBpZiAoISF0YXNrUmVmSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhc2tSZWZJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFza1JlZklkXG4gICAgfVxufVxuIl19
|
|
@@ -18,6 +18,7 @@ export class UserService {
|
|
|
18
18
|
this._log = _log;
|
|
19
19
|
this._session = _session;
|
|
20
20
|
this._anonymousService = _anonymousService;
|
|
21
|
+
this.GLOBAL_ROLE_PREFIX = 'global_';
|
|
21
22
|
this._user = this.emptyUser();
|
|
22
23
|
this._loginCalled = false;
|
|
23
24
|
this._userChange$ = new ReplaySubject(1);
|
|
@@ -98,16 +99,22 @@ export class UserService {
|
|
|
98
99
|
return user.roles.some(r => r.stringId === roleStringId);
|
|
99
100
|
}
|
|
100
101
|
/**
|
|
101
|
-
* Checks whether the user has role with the specified identifier in a process with the specified identifier (any version)
|
|
102
|
+
* Checks whether the user has a role with the specified identifier in a process with the specified identifier (any version),
|
|
103
|
+
* or if the role is global (with prefix 'global_').
|
|
102
104
|
* @param roleIdentifier identifier (import ID) of the role we want to check
|
|
103
105
|
* @param netIdentifier identifier (import ID) of the process the role is defined in
|
|
104
106
|
*/
|
|
105
107
|
hasRoleByIdentifier(roleIdentifier, netIdentifier) {
|
|
106
108
|
const user = this._user.getSelfOrImpersonated();
|
|
107
|
-
if (!roleIdentifier || !
|
|
109
|
+
if (!roleIdentifier || !user.roles) {
|
|
108
110
|
return false;
|
|
109
111
|
}
|
|
110
|
-
return user.roles.some(r =>
|
|
112
|
+
return user.roles.some(r => {
|
|
113
|
+
const matchesRole = r.importId === roleIdentifier;
|
|
114
|
+
const isGlobalRole = r.importId.startsWith(this.GLOBAL_ROLE_PREFIX);
|
|
115
|
+
const matchesNet = r.netImportId === netIdentifier;
|
|
116
|
+
return matchesRole && (isGlobalRole || matchesNet);
|
|
117
|
+
});
|
|
111
118
|
}
|
|
112
119
|
/**
|
|
113
120
|
* Checks whether the user has role with the specified name in a process with the specified identifier (any version)
|
|
@@ -194,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
194
201
|
providedIn: 'root'
|
|
195
202
|
}]
|
|
196
203
|
}], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.UserResourceService }, { type: i3.UserTransformer }, { type: i4.LoggerService }, { type: i5.SessionService }, { type: i6.AnonymousService }]; } });
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLekMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyxXQUFXO0lBVXBCLFlBQXNCLFlBQW1DLEVBQ25DLGFBQWtDLEVBQ2xDLGNBQStCLEVBQy9CLElBQW1CLEVBQ25CLFFBQXdCLEVBQ3hCLGlCQUFtQztRQUxuQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEQsVUFBVSxDQUFDLEdBQUcs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LEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBVTtRQUN6QixPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxrQkFBa0I7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRVMsMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7O3lHQTNNUSxXQUFXOzZHQUFYLFdBQVcsY0FGUixNQUFNOzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9jZXNzUm9sZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wcm9jZXNzLXJvbGUnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi9tb2RlbHMvdXNlcic7XG5pbXBvcnQge0NyZWRlbnRpYWxzfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHt0YWtlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC91c2VyLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyVHJhbnNmb3JtZXJ9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL21vZGVscy91c2VyLnRyYW5zZm9ybWVyJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL3Nlc3Npb24vc2VydmljZXMvc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3VzZXItcmVzb3VyY2UnO1xuaW1wb3J0IHtBbm9ueW1vdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXMvYW5vbnltb3VzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfdXNlcjogVXNlcjtcbiAgICBwcm90ZWN0ZWQgX3VzZXJDaGFuZ2UkOiBSZXBsYXlTdWJqZWN0PFVzZXI+O1xuICAgIHByb3RlY3RlZCBfYW5vbnltb3VzVXNlckNoYW5nZSQ6IFJlcGxheVN1YmplY3Q8VXNlcj47XG4gICAgcHJvdGVjdGVkIF9sb2dpbkNhbGxlZDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkF1dGg6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkFub255bTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3B1YmxpY0xvYWRDYWxsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2F1dGhTZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyUmVzb3VyY2U6IFVzZXJSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF91c2VyVHJhbnNmb3JtOiBVc2VyVHJhbnNmb3JtZXIsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Fub255bW91c1NlcnZpY2U6IEFub255bW91c1NlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8VXNlcj4oMSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3ViQXV0aCA9IHRoaXMuX2F1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQkLnN1YnNjcmliZShhdXRoID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXV0aCAmJiAhdGhpcy5fbG9naW5DYWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkVXNlcigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWF1dGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclVzZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3ViQW5vbnltID0gdGhpcy5fYW5vbnltb3VzU2VydmljZS50b2tlblNldC5zdWJzY3JpYmUodG9rZW4gPT4ge1xuICAgICAgICAgICAgaWYgKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUHVibGljVXNlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyVXNlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaEFub255bW91c1VzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHVzZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyO1xuICAgIH1cblxuICAgIGdldCB1c2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBhbm9ueW1vdXNVc2VyKCk6IFVzZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5hbm9ueW1vdXNVc2VyO1xuICAgIH1cblxuICAgIGdldCBhbm9ueW1vdXNVc2VyJCgpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Fub255bW91c1VzZXJDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9zdWJBdXRoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YkFub255bS51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHVzZXIgaGFzIHNwZWNpZmllZCBhdXRob3JpdHkuXG4gICAgICogQHBhcmFtIGF1dGhvcml0eSAtIElmIHByb3ZpZGVkIGF1dGhvcml0eSBpcyBhcnJheSBvZiBhdXRob3JpdGllcy5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgTWV0aG9kIG1ha2UgaW50ZXJzZWN0aW9uIG9mIHRoZSBwcm92aWRlZCBhdXRob3JpdGllcyBhbmQgdXNlcidzIGF1dGhvcml0aWVzLlxuICAgICAqICAgICAgICAgICAgICAgICAgICBJZiBjYWxjdWxhdGVkIGludGVyc2VjdGlvbiBpc24ndCBlbXB0eSByZXR1cm5zIHRydWUsIG90aGVyd2lzZSBmYWxzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzQXV0aG9yaXR5KGF1dGhvcml0eTogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFhdXRob3JpdHkgfHwgIXVzZXIuYXV0aG9yaXRpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0aG9yaXR5IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBhdXRob3JpdHkuc29tZShhID0+IHVzZXIuYXV0aG9yaXRpZXMuc29tZSh1ID0+IHUgPT09IGEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB1c2VyLmF1dGhvcml0aWVzLnNvbWUoYSA9PiBhID09PSBhdXRob3JpdHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGhhc1JvbGUocm9sZTogUHJvY2Vzc1JvbGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZSB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiByID09PSByb2xlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdXNlciBoYXMgcm9sZSB3aXRoIGEgc3BlY2lmaWMgc3RyaW5nSWRcbiAgICAgKiBAcGFyYW0gcm9sZVN0cmluZ0lkIElEIG9mIHRoZSByb2xlIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUm9sZUJ5SWQocm9sZVN0cmluZ0lkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZVN0cmluZ0lkIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHIuc3RyaW5nSWQgPT09IHJvbGVTdHJpbmdJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJvbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIgaW4gYSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIChhbnkgdmVyc2lvbilcbiAgICAgKiBAcGFyYW0gcm9sZUlkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICogQHBhcmFtIG5ldElkZW50aWZpZXIgaWRlbnRpZmllciAoaW1wb3J0IElEKSBvZiB0aGUgcHJvY2VzcyB0aGUgcm9sZSBpcyBkZWZpbmVkIGluXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeUlkZW50aWZpZXIocm9sZUlkZW50aWZpZXI6IHN0cmluZywgbmV0SWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpO1xuICAgICAgICBpZiAoIXJvbGVJZGVudGlmaWVyIHx8ICFuZXRJZGVudGlmaWVyIHx8ICF1c2VyLnJvbGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXIucm9sZXMuc29tZShyID0+IHIubmV0SW1wb3J0SWQgPT09IG5ldElkZW50aWZpZXIgJiYgci5pbXBvcnRJZCA9PT0gcm9sZUlkZW50aWZpZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyByb2xlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGluIGEgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllciAoYW55IHZlcnNpb24pXG4gICAgICogQHBhcmFtIHJvbGVOYW1lIG5hbWUgb2YgdGhlIHJvbGUgd2Ugd2FudCB0byBjaGVja1xuICAgICAqIEBwYXJhbSBuZXRJZGVudGlmaWVyIGlkZW50aWZpZXIgKGltcG9ydCBJRCkgb2YgdGhlIHByb2Nlc3MgdGhlIHJvbGUgaXMgZGVmaW5lZCBpblxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNSb2xlQnlOYW1lKHJvbGVOYW1lOiBzdHJpbmcsIG5ldElkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFyb2xlTmFtZSB8fCAhbmV0SWRlbnRpZmllciB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiByLm5ldEltcG9ydElkID09PSBuZXRJZGVudGlmaWVyICYmIHIubmFtZSA9PT0gcm9sZU5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dpbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgdGhpcy5fbG9naW5DYWxsZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0aFNlcnZpY2UubG9naW4oY3JlZGVudGlhbHMpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGF1dGhVc2VyOiBVc2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlciA9IGF1dGhVc2VyO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9nb3V0KCk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRoU2VydmljZS5sb2dvdXQoKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5lbXB0eVVzZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZFVzZXIoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZW1wdHlVc2VyKCkge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXIoJycsICcnLCAnJywgJycsIFtdLCBbXSwgW10sIFtdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZFVzZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJSZXNvdXJjZS5nZXRMb2dnZWRVc2VyKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHVzZXI6IFVzZXJSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYWNrZW5kVXNlciA9IHsuLi51c2VyLCBpZDogdXNlci5pZC50b1N0cmluZygpfTtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5fdXNlclRyYW5zZm9ybS50cmFuc2Zvcm0oYmFja2VuZFVzZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ0F1dGhlbnRpY2F0aW9uIHRva2VuIGlzIGludmFsaWQuIENsZWFyaW5nIHN0cmVhbScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uY2xlYXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdMb2FkaW5nIGxvZ2dlZCB1c2VyIGhhcyBmYWlsZWQhIEluaXRpYWxpc2F0aW9uIGhhcyBub3QgYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkUHVibGljVXNlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclJlc291cmNlLmdldFB1YmxpY0xvZ2dlZFVzZXIoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodXNlcjogVXNlclJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhY2tlbmRVc2VyID0gey4uLnVzZXIsIGlkOiB1c2VyLmlkLnRvU3RyaW5nKCl9O1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLl91c2VyVHJhbnNmb3JtLnRyYW5zZm9ybShiYWNrZW5kVXNlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0xvYWRpbmcgbG9nZ2VkIHVzZXIgaGFzIGZhaWxlZCEgSW5pdGlhbGlzYXRpb24gaGFzIG5vdCBiZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX3B1YmxpY0xvYWRDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyVXNlcigpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVXNlckVtcHR5KHVzZXI6IFVzZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF1c2VyIHx8ICghdXNlci5pZCAmJiB1c2VyLnJvbGVzLmxlbmd0aCA9PT0gMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ3VycmVudFVzZXJFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyRW1wdHkodGhpcy51c2VyKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYW5vbnltb3VzVXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cbn1cbiJdfQ==
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFN0QsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLekMsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBUXZELE1BQU0sT0FBTyxXQUFXO0lBWXBCLFlBQXNCLFlBQW1DLEVBQ25DLGFBQWtDLEVBQ2xDLGNBQStCLEVBQy9CLElBQW1CLEVBQ25CLFFBQXdCLEVBQ3hCLGlCQUFtQztRQUxuQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFQekMsdUJBQWtCLEdBQUcsU0FBUyxDQUFDO1FBUTNDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksYUFBYSxDQUFPLENBQUMsQ0FB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QUNyQztRQUNMLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG1GQUFtRixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBVTtRQUN6QixPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxrQkFBa0I7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRVMsaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRVMsMEJBQTBCO1FBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7O3lHQXBOUSxXQUFXOzZHQUFYLFdBQVcsY0FGUixNQUFNOzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9jZXNzUm9sZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wcm9jZXNzLXJvbGUnO1xuaW1wb3J0IHtVc2VyfSBmcm9tICcuLi9tb2RlbHMvdXNlcic7XG5pbXBvcnQge0NyZWRlbnRpYWxzfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9tb2RlbHMvY3JlZGVudGlhbHMnO1xuaW1wb3J0IHt0YWtlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXV0aGVudGljYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC91c2VyLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VyVHJhbnNmb3JtZXJ9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL21vZGVscy91c2VyLnRyYW5zZm9ybWVyJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7U2Vzc2lvblNlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL3Nlc3Npb24vc2VydmljZXMvc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3VzZXItcmVzb3VyY2UnO1xuaW1wb3J0IHtBbm9ueW1vdXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXMvYW5vbnltb3VzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfdXNlcjogVXNlcjtcbiAgICBwcm90ZWN0ZWQgX3VzZXJDaGFuZ2UkOiBSZXBsYXlTdWJqZWN0PFVzZXI+O1xuICAgIHByb3RlY3RlZCBfYW5vbnltb3VzVXNlckNoYW5nZSQ6IFJlcGxheVN1YmplY3Q8VXNlcj47XG4gICAgcHJvdGVjdGVkIF9sb2dpbkNhbGxlZDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkF1dGg6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgX3N1YkFub255bTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX3B1YmxpY0xvYWRDYWxsZWQ6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgR0xPQkFMX1JPTEVfUFJFRklYID0gJ2dsb2JhbF8nO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9hdXRoU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlclJlc291cmNlOiBVc2VyUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdXNlclRyYW5zZm9ybTogVXNlclRyYW5zZm9ybWVyLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9hbm9ueW1vdXNTZXJ2aWNlOiBBbm9ueW1vdXNTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLmVtcHR5VXNlcigpO1xuICAgICAgICB0aGlzLl9sb2dpbkNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl91c2VyQ2hhbmdlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PFVzZXI+KDEpO1xuICAgICAgICB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJCA9IG5ldyBSZXBsYXlTdWJqZWN0PFVzZXI+KDEpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N1YkF1dGggPSB0aGlzLl9hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkJC5zdWJzY3JpYmUoYXV0aCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGF1dGggJiYgIXRoaXMuX2xvZ2luQ2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFVzZXIoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFhdXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJVc2VyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YkFub255bSA9IHRoaXMuX2Fub255bW91c1NlcnZpY2UudG9rZW5TZXQuc3Vic2NyaWJlKHRva2VuID0+IHtcbiAgICAgICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFB1YmxpY1VzZXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclVzZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hBbm9ueW1vdXNVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCB1c2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXNlcjtcbiAgICB9XG5cbiAgICBnZXQgdXNlciQoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBnZXQgYW5vbnltb3VzVXNlcigpOiBVc2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYW5vbnltb3VzVXNlcjtcbiAgICB9XG5cbiAgICBnZXQgYW5vbnltb3VzVXNlciQoKTogT2JzZXJ2YWJsZTxVc2VyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbm9ueW1vdXNVc2VyQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlckNoYW5nZSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fYW5vbnltb3VzVXNlckNoYW5nZSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fc3ViQXV0aC51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdWJBbm9ueW0udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB1c2VyIGhhcyBzcGVjaWZpZWQgYXV0aG9yaXR5LlxuICAgICAqIEBwYXJhbSBhdXRob3JpdHkgLSBJZiBwcm92aWRlZCBhdXRob3JpdHkgaXMgYXJyYXkgb2YgYXV0aG9yaXRpZXMuXG4gICAgICogICAgICAgICAgICAgICAgICAgIE1ldGhvZCBtYWtlIGludGVyc2VjdGlvbiBvZiB0aGUgcHJvdmlkZWQgYXV0aG9yaXRpZXMgYW5kIHVzZXIncyBhdXRob3JpdGllcy5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgSWYgY2FsY3VsYXRlZCBpbnRlcnNlY3Rpb24gaXNuJ3QgZW1wdHkgcmV0dXJucyB0cnVlLCBvdGhlcndpc2UgZmFsc2UuXG4gICAgICovXG4gICAgcHVibGljIGhhc0F1dGhvcml0eShhdXRob3JpdHk6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghYXV0aG9yaXR5IHx8ICF1c2VyLmF1dGhvcml0aWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF1dGhvcml0eSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gYXV0aG9yaXR5LnNvbWUoYSA9PiB1c2VyLmF1dGhvcml0aWVzLnNvbWUodSA9PiB1ID09PSBhKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdXNlci5hdXRob3JpdGllcy5zb21lKGEgPT4gYSA9PT0gYXV0aG9yaXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYXNSb2xlKHJvbGU6IFByb2Nlc3NSb2xlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpO1xuICAgICAgICBpZiAoIXJvbGUgfHwgIXVzZXIucm9sZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXNlci5yb2xlcy5zb21lKHIgPT4gciA9PT0gcm9sZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJvbGUgd2l0aCBhIHNwZWNpZmljIHN0cmluZ0lkXG4gICAgICogQHBhcmFtIHJvbGVTdHJpbmdJZCBJRCBvZiB0aGUgcm9sZSB3ZSB3YW50IHRvIGNoZWNrXG4gICAgICovXG4gICAgcHVibGljIGhhc1JvbGVCeUlkKHJvbGVTdHJpbmdJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLl91c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpO1xuICAgICAgICBpZiAoIXJvbGVTdHJpbmdJZCB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiByLnN0cmluZ0lkID09PSByb2xlU3RyaW5nSWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhIHJvbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGlkZW50aWZpZXIgaW4gYSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBpZGVudGlmaWVyIChhbnkgdmVyc2lvbiksXG4gICAgICogb3IgaWYgdGhlIHJvbGUgaXMgZ2xvYmFsICh3aXRoIHByZWZpeCAnZ2xvYmFsXycpLlxuICAgICAqIEBwYXJhbSByb2xlSWRlbnRpZmllciBpZGVudGlmaWVyIChpbXBvcnQgSUQpIG9mIHRoZSByb2xlIHdlIHdhbnQgdG8gY2hlY2tcbiAgICAgKiBAcGFyYW0gbmV0SWRlbnRpZmllciBpZGVudGlmaWVyIChpbXBvcnQgSUQpIG9mIHRoZSBwcm9jZXNzIHRoZSByb2xlIGlzIGRlZmluZWQgaW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUm9sZUJ5SWRlbnRpZmllcihyb2xlSWRlbnRpZmllcjogc3RyaW5nLCBuZXRJZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIuZ2V0U2VsZk9ySW1wZXJzb25hdGVkKCk7XG4gICAgICAgIGlmICghcm9sZUlkZW50aWZpZXIgfHwgIXVzZXIucm9sZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzUm9sZSA9IHIuaW1wb3J0SWQgPT09IHJvbGVJZGVudGlmaWVyO1xuICAgICAgICAgICAgY29uc3QgaXNHbG9iYWxSb2xlID0gci5pbXBvcnRJZC5zdGFydHNXaXRoKHRoaXMuR0xPQkFMX1JPTEVfUFJFRklYKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXNOZXQgPSByLm5ldEltcG9ydElkID09PSBuZXRJZGVudGlmaWVyO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNSb2xlICYmIChpc0dsb2JhbFJvbGUgfHwgbWF0Y2hlc05ldCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSB1c2VyIGhhcyByb2xlIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lIGluIGEgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllciAoYW55IHZlcnNpb24pXG4gICAgICogQHBhcmFtIHJvbGVOYW1lIG5hbWUgb2YgdGhlIHJvbGUgd2Ugd2FudCB0byBjaGVja1xuICAgICAqIEBwYXJhbSBuZXRJZGVudGlmaWVyIGlkZW50aWZpZXIgKGltcG9ydCBJRCkgb2YgdGhlIHByb2Nlc3MgdGhlIHJvbGUgaXMgZGVmaW5lZCBpblxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNSb2xlQnlOYW1lKHJvbGVOYW1lOiBzdHJpbmcsIG5ldElkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlci5nZXRTZWxmT3JJbXBlcnNvbmF0ZWQoKTtcbiAgICAgICAgaWYgKCFyb2xlTmFtZSB8fCAhbmV0SWRlbnRpZmllciB8fCAhdXNlci5yb2xlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1c2VyLnJvbGVzLnNvbWUociA9PiByLm5ldEltcG9ydElkID09PSBuZXRJZGVudGlmaWVyICYmIHIubmFtZSA9PT0gcm9sZU5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2dpbihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICAgICAgdGhpcy5fbG9naW5DYWxsZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0aFNlcnZpY2UubG9naW4oY3JlZGVudGlhbHMpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGF1dGhVc2VyOiBVc2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXNlciA9IGF1dGhVc2VyO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2luQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9nb3V0KCk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRoU2VydmljZS5sb2dvdXQoKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5lbXB0eVVzZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnB1Ymxpc2hVc2VyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZFVzZXIoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZW1wdHlVc2VyKCkge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXIoJycsICcnLCAnJywgJycsIFtdLCBbXSwgW10sIFtdKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZFVzZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VzZXJSZXNvdXJjZS5nZXRMb2dnZWRVc2VyKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKHVzZXI6IFVzZXJSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBiYWNrZW5kVXNlciA9IHsuLi51c2VyLCBpZDogdXNlci5pZC50b1N0cmluZygpfTtcbiAgICAgICAgICAgICAgICB0aGlzLl91c2VyID0gdGhpcy5fdXNlclRyYW5zZm9ybS50cmFuc2Zvcm0oYmFja2VuZFVzZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMucHVibGlzaFVzZXJDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoJ0F1dGhlbnRpY2F0aW9uIHRva2VuIGlzIGludmFsaWQuIENsZWFyaW5nIHN0cmVhbScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uY2xlYXIoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdMb2FkaW5nIGxvZ2dlZCB1c2VyIGhhcyBmYWlsZWQhIEluaXRpYWxpc2F0aW9uIGhhcyBub3QgYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkUHVibGljVXNlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclJlc291cmNlLmdldFB1YmxpY0xvZ2dlZFVzZXIoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgodXNlcjogVXNlclJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhY2tlbmRVc2VyID0gey4uLnVzZXIsIGlkOiB1c2VyLmlkLnRvU3RyaW5nKCl9O1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXIgPSB0aGlzLl91c2VyVHJhbnNmb3JtLnRyYW5zZm9ybShiYWNrZW5kVXNlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0xvYWRpbmcgbG9nZ2VkIHVzZXIgaGFzIGZhaWxlZCEgSW5pdGlhbGlzYXRpb24gaGFzIG5vdCBiZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IScsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX3B1YmxpY0xvYWRDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyVXNlcigpIHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHRoaXMuZW1wdHlVc2VyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVXNlckVtcHR5KHVzZXI6IFVzZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF1c2VyIHx8ICghdXNlci5pZCAmJiB1c2VyLnJvbGVzLmxlbmd0aCA9PT0gMCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQ3VycmVudFVzZXJFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VyRW1wdHkodGhpcy51c2VyKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBwdWJsaXNoQW5vbnltb3VzVXNlckNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYW5vbnltb3VzVXNlckNoYW5nZSQubmV4dCh0aGlzLnVzZXIpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -3256,6 +3256,7 @@ class UserService {
|
|
|
3256
3256
|
this._log = _log;
|
|
3257
3257
|
this._session = _session;
|
|
3258
3258
|
this._anonymousService = _anonymousService;
|
|
3259
|
+
this.GLOBAL_ROLE_PREFIX = 'global_';
|
|
3259
3260
|
this._user = this.emptyUser();
|
|
3260
3261
|
this._loginCalled = false;
|
|
3261
3262
|
this._userChange$ = new ReplaySubject(1);
|
|
@@ -3336,16 +3337,22 @@ class UserService {
|
|
|
3336
3337
|
return user.roles.some(r => r.stringId === roleStringId);
|
|
3337
3338
|
}
|
|
3338
3339
|
/**
|
|
3339
|
-
* Checks whether the user has role with the specified identifier in a process with the specified identifier (any version)
|
|
3340
|
+
* Checks whether the user has a role with the specified identifier in a process with the specified identifier (any version),
|
|
3341
|
+
* or if the role is global (with prefix 'global_').
|
|
3340
3342
|
* @param roleIdentifier identifier (import ID) of the role we want to check
|
|
3341
3343
|
* @param netIdentifier identifier (import ID) of the process the role is defined in
|
|
3342
3344
|
*/
|
|
3343
3345
|
hasRoleByIdentifier(roleIdentifier, netIdentifier) {
|
|
3344
3346
|
const user = this._user.getSelfOrImpersonated();
|
|
3345
|
-
if (!roleIdentifier || !
|
|
3347
|
+
if (!roleIdentifier || !user.roles) {
|
|
3346
3348
|
return false;
|
|
3347
3349
|
}
|
|
3348
|
-
return user.roles.some(r =>
|
|
3350
|
+
return user.roles.some(r => {
|
|
3351
|
+
const matchesRole = r.importId === roleIdentifier;
|
|
3352
|
+
const isGlobalRole = r.importId.startsWith(this.GLOBAL_ROLE_PREFIX);
|
|
3353
|
+
const matchesNet = r.netImportId === netIdentifier;
|
|
3354
|
+
return matchesRole && (isGlobalRole || matchesNet);
|
|
3355
|
+
});
|
|
3349
3356
|
}
|
|
3350
3357
|
/**
|
|
3351
3358
|
* Checks whether the user has role with the specified name in a process with the specified identifier (any version)
|
|
@@ -15745,7 +15752,8 @@ class TaskContentService {
|
|
|
15745
15752
|
}
|
|
15746
15753
|
getReferencedTaskId(changedField, chFields) {
|
|
15747
15754
|
return !!this.taskFieldsIndex ?
|
|
15748
|
-
Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
|
|
15755
|
+
(Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && taskId === chFields.taskId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))
|
|
15756
|
+
|| Object.keys(this.taskFieldsIndex).find(taskId => taskId !== this.task.stringId && Object.keys(this.taskFieldsIndex[taskId].fields).includes(changedField))) : undefined;
|
|
15749
15757
|
}
|
|
15750
15758
|
findTaskRefId(taskId, fields) {
|
|
15751
15759
|
let taskRefId = Object.values(fields).find(f => f instanceof TaskRefField && f.value.includes(taskId));
|